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

This is a Monte Carlo barostat designed specifically for membrane simulations. More...

#include <MonteCarloMembraneBarostat.h>

+ Inheritance diagram for MonteCarloMembraneBarostat:

Public Types

enum  XYMode { XYIsotropic = 0, XYAnisotropic = 1 }
 This is an enumeration of the different behaviors for the X and Y axes. More...
 
enum  ZMode { ZFree = 0, ZFixed = 1, ConstantVolume = 2 }
 This is an enumeration of the different behaviors for Z axis. More...
 

Public Member Functions

 MonteCarloMembraneBarostat (double defaultPressure, double defaultSurfaceTension, double temperature, XYMode xymode, ZMode zmode, int frequency=25)
 Create a MonteCarloMembraneBarostat. More...
 
double getDefaultPressure () const
 Get the default pressure acting on the system (in bar). More...
 
void setDefaultPressure (double pressure)
 Set the default pressure acting on the system. More...
 
double getDefaultSurfaceTension () const
 Get the default surface tension acting on the system (in bar*nm). More...
 
void setDefaultSurfaceTension (double surfaceTension)
 Set the default surface tension acting on the system. More...
 
int getFrequency () const
 Get the frequency (in time steps) at which Monte Carlo volume changes should be attempted. More...
 
void setFrequency (int freq)
 Set the frequency (in time steps) at which Monte Carlo volume changes should be attempted. More...
 
double getTemperature () const
 Get the temperature at which the system is being maintained, measured in Kelvin. More...
 
void setTemperature (double temp)
 Set the temperature at which the system is being maintained. More...
 
XYMode getXYMode () const
 Get the mode specifying the behavior of the X and Y axes. More...
 
void setXYMode (XYMode mode)
 Set the mode specifying the behavior of the X and Y axes. More...
 
ZMode getZMode () const
 Get the mode specifying the behavior of the Z axis. More...
 
void setZMode (ZMode mode)
 Set the mode specifying the behavior of the Z axis. More...
 
int getRandomNumberSeed () const
 Get the random number seed. More...
 
void setRandomNumberSeed (int seed)
 Set the random number seed. More...
 
- Public Member Functions inherited from Force
 Force ()
 
virtual ~Force ()
 
int getForceGroup () const
 Get the force group this Force belongs to. More...
 
void setForceGroup (int group)
 Set the force group this Force belongs to. More...
 

Static Public Member Functions

static const std::string & Pressure ()
 This is the name of the parameter which stores the current pressure acting on the system (in bar). More...
 
static const std::string & SurfaceTension ()
 This is the name of the parameter which stores the current surface tension acting on the system (in bar*nm). More...
 

Protected Member Functions

ForceImplcreateImpl () const
 When a Context is created, it invokes this method on each Force in the System. More...
 
- Protected Member Functions inherited from Force
ForceImplgetImplInContext (Context &context)
 Get the ForceImpl corresponding to this Force in a Context. More...
 
ContextImplgetContextImpl (Context &context)
 Get the ContextImpl corresponding to a Context. More...
 

Detailed Description

This is a Monte Carlo barostat designed specifically for membrane simulations.

It assumes the membrane lies in the XY plane. The Monte Carlo acceptance criterion includes a term to model isotropic pressure, which depends on the volume of the periodic box, and a second term to model surface tension, which depends on the cross sectional area of the box in the XY plane. Note that pressure and surface tension are defined with opposite senses: a larger pressure tends to make the box smaller, but a larger surface tension tends to make the box larger.

There are options for configuring exactly how the various box dimensions are allowed to change:

  • The X and Y axes may be treated isotropically, in which case they always scale by the same amount and remain in proportion to each other; or they may be treated anisotropically, in which case they can vary independently of each other.
  • The Z axis can be allowed to vary independently of the other axes; or held fixed; or constrained to vary in inverse proportion to the other two axes, so that the total box volume remains fixed.

This class assumes the simulation is also being run at constant temperature, and requires you to specify the system temperature (since it affects the acceptance probability for Monte Carlo moves). It does not actually perform temperature regulation, however. You must use another mechanism along with it to maintain the temperature, such as LangevinIntegrator or AndersenThermostat.

