ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/openmdDocs/openmdDoc.tex
Revision: 4103
Committed: Tue Apr 22 18:19:31 2014 UTC (10 years, 4 months ago) by gezelter
Content type: application/x-tex
File size: 218915 byte(s)
Log Message:
More edits

File Contents

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