OpenMM
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
System Class Reference

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 VirtualSitegetVirtualSite (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 ForcegetForce (int index) const
 Get a const reference to one of the Forces in this System. More...
 
ForcegetForce (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...
 

Detailed Description

This class represents a molecular system.

The definition of a System involves four elements:

  1. The set of particles in the system
  2. The forces acting on them
  3. Pairs of particles whose separation should be constrained to a fixed value
  4. For periodic systems, the dimensions of the periodic box

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.

Constructor & Destructor Documentation

System ( )

Create a new System.

~System ( )

Member Function Documentation

int addConstraint ( int  particle1,
int  particle2,
double  distance 
)

Add a constraint to the System.

Particles whose mass is 0 cannot participate in constraints.

Parameters
particle1the index of the first particle involved in the constraint
particle2the index of the second particle involved in the constraint
distancethe required distance between the two particles, measured in nm
Returns
the index of the constraint that was added
int addForce ( Force force)
inline

Add a Force to the System.

The Force should have been created on the heap with the "new" operator. The System takes over ownership of it, and deletes the Force when the System itself is deleted.

Parameters
forcea pointer to the Force object to be added
Returns
the index within the System of the Force that was added
int addParticle ( double  mass)
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.

Parameters
massthe mass of the particle (in atomic mass units)
Returns
the index of the particle that was added
void getConstraintParameters ( int  index,
int &  particle1,
int &  particle2,
double &  distance 
) const

Get the parameters defining a distance constraint.

Parameters
indexthe index of the constraint for which to get parameters
particle1the index of the first particle involved in the constraint
particle2the index of the second particle involved in the constraint
distancethe required distance between the two particles, measured in nm
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).

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.

Parameters
aon exit, this contains the vector defining the first edge of the periodic box
bon exit, this contains the vector defining the second edge of the periodic box
con exit, this contains the vector defining the third edge of the periodic box
const Force& getForce ( int  index) const

Get a const reference to one of the Forces in this System.

Parameters
indexthe index of the Force to get
Force& getForce ( int  index)

Get a writable reference to one of the Forces in this System.

Parameters
indexthe index of the Force to get
int getNumConstraints ( ) const
inline

Get the number of distance constraints in this System.

int getNumForces ( ) const
inline

Get the number of Force objects that have been added to the System.

int getNumParticles ( ) const
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.

Parameters
indexthe 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.

Parameters
indexthe index of the particle to get
bool isVirtualSite ( int  index) const
inline

Get whether a particle is a VirtualSite.

Parameters
indexthe 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.

Parameters
indexthe index of the constraint for which to set parameters
particle1the index of the first particle involved in the constraint
particle2the index of the second particle involved in the constraint
distancethe required distance between the two particles, measured in nm
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).

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.

Parameters
athe vector defining the first edge of the periodic box
bthe vector defining the second edge of the periodic box
cthe 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.

Parameters
indexthe index of the particle for which to set the mass
massthe 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.

Parameters
indexthe index of the particle that should be treated as a virtual site
virtualSitea pointer to the VirtualSite object describing it

The documentation for this class was generated from the following file: