Molecular Dynamics Engine

The SimPhoNy engine for LAMMPS currently supports a simple bulk atomistic molecular dynamics simulations with NVE thermodynamic ensemble.

Configuration of the engine (CM, SP, BC)

The user can configure the engine by setting specific values using CUBA keywords. The CUBA keywords supported for each model component are provided below. Additionally, there are non-CUBA keywords used for configuration which are also currently being used for configuration.

CM

  • CUBA.NUMBER_OF_TIME_STEPS
  • CUBA.TIME_STEP
  • CUBAExtension.THERMODYNAMIC_ENSEMBLE
    • supported values:
      • “NVE” - use constant NVE integration

SP

  • CUBAExtension.PAIR_POTENTIALS

BC

  • CUBAExtension.BOX_FACES

Example

Here is an example configuration:

# CM
engine.CM[CUBA.NUMBER_OF_TIME_STEPS] = 10000
engine.CM[CUBA.TIME_STEP] = 0.003
engine.CM_extension[CUBAExtension.THERMODYNAMIC_ENSEMBLE] = "NVE"

# SP
pair_potential = ("lj:\n"
                  "  global_cutoff: 1.12246\n"
                  "  parameters:\n"
                  "  - pair: [1, 1]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.2246\n"
                  "  - pair: [1, 2]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.2246\n"
                  "  - pair: [1, 3]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.2246\n"
                  "  - pair: [2, 2]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.2246\n"
                  "  - pair: [2, 3]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.2246\n"
                  "  - pair: [3, 3]\n"
                  "    epsilon: 1.0\n"
                  "    sigma: 1.0\n"
                  "    cutoff: 1.0001\n")
engine.SP_extension[CUBAExtension.PAIR_POTENTIALS] = pair_potential

# BC
engine.BC_extension[CUBAExtension.BOX_FACES] = (
    "periodic", "periodic", "periodic")

Configuring the engine’s state

The MD engine only supports Particles.

Particles

The Particles container’s data should have CUBA.MASS and CUBA.MATERIAL_TYPE defined.

Individual particles

The individual particles should have CUBA.VELOCITY defined.

Example

Here is an example configuration:

pc = ParticleContainer
data = DataContainer()
data[CUBA.MASS] = mass
data[CUBA.MATERIAL_TYPE] = material_type

pc.data = data

pc_w = engine.add_particles(pc)

vectors = [(25.0, 0.0, 0.0),
           (0.0, 22.0, 0.0),
           (0.0, 0.0, 1.0)]

pc_w.data_extension = {CUBAExtension.BOX_VECTORS: vectors,
                       CUBAExtension.BOX_ORIGIN: (0.0, 0.0, 0.0)}

random.seed(42)
for _ in range(10):
    coord = (random.uniform(0.0, 25.0),
             random.uniform(0.0, 22.0),
             0.0)
    p = Particle(coordinates=coord)
    p.data[CUBA.VELOCITY] = (0.0, 0.0, 0.0)
    pc_w.add_particle(p)

Additional notes

  • Units : all quantities are unitless.