예제 #1
0
def test_LennardJones():

    pe_theory = theory_lj(distances, epsilon=2, sigma=3.5, cutoff=11)

    simulation = pyMD.Simulation(
        positions=positions,
        masses=masses,
        box=box,
        velocities=velocities
    )
    simulation.set_integrator(pyMD.VelocityVerletIntegrator(1.0))
    simulation.add_pair_style(pyMD.LennardJones(epsilon=2, sigma=3.5, cutoff=11))
    simulation._init_step()

    simulation.positions[0] = (0, 0, 0)

    for i, d in enumerate(distances):
        simulation.positions[1] = (d, 0, 0)
        # simulation.neigh.apply_pbc()
        # simulation.neigh.build_neighborlist()

        pe[i] = simulation.pair_styles[0].get_current_state(return_forces=False)


    np.testing.assert_almost_equal(pe, pe_theory)
def test_simulation_LJ_melt(verbose=False):
    path_reference = os.path.join('resources', 'LJ_melt')
    dump_file = os.path.join(path_reference, 'dump.lammpstrj.gz')

    xyz_lammps, pe_lammps, force_lammps = get_lammps_data(dump_file)

    box = [
        [16.79596191382507, 0, 0],
        [0, 16.79596191382507, 0],
        [0, 0, 16.79596191382507],
    ]

    positions = np.zeros((4000, 3), dtype=np.float64)
    positions[:] = xyz_lammps[0]
    velocities = np.zeros(positions.shape, dtype=np.float64)

    masses = 1.0 * np.ones(len(positions))

    simulation = pyMD.Simulation(positions=positions,
                                 masses=masses,
                                 box=box,
                                 velocities=velocities)
    simulation.nn_settings['skin'] = 0.3
    simulation.set_integrator(pyMD.VelocityVerletIntegrator(0.005))
    simulation.add_pair_style(
        pyMD.LennardJones(epsilon=1, sigma=1.0, cutoff=2.5, shift=False))
    simulation._init_step()

    pe_pyMD = np.zeros(pe_lammps.shape)
    force_pyMD = np.zeros(force_lammps.shape)

    for i, xyz in enumerate(xyz_lammps):
        if verbose and not i % len(xyz_lammps) / 10:
            print('\r{}/{}'.format(i + 1, len(xyz_lammps)), end='', flush=True)

        simulation.positions[:] = xyz

        simulation.neigh.build_neighborlist()

        force, pe = simulation.pair_styles[0].get_current_state(
            return_forces=True)
        pe_pyMD[i] = pe
        force_pyMD[i] = force

    np.testing.assert_array_almost_equal(pe_lammps,
                                         pe_pyMD,
                                         err_msg='Potential Energy mismatch')
    np.testing.assert_array_almost_equal(force_lammps,
                                         force_pyMD,
                                         err_msg='Forces mismatch')
    if verbose:
        print('LAMMPS and pyMD results match')
def test_simulation_distance_2LJ_beads():
    path_reference = os.path.join('resources', 'distance_2LJ_beads')
    dump_file = os.path.join(path_reference, 'dump.lammpstrj.gz')

    xyz_lammps, pe_lammps, force_lammps = get_lammps_data(dump_file)

    box = [
        [6.0, 0, 0],
        [0, 6.0, 0],
        [0, 0, 6.0],
    ]

    positions = np.array([
        [0, 0, 0],
        [0.4, 0, 0],
    ], dtype=np.float64)

    velocities = np.array([
        [0, 0, 0],
        [0, 0, 0]
    ], dtype=np.float64)

    masses = 1.0 * np.ones(len(positions))

    simulation = pyMD.Simulation(
        positions=positions,
        masses=masses,
        box=box,
        velocities=velocities
    )
    simulation.nn_settings['skin'] = 0.3
    simulation.set_integrator( pyMD.VelocityVerletIntegrator(0.005))
    simulation.add_pair_style( pyMD.LennardJones(epsilon=1, sigma=1.0, cutoff=2.5, shift=False))
    simulation._init_step()

    pe_pyMD = np.zeros(pe_lammps.shape)
    force_pyMD = np.zeros(force_lammps.shape)

    for i, xyz in enumerate(xyz_lammps):
        simulation.positions[:] = xyz

        simulation.neigh.build_neighborlist()

        force, pe = simulation.pair_styles[0].get_current_state(return_forces=True)
        pe_pyMD[i] = pe
        force_pyMD[i] = force

    np.testing.assert_array_almost_equal(pe_lammps, pe_pyMD, err_msg='Potential Energy mismatch')
    np.testing.assert_array_almost_equal(force_lammps, force_pyMD, err_msg='Forces mismatch')
