In this example, we’ll build a simulation of a simple liquid (methanol) starting with a structure file (in XYZ format). Getting your molecule of choice into OpenMD is never a black box procedure, and will almost always require some hand adjustment of the input files. Assuming you’ve gotten a version of OpenMD built and installed (along with all of the prerequisite software), we’ll walk you through building the liquid simulation in the steps below.
- Start with a good structure for your molecule. If you are familiar with Avogadro, build the methanol structure (CH3OH), set up the force field, and optimize the structure. Save the structure as methanol.xyz. Alternatively, download the methanol.xyz structure to your working directory.
- Use the atom2md program to convert the structure into a format that can be read by OpenMD:
atom2md -ixyz methanol.xyz
This command will create an incomplete OpenMD file called methanol.md that must be edited before it can be used.
- OpenMD can use a number of force fields, but in this example, we’ll use the Amber force field. If you are using this force field and are starting from an XYZ file or non-standard PDB file, you must edit the atom types. In the methanol.md file:
- change the atom typing for the methyl carbon from C3 to CT
- change the O3 to OH
- The hydrogens on the carbon should also be changed from HC to H1
- The hydroxyl hydrogen can be left alone.
- At this point it is also a good idea to change the name of the molecule to something descriptive (perhaps “methanol”). This should be done in two places; once in the molecule description and another time in the component block.
- Before the simulation can run, add a forceField line after the component block:
forceField = "Amber";
At this stage, you should be able to run OpenMD on the file to check to make sure your hand-crafted atom typing can be matched up with types known by the force field:openmd methanol.md
If there are any problems, correct any unknown atom types, and repeat until you get an error about the “Integrator Factory”.
- Next, we’ll build a lattice of methanol molecules using this initial structure as a starting point. The density of liquid methanol is roughly 0.7918 g cm-3, so we’ll build a simple box of methanol molecules using the command:
simpleBuilder -o liquid.md --density=0.7918 --nx=3 --ny=3 --nz=3 methanol.md
This command creates a new system, liquid.md which contains 108 copies of the methanol molecule arranged in a simple FCC lattice. FCC has 4 molecules in the unit cell, so the total number of molecules = 4 * 3 * 3 * 3 = 108. The molecules are packed at a distance commensurate with their liquid state density.
- To visualize what the system looks like at this stage, you can run:
Dump2XYZ -i liquid.md
- Add the following lines below the forceField line of the liquid.md file:
ensemble = NVT;
cutoffMethod = "shifted_force";
electrostaticScreeningMethod = "damped";
cutoffRadius = 9;
dampingAlpha = 0.18;
targetTemp = 300;
tauThermostat = 1000;
dt = 1.0;
runTime = 1e3;
tempSet = "false";
sampleTime = 100;
statusTime = 10;
- Initial configurations that are created from bare structures typically have no velocity information. To give an initial kick to the atoms (i.e. to sample the velocities from a Maxwell-Boltzmann distribution), you can use the following command:
thermalizer -o warm.md -t 300 liquid.md
This creates a new OpenMD file called warm.md which has initial velocity information.
- At this stage, a simple simulation can be run:
- This should complete relatively quickly, and should create a warm.stat file as well as a warm.dump file containing the actual trajectory.
- To view the contents of the trajectory file, you’ll need to convert the dump file into something another program can visualize:
Dump2XYZ -i warm.dump
will create a new file warm.xyz that can be viewed in VMD and many other chemical structure viewers.
- The “End-of-Run” file warm.eor can be re-purposed as the starting point for a new simulation:
cp warm.eor equilibration.md
Edit the equilibration.md file, and change parameters you’d like to change before running openmd on the new file.