Plain MD Protocol#

Overview#

The PlainMDProtocol enables the user to run a Molecular Dynamics (MD) simulation of a ChemicalSystem, which can contain e.g. a solvated protein-ligand complex, a molecule and water, or a molecule in vacuum.

Scientific Details#

The PlainMDProtocol runs MD simulations of a system either in solvent or vacuum, depending on the input provided by the user in the ChemicalSystem. The protocol applies a LangevinMiddleIntegrator which uses Langevin dynamics, with the LFMiddle discretization [1].

Simulation Steps and Outputs#

If there is a SolventComponent in the ChemicalSystem, the each ProtocolUnit carries out the following steps:

Step

Outputs (with default names)

  1. Parameterize the system using OpenMMForceFields and Open Force Field

Forcefield cache (db.json)

  1. OpenMM object creation

Structure of the full system (system.pdb)

  1. Minimize the system

Minimized Structure (minimized.pdb)

  1. Equilibrate in the canonical (NVT) ensemble

NVT equilibrated structure (equil_nvt.pdb)

  1. Equilibrate the system under isobaric-isothermal (NPT) conditions

NPT equilibrated structure (equil_npt.pdb)

  1. Production simulate the system under isobaric-isothermal (NPT) conditions

Simulation trajectory (simulation.xtc), Checkpoint file (checkpoint.chk), Log output (simulation.log)

A MonteCarloBarostat is used in the NPT ensemble to maintain constant pressure. Relevant settings under solvent conditions include the solvation settings that control the solvent_model and solvent_padding.

If the ChemicalSystem does not contain a SolventComponent, the protocol runs an MD simulation in vacuum. After a minimization, the protocol performs an equilibration, followed by a production run with no periodic boundary conditions and infinite cutoffs. Settings that control the barostat or the solvation are ignored for vaccum MD simulations.

Performance consideration for gas phase MD simulations#

For gas phase MD simulations, we suggest setting OPENMM_CPU_THREADS=1 to obtain good performance.

See Also#

Tutorials

API Documentation

References#