예제 #4
0
system = pyMD.builder.RandomBeadsBox(n_atoms=n_atoms,
                                     sidelength=20,
                                     mode='mc',
                                     mc_r_min=3.0)
box = system.box
positions = system.positions

masses = 1 * np.ones(n_atoms)

temperature = 0.02  # just a scaling atm
velocities = pyMD.builder.create_velocities(n_atoms, masses, temperature)

simulation = pyMD.Simulation(positions=positions,
                             masses=masses,
                             box=box,
                             velocities=velocities)

simulation.set_integrator(pyMD.VelocityVerletIntegrator(0.005, units='LJ'))
simulation.add_pair_style(pyMD.LennardJones(epsilon=0.25, sigma=1, cutoff=2.5))
#simulation.add_reporter( pyMD.InMemoryReporter(n_dump=1000) )
#simulation.add_reporter( pyMD.ThermodynamicsReporter(n_dump=1000) )

simulation.add_reporter(
    pyMD.LammpsTrajectoryReporter('test.lammpstrj', n_dump=100))

simulation.minimize(10000)
#===================================================================#
# run the simulation
simulation.run(int(1e5))
velocities = np.array([
    [ 5e-5, 0, 0],
    [-5e-5, 0, 0]
], dtype=np.float64)

masses = 18.0*np.ones(len(positions))



#===================================================================#
# Define the Simulation

simulation = pyMD.Simulation(
    positions=positions,
    masses=masses,
    box=box,
    velocities=velocities
)
simulation.set_integrator( pyMD.VelocityVerletIntegrator(1.0, units='real') )
simulation.add_pair_style( pyMD.LennardJones(epsilon=1e-3, sigma=3.5, cutoff=11) )
simulation.add_reporter( pyMD.InMemoryTrajectoryReporter(n_dump=1000) )
simulation.add_reporter( pyMD.InMemoryThermodynamicsReporter(n_dump=1000) )

# visualzie with :  vmd -lammpstrj test.lammpstrj
simulation.add_reporter( pyMD.LammpsTrajectoryReporter('test.lammpstrj', n_dump=1000))
#===================================================================#

# run the simulation
simulation.run(int(1e6))
예제 #6
0
        pe[i] = simulation.pair_styles[0].get_current_state(return_forces=False)


    np.testing.assert_almost_equal(pe, pe_theory)

if __name__ == '__main__':
    pe_theory = theory_lj(distances, epsilon=2, sigma=3.5, cutoff=11)

    simulation = pyMD.Simulation(
        positions=positions,
        masses=masses,
        box=box,
        velocities=velocities
    )
    simulation.set_integrator(pyMD.VelocityVerletIntegrator(1.0))
    simulation.add_pair_style(pyMD.LennardJones(epsilon=2, sigma=3.5, cutoff=11))
    simulation._init_step()

    simulation.positions[0] = (0, 0, 0)

    for i, d in enumerate(distances):
        simulation.positions[1] = (d, 0, 0)
        # simulation.neigh.apply_pbc()
        # simulation.neigh.build_neighborlist()

        pe[i] = simulation.pair_styles[0].get_current_state(return_forces=False)

    import matplotlib.pyplot as plt

    plt.plot(distances, pe, label='pyMD')