MonteCarloMembraneBarostat¶
-
class
OpenMM::
MonteCarloMembraneBarostat
¶ 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
orAndersenThermostat
.Methods
MonteCarloMembraneBarostat
Create a MonteCarloMembraneBarostat
.getDefaultPressure
Get the default pressure acting on the system (in bar). setDefaultPressure
Set the default pressure acting on the system. getDefaultSurfaceTension
Get the default surface tension acting on the system (in bar*nm). setDefaultSurfaceTension
Set the default surface tension acting on the system. getFrequency
Get the frequency (in time steps) at which Monte Carlo volume changes should be attempted. setFrequency
Set the frequency (in time steps) at which Monte Carlo volume changes should be attempted. getDefaultTemperature
Get the default temperature at which the system is being maintained, measured in Kelvin. setDefaultTemperature
Set the default temperature at which the system is being maintained. getXYMode
Get the mode specifying the behavior of the X and Y axes. setXYMode
Set the mode specifying the behavior of the X and Y axes. getZMode
Get the mode specifying the behavior of the Z axis. setZMode
Set the mode specifying the behavior of the Z axis. getRandomNumberSeed
Get the random number seed. setRandomNumberSeed
Set the random number seed. usesPeriodicBoundaryConditions
Returns whether or not this force makes use of periodic boundary conditions. Enum: XYMode
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
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. -
const std::string &
Pressure
()¶ This is the name of the parameter which stores the current pressure acting on the system (in bar).
-
const std::string &
SurfaceTension
()¶ This is the name of the parameter which stores the current surface tension acting on the system (in bar*nm).
-
const std::string &
Temperature
()¶ This is the name of the parameter which stores the current temperature at which the system is being maintained (in Kelvin)
-
MonteCarloMembraneBarostat
(double defaultPressure, double defaultSurfaceTension, double defaultTemperature, XYMode xymode, ZMode zmode, int frequency = 25)¶ Create a
MonteCarloMembraneBarostat()
.Parameters: - defaultPressure – the default pressure acting on the system (in bar)
- defaultSurfaceTension – the default surface tension acting on the system (in bar*nm)
- defaultTemperature – the default temperature at which the system is being maintained (in Kelvin)
- xymode – the mode specifying the behavior of the X and Y axes
- zmode – the mode specifying the behavior of the Z axis
- frequency – the frequency at which Monte Carlo volume changes should be attempted (in time steps)
-
double
getDefaultPressure
() const¶ Get the default pressure acting on the system (in bar).
Returns: the default pressure acting on the system, measured in bar.
-
void
setDefaultPressure
(double pressure)¶ Set the default pressure acting on the system. This will affect any new Contexts you create, but not ones that already exist.
Parameters: - pressure – the default pressure acting on the system, measured in bar.
-
double
getDefaultSurfaceTension
() const¶ 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.
-
void
setDefaultSurfaceTension
(double surfaceTension)¶ Set the default surface tension acting on the system. This will affect any new Contexts you create, but not ones that already exist.
Parameters: - surfaceTension – the default surface tension acting on the system, measured in bar.
-
int
getFrequency
() const¶ 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.
-
void
setFrequency
(int freq)¶ 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.
-
double
getDefaultTemperature
() const¶ Get the default temperature at which the system is being maintained, measured in Kelvin.
-
void
setDefaultTemperature
(double temp)¶ Set the default temperature at which the system is being maintained. This will affect any new Contexts you create, but not ones that already exist.
Parameters: - temp – the system temperature, measured in Kelvin.
-
XYMode
getXYMode
() const¶ Get the mode specifying the behavior of the X and Y axes.
-
void
setXYMode
(XYMode mode)¶ Set the mode specifying the behavior of the X and Y axes.
-
ZMode
getZMode
() const¶ Get the mode specifying the behavior of the Z axis.
-
void
setZMode
(ZMode mode)¶ Set the mode specifying the behavior of the Z axis.
-
int
getRandomNumberSeed
() const¶ Get the random number seed. See
setRandomNumberSeed()
for details.
-
void
setRandomNumberSeed
(int seed)¶ 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.
If seed is set to 0 (which is the default value assigned), a unique seed is chosen when a
Context
is created from thisForce
. This is done to ensure that eachContext
receives unique random seeds without you needing to set them explicitly.
-
bool
usesPeriodicBoundaryConditions
() const¶ Returns whether or not this force makes use of periodic boundary conditions.
Returns: true if force uses PBC and false otherwise