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.