Member Enumeration Documentation

enum XYMode

This is an enumeration of the different behaviors for the X and Y axes.

Enumerator
XYIsotropic 

The X and Y axes are always scaled by the same amount, so the ratio of their lengths remains constant.

XYAnisotropic 

The X and Y axes are allowed to vary independently of each other.

enum ZMode

This is an enumeration of the different behaviors for Z axis.

Enumerator
ZFree 

The Z axis is allowed to vary freely, independent of the other two axes.

ZFixed 

The Z axis is held fixed and does not change.

ConstantVolume 

The Z axis is always scaled in inverse proportion to the other two axes so the box volume remains fixed.

Note that in this mode pressure has no effect on the system, only surface tension.

Constructor & Destructor Documentation

MonteCarloMembraneBarostat ( double  defaultPressure,
double  defaultSurfaceTension,
double  temperature,
XYMode  xymode,
ZMode  zmode,
int  frequency = 25 
)

Create a MonteCarloMembraneBarostat.

Parameters
defaultPressurethe default pressure acting on the system (in bar)
defaultSurfaceTensionthe default surface tension acting on the system (in bar*nm)
temperaturethe temperature at which the system is being maintained (in Kelvin)
xymodethe mode specifying the behavior of the X and Y axes
zmodethe mode specifying the behavior of the Z axis
frequencythe frequency at which Monte Carlo volume changes should be attempted (in time steps)

Member Function Documentation

ForceImpl* createImpl ( ) const
protectedvirtual

When a Context is created, it invokes this method on each Force in the System.

It should create a new ForceImpl object which can be used by the context for calculating forces. The ForceImpl will be deleted automatically when the Context is deleted.

Implements Force.

double getDefaultPressure ( ) const
inline

Get the default pressure acting on the system (in bar).

Returns
the default pressure acting on the system, measured in bar.
double getDefaultSurfaceTension ( ) const
inline

Get the default surface tension acting on the system (in bar*nm).

Returns
the default surface tension acting on the system, measured in bar*nm.
int getFrequency ( ) const
inline

Get the frequency (in time steps) at which Monte Carlo volume changes should be attempted.

If this is set to 0, the barostat is disabled.

int getRandomNumberSeed ( ) const
inline

Get the random number seed.

See setRandomNumberSeed() for details.

double getTemperature ( ) const
inline

Get the temperature at which the system is being maintained, measured in Kelvin.

XYMode getXYMode ( ) const
inline

Get the mode specifying the behavior of the X and Y axes.

ZMode getZMode ( ) const
inline

Get the mode specifying the behavior of the Z axis.

static const std::string& Pressure ( )
inlinestatic

This is the name of the parameter which stores the current pressure acting on the system (in bar).

void setDefaultPressure ( double  pressure)
inline

Set the default pressure acting on the system.

This will affect any new Contexts you create, but not ones that already exist.

Parameters
pressurethe default pressure acting on the system, measured in bar.
void setDefaultSurfaceTension ( double  surfaceTension)
inline

Set the default surface tension acting on the system.

This will affect any new Contexts you create, but not ones that already exist.

Parameters
surfaceTensionthe default surface tension acting on the system, measured in bar.
void setFrequency ( int  freq)
inline

Set the frequency (in time steps) at which Monte Carlo volume changes should be attempted.

If this is set to 0, the barostat is disabled.

void setRandomNumberSeed ( int  seed)
inline

Set the random number seed.

It is guaranteed that if two simulations are run with different random number seeds, the sequence of Monte Carlo steps will be different. On the other hand, no guarantees are made about the behavior of simulations that use the same seed. In particular, Platforms are permitted to use non-deterministic algorithms which produce different results on successive runs, even if those runs were initialized identically.

void setTemperature ( double  temp)
inline

Set the temperature at which the system is being maintained.

Parameters
tempthe system temperature, measured in Kelvin.
void setXYMode ( XYMode  mode)
inline

Set the mode specifying the behavior of the X and Y axes.

void setZMode ( ZMode  mode)
inline

Set the mode specifying the behavior of the Z axis.

static const std::string& SurfaceTension ( )
inlinestatic

This is the name of the parameter which stores the current surface tension acting on the system (in bar*nm).


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