ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/openmdDocs/openmdDoc.tex
Revision: 4105
Committed: Mon Apr 28 21:41:01 2014 UTC (11 years ago) by gezelter
Content type: application/x-tex
File size: 219644 byte(s)
Log Message:
Edits

File Contents

# User Rev Content
1 gezelter 3607 \documentclass[]{book}
2     \usepackage{amssymb}
3     \usepackage{amsmath}
4     \usepackage{times}
5     \usepackage{listings}
6     \usepackage{graphicx}
7     \usepackage{setspace}
8     \usepackage{tabularx}
9     \usepackage{longtable}
10     \pagestyle{plain}
11     \pagenumbering{arabic}
12 gezelter 4102 \usepackage{floatrow}
13 gezelter 4105 \usepackage[margin=0.5cm,font=small,format=hang]{caption}
14    
15 gezelter 3607 \oddsidemargin 0.0cm
16     \evensidemargin 0.0cm
17     \topmargin -21pt
18     \headsep 10pt
19     \textheight 9.0in
20     \textwidth 6.5in
21     \brokenpenalty=10000
22     \renewcommand{\baselinestretch}{1.2}
23 skuang 3793 \usepackage[square, comma, sort&compress]{natbib}
24     \bibpunct{[}{]}{,}{n}{}{;}
25 gezelter 3607
26 gezelter 4102 \DeclareFloatFont{tiny}{\scriptsize}% "scriptsize" is defined by floatrow, "tiny" not
27     \floatsetup[table]{font=tiny}
28 skuang 3793
29 gezelter 4102
30 gezelter 3607 %\renewcommand\citemid{\ } % no comma in optional reference note
31 gezelter 4102 \lstset{language=C,frame=TB,basicstyle=\footnotesize\ttfamily, %
32 gezelter 3607 xleftmargin=0.25in, xrightmargin=0.25in,captionpos=b, %
33     abovecaptionskip=0.5cm, belowcaptionskip=0.5cm, escapeinside={~}{~}}
34 gezelter 4105 \renewcommand{\lstlistingname}{Example}
35 gezelter 3607
36 gezelter 4105 \lstnewenvironment{code}[1][]%
37     {\noindent\minipage{\linewidth}\vspace{0.5\baselineskip}
38     \lstset{language=C,basicstyle=\footnotesize\ttfamily,%
39     captionpos=b,aboveskip=0.5cm,belowskip=0.5cm,abovecaptionskip=0.5cm,%
40     belowcaptionskip=0.5cm,%
41     escapeinside={~}{~},frame=single,#1}}
42     {\endminipage}
43    
44    
45    
46 gezelter 3607 \begin{document}
47    
48     \newcolumntype{A}{p{1.5in}}
49     \newcolumntype{B}{p{0.75in}}
50     \newcolumntype{C}{p{1.5in}}
51     \newcolumntype{D}{p{2in}}
52    
53     \newcolumntype{E}{p{0.5in}}
54     \newcolumntype{F}{p{2.25in}}
55     \newcolumntype{G}{p{3in}}
56    
57     \newcolumntype{H}{p{0.75in}}
58     \newcolumntype{I}{p{5in}}
59    
60 gezelter 3792 \newcolumntype{J}{p{1.5in}}
61     \newcolumntype{K}{p{1.2in}}
62     \newcolumntype{L}{p{1.5in}}
63     \newcolumntype{M}{p{1.55in}}
64 gezelter 3607
65 gezelter 3792
66 gezelter 4102 \title{{\sc OpenMD-2.2}: Molecular Dynamics in the Open}
67 gezelter 3607
68 gezelter 4101 \author{Joseph Michalka, James Marr, Kelsey Stocker, Madan Lamichhane,
69     Patrick Louden, \\
70     Teng Lin, Charles F. Vardeman II, Christopher J. Fennell, Shenyu
71     Kuang, Xiuquan Sun, \\
72 gezelter 3709 Chunlei Li, Kyle Daily, Yang Zheng, Matthew A. Meineke, and \\
73     J. Daniel Gezelter \\
74     Department of Chemistry and Biochemistry\\
75     University of Notre Dame\\
76     Notre Dame, Indiana 46556}
77 gezelter 3607
78     \maketitle
79    
80     \section*{Preface}
81     {\sc OpenMD} is an open source molecular dynamics engine which is capable of
82     efficiently simulating liquids, proteins, nanoparticles, interfaces,
83     and other complex systems using atom types with orientational degrees
84     of freedom (e.g. ``sticky'' atoms, point dipoles, and coarse-grained
85     assemblies). Proteins, zeolites, lipids, transition metals (bulk, flat
86     interfaces, and nanoparticles) have all been simulated using force
87     fields included with the code. {\sc OpenMD} works on parallel computers
88     using the Message Passing Interface (MPI), and comes with a number of
89     analysis and utility programs that are easy to use and modify. An
90     OpenMD simulation is specified using a very simple meta-data language
91     that is easy to learn.
92    
93     \tableofcontents
94 kstocke1 3708 \listoffigures
95     \listoftables
96 gezelter 3607
97     \mainmatter
98    
99     \chapter{\label{sec:intro}Introduction}
100    
101     There are a number of excellent molecular dynamics packages available
102     to the chemical physics
103     community.\cite{Brooks83,MacKerell98,pearlman:1995,Gromacs,Gromacs3,DL_POLY,Tinker,Paradyn,namd,macromodel}
104     All of these packages are stable, polished programs which solve many
105     problems of interest. Most are now capable of performing molecular
106     dynamics simulations on parallel computers. Some have source code
107     which is freely available to the entire scientific community. Few,
108     however, are capable of efficiently integrating the equations of
109     motion for atom types with orientational degrees of freedom
110     (e.g. point dipoles, and ``sticky'' atoms). And only one of the
111     programs referenced can handle transition metal force fields like the
112     Embedded Atom Method ({\sc eam}). The direction our research program
113     has taken us now involves the use of atoms with orientational degrees
114     of freedom as well as transition metals. Since these simulation
115     methods may be of some use to other researchers, we have decided to
116     release our program (and all related source code) to the scientific
117     community.
118    
119     This document communicates the algorithmic details of our program,
120     {\sc OpenMD}. We have structured this document to first discuss the
121     underlying concepts in this simulation package (Sec.
122     \ref{section:IOfiles}). The empirical energy functions implemented
123     are discussed in Sec.~\ref{section:empiricalEnergy}.
124     Sec.~\ref{section:mechanics} describes the various Molecular Dynamics
125     algorithms {\sc OpenMD} implements in the integration of Hamilton's
126     equations of motion. Program design considerations for parallel
127     computing are presented in Sec.~\ref{section:parallelization}.
128     Concluding remarks are presented in Sec.~\ref{section:conclusion}.
129    
130     \chapter{\label{section:IOfiles}Concepts \& Files}
131    
132     A simulation in {\sc OpenMD} is built using a few fundamental
133     conceptual building blocks most of which are chemically intuitive.
134     The basic unit of a simulation is an {\tt atom}. The parameters
135     describing an {\tt atom} have been generalized to make it as flexible
136     as possible; this means that in addition to translational degrees of
137     freedom, {\tt Atoms} may also have {\it orientational} degrees of freedom.
138    
139     The fundamental (static) properties of {\tt atoms} are defined by the
140     {\tt forceField} chosen for the simulation. The atomic properties
141     specified by a {\tt forceField} might include (but are not limited to)
142     charge, $\sigma$ and $\epsilon$ values for Lennard-Jones interactions,
143     the strength of the dipole moment ($\mu$), the mass, and the moments
144     of inertia. Other more complicated properties of atoms might also be
145     specified by the {\tt forceField}.
146    
147     {\tt Atoms} can be grouped together in many ways. A {\tt rigidBody}
148     contains atoms that exert no forces on one another and which move as a
149     single rigid unit. A {\tt cutoffGroup} may contain atoms which
150     function together as a (rigid {\it or} non-rigid) unit for potential
151     energy calculations,
152     \begin{equation}
153     V_{ab} = s(r_{ab}) \sum_{i \in a} \sum_{j \in b} V_{ij}(r_{ij})
154     \end{equation}
155     Here, $a$ and $b$ are two {\tt cutoffGroups} containing multiple atoms
156     ($a = \left\{i\right\}$ and $b = \left\{j\right\}$). $s(r_{ab})$ is a
157     generalized switching function which insures that the atoms in the two
158     {\tt cutoffGroups} are treated identically as the two groups enter or
159     leave an interaction region.
160    
161     {\tt Atoms} may also be grouped in more traditional ways into {\tt
162 gezelter 4101 bonds}, {\tt bends}, {\tt torsions}, and {\tt inversions}. These
163     groupings allow the correct choice of interaction parameters for
164     short-range interactions to be chosen from the definitions in the {\tt
165     forceField}.
166 gezelter 3607
167     All of these groups of {\tt atoms} are brought together in the {\tt
168     molecule}, which is the fundamental structure for setting up and {\sc
169     OpenMD} simulation. {\tt Molecules} contain lists of {\tt atoms}
170     followed by listings of the other atomic groupings ({\tt bonds}, {\tt
171     bends}, {\tt torsions}, {\tt rigidBodies}, and {\tt cutoffGroups})
172     which relate the atoms to one another. Since a {\tt rigidBody} is a
173     collection of atoms that are propagated in fixed relationships to one
174     another, {\sc OpenMD} uses an internal structure called a {\tt
175     StuntDouble} to store information about those objects that can change
176     position {\it independently} during a simulation. That is, an atom
177     that is part of a rigid body is not itself a StuntDouble. In this
178     case, the rigid body is the StuntDouble. However, an atom that is
179     free to move independently {\it is} its own StuntDouble.
180    
181     Simulations often involve heterogeneous collections of molecules. To
182     specify a mixture of {\tt molecule} types, {\sc OpenMD} uses {\tt
183     components}. Even simulations containing only one type of molecule
184     must specify a single {\tt component}.
185    
186     Starting a simulation requires two types of information: {\it
187     meta-data}, which describes the types of objects present in the
188     simulation, and {\it configuration} information, which describes the
189     initial state of these objects. An {\sc OpenMD} file is a single
190     combined file format that describes both of these kinds of data. An
191     {\sc OpenMD} file contains one {\tt $<$MetaData$>$} block and {\it at least
192     one} {\tt $<$Snapshot$>$} block.
193    
194     The language for the {\tt $<$MetaData$>$} block is a C-based syntax that
195     is parsed at the beginning of the simulation. Configuration
196     information is specified for all {\tt integrableObjects} in a {\tt
197     $<$Snapshot$>$} block. Both the {\tt $<$MetaData$>$} and {\tt $<$Snapshot$>$}
198     formats are described in the following sections.
199    
200 gezelter 4105 \begin{code}[caption={[The structure of an {\sc OpenMD} file]
201 gezelter 3607 The basic structure of an {\sc OpenMD} file contains HTML-like tags to
202     define simulation meta-data and subsequent instantaneous configuration
203 gezelter 4105 information. A well-formed {\sc OpenMD} file must contain one {\tt <MetaData>}
204     block and {\it at least one} {\tt <Snapshot>} block. Each
205     {\tt <Snapshot>} is further divided into {\tt <FrameData>} and
206     {\tt <StuntDoubles>} sections.},label={sch:mdFormat}]
207 gezelter 3607 <OpenMD>
208     <MetaData>
209     // see section ~\ref{sec:miscConcepts}~ for details on the formatting
210     // of information contained inside the <MetaData> tags
211     </MetaData>
212     <Snapshot> // An instantaneous configuration
213     <FrameData>
214     // FrameData contains information on the time
215     // stamp, the size of the simulation box, and
216     // the current state of extended system
217     // ensemble variables.
218     </FrameData>
219     <StuntDoubles>
220     // StuntDouble information comprises the
221     // positions, velocities, orientations, and
222     // angular velocities of anything that is
223     // capable of independent motion during
224     // the simulation.
225     </StuntDoubles>
226     </Snapshot>
227     <Snapshot> // Multiple <Snapshot> sections can be
228     </Snapshot> // present in a well-formed OpenMD file
229     <Snapshot> // Further information on <Snapshot> blocks
230     </Snapshot> // can be found in section ~\ref{section:coordFiles}~.
231     </OpenMD>
232 gezelter 4105 \end{code}
233 gezelter 3607
234    
235     \section{OpenMD Files and $<$MetaData$>$ blocks}
236    
237     {\sc OpenMD} uses a HTML-like syntax to separate {\tt $<$MetaData$>$} and
238     {\tt $<$Snapshot$>$} blocks. A C-based syntax is used to parse the {\tt
239     $<$MetaData$>$} blocks at run time. These blocks allow the user to
240     completely describe the system they wish to simulate, as well as
241     tailor {\sc OpenMD}'s behavior during the simulation. {\sc OpenMD}
242     files are typically denoted with the extension {\tt .md} (which can
243     stand for Meta-Data or Molecular Dynamics or Molecule Definition
244     depending on the user's mood). An overview of an {\sc OpenMD} file is
245     shown in Scheme~\ref{sch:mdFormat} and example file is shown in
246     Scheme~\ref{sch:mdExample}.
247    
248 gezelter 4105 \begin{code}[caption={[An example of a complete OpenMD
249 gezelter 3607 file] An example showing a complete OpenMD file.},
250     label={sch:mdExample}]
251     <OpenMD>
252     <MetaData>
253     molecule{
254     name = "Ar";
255     atom[0]{
256     type="Ar";
257     position( 0.0, 0.0, 0.0 );
258     }
259     }
260    
261     component{
262     type = "Ar";
263     nMol = 3;
264     }
265    
266     forceField = "LJ";
267     ensemble = "NVE"; // specify the simulation ensemble
268     dt = 1.0; // the time step for integration
269     runTime = 1e3; // the total simulation run time
270     sampleTime = 100; // trajectory file frequency
271     statusTime = 50; // statistics file frequency
272     </MetaData>
273     <Snapshot>
274     <FrameData>
275     Time: 0
276     Hmat: {{ 28.569, 0, 0 }, { 0, 28.569, 0 }, { 0, 0, 28.569 }}
277     Thermostat: 0 , 0
278     Barostat: {{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }}
279     </FrameData>
280     <StuntDoubles>
281     0 pv 17.5 13.3 12.8 1.181e-03 -1.630e-03 -1.369e-03
282     1 pv -12.8 -14.9 -8.4 -4.440e-04 -2.048e-03 1.130e-03
283     2 pv -10.0 -15.2 -6.5 2.239e-03 -6.310e-03 1.810e-03
284     </StuntDoubles>
285     </Snapshot>
286     </OpenMD>
287 gezelter 4105 \end{code}
288 gezelter 3607
289     Within the {\tt $<$MetaData$>$} block it is necessary to provide a
290     complete description of the molecule before it is actually placed in
291     the simulation. {\sc OpenMD}'s meta-data syntax was originally
292     developed with this goal in mind, and allows for the use of {\it
293     include files} to specify all atoms in a molecular prototype, as well
294     as any bonds, bends, or torsions. Include files allow the user to
295     describe a molecular prototype once, then simply include it into each
296     simulation containing that molecule. Returning to the example in
297     Scheme~\ref{sch:mdExample}, the include file's contents would be
298     Scheme~\ref{sch:mdIncludeExample}, and the new {\sc OpenMD} file would
299     become Scheme~\ref{sch:mdExPrime}.
300    
301 gezelter 4105 \begin{code}[caption={An example molecule definition in an
302 gezelter 3607 include file.},label={sch:mdIncludeExample}]
303     molecule{
304     name = "Ar";
305     atom[0]{
306     type="Ar";
307     position( 0.0, 0.0, 0.0 );
308     }
309     }
310 gezelter 4105 \end{code}
311 gezelter 3607
312 gezelter 4105 \begin{code}[caption={Revised OpenMD input file
313 gezelter 3607 example.},label={sch:mdExPrime}]
314     <OpenMD>
315     <MetaData>
316     #include "argon.md"
317    
318     component{
319     type = "Ar";
320     nMol = 3;
321     }
322    
323     forceField = "LJ";
324     ensemble = "NVE";
325     dt = 1.0;
326     runTime = 1e3;
327     sampleTime = 100;
328     statusTime = 50;
329     </MetaData>
330     </MetaData>
331     <Snapshot>
332     <FrameData>
333     Time: 0
334     Hmat: {{ 28.569, 0, 0 }, { 0, 28.569, 0 }, { 0, 0, 28.569 }}
335     Thermostat: 0 , 0
336     Barostat: {{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }}
337     </FrameData>
338     <StuntDoubles>
339     0 pv 17.5 13.3 12.8 1.181e-03 -1.630e-03 -1.369e-03
340     1 pv -12.8 -14.9 -8.4 -4.440e-04 -2.048e-03 1.130e-03
341     2 pv -10.0 -15.2 -6.5 2.239e-03 -6.310e-03 1.810e-03
342     </StuntDoubles>
343     </Snapshot>
344     </OpenMD>
345 gezelter 4105 \end{code}
346 gezelter 3607
347     \section{\label{section:atomsMolecules}Atoms, Molecules, and other
348     ways of grouping atoms}
349    
350     As mentioned above, the fundamental unit for an {\sc OpenMD} simulation
351     is the {\tt atom}. Atoms can be collected into secondary structures
352     such as {\tt rigidBodies}, {\tt cutoffGroups}, or {\tt molecules}. The
353     {\tt molecule} is a way for {\sc OpenMD} to keep track of the atoms in
354     a simulation in logical manner. Molecular units store the identities
355     of all the atoms and rigid bodies associated with themselves, and they
356     are responsible for the evaluation of their own internal interactions
357     (\emph{i.e.}~bonds, bends, and torsions). Scheme
358     \ref{sch:mdIncludeExample} shows how one creates a molecule in an
359     included meta-data file. The positions of the atoms given in the
360     declaration are relative to the origin of the molecule, and the origin
361     is used when creating a system containing the molecule.
362    
363     One of the features that sets {\sc OpenMD} apart from most of the
364     current molecular simulation packages is the ability to handle rigid
365     body dynamics. Rigid bodies are non-spherical particles or collections
366     of particles (e.g. $\mbox{C}_{60}$) that have a constant internal
367     potential and move collectively.\cite{Goldstein01} They are not
368     included in most simulation packages because of the algorithmic
369     complexity involved in propagating orientational degrees of freedom.
370     Integrators which propagate orientational motion with an acceptable
371     level of energy conservation for molecular dynamics are relatively
372     new inventions.
373    
374     Moving a rigid body involves determination of both the force and
375     torque applied by the surroundings, which directly affect the
376     translational and rotational motion in turn. In order to accumulate
377     the total force on a rigid body, the external forces and torques must
378     first be calculated for all the internal particles. The total force on
379     the rigid body is simply the sum of these external forces.
380     Accumulation of the total torque on the rigid body is more complex
381     than the force because the torque is applied to the center of mass of
382     the rigid body. The space-fixed torque on rigid body $i$ is
383     \begin{equation}
384     \boldsymbol{\tau}_i=
385     \sum_{a}\biggl[(\mathbf{r}_{ia}-\mathbf{r}_i)\times \mathbf{f}_{ia}
386     + \boldsymbol{\tau}_{ia}\biggr],
387     \label{eq:torqueAccumulate}
388     \end{equation}
389     where $\boldsymbol{\tau}_i$ and $\mathbf{r}_i$ are the torque on and
390     position of the center of mass respectively, while $\mathbf{f}_{ia}$,
391     $\mathbf{r}_{ia}$, and $\boldsymbol{\tau}_{ia}$ are the force on,
392     position of, and torque on the component particles of the rigid body.
393    
394     The summation of the total torque is done in the body fixed axis of
395     each rigid body. In order to move between the space fixed and body
396     fixed coordinate axes, parameters describing the orientation must be
397     maintained for each rigid body. At a minimum, the rotation matrix
398     ($\mathsf{A}$) can be described by the three Euler angles ($\phi,
399     \theta,$ and $\psi$), where the elements of $\mathsf{A}$ are composed of
400     trigonometric operations involving $\phi, \theta,$ and
401     $\psi$.\cite{Goldstein01} In order to avoid numerical instabilities
402     inherent in using the Euler angles, the four parameter ``quaternion''
403     scheme is often used. The elements of $\mathsf{A}$ can be expressed as
404     arithmetic operations involving the four quaternions ($q_w, q_x, q_y,$
405     and $q_z$).\cite{Allen87} Use of quaternions also leads to
406     performance enhancements, particularly for very small
407     systems.\cite{Evans77}
408    
409     Rather than use one of the previously stated methods, {\sc OpenMD}
410     utilizes a relatively new scheme that propagates the entire nine
411     parameter rotation matrix. Further discussion on this choice can be
412     found in Sec.~\ref{section:integrate}. An example definition of a
413     rigid body can be seen in Scheme
414     \ref{sch:rigidBody}.
415    
416 gezelter 4105 \begin{code}[caption={[Defining rigid bodies]A sample
417 gezelter 3607 definition of a molecule containing a rigid body and a cutoff
418     group},label={sch:rigidBody}]
419     molecule{
420     name = "TIP3P";
421     atom[0]{
422     type = "O_TIP3P";
423     position( 0.0, 0.0, -0.06556 );
424     }
425     atom[1]{
426     type = "H_TIP3P";
427     position( 0.0, 0.75695, 0.52032 );
428     }
429     atom[2]{
430     type = "H_TIP3P";
431     position( 0.0, -0.75695, 0.52032 );
432     }
433    
434     rigidBody[0]{
435     members(0, 1, 2);
436     }
437    
438     cutoffGroup{
439     members(0, 1, 2);
440     }
441     }
442 gezelter 4105 \end{code}
443 gezelter 3607
444     \section{\label{sec:miscConcepts}Creating a $<$MetaData$>$ block}
445    
446     The actual creation of a {\tt $<$MetaData$>$} block requires several key
447     components. The first part of the file needs to be the declaration of
448     all of the molecule prototypes used in the simulation. This is
449     typically done through included prototype files. Only the molecules
450     actually present in the simulation need to be declared; however, {\sc
451     OpenMD} allows for the declaration of more molecules than are
452     needed. This gives the user the ability to build up a library of
453     commonly used molecules into a single include file.
454    
455     Once all prototypes are declared, the ordering of the rest of the
456     block is less stringent. The molecular composition of the simulation
457     is specified with {\tt component} statements. Each different type of
458     molecule present in the simulation is considered a separate
459     component (an example is shown in
460     Sch.~\ref{sch:mdExPrime}). The component blocks tell {\sc OpenMD} the
461     number of molecules that will be in the simulation, and the order in
462     which the components blocks are declared sets the ordering of the real
463     atoms in the {\tt $<$Snapshot$>$} block as well as in the output files. The
464     remainder of the script then sets the various simulation parameters
465     for the system of interest.
466    
467     The required set of parameters that must be present in all simulations
468     is given in Table~\ref{table:reqParams}. Since the user can use {\sc
469     OpenMD} to perform energy minimizations as well as molecular dynamics
470     simulations, one of the {\tt minimizer} or {\tt ensemble} keywords
471     must be present. The {\tt ensemble} keyword is responsible for
472     selecting the integration method used for the calculation of the
473     equations of motion. An in depth discussion of the various methods
474     available in {\sc OpenMD} can be found in
475     Sec.~\ref{section:mechanics}. The {\tt minimizer} keyword selects
476     which minimization method to use, and more details on the choices of
477     minimizer parameters can be found in
478     Sec.~\ref{section:minimizer}. The {\tt forceField} statement is
479     important for the selection of which forces will be used in the course
480     of the simulation. {\sc OpenMD} supports several force fields, as
481     outlined in Sec.~\ref{section:empiricalEnergy}. The force fields are
482     interchangeable between simulations, with the only requirement being
483     that all atoms needed by the simulation are defined within the
484     selected force field.
485    
486     For molecular dynamics simulations, the time step between force
487     evaluations is set with the {\tt dt} parameter, and {\tt runTime} will
488     set the time length of the simulation. Note, that {\tt runTime} is an
489     absolute time, meaning if the simulation is started at t = 10.0~ns
490     with a {\tt runTime} of 25.0~ns, the simulation will only run for an
491     additional 15.0~ns.
492    
493     For energy minimizations, it is not necessary to specify {\tt dt} or
494     {\tt runTime}.
495    
496     To set the initial positions and velocities of all the integrable
497     objects in the simulation, {\sc OpenMD} will use the last good {\tt
498     $<$Snapshot$>$} block that was found in the startup file that it was
499     called with. If the {\tt useInitalTime} flag is set to {\tt true},
500     the time stamp from this snapshot will also set the initial time stamp
501     for the simulation. Additional parameters are summarized in
502     Table~\ref{table:genParams}.
503    
504     It is important to note the fundamental units in all files which are
505     read and written by {\sc OpenMD}. Energies are in $\mbox{kcal
506     mol}^{-1}$, distances are in $\mbox{\AA}$, times are in $\mbox{fs}$,
507     translational velocities are in $\mbox{\AA~fs}^{-1}$, and masses are
508     in $\mbox{amu}$. Orientational degrees of freedom are described using
509     quaternions (unitless, but $q_w^2 + q_x^2 + q_y^2 + q_z^2 = 1$),
510     body-fixed angular momenta ($\mbox{amu \AA}^{2} \mbox{radians
511     fs}^{-1}$), and body-fixed moments of inertia ($\mbox{amu \AA}^{2}$).
512    
513     \begin{longtable}[c]{ABCD}
514     \caption{Meta-data Keywords: Required Parameters}
515     \\
516     {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
517     \endhead
518     \hline
519     \endfoot
520 skuang 3793 {\tt forceField} & string & Sets the base name for the force field file &
521     OpenMD appends a {\tt .frc} to the end of this to look for a force
522     field file.\\
523 gezelter 3607 {\tt component} & & Defines the molecular components of the system &
524     Every {\tt $<$MetaData$>$} block must have a component statement. \\
525     {\tt minimizer} & string & Chooses a minimizer & Possible minimizers
526     are SD and CG. Either {\tt ensemble} or {\tt minimizer} must be specified. \\
527     {\tt ensemble} & string & Sets the ensemble. & Possible ensembles are
528 gezelter 3709 NVE, NVT, NPTi, NPAT, NPTf, NPTxyz, LD and LangevinHull. Either {\tt ensemble}
529 gezelter 3607 or {\tt minimizer} must be specified. \\
530     {\tt dt} & fs & Sets the time step. & Selection of {\tt dt} should be
531     small enough to sample the fastest motion of the simulation. ({\tt
532     dt} is required for molecular dynamics simulations)\\
533     {\tt runTime} & fs & Sets the time at which the simulation should
534     end. & This is an absolute time, and will end the simulation when the
535     current time meets or exceeds the {\tt runTime}. ({\tt runTime} is
536     required for molecular dynamics simulations)
537     \label{table:reqParams}
538     \end{longtable}
539    
540     \begin{longtable}[c]{ABCD}
541     \caption{Meta-data Keywords: Optional Parameters}
542     \\
543     {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
544     \endhead
545     \hline
546     \endfoot
547     {\tt forceFieldVariant} & string & Sets the name of the variant of the
548     force field. & {\sc eam} has three variants: {\tt u3}, {\tt u6}, and
549     {\tt VC}. \\
550     {\tt forceFieldFileName} & string & Overrides the default force field
551     file name & Each force field has a default file name, and this
552     parameter can override the default file name for the chosen force
553     field. \\
554     {\tt usePeriodicBoundaryConditions} & & & \\
555     & logical & Turns periodic boundary conditions on/off. & Default is true. \\
556     {\tt orthoBoxTolerance} & double & & decides how orthogonal the periodic
557     box must be before we can use cheaper box calculations \\
558     {\tt cutoffRadius} & $\mbox{\AA}$ & Manually sets the cutoff radius &
559     the default value is set by the {\tt cutoffPolicy} \\
560     {\tt cutoffPolicy} & string & one of mix, max, or
561     traditional & the traditional cutoff policy is to set the cutoff
562     radius for all atoms in the system to the same value (governed by the
563     largest atom). mix and max are pair-dependent cutoff
564     methods. \\
565     {\tt skinThickness} & \AA & thickness of the skin for the Verlet
566     neighbor lists & defaults to 1 \AA \\
567     {\tt switchingRadius} & $\mbox{\AA}$ & Manually sets the inner radius
568     for the switching function. & Defaults to 85~\% of the {\tt
569     cutoffRadius}. \\
570     {\tt switchingFunctionType} & & & \\
571     & string & cubic or
572     fifth\_order\_polynomial & Default is cubic. \\
573     {\tt useInitialTime} & logical & Sets whether the initial time is
574     taken from the last $<$Snapshot$>$ in the startup file. & Useful when recovering a simulation from a crashed processor. Default is false. \\
575     {\tt useInitialExtendedSystemState} & & & \\
576     & logical & keep the extended
577     system variables? & Should the extended
578     variables (the thermostat and barostat) be kept from the {\tt $<$Snapshot$>$} block? \\
579     {\tt sampleTime} & fs & Sets the frequency at which the {\tt .dump} file is written. & The default is equal to the {\tt runTime}. \\
580     {\tt resetTime} & fs & Sets the frequency at which the extended system
581     variables are reset to zero & The default is to never reset these
582     variables. \\
583     {\tt statusTime} & fs & Sets the frequency at which the {\tt .stat} file is written. & The default is equal to the {\tt sampleTime}. \\
584     {\tt finalConfig} & string & Sets the name of the final output file. & Useful when stringing simulations together. Defaults to the root name of the initial meta-data file but with an {\tt .eor} extension. \\
585     {\tt compressDumpFile} & logical & & should the {\tt .dump} file be
586     compressed on the fly? \\
587     {\tt statFileFormat} & string & columns to print in the {\tt .stat}
588     file where each column is separated by a pipe ($\mid$) symbol. & (The
589     default is the first eight of these columns in order.) \\
590     & & \multicolumn{2}{p{3.5in}}{Allowed
591     column names are: {\sc time, total\_energy, potential\_energy, kinetic\_energy,
592 gezelter 4101 temperature, pressure, volume, conserved\_quantity, hullvolume, gyrvolume,
593 gezelter 3607 translational\_kinetic, rotational\_kinetic, long\_range\_potential,
594     short\_range\_potential, vanderwaals\_potential,
595 gezelter 4101 electrostatic\_potential, metallic\_potential,
596     hydrogen\_bonding\_potential, bond\_potential, bend\_potential,
597     dihedral\_potential, inversion\_potential, raw\_potential, restraint\_potential,
598     pressure\_tensor, system\_dipole, heatflux, electronic\_temperature}} \\
599 gezelter 3607 {\tt printPressureTensor} & logical & sets whether {\sc OpenMD} will print
600     out the pressure tensor & can be useful for calculations of the bulk
601     modulus \\
602     {\tt electrostaticSummationMethod} & & & \\
603     & string & shifted\_force,
604     shifted\_potential, shifted\_force, or reaction\_field &
605     default is shifted\_force. \\
606     {\tt electrostaticScreeningMethod} & & & \\
607     & string & undamped or damped & default is damped \\
608     {\tt dielectric} & unitless & Sets the dielectric constant for
609     reaction field. & If {\tt electrostaticSummationMethod} is set to {\tt
610     reaction\_field}, then {\tt dielectric} must be set. \\
611     {\tt dampingAlpha} & $\mbox{\AA}^{-1}$ & governs strength of
612     electrostatic damping & defaults to 0.2 $\mbox{\AA}^{-1}$. \\
613     {\tt tempSet} & logical & resample velocities from a Maxwell-Boltzmann
614     distribution set to {\tt targetTemp} & default is false. \\
615     {\tt thermalTime} & fs & how often to perform a {\tt tempSet} &
616     default is never \\
617     {\tt targetTemp} & K & sets the target temperature & no default value \\
618     {\tt tauThermostat} & fs & time constant for Nos\'{e}-Hoover
619     thermostat & times from 1000-10,000 fs are reasonable \\
620     {\tt targetPressure} & atm & sets the target pressure & no default value\\
621     {\tt surfaceTension} & & sets the target surface tension in the x-y
622     plane & no default value \\
623     {\tt tauBarostat} & fs & time constant for the
624     Nos\'{e}-Hoover-Andersen barostat & times from 10,000 to 100,000 fs
625     are reasonable \\
626     {\tt seed } & integer & Sets the seed value for the random number generator. & The seed needs to be at least 9 digits long. The default is to take the seed from the CPU clock. \\
627     \label{table:genParams}
628     \end{longtable}
629    
630    
631     \section{\label{section:coordFiles}$<$Snapshot$>$ Blocks}
632    
633     The standard format for storage of a system's coordinates is the {\tt
634     $<$Snapshot$>$} block , the exact details of which can be seen in
635     Scheme~\ref{sch:dumpFormat}. As all bonding and molecular information
636     is stored in the {\tt $<$MetaData$>$} blocks, the {\tt $<$Snapshot$>$} blocks
637     contain only the coordinates of the objects which move independently
638     during the simulation. It is important to note that {\it not all
639     atoms} are capable of independent motion. Atoms which are part of
640     rigid bodies are not ``integrable objects'' in the equations of
641     motion; the rigid bodies themselves are the integrable objects.
642     Therefore, the coordinate file contains coordinates of all the {\tt
643     integrableObjects} in the system. For systems without rigid bodies,
644     this is simply the coordinates of all the atoms.
645    
646     It is important to note that although the simulation propagates the
647     complete rotation matrix, directional entities are written out using
648     quaternions to save space in the output files.
649    
650 gezelter 4105 \begin{code}[caption={[The format of the {\tt $<$Snapshot$>$} block]
651 gezelter 3607 An example of the format of the {\tt $<$Snapshot$>$} block. There is an
652     initial sub-block called {\tt $<$FrameData$>$} which contains the time
653     stamp, the three column vectors of $\mathsf{H}$, and optional extra
654     information for the extended sytem ensembles. The lines in the {\tt
655     $<$StuntDoubles$>$} sub-block provide information about the instantaneous
656     configuration of each integrable object. For each integrable object,
657     the global index is followed by a short string describing what
658     additional information is present on the line. Atoms with only
659 gezelter 4105 position and velocity information use the {\tt pv} string which must
660 gezelter 3607 then be followed by the position and velocity vectors for that atom.
661 gezelter 4105 Directional atoms and Rigid Bodies typically use the {\tt pvqj} string
662 gezelter 3607 which is followed by position, velocity, quaternions, and
663 gezelter 4105 lastly, body fixed angular momentum for that integrable object.},label={sch:dumpFormat}]
664 gezelter 3607 <Snapshot>
665     <FrameData>
666     Time: 0
667     Hmat: {{ Hxx, Hyx, Hzx }, { Hxy, Hyy, Hzy }, { Hxz, Hyz, Hzz }}
668     Thermostat: 0 , 0
669     Barostat: {{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }}
670     </FrameData>
671     <StuntDoubles>
672     0 pv x y z vx vy vz
673     1 pv x y z vx vy vz
674     2 pvqj x y z vx vy vz qw qx qy qz jx jy jz
675     3 pvqj x y z vx vy vz qw qx qy qz jx jy jz
676     </StuntDoubles>
677     </Snapshot>
678 gezelter 4105 \end{code}
679 gezelter 3607
680     There are three {\sc OpenMD} files that are written using the combined
681     format. They are: the initial startup file (\texttt{.md}), the
682     simulation trajectory file (\texttt{.dump}), and the final coordinates
683     or ``end-of-run'' for the simulation (\texttt{.eor}). The initial
684     startup file is necessary for {\sc OpenMD} to start the simulation with
685     the proper coordinates, and this file must be generated by the user
686     before the simulation run. The trajectory (or ``dump'') file is
687     updated during simulation and is used to store snapshots of the
688     coordinates at regular intervals. The first frame is a duplication of
689     the initial configuration (the last good {\tt $<$Snapshot$>$} in the
690     startup file), and each subsequent frame is appended to the dump file
691     at an interval specified in the meta-data file with the
692     \texttt{sampleTime} flag. The final coordinate file is the
693     ``end-of-run'' file. The \texttt{.eor} file stores the final
694     configuration of the system for a given simulation. The file is
695     updated at the same time as the \texttt{.dump} file, but it only
696     contains the most recent frame. In this way, an \texttt{.eor} file may
697     be used to initialize a second simulation should it be necessary to
698     recover from a crash or power outage. The coordinate files generated
699     by {\sc OpenMD} (both \texttt{.dump} and \texttt{.eor}) all contain the
700     same {\tt $<$MetaData$>$} block as the startup file, so they may be
701     used to start up a new simulation if desired.
702    
703     \section{\label{section:initCoords}Generation of Initial Coordinates}
704    
705     As was stated in Sec.~\ref{section:coordFiles}, a meaningful {\tt
706     $<$Snapshot$>$} block is necessary for specifying for the starting
707     coordinates for a simulation. Since each simulation is different,
708     system creation is left to the end user; however, we have included a
709     few sample programs which make some specialized structures. The {\tt
710     $<$Snapshot$>$} block must index the integrable objects in the correct
711     order. The ordering of the integrable objects relies on the ordering
712     of molecules within the {\tt $<$MetaData$>$} block. {\sc OpenMD}
713     expects the order to comply with the following guidelines:
714     \begin{enumerate}
715     \item All of the molecules of the first declared component are given
716     before proceeding to the molecules of the second component, and so on
717     for all subsequently declared components.
718     \item The ordering of the atoms for each molecule follows the order
719     declared in the molecule's declaration within the model file.
720     \item Only atoms which are not members of a {\tt rigidBody} are
721     included.
722     \item Rigid Body coordinates for a molecule are listed immediately
723     after the the other atoms in a molecule. Some molecules may be
724     entirely rigid, in which case, only the rigid body coordinates are
725     given.
726     \end{enumerate}
727     An example is given in the {\sc OpenMD} file in Scheme~\ref{sch:initEx1}.
728    
729 gezelter 4105 \begin{code}[caption={Example declaration of the
730     $\text{I}_2$ molecule and the HCl molecule in {\tt <MetaData>} and
731     {\tt <Snapshot>} blocks. Note that even though $\text{I}_2$ is
732     declared before HCl, the {\tt <Snapshot>} block follows the order {\it in
733 gezelter 3607 which the components were included}.}, label=sch:initEx1]
734     <OpenMD>
735     <MetaData>
736     molecule{
737     name = "I2";
738 gezelter 3709 atom[0]{ type = "I"; }
739     atom[1]{ type = "I"; }
740     bond{ members( 0, 1); }
741 gezelter 3607 }
742     molecule{
743     name = "HCl"
744 gezelter 3709 atom[0]{ type = "H";}
745     atom[1]{ type = "Cl";}
746     bond{ members( 0, 1); }
747 gezelter 3607 }
748     component{
749     type = "HCl";
750     nMol = 4;
751     }
752     component{
753     type = "I2";
754     nMol = 1;
755     }
756     </MetaData>
757     <Snapshot>
758     <FrameData>
759     Time: 0
760     Hmat: {{ 10.0, 0.0, 0.0 }, { 0.0, 10.0, 0.0 }, { 0.0, 0.0, 10.0 }}
761     </FrameData>
762     <StuntDoubles>
763     0 pv x y z vx vy vz // H from first HCl molecule
764     1 pv x y z vx vy vz // Cl from first HCl molecule
765     2 pv x y z vx vy vz // H from second HCl molecule
766     3 pv x y z vx vy vz // Cl from second HCl molecule
767     4 pv x y z vx vy vz // H from third HCl molecule
768     5 pv x y z vx vy vz // Cl from third HCl molecule
769     6 pv x y z vx vy vz // H from fourth HCl molecule
770     7 pv x y z vx vy vz // Cl from fourth HCl molecule
771     8 pv x y z vx vy vz // First I from I2 molecule
772     9 pv x y z vx vy vz // Second I from I2 molecule
773     </StuntDoubles>
774     </Snapshot>
775     </OpenMD>
776 gezelter 4105 \end{code}
777 gezelter 3607
778     \section{The Statistics File}
779    
780     The last output file generated by {\sc OpenMD} is the statistics
781     file. This file records such statistical quantities as the
782     instantaneous temperature (in $K$), volume (in $\mbox{\AA}^{3}$),
783     pressure (in $\mbox{atm}$), etc. It is written out with the frequency
784     specified in the meta-data file with the
785     \texttt{statusTime} keyword. The file allows the user to observe the
786     system variables as a function of simulation time while the simulation
787     is in progress. One useful function the statistics file serves is to
788     monitor the conserved quantity of a given simulation ensemble,
789     allowing the user to gauge the stability of the integrator. The
790     statistics file is denoted with the \texttt{.stat} file extension.
791    
792 gezelter 4103 \chapter{\label{chapter:forceFields}Force Fields}
793 gezelter 3607
794 gezelter 4101 Like many molecular simulation packages, {\sc OpenMD} splits the
795     potential energy into the short-ranged (bonded) portion and a
796     long-range (non-bonded) potential,
797 gezelter 3607 \begin{equation}
798     V = V_{\mathrm{short-range}} + V_{\mathrm{long-range}}.
799     \end{equation}
800 gezelter 4101 The short-ranged portion includes the bonds, bends, torsions, and
801     inversions which have been defined in the meta-data file for the
802     molecules. The functional forms and parameters for these interactions
803     are defined by the force field which is selected in the MetaData
804     section.
805 gezelter 3607
806 gezelter 4103 \section{\label{section:divisionOfLabor}Separation into Internal and
807     Cross interactions}
808 gezelter 3607
809 gezelter 4103 The classical potential energy function for a system composed of $N$
810     molecules is traditionally written
811 gezelter 3607 \begin{equation}
812 gezelter 4101 V = \sum^{N}_{I=1} V^{I}_{\text{Internal}}
813     + \sum^{N-1}_{I=1} \sum_{J>I} V^{IJ}_{\text{Cross}},
814     \label{eq:totalPotential}
815 gezelter 3607 \end{equation}
816 gezelter 4103 where $V^{I}_{\text{Internal}}$ contains all of the terms internal to
817     molecule $I$ (e.g. bonding, bending, torsional, and inversion terms)
818     and $V^{IJ}_{\text{Cross}}$ contains all intermolecular interactions
819     between molecules $I$ and $J$. For large molecules, the internal
820     potential may also include some non-bonded terms like electrostatic or
821     van der Waals interactions.
822 gezelter 3607
823 gezelter 4101 The types of atoms being simulated, as well as the specific functional
824     forms and parameters of the intra-molecular functions and the
825     long-range potentials are defined by the force field. In the following
826     sections we discuss the stucture of an OpenMD force field file and the
827     specification of blocks that may be present within these files.
828 gezelter 3607
829 gezelter 4101 \section{\label{section:frcFile}Force Field Files}
830 gezelter 3607
831 gezelter 4102 Force field files have a number of ``Blocks'' to delineate different
832 gezelter 4101 types of information. The blocks contain AtomType data, which provide
833     properties belonging to a single AtomType, as well as interaction
834     information which provides information about bonded or non-bonded
835     interactions that cannot be deduced from AtomType information alone.
836     A simple example of a forceField file is shown in scheme
837 gezelter 4102 \ref{sch:frcExample}.
838 gezelter 3607
839 gezelter 4105 \begin{code}[caption={[An example of a complete OpenMD
840 gezelter 4101 force field file for straight-chain united-atom alkanes.] An example
841     showing a complete OpenMD force field for straight-chain united-atom
842     alkanes.}, label={sch:frcExample}]
843     begin Options
844 gezelter 4102 Name = "alkane"
845     end Options
846 gezelter 3607
847 gezelter 4101 begin BaseAtomTypes
848     //name mass
849     C 12.0107
850     end BaseAtomTypes
851    
852     begin AtomTypes
853     //name base mass
854     CH4 C 16.05
855     CH3 C 15.04
856     CH2 C 14.03
857     end AtomTypes
858    
859     begin LennardJonesAtomTypes
860     //name epsilon sigma
861     CH4 0.2941 3.73
862     CH3 0.1947 3.75
863     CH2 0.09140 3.95
864     end LennardJonesAtomTypes
865    
866     begin BondTypes
867     //AT1 AT2 Type r0 k
868     CH3 CH3 Harmonic 1.526 260
869     CH3 CH2 Harmonic 1.526 260
870     CH2 CH2 Harmonic 1.526 260
871     end BondTypes
872    
873     begin BendTypes
874     //AT1 AT2 AT3 Type theta0 k
875     CH3 CH2 CH3 Harmonic 114.0 124.19
876     CH3 CH2 CH2 Harmonic 114.0 124.19
877     CH2 CH2 CH2 Harmonic 114.0 124.19
878     end BendTypes
879    
880     begin TorsionTypes
881     //AT1 AT2 AT3 AT4 Type
882     CH3 CH2 CH2 CH3 Trappe 0.0 0.70544 -0.13549 1.5723
883     CH3 CH2 CH2 CH2 Trappe 0.0 0.70544 -0.13549 1.5723
884     CH2 CH2 CH2 CH2 Trappe 0.0 0.70544 -0.13549 1.5723
885     end TorsionTypes
886 gezelter 4105 \end{code}
887 gezelter 4101
888 gezelter 4103 \section{\label{section:ffOptions}The Options block}
889 gezelter 4101
890     The Options block defines properties governing how the force field
891     interactions are carried out. This block is delineated with the text
892     tags {\tt begin Options} and {\tt end Options}. Most options don't
893     need to be set as they come with fairly sensible default values, but
894     the various keywords and their possible values are given in Scheme
895     \ref{sch:optionsBlock}.
896    
897 gezelter 4105 \begin{code}[caption={[A force field Options block showing default values
898 gezelter 4101 for many force field options.] A force field Options block showing default values
899     for many force field options. Most of these options do not need to be
900     specified if the default values are working.},
901     label={sch:optionsBlock}]
902     begin Options
903     Name = "alkane" // any string
904     vdWtype = "Lennard-Jones"
905     DistanceMixingRule = "arithmetic" // can also be "geometric" or "cubic"
906 gezelter 4103 DistanceType = "sigma" // can also be "Rmin"
907 gezelter 4101 EnergyMixingRule = "geometric" // can also be "arithmetic" or "hhg"
908     EnergyUnitScaling = 1.0
909     MetallicEnergyUnitScaling = 1.0
910     DistanceUnitScaling = 1.0
911     AngleUnitScaling = 1.0
912     TorsionAngleConvention = "180_is_trans" // can also be "0_is_trans"
913     vdW-12-scale = 0.0
914     vdW-13-scale = 0.0
915     vdW-14-scale = 0.0
916     electrostatic-12-scale = 0.0
917     electrostatic-13-scale = 0.0
918     electrostatic-14-scale = 0.0
919     GayBerneMu = 2.0
920     GayBerneNu = 1.0
921     EAMMixingMethod = "Johnson" // can also be "Daw"
922     end Options
923 gezelter 4105 \end{code}
924 gezelter 4101
925 gezelter 4103 \section{\label{section:ffBase}The BaseAtomTypes block}
926 gezelter 4101
927     An AtomType the primary data structure that OpenMD uses to store
928     static data about an atom. Things that belong to AtomType are
929     universal properties (i.e. does this atom have a fixed charge? What
930     is its mass?) Dynamic properties of an atom are not intended to be
931     properties of an atom type. A BaseAtomType can be used to build
932     extended sets of related atom types that all fall back to one
933     particular type. For example, one might want a series of atomTypes
934     that inherit from more basic types:
935     \begin{displaymath}
936     \mathtt{ALA-CA} \rightarrow \mathtt{CT} \rightarrow \mathtt{CSP3} \rightarrow \mathtt{C}
937     \end{displaymath}
938     where for each step to the right, the atomType falls back to more
939     primitive data. That is, the mass could be a property of the {\tt C}
940     type, while Lennard-Jones parameters could be properties of the {\tt
941     CSP3} type. {\tt CT} could have charge information and its own set
942     of Lennard-Jones parameter that override the CSP3 parameters. And the
943     {\tt ALA-CA} type might have specific torsion or charge information
944     that override the lower level types. A BaseAtomType contains only
945     information a primitive name and the mass of this atom type.
946     BaseAtomTypes can also be useful in creating files that can be easily
947     viewed in visualization programs. The {\tt Dump2XYZ} utility has the
948     ability to print out the names of the base atom types for displaying
949     simulations in Jmol or VMD.
950    
951 gezelter 4105 \begin{code}[caption={[A simple example of a BaseAtomTypes
952 gezelter 4102 block.] A simple example of a BaseAtomTypes block.},
953 gezelter 4101 label={sch:baseAtomTypesBlock}]
954     begin BaseAtomTypes
955     //Name mass (amu)
956     H 1.0079
957     O 15.9994
958     Si 28.0855
959     Al 26.981538
960     Mg 24.3050
961     Ca 40.078
962     Fe 55.845
963     Li 6.941
964     Na 22.98977
965     K 39.0983
966     Cs 132.90545
967     Ca 40.078
968     Ba 137.327
969     Cl 35.453
970     end BaseAtomTypes
971 gezelter 4105 \end{code}
972 gezelter 4101
973 gezelter 4103 \section{\label{section:ffAtom}The AtomTypes block}
974 gezelter 4101
975     AtomTypes inherit most properties from BaseAtomTypes, but can override
976     their lower-level properties as well. Scheme \ref{sch:atomTypesBlock}
977     shows an example where multiple types of oxygen atoms can inherit mass
978     from the oxygen base type.
979    
980 gezelter 4105 \begin{code}[caption={[An example of a AtomTypes block.] A
981 gezelter 4102 simple example of an AtomTypes block which
982 gezelter 4101 shows how multiple types can inherit from the same base type.},
983     label={sch:atomTypesBlock}]
984     begin AtomTypes
985     //Name baseatomtype
986     h* H
987     ho H
988     o* O
989     oh O
990     ob O
991     obos O
992     obts O
993     obss O
994     ohs O
995     st Si
996     ao Al
997     at Al
998     mgo Mg
999     mgh Mg
1000     cao Ca
1001     cah Ca
1002     feo Fe
1003     lio Li
1004     end AtomTypes
1005 gezelter 4105 \end{code}
1006 gezelter 4101
1007 gezelter 4103 \section{\label{section:ffDirectionalAtom}The DirectionalAtomTypes
1008 gezelter 4101 block}
1009     DirectionalAtoms have orientational degrees of freedom as well as
1010 gezelter 4102 translation, so moving these atoms requires information about the
1011     moments of inertias in the same way that translational motion requires
1012     mass. For DirectionalAtoms, OpenMD treats the mass distribution with
1013     higher priority than electrostatic distributions; the moment of
1014     inertia tensor, $\overleftrightarrow{\mathsf I}$, should be
1015     diagonalized to obtain body-fixed axes, and the three diagonal moments
1016     should correspond to rotational motion \textit{around} each of these
1017     body-fixed axes. Charge distributions may then result in dipole
1018     vectors that are oriented along a linear combination of the body-axes,
1019     and in quadrupole tensors that are not necessarily diagonal in the
1020     body frame.
1021 gezelter 4101
1022 gezelter 4105 \begin{code}[caption={[An example of a DirectionalAtomTypes block.] A
1023 gezelter 4101 simple example of a DirectionalAtomTypes block.},
1024     label={sch:datomTypesBlock}]
1025     begin DirectionalAtomTypes
1026     //Name I_xx I_yy I_zz (All moments in (amu*Ang^2)
1027     SSD 1.7696 0.6145 1.1550
1028     GBC6H6 88.781 88.781 177.561
1029     GBCH3OH 4.056 20.258 20.999
1030     GBH2O 1.777 0.581 1.196
1031 gezelter 4102 CO2 43.06 43.06 0.0 // single-site model for CO2
1032 gezelter 4101 end DirectionalAtomTypes
1033    
1034 gezelter 4105 \end{code}
1035 gezelter 4101
1036 gezelter 4102 For a DirectionalAtom that represents a linear object, it is
1037     appropriate for one of the moments of inertia to be zero. In this
1038     case, OpenMD identifies that DirectionalAtom as having only 5 degrees
1039     of freedom (three translations and two rotations), and will alter
1040     calculation of temperatures to reflect this.
1041 gezelter 4101
1042 gezelter 4103 \section{\label{section::ffAtomProperties}AtomType properties}
1043     \subsection{\label{section:ffLJ}The LennardJonesAtomTypes block}
1044 gezelter 4102 One of the most basic interatomic interactions implemented in {\sc
1045     OpenMD} is the Lennard-Jones potential, which mimics the van der
1046     Waals interaction at long distances and uses an empirical repulsion at
1047     short distances. The Lennard-Jones potential is given by:
1048 gezelter 3607 \begin{equation}
1049     V_{\text{LJ}}(r_{ij}) =
1050     4\epsilon_{ij} \biggl[
1051     \biggl(\frac{\sigma_{ij}}{r_{ij}}\biggr)^{12}
1052     - \biggl(\frac{\sigma_{ij}}{r_{ij}}\biggr)^{6}
1053     \biggr],
1054     \label{eq:lennardJonesPot}
1055     \end{equation}
1056     where $r_{ij}$ is the distance between particles $i$ and $j$,
1057     $\sigma_{ij}$ scales the length of the interaction, and
1058 gezelter 4101 $\epsilon_{ij}$ scales the well depth of the potential.
1059 gezelter 3607
1060     Interactions between dissimilar particles requires the generation of
1061     cross term parameters for $\sigma$ and $\epsilon$. These parameters
1062 gezelter 4102 are usually determined using the Lorentz-Berthelot mixing
1063 gezelter 3607 rules:\cite{Allen87}
1064     \begin{equation}
1065     \sigma_{ij} = \frac{1}{2}[\sigma_{ii} + \sigma_{jj}],
1066     \label{eq:sigmaMix}
1067     \end{equation}
1068     and
1069     \begin{equation}
1070     \epsilon_{ij} = \sqrt{\epsilon_{ii} \epsilon_{jj}}.
1071     \label{eq:epsilonMix}
1072     \end{equation}
1073    
1074 gezelter 4102 The values of $\sigma_{ii}$ and $\epsilon_{ii}$ are properties of atom
1075     type $i$, and must be specified in a section of the force field file
1076     called the {\tt LennardJonesAtomTypes} block (see listing
1077     \ref{sch:LJatomTypesBlock}). Separate Lennard-Jones interactions
1078     which are not determined by the mixing rules can also be specified in
1079     the {\tt NonbondedInteractionTypes} block (see section
1080     \ref{section:ffNBinteraction}).
1081    
1082 gezelter 4105 \begin{code}[caption={[An example of a LennardJonesAtomTypes block.] A
1083 gezelter 4102 simple example of a LennardJonesAtomTypee block. Units for
1084     $\epsilon$ are kcal / mol and for $\sigma$ are \AA\ .},
1085     label={sch:LJatomTypesBlock}]
1086     begin LennardJonesAtomTypes
1087     //Name epsilon sigma
1088     O_TIP4P 0.1550 3.15365
1089     O_TIP4P-Ew 0.16275 3.16435
1090     O_TIP5P 0.16 3.12
1091     O_TIP5P-E 0.178 3.097
1092     O_SPCE 0.15532 3.16549
1093     O_SPC 0.15532 3.16549
1094     CH4 0.279 3.73
1095     CH3 0.185 3.75
1096     CH2 0.0866 3.95
1097     CH 0.0189 4.68
1098     end LennardJonesAtomTypes
1099 gezelter 4105 \end{code}
1100 gezelter 4102
1101 gezelter 4103 \subsection{\label{section:ffCharge}The ChargeAtomTypes block}
1102 gezelter 4102
1103     In molecular simulations, proper accumulation of the electrostatic
1104     interactions is essential and is one of the most
1105     computationally-demanding tasks. Most common molecular mechanics
1106     force fields represent atomic sites with full or partial charges
1107     protected by Lennard-Jones (short range) interactions. Partial charge
1108     values, $q_i$ are empirical representations of the distribution of
1109     electronic charge in a molecule. This means that nearly every pair
1110     interaction involves a calculation of charge-charge forces. Coupled
1111     with relatively long-ranged $r^{-1}$ decay, the monopole interactions
1112     quickly become the most expensive part of molecular simulations. The
1113     interactions between point charges can be handled via a number of
1114     different algorithms, but Coulomb's law is the fundamental physical
1115     principle governing these interactions,
1116 gezelter 3607 \begin{equation}
1117 gezelter 4102 V_{\text{charge}}(r_{ij}) = \sum_{ij}\frac{q_iq_je^2}{4 \pi \epsilon_0
1118     r_{ij}},
1119     \end{equation}
1120     where $q$ represents the charge on particle $i$ or $j$, and $e$ is the
1121     charge of an electron in Coulombs. $\epsilon_0$ is the permittivity
1122     of free space.
1123    
1124 gezelter 4105 \begin{code}[caption={[An example of a ChargeAtomTypes block.] A
1125 gezelter 4102 simple example of a ChargeAtomTypes block. Units for
1126     charge are in multiples of electron charge.},
1127     label={sch:ChargeAtomTypesBlock}]
1128     begin ChargeAtomTypes
1129     // Name charge
1130     O_TIP3P -0.834
1131     O_SPCE -0.8476
1132     H_TIP3P 0.417
1133     H_TIP4P 0.520
1134     H_SPCE 0.4238
1135     EP_TIP4P -1.040
1136     Na+ 1.0
1137     Cl- -1.0
1138     end ChargeAtomTypes
1139 gezelter 4105 \end{code}
1140 gezelter 4102
1141 gezelter 4103 \subsection{\label{section:ffMultipole}The MultipoleAtomTypes
1142 gezelter 4102 block}
1143     For complex charge distributions that are centered on single sites, it
1144     is convenient to write the total electrostatic potential in terms of
1145     multipole moments,
1146     \begin{equation}
1147     U_{\bf{ab}}(r)=\hat{M}_{\bf a} \hat{M}_{\bf b} \frac{1}{r} \label{kernel}.
1148     \end{equation}
1149     where the multipole operator on site $\bf a$,
1150     \begin{equation}
1151     \hat{M}_{\bf a} = C_{\bf a} - D_{{\bf a}\alpha} \frac{\partial}{\partial r_{\alpha}}
1152     + Q_{{\bf a}\alpha\beta}
1153     \frac{\partial^2}{\partial r_{\alpha} \partial r_{\beta}} + \dots
1154     \end{equation}
1155     Here, the point charge, dipole, and quadrupole for site $\bf a$ are
1156     given by $C_{\bf a}$, $D_{{\bf a}\alpha}$, and $Q_{{\bf
1157 gezelter 4103 a}\alpha\beta}$, respectively. These are the {\it primitive}
1158 gezelter 4102 multipoles. If the site is representing a distribution of charges,
1159     these can be expressed as,
1160     \begin{align}
1161     C_{\bf a} =&\sum_{k \, \text{in \bf a}} q_k , \label{eq:charge} \\
1162     D_{{\bf a}\alpha} =&\sum_{k \, \text{in \bf a}} q_k r_{k\alpha}, \label{eq:dipole}\\
1163     Q_{{\bf a}\alpha\beta} =& \frac{1}{2} \sum_{k \, \text{in \bf a}} q_k
1164     r_{k\alpha} r_{k\beta} . \label{eq:quadrupole}
1165     \end{align}
1166     Note that the definition of the primitive quadrupole here differs from
1167     the standard traceless form, and contains an additional Taylor-series
1168     based factor of $1/2$.
1169    
1170     The details of the multipolar interactions will be given later, but
1171     many readers are familiar with the dipole-dipole potential:
1172     \begin{equation}
1173 gezelter 3607 V_{\text{dipole}}(\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},
1174 gezelter 4102 \boldsymbol{\Omega}_{j}) = \frac{|{\bf D}_i||{\bf D}_j|}{4\pi\epsilon_{0}r_{ij}^{3}} \biggl[
1175 gezelter 3607 \boldsymbol{\hat{u}}_{i} \cdot \boldsymbol{\hat{u}}_{j}
1176     -
1177     3(\boldsymbol{\hat{u}}_i \cdot \hat{\mathbf{r}}_{ij}) %
1178     (\boldsymbol{\hat{u}}_j \cdot \hat{\mathbf{r}}_{ij}) \biggr].
1179     \label{eq:dipolePot}
1180     \end{equation}
1181     Here $\mathbf{r}_{ij}$ is the vector starting at atom $i$ pointing
1182     towards $j$, and $\boldsymbol{\Omega}_i$ and $\boldsymbol{\Omega}_j$
1183     are the orientational degrees of freedom for atoms $i$ and $j$
1184 gezelter 4102 respectively. The magnitude of the dipole moment of atom $i$ is $|{\bf
1185     D}_i|$, $\boldsymbol{\hat{u}}_i$ is the standard unit orientation
1186 gezelter 3607 vector of $\boldsymbol{\Omega}_i$, and $\boldsymbol{\hat{r}}_{ij}$ is
1187     the unit vector pointing along $\mathbf{r}_{ij}$
1188     ($\boldsymbol{\hat{r}}_{ij}=\mathbf{r}_{ij}/|\mathbf{r}_{ij}|$).
1189    
1190 gezelter 4102
1191 gezelter 4105 \begin{code}[caption={[An example of a MultipoleAtomTypes block.] A
1192 gezelter 4102 simple example of a MultipoleAtomTypes block. Dipoles are given in
1193     units of Debyes, and Quadrupole moments are given in units of Debye
1194     \AA~(or $10^{-26} \mathrm{~esu~cm}^2$)},
1195     label={sch:MultipoleAtomTypesBlock}]
1196     begin MultipoleAtomTypes
1197     // Euler angles are given in zxz convention in units of degrees.
1198     //
1199     // point dipoles:
1200     // name d phi theta psi dipole_moment
1201     DIP d 0.0 0.0 0.0 1.91 // dipole points along z-body axis
1202     //
1203     // point quadrupoles:
1204     // name q phi theta psi Qxx Qyy Qzz
1205     CO2 q 0.0 0.0 0.0 0.0 0.0 -0.430592 //quadrupole tensor has zz element
1206     //
1207     // Atoms with both dipole and quadrupole moments:
1208     // name dq phi theta psi dipole_moment Qxx Qyy Qzz
1209     SSD dq 0.0 0.0 0.0 2.35 -1.682 1.762 -0.08
1210     end MultipoleAtomTypes
1211 gezelter 4105 \end{code}
1212 gezelter 4102
1213     Specifying a MultipoleAtomType requires declaring how the
1214     electrostatic frame for the site is rotated relative to the body-fixed
1215     axes for that atom. The Euler angles $(\phi, \theta, \psi)$ for this
1216     rotation must be given, and then the dipole, quadrupole, or all of
1217     these moments are specified in the electrostatic frame. In OpenMD,
1218     the Euler angles are specified in the $zxz$ convention and are entered
1219     in units of degrees. Dipole moments are entered in units of Debye,
1220     and Quadrupole moments in units of Debye \AA.
1221    
1222 gezelter 4103 \subsection{\label{section:ffGB}The FluctuatingChargeAtomTypes block}
1223     %\subsubsection{\label{section:ffPol}The PolarizableAtomTypes block}
1224 gezelter 4102
1225 gezelter 4103 \subsection{\label{section:ffGB}The GayBerneAtomTypes block}
1226    
1227 gezelter 4102 The Gay-Berne potential has been widely used in the liquid crystal
1228 gezelter 4103 community to describe anisotropic phase
1229 gezelter 4102 behavior.~\cite{Gay:1981yu,Berne:1972pb,Kushick:1976xy,Luckhurst:1990fy,Cleaver:1996rt}
1230     The form of the Gay-Berne potential implemented in OpenMD was
1231     generalized by Cleaver {\it et al.} and is appropriate for dissimilar
1232 gezelter 4103 uniaxial ellipsoids.\cite{Cleaver:1996rt} The potential is constructed
1233     in the familiar form of the Lennard-Jones function using
1234 gezelter 4102 orientation-dependent $\sigma$ and $\epsilon$ parameters,
1235     \begin{equation*}
1236     V_{ij}({{\bf \hat u}_i}, {{\bf \hat u}_j}, {{\bf \hat
1237     r}_{ij}}) = 4\epsilon ({{\bf \hat u}_i}, {{\bf \hat u}_j},
1238     {{\bf \hat r}_{ij}})\left[\left(\frac{\sigma_0}{r_{ij}-\sigma({{\bf \hat u
1239     }_i},
1240     {{\bf \hat u}_j}, {{\bf \hat r}_{ij}})+\sigma_0}\right)^{12}
1241     -\left(\frac{\sigma_0}{r_{ij}-\sigma({{\bf \hat u}_i}, {{\bf \hat u}_j},
1242     {{\bf \hat r}_{ij}})+\sigma_0}\right)^6\right]
1243     \label{eq:gb}
1244     \end{equation*}
1245    
1246     The range $(\sigma({\bf \hat{u}}_{i},{\bf \hat{u}}_{j},{\bf
1247     \hat{r}}_{ij}))$, and strength $(\epsilon({\bf \hat{u}}_{i},{\bf
1248     \hat{u}}_{j},{\bf \hat{r}}_{ij}))$ parameters
1249     are dependent on the relative orientations of the two ellipsoids (${\bf
1250     \hat{u}}_{i},{\bf \hat{u}}_{j}$) as well as the direction of the
1251     inter-ellipsoid separation (${\bf \hat{r}}_{ij}$). The shape and
1252     attractiveness of each ellipsoid is governed by a relatively small set
1253     of parameters:
1254     \begin{itemize}
1255     \item $d$: range parameter for the side-by-side (S) and cross (X) configurations
1256     \item $l$: range parameter for the end-to-end (E) configuration
1257     \item $\epsilon_X$: well-depth parameter for the cross (X) configuration
1258     \item $\epsilon_S$: well-depth parameter for the side-by-side (S) configuration
1259     \item $\epsilon_E$: well depth parameter for the end-to-end (E) configuration
1260     \item $dw$: The ``softness'' of the potential
1261     \end{itemize}
1262     Additionally, there are two universal paramters to govern the overall
1263     importance of the purely orientational ($\nu$) and the mixed
1264     orientational / translational ($\mu$) parts of strength of the
1265     interactions. These parameters have default or ``canonical'' values,
1266     but may be changed as a force field option:
1267     \begin{itemize}
1268     \item $\nu$: purely orientational part : defaults to 1
1269     \item $\mu$: mixed orientational / translational part : defaults to
1270     2
1271     \end{itemize}
1272     Further details of the potential are given
1273     elsewhere,\cite{Luckhurst:1990fy,Golubkov06,SunX._jp0762020} and an
1274     excellent overview of the computational methods that can be used to
1275     efficiently compute forces and torques for this potential can be found
1276     in Ref. \citealp{Golubkov06}
1277    
1278 gezelter 4105 \begin{code}[caption={[An example of a GayBerneAtomTypes block.] A
1279 gezelter 4102 simple example of a GayBerneAtomTypes block. Distances ($d$ and $l$)
1280     are given in \AA\ and energies ($\epsilon_X, \epsilon_S, \epsilon_E$)
1281     are in units of kcal/mol. $dw$ is unitless.},
1282     label={sch:GayBerneAtomTypes}]
1283     begin GayBerneAtomTypes
1284     //Name d l eps_X eps_S eps_E dw
1285     GBlinear 2.8104 9.993 0.774729 0.774729 0.116839 1.0
1286     GBC6H6 4.65 2.03 0.540 0.540 1.9818 0.6
1287     GBCH3OH 2.55 3.18 0.542 0.542 0.55826 1.0
1288     end GayBerneAtomTypes
1289 gezelter 4105 \end{code}
1290 gezelter 4102
1291 gezelter 4103 \subsection{\label{section:ffSticky}The StickyAtomTypes block}
1292 gezelter 3607
1293 gezelter 4102 One of the solvents that can be simulated by {\sc OpenMD} is the
1294     extended Soft Sticky Dipole (SSD/E) water model.\cite{fennell04} The
1295     original SSD was developed by Ichiye \emph{et
1296     al.}\cite{liu96:new_model} as a modified form of the hard-sphere
1297     water model proposed by Bratko, Blum, and
1298 gezelter 3607 Luzar.\cite{Bratko85,Bratko95} It consists of a single point dipole
1299     with a Lennard-Jones core and a sticky potential that directs the
1300     particles to assume the proper hydrogen bond orientation in the first
1301     solvation shell. Thus, the interaction between two SSD water molecules
1302     \emph{i} and \emph{j} is given by the potential
1303     \begin{equation}
1304     V_{ij} =
1305     V_{ij}^{LJ} (r_{ij})\ + V_{ij}^{dp}
1306     (\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)\ +
1307     V_{ij}^{sp}
1308     (\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j),
1309     \label{eq:ssdPot}
1310     \end{equation}
1311     where the $\mathbf{r}_{ij}$ is the position vector between molecules
1312     \emph{i} and \emph{j} with magnitude equal to the distance $r_{ij}$, and
1313     $\boldsymbol{\Omega}_i$ and $\boldsymbol{\Omega}_j$ represent the
1314     orientations of the respective molecules. The Lennard-Jones and dipole
1315     parts of the potential are given by equations \ref{eq:lennardJonesPot}
1316     and \ref{eq:dipolePot} respectively. The sticky part is described by
1317     the following,
1318     \begin{equation}
1319     u_{ij}^{sp}(\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)=
1320     \frac{\nu_0}{2}[s(r_{ij})w(\mathbf{r}_{ij},
1321     \boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j) +
1322     s^\prime(r_{ij})w^\prime(\mathbf{r}_{ij},
1323     \boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)]\ ,
1324     \label{eq:stickyPot}
1325     \end{equation}
1326     where $\nu_0$ is a strength parameter for the sticky potential, and
1327     $s$ and $s^\prime$ are cubic switching functions which turn off the
1328     sticky interaction beyond the first solvation shell. The $w$ function
1329     can be thought of as an attractive potential with tetrahedral
1330     geometry:
1331     \begin{equation}
1332     w({\bf r}_{ij},{\bf \Omega}_i,{\bf \Omega}_j)=
1333     \sin\theta_{ij}\sin2\theta_{ij}\cos2\phi_{ij},
1334     \label{eq:stickyW}
1335     \end{equation}
1336     while the $w^\prime$ function counters the normal aligned and
1337     anti-aligned structures favored by point dipoles:
1338     \begin{equation}
1339     w^\prime({\bf r}_{ij},{\bf \Omega}_i,{\bf \Omega}_j)=
1340     (\cos\theta_{ij}-0.6)^2(\cos\theta_{ij}+0.8)^2-w^0,
1341     \label{eq:stickyWprime}
1342     \end{equation}
1343     It should be noted that $w$ is proportional to the sum of the $Y_3^2$
1344     and $Y_3^{-2}$ spherical harmonics (a linear combination which
1345     enhances the tetrahedral geometry for hydrogen bonded structures),
1346     while $w^\prime$ is a purely empirical function. A more detailed
1347     description of the functional parts and variables in this potential
1348     can be found in the original SSD
1349     articles.\cite{liu96:new_model,liu96:monte_carlo,chandra99:ssd_md,Ichiye03}
1350    
1351     \begin{figure}
1352     \centering
1353     \includegraphics[width=\linewidth]{waterAngle.pdf}
1354     \caption[Coordinate definition for the SSD/E water model]{Coordinates
1355     for the interaction between two SSD/E water molecules. $\theta_{ij}$
1356     is the angle that $r_{ij}$ makes with the $\hat{z}$ vector in the
1357     body-fixed frame for molecule $i$. The $\hat{z}$ vector bisects the
1358     HOH angle in each water molecule. }
1359     \label{fig:ssd}
1360     \end{figure}
1361    
1362     Since SSD/E is a single-point {\it dipolar} model, the force
1363     calculations are simplified significantly relative to the standard
1364     {\it charged} multi-point models. In the original Monte Carlo
1365     simulations using this model, Ichiye {\it et al.} reported that using
1366     SSD decreased computer time by a factor of 6-7 compared to other
1367     models.\cite{liu96:new_model} What is most impressive is that these
1368     savings did not come at the expense of accurate depiction of the
1369     liquid state properties. Indeed, SSD/E maintains reasonable agreement
1370     with the Head-Gordon diffraction data for the structural features of
1371     liquid water.\cite{hura00,liu96:new_model} Additionally, the dynamical
1372     properties exhibited by SSD/E agree with experiment better than those
1373     of more computationally expensive models (like TIP3P and
1374     SPC/E).\cite{chandra99:ssd_md} The combination of speed and accurate
1375     depiction of solvent properties makes SSD/E a very attractive model
1376     for the simulation of large scale biochemical simulations.
1377    
1378     Recent constant pressure simulations revealed issues in the original
1379     SSD model that led to lower than expected densities at all target
1380 gezelter 4102 pressures,\cite{Ichiye03,fennell04} so variants on the sticky
1381     potential can be specified by using one of a number of substitute atom
1382     types (see listing \ref{sch:StickyAtomTypes}). A table of the
1383     parameter values and the drawbacks and benefits of the different
1384     density corrected SSD models can be found in
1385     reference~\citealp{fennell04}.
1386 gezelter 3607
1387 gezelter 4105 \begin{code}[caption={[An example of a StickyAtomTypes block.] A
1388 gezelter 4102 simple example of a StickyAtomTypes block. Distances ($r_l$, $r_u$,
1389     $r_{l}'$ and $r_{u}'$) are given in \AA\ and energies ($v_0, v_{0}'$)
1390     are in units of kcal/mol. $w_0$ is unitless.},
1391     label={sch:StickyAtomTypes}]
1392     begin StickyAtomTypes
1393     //name w0 v0 (kcal/mol) v0p rl (Ang) ru rlp rup
1394     SSD_E 0.07715 3.90 3.90 2.40 3.80 2.75 3.35
1395     SSD_RF 0.07715 3.90 3.90 2.40 3.80 2.75 3.35
1396     SSD 0.07715 3.7284 3.7284 2.75 3.35 2.75 4.0
1397     SSD1 0.07715 3.6613 3.6613 2.75 3.35 2.75 4.0
1398     end StickyAtomTypes
1399 gezelter 4105 \end{code}
1400 gezelter 3607
1401 gezelter 4103 \section{\label{section::ffMetals}Metallic Atom Types}
1402 gezelter 4102
1403     {\sc OpenMD} implements a number of related potentials that describe
1404     bonding in transition metals. These potentials have an attractive
1405     interaction which models ``Embedding'' a positively charged
1406     pseudo-atom core in the electron density due to the free valance
1407     ``sea'' of electrons created by the surrounding atoms in the system.
1408     A pairwise part of the potential (which is primarily repulsive)
1409     describes the interaction of the positively charged metal core ions
1410     with one another. These potentials have the form:
1411 gezelter 3607 \begin{equation}
1412     V = \sum_{i} F_{i}\left[\rho_{i}\right] + \sum_{i} \sum_{j \neq i}
1413     \phi_{ij}({\bf r}_{ij})
1414     \end{equation}
1415     where $F_{i} $ is an embedding functional that approximates the energy
1416     required to embed a positively-charged core ion $i$ into a linear
1417     superposition of spherically averaged atomic electron densities given
1418     by $\rho_{i}$,
1419     \begin{equation}
1420     \rho_{i} = \sum_{j \neq i} f_{j}({\bf r}_{ij}),
1421     \end{equation}
1422     Since the density at site $i$ ($\rho_i$) must be computed before the
1423     embedding functional can be evaluated, {\sc eam} and the related
1424     transition metal potentials require two loops through the atom pairs
1425     to compute the inter-atomic forces.
1426    
1427 gezelter 4102 The pairwise portion of the potential, $\phi_{ij}$, is usually a
1428     repulsive interaction between atoms $i$ and $j$.
1429 gezelter 3607
1430 gezelter 4103 \subsection{\label{section:ffEAM}The EAMAtomTypes block}
1431 gezelter 4102 The Embedded Atom Method ({\sc eam}) is one of the most widely-used
1432     potentials for transition
1433     metals.~\cite{Finnis84,Ercolessi88,Chen90,Qi99,Ercolessi02,Daw84,FBD86,johnson89,Lu97}
1434     It has been widely adopted in the materials science community and a
1435     good review of {\sc eam} and other formulations of metallic potentials
1436     was given by Voter.\cite{Voter:95}
1437    
1438     In the original formulation of {\sc eam}\cite{Daw84}, the pair
1439     potential, $\phi_{ij}$ was an entirely repulsive term; however later
1440     refinements to {\sc eam} allowed for more general forms for
1441     $\phi$.\cite{Daw89} The effective cutoff distance, $r_{{\text cut}}$
1442     is the distance at which the values of $f(r)$ and $\phi(r)$ drop to
1443     zero for all atoms present in the simulation. In practice, this
1444     distance is fairly small, limiting the summations in the {\sc eam}
1445     equation to the few dozen atoms surrounding atom $i$ for both the
1446     density $\rho$ and pairwise $\phi$ interactions.
1447    
1448     In computing forces for alloys, OpenMD uses mixing rules outlined by
1449     Johnson~\cite{johnson89} to compute the heterogenous pair potential,
1450 gezelter 3607 \begin{equation}
1451     \label{eq:johnson}
1452     \phi_{ab}(r)=\frac{1}{2}\left(
1453     \frac{f_{b}(r)}{f_{a}(r)}\phi_{aa}(r)+
1454     \frac{f_{a}(r)}{f_{b}(r)}\phi_{bb}(r)
1455     \right).
1456     \end{equation}
1457     No mixing rule is needed for the densities, since the density at site
1458     $i$ is simply the linear sum of density contributions of all the other
1459     atoms.
1460    
1461     The {\sc eam} force field illustrates an additional feature of {\sc
1462     OpenMD}. Foiles, Baskes and Daw fit {\sc eam} potentials for Cu, Ag,
1463     Au, Ni, Pd, Pt and alloys of these metals.\cite{FBD86} These fits are
1464     included in {\sc OpenMD} as the {\tt u3} variant of the {\sc eam} force
1465     field. Voter and Chen reparamaterized a set of {\sc eam} functions
1466     which do a better job of predicting melting points.\cite{Voter:87}
1467     These functions are included in {\sc OpenMD} as the {\tt VC} variant of
1468     the {\sc eam} force field. An additional set of functions (the
1469     ``Universal 6'' functions) are included in {\sc OpenMD} as the {\tt u6}
1470     variant of {\sc eam}. For example, to specify the Voter-Chen variant
1471     of the {\sc eam} force field, the user would add the {\tt
1472     forceFieldVariant = "VC";} line to the meta-data file.
1473    
1474     The potential files used by the {\sc eam} force field are in the
1475     standard {\tt funcfl} format, which is the format utilized by a number
1476     of other codes (e.g. ParaDyn~\cite{Paradyn}, {\sc dynamo 86}). It
1477     should be noted that the energy units in these files are in eV, not
1478     $\mbox{kcal mol}^{-1}$ as in the rest of the {\sc OpenMD} force field
1479     files.
1480    
1481 gezelter 4105 \begin{code}[caption={[An example of a EAMAtomTypes block.] A
1482 gezelter 4102 simple example of a EAMAtomTypes block. Here the only data provided is
1483     the name of a {\tt funcfl} file which contains the raw data for spline
1484     interpolations for the density, functional, and pair potential.},
1485     label={sch:EAMAtomTypes}]
1486     begin EAMAtomTypes
1487     Au Au.u3.funcfl
1488     Ag Ag.u3.funcfl
1489     Cu Cu.u3.funcfl
1490     Ni Ni.u3.funcfl
1491     Pd Pd.u3.funcfl
1492     Pt Pt.u3.funcfl
1493     end EAMAtomTypes
1494 gezelter 4105 \end{code}
1495 gezelter 4102
1496 gezelter 4103 \subsection{\label{section:ffSC}The SuttonChenAtomTypes block}
1497 gezelter 4102
1498 gezelter 3607 The Sutton-Chen ({\sc sc})~\cite{Chen90} potential has been used to
1499 gezelter 4102 study a wide range of phenomena in metals. Although it has the same
1500 gezelter 4103 basic form as the {\sc eam} potential, the Sutton-Chen model requires
1501     a simpler set of parameters,
1502 gezelter 3607 \begin{equation}
1503     \label{eq:SCP1}
1504     U_{tot}=\sum _{i}\left[ \frac{1}{2}\sum _{j\neq
1505 gezelter 4102 i}\epsilon_{ij}V^{pair}_{ij}(r_{ij})-c_{i}\epsilon_{ii}\sqrt{\rho_{i}}\right] ,
1506 gezelter 3607 \end{equation}
1507     where $V^{pair}_{ij}$ and $\rho_{i}$ are given by
1508     \begin{equation}
1509     \label{eq:SCP2}
1510     V^{pair}_{ij}(r)=\left(
1511 gezelter 4102 \frac{\alpha_{ij}}{r_{ij}}\right)^{n_{ij}} \hspace{1in} \rho_{i}=\sum_{j\neq i}\left(
1512 gezelter 3607 \frac{\alpha_{ij}}{r_{ij}}\right) ^{m_{ij}}
1513     \end{equation}
1514    
1515     $V^{pair}_{ij}$ is a repulsive pairwise potential that accounts for
1516     interactions of the pseudo-atom cores. The $\sqrt{\rho_i}$ term in
1517     Eq. (\ref{eq:SCP1}) is an attractive many-body potential that models
1518     the interactions between the valence electrons and the cores of the
1519 gezelter 4102 pseudo-atoms. $\epsilon_{ij}$, $\epsilon_{ii}$, $c_i$ and
1520     $\alpha_{ij}$ are parameters used to tune the potential for different
1521     transition metals.
1522 gezelter 3607
1523     The {\sc sc} potential form has also been parameterized by Qi {\it et
1524     al.}\cite{Qi99} These parameters were obtained via empirical and {\it
1525     ab initio} calculations to match structural features of the FCC
1526 gezelter 4102 crystal. Interested readers are encouraged to consult reference
1527     \citealp{Qi99} for further details.
1528 gezelter 3607
1529 gezelter 4105 \begin{code}[caption={[An example of a SCAtomTypes block.] A
1530 gezelter 4102 simple example of a SCAtomTypes block. Distances ($\alpha$)
1531     are given in \AA\ and energies ($\epsilon$) are (by convention) given in
1532     units of eV. These units must be specified in the {\tt Options} block
1533     using the keyword {\tt MetallicEnergyUnitScaling}. Without this {\tt
1534     Options} keyword, the default units for $\epsilon$ are kcal/mol. The
1535     other parameters, $m$, $n$, and $c$ are unitless.},
1536     label={sch:SCAtomTypes}]
1537     begin SCAtomTypes
1538     // Name epsilon(eV) c m n alpha(angstroms)
1539     Ni 0.0073767 84.745 5.0 10.0 3.5157
1540     Cu 0.0057921 84.843 5.0 10.0 3.6030
1541     Rh 0.0024612 305.499 5.0 13.0 3.7984
1542     Pd 0.0032864 148.205 6.0 12.0 3.8813
1543     Ag 0.0039450 96.524 6.0 11.0 4.0691
1544     Ir 0.0037674 224.815 6.0 13.0 3.8344
1545     Pt 0.0097894 71.336 7.0 11.0 3.9163
1546     Au 0.0078052 53.581 8.0 11.0 4.0651
1547     Au2 0.0078052 53.581 8.0 11.0 4.0651
1548     end SCAtomTypes
1549 gezelter 4105 \end{code}
1550 gezelter 4102
1551 gezelter 4103 \section{\label{section::ffShortRange}Short Range Interactions}
1552     The internal structure of a molecule is usually specified in terms of
1553     a set of ``bonded'' terms in the potential energy function for
1554     molecule $I$,
1555     \begin{align*}
1556     V^{I}_{\text{Internal}} = &
1557     \sum_{r_{ij} \in I} V_{\text{bond}}(r_{ij})
1558     + \sum_{\theta_{ijk} \in I} V_{\text{bend}}(\theta_{ijk})
1559     + \sum_{\phi_{ijkl} \in I} V_{\text{torsion}}(\phi_{ijkl})
1560     + \sum_{\omega_{ijkl} \in I} V_{\text{inversion}}(\omega_{ijkl}) \\
1561     & + \sum_{i \in I} \sum_{(j>i+4) \in I}
1562     \biggl[ V_{\text{dispersion}}(r_{ij}) + V_{\text{electrostatic}}
1563     (\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},\boldsymbol{\Omega}_{j})
1564     \biggr].
1565     \label{eq:internalPotential}
1566     \end{align*}
1567     Here $V_{\text{bond}}, V_{\text{bend}},
1568     V_{\text{torsion}},\mathrm{~and~} V_{\text{inversion}}$ represent the
1569     bond, bend, torsion, and inversion potentials for all
1570     topologically-connected sets of atoms within the molecule. Bonds are
1571     the primary way of specifying how the atoms are connected together to
1572     form the molecule (i.e. they define the molecular topology). The
1573     other short-range interactions may be specified explicitly in the
1574     molecule definition, or they may be deduced from bonding information.
1575     For example, bends can be implicitly deduced from two bonds which
1576     share an atom. Torsions can be deduced from two bends that share a
1577     bond. Inversion potentials are utilized primarily to enforce
1578     planarity around $sp^2$-hybridized sites, and these are specified with
1579     central atoms and satellites (or an atom with bonds to exactly three
1580     satellites). Non-bonded interactions are usually excluded for atom
1581     pairs that are involved in the same bond, bend, or torsion, but all
1582     other atom pairs are included in the standard non-bonded interactions.
1583    
1584     Bond lengths, angles, and torsions (dihedrals) are ``natural''
1585     coordinates to treat molecular motion, as it is usually in these
1586     coordinates that most chemists understand the behavior of molecules.
1587     The bond lengths and angles are often considered ``hard'' degrees of
1588     freedom. That is, we can't deform them very much without a
1589     significant energetic penalty. On the other hand, dihedral angles or
1590     torsions are ``soft'' and typically undergo significant deformation
1591     under normal conditions.
1592    
1593     \subsection{\label{section:ffBond}The BondTypes block}
1594    
1595     Bonds are the primary way to specify how the atoms are connected
1596     together to form the molecule. In general, bonds exert strong
1597     restoring forces to keep the molecule compact. The bond energy
1598     functions are relatively simple functions of the distance between two
1599     atomic sites,
1600 gezelter 4101 \begin{equation}
1601 gezelter 4103 b = \left| \vec{r}_{ij} \right| = \sqrt{(x_j - x_i)^2 + (y_j - y_i)^2
1602     + (z_j - z_i)^2}.
1603     \end{equation}
1604     All BondTypes must specify two AtomType names ($i$ and $j$) that
1605     describe when that bond should be applied, as well as an equilibrium
1606     bond length, $b_{ij}^0$, in units of \AA. The most common forms for
1607     bonding potentials are {\tt Harmonic} bonds,
1608     \begin{equation}
1609     V_{\text{bond}}(b) = \frac{k_{ij}}{2} \left(b -
1610     b_{ij}^0 \right)^2
1611 gezelter 4101 \end{equation}
1612 gezelter 4103 and {\tt Morse} bonds,
1613     \begin{equation}
1614     V_{\text{bond}}(b) = D_{ij} \left[ 1 - e^{-\beta_{ij} (b - b_{ij}^0)} \right]^2
1615     \end{equation}
1616 gezelter 4101
1617 gezelter 4104 \begin{figure}[h]
1618     \centering
1619     \includegraphics[width=2.5in]{bond.pdf}
1620     \caption[Bond coordinates]{The coordinate describing a
1621     a bond between atoms $i$ and $j$ is $|r_{ij}|$, the length of the
1622     $\vec{r}_{ij}$ vector. }
1623     \label{fig:bond}
1624     \end{figure}
1625    
1626 gezelter 4103 OpenMD can also simulate some less common types of bond potentials,
1627     including {\tt Fixed} bonds (which are constrained to be at a
1628     specified bond length),
1629 gezelter 4101 \begin{equation}
1630 gezelter 4103 V_{\text{bond}}(b) = 0.
1631 gezelter 4101 \end{equation}
1632 gezelter 4103 {\tt Cubic} bonds include terms to model anharmonicity,
1633 gezelter 4101 \begin{equation}
1634 gezelter 4103 V_{\text{bond}}(b) = K_3 (b - b_{ij}^0)^3 + K_2 (b - b_{ij}^0)^2 + K_1 (b - b_{ij}^0) + K_0,
1635 gezelter 4101 \end{equation}
1636 gezelter 4103 and {\tt Quartic} bonds, include another term in the Taylor
1637     expansion around $b_{ij}^0$,
1638 gezelter 4101 \begin{equation}
1639 gezelter 4103 V_{\text{bond}}(b) = K_4 (b - b_{ij}^0)^4 + K_3 (b - b_{ij}^0)^3 +
1640     K_2 (b - b_{ij}^0)^2 + K_1 (b - b_{ij}^0) + K_0,
1641 gezelter 4101 \end{equation}
1642 gezelter 4103 can also be simulated. Note that the factor of $1/2$ that is included
1643     in the {\tt Harmonic} bond type force constant is {\it not} present in
1644     either the {\tt Cubic} or {\tt Quartic} bond types.
1645 gezelter 4101
1646 gezelter 4103 {\tt Polynomial} bonds which can have any number of terms,
1647     \begin{equation}
1648     V_{\text{bond}}(b) = \sum_n K_n (b - b_{ij}^0)^n.
1649     \end{equation}
1650     can also be specified by giving a sequence of integer ($n$) and force
1651     constant ($K_n$) pairs.
1652 gezelter 4101
1653 gezelter 4103 The order of terms in the BondTypes block is:
1654     \begin{itemize}
1655     \item {\tt AtomType} 1
1656     \item {\tt AtomType} 2
1657     \item {\tt BondType} (one of {\tt Harmonic}, {\tt Morse}, {\tt Fixed}, {\tt
1658     Cubic}, {\tt Quartic}, or {\tt Polynomial})
1659     \item $b_{ij}^0$, the equilibrium bond length in \AA
1660     \item any other parameters required by the {\tt BondType}
1661     \end{itemize}
1662 gezelter 4101
1663 gezelter 4105 \begin{code}[caption={[An example of a BondTypes block.] A
1664 gezelter 4103 simple example of a BondTypes block. Distances ($b_0$)
1665     are given in \AA\ and force constants are given in
1666     units so that when multiplied by the correct power of distance they
1667     return energies in kcal/mol. For example $k$ for a Harmonic bond is
1668     in units of kcal/mol/\AA$^2$.},
1669     label={sch:BondTypes}]
1670     begin BondTypes
1671     //Atom1 Atom2 Harmonic b0 k (kcal/mol/A^2)
1672     CH2 CH2 Harmonic 1.526 260
1673     //Atom1 Atom2 Morse b0 D beta (A^-1)
1674     CN NC Morse 1.157437 212.95 2.5802
1675     //Atom1 Atom2 Fixed b0
1676     CT HC Fixed 1.09
1677     //Atom1 Atom2 Cubic b0 K3 K2 K1 K0
1678     //Atom1 Atom2 Quartic b0 K4 K3 K2 K1 K0
1679     //Atom1 Atom2 Polynomial b0 n Kn [m Km]
1680     end BondTypes
1681 gezelter 4105 \end{code}
1682 gezelter 4101
1683 gezelter 4103 There are advantages and disadvantages of all of the different types
1684     of bonds, but specific simulation tasks may call for specific
1685     behaviors.
1686 gezelter 4101
1687 gezelter 4103 \subsection{\label{section:ffBend}The BendTypes block}
1688     The equilibrium geometries and energy functions for bending motions in
1689     a molecule are strongly dependent on the bonding environment of the
1690     central atomic site. For example, different types of hybridized
1691     carbon centers require different bending angles and force constants to
1692     describe the local geometry.
1693    
1694     The bending potential energy functions used in most force fields are
1695     often simple functions of the angle between two bonds,
1696 gezelter 4101 \begin{equation}
1697 gezelter 4104 \theta_{ijk} = \cos^{-1} \left(\frac{\vec{r}_{ji} \cdot
1698     \vec{r}_{jk}}{\left| \vec{r}_{ji} \right| \left| \vec{r}_{jk}
1699 gezelter 4103 \right|} \right)
1700     \end{equation}
1701     Here atom $j$ is the central atom that is bonded to two partners $i$
1702     and $k$.
1703    
1704 gezelter 4104 \begin{figure}[h]
1705     \centering
1706     \includegraphics[width=3.5in]{bend.pdf}
1707     \caption[Bend angle coordinates]{The coordinate describing a bend
1708     between atoms $i$, $j$, and $k$ is the angle $\theta_{ijk} =
1709     \cos^{-1} \left(\hat{r}_{ji} \cdot \hat{r}_{jk}\right)$ where $\hat{r}_{ji}$ is
1710     the unit vector between atoms $j$ and $i$. }
1711     \label{fig:bend}
1712     \end{figure}
1713    
1714    
1715 gezelter 4103 All BendTypes must specify three AtomType names ($i$, $j$ and $k$)
1716     that describe when that bend potential should be applied, as well as
1717     an equilibrium bending angle, $\theta_{ijk}^0$, in units of
1718     degrees. The most common forms for bending potentials are {\tt
1719     Harmonic} bends,
1720     \begin{equation}
1721     V_{\text{bend}}(\theta_{ijk}) = \frac{k_{ijk}}{2}( \theta_{ijk} - \theta_{ijk}^0
1722     )^2, \label{eq:bendPot}
1723 gezelter 4101 \end{equation}
1724 gezelter 4103 where $k_{ijk}$ is the force constant which determines the strength of
1725     the harmonic bend. {\tt UreyBradley} bends utilize an additional 1-3
1726     bond-type interaction in addition to the harmonic bending potential:
1727     \begin{equation}
1728     V_{\text{bend}}(\vec{r}_i , \vec{r}_j, \vec{r}_k)
1729     =\frac{k_{ijk}}{2}( \theta_{ijk} - \theta_{ijk}^0)^2
1730     + \frac{k_{ub}}{2}( r_{ik} - s_0 )^2. \label{eq:ubBend}
1731     \end{equation}
1732 gezelter 4101
1733 gezelter 4103 A {\tt Cosine} bend is a variant on the harmonic bend which utilizes
1734     the cosine of the angle instead of the angle itself,
1735 gezelter 4101 \begin{equation}
1736 gezelter 4103 V_{\text{bend}}(\theta_{ijk}) = \frac{k_{ijk}}{2}( \cos\theta_{ijk} -
1737     \cos \theta_{ijk}^0 )^2. \label{eq:cosBend}
1738 gezelter 4101 \end{equation}
1739    
1740 gezelter 4103 OpenMD can also simulate some less common types of bend potentials,
1741     including {\tt Cubic} bends, which include terms to model anharmonicity,
1742     \begin{equation}
1743     V_{\text{bend}}(\theta_{ijk}) = K_3 (\theta_{ijk} - \theta_{ijk}^0)^3 + K_2 (\theta_{ijk} - \theta_{ijk}^0)^2 + K_1 (\theta_{ijk} - \theta_{ijk}^0) + K_0,
1744     \end{equation}
1745     and {\tt Quartic} bends, which include another term in the Taylor
1746     expansion around $\theta_{ijk}^0$,
1747     \begin{equation}
1748     V_{\text{bend}}(\theta_{ijk}) = K_4 (\theta_{ijk} - \theta_{ijk}^0)^4 + K_3 (\theta_{ijk} - \theta_{ijk}^0)^3 +
1749     K_2 (\theta_{ijk} - \theta_{ijk}^0)^2 + K_1 (\theta_{ijk} -
1750     \theta_{ijk}^0) + K_0,
1751     \end{equation}
1752     can also be simulated. Note that the factor of $1/2$ that is included
1753     in the {\tt Harmonic} bend type force constant is {\it not} present in
1754     either the {\tt Cubic} or {\tt Quartic} bend types.
1755 gezelter 4101
1756 gezelter 4103 {\tt Polynomial} bends which can have any number of terms,
1757     \begin{equation}
1758     V_{\text{bend}}(\theta_{ijk}) = \sum_n K_n (\theta_{ijk} - \theta_{ijk}^0)^n.
1759     \end{equation}
1760     can also be specified by giving a sequence of integer ($n$) and force
1761     constant ($K_n$) pairs.
1762 gezelter 4101
1763 gezelter 4103 The order of terms in the BendTypes block is:
1764     \begin{itemize}
1765     \item {\tt AtomType} 1
1766     \item {\tt AtomType} 2 (this is the central atom)
1767     \item {\tt AtomType} 3
1768     \item {\tt BendType} (one of {\tt Harmonic}, {\tt UreyBradley}, {\tt
1769     Cosine}, {\tt Cubic}, {\tt Quartic}, or {\tt Polynomial})
1770     \item $\theta_{ijk}^0$, the equilibrium bending angle in degrees.
1771     \item any other parameters required by the {\tt BendType}
1772     \end{itemize}
1773 gezelter 4101
1774 gezelter 4105 \begin{code}[caption={[An example of a BendTypes block.] A
1775 gezelter 4103 simple example of a BendTypes block. By convention, equilibrium angles
1776     ($\theta_0$) are given in degrees but force constants are given in
1777     units so that when multiplied by the correct power of angle (in
1778     radians) they return energies in kcal/mol. For example $k$ for a
1779     Harmonic bend is in units of kcal/mol/radians$^2$.},
1780     label={sch:BendTypes}]
1781     begin BendTypes
1782     //Atom1 Atom2 Atom3 Harmonic theta0(deg) Ktheta(kcal/mol/radians^2)
1783     CT CT CT Harmonic 109.5 80.000000
1784     CH2 CH CH2 Harmonic 112.0 117.68
1785     CH3 CH2 SH Harmonic 96.0 67.220
1786     //UreyBradley
1787     //Atom1 Atom2 Atom3 UreyBradley theta0 Ktheta s0 Kub
1788     //Cosine
1789     //Atom1 Atom2 Atom3 Cosine theta0 Ktheta(kcal/mol)
1790     //Cubic
1791     //Atom1 Atom2 Atom3 Cubic theta0 K3 K2 K1 K0
1792     //Quartic
1793     //Atom1 Atom2 Atom3 Quartic theta0 K4 K3 K2 K1 K0
1794     //Polynomial
1795     //Atom1 Atom2 Atom3 Polynomial theta0 n Kn [m Km]
1796     end BendTypes
1797 gezelter 4105 \end{code}
1798 gezelter 4101
1799 gezelter 4103 Note that the parameters for a particular bend type are the same for
1800     any bending triplet of the same atomic types (in the same or reversed
1801     order). Changing the AtomType in the Atom2 position will change the
1802     matched bend types in the force field.
1803 gezelter 4101
1804 gezelter 4103 \subsection{\label{section:ffTorsion}The TorsionTypes block}
1805     The torsion potential for rotation of groups around a central bond can
1806     often be represented with various cosine functions. For two
1807     tetrahedral ($sp^3$) carbons connected by a single bond, the torsion
1808     potential might be
1809     \begin{equation*}
1810     V_{\text{torsion}} = \frac{v}{2} \left[ 1 + \cos( 3 \phi ) \right]
1811     \end{equation*}
1812     where $v$ is the barrier for going from {\em staggered} $\rightarrow$
1813     {\em eclipsed} conformations, while for $sp^2$ carbons connected by a
1814     double bond, the potential might be
1815     \begin{equation*}
1816     V_{\text{torsion}} = \frac{w}{2} \left[ 1 - \cos( 2 \phi ) \right]
1817     \end{equation*}
1818     where $w$ is the barrier for going from {\em cis} $\rightarrow$ {\em
1819     trans} conformations.
1820 gezelter 4101
1821 gezelter 4103 A general torsion potentials can be represented as a cosine series of
1822     the form:
1823     \begin{equation}
1824     V_{\text{torsion}}(\phi_{ijkl}) = c_1[1 + \cos \phi_{ijkl}]
1825     + c_2[1 - \cos(2\phi_{ijkl})]
1826     + c_3[1 + \cos(3\phi_{ijkl})],
1827     \label{eq:origTorsionPot}
1828     \end{equation}
1829     where the angle $\phi_{ijkl}$ is defined
1830     \begin{equation}
1831     \cos\phi_{ijkl} = (\hat{\mathbf{r}}_{ij} \times \hat{\mathbf{r}}_{jk}) \cdot
1832     (\hat{\mathbf{r}}_{jk} \times \hat{\mathbf{r}}_{kl}).
1833     \label{eq:torsPhi}
1834     \end{equation}
1835     Here, $\hat{\mathbf{r}}_{\alpha\beta}$ are the set of unit bond
1836 gezelter 4104 vectors between atoms $i$, $j$, $k$, and $l$. Note that some force
1837     fields define the zero of the $\phi_{ijkl}$ angle when atoms $i$ and
1838     $l$ are in the {\em trans} configuration, while most define the zero
1839     angle for when $i$ and $l$ are in the fully eclipsed orientation. The
1840     behavior of the torsion parser can be altered with the {\tt
1841     TorsionAngleConvention} keyword in the Options block. The default
1842     behavior is {\tt "180\_is\_trans"} while the opposite behavior can be
1843     invoked by setting this keyword to {\tt "0\_is\_trans"}.
1844 gezelter 4101
1845 gezelter 4104 \begin{figure}[h]
1846     \centering
1847     \includegraphics[width=4.5in]{torsion.pdf}
1848     \caption[Torsion or dihedral angle coordinates]{The coordinate
1849     describing a torsion between atoms $i$, $j$, $k$, and $l$ is the
1850     dihedral angle $\phi_{ijkl}$ which measures the relative rotation of
1851     the two terminal atoms around the axis defined by the middle bond. }
1852     \label{fig:torsion}
1853     \end{figure}
1854    
1855 gezelter 4103 For computational efficiency, OpenMD recasts torsion potential in the
1856     method of {\sc charmm},\cite{Brooks83} in which the angle series is
1857     converted to a power series of the form:
1858     \begin{equation}
1859     V_{\text{torsion}}(\phi_{ijkl}) =
1860     k_3 \cos^3 \phi_{ijkl} + k_2 \cos^2 \phi_{ijkl} + k_1 \cos \phi_{ijkl} + k_0,
1861     \label{eq:torsionPot}
1862     \end{equation}
1863     where:
1864     \begin{align*}
1865     k_0 &= c_1 + 2 c_2 + c_3, \\
1866     k_1 &= c_1 - 3c_3, \\
1867     k_2 &= - 2 c_2, \\
1868     k_3 &= 4 c_3.
1869     \end{align*}
1870     By recasting the potential as a power series, repeated trigonometric
1871     evaluations are avoided during the calculation of the potential
1872     energy.
1873 gezelter 4101
1874 gezelter 4103 Using this framework, OpenMD implements a variety of different
1875     potential energy functions for torsions:
1876     \begin{itemize}
1877     \item {\tt Cubic}:
1878     \begin{equation*}
1879     V_{\text{torsion}}(\phi) =
1880     k_3 \cos^3 \phi + k_2 \cos^2 \phi + k_1 \cos \phi + k_0,
1881     \end{equation*}
1882     \item {\tt Quartic}:
1883     \begin{equation*}
1884     V_{\text{torsion}}(\phi) = k_4 \cos^4 \phi +
1885     k_3 \cos^3 \phi + k_2 \cos^2 \phi + k_1 \cos \phi + k_0,
1886     \end{equation*}
1887     \item {\tt Polynomial}:
1888     \begin{equation*}
1889     V_{\text{torsion}}(\phi) = \sum_n k_n \cos^n \phi ,
1890     \end{equation*}
1891     \item {\tt Charmm}:
1892     \begin{equation*}
1893     V_{\text{torsion}}(\phi) = \sum_n K_n \left( 1 + cos(n
1894     \phi - \delta_n) \right),
1895     \end{equation*}
1896     \item {\tt Opls}:
1897     \begin{equation*}
1898     V_{\text{torsion}}(\phi) = \frac{1}{2} \left(v_1 (1 + \cos \phi) \right)
1899     + v_2 (1 - \cos 2 \phi) + v_3 (1 + \cos 3 \phi),
1900     \end{equation*}
1901     \item {\tt Trappe}:\cite{Siepmann1998}
1902     \begin{equation*}
1903     V_{\text{torsion}}(\phi) = c_0 + c_1 (1 + \cos \phi) + c_2 (1 - \cos 2 \phi) +
1904     c_3 (1 + \cos 3 \phi),
1905     \end{equation*}
1906     \item {\tt Harmonic}:
1907     \begin{equation*}
1908     V_{\text{torsion}}(\phi) = \frac{d_0}{2} \left(\phi - \phi^0\right).
1909     \end{equation*}
1910     \end{itemize}
1911 gezelter 4101
1912 gezelter 4103 Most torsion types don't require specific angle information in the
1913     parameters since they are typically expressed in cosine polynomials.
1914     {\tt Charmm} and {\tt Harmonic} torsions are a bit different. {\tt
1915     Charmm} torsion types require a set of phase angles, $\delta_n$ that
1916     are expressed in degrees, and associated periodicity numbers, $n$.
1917     {\tt Harmonic} torsions have an equilibrium torsion angle, $\phi_0$
1918     that is measured in degrees, while $d_0$ has units of
1919     kcal/mol/degrees$^2$. All other torsion parameters are measured in
1920     units of kcal/mol.
1921 gezelter 4101
1922 gezelter 4105 \begin{code}[caption={[An example of a TorsionTypes block.] A
1923 gezelter 4103 simple example of a TorsionTypes block. Energy constants are given in
1924     kcal / mol, and when required by the form, $\delta$ angles are given
1925     in degrees.},
1926     label={sch:TorsionTypes}]
1927     begin TorsionTypes
1928     //Cubic
1929     //Atom1 Atom2 Atom3 Atom4 Cubic k3 k2 k1 k0
1930     CH2 CH2 CH2 CH2 Cubic 5.9602 -0.2568 -3.802 2.1586
1931     CH2 CH CH CH2 Cubic 3.3254 -0.4215 -1.686 1.1661
1932     //Trappe
1933     //Atom1 Atom2 Atom3 Atom4 Trappe c0 c1 c2 c3
1934     CH3 CH2 CH2 SH Trappe 0.10507 -0.10342 0.03668 0.60874
1935     //Charmm
1936     //Atom1 Atom2 Atom3 Atom4 Charmm Kchi n delta [Kchi n delta]
1937     CT CT CT C Charmm 0.156 3 0.00
1938     OH CT CT OH Charmm 0.144 3 0.00 1.175 2 0
1939     HC CT CM CM Charmm 1.150 1 0.00 0.38 3 180
1940     //Quartic
1941     //Atom1 Atom2 Atom3 Atom4 Quartic k4 k3 k2 k1 k0
1942     //Polynomial
1943     //Atom1 Atom2 Atom3 Atom4 Polynomial n Kn [m Km]
1944     S CH2 CH2 C Polynomial 0 2.218 1 2.905 2 -3.136 3 -0.7313 4 6.272 5 -7.528
1945     end TorsionTypes
1946 gezelter 4105 \end{code}
1947 gezelter 4101
1948 gezelter 4103 Note that the parameters for a particular torsion type are the same
1949     for any torsional quartet of the same atomic types (in the same or
1950     reversed order).
1951 gezelter 4101
1952 gezelter 4103 \subsection{\label{section:ffInversion}The InversionTypes block}
1953 gezelter 4101
1954 gezelter 4103 Inversion potentials are often added to force fields to enforce
1955     planarity around $sp^2$-hybridized carbons or to correct vibrational
1956     frequencies for umbrella-like vibrational modes for central atoms
1957     bonded to exactly three satellite groups.
1958 gezelter 4101
1959 gezelter 4103 In OpenMD's version of an inversion, the central atom is entered {\it
1960     first} in each line in the {\tt InversionTypes} block. Note that
1961     this is quite different than how other codes treat Improper torsional
1962     potentials to mimic inversion behavior. In some other widely-used
1963     simulation packages, the central atom is treated as atom 3 in a
1964     standard torsion form:
1965     \begin{itemize}
1966     \item OpenMD: I - (J - K - L) (e.g. I is $sp^2$ hybridized carbon)
1967     \item AMBER: I - J - K - L (e.g. K is $sp^2$ hybridized carbon)
1968     \end{itemize}
1969 gezelter 4101
1970 gezelter 4103 The inversion angle itself is defined as:
1971     \begin{equation}
1972     \cos\omega_{i-jkl} = \left(\hat{\mathbf{r}}_{il} \times
1973     \hat{\mathbf{r}}_{ij}\right)\cdot\left( \hat{\mathbf{r}}_{il} \times
1974     \hat{\mathbf{r}}_{ik}\right)
1975     \end{equation}
1976     Here, $\hat{\mathbf{r}}_{\alpha\beta}$ are the set of unit bond
1977     vectors between the central atoms $i$, and the satellite atoms $j$,
1978     $k$, and $l$. Note that other definitions of inversion angles are
1979     possible, so users are encouraged to be particularly careful when
1980     converting other force field files for use with OpenMD.
1981 gezelter 4101
1982 gezelter 4103 There are many common ways to create planarity or umbrella behavior in
1983     a potential energy function, and OpenMD implements a number of the
1984     more common functions:
1985     \begin{itemize}
1986     \item {\tt ImproperCosine}:
1987     \begin{equation*}
1988     V_{\text{torsion}}(\omega) = \sum_n \frac{K_n}{2} \left( 1 + cos(n
1989     \omega - \delta_n) \right),
1990     \end{equation*}
1991     \item {\tt AmberImproper}:
1992     \begin{equation*}
1993     V_{\text{torsion}}(\omega) = \frac{v}{2} (1 - \cos\left(2 \left(\omega - \omega_0\right)\right),
1994     \end{equation*}
1995     \item {\tt Harmonic}:
1996     \begin{equation*}
1997     V_{\text{torsion}}(\omega) = \frac{d}{2} \left(\omega - \omega_0\right).
1998     \end{equation*}
1999     \end{itemize}
2000 gezelter 4105 \begin{code}[caption={[An example of an InversionTypes block.] A
2001 gezelter 4103 simple example of a InversionTypes block. Angles ($\delta_n$ and
2002     $\omega_0$) angles are given in degrees, while energy parameters ($v,
2003     K_n$) are given in kcal / mol. The Harmonic Inversion type has a
2004     force constant that must be given in kcal/mol/degrees$^2$.},
2005     label={sch:InversionTypes}]
2006     begin InversionTypes
2007     //Harmonic
2008     //Atom1 Atom2 Atom3 Atom4 Harmonic d(kcal/mol/deg^2) omega0
2009     RCHar3 X X X Harmonic 1.21876e-2 180.0
2010     //AmberImproper
2011     //Atom1 Atom2 Atom3 Atom4 AmberImproper v(kcal/mol)
2012     C CT N O AmberImproper 10.500000
2013     CA CA CA CT AmberImproper 1.100000
2014     //ImproperCosine
2015     //Atom1 Atom2 Atom3 Atom4 ImproperCosine Kn n delta_n [Kn n delta_n]
2016     end InversionTypes
2017 gezelter 4105 \end{code}
2018 gezelter 4101
2019 gezelter 4103 \section{\label{section::ffLongRange}Long Range Interactions}
2020 gezelter 4101
2021 gezelter 4103 Calculating the long-range (non-bonded) potential involves a sum over
2022     all pairs of atoms (except for those atoms which are involved in a
2023     bond, bend, or torsion with each other). Many of these interactions
2024     can be inferred from the AtomTypes,
2025 gezelter 4101
2026 gezelter 4103 \subsection{\label{section:ffNBinteraction}The NonBondedInteractions
2027     block}
2028 gezelter 4101
2029 gezelter 4103 The user might want like to specify explicit or special interactions
2030     that override the default non-bodned interactions that are inferred
2031     from the AtomTypes. To do this, OpenMD implements a
2032     NonBondedInteractions block to allow the user to specify the following
2033     (pair-wise) non-bonded interactions:
2034 gezelter 4101
2035 gezelter 4103 \begin{itemize}
2036     \item {\tt LennardJones}:
2037     \begin{equation*}
2038     V_{\text{NB}}(r) = 4 \epsilon_{ij} \left(
2039     \left(\frac{\sigma_{ij}}{r} \right)^{12} -
2040     \left(\frac{\sigma_{ij}}{r} \right)^{6} \right),
2041     \end{equation*}
2042     \item {\tt ShiftedMorse}:
2043     \begin{equation*}
2044     V_{\text{NB}}(r) = D_{ij} \left( e^{-2 \beta_{ij} (r -
2045     r^0)} - 2 e^{- \beta_{ij} (r -
2046     r^0)} \right),
2047     \end{equation*}
2048     \item {\tt RepulsiveMorse}:
2049     \begin{equation*}
2050     V_{\text{NB}}(r) = D_{ij} \left( e^{-2 \beta_{ij} (r -
2051     r^0)} \right),
2052     \end{equation*}
2053     \item {\tt RepulsivePower}:
2054     \begin{equation*}
2055     V_{\text{NB}}(r) = \epsilon_{ij}
2056     \left(\frac{\sigma_{ij}}{r} \right)^{n_{ij}}.
2057     \end{equation*}
2058     \end{itemize}
2059 gezelter 4101
2060 gezelter 4105 \begin{code}[caption={[An example of a NonBondedInteractions block.] A
2061 gezelter 4103 simple example of a NonBondedInteractions block. Distances ($\sigma,
2062     r_0$) are given in \AA, while energies ($\epsilon, D0$) are in
2063     kcal/mol. The Morse potentials have an additional parameter $\beta_0$
2064     which is in units of \AA$^{-1}$.},
2065     label={sch:InversionTypes}]
2066     begin NonBondedInteractions
2067 gezelter 4101
2068 gezelter 4103 //Lennard-Jones
2069     //Atom1 Atom2 LennardJones sigma epsilon
2070     Au CH3 LennardJones 3.54 0.2146
2071     Au CH2 LennardJones 3.54 0.1749
2072     Au CH LennardJones 3.54 0.1749
2073     Au S LennardJones 2.40 8.465
2074 gezelter 4101
2075 gezelter 4103 //Shifted Morse
2076     //Atom1 Atom2 ShiftedMorse r0 D0 beta0
2077     Au O_SPCE ShiftedMorse 3.70 0.0424 0.769
2078 gezelter 4101
2079 gezelter 4103 //Repulsive Morse
2080     //Atom1 Atom2 RepulsiveMorse r0 D0 beta0
2081     Au H_SPCE RepulsiveMorse -1.00 0.00850 0.769
2082 gezelter 4101
2083 gezelter 4103 //Repulsive Power
2084     //Atom1 Atom2 RepulsivePower sigma epsilon n
2085     Au ON RepulsivePower 3.47005 0.186208 11
2086     Au NO RepulsivePower 3.53955 0.168629 11
2087     end NonBondedInteractions
2088 gezelter 4105 \end{code}
2089 gezelter 3607
2090     \section{\label{section:electrostatics}Electrostatics}
2091    
2092 gezelter 4104 Because nearly all force fields involve electrostatic interactions in
2093     one form or another, OpenMD implements a number of different
2094     electrostatic summation methods. These methods are extended from the
2095     damped and cutoff-neutralized Coulombic sum originally proposed by
2096     Wolf, {\it et al.}\cite{Wolf99} One of these, the damped shifted force
2097     method, shows a remarkable ability to reproduce the energetic and
2098     dynamic characteristics exhibited by simulations employing lattice
2099     summation techniques. The basic idea is to construct well-behaved
2100     real-space summation methods using two tricks:
2101 gezelter 3607 \begin{enumerate}
2102     \item shifting through the use of image charges, and
2103     \item damping the electrostatic interaction.
2104     \end{enumerate}
2105     Starting with the original observation that the effective range of the
2106     electrostatic interaction in condensed phases is considerably less
2107     than $r^{-1}$, either the cutoff sphere neutralization or the
2108     distance-dependent damping technique could be used as a foundation for
2109     a new pairwise summation method. Wolf \textit{et al.} made the
2110     observation that charge neutralization within the cutoff sphere plays
2111     a significant role in energy convergence; therefore we will begin our
2112     analysis with the various shifted forms that maintain this charge
2113     neutralization. We can evaluate the methods of Wolf
2114     \textit{et al.} and Zahn \textit{et al.} by considering the standard
2115     shifted potential,
2116     \begin{equation}
2117     V_\textrm{SP}(r) = \begin{cases}
2118     v(r)-v_\textrm{c} &\quad r\leqslant R_\textrm{c} \\ 0 &\quad r >
2119     R_\textrm{c}
2120     \end{cases},
2121     \label{eq:shiftingPotForm}
2122     \end{equation}
2123     and shifted force,
2124     \begin{equation}
2125     V_\textrm{SF}(r) = \begin{cases}
2126     v(r)-v_\textrm{c}-\left(\frac{d v(r)}{d r}\right)_{r=R_\textrm{c}}(r-R_\textrm{c
2127     })
2128     &\quad r\leqslant R_\textrm{c} \\ 0 &\quad r > R_\textrm{c}
2129     \end{cases},
2130     \label{eq:shiftingForm}
2131     \end{equation}
2132     functions where $v(r)$ is the unshifted form of the potential, and
2133     $v_c$ is $v(R_\textrm{c})$. The Shifted Force ({\sc sf}) form ensures
2134     that both the potential and the forces goes to zero at the cutoff
2135     radius, while the Shifted Potential ({\sc sp}) form only ensures the
2136     potential is smooth at the cutoff radius
2137     ($R_\textrm{c}$).\cite{Allen87}
2138    
2139     The forces associated with the shifted potential are simply the forces
2140     of the unshifted potential itself (when inside the cutoff sphere),
2141     \begin{equation}
2142     F_{\textrm{SP}} = -\left( \frac{d v(r)}{dr} \right),
2143     \end{equation}
2144     and are zero outside. Inside the cutoff sphere, the forces associated
2145     with the shifted force form can be written,
2146     \begin{equation}
2147     F_{\textrm{SF}} = -\left( \frac{d v(r)}{dr} \right) + \left(\frac{d
2148     v(r)}{dr} \right)_{r=R_\textrm{c}}.
2149     \end{equation}
2150    
2151     If the potential, $v(r)$, is taken to be the normal Coulomb potential,
2152     \begin{equation}
2153     v(r) = \frac{q_i q_j}{r},
2154     \label{eq:Coulomb}
2155     \end{equation}
2156     then the Shifted Potential ({\sc sp}) forms will give Wolf {\it et
2157     al.}'s undamped prescription:
2158     \begin{equation}
2159     V_\textrm{SP}(r) =
2160     q_iq_j\left(\frac{1}{r}-\frac{1}{R_\textrm{c}}\right) \quad
2161     r\leqslant R_\textrm{c},
2162     \label{eq:SPPot}
2163     \end{equation}
2164     with associated forces,
2165     \begin{equation}
2166     F_\textrm{SP}(r) = q_iq_j\left(\frac{1}{r^2}\right) \quad r\leqslant R_\textrm{c
2167     }.
2168     \label{eq:SPForces}
2169     \end{equation}
2170     These forces are identical to the forces of the standard Coulomb
2171     interaction, and cutting these off at $R_c$ was addressed by Wolf
2172     \textit{et al.} as undesirable. They pointed out that the effect of
2173     the image charges is neglected in the forces when this form is
2174     used,\cite{Wolf99} thereby eliminating any benefit from the method in
2175     molecular dynamics. Additionally, there is a discontinuity in the
2176     forces at the cutoff radius which results in energy drift during MD
2177     simulations.
2178    
2179     The shifted force ({\sc sf}) form using the normal Coulomb potential
2180     will give,
2181     \begin{equation}
2182     V_\textrm{SF}(r) = q_iq_j\left[\frac{1}{r}-\frac{1}{R_\textrm{c}}+\left(\frac{1}
2183     {R_\textrm{c}^2}\right)(r-R_\textrm{c})\right] \quad r\leqslant R_\textrm{c}.
2184     \label{eq:SFPot}
2185     \end{equation}
2186     with associated forces,
2187     \begin{equation}
2188     F_\textrm{SF}(r) = q_iq_j\left(\frac{1}{r^2}-\frac{1}{R_\textrm{c}^2}\right) \quad r\leqslant R_\textrm{c}.
2189     \label{eq:SFForces}
2190     \end{equation}
2191     This formulation has the benefits that there are no discontinuities at
2192     the cutoff radius, while the neutralizing image charges are present in
2193     both the energy and force expressions. It would be simple to add the
2194     self-neutralizing term back when computing the total energy of the
2195     system, thereby maintaining the agreement with the Madelung energies.
2196     A side effect of this treatment is the alteration in the shape of the
2197     potential that comes from the derivative term. Thus, a degree of
2198     clarity about agreement with the empirical potential is lost in order
2199     to gain functionality in dynamics simulations.
2200    
2201     Wolf \textit{et al.} originally discussed the energetics of the
2202     shifted Coulomb potential (Eq. \ref{eq:SPPot}) and found that it was
2203     insufficient for accurate determination of the energy with reasonable
2204     cutoff distances. The calculated Madelung energies fluctuated around
2205     the expected value as the cutoff radius was increased, but the
2206     oscillations converged toward the correct value.\cite{Wolf99} A
2207     damping function was incorporated to accelerate the convergence; and
2208     though alternative forms for the damping function could be
2209     used,\cite{Jones56,Heyes81} the complimentary error function was
2210     chosen to mirror the effective screening used in the Ewald summation.
2211     Incorporating this error function damping into the simple Coulomb
2212     potential,
2213     \begin{equation}
2214     v(r) = \frac{\mathrm{erfc}\left(\alpha r\right)}{r},
2215     \label{eq:dampCoulomb}
2216     \end{equation}
2217     the shifted potential (eq. (\ref{eq:SPPot})) becomes
2218     \begin{equation}
2219 gezelter 4103 V_{\textrm{DSP}}(r) = q_iq_j\left(\frac{\textrm{erfc}\left(\alpha r\right)}{r}-\frac{\textrm{erfc}\left(\alpha R_\textrm{c}\right)}{R_\textrm{c}}\right) \quad r
2220 gezelter 3607 \leqslant R_\textrm{c},
2221     \label{eq:DSPPot}
2222     \end{equation}
2223     with associated forces,
2224     \begin{equation}
2225     F_{\textrm{DSP}}(r) = q_iq_j\left(\frac{\textrm{erfc}\left(\alpha r\right)}{r^2}
2226     +\frac{2\alpha}{\pi^{1/2}}\frac{\exp{\left(-\alpha^2r^2\right)}}{r}\right) \quad
2227     r\leqslant R_\textrm{c}.
2228     \label{eq:DSPForces}
2229     \end{equation}
2230     Again, this damped shifted potential suffers from a
2231     force-discontinuity at the cutoff radius, and the image charges play
2232     no role in the forces. To remedy these concerns, one may derive a
2233     {\sc sf} variant by including the derivative term in
2234     eq. (\ref{eq:shiftingForm}),
2235     \begin{equation}
2236     \begin{split}
2237     V_\mathrm{DSF}(r) = q_iq_j\Biggr{[} & \frac{\mathrm{erfc}\left(\alpha r \right)}{r} -\frac{\mathrm{erfc}\left(\alpha R_\mathrm{c} \right) }{R_\mathrm{c}} \\
2238     & \left. +\left(\frac{\mathrm{erfc}\left(\alpha
2239     R_\mathrm{c}\right)}{R_\mathrm{c}^2}+\frac{2\alpha}{\pi^{1/2}}\frac{\exp\left(-\alpha^2R_\mathrm{c}^2\right)}{R_\mathrm{c}}\right)\left(r-R_\mathrm{c}\right)
2240     \right] \quad r\leqslant R_\textrm{c}
2241     \label{eq:DSFPot}
2242     \end{split}
2243     \end{equation}
2244     The derivative of the above potential will lead to the following forces,
2245     \begin{equation}
2246     \begin{split}
2247     F_\mathrm{DSF}(r) =
2248     q_iq_j\Biggr{[}&\left(\frac{\textrm{erfc}\left(\alpha r\right)}{r^2}+\frac{2\alpha}{\pi^{1/2}}\frac{\exp{\left(-\alpha^2r^2\right)}}{r}\right) \\ &\left.-\left(\frac{\textrm{erfc}\left(\alpha R_{\textrm{c}}\right)}{R_{\textrm{c}}^2}+\frac{2\alpha}{\pi^{1/2}}\frac{\exp{\left(-\alpha^2R_{\textrm{c}}^2
2249     \right)}}{R_{\textrm{c}}}\right)\right] \quad r\leqslant R_\textrm{c}.
2250     \label{eq:DSFForces}
2251     \end{split}
2252     \end{equation}
2253     If the damping parameter $(\alpha)$ is set to zero, the undamped case,
2254     eqs. (\ref{eq:SPPot} through \ref{eq:SFForces}) are correctly
2255     recovered from eqs. (\ref{eq:DSPPot} through \ref{eq:DSFForces}).
2256    
2257     It has been shown that the Damped Shifted Force method obtains nearly
2258     identical behavior to the smooth particle mesh Ewald ({\sc spme})
2259     method on a number of commonly simulated systems.\cite{Fennell06} For
2260     this reason, the default electrostatic summation method utilized by
2261     {\sc OpenMD} is the DSF (Eq. \ref{eq:DSFPot}) with a damping parameter
2262     ($\alpha$) that is set algorithmically from the cutoff radius.
2263    
2264 gezelter 4103
2265     \section{\label{section:cutoffGroups}Switching Functions}
2266    
2267 gezelter 4104 Calculating the the long-range interactions for $N$ atoms involves
2268     $N(N-1)/2$ evaluations of atomic distances if it is done in a brute
2269     force manner. To reduce the number of distance evaluations between
2270     pairs of atoms, {\sc OpenMD} allows the use of hard or switched
2271     cutoffs with Verlet neighbor lists.\cite{Allen87} Neutral groups which
2272     contain charges can exhibit pathological forces unless the cutoff is
2273     applied to the neutral groups evenly instead of to the individual
2274     atoms.\cite{leach01:mm} {\sc OpenMD} allows users to specify cutoff
2275     groups which may contain an arbitrary number of atoms in the molecule.
2276     Atoms in a cutoff group are treated as a single unit for the
2277     evaluation of the switching function:
2278 gezelter 4103 \begin{equation}
2279     V_{\mathrm{long-range}} = \sum_{a} \sum_{b>a} s(r_{ab}) \sum_{i \in a} \sum_{j \in b} V_{ij}(r_{ij}),
2280     \end{equation}
2281     where $r_{ab}$ is the distance between the centers of mass of the two
2282     cutoff groups ($a$ and $b$).
2283    
2284     The sums over $a$ and $b$ are over the cutoff groups that are present
2285     in the simulation. Atoms which are not explicitly defined as members
2286     of a {\tt cutoffGroup} are treated as a group consisting of only one
2287     atom. The switching function, $s(r)$ is the standard cubic switching
2288     function,
2289     \begin{equation}
2290     S(r) =
2291     \begin{cases}
2292     1 & \text{if $r \le r_{\text{sw}}$},\\
2293     \frac{(r_{\text{cut}} + 2r - 3r_{\text{sw}})(r_{\text{cut}} - r)^2}
2294     {(r_{\text{cut}} - r_{\text{sw}})^3}
2295     & \text{if $r_{\text{sw}} < r \le r_{\text{cut}}$}, \\
2296     0 & \text{if $r > r_{\text{cut}}$.}
2297     \end{cases}
2298     \label{eq:dipoleSwitching}
2299     \end{equation}
2300     Here, $r_{\text{sw}}$ is the {\tt switchingRadius}, or the distance
2301     beyond which interactions are reduced, and $r_{\text{cut}}$ is the
2302     {\tt cutoffRadius}, or the distance at which interactions are
2303 gezelter 4104 truncated.
2304 gezelter 4103
2305     Users of {\sc OpenMD} do not need to specify the {\tt cutoffRadius} or
2306 gezelter 4104 {\tt switchingRadius}.
2307     If the {\tt cutoffRadius} was not explicitly set, OpenMD will attempt
2308     to guess an appropriate choice. If the system contains electrostatic
2309     atoms, the default cutoff radius is 12 \AA. In systems without
2310     electrostatic (charge or multipolar) atoms, the atom types present in the simulation will be
2311     polled for suggested cutoff values (e.g. $2.5 max(\left\{ \sigma
2312     \right\})$ for Lennard-Jones atoms. The largest suggested value
2313     that was found will be used.
2314 gezelter 4103
2315 gezelter 4104 By default, OpenMD uses shifted force potentials to force the
2316     potential energy and forces to smoothly approach zero at the cutoff
2317     radius. If the user would like to use another cutoff method
2318     they may do so by setting the {\tt cutoffMethod} parameter to:
2319     \begin{itemize}
2320     \item {\tt HARD}
2321     \item {\tt SWITCHED}
2322     \item {\tt SHIFTED\_FORCE} (default):
2323     \item {\tt TAYLOR\_SHIFTED}
2324     \item {\tt SHIFTED\_POTENTIAL}
2325     \end{itemize}
2326    
2327 gezelter 4103 The {\tt switchingRadius} is set to a default value of 95\% of the
2328     {\tt cutoffRadius}. In the special case of a simulation containing
2329     {\it only} Lennard-Jones atoms, the default switching radius takes the
2330     same value as the cutoff radius, and {\sc OpenMD} will use a shifted
2331     potential to remove discontinuities in the potential at the cutoff.
2332     Both radii may be specified in the meta-data file.
2333    
2334    
2335 gezelter 3607 \section{\label{section:pbc}Periodic Boundary Conditions}
2336    
2337     \newcommand{\roundme}{\operatorname{round}}
2338    
2339     \textit{Periodic boundary conditions} are widely used to simulate bulk
2340     properties with a relatively small number of particles. In this method
2341     the simulation box is replicated throughout space to form an infinite
2342     lattice. During the simulation, when a particle moves in the primary
2343     cell, its image in other cells move in exactly the same direction with
2344     exactly the same orientation. Thus, as a particle leaves the primary
2345     cell, one of its images will enter through the opposite face. If the
2346     simulation box is large enough to avoid ``feeling'' the symmetries of
2347     the periodic lattice, surface effects can be ignored. The available
2348     periodic cells in {\sc OpenMD} are cubic, orthorhombic and
2349     parallelepiped. {\sc OpenMD} use a $3 \times 3$ matrix, $\mathsf{H}$,
2350     to describe the shape and size of the simulation box. $\mathsf{H}$ is
2351     defined:
2352     \begin{equation}
2353     \mathsf{H} = ( \mathbf{h}_x, \mathbf{h}_y, \mathbf{h}_z ),
2354     \end{equation}
2355     where $\mathbf{h}_{\alpha}$ is the column vector of the $\alpha$ axis of the
2356     box. During the course of the simulation both the size and shape of
2357     the box can be changed to allow volume fluctuations when constraining
2358     the pressure.
2359    
2360     A real space vector, $\mathbf{r}$ can be transformed in to a box space
2361     vector, $\mathbf{s}$, and back through the following transformations:
2362     \begin{align}
2363     \mathbf{s} &= \mathsf{H}^{-1} \mathbf{r}, \\
2364     \mathbf{r} &= \mathsf{H} \mathbf{s}.
2365     \end{align}
2366     The vector $\mathbf{s}$ is now a vector expressed as the number of box
2367     lengths in the $\mathbf{h}_x$, $\mathbf{h}_y$, and $\mathbf{h}_z$
2368     directions. To find the minimum image of a vector $\mathbf{r}$, {\sc
2369     OpenMD} first converts it to its corresponding vector in box space, and
2370     then casts each element to lie in the range $[-0.5,0.5]$:
2371     \begin{equation}
2372     s_{i}^{\prime}=s_{i}-\roundme(s_{i}),
2373     \end{equation}
2374     where $s_i$ is the $i$th element of $\mathbf{s}$, and
2375     $\roundme(s_i)$ is given by
2376     \begin{equation}
2377     \roundme(x) =
2378     \begin{cases}
2379     \lfloor x+0.5 \rfloor & \text{if $x \ge 0$,} \\
2380     \lceil x-0.5 \rceil & \text{if $x < 0$.}
2381     \end{cases}
2382     \end{equation}
2383     Here $\lfloor x \rfloor$ is the floor operator, and gives the largest
2384     integer value that is not greater than $x$, and $\lceil x \rceil$ is
2385     the ceiling operator, and gives the smallest integer that is not less
2386     than $x$.
2387    
2388     Finally, the minimum image coordinates $\mathbf{r}^{\prime}$ are
2389     obtained by transforming back to real space,
2390     \begin{equation}
2391     \mathbf{r}^{\prime}=\mathsf{H}^{-1}\mathbf{s}^{\prime}.%
2392     \end{equation}
2393     In this way, particles are allowed to diffuse freely in $\mathbf{r}$,
2394     but their minimum images, or $\mathbf{r}^{\prime}$, are used to compute
2395     the inter-atomic forces.
2396    
2397     \chapter{\label{section:mechanics}Mechanics}
2398    
2399     \section{\label{section:integrate}Integrating the Equations of Motion: the
2400     {\sc dlm} method}
2401    
2402     The default method for integrating the equations of motion in {\sc
2403     OpenMD} is a velocity-Verlet version of the symplectic splitting method
2404     proposed by Dullweber, Leimkuhler and McLachlan
2405     ({\sc dlm}).\cite{Dullweber1997} When there are no directional atoms or
2406     rigid bodies present in the simulation, this integrator becomes the
2407     standard velocity-Verlet integrator which is known to sample the
2408     microcanonical (NVE) ensemble.\cite{Frenkel1996}
2409    
2410     Previous integration methods for orientational motion have problems
2411     that are avoided in the {\sc dlm} method. Direct propagation of the Euler
2412     angles has a known $1/\sin\theta$ divergence in the equations of
2413     motion for $\phi$ and $\psi$,\cite{Allen87} leading to numerical
2414     instabilities any time one of the directional atoms or rigid bodies
2415     has an orientation near $\theta=0$ or $\theta=\pi$. Quaternion-based
2416     integration methods work well for propagating orientational motion;
2417     however, energy conservation concerns arise when using the
2418     microcanonical (NVE) ensemble. An earlier implementation of {\sc
2419     OpenMD} utilized quaternions for propagation of rotational motion;
2420     however, a detailed investigation showed that they resulted in a
2421     steady drift in the total energy, something that has been observed by
2422     Laird {\it et al.}\cite{Laird97}
2423    
2424     The key difference in the integration method proposed by Dullweber
2425     \emph{et al.} is that the entire $3 \times 3$ rotation matrix is
2426     propagated from one time step to the next. In the past, this would not
2427     have been feasible, since the rotation matrix for a single body has
2428     nine elements compared with the more memory-efficient methods (using
2429     three Euler angles or 4 quaternions). Computer memory has become much
2430     less costly in recent years, and this can be translated into
2431     substantial benefits in energy conservation.
2432    
2433     The basic equations of motion being integrated are derived from the
2434     Hamiltonian for conservative systems containing rigid bodies,
2435     \begin{equation}
2436     H = \sum_{i} \left( \frac{1}{2} m_i {\bf v}_i^T \cdot {\bf v}_i +
2437     \frac{1}{2} {\bf j}_i^T \cdot \overleftrightarrow{\mathsf{I}}_i^{-1} \cdot
2438     {\bf j}_i \right) +
2439     V\left(\left\{{\bf r}\right\}, \left\{\mathsf{A}\right\}\right),
2440     \end{equation}
2441     where ${\bf r}_i$ and ${\bf v}_i$ are the cartesian position vector
2442     and velocity of the center of mass of particle $i$, and ${\bf j}_i$,
2443     $\overleftrightarrow{\mathsf{I}}_i$ are the body-fixed angular
2444     momentum and moment of inertia tensor respectively, and the
2445     superscript $T$ denotes the transpose of the vector. $\mathsf{A}_i$
2446     is the $3 \times 3$ rotation matrix describing the instantaneous
2447     orientation of the particle. $V$ is the potential energy function
2448     which may depend on both the positions $\left\{{\bf r}\right\}$ and
2449     orientations $\left\{\mathsf{A}\right\}$ of all particles. The
2450     equations of motion for the particle centers of mass are derived from
2451     Hamilton's equations and are quite simple,
2452     \begin{eqnarray}
2453     \dot{{\bf r}} & = & {\bf v}, \\
2454     \dot{{\bf v}} & = & \frac{{\bf f}}{m},
2455     \end{eqnarray}
2456     where ${\bf f}$ is the instantaneous force on the center of mass
2457     of the particle,
2458     \begin{equation}
2459     {\bf f} = - \frac{\partial}{\partial
2460     {\bf r}} V(\left\{{\bf r}(t)\right\}, \left\{\mathsf{A}(t)\right\}).
2461     \end{equation}
2462    
2463     The equations of motion for the orientational degrees of freedom are
2464     \begin{eqnarray}
2465     \dot{\mathsf{A}} & = & \mathsf{A} \cdot
2466     \mbox{ skew}\left(\overleftrightarrow{\mathsf{I}}^{-1} \cdot {\bf j}\right),\\
2467     \dot{{\bf j}} & = & {\bf j} \times \left( \overleftrightarrow{\mathsf{I}}^{-1}
2468     \cdot {\bf j} \right) - \mbox{ rot}\left(\mathsf{A}^{T} \cdot \frac{\partial
2469     V}{\partial \mathsf{A}} \right).
2470     \end{eqnarray}
2471     In these equations of motion, the $\mbox{skew}$ matrix of a vector
2472     ${\bf v} = \left( v_1, v_2, v_3 \right)$ is defined:
2473     \begin{equation}
2474     \mbox{skew}\left( {\bf v} \right) := \left(
2475     \begin{array}{ccc}
2476     0 & v_3 & - v_2 \\
2477     -v_3 & 0 & v_1 \\
2478     v_2 & -v_1 & 0
2479     \end{array}
2480     \right).
2481     \end{equation}
2482     The $\mbox{rot}$ notation refers to the mapping of the $3 \times 3$
2483     rotation matrix to a vector of orientations by first computing the
2484     skew-symmetric part $\left(\mathsf{A} - \mathsf{A}^{T}\right)$ and
2485     then associating this with a length 3 vector by inverting the
2486     $\mbox{skew}$ function above:
2487     \begin{equation}
2488     \mbox{rot}\left(\mathsf{A}\right) := \mbox{ skew}^{-1}\left(\mathsf{A}
2489     - \mathsf{A}^{T} \right).
2490     \end{equation}
2491     Written this way, the $\mbox{rot}$ operation creates a set of
2492     conjugate angle coordinates to the body-fixed angular momenta
2493     represented by ${\bf j}$. This equation of motion for angular momenta
2494     is equivalent to the more familiar body-fixed forms,
2495     \begin{eqnarray}
2496     \dot{j_{x}} & = & \tau^b_x(t) -
2497     \left(\overleftrightarrow{\mathsf{I}}_{yy}^{-1} - \overleftrightarrow{\mathsf{I}}_{zz}^{-1} \right) j_y j_z, \\
2498     \dot{j_{y}} & = & \tau^b_y(t) -
2499     \left(\overleftrightarrow{\mathsf{I}}_{zz}^{-1} - \overleftrightarrow{\mathsf{I}}_{xx}^{-1} \right) j_z j_x,\\
2500     \dot{j_{z}} & = & \tau^b_z(t) -
2501     \left(\overleftrightarrow{\mathsf{I}}_{xx}^{-1} - \overleftrightarrow{\mathsf{I}}_{yy}^{-1} \right) j_x j_y,
2502     \end{eqnarray}
2503     which utilize the body-fixed torques, ${\bf \tau}^b$. Torques are
2504     most easily derived in the space-fixed frame,
2505     \begin{equation}
2506     {\bf \tau}^b(t) = \mathsf{A}(t) \cdot {\bf \tau}^s(t),
2507     \end{equation}
2508     where the torques are either derived from the forces on the
2509     constituent atoms of the rigid body, or for directional atoms,
2510     directly from derivatives of the potential energy,
2511     \begin{equation}
2512     {\bf \tau}^s(t) = - \hat{\bf u}(t) \times \left( \frac{\partial}
2513     {\partial \hat{\bf u}} V\left(\left\{ {\bf r}(t) \right\}, \left\{
2514     \mathsf{A}(t) \right\}\right) \right).
2515     \end{equation}
2516     Here $\hat{\bf u}$ is a unit vector pointing along the principal axis
2517     of the particle in the space-fixed frame.
2518    
2519     The {\sc dlm} method uses a Trotter factorization of the orientational
2520     propagator. This has three effects:
2521     \begin{enumerate}
2522     \item the integrator is area-preserving in phase space (i.e. it is
2523     {\it symplectic}),
2524     \item the integrator is time-{\it reversible}, making it suitable for Hybrid
2525     Monte Carlo applications, and
2526     \item the error for a single time step is of order $\mathcal{O}\left(h^4\right)$
2527     for timesteps of length $h$.
2528     \end{enumerate}
2529    
2530     The integration of the equations of motion is carried out in a
2531     velocity-Verlet style 2-part algorithm, where $h= \delta t$:
2532    
2533     {\tt moveA:}
2534     \begin{align*}
2535     {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
2536     + \frac{h}{2} \left( {\bf f}(t) / m \right), \\
2537     %
2538     {\bf r}(t + h) &\leftarrow {\bf r}(t)
2539     + h {\bf v}\left(t + h / 2 \right), \\
2540     %
2541     {\bf j}\left(t + h / 2 \right) &\leftarrow {\bf j}(t)
2542     + \frac{h}{2} {\bf \tau}^b(t), \\
2543     %
2544     \mathsf{A}(t + h) &\leftarrow \mathrm{rotate}\left( h {\bf j}
2545     (t + h / 2) \cdot \overleftrightarrow{\mathsf{I}}^{-1} \right).
2546     \end{align*}
2547    
2548     In this context, the $\mathrm{rotate}$ function is the reversible product
2549     of the three body-fixed rotations,
2550     \begin{equation}
2551     \mathrm{rotate}({\bf a}) = \mathsf{G}_x(a_x / 2) \cdot
2552     \mathsf{G}_y(a_y / 2) \cdot \mathsf{G}_z(a_z) \cdot \mathsf{G}_y(a_y /
2553     2) \cdot \mathsf{G}_x(a_x /2),
2554     \end{equation}
2555     where each rotational propagator, $\mathsf{G}_\alpha(\theta)$, rotates
2556     both the rotation matrix ($\mathsf{A}$) and the body-fixed angular
2557     momentum (${\bf j}$) by an angle $\theta$ around body-fixed axis
2558     $\alpha$,
2559     \begin{equation}
2560     \mathsf{G}_\alpha( \theta ) = \left\{
2561     \begin{array}{lcl}
2562     \mathsf{A}(t) & \leftarrow & \mathsf{A}(0) \cdot \mathsf{R}_\alpha(\theta)^T, \\
2563     {\bf j}(t) & \leftarrow & \mathsf{R}_\alpha(\theta) \cdot {\bf j}(0).
2564     \end{array}
2565     \right.
2566     \end{equation}
2567     $\mathsf{R}_\alpha$ is a quadratic approximation to
2568     the single-axis rotation matrix. For example, in the small-angle
2569     limit, the rotation matrix around the body-fixed x-axis can be
2570     approximated as
2571     \begin{equation}
2572     \mathsf{R}_x(\theta) \approx \left(
2573     \begin{array}{ccc}
2574     1 & 0 & 0 \\
2575     0 & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4} & -\frac{\theta}{1+
2576     \theta^2 / 4} \\
2577     0 & \frac{\theta}{1+
2578     \theta^2 / 4} & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4}
2579     \end{array}
2580     \right).
2581     \end{equation}
2582     All other rotations follow in a straightforward manner.
2583    
2584     After the first part of the propagation, the forces and body-fixed
2585     torques are calculated at the new positions and orientations
2586    
2587     {\tt doForces:}
2588     \begin{align*}
2589     {\bf f}(t + h) &\leftarrow
2590     - \left(\frac{\partial V}{\partial {\bf r}}\right)_{{\bf r}(t + h)}, \\
2591     %
2592     {\bf \tau}^{s}(t + h) &\leftarrow {\bf u}(t + h)
2593     \times \frac{\partial V}{\partial {\bf u}}, \\
2594     %
2595     {\bf \tau}^{b}(t + h) &\leftarrow \mathsf{A}(t + h)
2596     \cdot {\bf \tau}^s(t + h).
2597     \end{align*}
2598    
2599     {\sc OpenMD} automatically updates ${\bf u}$ when the rotation matrix
2600     $\mathsf{A}$ is calculated in {\tt moveA}. Once the forces and
2601     torques have been obtained at the new time step, the velocities can be
2602     advanced to the same time value.
2603    
2604     {\tt moveB:}
2605     \begin{align*}
2606     {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t + h / 2 \right)
2607     + \frac{h}{2} \left( {\bf f}(t + h) / m \right), \\
2608     %
2609     {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t + h / 2 \right)
2610     + \frac{h}{2} {\bf \tau}^b(t + h) .
2611     \end{align*}
2612    
2613     The matrix rotations used in the {\sc dlm} method end up being more
2614     costly computationally than the simpler arithmetic quaternion
2615     propagation. With the same time step, a 1024-molecule water simulation
2616     incurs an average 12\% increase in computation time using the {\sc
2617     dlm} method in place of quaternions. This cost is more than justified
2618     when comparing the energy conservation achieved by the two
2619     methods. Figure ~\ref{quatdlm} provides a comparative analysis of the
2620     {\sc dlm} method versus the traditional quaternion scheme.
2621    
2622     \begin{figure}
2623     \centering
2624     \includegraphics[width=\linewidth]{quatvsdlm.pdf}
2625     \caption[Energy conservation analysis of the {\sc dlm} and quaternion
2626     integration methods]{Analysis of the energy conservation of the {\sc
2627     dlm} and quaternion integration methods. $\delta \mathrm{E}_1$ is the
2628     linear drift in energy over time and $\delta \mathrm{E}_0$ is the
2629     standard deviation of energy fluctuations around this drift. All
2630     simulations were of a 1024-molecule simulation of SSD water at 298 K
2631     starting from the same initial configuration. Note that the {\sc dlm}
2632     method provides more than an order of magnitude improvement in both
2633     the energy drift and the size of the energy fluctuations when compared
2634     with the quaternion method at any given time step. At time steps
2635     larger than 4 fs, the quaternion scheme resulted in rapidly rising
2636     energies which eventually lead to simulation failure. Using the {\sc
2637     dlm} method, time steps up to 8 fs can be taken before this behavior
2638     is evident.}
2639     \label{quatdlm}
2640     \end{figure}
2641    
2642     In Fig.~\ref{quatdlm}, $\delta \mbox{E}_1$ is a measure of the linear
2643     energy drift in units of $\mbox{kcal mol}^{-1}$ per particle over a
2644     nanosecond of simulation time, and $\delta \mbox{E}_0$ is the standard
2645     deviation of the energy fluctuations in units of $\mbox{kcal
2646     mol}^{-1}$ per particle. In the top plot, it is apparent that the
2647     energy drift is reduced by a significant amount (2 to 3 orders of
2648     magnitude improvement at all tested time steps) by chosing the {\sc
2649     dlm} method over the simple non-symplectic quaternion integration
2650     method. In addition to this improvement in energy drift, the
2651     fluctuations in the total energy are also dampened by 1 to 2 orders of
2652     magnitude by utilizing the {\sc dlm} method.
2653    
2654     Although the {\sc dlm} method is more computationally expensive than
2655     the traditional quaternion scheme for propagating a single time step,
2656     consideration of the computational cost for a long simulation with a
2657     particular level of energy conservation is in order. A plot of energy
2658     drift versus computational cost was generated
2659     (Fig.~\ref{cpuCost}). This figure provides an estimate of the CPU time
2660     required under the two integration schemes for 1 nanosecond of
2661     simulation time for the model 1024-molecule system. By chosing a
2662     desired energy drift value it is possible to determine the CPU time
2663     required for both methods. If a $\delta \mbox{E}_1$ of $1 \times
2664     10^{-3} \mbox{kcal mol}^{-1}$ per particle is desired, a nanosecond of
2665     simulation time will require ~19 hours of CPU time with the {\sc dlm}
2666     integrator, while the quaternion scheme will require ~154 hours of CPU
2667     time. This demonstrates the computational advantage of the integration
2668     scheme utilized in {\sc OpenMD}.
2669    
2670     \begin{figure}
2671     \centering
2672     \includegraphics[width=\linewidth]{compCost.pdf}
2673     \caption[Energy drift as a function of required simulation run
2674     time]{Energy drift as a function of required simulation run time.
2675     $\delta \mathrm{E}_1$ is the linear drift in energy over time.
2676     Simulations were performed on a single 2.5 GHz Pentium 4
2677     processor. Simulation time comparisons can be made by tracing
2678     horizontally from one curve to the other. For example, a simulation
2679     that takes ~24 hours using the {\sc dlm} method will take roughly 210
2680     hours using the simple quaternion method if the same degree of energy
2681     conservation is desired.}
2682     \label{cpuCost}
2683     \end{figure}
2684    
2685     There is only one specific keyword relevant to the default integrator,
2686     and that is the time step for integrating the equations of motion.
2687    
2688     \begin{center}
2689     \begin{tabular}{llll}
2690     {\bf variable} & {\bf Meta-data keyword} & {\bf units} & {\bf
2691     default value} \\
2692     $h$ & {\tt dt = 2.0;} & fs & none
2693     \end{tabular}
2694     \end{center}
2695    
2696     \section{\label{sec:extended}Extended Systems for other Ensembles}
2697    
2698     {\sc OpenMD} implements a number of extended system integrators for
2699     sampling from other ensembles relevant to chemical physics. The
2700     integrator can be selected with the {\tt ensemble} keyword in the
2701     meta-data file:
2702    
2703     \begin{center}
2704     \begin{tabular}{lll}
2705     {\bf Integrator} & {\bf Ensemble} & {\bf Meta-data instruction} \\
2706     NVE & microcanonical & {\tt ensemble = NVE; } \\
2707     NVT & canonical & {\tt ensemble = NVT; } \\
2708     NPTi & isobaric-isothermal & {\tt ensemble = NPTi;} \\
2709     & (with isotropic volume changes) & \\
2710     NPTf & isobaric-isothermal & {\tt ensemble = NPTf;} \\
2711     & (with changes to box shape) & \\
2712     NPTxyz & approximate isobaric-isothermal & {\tt ensemble = NPTxyz;} \\
2713     & (with separate barostats on each box dimension) & \\
2714     LD & Langevin Dynamics & {\tt ensemble = LD;} \\
2715     & (approximates the effects of an implicit solvent) & \\
2716 gezelter 3709 LangevinHull & Non-periodic Langevin Dynamics & {\tt ensemble = LangevinHull;} \\
2717 kstocke1 3708 & (Langevin Dynamics for molecules on convex hull;\\
2718     & Newtonian for interior molecules) & \\
2719 gezelter 3607 \end{tabular}
2720     \end{center}
2721    
2722     The relatively well-known Nos\'e-Hoover thermostat\cite{Hoover85} is
2723     implemented in {\sc OpenMD}'s NVT integrator. This method couples an
2724     extra degree of freedom (the thermostat) to the kinetic energy of the
2725     system and it has been shown to sample the canonical distribution in
2726     the system degrees of freedom while conserving a quantity that is, to
2727     within a constant, the Helmholtz free energy.\cite{melchionna93}
2728    
2729     NPT algorithms attempt to maintain constant pressure in the system by
2730     coupling the volume of the system to a barostat. {\sc OpenMD} contains
2731     three different constant pressure algorithms. The first two, NPTi and
2732     NPTf have been shown to conserve a quantity that is, to within a
2733     constant, the Gibbs free energy.\cite{melchionna93} The Melchionna
2734     modification to the Hoover barostat is implemented in both NPTi and
2735     NPTf. NPTi allows only isotropic changes in the simulation box, while
2736     box {\it shape} variations are allowed in NPTf. The NPTxyz integrator
2737     has {\it not} been shown to sample from the isobaric-isothermal
2738     ensemble. It is useful, however, in that it maintains orthogonality
2739     for the axes of the simulation box while attempting to equalize
2740     pressure along the three perpendicular directions in the box.
2741    
2742     Each of the extended system integrators requires additional keywords
2743     to set target values for the thermodynamic state variables that are
2744     being held constant. Keywords are also required to set the
2745     characteristic decay times for the dynamics of the extended
2746     variables.
2747    
2748     \begin{center}
2749     \begin{tabular}{llll}
2750     {\bf variable} & {\bf Meta-data instruction} & {\bf units} & {\bf
2751     default value} \\
2752     $T_{\mathrm{target}}$ & {\tt targetTemperature = 300;} & K & none \\
2753     $P_{\mathrm{target}}$ & {\tt targetPressure = 1;} & atm & none \\
2754     $\tau_T$ & {\tt tauThermostat = 1e3;} & fs & none \\
2755     $\tau_B$ & {\tt tauBarostat = 5e3;} & fs & none \\
2756     & {\tt resetTime = 200;} & fs & none \\
2757     & {\tt useInitialExtendedSystemState = true;} & logical &
2758     true
2759     \end{tabular}
2760     \end{center}
2761    
2762     Two additional keywords can be used to either clear the extended
2763     system variables periodically ({\tt resetTime}), or to maintain the
2764     state of the extended system variables between simulations ({\tt
2765     useInitialExtendedSystemState}). More details on these variables
2766     and their use in the integrators follows below.
2767    
2768     \section{\label{section:noseHooverThermo}Nos\'{e}-Hoover Thermostatting}
2769    
2770     The Nos\'e-Hoover equations of motion are given by\cite{Hoover85}
2771     \begin{eqnarray}
2772     \dot{{\bf r}} & = & {\bf v}, \\
2773     \dot{{\bf v}} & = & \frac{{\bf f}}{m} - \chi {\bf v} ,\\
2774     \dot{\mathsf{A}} & = & \mathsf{A} \cdot
2775     \mbox{ skew}\left(\overleftrightarrow{\mathsf{I}}^{-1} \cdot {\bf j}\right), \\
2776     \dot{{\bf j}} & = & {\bf j} \times \left( \overleftrightarrow{\mathsf{I}}^{-1}
2777     \cdot {\bf j} \right) - \mbox{ rot}\left(\mathsf{A}^{T} \cdot \frac{\partial
2778     V}{\partial \mathsf{A}} \right) - \chi {\bf j}.
2779     \label{eq:nosehoovereom}
2780     \end{eqnarray}
2781    
2782     $\chi$ is an ``extra'' variable included in the extended system, and
2783     it is propagated using the first order equation of motion
2784     \begin{equation}
2785     \dot{\chi} = \frac{1}{\tau_{T}^2} \left( \frac{T}{T_{\mathrm{target}}} - 1 \right).
2786     \label{eq:nosehooverext}
2787     \end{equation}
2788    
2789     The instantaneous temperature $T$ is proportional to the total kinetic
2790     energy (both translational and orientational) and is given by
2791     \begin{equation}
2792     T = \frac{2 K}{f k_B}
2793     \end{equation}
2794     Here, $f$ is the total number of degrees of freedom in the system,
2795     \begin{equation}
2796     f = 3 N + 2 N_{\mathrm{linear}} + 3 N_{\mathrm{non-linear}} - N_{\mathrm{constraints}},
2797     \end{equation}
2798     and $K$ is the total kinetic energy,
2799     \begin{equation}
2800     K = \sum_{i=1}^{N} \frac{1}{2} m_i {\bf v}_i^T \cdot {\bf v}_i +
2801     \sum_{i=1}^{N_{\mathrm{linear}}+N_{\mathrm{non-linear}}} \frac{1}{2} {\bf j}_i^T \cdot
2802     \overleftrightarrow{\mathsf{I}}_i^{-1} \cdot {\bf j}_i.
2803     \end{equation}
2804     $N_{\mathrm{linear}}$ is the number of linear rotors (i.e. with two
2805     non-zero moments of inertia), and $N_{\mathrm{non-linear}}$ is the
2806     number of non-linear rotors (i.e. with three non-zero moments of
2807     inertia).
2808    
2809     In eq.(\ref{eq:nosehooverext}), $\tau_T$ is the time constant for
2810     relaxation of the temperature to the target value. To set values for
2811     $\tau_T$ or $T_{\mathrm{target}}$ in a simulation, one would use the
2812     {\tt tauThermostat} and {\tt targetTemperature} keywords in the
2813     meta-data file. The units for {\tt tauThermostat} are fs, and the
2814     units for the {\tt targetTemperature} are degrees K. The integration
2815     of the equations of motion is carried out in a velocity-Verlet style 2
2816     part algorithm:
2817    
2818     {\tt moveA:}
2819     \begin{align*}
2820     T(t) &\leftarrow \left\{{\bf v}(t)\right\}, \left\{{\bf j}(t)\right\} ,\\
2821     %
2822     {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
2823     + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} - {\bf v}(t)
2824     \chi(t)\right), \\
2825     %
2826     {\bf r}(t + h) &\leftarrow {\bf r}(t)
2827     + h {\bf v}\left(t + h / 2 \right) ,\\
2828     %
2829     {\bf j}\left(t + h / 2 \right) &\leftarrow {\bf j}(t)
2830     + \frac{h}{2} \left( {\bf \tau}^b(t) - {\bf j}(t)
2831     \chi(t) \right) ,\\
2832     %
2833     \mathsf{A}(t + h) &\leftarrow \mathrm{rotate}
2834     \left(h * {\bf j}(t + h / 2)
2835     \overleftrightarrow{\mathsf{I}}^{-1} \right) ,\\
2836     %
2837     \chi\left(t + h / 2 \right) &\leftarrow \chi(t)
2838     + \frac{h}{2 \tau_T^2} \left( \frac{T(t)}
2839     {T_{\mathrm{target}}} - 1 \right) .
2840     \end{align*}
2841    
2842     Here $\mathrm{rotate}(h * {\bf j}
2843     \overleftrightarrow{\mathsf{I}}^{-1})$ is the same symplectic Trotter
2844     factorization of the three rotation operations that was discussed in
2845     the section on the {\sc dlm} integrator. Note that this operation modifies
2846     both the rotation matrix $\mathsf{A}$ and the angular momentum ${\bf
2847     j}$. {\tt moveA} propagates velocities by a half time step, and
2848     positional degrees of freedom by a full time step. The new positions
2849     (and orientations) are then used to calculate a new set of forces and
2850     torques in exactly the same way they are calculated in the {\tt
2851     doForces} portion of the {\sc dlm} integrator.
2852    
2853     Once the forces and torques have been obtained at the new time step,
2854     the temperature, velocities, and the extended system variable can be
2855     advanced to the same time value.
2856    
2857     {\tt moveB:}
2858     \begin{align*}
2859     T(t + h) &\leftarrow \left\{{\bf v}(t + h)\right\},
2860     \left\{{\bf j}(t + h)\right\}, \\
2861     %
2862     \chi\left(t + h \right) &\leftarrow \chi\left(t + h /
2863     2 \right) + \frac{h}{2 \tau_T^2} \left( \frac{T(t+h)}
2864     {T_{\mathrm{target}}} - 1 \right), \\
2865     %
2866     {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
2867     + h / 2 \right) + \frac{h}{2} \left(
2868     \frac{{\bf f}(t + h)}{m} - {\bf v}(t + h)
2869     \chi(t h)\right) ,\\
2870     %
2871     {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t
2872     + h / 2 \right) + \frac{h}{2}
2873     \left( {\bf \tau}^b(t + h) - {\bf j}(t + h)
2874     \chi(t + h) \right) .
2875     \end{align*}
2876    
2877     Since ${\bf v}(t + h)$ and ${\bf j}(t + h)$ are required to calculate
2878     $T(t + h)$ as well as $\chi(t + h)$, they indirectly depend on their
2879     own values at time $t + h$. {\tt moveB} is therefore done in an
2880     iterative fashion until $\chi(t + h)$ becomes self-consistent. The
2881     relative tolerance for the self-consistency check defaults to a value
2882     of $\mbox{10}^{-6}$, but {\sc OpenMD} will terminate the iteration
2883     after 4 loops even if the consistency check has not been satisfied.
2884    
2885     The Nos\'e-Hoover algorithm is known to conserve a Hamiltonian for the
2886     extended system that is, to within a constant, identical to the
2887     Helmholtz free energy,\cite{melchionna93}
2888     \begin{equation}
2889     H_{\mathrm{NVT}} = V + K + f k_B T_{\mathrm{target}} \left(
2890     \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
2891     \right).
2892     \end{equation}
2893     Poor choices of $h$ or $\tau_T$ can result in non-conservation
2894     of $H_{\mathrm{NVT}}$, so the conserved quantity is maintained in the
2895     last column of the {\tt .stat} file to allow checks on the quality of
2896     the integration.
2897    
2898     Bond constraints are applied at the end of both the {\tt moveA} and
2899     {\tt moveB} portions of the algorithm. Details on the constraint
2900     algorithms are given in section \ref{section:rattle}.
2901    
2902     \section{\label{sec:NPTi}Constant-pressure integration with
2903     isotropic box deformations (NPTi)}
2904    
2905     To carry out isobaric-isothermal ensemble calculations, {\sc OpenMD}
2906     implements the Melchionna modifications to the Nos\'e-Hoover-Andersen
2907     equations of motion.\cite{melchionna93} The equations of motion are
2908     the same as NVT with the following exceptions:
2909    
2910     \begin{eqnarray}
2911     \dot{{\bf r}} & = & {\bf v} + \eta \left( {\bf r} - {\bf R}_0 \right), \\
2912     \dot{{\bf v}} & = & \frac{{\bf f}}{m} - (\eta + \chi) {\bf v}, \\
2913     \dot{\eta} & = & \frac{1}{\tau_{B}^2 f k_B T_{\mathrm{target}}} V \left( P -
2914     P_{\mathrm{target}} \right), \\
2915     \dot{\mathcal{V}} & = & 3 \mathcal{V} \eta .
2916     \label{eq:melchionna1}
2917     \end{eqnarray}
2918    
2919     $\chi$ and $\eta$ are the ``extra'' degrees of freedom in the extended
2920     system. $\chi$ is a thermostat, and it has the same function as it
2921     does in the Nos\'e-Hoover NVT integrator. $\eta$ is a barostat which
2922     controls changes to the volume of the simulation box. ${\bf R}_0$ is
2923     the location of the center of mass for the entire system, and
2924     $\mathcal{V}$ is the volume of the simulation box. At any time, the
2925     volume can be calculated from the determinant of the matrix which
2926     describes the box shape:
2927     \begin{equation}
2928     \mathcal{V} = \det(\mathsf{H}).
2929     \end{equation}
2930    
2931     The NPTi integrator requires an instantaneous pressure. This quantity
2932     is calculated via the pressure tensor,
2933     \begin{equation}
2934     \overleftrightarrow{\mathsf{P}}(t) = \frac{1}{\mathcal{V}(t)} \left(
2935     \sum_{i=1}^{N} m_i {\bf v}_i(t) \otimes {\bf v}_i(t) \right) +
2936     \overleftrightarrow{\mathsf{W}}(t).
2937     \end{equation}
2938     The kinetic contribution to the pressure tensor utilizes the {\it
2939     outer} product of the velocities, denoted by the $\otimes$ symbol. The
2940     stress tensor is calculated from another outer product of the
2941     inter-atomic separation vectors (${\bf r}_{ij} = {\bf r}_j - {\bf
2942     r}_i$) with the forces between the same two atoms,
2943     \begin{equation}
2944     \overleftrightarrow{\mathsf{W}}(t) = \sum_{i} \sum_{j>i} {\bf r}_{ij}(t)
2945     \otimes {\bf f}_{ij}(t).
2946     \end{equation}
2947     In systems containing cutoff groups, the stress tensor is computed
2948     between the centers-of-mass of the cutoff groups:
2949     \begin{equation}
2950     \overleftrightarrow{\mathsf{W}}(t) = \sum_{a} \sum_{b} {\bf r}_{ab}(t)
2951     \otimes {\bf f}_{ab}(t).
2952     \end{equation}
2953     where ${\bf r}_{ab}$ is the distance between the centers of mass, and
2954     \begin{equation}
2955     {\bf f}_{ab} = s(r_{ab}) \sum_{i \in a} \sum_{j \in b} {\bf f}_{ij} +
2956     s^{\prime}(r_{ab}) \frac{{\bf r}_{ab}}{|r_{ab}|} \sum_{i \in a} \sum_{j
2957     \in b} V_{ij}({\bf r}_{ij}).
2958     \end{equation}
2959    
2960     The instantaneous pressure is then simply obtained from the trace of
2961     the pressure tensor,
2962     \begin{equation}
2963     P(t) = \frac{1}{3} \mathrm{Tr} \left( \overleftrightarrow{\mathsf{P}}(t)
2964     \right).
2965     \end{equation}
2966    
2967     In eq.(\ref{eq:melchionna1}), $\tau_B$ is the time constant for
2968     relaxation of the pressure to the target value. To set values for
2969     $\tau_B$ or $P_{\mathrm{target}}$ in a simulation, one would use the
2970     {\tt tauBarostat} and {\tt targetPressure} keywords in the meta-data
2971     file. The units for {\tt tauBarostat} are fs, and the units for the
2972     {\tt targetPressure} are atmospheres. Like in the NVT integrator, the
2973     integration of the equations of motion is carried out in a
2974     velocity-Verlet style two part algorithm with only the following
2975     differences:
2976    
2977     {\tt moveA:}
2978     \begin{align*}
2979     P(t) &\leftarrow \left\{{\bf r}(t)\right\}, \left\{{\bf v}(t)\right\} ,\\
2980     %
2981     {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
2982     + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} - {\bf v}(t)
2983     \left(\chi(t) + \eta(t) \right) \right), \\
2984     %
2985     \eta(t + h / 2) &\leftarrow \eta(t) + \frac{h
2986     \mathcal{V}(t)}{2 N k_B T(t) \tau_B^2} \left( P(t)
2987     - P_{\mathrm{target}} \right), \\
2988     %
2989     {\bf r}(t + h) &\leftarrow {\bf r}(t) + h
2990     \left\{ {\bf v}\left(t + h / 2 \right)
2991     + \eta(t + h / 2)\left[ {\bf r}(t + h)
2992     - {\bf R}_0 \right] \right\} ,\\
2993     %
2994     \mathsf{H}(t + h) &\leftarrow e^{-h \eta(t + h / 2)}
2995     \mathsf{H}(t).
2996     \end{align*}
2997    
2998     The propagation of positions to time $t + h$
2999     depends on the positions at the same time. {\sc OpenMD} carries out
3000     this step iteratively (with a limit of 5 passes through the iterative
3001     loop). Also, the simulation box $\mathsf{H}$ is scaled uniformly for
3002     one full time step by an exponential factor that depends on the value
3003     of $\eta$ at time $t +
3004     h / 2$. Reshaping the box uniformly also scales the volume of
3005     the box by
3006     \begin{equation}
3007     \mathcal{V}(t + h) \leftarrow e^{ - 3 h \eta(t + h /2)} \times
3008     \mathcal{V}(t).
3009     \end{equation}
3010    
3011     The {\tt doForces} step for the NPTi integrator is exactly the same as
3012     in both the {\sc dlm} and NVT integrators. Once the forces and torques have
3013     been obtained at the new time step, the velocities can be advanced to
3014     the same time value.
3015    
3016     {\tt moveB:}
3017     \begin{align*}
3018     P(t + h) &\leftarrow \left\{{\bf r}(t + h)\right\},
3019     \left\{{\bf v}(t + h)\right\}, \\
3020     %
3021     \eta(t + h) &\leftarrow \eta(t + h / 2) +
3022     \frac{h \mathcal{V}(t + h)}{2 N k_B T(t + h)
3023     \tau_B^2} \left( P(t + h) - P_{\mathrm{target}} \right), \\
3024     %
3025     {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
3026     + h / 2 \right) + \frac{h}{2} \left(
3027     \frac{{\bf f}(t + h)}{m} - {\bf v}(t + h)
3028     (\chi(t + h) + \eta(t + h)) \right) ,\\
3029     %
3030     {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t
3031     + h / 2 \right) + \frac{h}{2} \left( {\bf
3032     \tau}^b(t + h) - {\bf j}(t + h)
3033     \chi(t + h) \right) .
3034     \end{align*}
3035    
3036     Once again, since ${\bf v}(t + h)$ and ${\bf j}(t + h)$ are required
3037     to calculate $T(t + h)$, $P(t + h)$, $\chi(t + h)$, and $\eta(t +
3038     h)$, they indirectly depend on their own values at time $t + h$. {\tt
3039     moveB} is therefore done in an iterative fashion until $\chi(t + h)$
3040     and $\eta(t + h)$ become self-consistent. The relative tolerance for
3041     the self-consistency check defaults to a value of $\mbox{10}^{-6}$,
3042     but {\sc OpenMD} will terminate the iteration after 4 loops even if the
3043     consistency check has not been satisfied.
3044    
3045     The Melchionna modification of the Nos\'e-Hoover-Andersen algorithm is
3046     known to conserve a Hamiltonian for the extended system that is, to
3047     within a constant, identical to the Gibbs free energy,
3048     \begin{equation}
3049     H_{\mathrm{NPTi}} = V + K + f k_B T_{\mathrm{target}} \left(
3050     \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
3051     \right) + P_{\mathrm{target}} \mathcal{V}(t).
3052     \end{equation}
3053     Poor choices of $\delta t$, $\tau_T$, or $\tau_B$ can result in
3054     non-conservation of $H_{\mathrm{NPTi}}$, so the conserved quantity is
3055     maintained in the last column of the {\tt .stat} file to allow checks
3056     on the quality of the integration. It is also known that this
3057     algorithm samples the equilibrium distribution for the enthalpy
3058     (including contributions for the thermostat and barostat),
3059     \begin{equation}
3060     H_{\mathrm{NPTi}} = V + K + \frac{f k_B T_{\mathrm{target}}}{2} \left(
3061     \chi^2 \tau_T^2 + \eta^2 \tau_B^2 \right) + P_{\mathrm{target}}
3062     \mathcal{V}(t).
3063     \end{equation}
3064    
3065     Bond constraints are applied at the end of both the {\tt moveA} and
3066     {\tt moveB} portions of the algorithm. Details on the constraint
3067     algorithms are given in section \ref{section:rattle}.
3068    
3069     \section{\label{sec:NPTf}Constant-pressure integration with a
3070     flexible box (NPTf)}
3071    
3072     There is a relatively simple generalization of the
3073     Nos\'e-Hoover-Andersen method to include changes in the simulation box
3074     {\it shape} as well as in the volume of the box. This method utilizes
3075     the full $3 \times 3$ pressure tensor and introduces a tensor of
3076     extended variables ($\overleftrightarrow{\eta}$) to control changes to
3077     the box shape. The equations of motion for this method differ from
3078     those of NPTi as follows:
3079     \begin{eqnarray}
3080     \dot{{\bf r}} & = & {\bf v} + \overleftrightarrow{\eta} \cdot \left( {\bf r} - {\bf R}_0 \right), \\
3081     \dot{{\bf v}} & = & \frac{{\bf f}}{m} - (\overleftrightarrow{\eta} +
3082     \chi \cdot \mathsf{1}) {\bf v}, \\
3083     \dot{\overleftrightarrow{\eta}} & = & \frac{1}{\tau_{B}^2 f k_B
3084     T_{\mathrm{target}}} V \left( \overleftrightarrow{\mathsf{P}} - P_{\mathrm{target}}\mathsf{1} \right) ,\\
3085     \dot{\mathsf{H}} & = & \overleftrightarrow{\eta} \cdot \mathsf{H} .
3086     \label{eq:melchionna2}
3087     \end{eqnarray}
3088    
3089     Here, $\mathsf{1}$ is the unit matrix and $\overleftrightarrow{\mathsf{P}}$
3090     is the pressure tensor. Again, the volume, $\mathcal{V} = \det
3091     \mathsf{H}$.
3092    
3093     The propagation of the equations of motion is nearly identical to the
3094     NPTi integration:
3095    
3096     {\tt moveA:}
3097     \begin{align*}
3098     \overleftrightarrow{\mathsf{P}}(t) &\leftarrow \left\{{\bf r}(t)\right\},
3099     \left\{{\bf v}(t)\right\} ,\\
3100     %
3101     {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
3102     + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} -
3103     \left(\chi(t)\mathsf{1} + \overleftrightarrow{\eta}(t) \right) \cdot
3104     {\bf v}(t) \right), \\
3105     %
3106     \overleftrightarrow{\eta}(t + h / 2) &\leftarrow
3107     \overleftrightarrow{\eta}(t) + \frac{h \mathcal{V}(t)}{2 N k_B
3108     T(t) \tau_B^2} \left( \overleftrightarrow{\mathsf{P}}(t)
3109     - P_{\mathrm{target}}\mathsf{1} \right), \\
3110     %
3111     {\bf r}(t + h) &\leftarrow {\bf r}(t) + h \left\{ {\bf v}
3112     \left(t + h / 2 \right) + \overleftrightarrow{\eta}(t +
3113     h / 2) \cdot \left[ {\bf r}(t + h)
3114     - {\bf R}_0 \right] \right\}, \\
3115     %
3116     \mathsf{H}(t + h) &\leftarrow \mathsf{H}(t) \cdot e^{-h
3117     \overleftrightarrow{\eta}(t + h / 2)} .
3118     \end{align*}
3119     {\sc OpenMD} uses a power series expansion truncated at second order
3120     for the exponential operation which scales the simulation box.
3121    
3122     The {\tt moveB} portion of the algorithm is largely unchanged from the
3123     NPTi integrator:
3124    
3125     {\tt moveB:}
3126     \begin{align*}
3127     \overleftrightarrow{\mathsf{P}}(t + h) &\leftarrow \left\{{\bf r}
3128     (t + h)\right\}, \left\{{\bf v}(t
3129     + h)\right\}, \left\{{\bf f}(t + h)\right\} ,\\
3130     %
3131     \overleftrightarrow{\eta}(t + h) &\leftarrow
3132     \overleftrightarrow{\eta}(t + h / 2) +
3133     \frac{h \mathcal{V}(t + h)}{2 N k_B T(t + h)
3134     \tau_B^2} \left( \overleftrightarrow{P}(t + h)
3135     - P_{\mathrm{target}}\mathsf{1} \right) ,\\
3136     %
3137     {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
3138     + h / 2 \right) + \frac{h}{2} \left(
3139     \frac{{\bf f}(t + h)}{m} -
3140     (\chi(t + h)\mathsf{1} + \overleftrightarrow{\eta}(t
3141     + h)) \right) \cdot {\bf v}(t + h), \\
3142     \end{align*}
3143    
3144     The iterative schemes for both {\tt moveA} and {\tt moveB} are
3145     identical to those described for the NPTi integrator.
3146    
3147     The NPTf integrator is known to conserve the following Hamiltonian:
3148     \begin{equation}
3149     H_{\mathrm{NPTf}} = V + K + f k_B T_{\mathrm{target}} \left(
3150     \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
3151     \right) + P_{\mathrm{target}} \mathcal{V}(t) + \frac{f k_B
3152     T_{\mathrm{target}}}{2}
3153     \mathrm{Tr}\left[\overleftrightarrow{\eta}(t)\right]^2 \tau_B^2.
3154     \end{equation}
3155    
3156     This integrator must be used with care, particularly in liquid
3157     simulations. Liquids have very small restoring forces in the
3158     off-diagonal directions, and the simulation box can very quickly form
3159     elongated and sheared geometries which become smaller than the cutoff
3160     radius. The NPTf integrator finds most use in simulating crystals or
3161     liquid crystals which assume non-orthorhombic geometries.
3162    
3163     \section{\label{nptxyz}Constant pressure in 3 axes (NPTxyz)}
3164    
3165     There is one additional extended system integrator which is somewhat
3166     simpler than the NPTf method described above. In this case, the three
3167     axes have independent barostats which each attempt to preserve the
3168     target pressure along the box walls perpendicular to that particular
3169     axis. The lengths of the box axes are allowed to fluctuate
3170     independently, but the angle between the box axes does not change.
3171     The equations of motion are identical to those described above, but
3172     only the {\it diagonal} elements of $\overleftrightarrow{\eta}$ are
3173     computed. The off-diagonal elements are set to zero (even when the
3174     pressure tensor has non-zero off-diagonal elements).
3175    
3176     It should be noted that the NPTxyz integrator is {\it not} known to
3177     preserve any Hamiltonian of interest to the chemical physics
3178     community. The integrator is extremely useful, however, in generating
3179     initial conditions for other integration methods. It {\it is} suitable
3180     for use with liquid simulations, or in cases where there is
3181     orientational anisotropy in the system (i.e. in lipid bilayer
3182     simulations).
3183    
3184     \section{Langevin Dynamics (LD)\label{LDRB}}
3185    
3186     {\sc OpenMD} implements a Langevin integrator in order to perform
3187     molecular dynamics simulations in implicit solvent environments. This
3188     can result in substantial performance gains when the detailed dynamics
3189     of the solvent is not important. Since {\sc OpenMD} also handles rigid
3190     bodies of arbitrary composition and shape, the Langevin integrator is
3191     by necessity somewhat more complex than in other simulation packages.
3192    
3193     Consider the Langevin equations of motion in generalized coordinates
3194     \begin{equation}
3195     {\bf M} \dot{{\bf V}}(t) = {\bf F}_{s}(t) +
3196     {\bf F}_{f}(t) + {\bf F}_{r}(t)
3197     \label{LDGeneralizedForm}
3198     \end{equation}
3199     where ${\bf M}$ is a $6 \times 6$ diagonal mass matrix (which
3200     includes the mass of the rigid body as well as the moments of inertia
3201     in the body-fixed frame) and ${\bf V}$ is a generalized velocity,
3202     ${\bf V} =
3203     \left\{{\bf v},{\bf \omega}\right\}$. The right side of
3204 kstocke1 3708 Eq. \ref{LDGeneralizedForm} consists of three generalized forces: a
3205 gezelter 3607 system force (${\bf F}_{s}$), a frictional or dissipative force (${\bf
3206     F}_{f}$) and a stochastic force (${\bf F}_{r}$). While the evolution
3207     of the system in Newtonian mechanics is typically done in the lab
3208     frame, it is convenient to handle the dynamics of rigid bodies in
3209     body-fixed frames. Thus the friction and random forces on each
3210     substructure are calculated in a body-fixed frame and may converted
3211     back to the lab frame using that substructure's rotation matrix (${\bf
3212     Q}$):
3213     \begin{equation}
3214     {\bf F}_{f,r} =
3215     \left( \begin{array}{c}
3216     {\bf f}_{f,r} \\
3217     {\bf \tau}_{f,r}
3218     \end{array} \right)
3219     =
3220     \left( \begin{array}{c}
3221     {\bf Q}^{T} {\bf f}^{~b}_{f,r} \\
3222     {\bf Q}^{T} {\bf \tau}^{~b}_{f,r}
3223     \end{array} \right)
3224     \end{equation}
3225     The body-fixed friction force, ${\bf F}_{f}^{~b}$, is proportional to
3226     the (body-fixed) velocity at the center of resistance
3227     ${\bf v}_{R}^{~b}$ and the angular velocity ${\bf \omega}$
3228     \begin{equation}
3229     {\bf F}_{f}^{~b}(t) = \left( \begin{array}{l}
3230     {\bf f}_{f}^{~b}(t) \\
3231     {\bf \tau}_{f}^{~b}(t) \\
3232     \end{array} \right) = - \left( \begin{array}{*{20}c}
3233     \Xi_{R}^{tt} & \Xi_{R}^{rt} \\
3234     \Xi_{R}^{tr} & \Xi_{R}^{rr} \\
3235     \end{array} \right)\left( \begin{array}{l}
3236     {\bf v}_{R}^{~b}(t) \\
3237     {\bf \omega}(t) \\
3238     \end{array} \right),
3239     \end{equation}
3240     while the random force, ${\bf F}_{r}$, is a Gaussian stochastic
3241     variable with zero mean and variance,
3242     \begin{equation}
3243     \left\langle {{\bf F}_{r}(t) ({\bf F}_{r}(t'))^T } \right\rangle =
3244     \left\langle {{\bf F}_{r}^{~b} (t) ({\bf F}_{r}^{~b} (t'))^T } \right\rangle =
3245     2 k_B T \Xi_R \delta(t - t'). \label{eq:randomForce}
3246     \end{equation}
3247     $\Xi_R$ is the $6\times6$ resistance tensor at the center of
3248     resistance.
3249    
3250     For atoms and ellipsoids, there are good approximations for this
3251     tensor that are based on Stokes' law. For arbitrary rigid bodies, the
3252     resistance tensor must be pre-computed before Langevin dynamics can be
3253     used. The {\sc OpenMD} distribution contains a utitilty program called
3254     Hydro that performs this computation.
3255    
3256     Once this tensor is known for a given {\tt integrableObject},
3257     obtaining a stochastic vector that has the properties in
3258     Eq. (\ref{eq:randomForce}) can be done efficiently by carrying out a
3259     one-time Cholesky decomposition to obtain the square root matrix of
3260     the resistance tensor,
3261     \begin{equation}
3262     \Xi_R = {\bf S} {\bf S}^{T},
3263     \label{eq:Cholesky}
3264     \end{equation}
3265     where ${\bf S}$ is a lower triangular matrix.\cite{Schlick2002} A
3266     vector with the statistics required for the random force can then be
3267     obtained by multiplying ${\bf S}$ onto a random 6-vector ${\bf Z}$ which
3268     has elements chosen from a Gaussian distribution, such that:
3269     \begin{equation}
3270     \langle {\bf Z}_i \rangle = 0, \hspace{1in} \langle {\bf Z}_i \cdot
3271     {\bf Z}_j \rangle = \frac{2 k_B T}{\delta t} \delta_{ij},
3272     \end{equation}
3273     where $\delta t$ is the timestep in use during the simulation. The
3274     random force, ${\bf F}_{r}^{~b} = {\bf S} {\bf Z}$, can be shown to have the
3275     correct properties required by Eq. (\ref{eq:randomForce}).
3276    
3277     The equation of motion for the translational velocity of the center of
3278     mass (${\bf v}$) can be written as
3279     \begin{equation}
3280     m \dot{{\bf v}} (t) = {\bf f}_{s}(t) + {\bf f}_{f}(t) +
3281     {\bf f}_{r}(t)
3282     \end{equation}
3283     Since the frictional and random forces are applied at the center of
3284     resistance, which generally does not coincide with the center of mass,
3285     extra torques are exerted at the center of mass. Thus, the net
3286     body-fixed torque at the center of mass, $\tau^{~b}(t)$,
3287     is given by
3288     \begin{equation}
3289     \tau^{~b} \leftarrow \tau_{s}^{~b} + \tau_{f}^{~b} + \tau_{r}^{~b} + {\bf r}_{MR} \times \left( {\bf f}_{f}^{~b} + {\bf f}_{r}^{~b} \right)
3290     \end{equation}
3291     where ${\bf r}_{MR}$ is the vector from the center of mass to the center of
3292     resistance. Instead of integrating the angular velocity in lab-fixed
3293     frame, we consider the equation of motion for the angular momentum
3294     (${\bf j}$) in the body-fixed frame
3295     \begin{equation}
3296     \frac{\partial}{\partial t}{\bf j}(t) = \tau^{~b}(t)
3297     \end{equation}
3298     By embedding the friction and random forces into the the total force
3299     and torque, {\sc OpenMD} integrates the Langevin equations of motion
3300     for a rigid body of arbitrary shape in a velocity-Verlet style 2-part
3301     algorithm, where $h = \delta t$:
3302    
3303     {\tt move A:}
3304     \begin{align*}
3305     {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
3306     + \frac{h}{2} \left( {\bf f}(t) / m \right), \\
3307     %
3308     {\bf r}(t + h) &\leftarrow {\bf r}(t)
3309     + h {\bf v}\left(t + h / 2 \right), \\
3310     %
3311     {\bf j}\left(t + h / 2 \right) &\leftarrow {\bf j}(t)
3312     + \frac{h}{2} {\bf \tau}^{~b}(t), \\
3313     %
3314     {\bf Q}(t + h) &\leftarrow \mathrm{rotate}\left( h {\bf j}
3315     (t + h / 2) \cdot \overleftrightarrow{\mathsf{I}}^{-1} \right).
3316     \end{align*}
3317     In this context, $\overleftrightarrow{\mathsf{I}}$ is the diagonal
3318     moment of inertia tensor, and the $\mathrm{rotate}$ function is the
3319     reversible product of the three body-fixed rotations,
3320     \begin{equation}
3321     \mathrm{rotate}({\bf a}) = \mathsf{G}_x(a_x / 2) \cdot
3322     \mathsf{G}_y(a_y / 2) \cdot \mathsf{G}_z(a_z) \cdot \mathsf{G}_y(a_y
3323     / 2) \cdot \mathsf{G}_x(a_x /2),
3324     \end{equation}
3325     where each rotational propagator, $\mathsf{G}_\alpha(\theta)$,
3326     rotates both the rotation matrix ($\mathbf{Q}$) and the body-fixed
3327     angular momentum (${\bf j}$) by an angle $\theta$ around body-fixed
3328     axis $\alpha$,
3329     \begin{equation}
3330     \mathsf{G}_\alpha( \theta ) = \left\{
3331     \begin{array}{lcl}
3332     \mathbf{Q}(t) & \leftarrow & \mathbf{Q}(0) \cdot \mathsf{R}_\alpha(\theta)^T, \\
3333     {\bf j}(t) & \leftarrow & \mathsf{R}_\alpha(\theta) \cdot {\bf
3334     j}(0).
3335     \end{array}
3336     \right.
3337     \end{equation}
3338     $\mathsf{R}_\alpha$ is a quadratic approximation to the single-axis
3339     rotation matrix. For example, in the small-angle limit, the
3340     rotation matrix around the body-fixed x-axis can be approximated as
3341     \begin{equation}
3342     \mathsf{R}_x(\theta) \approx \left(
3343     \begin{array}{ccc}
3344     1 & 0 & 0 \\
3345     0 & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4} & -\frac{\theta}{1+
3346     \theta^2 / 4} \\
3347     0 & \frac{\theta}{1+ \theta^2 / 4} & \frac{1-\theta^2 / 4}{1 +
3348     \theta^2 / 4}
3349     \end{array}
3350     \right).
3351     \end{equation}
3352     All other rotations follow in a straightforward manner. After the
3353     first part of the propagation, the forces and body-fixed torques are
3354     calculated at the new positions and orientations. The system forces
3355     and torques are derivatives of the total potential energy function
3356     ($U$) with respect to the rigid body positions (${\bf r}$) and the
3357     columns of the transposed rotation matrix ${\bf Q}^T = \left({\bf
3358     u}_x, {\bf u}_y, {\bf u}_z \right)$:
3359    
3360     {\tt Forces:}
3361     \begin{align*}
3362     {\bf f}_{s}(t + h) & \leftarrow
3363     - \left(\frac{\partial U}{\partial {\bf r}}\right)_{{\bf r}(t + h)} \\
3364     %
3365     {\bf \tau}_{s}(t + h) &\leftarrow {\bf u}(t + h)
3366     \times \frac{\partial U}{\partial {\bf u}} \\
3367     %
3368     {\bf v}^{b}_{R}(t+h) & \leftarrow \mathbf{Q}(t+h) \cdot \left({\bf v}(t+h) + {\bf \omega}(t+h) \times {\bf r}_{MR} \right) \\
3369     %
3370     {\bf f}_{R,f}^{b}(t+h) & \leftarrow - \Xi_{R}^{tt} \cdot
3371     {\bf v}^{b}_{R}(t+h) - \Xi_{R}^{rt} \cdot {\bf \omega}(t+h) \\
3372     %
3373     {\bf \tau}_{R,f}^{b}(t+h) & \leftarrow - \Xi_{R}^{tr} \cdot
3374     {\bf v}^{b}_{R}(t+h) - \Xi_{R}^{rr} \cdot {\bf \omega}(t+h) \\
3375     %
3376     Z & \leftarrow {\tt GaussianNormal}(2 k_B T / h, 6) \\
3377     {\bf F}_{R,r}^{b}(t+h) & \leftarrow {\bf S} \cdot Z \\
3378     %
3379     {\bf f}(t+h) & \leftarrow {\bf f}_{s}(t+h) + \mathbf{Q}^{T}(t+h)
3380     \cdot \left({\bf f}_{R,f}^{~b} + {\bf f}_{R,r}^{~b} \right) \\
3381     %
3382     \tau(t+h) & \leftarrow \tau_{s}(t+h) + \mathbf{Q}^{T}(t+h) \cdot \left(\tau_{R,f}^{~b} + \tau_{R,r}^{~b} \right) + {\bf r}_{MR} \times \left({\bf f}_{f}(t+h) + {\bf f}_{r}(t+h) \right) \\
3383     \tau^{~b}(t+h) & \leftarrow \mathbf{Q}(t+h) \cdot \tau(t+h) \\
3384     \end{align*}
3385     Frictional (and random) forces and torques must be computed at the
3386     center of resistance, so there are additional steps required to find
3387     the body-fixed velocity (${\bf v}_{R}^{~b}$) at this location. Mapping
3388     the frictional and random forces at the center of resistance back to
3389     the center of mass also introduces an additional term in the torque
3390     one obtains at the center of mass.
3391    
3392     Once the forces and torques have been obtained at the new time step,
3393     the velocities can be advanced to the same time value.
3394    
3395     {\tt move B:}
3396     \begin{align*}
3397     {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t + h / 2
3398     \right)
3399     + \frac{h}{2} \left( {\bf f}(t + h) / m \right), \\
3400     %
3401     {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t + h / 2
3402     \right)
3403     + \frac{h}{2} {\bf \tau}^{~b}(t + h) .
3404     \end{align*}
3405    
3406     The viscosity of the implicit solvent must be specified using the {\tt
3407     viscosity} keyword in the meta-data file if the Langevin integrator is
3408     selected. For simple particles (spheres and ellipsoids), no further
3409     parameters are necessary. Since there are no analytic solutions for
3410     the resistance tensors for composite rigid bodies, the approximate
3411     tensors for these objects must also be specified in order to use
3412     Langevin dynamics. The meta-data file must therefore point to another
3413     file which contains the information about the hydrodynamic properties
3414     of all complex rigid bodies being used during the simulation. The
3415     {\tt HydroPropFile} keyword is used to specify the name of this
3416     file. A {\tt HydroPropFile} should be precalculated using the Hydro
3417     program that is included in the {\sc OpenMD} distribution.
3418    
3419     \begin{longtable}[c]{ABG}
3420     \caption{Meta-data Keywords: Required parameters for the Langevin integrator}
3421     \\
3422     {\bf keyword} & {\bf units} & {\bf use} \\ \hline
3423     \endhead
3424     \hline
3425     \endfoot
3426 kstocke1 3708 {\tt viscosity} & poise & Sets the value of viscosity of the implicit
3427 gezelter 3607 solvent \\
3428     {\tt targetTemp} & K & Sets the target temperature of the system.
3429     This parameter must be specified to use Langevin dynamics. \\
3430     {\tt HydroPropFile} & string & Specifies the name of the resistance
3431     tensor (usually a {\tt .diff} file) which is precalculated by {\tt
3432 kstocke1 3708 Hydro}. This keyword is not necessary if the simulation contains only
3433 gezelter 3607 simple bodies (spheres and ellipsoids). \\
3434     {\tt beadSize} & $\mbox{\AA}$ & Sets the diameter of the beads to use
3435     when the {\tt RoughShell} model is used to approximate the resistance
3436     tensor.
3437     \label{table:ldParameters}
3438     \end{longtable}
3439    
3440 gezelter 3709 \section{Constant Pressure without periodic boundary conditions (The LangevinHull)}
3441 kstocke1 3708
3442 kstocke1 3726 The Langevin Hull\cite{Vardeman2011} uses an external bath at a fixed constant pressure
3443 kstocke1 3708 ($P$) and temperature ($T$) with an effective solvent viscosity
3444     ($\eta$). This bath interacts only with the objects on the exterior
3445     hull of the system. Defining the hull of the atoms in a simulation is
3446     done in a manner similar to the approach of Kohanoff, Caro and
3447     Finnis.\cite{Kohanoff:2005qm} That is, any instantaneous configuration
3448     of the atoms in the system is considered as a point cloud in three
3449     dimensional space. Delaunay triangulation is used to find all facets
3450     between coplanar
3451     neighbors.\cite{delaunay,springerlink:10.1007/BF00977785} In highly
3452     symmetric point clouds, facets can contain many atoms, but in all but
3453     the most symmetric of cases, the facets are simple triangles in
3454     3-space which contain exactly three atoms.
3455    
3456     The convex hull is the set of facets that have {\it no concave
3457     corners} at an atomic site.\cite{Barber96,EDELSBRUNNER:1994oq} This
3458     eliminates all facets on the interior of the point cloud, leaving only
3459     those exposed to the bath. Sites on the convex hull are dynamic; as
3460     molecules re-enter the cluster, all interactions between atoms on that
3461     molecule and the external bath are removed. Since the edge is
3462     determined dynamically as the simulation progresses, no {\it a priori}
3463     geometry is defined. The pressure and temperature bath interacts only
3464     with the atoms on the edge and not with atoms interior to the
3465     simulation.
3466    
3467     Atomic sites in the interior of the simulation move under standard
3468     Newtonian dynamics,
3469     \begin{equation}
3470     m_i \dot{\mathbf v}_i(t)=-{\mathbf \nabla}_i U,
3471     \label{eq:Newton}
3472     \end{equation}
3473     where $m_i$ is the mass of site $i$, ${\mathbf v}_i(t)$ is the
3474     instantaneous velocity of site $i$ at time $t$, and $U$ is the total
3475     potential energy. For atoms on the exterior of the cluster
3476     (i.e. those that occupy one of the vertices of the convex hull), the
3477     equation of motion is modified with an external force, ${\mathbf
3478     F}_i^{\mathrm ext}$:
3479     \begin{equation}
3480     m_i \dot{\mathbf v}_i(t)=-{\mathbf \nabla}_i U + {\mathbf F}_i^{\mathrm ext}.
3481     \end{equation}
3482    
3483     The external bath interacts indirectly with the atomic sites through
3484     the intermediary of the hull facets. Since each vertex (or atom)
3485     provides one corner of a triangular facet, the force on the facets are
3486     divided equally to each vertex. However, each vertex can participate
3487     in multiple facets, so the resultant force is a sum over all facets
3488     $f$ containing vertex $i$:
3489     \begin{equation}
3490     {\mathbf F}_{i}^{\mathrm ext} = \sum_{\begin{array}{c}\mathrm{facets\
3491     } f \\ \mathrm{containing\ } i\end{array}} \frac{1}{3}\ {\mathbf
3492     F}_f^{\mathrm ext}
3493     \end{equation}
3494    
3495     The external pressure bath applies a force to the facets of the convex
3496     hull in direct proportion to the area of the facet, while the thermal
3497     coupling depends on the solvent temperature, viscosity and the size
3498     and shape of each facet. The thermal interactions are expressed as a
3499     standard Langevin description of the forces,
3500     \begin{equation}
3501     \begin{array}{rclclcl}
3502     {\mathbf F}_f^{\text{ext}} & = & \text{external pressure} & + & \text{drag force} & + & \text{random force} \\
3503     & = & -\hat{n}_f P A_f & - & \Xi_f(t) {\mathbf v}_f(t) & + & {\mathbf R}_f(t)
3504     \end{array}
3505     \end{equation}
3506     Here, $A_f$ and $\hat{n}_f$ are the area and (outward-facing) normal
3507     vectors for facet $f$, respectively. ${\mathbf v}_f(t)$ is the
3508     velocity of the facet centroid,
3509     \begin{equation}
3510     {\mathbf v}_f(t) = \frac{1}{3} \sum_{i=1}^{3} {\mathbf v}_i,
3511     \end{equation}
3512     and $\Xi_f(t)$ is an approximate ($3 \times 3$) resistance tensor that
3513     depends on the geometry and surface area of facet $f$ and the
3514     viscosity of the bath. The resistance tensor is related to the
3515     fluctuations of the random force, $\mathbf{R}(t)$, by the
3516 gezelter 3709 fluctuation-dissipation theorem (see Eq. \ref{eq:randomForce}).
3517 kstocke1 3708
3518     Once the resistance tensor is known for a given facet, a stochastic
3519     vector that has the properties in Eq. (\ref{eq:randomForce}) can be
3520     calculated efficiently by carrying out a Cholesky decomposition to
3521 gezelter 3709 obtain the square root matrix of the resistance tensor (see
3522     Eq. \ref{eq:Cholesky}).
3523 kstocke1 3708
3524 gezelter 3709 Our treatment of the resistance tensor for the Langevin Hull facets is
3525     approximate. $\Xi_f$ for a rigid triangular plate would normally be
3526     treated as a $6 \times 6$ tensor that includes translational and
3527     rotational drag as well as translational-rotational coupling. The
3528     computation of resistance tensors for rigid bodies has been detailed
3529 kstocke1 3708 elsewhere,\cite{JoseGarciadelaTorre02012000,Garcia-de-la-Torre:2001wd,GarciadelaTorreJ2002,Sun:2008fk}
3530     but the standard approach involving bead approximations would be
3531     prohibitively expensive if it were recomputed at each step in a
3532     molecular dynamics simulation.
3533    
3534     Instead, we are utilizing an approximate resistance tensor obtained by
3535     first constructing the Oseen tensor for the interaction of the
3536     centroid of the facet ($f$) with each of the subfacets $\ell=1,2,3$,
3537     \begin{equation}
3538     T_{\ell f}=\frac{A_\ell}{8\pi\eta R_{\ell f}}\left(I +
3539     \frac{\mathbf{R}_{\ell f}\mathbf{R}_{\ell f}^T}{R_{\ell f}^2}\right)
3540     \end{equation}
3541     Here, $A_\ell$ is the area of subfacet $\ell$ which is a triangle
3542     containing two of the vertices of the facet along with the centroid.
3543     $\mathbf{R}_{\ell f}$ is the vector between the centroid of facet $f$
3544     and the centroid of sub-facet $\ell$, and $I$ is the ($3 \times 3$)
3545     identity matrix. $\eta$ is the viscosity of the external bath.
3546    
3547     The tensors for each of the sub-facets are added together, and the
3548     resulting matrix is inverted to give a $3 \times 3$ resistance tensor
3549     for translations of the triangular facet,
3550     \begin{equation}
3551     \Xi_f(t) =\left[\sum_{i=1}^3 T_{if}\right]^{-1}.
3552     \end{equation}
3553     Note that this treatment ignores rotations (and
3554     translational-rotational coupling) of the facet. In compact systems,
3555     the facets stay relatively fixed in orientation between
3556     configurations, so this appears to be a reasonably good approximation.
3557    
3558     At each
3559     molecular dynamics time step, the following process is carried out:
3560     \begin{enumerate}
3561     \item The standard inter-atomic forces ($\nabla_iU$) are computed.
3562     \item Delaunay triangulation is carried out using the current atomic
3563     configuration.
3564     \item The convex hull is computed and facets are identified.
3565     \item For each facet:
3566     \begin{itemize}
3567     \item[a.] The force from the pressure bath ($-\hat{n}_fPA_f$) is
3568     computed.
3569     \item[b.] The resistance tensor ($\Xi_f(t)$) is computed using the
3570     viscosity ($\eta$) of the bath.
3571     \item[c.] Facet drag ($-\Xi_f(t) \mathbf{v}_f(t)$) forces are
3572     computed.
3573     \item[d.] Random forces ($\mathbf{R}_f(t)$) are computed using the
3574     resistance tensor and the temperature ($T$) of the bath.
3575     \end{itemize}
3576     \item The facet forces are divided equally among the vertex atoms.
3577     \item Atomic positions and velocities are propagated.
3578     \end{enumerate}
3579     The Delaunay triangulation and computation of the convex hull are done
3580 gezelter 3709 using calls to the qhull library,\cite{Qhull} and for this reason, if
3581     qhull is not detected during the build, the Langevin Hull integrator
3582     will not be available. There is a minimal penalty for computing the
3583     convex hull and resistance tensors at each step in the molecular
3584     dynamics simulation (roughly 0.02 $\times$ cost of a single force
3585     evaluation).
3586 kstocke1 3708
3587     \begin{longtable}[c]{GBF}
3588     \caption{Meta-data Keywords: Required parameters for the Langevin Hull integrator}
3589     \\
3590     {\bf keyword} & {\bf units} & {\bf use} \\ \hline
3591     \endhead
3592     \hline
3593     \endfoot
3594     {\tt viscosity} & poise & Sets the value of viscosity of the implicit
3595     solven . \\
3596     {\tt targetTemp} & K & Sets the target temperature of the system.
3597     This parameter must be specified to use Langevin Hull dynamics. \\
3598     {\tt targetPressure} & atm & Sets the target pressure of the system.
3599     This parameter must be specified to use Langevin Hull dynamics. \\
3600 gezelter 3709 {\tt usePeriodicBoundaryConditions} & logical & Turns off periodic boundary conditions.
3601 kstocke1 3708 This parameter must be set to \tt false \\
3602     \label{table:lhullParameters}
3603     \end{longtable}
3604    
3605    
3606 gezelter 3607 \section{\label{sec:constraints}Constraint Methods}
3607    
3608     \subsection{\label{section:rattle}The {\sc rattle} Method for Bond
3609     Constraints}
3610    
3611     In order to satisfy the constraints of fixed bond lengths within {\sc
3612     OpenMD}, we have implemented the {\sc rattle} algorithm of
3613     Andersen.\cite{andersen83} {\sc rattle} is a velocity-Verlet
3614     formulation of the {\sc shake} method\cite{ryckaert77} for iteratively
3615     solving the Lagrange multipliers which maintain the holonomic
3616     constraints. Both methods are covered in depth in the
3617     literature,\cite{leach01:mm,Allen87} and a detailed description of
3618     this method would be redundant.
3619    
3620     \subsection{\label{section:zcons}The Z-Constraint Method}
3621    
3622     A force auto-correlation method based on the fluctuation-dissipation
3623     theorem was developed by Roux and Karplus to investigate the dynamics
3624     of ions inside ion channels.\cite{Roux91} The time-dependent friction
3625     coefficient can be calculated from the deviation of the instantaneous
3626     force from its mean value:
3627     \begin{equation}
3628     \xi(z,t)=\langle\delta F(z,t)\delta F(z,0)\rangle/k_{B}T,
3629     \end{equation}
3630     where%
3631     \begin{equation}
3632     \delta F(z,t)=F(z,t)-\langle F(z,t)\rangle.
3633     \end{equation}
3634    
3635     If the time-dependent friction decays rapidly, the static friction
3636     coefficient can be approximated by
3637     \begin{equation}
3638     \xi_{\text{static}}(z)=\int_{0}^{\infty}\langle\delta F(z,t)\delta F(z,0)\rangle dt.
3639     \end{equation}
3640    
3641     This allows the diffusion constant to then be calculated through the
3642     Einstein relation:\cite{Marrink94}
3643     \begin{equation}
3644     D(z)=\frac{k_{B}T}{\xi_{\text{static}}(z)}=\frac{(k_{B}T)^{2}}{\int_{0}^{\infty
3645     }\langle\delta F(z,t)\delta F(z,0)\rangle dt}.%
3646     \end{equation}
3647    
3648     The Z-Constraint method, which fixes the $z$ coordinates of a few
3649     ``tagged'' molecules with respect to the center of the mass of the
3650     system is a technique that was proposed to obtain the forces required
3651     for the force auto-correlation calculation.\cite{Marrink94} However,
3652     simply resetting the coordinate will move the center of the mass of
3653     the whole system. To avoid this problem, we have developed a new
3654     method that is utilized in {\sc OpenMD}. Instead of resetting the
3655     coordinates, we reset the forces of $z$-constrained molecules and
3656     subtract the total constraint forces from the rest of the system after
3657     the force calculation at each time step.
3658    
3659     After the force calculation, the total force on molecule $\alpha$ is:
3660     \begin{equation}
3661     G_{\alpha} = \sum_i F_{\alpha i},
3662     \label{eq:zc1}
3663     \end{equation}
3664     where $F_{\alpha i}$ is the force in the $z$ direction on atom $i$ in
3665     $z$-constrained molecule $\alpha$. The forces on the atoms in the
3666     $z$-constrained molecule are then adjusted to remove the total force
3667     on molecule $\alpha$:
3668     \begin{equation}
3669     F_{\alpha i} = F_{\alpha i} -
3670     \frac{m_{\alpha i} G_{\alpha}}{\sum_i m_{\alpha i}}.
3671     \end{equation}
3672     Here, $m_{\alpha i}$ is the mass of atom $i$ in the $z$-constrained
3673     molecule. After the forces have been adjusted, the velocities must
3674     also be modified to subtract out molecule $\alpha$'s center-of-mass
3675     velocity in the $z$ direction.
3676     \begin{equation}
3677     v_{\alpha i} = v_{\alpha i} -
3678     \frac{\sum_i m_{\alpha i} v_{\alpha i}}{\sum_i m_{\alpha i}},
3679     \end{equation}
3680     where $v_{\alpha i}$ is the velocity of atom $i$ in the $z$ direction.
3681     Lastly, all of the accumulated constraint forces must be subtracted
3682     from the rest of the unconstrained system to keep the system center of
3683     mass of the entire system from drifting.
3684     \begin{equation}
3685     F_{\beta i} = F_{\beta i} - \frac{m_{\beta i} \sum_{\alpha} G_{\alpha}}
3686     {\sum_{\beta}\sum_i m_{\beta i}},
3687     \end{equation}
3688     where $\beta$ denotes all {\it unconstrained} molecules in the
3689     system. Similarly, the velocities of the unconstrained molecules must
3690     also be scaled:
3691     \begin{equation}
3692     v_{\beta i} = v_{\beta i} + \sum_{\alpha} \frac{\sum_i m_{\alpha i}
3693     v_{\alpha i}}{\sum_i m_{\alpha i}}.
3694     \end{equation}
3695    
3696     This method will pin down the centers-of-mass of all of the
3697     $z$-constrained molecules, and will also keep the entire system fixed
3698     at the original system center-of-mass location.
3699    
3700     At the very beginning of the simulation, the molecules may not be at
3701     their desired positions. To steer a $z$-constrained molecule to its
3702     specified position, a simple harmonic potential is used:
3703     \begin{equation}
3704     U(t)=\frac{1}{2}k_{\text{Harmonic}}(z(t)-z_{\text{cons}})^{2},%
3705     \end{equation}
3706     where $k_{\text{Harmonic}}$ is an harmonic force constant, $z(t)$ is
3707     the current $z$ coordinate of the center of mass of the constrained
3708     molecule, and $z_{\text{cons}}$ is the desired constraint
3709     position. The harmonic force operating on the $z$-constrained molecule
3710     at time $t$ can be calculated by
3711     \begin{equation}
3712     F_{z_{\text{Harmonic}}}(t)=-\frac{\partial U(t)}{\partial z(t)}=
3713     -k_{\text{Harmonic}}(z(t)-z_{\text{cons}}).
3714     \end{equation}
3715    
3716     The user may also specify the use of a constant velocity method
3717     (steered molecular dynamics) to move the molecules to their desired
3718     initial positions. Based on concepts from atomic force microscopy,
3719     {\sc smd} has been used to study many processes which occur via rare
3720     events on the time scale of a few hundreds of picoseconds. For
3721     example,{\sc smd} has been used to observe the dissociation of
3722     Streptavidin-biotin Complex.\cite{smd}
3723    
3724     To use of the $z$-constraint method in an {\sc OpenMD} simulation, the
3725     molecules must be specified using the {\tt nZconstraints} keyword in
3726     the meta-data file. The other parameters for modifying the behavior
3727     of the $z$-constraint method are listed in table~\ref{table:zconParams}.
3728    
3729     \begin{longtable}[c]{ABCD}
3730     \caption{Meta-data Keywords: Z-Constraint Parameters}
3731     \\
3732     {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
3733     \endhead
3734     \hline
3735     \endfoot
3736     {\tt zconsTime} & fs & Sets the frequency at which the {\tt .fz} file
3737     is written & \\
3738     {\tt zconsForcePolicy} & string & The strategy for subtracting
3739     the $z$-constraint force from the {\it unconstrained} molecules & Possible
3740     strategies are {\tt BYMASS} and {\tt BYNUMBER}. The default
3741     strategy is {\tt BYMASS}\\
3742     {\tt zconsGap} & $\mbox{\AA}$ & Sets the distance between two adjacent
3743     constraint positions&Used mainly to move molecules through a
3744     simulation to estimate potentials of mean force. \\
3745     {\tt zconsFixtime} & fs & Sets the length of time the $z$-constraint
3746     molecule is held fixed & {\tt zconsFixtime} must be set if {\tt
3747     zconsGap} is set\\
3748     {\tt zconsUsingSMD} & logical & Flag for using Steered Molecular
3749     Dynamics to move the molecules to the correct constrained positions &
3750     Harmonic Forces are used by default
3751     \label{table:zconParams}
3752     \end{longtable}
3753    
3754 gezelter 3792 % \chapter{\label{section:restraints}Restraints}
3755 skuang 3793 % Restraints are external potentials that are added to a system to
3756     % keep particular molecules or collections of particles close to some
3757 gezelter 3792 % reference structure. A restraint can be a collective
3758 gezelter 3607
3759     \chapter{\label{section:thermInt}Thermodynamic Integration}
3760    
3761     Thermodynamic integration is an established technique that has been
3762     used extensively in the calculation of free energies for condensed
3763     phases of
3764     materials.\cite{Frenkel84,Hermens88,Meijer90,Baez95a,Vlot99}. This
3765     method uses a sequence of simulations during which the system of
3766     interest is converted into a reference system for which the free
3767     energy is known analytically ($A_0$). The difference in potential
3768     energy between the reference system and the system of interest
3769     ($\Delta V$) is then integrated in order to determine the free energy
3770     difference between the two states:
3771     \begin{equation}
3772     A = A_0 + \int_0^1 \left\langle \Delta V \right\rangle_\lambda
3773     d\lambda.
3774     \label{eq:thermInt}
3775     \end{equation}
3776     Here, $\lambda$ is the parameter that governs the transformation
3777     between the reference system and the system of interest. For
3778     crystalline phases, an harmonically-restrained (Einstein) crystal is
3779     chosen as the reference state, while for liquid phases, the ideal gas
3780     is taken as the reference state.
3781    
3782     In an Einstein crystal, the molecules are restrained at their ideal
3783     lattice locations and orientations. Using harmonic restraints, as
3784     applied by B\`{a}ez and Clancy, the total potential for this reference
3785     crystal ($V_\mathrm{EC}$) is the sum of all the harmonic restraints,
3786     \begin{equation}
3787     V_\mathrm{EC} = \sum_{i} \left[ \frac{K_\mathrm{v}}{2} (r_i - r_i^\circ)^2 +
3788     \frac{K_\theta}{2} (\theta_i - \theta_i^\circ)^2 +
3789     \frac{K_\omega}{2}(\omega_i - \omega_i^\circ)^2 \right],
3790     \end{equation}
3791     where $K_\mathrm{v}$, $K_\mathrm{\theta}$, and $K_\mathrm{\omega}$ are
3792     the spring constants restraining translational motion and deflection
3793     of and rotation around the principle axis of the molecule
3794     respectively. The values of $\theta$ range from $0$ to $\pi$, while
3795     $\omega$ ranges from $-\pi$ to $\pi$.
3796    
3797     The partition function for a molecular crystal restrained in this
3798     fashion can be evaluated analytically, and the Helmholtz Free Energy
3799     ({\it A}) is given by
3800     \begin{eqnarray}
3801     \frac{A}{N} = \frac{E_m}{N}\ -\ kT\ln \left (\frac{kT}{h\nu}\right )^3&-&kT\ln \left
3802     [\pi^\frac{1}{2}\left (\frac{8\pi^2I_\mathrm{A}kT}{h^2}\right
3803     )^\frac{1}{2}\left (\frac{8\pi^2I_\mathrm{B}kT}{h^2}\right
3804     )^\frac{1}{2}\left (\frac{8\pi^2I_\mathrm{C}kT}{h^2}\right
3805     )^\frac{1}{2}\right ] \nonumber \\ &-& kT\ln \left [\frac{kT}{2(\pi
3806     K_\omega K_\theta)^{\frac{1}{2}}}\exp\left
3807     (-\frac{kT}{2K_\theta}\right)\int_0^{\left (\frac{kT}{2K_\theta}\right
3808     )^\frac{1}{2}}\exp(t^2)\mathrm{d}t\right ],
3809     \label{ecFreeEnergy}
3810     \end{eqnarray}
3811     where $2\pi\nu = (K_\mathrm{v}/m)^{1/2}$, and $E_m$ is the minimum
3812     potential energy of the ideal crystal.\cite{Baez95a}
3813    
3814     {\sc OpenMD} can perform the simulations that aid the user in
3815     constructing the thermodynamic path from the molecular system to one
3816     of the reference systems. To do this, the user sets the value of
3817     $\lambda$ (between 0 \& 1) in the meta-data file. If the system of
3818     interest is crystalline, {\sc OpenMD} must be able to find the {\it
3819     reference} configuration of the system in a file called {\tt
3820     idealCrystal.in} in the directory from which the simulation was run.
3821     This file is a standard {\tt .dump} file, but all information about
3822     velocities and angular momenta are discarded when the file is read.
3823    
3824     The configuration found in the {\tt idealCrystal.in} file is used for
3825     the reference positions and molecular orientations of the Einstein
3826     crystal. To complete the specification of the Einstein crystal, a set
3827     of force constants must also be specified; one for displacments of the
3828     molecular centers of mass, and two for displacements from the ideal
3829     orientations of the molecules.
3830    
3831     To construct a thermodynamic integration path, the user would run a
3832     sequence of $N$ simulations, each with a different value of lambda
3833     between $0$ and $1$. When {\tt useSolidThermInt} is set to {\tt true}
3834     in the meta-data file, two additional energy columns are reported in
3835     the {\tt .stat} file for the simulation. The first, {\tt vRaw}, is
3836     the unperturbed energy for the configuration, and the second, {\tt
3837     vHarm}, is the energy of the harmonic (Einstein) system in an
3838     identical configuration. The total potential energy of the
3839     configuration is a linear combination of {\tt vRaw} and {\tt vHarm}
3840     weighted by the value of $\lambda$.
3841    
3842     From a running average of the difference between {\tt vRaw} and {\tt
3843     vHarm}, the user can obtain the integrand in Eq. (\ref{eq:thermInt})
3844     for fixed value of $\lambda$.
3845    
3846     There are two additional files with the suffixes {\tt .zang0} and {\tt
3847     .zang} generated by {\sc OpenMD} during the first run of a solid
3848     thermodynamic integration. These files contain the initial ({\tt
3849     .zang0}) and final ({\tt .zang}) values of the angular displacement
3850     coordinates for each of the molecules. These are particularly useful
3851     when chaining a number of simulations (with successive values of
3852     $\lambda$) together.
3853    
3854     For {\it liquid} thermodynamic integrations, the reference system is
3855     the ideal gas (with a potential exactly equal to 0), so the {\tt
3856     .stat} file contains only the standard columns. The potential energy
3857     column contains the potential of the {\it unperturbed} system (and not
3858     the $\lambda$-weighted potential. This allows the user to use the
3859     potential energy directly as the $\Delta V$ in the integrand of
3860     Eq. (\ref{eq:thermInt}).
3861    
3862     Meta-data parameters concerning thermodynamic integrations are given in
3863     Table~\ref{table:thermIntParams}
3864    
3865     \begin{longtable}[c]{ABCD}
3866     \caption{Meta-data Keywords: Thermodynamic Integration Parameters}
3867     \\
3868     {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
3869     \endhead
3870     \hline
3871     \endfoot
3872     {\tt useSolidThermInt} & logical & perform thermodynamic integration
3873     to an Einstein crystal? & default is ``false'' \\
3874     {\tt useLiquidThermInt} & logical & perform thermodynamic integration
3875     to an ideal gas? & default is ``false'' \\
3876     {\tt thermodynamicIntegrationLambda} & & & \\
3877     & double & transformation
3878     parameter & Sets how far along the thermodynamic integration path the
3879     simulation will be. \\
3880     {\tt thermodynamicIntegrationK} & & & \\
3881     & double & & power of $\lambda$
3882     governing shape of integration pathway \\
3883     {\tt thermIntDistSpringConst} & & & \\
3884     & $\mbox{kcal~mol}^{-1} \mbox{\AA}^{-2}$
3885     & & spring constant for translations in Einstein crystal \\
3886     {\tt thermIntThetaSpringConst} & & & \\
3887     & $\mbox{kcal~mol}^{-1}
3888     \mbox{rad}^{-2}$ & & spring constant for deflection away from z-axis
3889     in Einstein crystal \\
3890     {\tt thermIntOmegaSpringConst} & & & \\
3891     & $\mbox{kcal~mol}^{-1}
3892     \mbox{rad}^{-2}$ & & spring constant for rotation around z-axis in
3893     Einstein crystal
3894     \label{table:thermIntParams}
3895     \end{longtable}
3896    
3897 gezelter 3794 \chapter{\label{section:rnemd}Reverse Non-Equilibrium Molecular Dynamics (RNEMD)}
3898 gezelter 3607
3899 gezelter 3792 There are many ways to compute transport properties from molecular
3900 skuang 3793 dynamics simulations. Equilibrium Molecular Dynamics (EMD)
3901     simulations can be used by computing relevant time correlation
3902 gezelter 3794 functions and assuming linear response theory holds. For some transport properties (notably thermal conductivity), EMD approaches
3903     are subject to noise and poor convergence of the relevant
3904 skuang 3793 correlation functions. Traditional Non-equilibrium Molecular Dynamics
3905     (NEMD) methods impose a gradient (e.g. thermal or momentum) on a
3906     simulation. However, the resulting flux is often difficult to
3907 gezelter 3792 measure. Furthermore, problems arise for NEMD simulations of
3908     heterogeneous systems, such as phase-phase boundaries or interfaces,
3909     where the type of gradient to enforce at the boundary between
3910     materials is unclear.
3911    
3912 skuang 3793 {\it Reverse} Non-Equilibrium Molecular Dynamics (RNEMD) methods adopt
3913     a different approach in that an unphysical {\it flux} is imposed
3914     between different regions or ``slabs'' of the simulation box. The
3915     response of the system is to develop a temperature or momentum {\it
3916     gradient} between the two regions. Since the amount of the applied
3917     flux is known exactly, and the measurement of gradient is generally
3918     less complicated, imposed-flux methods typically take shorter
3919     simulation times to obtain converged results for transport properties.
3920 gezelter 3792
3921 skuang 3793 \begin{figure}
3922     \includegraphics[width=\linewidth]{rnemdDemo}
3923     \caption{The (VSS) RNEMD approach imposes unphysical transfer of both
3924     linear momentum and kinetic energy between a ``hot'' slab and a
3925     ``cold'' slab in the simulation box. The system responds to this
3926     imposed flux by generating both momentum and temperature gradients.
3927     The slope of the gradients can then be used to compute transport
3928     properties (e.g. shear viscosity and thermal conductivity).}
3929     \label{rnemdDemo}
3930     \end{figure}
3931 gezelter 3792
3932 gezelter 3794 \section{\label{section:algo}Three algorithms for carrying out RNEMD simulations}
3933     \subsection{\label{subsection:swapping}The swapping algorithm}
3934 skuang 3793 The original ``swapping'' approaches by M\"{u}ller-Plathe {\it et
3935     al.}\cite{ISI:000080382700030,MullerPlathe:1997xw} can be understood
3936     as a sequence of imaginary elastic collisions between particles in
3937     opposite slabs. In each collision, the entire momentum vectors of
3938     both particles may be exchanged to generate a thermal
3939     flux. Alternatively, a single component of the momentum vectors may be
3940     exchanged to generate a shear flux. This algorithm turns out to be
3941     quite useful in many simulations. However, the M\"{u}ller-Plathe
3942     swapping approach perturbs the system away from ideal
3943     Maxwell-Boltzmann distributions, and this may leads to undesirable
3944     side-effects when the applied flux becomes large.\cite{Maginn:2010}
3945 gezelter 3794 This limits the applicability of the swapping algorithm, so in OpenMD,
3946     we have implemented two additional algorithms for RNEMD in addition to the
3947 skuang 3793 original swapping approach.
3948 gezelter 3792
3949 gezelter 3794 \subsection{\label{subsection:nivs}Non-Isotropic Velocity Scaling (NIVS)}
3950 skuang 3793 Instead of having momentum exchange between {\it individual particles}
3951     in each slab, the NIVS algorithm applies velocity scaling to all of
3952 gezelter 3794 the selected particles in both slabs.\cite{kuang:164101} A combination of linear
3953 skuang 3793 momentum, kinetic energy, and flux constraint equations governs the
3954 gezelter 3794 amount of velocity scaling performed at each step. Interested readers
3955 skuang 3793 should consult ref. \citealp{kuang:164101} for further details on the
3956     methodology.
3957 gezelter 3792
3958 skuang 3793 NIVS has been shown to be very effective at producing thermal
3959     gradients and for computing thermal conductivities, particularly for
3960     heterogeneous interfaces. Although the NIVS algorithm can also be
3961     applied to impose a directional momentum flux, thermal anisotropy was
3962     observed in relatively high flux simulations, and the method is not
3963 gezelter 3794 suitable for imposing a shear flux or for computing shear viscosities.
3964 gezelter 3792
3965 gezelter 3794 \subsection{\label{subsection:vss}Velocity Shearing and Scaling (VSS)}
3966 skuang 3793 The third RNEMD algorithm implemented in OpenMD utilizes a series of
3967     simultaneous velocity shearing and scaling exchanges between the two
3968 gezelter 3794 slabs.\cite{2012MolPh.110..691K} This method results in a set of simpler equations to satisfy
3969 skuang 3793 the conservation constraints while creating a desired flux between the
3970     two slabs.
3971 gezelter 3792
3972 skuang 3793 The VSS approach is versatile in that it may be used to implement both
3973     thermal and shear transport either separately or simultaneously.
3974     Perturbations of velocities away from the ideal Maxwell-Boltzmann
3975     distributions are minimal, and thermal anisotropy is kept to a
3976     minimum. This ability to generate simultaneous thermal and shear
3977     fluxes has been utilized to map out the shear viscosity of SPC/E water
3978 gezelter 3794 over a wide range of temperatures (90~K) just with a single simulation.
3979     VSS-RNEMD also allows the directional momentum flux to have
3980 skuang 3793 arbitary directions, which could aid in the study of anisotropic solid
3981     surfaces in contact with liquid environments.
3982 gezelter 3792
3983 gezelter 3794 \section{\label{section:usingRNEMD}Using OpenMD to perform a RNEMD simulation}
3984     \subsection{\label{section:rnemdParams} What the user needs to specify}
3985     To carry out a RNEMD simulation,
3986 skuang 3793 a user must specify a number of parameters in the MetaData (.md) file.
3987     Because the RNEMD methods have a large number of parameters, these
3988 gezelter 3794 must be enclosed in a {\it separate} {\tt RNEMD\{...\}} block. The most important
3989 skuang 3793 parameters to specify are the {\tt useRNEMD}, {\tt fluxType} and flux
3990     parameters. Most other parameters (summarized in table
3991     \ref{table:rnemd}) have reasonable default values. {\tt fluxType}
3992     sets up the kind of exchange that will be carried out between the two
3993     slabs (either Kinetic Energy ({\tt KE}) or momentum ({\tt Px, Py, Pz,
3994     Pvector}), or some combination of these). The flux is specified
3995     with the use of three possible parameters: {\tt kineticFlux} for
3996     kinetic energy exchange, as well as {\tt momentumFlux} or {\tt
3997     momentumFluxVector} for simulations with directional exchange.
3998 gezelter 3792
3999 gezelter 3794 \subsection{\label{section:rnemdResults} Processing the results}
4000     OpenMD will generate a {\tt .rnemd}
4001 skuang 3793 file with the same prefix as the original {\tt .md} file. This file
4002     contains a running average of properties of interest computed within a
4003     set of bins that divide the simulation cell along the $z$-axis. The
4004     first column of the {\tt .rnemd} file is the $z$ coordinate of the
4005     center of each bin, while following columns may contain the average
4006     temperature, velocity, or density within each bin. The output format
4007     in the {\tt .rnemd} file can be altered with the {\tt outputFields},
4008     {\tt outputBins}, and {\tt outputFileName} parameters. A report at
4009     the top of the {\tt .rnemd} file contains the current exchange totals
4010     as well as the average flux applied during the simulation. Using the
4011     slope of the temperature or velocity gradient obtaine from the {\tt
4012     .rnemd} file along with the applied flux, the user can very simply
4013     arrive at estimates of thermal conductivities ($\lambda$),
4014     \begin{equation}
4015     J_z = -\lambda \frac{\partial T}{\partial z},
4016     \end{equation}
4017     and shear viscosities ($\eta$),
4018     \begin{equation}
4019     j_z(p_x) = -\eta \frac{\partial \langle v_x \rangle}{\partial z}.
4020     \end{equation}
4021     Here, the quantities on the left hand side are the actual flux values
4022     (in the header of the {\tt .rnemd} file), while the slopes are
4023     obtained from linear fits to the gradients observed in the {\tt
4024     .rnemd} file.
4025 gezelter 3792
4026 skuang 3793 More complicated simulations (including interfaces) require a bit more
4027     care. Here the second derivative may be required to compute the
4028     interfacial thermal conductance,
4029     \begin{align}
4030     G^\prime &= \left(\nabla\lambda \cdot \mathbf{\hat{n}}\right)_{z_0} \\
4031     &= \frac{\partial}{\partial z}\left(-\frac{J_z}{
4032     \left(\frac{\partial T}{\partial z}\right)}\right)_{z_0} \\
4033     &= J_z\left(\frac{\partial^2 T}{\partial z^2}\right)_{z_0} \Big/
4034     \left(\frac{\partial T}{\partial z}\right)_{z_0}^2.
4035     \label{derivativeG}
4036     \end{align}
4037     where $z_0$ is the location of the interface between two materials and
4038     $\mathbf{\hat{n}}$ is a unit vector normal to the interface. We
4039     suggest that users interested in interfacial conductance consult
4040     reference \citealp{kuang:AuThl} for other approaches to computing $G$.
4041     Users interested in {\it friction coefficients} at heterogeneous
4042     interfaces may also find reference \citealp{2012MolPh.110..691K}
4043     useful.
4044 gezelter 3792
4045 skuang 3793 \newpage
4046 gezelter 3792
4047     \begin{longtable}[c]{JKLM}
4048 gezelter 3794 \caption{Meta-data Keywords: Parameters for RNEMD simulations}\\
4049     \multicolumn{4}{c}{The following keywords must be enclosed inside a {\tt RNEMD\{...\}} block.}
4050     \\ \hline
4051 gezelter 3792 {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
4052     \endhead
4053     \hline
4054     \endfoot
4055     {\tt useRNEMD} & logical & perform RNEMD? & default is ``false'' \\
4056     {\tt objectSelection} & string & see section \ref{section:syntax}
4057     for selection syntax & default is ``select all'' \\
4058     {\tt method} & string & exchange method & one of the following:
4059     {\tt Swap, NIVS,} or {\tt VSS} (default is {\tt VSS}) \\
4060     {\tt fluxType} & string & what is being exchanged between slabs? & one
4061     of the following: {\tt KE, Px, Py, Pz, Pvector, KE+Px, KE+Py, KE+Pvector} \\
4062     {\tt kineticFlux} & kcal mol$^{-1}$ \AA$^{-2}$ fs$^{-1}$ & specify the kinetic energy flux & \\
4063     {\tt momentumFlux} & amu \AA$^{-1}$ fs$^{-2}$ & specify the momentum flux & \\
4064     {\tt momentumFluxVector} & amu \AA$^{-1}$ fs$^{-2}$ & specify the momentum flux when
4065     {\tt Pvector} is part of the exchange & Vector3d input\\
4066     {\tt exchangeTime} & fs & how often to perform the exchange & default is 100 fs\\
4067    
4068     {\tt slabWidth} & $\mbox{\AA}$ & width of the two exchange slabs & default is $\mathsf{H}_{zz} / 10.0$ \\
4069     {\tt slabAcenter} & $\mbox{\AA}$ & center of the end slab & default is 0 \\
4070     {\tt slabBcenter} & $\mbox{\AA}$ & center of the middle slab & default is $\mathsf{H}_{zz} / 2$ \\
4071     {\tt outputFileName} & string & file name for output histograms & default is the same prefix as the
4072     .md file, but with the {\tt .rnemd} extension \\
4073     {\tt outputBins} & int & number of $z$-bins in the output histogram &
4074     default is 20 \\
4075     {\tt outputFields} & string & columns to print in the {\tt .rnemd}
4076 skuang 3793 file where each column is separated by a pipe ($\mid$) symbol. & Allowed column names are: {\sc z, temperature, velocity, density} \\
4077 gezelter 3792 \label{table:rnemd}
4078     \end{longtable}
4079    
4080 gezelter 3607 \chapter{\label{section:minimizer}Energy Minimization}
4081    
4082 gezelter 3794 Energy minimization is used to identify local configurations that are stable
4083 gezelter 3607 points on the potential energy surface. There is a vast literature on
4084     energy minimization algorithms have been developed to search for the
4085     global energy minimum as well as to find local structures which are
4086     stable fixed points on the surface. We have included two simple
4087     minimization algorithms: steepest descent, ({\sc sd}) and conjugate
4088     gradient ({\sc cg}) to help users find reasonable local minima from
4089     their initial configurations. Since {\sc OpenMD} handles atoms and
4090     rigid bodies which have orientational coordinates as well as
4091     translational coordinates, there is some subtlety to the choice of
4092     parameters for minimization algorithms.
4093    
4094     Given a coordinate set $x_{k}$ and a search direction $d_{k}$, a line
4095     search algorithm is performed along $d_{k}$ to produce
4096     $x_{k+1}=x_{k}+$ $\lambda _{k}d_{k}$. In the steepest descent ({\sc
4097     sd}) algorithm,%
4098     \begin{equation}
4099     d_{k}=-\nabla V(x_{k}).
4100     \end{equation}
4101     The gradient and the direction of next step are always orthogonal.
4102     This may cause oscillatory behavior in narrow valleys. To overcome
4103     this problem, the Fletcher-Reeves variant~\cite{FletcherReeves} of the
4104     conjugate gradient ({\sc cg}) algorithm is used to generate $d_{k+1}$
4105     via simple recursion:
4106     \begin{equation}
4107     d_{k+1} =-\nabla V(x_{k+1})+\gamma_{k}d_{k}
4108     \end{equation}
4109     where
4110     \begin{equation}
4111     \gamma_{k} =\frac{\nabla V(x_{k+1})^{T}\nabla V(x_{k+1})}{\nabla
4112     V(x_{k})^{T}\nabla V(x_{k})}.
4113     \end{equation}
4114    
4115     The Polak-Ribiere variant~\cite{PolakRibiere} of the conjugate
4116     gradient ($\gamma_{k}$) is defined as%
4117     \begin{equation}
4118     \gamma_{k}=\frac{[\nabla V(x_{k+1})-\nabla V(x)]^{T}\nabla V(x_{k+1})}{\nabla
4119     V(x_{k})^{T}\nabla V(x_{k})}%
4120     \end{equation}
4121     It is widely agreed that the Polak-Ribiere variant gives better
4122     convergence than the Fletcher-Reeves variant, so the conjugate
4123     gradient approach implemented in {\sc OpenMD} is the Polak-Ribiere
4124     variant.
4125    
4126     The conjugate gradient method assumes that the conformation is close
4127     enough to a local minimum that the potential energy surface is very
4128     nearly quadratic. When the initial structure is far from the minimum,
4129     the steepest descent method can be superior to the conjugate gradient
4130     method. Hence, the steepest descent method is often used for the first
4131     10-100 steps of minimization. Another useful feature of minimization
4132     methods in {\sc OpenMD} is that a modified {\sc shake} algorithm can be
4133     applied during the minimization to constraint the bond lengths if this
4134     is required by the force field. Meta-data parameters concerning the
4135     minimizer are given in Table~\ref{table:minimizeParams}
4136    
4137     \begin{longtable}[c]{ABCD}
4138     \caption{Meta-data Keywords: Energy Minimizer Parameters}
4139     \\
4140     {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
4141     \endhead
4142     \hline
4143     \endfoot
4144     {\tt minimizer} & string & selects the minimization method to be used
4145     & either {\tt CG} (conjugate gradient) or {\tt SD} (steepest
4146     descent) \\
4147     {\tt minimizerMaxIter} & steps & Sets the maximum number of iterations
4148     for the energy minimization & The default value is 200\\
4149     {\tt minimizerWriteFreq} & steps & Sets the frequency with which the {\tt .dump} and {\tt .stat} files are writtern during energy minimization & \\
4150     {\tt minimizerStepSize} & $\mbox{\AA}$ & Sets the step size for the
4151     line search & The default value is 0.01\\
4152     {\tt minimizerFTol} & $\mbox{kcal mol}^{-1}$ & Sets the energy tolerance
4153     for stopping the minimziation. & The default value is $10^{-8}$\\
4154     {\tt minimizerGTol} & $\mbox{kcal mol}^{-1}\mbox{\AA}^{-1}$ & Sets the
4155     gradient tolerance for stopping the minimization. & The default value
4156     is $10^{-8}$\\
4157     {\tt minimizerLSTol} & $\mbox{kcal mol}^{-1}$ & Sets line search
4158     tolerance for terminating each step of the minimization. & The default
4159     value is $10^{-8}$\\
4160     {\tt minimizerLSMaxIter} & steps & Sets the maximum number of
4161     iterations for each line search & The default value is 50\\
4162     \label{table:minimizeParams}
4163     \end{longtable}
4164    
4165     \chapter{\label{section:anal}Analysis of Physical Properties}
4166    
4167     {\sc OpenMD} includes a few utility programs which compute properties
4168     from the dump files that are generated during a molecular dynamics
4169     simulation. These programs are:
4170    
4171     \begin{description}
4172     \item[{\bf Dump2XYZ}] Converts an {\sc OpenMD} dump file into a file
4173     suitable for viewing in a molecular dynamics viewer like Jmol
4174     \item[{\bf StaticProps}] Computes static properties like the pair
4175     distribution function, $g(r)$.
4176     \item[{\bf DynamicProps}] Computes time correlation functions like the
4177     velocity autocorrelation function, $\langle v(t) \cdot v(0)\rangle$,
4178     or the mean square displacement $\langle |r(t) - r(0)|^{2} \rangle$.
4179     \end{description}
4180    
4181     These programs often need to operate on a subset of the data contained
4182     within a dump file. For example, if you want only the {\it oxygen-oxygen}
4183     pair distribution from a water simulation, or if you want to make a
4184     movie including only the water molecules within a 6 angstrom radius of
4185     lipid head groups, you need a way to specify your selection to these
4186     utility programs. {\sc OpenMD} has a selection syntax which allows you to
4187     specify the selection in a compact form in order to generate only the
4188     data you want. For example a common use of the StaticProps command
4189     would be:
4190    
4191     {\tt StaticProps -i tp4.dump -{}-gofr -{}-sele1="select O*" -{}-sele2="select O*"}
4192    
4193     This command computes the oxygen-oxygen pair distribution function,
4194     $g_{OO}(r)$, from a file named {\tt tp4.dump}. In order to understand
4195     this selection syntax and to make full use of the selection
4196     capabilities of the analysis programs, it is necessary to understand a
4197     few of the core concepts that are used to perform simulations.
4198    
4199     \section{\label{section:concepts}Concepts}
4200    
4201     {\sc OpenMD} manipulates both traditional atoms as well as some objects that
4202     {\it behave like atoms}. These objects can be rigid collections of
4203     atoms or atoms which have orientational degrees of freedom. Here is a
4204     diagram of the class heirarchy:
4205    
4206     \begin{figure}
4207     \centering
4208     \includegraphics[width=3in]{heirarchy.pdf}
4209 gezelter 4101 \caption[Class heirarchy for StuntDoubles in {\sc OpenMD}]{ \\ The
4210     class heirarchy of StuntDoubles in {\sc OpenMD}. The selection
4211 gezelter 3607 syntax allows the user to select any of the objects that are descended
4212     from a StuntDouble.}
4213     \label{fig:heirarchy}
4214     \end{figure}
4215    
4216     \begin{itemize}
4217     \item A {\bf StuntDouble} is {\it any} object that can be manipulated by the
4218     integrators and minimizers.
4219     \item An {\bf Atom} is a fundamental point-particle that can be moved around during a simulation.
4220     \item A {\bf DirectionalAtom} is an atom which has {\it orientational} as well as translational degrees of freedom.
4221     \item A {\bf RigidBody} is a collection of {\bf Atom}s or {\bf
4222     DirectionalAtom}s which behaves as a single unit.
4223     \end{itemize}
4224    
4225     Every Molecule, Atom and DirectionalAtom in {\sc OpenMD} have their own names
4226     which are specified in the {\tt .md} file. In contrast, RigidBodies are
4227     denoted by their membership and index inside a particular molecule:
4228     [MoleculeName]\_RB\_[index] (the contents inside the brackets
4229     depend on the specifics of the simulation). The names of rigid bodies are
4230     generated automatically. For example, the name of the first rigid body
4231     in a DMPC molecule is DMPC\_RB\_0.
4232    
4233     \section{\label{section:syntax}Syntax of the Select Command}
4234    
4235     The most general form of the select command is: {\tt select {\it expression}}
4236    
4237     This expression represents an arbitrary set of StuntDoubles (Atoms or
4238     RigidBodies) in {\sc OpenMD}. Expressions are composed of either name
4239     expressions, index expressions, predefined sets, user-defined
4240     expressions, comparison operators, within expressions, or logical
4241     combinations of the above expression types. Expressions can be
4242     combined using parentheses and the Boolean operators.
4243    
4244     \subsection{\label{section:logical}Logical expressions}
4245    
4246     The logical operators allow complex queries to be constructed out of
4247     simpler ones using the standard boolean connectives {\bf and}, {\bf
4248     or}, {\bf not}. Parentheses can be used to alter the precedence of the
4249     operators.
4250    
4251     \begin{center}
4252     \begin{tabular}{|ll|}
4253     \hline
4254     {\bf logical operator} & {\bf equivalent operator} \\
4255     \hline
4256     and & ``\&'', ``\&\&'' \\
4257     or & ``$|$'', ``$||$'', ``,'' \\
4258     not & ``!'' \\
4259     \hline
4260     \end{tabular}
4261     \end{center}
4262    
4263     \subsection{\label{section:name}Name expressions}
4264    
4265     \begin{center}
4266     \begin{tabular}{|llp{3in}|}
4267     \hline
4268     {\bf type of expression} & {\bf examples} & {\bf translation of
4269     examples} \\
4270     \hline
4271     expression without ``.'' & select DMPC & select all StuntDoubles
4272     belonging to all DMPC molecules \\
4273     & select C* & select all atoms which have atom types beginning with C
4274     \\
4275     & select DMPC\_RB\_* & select all RigidBodies in DMPC molecules (but
4276     only select the rigid bodies, and not the atoms belonging to them). \\
4277     \hline
4278     expression has one ``.'' & select TIP3P.O\_TIP3P & select the O\_TIP3P
4279     atoms belonging to TIP3P molecules \\
4280     & select DMPC\_RB\_O.PO4 & select the PO4 atoms belonging to
4281     the first
4282     RigidBody in each DMPC molecule \\
4283     & select DMPC.20 & select the twentieth StuntDouble in each DMPC
4284     molecule \\
4285     \hline
4286     expression has two ``.''s & select DMPC.DMPC\_RB\_?.* &
4287     select all atoms
4288     belonging to all rigid bodies within all DMPC molecules \\
4289     \hline
4290     \end{tabular}
4291     \end{center}
4292    
4293     \subsection{\label{section:index}Index expressions}
4294    
4295     \begin{center}
4296     \begin{tabular}{|lp{4in}|}
4297     \hline
4298     {\bf examples} & {\bf translation of examples} \\
4299     \hline
4300     select 20 & select all of the StuntDoubles belonging to Molecule 20 \\
4301     select 20 to 30 & select all of the StuntDoubles belonging to
4302     molecules which have global indices between 20 (inclusive) and 30
4303     (exclusive) \\
4304     \hline
4305     \end{tabular}
4306     \end{center}
4307    
4308     \subsection{\label{section:predefined}Predefined sets}
4309    
4310     \begin{center}
4311     \begin{tabular}{|ll|}
4312     \hline
4313     {\bf keyword} & {\bf description} \\
4314     \hline
4315     all & select all StuntDoubles \\
4316     none & select none of the StuntDoubles \\
4317     \hline
4318     \end{tabular}
4319     \end{center}
4320    
4321     \subsection{\label{section:userdefined}User-defined expressions}
4322    
4323     Users can define arbitrary terms to represent groups of StuntDoubles,
4324     and then use the define terms in select commands. The general form for
4325     the define command is: {\bf define {\it term expression}}
4326    
4327     Once defined, the user can specify such terms in boolean expressions
4328    
4329     {\tt define SSDWATER SSD or SSD1 or SSDRF}
4330    
4331     {\tt select SSDWATER}
4332    
4333     \subsection{\label{section:comparison}Comparison expressions}
4334    
4335     StuntDoubles can be selected by using comparision operators on their
4336     properties. The general form for the comparison command is: a property
4337     name, followed by a comparision operator and then a number.
4338    
4339     \begin{center}
4340     \begin{tabular}{|l|l|}
4341     \hline
4342     {\bf property} & mass, charge \\
4343     {\bf comparison operator} & ``$>$'', ``$<$'', ``$=$'', ``$>=$'',
4344     ``$<=$'', ``$!=$'' \\
4345     \hline
4346     \end{tabular}
4347     \end{center}
4348    
4349     For example, the phrase {\tt select mass > 16.0 and charge < -2}
4350 kstocke1 3708 would select StuntDoubles which have mass greater than 16.0 and charges
4351 gezelter 3607 less than -2.
4352    
4353     \subsection{\label{section:within}Within expressions}
4354    
4355     The ``within'' keyword allows the user to select all StuntDoubles
4356     within the specified distance (in Angstroms) from a selection,
4357     including the selected atom itself. The general form for within
4358     selection is: {\tt select within(distance, expression)}
4359    
4360     For example, the phrase {\tt select within(2.5, PO4 or NC4)} would
4361     select all StuntDoubles which are within 2.5 angstroms of PO4 or NC4
4362     atoms.
4363    
4364     \section{\label{section:tools}Tools which use the selection command}
4365    
4366     \subsection{\label{section:Dump2XYZ}Dump2XYZ}
4367    
4368     Dump2XYZ can transform an {\sc OpenMD} dump file into a xyz file which can
4369     be opened by other molecular dynamics viewers such as Jmol and
4370     VMD. The options available for Dump2XYZ are as follows:
4371    
4372    
4373     \begin{longtable}[c]{|EFG|}
4374     \caption{Dump2XYZ Command-line Options}
4375     \\ \hline
4376     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4377     \endhead
4378     \hline
4379     \endfoot
4380     -h & {\tt -{}-help} & Print help and exit \\
4381     -V & {\tt -{}-version} & Print version and exit \\
4382     -i & {\tt -{}-input=filename} & input dump file \\
4383     -o & {\tt -{}-output=filename} & output file name \\
4384     -n & {\tt -{}-frame=INT} & print every n frame (default=`1') \\
4385     -w & {\tt -{}-water} & skip the the waters (default=off) \\
4386     -m & {\tt -{}-periodicBox} & map to the periodic box (default=off)\\
4387     -z & {\tt -{}-zconstraint} & replace the atom types of zconstraint molecules (default=off) \\
4388     -r & {\tt -{}-rigidbody} & add a pseudo COM atom to rigidbody (default=off) \\
4389     -t & {\tt -{}-watertype} & replace the atom type of water model (default=on) \\
4390 gezelter 4101 -b & {\tt -{}-basetype} & using base atom type
4391     (default=off) \\
4392     -v& {\tt -{}-velocities} & Print velocities in xyz file (default=off)\\
4393     -f& {\tt -{}-forces} & Print forces xyz file (default=off)\\
4394     -u& {\tt -{}-vectors} & Print vectors (dipoles, etc) in xyz file
4395     (default=off)\\
4396     -c& {\tt -{}-charges} & Print charges in xyz file (default=off)\\
4397     -e& {\tt -{}-efield} & Print electric field vector in xyz file
4398     (default=off)\\
4399 gezelter 3607 & {\tt -{}-repeatX=INT} & The number of images to repeat in the x direction (default=`0') \\
4400     & {\tt -{}-repeatY=INT} & The number of images to repeat in the y direction (default=`0') \\
4401     & {\tt -{}-repeatZ=INT} & The number of images to repeat in the z direction (default=`0') \\
4402     -s & {\tt -{}-selection=selection script} & By specifying {\tt -{}-selection}=``selection command'' with Dump2XYZ, the user can select an arbitrary set of StuntDoubles to be
4403     converted. \\
4404     & {\tt -{}-originsele} & By specifying {\tt -{}-originsele}=``selection command'' with Dump2XYZ, the user can re-center the origin of the system around a specific StuntDouble \\
4405     & {\tt -{}-refsele} & In order to rotate the system, {\tt -{}-originsele} and {\tt -{}-refsele} must be given to define the new coordinate set. A StuntDouble which contains a dipole (the direction of the dipole is always (0, 0, 1) in body frame) is specified by {\tt -{}-originsele}. The new x-z plane is defined by the direction of the dipole and the StuntDouble is specified by {\tt -{}-refsele}.
4406     \end{longtable}
4407    
4408    
4409     \subsection{\label{section:StaticProps}StaticProps}
4410    
4411     {\tt StaticProps} can compute properties which are averaged over some
4412     or all of the configurations that are contained within a dump file.
4413     The most common example of a static property that can be computed is
4414     the pair distribution function between atoms of type $A$ and other
4415     atoms of type $B$, $g_{AB}(r)$. StaticProps can also be used to
4416     compute the density distributions of other molecules in a reference
4417     frame {\it fixed to the body-fixed reference frame} of a selected atom
4418     or rigid body.
4419    
4420     There are five seperate radial distribution functions availiable in
4421     {\sc OpenMD}. Since every radial distrbution function invlove the calculation
4422     between pairs of bodies, {\tt -{}-sele1} and {\tt -{}-sele2} must be specified to tell
4423     StaticProps which bodies to include in the calculation.
4424    
4425     \begin{description}
4426     \item[{\tt -{}-gofr}] Computes the pair distribution function,
4427     \begin{equation*}
4428     g_{AB}(r) = \frac{1}{\rho_B}\frac{1}{N_A} \langle \sum_{i \in A}
4429     \sum_{j \in B} \delta(r - r_{ij}) \rangle
4430     \end{equation*}
4431     \item[{\tt -{}-r\_theta}] Computes the angle-dependent pair distribution
4432     function. The angle is defined by the intermolecular vector $\vec{r}$ and
4433     $z$-axis of DirectionalAtom A,
4434     \begin{equation*}
4435     g_{AB}(r, \cos \theta) = \frac{1}{\rho_B}\frac{1}{N_A} \langle \sum_{i \in A}
4436     \sum_{j \in B} \delta(r - r_{ij}) \delta(\cos \theta_{ij} - \cos \theta)\rangle
4437     \end{equation*}
4438     \item[{\tt -{}-r\_omega}] Computes the angle-dependent pair distribution
4439     function. The angle is defined by the $z$-axes of the two
4440     DirectionalAtoms A and B.
4441     \begin{equation*}
4442     g_{AB}(r, \cos \omega) = \frac{1}{\rho_B}\frac{1}{N_A} \langle \sum_{i \in A}
4443     \sum_{j \in B} \delta(r - r_{ij}) \delta(\cos \omega_{ij} - \cos \omega)\rangle
4444     \end{equation*}
4445     \item[{\tt -{}-theta\_omega}] Computes the pair distribution in the angular
4446     space $\theta, \omega$ defined by the two angles mentioned above.
4447     \begin{equation*}
4448     g_{AB}(\cos\theta, \cos \omega) = \frac{1}{\rho_B}\frac{1}{N_A} \langle \sum_{i \in A}
4449     \sum_{j \in B} \langle \delta(\cos \theta_{ij} - \cos \theta)
4450     \delta(\cos \omega_{ij} - \cos \omega)\rangle
4451     \end{equation*}
4452     \item[{\tt -{}-gxyz}] Calculates the density distribution of particles of type
4453     B in the body frame of particle A. Therefore, {\tt -{}-originsele} and
4454     {\tt -{}-refsele} must be given to define A's internal coordinate set as
4455     the reference frame for the calculation.
4456     \end{description}
4457    
4458     The vectors (and angles) associated with these angular pair
4459     distribution functions are most easily seen in the figure below:
4460    
4461     \begin{figure}
4462     \centering
4463     \includegraphics[width=3in]{definition.pdf}
4464     \caption[Definitions of the angles between directional objects]{ \\ Any
4465     two directional objects (DirectionalAtoms and RigidBodies) have a set
4466     of two angles ($\theta$, and $\omega$) between the z-axes of their
4467     body-fixed frames.}
4468     \label{fig:gofr}
4469     \end{figure}
4470    
4471     The options available for {\tt StaticProps} are as follows:
4472     \begin{longtable}[c]{|EFG|}
4473     \caption{StaticProps Command-line Options}
4474     \\ \hline
4475     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4476     \endhead
4477     \hline
4478     \endfoot
4479     -h& {\tt -{}-help} & Print help and exit \\
4480     -V& {\tt -{}-version} & Print version and exit \\
4481     -i& {\tt -{}-input=filename} & input dump file \\
4482     -o& {\tt -{}-output=filename} & output file name \\
4483     -n& {\tt -{}-step=INT} & process every n frame (default=`1') \\
4484     -r& {\tt -{}-nrbins=INT} & number of bins for distance (default=`100') \\
4485     -a& {\tt -{}-nanglebins=INT} & number of bins for cos(angle) (default= `50') \\
4486     -l& {\tt -{}-length=DOUBLE} & maximum length (Defaults to 1/2 smallest length of first frame) \\
4487     & {\tt -{}-sele1=selection script} & select the first StuntDouble set \\
4488     & {\tt -{}-sele2=selection script} & select the second StuntDouble set \\
4489     & {\tt -{}-sele3=selection script} & select the third StuntDouble set \\
4490 gezelter 4101 & {\tt -{}-refsele=selection script} & select reference (can only
4491     be used with {\tt -{}-gxyz}) \\
4492     & {\tt -{}-comsele=selection script}
4493     & select stunt doubles for center-of-mass
4494     reference point\\
4495     & {\tt -{}-seleoffset=INT} & global index offset for a second object (used
4496     to define a vector between sites in molecule)\\
4497    
4498 gezelter 3607 & {\tt -{}-molname=STRING} & molecule name \\
4499     & {\tt -{}-begin=INT} & begin internal index \\
4500     & {\tt -{}-end=INT} & end internal index \\
4501 gezelter 4101 & {\tt -{}-radius=DOUBLE} & nanoparticle radius\\
4502 gezelter 3607 \hline
4503     \multicolumn{3}{|l|}{One option from the following group of options is required:} \\
4504     \hline
4505 gezelter 4101 & {\tt -{}-bo} & bond order parameter ({\tt -{}-rcut} must be specified) \\
4506     & {\tt -{}-bor} & bond order parameter as a function of
4507     radius ({\tt -{}-rcut} must be specified) \\
4508     & {\tt -{}-bad} & $N(\theta)$ bond angle density within ({\tt -{}-rcut} must be specified) \\
4509     & {\tt -{}-count} & count of molecules matching selection
4510     criteria (and associated statistics) \\
4511     -g& {\tt -{}-gofr} & $g(r)$ \\
4512     & {\tt -{}-gofz} & $g(z)$ \\
4513     & {\tt -{}-r\_theta} & $g(r, \cos(\theta))$ \\
4514     & {\tt -{}-r\_omega} & $g(r, \cos(\omega))$ \\
4515     & {\tt -{}-r\_z} & $g(r, z)$ \\
4516     & {\tt -{}-theta\_omega} & $g(\cos(\theta), \cos(\omega))$ \\
4517 gezelter 3607 & {\tt -{}-gxyz} & $g(x, y, z)$ \\
4518 gezelter 4101 & {\tt -{}-twodgofr} & 2D $g(r)$ (Slab width {\tt -{}-dz} must be specified)\\
4519     -p& {\tt -{}-p2} & $P_2$ order parameter ({\tt -{}-sele1} must be specified, {\tt -{}-sele2} is optional) \\
4520     & {\tt -{}-rp2} & Ripple order parameter ({\tt -{}-sele1} and {\tt -{}-sele2} must be specified) \\
4521 gezelter 3607 & {\tt -{}-scd} & $S_{CD}$ order parameter(either {\tt -{}-sele1}, {\tt -{}-sele2}, {\tt -{}-sele3} are specified or {\tt -{}-molname}, {\tt -{}-begin}, {\tt -{}-end} are specified) \\
4522 gezelter 4101 -d& {\tt -{}-density} & density plot \\
4523     & {\tt -{}-slab\_density} & slab density \\
4524     & {\tt -{}-p\_angle} & $p(\cos(\theta))$ ($\theta$
4525     is the angle between molecular axis and radial vector from origin\\
4526     & {\tt -{}-hxy} & Calculates the undulation spectrum, $h(x,y)$, of an interface \\
4527     & {\tt -{}-rho\_r} & $\rho(r)$\\
4528     & {\tt -{}-angle\_r} & $\theta(r)$ (spatially resolves the
4529     angle between the molecular axis and the radial vector from the
4530     origin)\\
4531     & {\tt -{}-hullvol} & hull volume of nanoparticle\\
4532     & {\tt -{}-rodlength} & length of nanorod\\
4533     -Q& {\tt -{}-tet\_param} & tetrahedrality order parameter ($Q$)\\
4534     & {\tt -{}-tet\_param\_z} & spatially-resolved tetrahedrality order
4535     parameter $Q(z)$\\
4536     & {\tt -{}-rnemdz} & slab-resolved RNEMD statistics (temperature,
4537     density, velocity)\\
4538     & {\tt -{}-rnemdr} & shell-resolved RNEMD statistics (temperature,
4539     density, angular velocity)
4540 gezelter 3607 \end{longtable}
4541    
4542     \subsection{\label{section:DynamicProps}DynamicProps}
4543    
4544     {\tt DynamicProps} computes time correlation functions from the
4545     configurations stored in a dump file. Typical examples of time
4546     correlation functions are the mean square displacement and the
4547     velocity autocorrelation functions. Once again, the selection syntax
4548     can be used to specify the StuntDoubles that will be used for the
4549     calculation. A general time correlation function can be thought of
4550     as:
4551     \begin{equation}
4552     C_{AB}(t) = \langle \vec{u}_A(t) \cdot \vec{v}_B(0) \rangle
4553     \end{equation}
4554     where $\vec{u}_A(t)$ is a vector property associated with an atom of
4555     type $A$ at time $t$, and $\vec{v}_B(t^{\prime})$ is a different vector
4556     property associated with an atom of type $B$ at a different time
4557     $t^{\prime}$. In most autocorrelation functions, the vector properties
4558     ($\vec{v}$ and $\vec{u}$) and the types of atoms ($A$ and $B$) are
4559     identical, and the three calculations built in to {\tt DynamicProps}
4560     make these assumptions. It is possible, however, to make simple
4561     modifications to the {\tt DynamicProps} code to allow the use of {\it
4562     cross} time correlation functions (i.e. with different vectors). The
4563     ability to use two selection scripts to select different types of
4564     atoms is already present in the code.
4565    
4566     The options available for DynamicProps are as follows:
4567     \begin{longtable}[c]{|EFG|}
4568     \caption{DynamicProps Command-line Options}
4569     \\ \hline
4570     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4571     \endhead
4572     \hline
4573     \endfoot
4574     -h& {\tt -{}-help} & Print help and exit \\
4575     -V& {\tt -{}-version} & Print version and exit \\
4576     -i& {\tt -{}-input=filename} & input dump file \\
4577     -o& {\tt -{}-output=filename} & output file name \\
4578     & {\tt -{}-sele1=selection script} & select first StuntDouble set \\
4579     & {\tt -{}-sele2=selection script} & select second StuntDouble set (if sele2 is not set, use script from sele1) \\
4580 gezelter 4101 & {\tt -{}-order=INT} & Lengendre Polynomial Order\\
4581     -z& {\tt -{}-nzbins=INT} & Number of $z$ bins (default=`100`)\\
4582     -m& {\tt -{}-memory=memory specification}
4583     &Available memory
4584     (default=`2G`)\\
4585 gezelter 3607 \hline
4586     \multicolumn{3}{|l|}{One option from the following group of options is required:} \\
4587     \hline
4588 gezelter 4101 -s& {\tt -{}-selecorr} & selection correlation function \\
4589     -r& {\tt -{}-rcorr} & compute mean squared displacement \\
4590     -v& {\tt -{}-vcorr} & velocity autocorrelation function \\
4591     -d& {\tt -{}-dcorr} & dipole correlation function \\
4592     -l& {\tt -{}-lcorr} & Lengendre correlation function \\
4593     & {\tt -{}-lcorrZ} & Lengendre correlation function binned by $z$ \\
4594     & {\tt -{}-cohZ} & Lengendre correlation function for OH bond vectors binned by $z$\\
4595     -M& {\tt -{}-sdcorr} & System dipole correlation function\\
4596     & {\tt -{}-r\_rcorr} & Radial mean squared displacement\\
4597     & {\tt -{}-thetacorr} & Angular mean squared displacement\\
4598     & {\tt -{}-drcorr} & Directional mean squared displacement for particles with unit vectors\\
4599     & {\tt -{}-helfandEcorr} & Helfand moment for thermal conductvity\\
4600     -p& {\tt -{}-momentum} & Helfand momentum for viscosity\\
4601     & {\tt -{}-stresscorr} & Stress tensor correlation function
4602 gezelter 3607 \end{longtable}
4603    
4604     \chapter{\label{section:PreparingInput} Preparing Input Configurations}
4605    
4606     {\sc OpenMD} version 4 comes with a few utility programs to aid in
4607     setting up initial configuration and meta-data files. Usually, a user
4608     is interested in either importing a structure from some other format
4609     (usually XYZ or PDB), or in building an initial configuration in some
4610     perfect crystalline lattice. The programs bundled with {\sc OpenMD}
4611     which import coordinate files are {\tt atom2md}, {\tt xyz2md}, and
4612     {\tt pdb2md}. The programs which generate perfect crystals are called
4613     {\tt SimpleBuilder} and {\tt RandomBuilder}
4614    
4615     \section{\label{section:atom2md}atom2md, xyz2md, and pdb2md}
4616    
4617     {\tt atom2md}, {\tt xyz2md}, and {\tt pdb2md} attempt to construct
4618     {\tt .md} files from a single file containing only atomic coordinate
4619     information. To do this task, they make reasonable guesses about
4620     bonding from the distance between atoms in the coordinate, and attempt
4621     to identify other terms in the potential energy from the topology of
4622     the graph of discovered bonds. This procedure is not perfect, and the
4623     user should check the discovered bonding topology that is contained in
4624     the {\tt $<$MetaData$>$} block in the file that is generated.
4625    
4626     Typically, the user would run:
4627    
4628     {\tt atom2md $<$input spec$>$ [Options]}
4629    
4630     Here {\tt $<$input spec$>$} can be used to specify the type of file being
4631     used for configuration input. I.e. using {\tt -ipdb} specifies that the
4632     input file contains coordinate information in the PDB format.
4633    
4634     The options available for atom2md are as follows:
4635     \begin{longtable}[c]{|HI|}
4636     \caption{atom2md Command-line Options}
4637     \\ \hline
4638     {\bf option} & {\bf behavior} \\ \hline
4639     \endhead
4640     \hline
4641     \endfoot
4642     -f \# & Start import at molecule \# specified \\
4643     -l \# & End import at molecule \# specified \\
4644     -t & All input files describe a single molecule \\
4645     -e & Continue with next object after error, if possible \\
4646     -z & Compress the output with gzip \\
4647     -H & Outputs this help text \\
4648     -Hxxx & (xxx is file format ID e.g. -Hpdb) gives format info \\
4649     -Hall & Outputs details of all formats \\
4650     -V & Outputs version number \\
4651     \hline
4652     \multicolumn{2}{|l|}{The following file formats are recognized:}\\
4653     \hline
4654     ent & Protein Data Bank format \\
4655     in & {\sc OpenMD} cartesian coordinates format \\
4656     pdb & Protein Data Bank format \\
4657     prep & Amber Prep format \\
4658     xyz & XYZ cartesian coordinates format \\
4659     \hline
4660     \multicolumn{2}{|l|}{More specific info and options are available
4661     using -H$<$format-type$>$, e.g. -Hpdb}
4662     \end{longtable}
4663    
4664     The specific programs {\tt xyz2md} and {\tt pdb2md} are identical
4665     to {\tt atom2md}, but they use a specific input format and do not
4666     expect the the input specifier on the command line.
4667    
4668 gezelter 4101
4669 gezelter 3607 \section{\label{section:SimpleBuilder}SimpleBuilder}
4670    
4671     {\tt SimpleBuilder} creates simple lattice structures. It requires an
4672     initial, but skeletal {\sc OpenMD} file to specify the components that are to
4673     be placed on the lattice. The total number of placed molecules will
4674     be shown at the top of the configuration file that is generated, and
4675     that number may not match the original meta-data file, so a new
4676     meta-data file is also generated which matches the lattice structure.
4677    
4678     The options available for SimpleBuilder are as follows:
4679     \begin{longtable}[c]{|EFG|}
4680     \caption{SimpleBuilder Command-line Options}
4681     \\ \hline
4682     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4683     \endhead
4684     \hline
4685     \endfoot
4686     -h& {\tt -{}-help} & Print help and exit\\
4687     -V& {\tt -{}-version} & Print version and exit\\
4688     -o& {\tt -{}-output=STRING} & Output file name\\
4689     & {\tt -{}-density=DOUBLE} & density ($\mathrm{g~cm}^{-3}$)\\
4690     & {\tt -{}-nx=INT} & number of unit cells in x\\
4691     & {\tt -{}-ny=INT} & number of unit cells in y\\
4692     & {\tt -{}-nz=INT} & number of unit cells in z
4693     \end{longtable}
4694    
4695 gezelter 4101 \section{\label{section:icosahedralBuilder}icosahedralBuilder}
4696    
4697     {\tt icosahedralBuilder} creates single-component geometric solids
4698     that can be useful in simulating nanostructures. Like the other
4699     builders, it requires an initial, but skeletal {\sc OpenMD} file to
4700     specify the component that is to be placed on the lattice. The total
4701     number of placed molecules will be shown at the top of the
4702     configuration file that is generated, and that number may not match
4703     the original meta-data file, so a new meta-data file is also generated
4704     which matches the lattice structure.
4705    
4706     The options available for icosahedralBuilder are as follows:
4707     \begin{longtable}[c]{|EFG|}
4708     \caption{icosahedralBuilder Command-line Options}
4709     \\ \hline
4710     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4711     \endhead
4712     \hline
4713     \endfoot
4714     -h& {\tt -{}-help} & Print help and exit\\
4715     -V& {\tt -{}-version} & Print version and exit\\
4716     -o& {\tt -{}-output=STRING} & Output file name\\
4717     -n& {\tt -{}-shells=INT} & Nanoparticle shells\\
4718     -d& {\tt -{}-latticeConstant=DOUBLE} & Lattice spacing in Angstroms for cubic lattice.\\
4719     -c& {\tt -{}-columnAtoms=INT} & Number of atoms along central
4720     column (Decahedron only)\\
4721     -t& {\tt -{}-twinAtoms=INT} & Number of atoms along twin
4722     boundary (Decahedron only) \\
4723     -p& {\tt -{}-truncatedPlanes=INT} & Number of truncated planes (Curling-stone Decahedron only)\\
4724     \hline
4725     \multicolumn{3}{|l|}{One option from the following group of options is required:} \\
4726     \hline
4727     & {\tt -{}-ico} & Create an Icosahedral cluster \\
4728     & {\tt -{}-deca} & Create a regualar Decahedral cluster\\
4729     & {\tt -{}-ino} & Create an Ino Decahedral cluster\\
4730     & {\tt -{}-marks} & Create a Marks Decahedral cluster\\
4731     & {\tt -{}-stone} & Create a Curling-stone Decahedral cluster
4732     \end{longtable}
4733    
4734    
4735 gezelter 3607 \section{\label{section:Hydro}Hydro}
4736     {\tt Hydro} generates resistance tensor ({\tt .diff}) files which are
4737     required when using the Langevin integrator using complex rigid
4738     bodies. {\tt Hydro} supports two approximate models: the {\tt
4739     BeadModel} and {\tt RoughShell}. Additionally, {\tt Hydro} can
4740     generate resistance tensor files using analytic solutions for simple
4741     shapes. To generate a {\tt }.diff file, a meta-data file is needed as
4742     the input file. Since the resistance tensor depends on these
4743     quantities, the {\tt viscosity} of the solvent and the temperature
4744     ({\tt targetTemp}) of the system must be defined in meta-data file. If
4745     the approximate model in use is the {\tt RoughShell} model the {\tt
4746     beadSize} (the diameter of the small beads used to approximate the
4747     surface of the body) must also be specified.
4748    
4749     The options available for Hydro are as follows:
4750     \begin{longtable}[c]{|EFG|}
4751     \caption{Hydro Command-line Options}
4752     \\ \hline
4753     {\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline
4754     \endhead
4755     \hline
4756     \endfoot
4757     -h& {\tt -{}-help} & Print help and exit\\
4758     -V& {\tt -{}-version} & Print version and exit\\
4759     -i& {\tt -{}-input=filename} & input MetaData (md) file\\
4760     -o& {\tt -{}-output=STRING} & Output file name\\
4761     & {\tt -{}-model=STRING} & hydrodynamics model (supports both
4762     {\tt RoughShell} and {\tt BeadModel})\\
4763     -b& {\tt -{}-beads} & generate the beads only,
4764     hydrodynamic calculations will not be performed (default=off)\\
4765     \end{longtable}
4766    
4767    
4768 gezelter 4101
4769    
4770    
4771 gezelter 3607 \chapter{\label{section:parallelization} Parallel Simulation Implementation}
4772    
4773     Although processor power is continually improving, it is still
4774     unreasonable to simulate systems of more than 10,000 atoms on a single
4775     processor. To facilitate study of larger system sizes or smaller
4776     systems for longer time scales, parallel methods were developed to
4777     allow multiple CPU's to share the simulation workload. Three general
4778     categories of parallel decomposition methods have been developed:
4779     these are the atomic,\cite{Fox88} spatial~\cite{plimpton95} and
4780     force~\cite{Paradyn} decomposition methods.
4781    
4782     Algorithmically simplest of the three methods is atomic decomposition,
4783     where $N$ particles in a simulation are split among $P$ processors for
4784     the duration of the simulation. Computational cost scales as an
4785     optimal $\mathcal{O}(N/P)$ for atomic decomposition. Unfortunately, all
4786     processors must communicate positions and forces with all other
4787     processors at every force evaluation, leading the communication costs
4788     to scale as an unfavorable $\mathcal{O}(N)$, \emph{independent of the
4789     number of processors}. This communication bottleneck led to the
4790     development of spatial and force decomposition methods, in which
4791     communication among processors scales much more favorably. Spatial or
4792     domain decomposition divides the physical spatial domain into 3D boxes
4793     in which each processor is responsible for calculation of forces and
4794     positions of particles located in its box. Particles are reassigned to
4795     different processors as they move through simulation space. To
4796     calculate forces on a given particle, a processor must simply know the
4797     positions of particles within some cutoff radius located on nearby
4798     processors rather than the positions of particles on all
4799     processors. Both communication between processors and computation
4800     scale as $\mathcal{O}(N/P)$ in the spatial method. However, spatial
4801     decomposition adds algorithmic complexity to the simulation code and
4802     is not very efficient for small $N$, since the overall communication
4803     scales as the surface to volume ratio $\mathcal{O}(N/P)^{2/3}$ in
4804     three dimensions.
4805    
4806     The parallelization method used in {\sc OpenMD} is the force
4807     decomposition method.\cite{hendrickson:95} Force decomposition assigns
4808     particles to processors based on a block decomposition of the force
4809     matrix. Processors are split into an optimally square grid forming row
4810     and column processor groups. Forces are calculated on particles in a
4811     given row by particles located in that processor's column
4812     assignment. One deviation from the algorithm described by Hendrickson
4813     {\it et al.} is the use of column ordering based on the row indexes
4814     preventing the need for a transpose operation necessitating a second
4815     communication step when gathering the final force components. Force
4816     decomposition is less complex to implement than the spatial method but
4817     still scales computationally as $\mathcal{O}(N/P)$ and scales as
4818     $\mathcal{O}(N/\sqrt{P})$ in communication cost. Plimpton has also
4819     found that force decompositions scale more favorably than spatial
4820     decompositions for systems up to 10,000 atoms and favorably compete
4821     with spatial methods up to 100,000 atoms.\cite{plimpton95}
4822    
4823     \chapter{\label{section:conclusion}Conclusion}
4824    
4825     We have presented a new parallel simulation program called {\sc
4826     OpenMD}. This program offers some novel capabilities, but mostly makes
4827     available a library of modern object-oriented code for the scientific
4828     community to use freely. Notably, {\sc OpenMD} can handle symplectic
4829     integration of objects (atoms and rigid bodies) which have
4830     orientational degrees of freedom. It can also work with transition
4831     metal force fields and point-dipoles. It is capable of scaling across
4832     multiple processors through the use of force based decomposition. It
4833     also implements several advanced integrators allowing the end user
4834     control over temperature and pressure. In addition, it is capable of
4835     integrating constrained dynamics through both the {\sc rattle}
4836     algorithm and the $z$-constraint method.
4837    
4838     We encourage other researchers to download and apply this program to
4839     their own research problems. By making the code available, we hope to
4840     encourage other researchers to contribute their own code and make it a
4841     more powerful package for everyone in the molecular dynamics community
4842     to use. All source code for {\sc OpenMD} is available for download at
4843     {\tt http://openmd.net}.
4844    
4845     \chapter{Acknowledgments}
4846    
4847     Development of {\sc OpenMD} was funded by a New Faculty Award from the
4848     Camille and Henry Dreyfus Foundation and by the National Science
4849     Foundation under grant CHE-0134881. Computation time was provided by
4850     the Notre Dame Bunch-of-Boxes (B.o.B) computer cluster under NSF grant
4851     DMR-0079647.
4852    
4853    
4854 skuang 3793 \bibliographystyle{aip}
4855 gezelter 3607 \bibliography{openmdDoc}
4856    
4857     \end{document}