22 #ifndef __PLUMED_core_Atoms_h
23 #define __PLUMED_core_Atoms_h
25 #include "tools/Communicator.h"
26 #include "tools/Tensor.h"
27 #include "tools/Units.h"
28 #include "tools/Exception.h"
29 #include "tools/AtomNumber.h"
39 class ActionAtomistic;
40 class ActionWithVirtualAtom;
73 std::map<std::string,std::vector<AtomNumber> >
groups;
92 std::vector<const ActionAtomistic*>
actions;
110 operator bool(){
return on;}
112 on(false), async(false)
119 void share(
const std::set<AtomNumber>&);
172 double getEnergy()
const{plumed_assert(collectEnergy && energyHasBeenSet);
return energy;}
188 void insertGroup(
const std::string&name,
const std::vector<AtomNumber>&
a);
void setTime(const std::string &)
Set time units from string.
std::vector< const ActionAtomistic * > actions
Simple class to store the index of an atom.
const int & getNatoms() const
void removeVirtualAtom(ActionWithVirtualAtom *)
AtomNumber addVirtualAtom(ActionWithVirtualAtom *)
std::vector< Vector > forces
std::vector< double > charges
double getMDKBoltzmann() const
bool isEnergyNeeded() const
void removeGroup(const std::string &name)
void setAtomsContiguous(int)
Class implementing fixed size matrices of doubles.
void add(const ActionAtomistic *)
Class implementing fixed size vectors of doubles.
void enable(Communicator &c)
int getRealPrecision() const
std::vector< double > masses
void setLength(const std::string &)
Set lengh units from string.
void writeBinary(std::ostream &) const
std::vector< int > indexToBeSent
Class containing wrappers to MPI.
Class containing atom related quantities from the MD code.
std::vector< Communicator::Request > mpi_request_index
std::vector< Vector > positions
std::vector< ActionWithVirtualAtom * > virtualAtomsActions
Class containing interface to MDAtomsTyped.
Atoms(PlumedMain &plumed)
void double2MD(const double &d, void *m) const
void setMDEnergyUnits(double d)
void setUnits(const Units &u)
std::vector< Communicator::Request > mpi_request_positions
double getKBoltzmann() const
Small utility class that contains information about units.
void readBinary(std::istream &)
std::vector< int > indexToBeReceived
void createFullList(int *)
bool chargesWereSet() const
void setNaturalUnits(bool n)
Action used to create objects that access the positions of the atoms from the MD code.
void setEnergy(const std::string &)
Set energy units from string.
void setMDLengthUnits(double d)
std::vector< double > positionsToBeReceived
Vector & modifyPosition(AtomNumber i)
Inherit from here if you are calculating the position of a virtual atom (eg a center of mass) ...
void setMDTimeUnits(double d)
void resizeVectors(unsigned)
void setAtomsGatindex(int *)
unsigned index() const
Returns the index number.
bool usingNaturalUnits() const
const Units & getMDUnits()
void setDomainDecomposition(Communicator &)
bool isVirtualAtom(AtomNumber) const
unsigned forcesHaveBeenSet
void insertGroup(const std::string &name, const std::vector< AtomNumber > &a)
void setRealPrecision(int)
unsigned positionsHaveBeenSet
std::vector< int > gatindex
void setMDNaturalUnits(bool n)
ActionWithVirtualAtom * getVirtualAtomsAction(AtomNumber) const
void setCollectEnergy(bool b)
double getTimeStep() const
std::vector< double > positionsToBeSent
std::vector< int > fullList
void MD2double(const void *m, double &d) const
void setPositions(void *)
std::map< std::string, std::vector< AtomNumber > > groups