Class Barostat

java.lang.Object
ffx.algorithms.dynamics.Barostat
All Implemented Interfaces:
CrystalPotential, OptimizationInterface, Potential

public class Barostat extends Object implements CrystalPotential
The Barostat class maintains constant pressure using random trial moves in lattice parameters, which are consistent with the space group.

Frenkel and Smit, "Understanding Molecular Simulation, 2nd Edition", Academic Press, San Diego, CA, 2002; Section 5.4

Author:
Michael J. Schnieders
  • Constructor Details

    • Barostat

      public Barostat(MolecularAssembly molecularAssembly, CrystalPotential potential)
      Initialize the Barostat.
      Parameters:
      molecularAssembly - The molecular assembly to apply the MC barostat to.
      potential - a CrystalPotential object.
    • Barostat

      public Barostat(MolecularAssembly molecularAssembly, CrystalPotential potential, double temperature)
      Initialize the Barostat.
      Parameters:
      molecularAssembly - The molecular assembly to apply the MC barostat to.
      potential - a CrystalPotential object.
      temperature - The Metropolis Monte Carlo temperature (Kelvin).
  • Method Details

    • density

      public double density()
      density.
      Returns:
      a double.
    • destroy

      public boolean destroy()
      Destroys this Potential and frees up any associated resources, particularly worker Threads. Default implementation is to return true (assume destruction successful).
      Specified by:
      destroy in interface OptimizationInterface
      Returns:
      If resource reclamation successful, or resources already reclaimed.
    • energy

      public double energy(double[] x)
      This method is called repeatedly to compute the function energy.
      Specified by:
      energy in interface OptimizationInterface
      Parameters:
      x - Input parameters.
      Returns:
      Function value at x.
    • energyAndGradient

      public double energyAndGradient(double[] x, double[] g)
      This method is called repeatedly to compute the function energy and gradient.
      Specified by:
      energyAndGradient in interface OptimizationInterface
      Parameters:
      x - Input parameters.
      g - Output gradients with respect to each parameter.
      Returns:
      Function value at x.
    • isIsotropic

      public boolean isIsotropic()
      Restrict the MC Barostat to isotropic moves. The lattice angles are held fixed, and lattice lengths are scaled equally.
      Returns:
      Returns true if only isotropic moves are allowed.
    • setIsotropic

      public void setIsotropic(boolean isotropic)
      Restrict the MC Barostat to isotropic moves. The lattice angles are held fixed, and lattice lengths are scaled equally.
      Parameters:
      isotropic - If true, if only isotropic moves are allowed.
    • getAcceleration

      public double[] getAcceleration(double[] acceleration)
      getAcceleration.
      Specified by:
      getAcceleration in interface Potential
      Parameters:
      acceleration - an array of
      invalid reference
      double
      objects.
      Returns:
      an array of
      invalid reference
      double
      objects.
    • getCoordinates

      public double[] getCoordinates(double[] parameters)
      Load the current value of the parameters. If the supplied array is null or not large enough, a new one should be created. The filled array is returned.
      Specified by:
      getCoordinates in interface OptimizationInterface
      Parameters:
      parameters - Supplied array.
      Returns:
      The array filled with parameter values.
    • getCrystal

      public Crystal getCrystal()
      Specified by:
      getCrystal in interface CrystalPotential
    • setCrystal

      public void setCrystal(Crystal crystal)
      Specified by:
      setCrystal in interface CrystalPotential
    • getEnergyTermState

      public Potential.STATE getEnergyTermState()
      Get the Potential Energy terms that is active.
      Specified by:
      getEnergyTermState in interface Potential
      Returns:
      the STATE
    • setEnergyTermState

      public void setEnergyTermState(Potential.STATE state)
      Set the Potential Energy terms that should be active.
      Specified by:
      setEnergyTermState in interface Potential
      Parameters:
      state - include FAST varying energy terms, SLOW varying energy terms or BOTH.
    • getMass

      public double[] getMass()
      Get the mass of each degree of freedom. This is required for molecular dynamics.
      Specified by:
      getMass in interface Potential
      Returns:
      The mass of each degree of freedom.
    • getMeanBarostatInterval

      public int getMeanBarostatInterval()
      Returns the mean number of steps between barostat applications.
      Returns:
      Mean steps between barostat applications.
    • setMeanBarostatInterval

      public void setMeanBarostatInterval(int meanBarostatInterval)
      Setter for the field meanBarostatInterval.
      Parameters:
      meanBarostatInterval - The mean number of steps between barostat applications.
    • getNumberOfVariables

      public int getNumberOfVariables()
      Get the number of variables being operated on.
      Specified by:
      getNumberOfVariables in interface OptimizationInterface
      Returns:
      Number of variables.
    • getPressure

      public double getPressure()
      Gets the pressure of this Barostat in atm.
      Returns:
      Pressure in atm.
    • setPressure

      public void setPressure(double pressure)
      Setter for the field pressure.
      Parameters:
      pressure - a double.
    • getPreviousAcceleration

      public double[] getPreviousAcceleration(double[] previousAcceleration)
      getPreviousAcceleration.
      Specified by:
      getPreviousAcceleration in interface Potential
      Parameters:
      previousAcceleration - an array of
      invalid reference
      double
      objects.
      Returns:
      an array of
      invalid reference
      double
      objects.
    • getScaling

      public double[] getScaling()
      Get the problem scaling.
      Specified by:
      getScaling in interface OptimizationInterface
      Returns:
      The scaling value used for each variable.
    • setScaling

      public void setScaling(double[] scaling)
      Scale the problem. A good choice for optimization is the square root of the median eigenvalue of a typical Hessian.
      Specified by:
      setScaling in interface OptimizationInterface
      Parameters:
      scaling - The scaling value to use for each variable.
    • getTotalEnergy

      public double getTotalEnergy()
      Get the total energy of the system
      Specified by:
      getTotalEnergy in interface OptimizationInterface
      Returns:
      the total energy
    • getUnderlyingPotentials

      public List<Potential> getUnderlyingPotentials()
      Description copied from interface: OptimizationInterface
      Returns a List of Potentials this Potential depends on with a recursive search, excluding the top level of this call. May not be implemented for all Potentials.
      Specified by:
      getUnderlyingPotentials in interface OptimizationInterface
      Returns:
      By default, an empty list.
    • getVariableTypes

      public Potential.VARIABLE_TYPE[] getVariableTypes()
      Get the type of all variables.
      Specified by:
      getVariableTypes in interface Potential
      Returns:
      The VARIABLE_TYPE of each variable.
    • getVelocity

      public double[] getVelocity(double[] velocity)
      getVelocity.
      Specified by:
      getVelocity in interface Potential
      Parameters:
      velocity - an array of
      invalid reference
      double
      objects.
      Returns:
      an array of
      invalid reference
      double
      objects.
    • isActive

      public boolean isActive()
    • setActive

      public void setActive(boolean active)
      Setter for the field active.
      Parameters:
      active - a boolean.
    • setAcceleration

      public void setAcceleration(double[] acceleration)
      setAcceleration.
      Specified by:
      setAcceleration in interface Potential
      Parameters:
      acceleration - an array of
      invalid reference
      double
      objects.
    • setDensity

      public void setDensity(double density)
      setDensity.
      Parameters:
      density - a double.
    • setMaxAngleMove

      public void setMaxAngleMove(double maxAngleMove)
      Setter for the field maxAngleMove.
      Parameters:
      maxAngleMove - a double.
    • setMaxVolumeMove

      public void setMaxVolumeMove(double maxVolumeMove)
      Setter for the field maxVolumeMove.
      Parameters:
      maxVolumeMove - a double.
    • setMaxDensity

      public void setMaxDensity(double maxDensity)
      Setter for the field maxDensity.
      Parameters:
      maxDensity - a double.
    • setMinDensity

      public void setMinDensity(double minDensity)
      Setter for the field minDensity.
      Parameters:
      minDensity - a double.
    • setBarostatPrintFrequency

      public void setBarostatPrintFrequency(int frequency)
      Set the Barostat print frequency.
      Parameters:
      frequency - The number of Barostat moves between print statements.
    • setPreviousAcceleration

      public void setPreviousAcceleration(double[] previousAcceleration)
      setPreviousAcceleration.
      Specified by:
      setPreviousAcceleration in interface Potential
      Parameters:
      previousAcceleration - an array of
      invalid reference
      double
      objects.
    • setTemperature

      public void setTemperature(double temperature)
      Set the Metropolis Monte Carlo temperature.
      Parameters:
      temperature - Temperature (Kelvin).
    • setVelocity

      public void setVelocity(double[] velocity)
      setVelocity.
      Specified by:
      setVelocity in interface Potential
      Parameters:
      velocity - an array of
      invalid reference
      double
      objects.