22 #ifndef __PLUMED_core_MDAtoms_h
23 #define __PLUMED_core_MDAtoms_h
25 #include "tools/Tensor.h"
26 #include "tools/Vector.h"
28 #include "tools/Units.h"
58 virtual void setm(
void*
m)=0;
60 virtual void setc(
void*
m)=0;
62 virtual void setBox(
void*)=0;
64 virtual void setp(
void*p)=0;
68 virtual void setf(
void*f)=0;
70 virtual void setp(
void*p,
int i)=0;
72 virtual void setf(
void*f,
int i)=0;
76 virtual void MD2double(
const void*,
double&)
const=0;
78 virtual void double2MD(
const double&,
void*)
const=0;
83 virtual void getPositions(
const std::vector<int>&index,std::vector<Vector>&p)
const=0;
86 virtual void getMasses(
const std::vector<int>&index,std::vector<double>&
m)
const=0;
89 virtual void getCharges(
const std::vector<int>&index,std::vector<double>&c)
const=0;
94 virtual void updateForces(
const std::vector<int>&index,
const std::vector<Vector>&f)=0;
98 virtual void rescaleForces(
const std::vector<int>&index,
double factor)=0;
virtual void setf(void *f)=0
Set a pointer to the forces array in the MD code.
virtual unsigned getRealPrecision() const =0
Get the size of MD-real.
Class implementing fixed size matrices of doubles.
virtual void getMasses(const std::vector< int > &index, std::vector< double > &m) const =0
Retrieve selected masses.
virtual void MD2double(const void *, double &) const =0
Convert a pointer to an MD-real to a double.
virtual ~MDAtomsBase()
Virtual destructor, just to allow inheritance.
virtual void setm(void *m)=0
Set a pointer to the mass array in the MD code.
Class containing interface to MDAtomsTyped.
virtual void setUnits(const Units &units, const Units &MDUnits)=0
Set internal and MD units.
Small utility class that contains information about units.
virtual void setc(void *m)=0
Set a pointer to the charge array in the MD code.
virtual void rescaleForces(const std::vector< int > &index, double factor)=0
Rescale all the forces, including the virial.
virtual void double2MD(const double &, void *) const =0
Convert a double to a pointer to an MD-real.
virtual void setBox(void *)=0
Set a pointer to the box array (3x3) in the MD code.
virtual void updateVirial(const Tensor &v) const =0
Increment the virial by an amount v.
virtual void getPositions(const std::vector< int > &index, std::vector< Vector > &p) const =0
Retrieve selected positions.
virtual void setVirial(void *)=0
Set a pointer to the virial array (3x3) in the MD code.
virtual void getBox(Tensor &) const =0
Retrieve box as a plumed Tensor.
virtual void setp(void *p)=0
Set a pointer to the positions array in the MD code.
virtual void updateForces(const std::vector< int > &index, const std::vector< Vector > &f)=0
Increment the force on selected atoms.
virtual void getCharges(const std::vector< int > &index, std::vector< double > &c) const =0
Retrieve selected charges.
static MDAtomsBase * create(unsigned n)
Creates an MDAtomsTyped object such that sizeof(T)==n.