pressure = 1.0 * unit.atmospheres temperature = 300.0 * unit.kelvin temperature_hot = 600.0 * unit.kelvin frequency = 25 # If system is periodic, equilibrate at 1 atm at 300 K. if system.usesPeriodicBoundaryConditions(): print('Equilibrating with barostat...') import copy barostat = openmm.MonteCarloBarostat(pressure, temperature, frequency) system_with_barostat = copy.deepcopy(system) system_with_barostat.addForce(barostat) collision_rate = 10.0 / unit.picoseconds timestep = 2.0 * unit.femtoseconds #integrator = openmm.LangevinIntegrator(temperature, collision_rate, timestep) integrator = VVVRIntegrator(temperature, collision_rate, timestep) context = openmm.Context(system_with_barostat, integrator) context.setPositions(positions) niterations = 20 nsteps = 500 for iteration in range(niterations): print('Iteration %5d / %5d: volume = %8.3f nm^3' % (iteration, niterations, context.getState().getPeriodicBoxVolume() / unit.nanometers**3)) integrator.step(nsteps) positions = context.getState(getPositions=True).getPositions(asNumpy=True) box_vectors = context.getState().getPeriodicBoxVectors() system.setDefaultPeriodicBoxVectors(*box_vectors) del context, integrator, system_with_barostat else: print(
# In[2]: # this cell is all OpenMM specific forcefield = app.ForceField('amber96.xml', 'tip3p.xml') pdb = app.PDBFile("AD_initial_frame.pdb") system = forcefield.createSystem( pdb.topology, nonbondedMethod=app.PME, nonbondedCutoff=1.0*unit.nanometers, constraints=app.HBonds, rigidWater=True, ewaldErrorTolerance=0.0005 ) hi_T_integrator = VVVRIntegrator( 500*unit.kelvin, 1.0/unit.picoseconds, 2.0*unit.femtoseconds) hi_T_integrator.setConstraintTolerance(0.00001) # The storage file will need a template snapshot. In addition, the OPS OpenMM-based `Engine` has a few properties and options that are set by these dictionaries. # In[3]: template = omm.snapshot_from_pdb("AD_initial_frame.pdb") openmm_properties = {'OpenCLPrecision': 'mixed'} engine_options = { 'n_steps_per_frame': 10, 'n_frames_max': 2000 }