Class MonteCarloOST

java.lang.Object
ffx.algorithms.mc.BoltzmannMC
ffx.algorithms.thermodynamics.MonteCarloOST
All Implemented Interfaces:
MetropolisMC

public class MonteCarloOST extends BoltzmannMC
Sample a thermodynamic path using the OST method, with the time-dependent bias built up using Metropolis Monte Carlo steps.

The algorithm generates coordinate (X) MC moves using molecular dynamics at a fixed lambda value (i.e. using OpenMM), followed by MC lambda moves.

1.) At a fixed Lambda, run a defined length MD trajectory to "move" coordinates and dU/dL on an approximate potential U* (i.e. no OST Bias).

2.) Accept / Reject the MD move with probability exp[-Beta(dU - dU*)] where dU is the change in AMOEBA + Bias energy and dU* is the change in AMOEBA + Kinetic energy from the MD.

3.) Randomly change the value of Lambda.

4.) Accept / Reject the Lambda move using the AMOEBA + OST Bias energy.

5.) Add to the time dependent 2D bias using the current values of Lambda and dU/dL.

Since:
1.0
Author:
Michael J. Schnieders, Hernan Beranbe, Mallory R. Tollefson, Jacob Litman
  • Constructor Details

  • Method Details

    • getLambda

      public double getLambda()
      Returns the current value of lambda
      Returns:
      lambda
    • setLambda

      public void setLambda(double lambda)
      Calls on the OST method set lambda to update lambda to the current value in this class
      Parameters:
      lambda - a double.
    • getMD

      public MolecularDynamics getMD()
    • sampleOneStep

      public void sampleOneStep()
      The goal is to sample lambda and coordinates (X) simultaneously to converge the ensemble average dU/dL for every state (lambda) along the thermodynamic path. Note that the order of 1 invalid input: '&' 2 below can be swapped (i.e. run MD and then change lambda). Here the order is random for each trial.

      1.) Randomly change the value of Lambda.

      2.) At the proposed lambda, run a am MD trajectory to "move" coordinates and dU/dL.

      3.) Accept / Reject the Lambda + MD move using the total Hamiltonian (Kinetic energy + OST energy).

      4.) Add to the bias.

    • sampleTwoStep

      public void sampleTwoStep()
      The goal is to sample lambda and coordinates (X) separately to converge the ensemble average dU/dL for every state (lambda) along the thermodynamic path.

      1.) At a fixed lambda, run a defined length MD trajectory to "move" coordinates and dU/dL.

      2.) Accept / Reject the MD move using the total Hamiltonian (Kinetic energy + OST energy).

      3.) Randomly change the value of Lambda.

      4.) Accept / Reject the Lambda move using the OST energy.

      5.) Add a hill to the histogram.

    • setAutomaticWriteouts

      public void setAutomaticWriteouts(boolean autoWrite)
    • setEquilibration

      public void setEquilibration(boolean equilibration)
      Sets the value of the boolean equilibration variables to true or false to either allow an equilibration step or skip it.
      Parameters:
      equilibration - a boolean.
    • setLambdaStdDev

      public void setLambdaStdDev(double stdDev)
      Calls on LambdaMove class method setLambdaStdDev to update the lambda standard deviation to the current value in this class
      Parameters:
      stdDev - a double.
    • setTotalSteps

      public void setTotalSteps(long totalSteps)
      Sets the next number of steps MC-OST should run.
      Parameters:
      totalSteps - The length of the next MC-OST run.
    • revertStep

      public void revertStep()
      If possible, reverts the last successful Monte Carlo step taken.
    • currentEnergy

      protected double currentEnergy()
      Must return the current energy of the system.
      Specified by:
      currentEnergy in class BoltzmannMC
      Returns:
      Current system energy
    • storeState

      protected void storeState()
      Store the state for reverting a move. Must be properly implemented for revertStep() to function properly; otherwise, the implementation of revertStep() should throw an OperationNotSupportedException.
      Specified by:
      storeState in class BoltzmannMC