OpenMM

This class represents a molecular system. More...
#include <System.h>
Public Member Functions  
System ()  
Create a new System. More...  
~System ()  
int  getNumParticles () const 
Get the number of particles in this System. More...  
int  addParticle (double mass) 
Add a particle to the System. More...  
double  getParticleMass (int index) const 
Get the mass (in atomic mass units) of a particle. More...  
void  setParticleMass (int index, double mass) 
Set the mass (in atomic mass units) of a particle. More...  
void  setVirtualSite (int index, VirtualSite *virtualSite) 
Set a particle to be a virtual site. More...  
bool  isVirtualSite (int index) const 
Get whether a particle is a VirtualSite. More...  
const VirtualSite &  getVirtualSite (int index) const 
Get VirtualSite object for a particle. More...  
int  getNumConstraints () const 
Get the number of distance constraints in this System. More...  
int  addConstraint (int particle1, int particle2, double distance) 
Add a constraint to the System. More...  
void  getConstraintParameters (int index, int &particle1, int &particle2, double &distance) const 
Get the parameters defining a distance constraint. More...  
void  setConstraintParameters (int index, int particle1, int particle2, double distance) 
Set the parameters defining a distance constraint. More...  
int  addForce (Force *force) 
Add a Force to the System. More...  
int  getNumForces () const 
Get the number of Force objects that have been added to the System. More...  
const Force &  getForce (int index) const 
Get a const reference to one of the Forces in this System. More...  
Force &  getForce (int index) 
Get a writable reference to one of the Forces in this System. More...  
void  getDefaultPeriodicBoxVectors (Vec3 &a, Vec3 &b, Vec3 &c) const 
Get the default values of the vectors defining the axes of the periodic box (measured in nm). More...  
void  setDefaultPeriodicBoxVectors (const Vec3 &a, const Vec3 &b, const Vec3 &c) 
Set the default values of the vectors defining the axes of the periodic box (measured in nm). More...  
This class represents a molecular system.
The definition of a System involves four elements:
The particles and constraints are defined directly by the System object, while forces are defined by objects that extend the Force class. After creating a System, call addParticle() once for each particle, addConstraint() for each constraint, and addForce() for each Force.
In addition, particles may be designated as "virtual sites". These are particles whose positions are computed automatically based on the positions of other particles. To define a virtual site, call setVirtualSite(), passing in a VirtualSite object that defines the rules for computing its position.
~System  (  ) 
int addConstraint  (  int  particle1, 
int  particle2,  
double  distance  
) 
Add a constraint to the System.
Particles whose mass is 0 cannot participate in constraints.
particle1  the index of the first particle involved in the constraint 
particle2  the index of the second particle involved in the constraint 
distance  the required distance between the two particles, measured in nm 

inline 

inline 
Add a particle to the System.
If the mass is 0, Integrators will ignore the particle and not modify its position or velocity. This is most often used for virtual sites, but can also be used as a way to prevent a particle from moving.
mass  the mass of the particle (in atomic mass units) 
void getConstraintParameters  (  int  index, 
int &  particle1,  
int &  particle2,  
double &  distance  
)  const 
Get the parameters defining a distance constraint.
index  the index of the constraint for which to get parameters 
particle1  the index of the first particle involved in the constraint 
particle2  the index of the second particle involved in the constraint 
distance  the required distance between the two particles, measured in nm 
Get the default values of the vectors defining the axes of the periodic box (measured in nm).
Any newly created Context will have its box vectors set to these. They will affect any Force added to the System that uses periodic boundary conditions.
Currently, only rectangular boxes are supported. This means that a, b, and c must be aligned with the x, y, and z axes respectively. Future releases may support arbitrary triclinic boxes.
a  on exit, this contains the vector defining the first edge of the periodic box 
b  on exit, this contains the vector defining the second edge of the periodic box 
c  on exit, this contains the vector defining the third edge of the periodic box 
const Force& getForce  (  int  index  )  const 
Force& getForce  (  int  index  ) 

inline 
Get the number of distance constraints in this System.

inline 

inline 
Get the number of particles in this System.
double getParticleMass  (  int  index  )  const 
Get the mass (in atomic mass units) of a particle.
If the mass is 0, Integrators will ignore the particle and not modify its position or velocity. This is most often used for virtual sites, but can also be used as a way to prevent a particle from moving.
index  the index of the particle for which to get the mass 
const VirtualSite& getVirtualSite  (  int  index  )  const 
Get VirtualSite object for a particle.
If the particle is not a virtual site, this throws an exception.
index  the index of the particle to get 

inline 
Get whether a particle is a VirtualSite.
index  the index of the particle to check 
void setConstraintParameters  (  int  index, 
int  particle1,  
int  particle2,  
double  distance  
) 
Set the parameters defining a distance constraint.
Particles whose mass is 0 cannot participate in constraints.
index  the index of the constraint for which to set parameters 
particle1  the index of the first particle involved in the constraint 
particle2  the index of the second particle involved in the constraint 
distance  the required distance between the two particles, measured in nm 
Set the default values of the vectors defining the axes of the periodic box (measured in nm).
Any newly created Context will have its box vectors set to these. They will affect any Force added to the System that uses periodic boundary conditions.
Currently, only rectangular boxes are supported. This means that a, b, and c must be aligned with the x, y, and z axes respectively. Future releases may support arbitrary triclinic boxes.
a  the vector defining the first edge of the periodic box 
b  the vector defining the second edge of the periodic box 
c  the vector defining the third edge of the periodic box 
void setParticleMass  (  int  index, 
double  mass  
) 
Set the mass (in atomic mass units) of a particle.
If the mass is 0, Integrators will ignore the particle and not modify its position or velocity. This is most often used for virtual sites, but can also be used as a way to prevent a particle from moving.
index  the index of the particle for which to set the mass 
mass  the mass of the particle 
void setVirtualSite  (  int  index, 
VirtualSite *  virtualSite  
) 
Set a particle to be a virtual site.
The VirtualSite object should have been created on the heap with the "new" operator. The System takes over ownership of it, and deletes it when the System itself is deleted.
index  the index of the particle that should be treated as a virtual site 
virtualSite  a pointer to the VirtualSite object describing it 