Scripts/MMTK: followMD.py

File followMD.py, 1.5 KB (added by Conrad Huang, 16 years ago)

Example code for following MD of argon atoms

Line 
1from MMTK import *
2from MMTK.Geometry import SCLattice
3from MMTK.ForceFields import LennardJonesForceField
4from MMTK.Environment import NoseThermostat, AndersenBarostat
5from MMTK.Trajectory import Trajectory, TrajectoryOutput, StandardLogOutput
6from MMTK.Dynamics import VelocityVerletIntegrator, VelocityScaler, \
7 TranslationRemover, BarostatReset
8
9edge = 3.2864
10n = 9
11temperature = 94.4*Units.K
12pressure = 1.*Units.atm
13
14ff = LennardJonesForceField(1.5)
15universe = CubicPeriodicUniverse(edge, ff)
16for point in SCLattice(edge/n, (n, n, n)):
17 universe.addObject(Atom('Ar', position=point))
18
19# Create corresponding Chimera molecule
20from MMTK2Molecule import convert
21m, atomMap = convert(universe)
22from chimera import openModels
23openModels.add([m])
24from chimera import runCommand
25runCommand("window ; repr stick")
26
27universe.initializeVelocitiesToTemperature(temperature)
28
29universe.thermostat = NoseThermostat(temperature)
30universe.barostat = AndersenBarostat(pressure)
31
32integrator = VelocityVerletIntegrator(universe, delta_t=10*Units.fs,
33 background=True)
34
35# Note that we do NOT use StandardLogOutput because printing
36# in Chimera is not thread-safe (yet)
37thread = integrator(steps = 2000,
38 actions = [TranslationRemover(0, None, 100),
39 VelocityScaler(temperature, 0.1*temperature,
40 0, None, 100),
41 BarostatReset(100)])
42from MMTK2Molecule import updateChimera
43updateChimera(thread, universe, atomMap, 15)