ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/oopsePaper/oopsePaper.tex
Revision: 1425
Committed: Wed Jul 28 15:44:21 2004 UTC (20 years, 9 months ago) by gezelter
Content type: application/x-tex
File size: 97610 byte(s)
Log Message:
edits done

File Contents

# Content
1 \documentclass[11pt]{article}
2 \usepackage{amsmath}
3 \usepackage{amssymb}
4 \usepackage{endfloat}
5 \usepackage{listings}
6 \usepackage{palatino}
7 \usepackage{graphicx}
8 \usepackage[ref]{overcite}
9 \usepackage{setspace}
10 \usepackage{tabularx}
11 \pagestyle{plain}
12 \pagenumbering{arabic}
13 \oddsidemargin 0.0cm \evensidemargin 0.0cm
14 \topmargin -21pt \headsep 10pt
15 \textheight 9.0in \textwidth 6.5in
16 \brokenpenalty=10000
17 \renewcommand{\baselinestretch}{1.2}
18 \renewcommand\citemid{\ } % no comma in optional reference note
19
20 \begin{document}
21 \lstset{language=C,frame=TB,basicstyle=\small,basicstyle=\ttfamily, %
22 xleftmargin=0.5in, xrightmargin=0.5in,captionpos=b, %
23 abovecaptionskip=0.5cm, belowcaptionskip=0.5cm}
24 \renewcommand{\lstlistingname}{Scheme}
25 \title{{\sc oopse}: An Open Source Object-Oriented Parallel Simulation
26 Engine for Molecular Dynamics}
27
28 \author{Matthew A. Meineke, Charles F. Vardeman II, Teng Lin,\\
29 Christopher J. Fennell and J. Daniel Gezelter\\
30 Department of Chemistry and Biochemistry\\
31 University of Notre Dame\\
32 Notre Dame, Indiana 46556}
33
34 \date{\today}
35 \maketitle
36
37 \begin{abstract}
38 Need an abstract.
39 \end{abstract}
40
41 \section{\label{sec:intro}Introduction}
42
43 UNDERWAY
44
45
46 We have structured this paper to first discuss the underlying concepts
47 in this simulation package (Sec. \ref{oopseSec:IOfiles}). The
48 empirical energy functions implemented are discussed in
49 Sec.~\ref{oopseSec:empiricalEnergy}. Sec.~\ref{oopseSec:mechanics}
50 describes the various Molecular Dynamics algorithms {\sc oopse}
51 implements in the integration of the Newtonian equations of motion.
52 Program design considerations for parallel computing are presented in
53 Sec.~\ref{oopseSec:parallelization}. Concluding remarks are presented
54 in Sec.~\ref{oopseSec:conclusion}.
55
56 \section{\label{oopseSec:IOfiles}Concepts \& Files}
57
58 A simulation in {\sc oopse} is built using a few fundamental
59 conceptual building blocks most of which are chemically intuitive.
60 The basic unit of a simulation is an {\tt atom}. The parameters
61 describing an {\tt atom} have been generalized to make it as flexible
62 as possible; this means that in addition to translational degrees of
63 freedom, {\tt Atoms} may also have {\it orientational} degrees of freedom.
64
65 The fundamental (static) properties of {\tt atoms} are defined by the
66 {\tt forceField} chosen for the simulation. The atomic properties
67 specified by a {\tt forceField} might include (but are not limited to)
68 charge, $\sigma$ and $\epsilon$ values for Lennard-Jones interactions,
69 the strength of the dipole moment ($\mu$), the mass, and the moments
70 of inertia. Other more complicated properties of atoms might also be
71 specified by the {\tt forceField}.
72
73 {\tt Atoms} can be grouped together in many ways. A {\tt rigidBody}
74 contains atoms that exert no forces on one another and which move as a
75 single rigid unit. A {\tt cutoffGroup} may contain atoms which
76 function together as a (rigid {\it or} non-rigid) unit for potential
77 energy calculations,
78 \begin{equation}
79 V_{ab} = s(r_{ab}) \sum_{i \in a} \sum_{j \in b} V_{ij}(r_{ij})
80 \end{equation}
81 Here, $a$ and $b$ are two {\tt cutoffGroups} containing multiple atoms
82 ($a = \left\{i\right\}$ and $b = \left\{j\right\}$). $s(r_{ab})$ is a
83 generalized switching function which insures that the atoms in the two
84 {\tt cutoffGroups} are treated identically as the two groups enter or
85 leave an interaction region.
86
87 {\tt Atoms} may also be grouped in more traditional ways into {\tt
88 bonds}, {\tt bends}, and {\tt torsions}. These groupings allow the
89 correct choice of interaction parameters for short-range interactions
90 to be chosen from the definitions in the {\tt forceField}.
91
92 All of these groups of {\tt atoms} are brought together in the {\tt
93 molecule}, which is the fundamental structure for setting up and {\sc
94 oopse} simulation. {\tt Molecules} contain lists of {\tt atoms}
95 followed by listings of the other atomic groupings ({\tt bonds}, {\tt
96 bends}, {\tt torsions}, {\tt rigidBodies}, and {\tt cutoffGroups})
97 which relate the atoms to one another.
98
99 Simulations often involve heterogeneous collections of molecules. To
100 specify a mixture of {\tt molecule} types, {\sc oopse} uses {\tt
101 components}. Even simulations containing only one type of molecule
102 must specify a single {\tt component}.
103
104 Starting a simulation requires two types of information: {\it
105 meta-data}, which describes the types of objects present in the
106 simulation, and {\it configuration} information, which describes the
107 initial state of these objects. The meta-data is given to {\sc oopse}
108 using a C-based syntax that is parsed at the beginning of the
109 simulation. Configuration information is specified using an extended
110 XYZ file format. Both the meta-data and configuration file formats
111 are described in the following sections.
112
113 \subsection{Meta-data Files}
114
115 {\sc oopse} uses a C-based script syntax to parse the meta-data files
116 at run time. These files allow the user to completely describe the
117 system they wish to simulate, as well as tailor {\sc oopse}'s behavior
118 during the simulation. Meta-data files are typically denoted with the
119 extension {\tt .md} (which can stand for Meta-Data or Molecular
120 Dynamics or Molecule Definition depending on the user's mood). An
121 example meta-data file is shown in Scheme~\ref{sch:mdExample}.
122
123 \begin{lstlisting}[float,caption={[An example of a complete meta-data
124 file] An example showing a complete meta-data
125 file.},label={sch:mdExample}]
126
127 molecule{
128 name = "Ar";
129 nAtoms = 1;
130 atom[0]{
131 type="Ar";
132 position( 0.0, 0.0, 0.0 );
133 }
134 }
135
136 nComponents = 1;
137 component{
138 type = "Ar";
139 nMol = 108;
140 }
141
142 initialConfig = "./argon.in";
143
144 forceField = "LJ";
145 ensemble = "NVE"; // specify the simulation ensemble
146 dt = 1.0; // the time step for integration
147 runTime = 1e3; // the total simulation run time
148 sampleTime = 100; // trajectory file frequency
149 statusTime = 50; // statistics file frequency
150
151 \end{lstlisting}
152
153 Within the meta-data file it is necessary to provide a complete
154 description of the molecule before it is actually placed in the
155 simulation. {\sc oopse}'s meta-data syntax was originally developed
156 with this goal in mind, and allows for the use of {\it include files}
157 to specify all atoms in a molecular prototype, as well as any bonds,
158 bends, or torsions. Include files allow the user to describe a
159 molecular prototype once, then simply include it into each simulation
160 containing that molecule. Returning to the example in
161 Scheme~\ref{sch:mdExample}, the include file's contents would be
162 Scheme~\ref{sch:mdIncludeExample}, and the new meta-data file would
163 become Scheme~\ref{sch:mdExPrime}.
164
165 \begin{lstlisting}[float,caption={An example molecule definition in an
166 include file.},label={sch:mdIncludeExample}]
167
168 molecule{
169 name = "Ar";
170 nAtoms = 1;
171 atom[0]{
172 type="Ar";
173 position( 0.0, 0.0, 0.0 );
174 }
175 }
176
177 \end{lstlisting}
178
179 \begin{lstlisting}[float,caption={Revised meta-data example.},label={sch:mdExPrime}]
180
181 #include "argon.md"
182
183 nComponents = 1;
184 component{
185 type = "Ar";
186 nMol = 108;
187 }
188
189 initialConfig = "./argon.in";
190
191 forceField = "LJ";
192 ensemble = "NVE";
193 dt = 1.0;
194 runTime = 1e3;
195 sampleTime = 100;
196 statusTime = 50;
197
198 \end{lstlisting}
199
200 \subsection{\label{oopseSec:atomsMolecules}Atoms, Molecules, and other
201 ways of grouping atoms}
202
203 As mentioned above, the fundamental unit for an {\sc oopse} simulation
204 is the {\tt atom}. Atoms can be collected into secondary structures
205 such as {\tt rigidBodies}, {\tt cutoffGroups}, or {\tt molecules}. The
206 {\tt molecule} is a way for {\sc oopse} to keep track of the atoms in
207 a simulation in logical manner. Molecular units store the identities
208 of all the atoms and rigid bodies associated with themselves, and they
209 are responsible for the evaluation of their own internal interactions
210 (\emph{i.e.}~bonds, bends, and torsions). Scheme
211 \ref{sch:mdIncludeExample} shows how one creates a molecule in an
212 included meta-data file. The positions of the atoms given in the
213 declaration are relative to the origin of the molecule, and the origin
214 is used when creating a system containing the molecule.
215
216 One of the features that sets {\sc oopse} apart from most of the
217 current molecular simulation packages is the ability to handle rigid
218 body dynamics. Rigid bodies are non-spherical particles or collections
219 of particles (e.g. $\mbox{C}_{60}$) that have a constant internal
220 potential and move collectively.\cite{Goldstein01} They are not
221 included in most simulation packages because of the algorithmic
222 complexity involved in propagating orientational degrees of freedom.
223 Integrators which propagate orientational motion with an acceptable
224 level of energy conservation for molecular dynamics are relatively
225 new inventions.
226
227 Moving a rigid body involves determination of both the force and
228 torque applied by the surroundings, which directly affect the
229 translational and rotational motion in turn. In order to accumulate
230 the total force on a rigid body, the external forces and torques must
231 first be calculated for all the internal particles. The total force on
232 the rigid body is simply the sum of these external forces.
233 Accumulation of the total torque on the rigid body is more complex
234 than the force because the torque is applied to the center of mass of
235 the rigid body. The space-fixed torque on rigid body $i$ is
236 \begin{equation}
237 \boldsymbol{\tau}_i=
238 \sum_{a}\biggl[(\mathbf{r}_{ia}-\mathbf{r}_i)\times \mathbf{f}_{ia}
239 + \boldsymbol{\tau}_{ia}\biggr],
240 \label{eq:torqueAccumulate}
241 \end{equation}
242 where $\boldsymbol{\tau}_i$ and $\mathbf{r}_i$ are the torque on and
243 position of the center of mass respectively, while $\mathbf{f}_{ia}$,
244 $\mathbf{r}_{ia}$, and $\boldsymbol{\tau}_{ia}$ are the force on,
245 position of, and torque on the component particles of the rigid body.
246
247 The summation of the total torque is done in the body fixed axis of
248 each rigid body. In order to move between the space fixed and body
249 fixed coordinate axes, parameters describing the orientation must be
250 maintained for each rigid body. At a minimum, the rotation matrix
251 ($\mathsf{A}$) can be described by the three Euler angles ($\phi,
252 \theta,$ and $\psi$), where the elements of $\mathsf{A}$ are composed of
253 trigonometric operations involving $\phi, \theta,$ and
254 $\psi$.\cite{Goldstein01} In order to avoid numerical instabilities
255 inherent in using the Euler angles, the four parameter ``quaternion''
256 scheme is often used. The elements of $\mathsf{A}$ can be expressed as
257 arithmetic operations involving the four quaternions ($q_0, q_1, q_2,$
258 and $q_3$).\cite{allen87:csl} Use of quaternions also leads to
259 performance enhancements, particularly for very small
260 systems.\cite{Evans77}
261
262 Rather than use one of the previously stated methods, {\sc oopse}
263 utilizes a relatively new scheme that propagates the entire nine
264 parameter rotation matrix. Further discussion on this choice can be
265 found in Sec.~\ref{oopseSec:integrate}. An example definition of a
266 rigid body can be seen in Scheme
267 \ref{sch:rigidBody}.
268
269 \begin{lstlisting}[float,caption={[Defining rigid bodies]A sample
270 definition of a molecule containing a rigid body and a cutoff
271 group},label={sch:rigidBody}]
272 molecule{
273 name = "TIP3P";
274 nAtoms = 3;
275 atom[0]{
276 type = "O_TIP3P";
277 position( 0.0, 0.0, -0.06556 );
278 }
279 atom[1]{
280 type = "H_TIP3P";
281 position( 0.0, 0.75695, 0.52032 );
282 }
283 atom[2]{
284 type = "H_TIP3P";
285 position( 0.0, -0.75695, 0.52032 );
286 }
287
288 nRigidBodies = 1;
289 rigidBody[0]{
290 nMembers = 3;
291 members(0, 1, 2);
292 }
293
294 nCutoffGroups = 1;
295 cutoffGroup[0]{
296 nMembers = 3;
297 members(0, 1, 2);
298 }
299 }
300 \end{lstlisting}
301
302 \subsection{\label{sec:miscConcepts}Creating a Metadata File}
303
304 The actual creation of a metadata file requires several key
305 components. The first part of the file needs to be the declaration of
306 all of the molecule prototypes used in the simulation. This is
307 typically done through included meta-data files. Only the molecules
308 actually present in the simulation need to be declared; however, {\sc
309 oopse} allows for the declaration of more molecules than are
310 needed. This gives the user the ability to build up a library of
311 commonly used molecules into a single include file.
312
313 Once all prototypes are declared, the ordering of the rest of the
314 script is less stringent. The molecular composition of the simulation
315 is specified with {\tt component} statements. Each different type of
316 molecule present in the simulation is considered a separate
317 component. The number of components must be declared before the first
318 component block statement (an example is shown in
319 Sch.~\ref{sch:mdExPrime}). The component blocks tell {\sc oopse} the
320 number of molecules that will be in the simulation, and the order in
321 which the components blocks are declared sets the ordering of the real
322 atoms in the configuration file as well as in the output files. The
323 remainder of the script then sets the various simulation parameters
324 for the system of interest.
325
326 The required set of parameters that must be present in all simulations
327 is given in Table~\ref{table:reqParams}. Since the user can use {\sc
328 oopse} to perform energy minimizations as well as molecular dynamics
329 simulations, one of the {\tt minimizer} or {\tt ensemble} keywords
330 must be present. The {\tt ensemble} keyword is responsible for
331 selecting the integration method used for the calculation of the
332 equations of motion. An in depth discussion of the various methods
333 available in {\sc oopse} can be found in
334 Sec.~\ref{oopseSec:mechanics}. The {\tt minimizer} keyword selects
335 which minimization method to use, and more details on the choices of
336 minimizer parameters can be found in
337 Sec.~\ref{oopseSec:minimizer}. The {\tt forceField} statement is
338 important for the selection of which forces will be used in the course
339 of the simulation. {\sc oopse} supports several force fields, as
340 outlined in Sec.~\ref{oopseSec:empericalEnergy}. The force fields are
341 interchangeable between simulations, with the only requirement being
342 that all atoms needed by the simulation are defined within the
343 selected force field.
344
345 For molecular dynamics simulations, the time step between force
346 evaluations is set with the {\tt dt} parameter, and {\tt runTime} will
347 set the time length of the simulation. Note, that {\tt runTime} is an
348 absolute time, meaning if the simulation is started at t = 10.0~ns
349 with a {\tt runTime} of 25.0~ns, the simulation will only run for an
350 additional 15.0~ns.
351
352 For energy minimizations, it is not necessary to specify {\tt dt} or
353 {\tt runTime}.
354
355 The final required parameter is the {\tt initialConfig}
356 statement. This will set the initial coordinates for the system, as
357 well as the initial time if the {\tt useInitalTime} flag is set to
358 {\tt true}. The format of the file specified in {\tt initialConfig},
359 is given in Sec.~\ref{oopseSec:coordFiles}. Additional parameters are
360 summarized in Table~\ref{table:genParams}.
361
362 It is important to note the fundamental units in all files which are
363 read and written by {\sc oopse}. Energies are in $\mbox{kcal
364 mol}^{-1}$, distances are in $\mbox{\AA}$, times are in $\mbox{fs}$,
365 translational velocities are in $\mbox{\AA fs}^{-1}$, and masses are
366 in $\mbox{amu}$. Orientational degrees of freedom are described using
367 quaternions (unitless, but $q_w^2 + q_x^2 + q_y^2 + q_z^2 = 1$),
368 body-fixed angular momenta ($\mbox{amu \AA}^{2} \mbox{radians
369 fs}^{-1}$), and body-fixed moments of inertia ($\mbox{amu \AA}^{2}$).
370
371 \begin{table}
372 \caption{Meta-data Keywords: Required Parameters}
373 \label{table:reqParams}
374 \begin{center}
375 % Note when adding or removing columns, the \hsize numbers must add up to the total number
376 % of columns.
377 \begin{tabularx}{\linewidth}%
378 {>{\setlength{\hsize}{1.00\hsize}}X%
379 >{\setlength{\hsize}{0.4\hsize}}X%
380 >{\setlength{\hsize}{1.2\hsize}}X%
381 >{\setlength{\hsize}{1.4\hsize}}X}
382
383 {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
384
385 {\tt forceField} & string & Sets the force field. & Possible force fields are "DUFF", "LJ", and "EAM". \\
386 {\tt nComponents} & integer & Sets the number of components. & Needs to appear before the first {\tt Component} block. \\
387 {\tt initialConfig} & string & Sets the file containing the initial configuration. & Can point to any file containing the configuration in the correct order. \\
388 {\tt minimizer}& string & Chooses a minimizer & Possible minimizers
389 are "SD" and "CG". Either {\tt ensemble} or {\tt minimizer} must be specified. \\
390 {\tt ensemble} & string & Sets the ensemble. & Possible ensembles are
391 "NVE", "NVT", "NPTi", "NPTf", and "NPTxyz". Either {\tt ensemble}
392 or {\tt minimizer} must be specified. \\
393 {\tt dt} & fs & Sets the time step. & Selection of {\tt dt} should be
394 small enough to sample the fastest motion of the simulation. (required
395 for molecular dynamics simulations)\\
396 {\tt runTime} & fs & Sets the time at which the simulation should
397 end. & This is an absolute time, and will end the simulation when the
398 current time meets or exceeds the {\tt runTime}. (required for
399 molecular dynamics simulations)\\
400
401 \end{tabularx}
402 \end{center}
403 \end{table}
404
405 \begin{table}
406 \caption{Meta-data Keywords: General Parameters}
407 \label{table:genParams}
408 \begin{center}
409 % Note when adding or removing columns, the \hsize numbers must add up to the total number
410 % of columns.
411 \begin{tabularx}{\linewidth}%
412 {>{\setlength{\hsize}{1.00\hsize}}X%
413 >{\setlength{\hsize}{0.4\hsize}}X%
414 >{\setlength{\hsize}{1.2\hsize}}X%
415 >{\setlength{\hsize}{1.4\hsize}}X}
416
417 {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
418
419 {\tt finalConfig} & string & Sets the name of the final
420 output file. & Useful when stringing simulations together. Defaults to
421 the root name of the initial meta-data file but with an {\tt .eor}
422 extension. \\
423 {\tt useInitialTime} & logical & Sets whether the initial time is taken from the {\tt .in} file. & Useful when recovering a simulation from a crashed processor. Default is false. \\
424 {\tt sampleTime} & fs & Sets the frequency at which the {\tt .dump} file is written. & Default sets the frequency to the {\tt runTime}. \\
425 {\tt statusTime} & fs & Sets the frequency at which the {\tt .stat} file is written. & Defaults set the frequency to the {\tt sampleTime}. \\
426 {\tt cutoffRadius} & $\mbox{\AA}$ & Manually sets the cutoffRadius & Defaults to
427 $15\mbox{\AA}$ for systems containing charges or dipoles or to $2.5
428 \sigma_{L}$, where $\sigma_{L}$ is the largest LJ $\sigma$ in the
429 simulation. \\
430 {\tt switchingRadius} & $\mbox{\AA}$ & Manually sets the inner radius for the switching function. & Defaults to 95~\% of the {\tt cutoffRadius}. \\
431 {\tt useReactionField} & logical & Turns the reaction field correction on/off. & Default is "false". \\
432 {\tt dielectric} & unitless & Sets the dielectric constant for reaction field. & If {\tt useReactionField} is true, then {\tt dielectric} must be set. \\
433 {\tt usePeriodicBoundaryConditions} & & & \\
434 & logical & Turns periodic boundary conditions on/off. & Default is "true". \\
435 {\tt seed } & integer & Sets the seed value for the random number
436 generator. & The seed needs to be at least 9 digits long. The default
437 is to take the seed from the CPU clock. \\
438 {\tt forceFieldVariant} & string & Sets the name of the variant of the
439 force field. ({\sc eam} has three variants: {\tt u3}, {\tt u6}, and
440 {\tt VC}.
441
442 \end{tabularx}
443 \end{center}
444 \end{table}
445
446
447 \subsection{\label{oopseSec:coordFiles}Coordinate Files}
448
449 The standard format for storage of a systems coordinates is a modified
450 xyz-file syntax, the exact details of which can be seen in
451 Scheme~\ref{sch:dumpFormat}. As all bonding and molecular information
452 is stored in the meta-data files, the coordinate files contain only
453 the coordinates of the objects which move independently during the
454 simulation. It is important to note that {\it not all atoms} are
455 capable of independent motion. Atoms which are part of rigid bodies
456 are not ``integrable objects'' in the equations of motion; the rigid
457 bodies themselves are the integrable objects. Therefore, the
458 coordinate file contains coordinates of all the {\tt
459 integrableObjects} in the system. For systems without rigid bodies,
460 this is simply the coordinates of all the atoms.
461
462 It is important to note that although the simulation propagates the
463 complete rotation matrix, directional entities are written out using
464 quaternions to save space in the output files. All objects (atoms,
465 orientational atoms, and rigid bodies) are given quaternions and
466 angular momenta in coordinate files which are output by OOPSE, but it
467 is not necessary for the user to specify the quaternions or angular
468 momenta for atoms without orientational degrees of freedom.
469
470 \begin{lstlisting}[float,caption={[The format of the coordinate
471 files] An example of the format of the coordinate files. The fist line
472 is the number of {\tt integrableObjects} (freely-moving atoms and
473 rigid bodies). The second line begins with the time stamp followed by
474 the three $\mathsf{H}$ column vectors. It is important to note that
475 for extended system ensembles, additional information pertinent to the
476 integrators may be stored on this line as well. The next lines are the
477 coordinates for all integrable objects in the system. The name of the
478 integrable object is followed by position, velocity, quaternions, and
479 lastly, body fixed angular momentum.},label=sch:dumpFormat]
480
481 nIntegrable
482 time; Hxx Hyx Hzx; Hxy Hyy Hzy; Hxz Hyz Hzz;
483 Name1 x y z vx vy vz qw qx qy qz jx jy jz
484 Name2 x y z vx vy vz qw qx qy qz jx jy jz
485 etc...
486
487 \end{lstlisting}
488
489 The {\tt name} field for atoms is simply the atom type as specified in
490 the meta-data file. The {\tt name} field for a rigid body is
491 specified as {\tt MOLTYPE\_RB\_N}, to specify that this is {\tt
492 rigidBody} N in a molecule of type MOLTYPE. In simulations with rigid
493 body models of water, a sample coordinate line might be:
494
495 \begin{tt}
496 TIP3P\_RB\_0 x y z vx vy vz qw qx qy qz jx jy jz
497 \end{tt}
498
499 which tells the program that the rigid body representing a TIP3P
500 molecule (rigid body \# 0) is listed on that line.
501
502 There are three files used by {\sc oopse} which are written in the
503 coordinate format. They are: the initial coordinate file
504 (\texttt{.in}), the simulation trajectory file (\texttt{.dump}), and
505 the final coordinates or ``end-of-run'' for the simulation
506 (\texttt{.eor}). The initial coordinate file is necessary for {\sc
507 oopse} to start the simulation with the proper coordinates, and this
508 file must be generated by the user before the simulation run. The
509 trajectory (or ``dump'') file is updated during simulation and is used
510 to store snapshots of the coordinates at regular intervals. The first
511 frame is a duplication of the
512 \texttt{.in} file, and each subsequent frame is appended to the file
513 at an interval specified in the meta-data file with the
514 \texttt{sampleTime} flag. The final coordinate file is the
515 ``end-of-run'' file. The \texttt{.eor} file stores the final
516 configuration of the system for a given simulation. The file is
517 updated at the same time as the \texttt{.dump} file, but it only
518 contains the most recent frame. In this way, an \texttt{.eor} file may
519 be used to initialize a second simulation should it be necessary to
520 recover from a crash or power outage.
521
522 \subsection{\label{oopseSec:initCoords}Generation of Initial Coordinates}
523
524 As was stated in Sec.~\ref{oopseSec:coordFiles}, an initial coordinate
525 file is needed to provide the starting coordinates for a simulation.
526 Since each simulation is different, system creation is left to the end
527 user; however, we have included a few sample programs which make some
528 specialized structures. The {\tt .in} file must list the integrable
529 objects in the correct order. The ordering of the integrable objects
530 relies on the ordering of molecules within the meta-data file. {\sc
531 oopse} expects the order to comply with the following guidelines:
532 \begin{enumerate}
533 \item All of the molecules of the first declared component are given
534 before proceeding to the molecules of the second component, and so on
535 for all subsequently declared components.
536 \item The ordering of the atoms for each molecule follows the order
537 declared in the molecule's declaration within the model file.
538 \item Only atoms which are not members of a {\tt rigidBody} are
539 included
540 \item Rigid Body coordinates for a molecule are listed immediately
541 after the the other atoms in a molecule. Some molecules may be
542 entirely rigid, in which case, only the rigid body coordinates are
543 given.
544 \end{enumerate}
545 An example is given in the meta-data file in Scheme~\ref{sch:initEx1}
546 which results in the {\tt .in} file shown in Scheme~\ref{sch:initEx2}.
547
548 \begin{lstlisting}[float,caption={Example declaration of the
549 $\text{I}_2$ molecule and the HCl molecule. The two molecules are then
550 included into a simulation.}, label=sch:initEx1]
551
552 molecule{
553 name = "I2";
554 nAtoms = 2;
555 atom[0]{
556 type = "I";
557 }
558 atom[1]{
559 type = "I";
560 }
561 nBonds = 1;
562 bond[0]{
563 members( 0, 1);
564 }
565 }
566
567 molecule{
568 name = "HCl"
569 nAtoms = 2;
570 atom[0]{
571 type = "H";
572 }
573 atom[1]{
574 type = "Cl";
575 }
576 nBonds = 1;
577 bond[0]{
578 members( 0, 1);
579 }
580 }
581
582 nComponents = 2;
583 component{
584 type = "HCl";
585 nMol = 4;
586 }
587 component{
588 type = "I2";
589 nMol = 1;
590 }
591
592 initialConfig = "mixture.in";
593
594 \end{lstlisting}
595
596 \begin{lstlisting}[float,caption={The contents of the {\tt
597 mixture.in} file matching the declarations in
598 Scheme~\ref{sch:initEx1}. Note that even though $\text{I}_2$ is
599 declared before HCl, the {\tt .in} file follows the order {\it in
600 which the components were included}.},label=sch:initEx2]
601
602 10
603 0.0; 10.0 0.0 0.0; 0.0 10.0 0.0; 0.0 0.0 10.0;
604 H ...
605 Cl ...
606 H ...
607 Cl ...
608 H ...
609 Cl ...
610 H ...
611 Cl ...
612 I ...
613 I ...
614
615 \end{lstlisting}
616
617
618 \subsection{The Statistics File}
619
620 The last output file generated by {\sc oopse} is the statistics
621 file. This file records such statistical quantities as the
622 instantaneous temperature (in $K$), volume (in $\mbox{\AA}^{3}$),
623 pressure (in $\mbox{atm}$), etc. It is written out with the frequency
624 specified in the meta-data file with the
625 \texttt{statusTime} keyword. The file allows the user to observe the
626 system variables as a function of simulation time while the simulation
627 is in progress. One useful function the statistics file serves is to
628 monitor the conserved quantity of a given simulation ensemble,
629 allowing the user to gauge the stability of the integrator. The
630 statistics file is denoted with the \texttt{.stat} file extension.
631
632 \section{\label{oopseSec:empiricalEnergy}The Empirical Energy
633 Functions}
634
635 Like many simulation packages, {\sc oopse} splits the potential energy
636 into the short-ranged (bonded) portion and a long-range (non-bonded)
637 potential,
638 \begin{equation}
639 V = V_{\mathrm{short-range}} + V_{\mathrm{long-range}}.
640 \end{equation}
641 The short-ranged portion includes explicit bonds, bends and torsions,
642 which have been defined in the meta-data file for the molecules which
643 present in the simulation. The functional forms and parameters for
644 these interactions are defined by the force field which is chosen.
645
646 Calculating long-range (non-bonded) potential involves a sum over all
647 pairs of atoms (except for those atoms which are involved in a bond,
648 bend, or torsion with each other). If done poorly, calculating the
649 the long-range interactions for $N$ atoms would involve $N^2$
650 evaluations of atomic distance. To reduce the number of distance
651 evaluations between pairs of atoms, {\sc oopse} uses a switched cutoff
652 with Verlet neighbor lists.\cite{allen87:csl} It is well known that
653 neutral groups which contain charges will exhibit pathological forces
654 unless the cutoff is applied to the neutral groups evenly instead of
655 to the individual atoms.\cite{leach01:mm} {\sc oopse} allows users to
656 specify cutoff groups which may contain an arbitrary number of atoms
657 in the molecule. Atoms in a cutoff group are treated as a single unit
658 for the evaluation of the switching function:
659 \begin{equation}
660 V_{\mathrm{long-range}} = \sum_{a} \sum_{b>a} s(r_{ab}) \sum_{i \in a} \sum_{j \in b} V_{ij}(r_{ij}),
661 \end{equation}
662 where $r_{ab}$ is the distance between the centers of mass of the two
663 cutoff groups ($a$ and $b$).
664
665 The sums over $a$ and $b$ are over the cutoffGroups that are present
666 in the simulation. Atoms which are not explicitly defined as members
667 of a {\tt cutoffGroup} are treated as a group consisting of only one
668 atom. The switching function, $s(r)$ is the standard cubic switching
669 function,
670 \begin{equation}
671 S(r) =
672 \begin{cases}
673 1 & \text{if $r \le r_{\text{sw}}$},\\
674 \frac{(r_{\text{cut}} + 2r - 3r_{\text{sw}})(r_{\text{cut}} - r)^2}
675 {(r_{\text{cut}} - r_{\text{sw}})^2}
676 & \text{if $r_{\text{sw}} < r \le r_{\text{cut}}$}, \\
677 0 & \text{if $r > r_{\text{cut}}$.}
678 \end{cases}
679 \label{eq:dipoleSwitching}
680 \end{equation}
681 Here, $r_{\text{sw}}$ is the {\tt switchingRadius}, or the distance
682 beyond which interactions are reduced, and $r_{\text{cut}}$ is the
683 {\tt cutoffRadius}, or the distance at which interactions are
684 truncated.
685
686 Users of {\sc oopse} do not need to specify the {\tt cutoffRadius} or
687 {\tt switchingRadius}. In simulations containing only Lennard-Jones
688 atoms, the cutoff radius has a default value of $2.5\sigma_{ii}$,
689 where $\sigma_{ii}$ is the largest Lennard-Jones length parameter
690 present in the simulation. In simulations containing charged or
691 dipolar atoms, the default cutoff Radius is $15 \mbox{\AA}$.
692
693 The {\tt switchingRadius} is set to a default value of 95\% of the
694 {\tt cutoffRadius}. In the special case of a simulation containing
695 {\it only} Lennard-Jones atoms, the default switching radius takes the
696 same value as the cutoff radius, and {\sc oopse} will use a shifted
697 potential to remove discontinuities in the potential at the cutoff.
698 Both radii may be specified in the meta-data file.
699
700 Force fields can easily be added to {\sc oopse}, although it comes
701 with a few simple examples (Lennard-Jones, {\sc duff}, {\sc water},
702 and {\sc eam}) which are explained in the following sections.
703
704 \subsection{\label{sec:LJPot}The Lennard Jones Force Field}
705
706 The most basic force field implemented in {\sc oopse} is the
707 Lennard-Jones force field, which mimics the van der Waals interaction
708 at long distances and uses an empirical repulsion at short
709 distances. The Lennard-Jones potential is given by:
710 \begin{equation}
711 V_{\text{LJ}}(r_{ij}) =
712 4\epsilon_{ij} \biggl[
713 \biggl(\frac{\sigma_{ij}}{r_{ij}}\biggr)^{12}
714 - \biggl(\frac{\sigma_{ij}}{r_{ij}}\biggr)^{6}
715 \biggr],
716 \label{eq:lennardJonesPot}
717 \end{equation}
718 where $r_{ij}$ is the distance between particles $i$ and $j$,
719 $\sigma_{ij}$ scales the length of the interaction, and
720 $\epsilon_{ij}$ scales the well depth of the potential. Scheme
721 \ref{sch:LJFF} gives an example meta-data file that
722 sets up a system of 108 Ar particles to be simulated using the
723 Lennard-Jones force field.
724
725 \begin{lstlisting}[float,caption={[Invocation of the Lennard-Jones
726 force field] A sample meta-data file for a small Lennard-Jones
727 simulation.},label={sch:LJFF}]
728
729 #include "argon.md"
730
731 nComponents = 1;
732 component{
733 type = "Ar";
734 nMol = 108;
735 }
736
737 initialConfig = "./argon.in";
738
739 forceField = "LJ";
740 \end{lstlisting}
741
742 Interactions between dissimilar particles requires the generation of
743 cross term parameters for $\sigma$ and $\epsilon$. These parameters
744 are determined using the Lorentz-Berthelot mixing
745 rules:\cite{allen87:csl}
746 \begin{equation}
747 \sigma_{ij} = \frac{1}{2}[\sigma_{ii} + \sigma_{jj}],
748 \label{eq:sigmaMix}
749 \end{equation}
750 and
751 \begin{equation}
752 \epsilon_{ij} = \sqrt{\epsilon_{ii} \epsilon_{jj}}.
753 \label{eq:epsilonMix}
754 \end{equation}
755
756 \subsection{\label{oopseSec:DUFF}Dipolar Unified-Atom Force Field}
757
758 The dipolar unified-atom force field ({\sc duff}) was developed to
759 simulate lipid bilayers. These types of simulations require a model
760 capable of forming bilayers, while still being sufficiently
761 computationally efficient to allow large systems ($\sim$100's of
762 phospholipids, $\sim$1000's of waters) to be simulated for long times
763 ($\sim$10's of nanoseconds). With this goal in mind, {\sc duff} has no
764 point charges. Charge-neutral distributions are replaced with dipoles,
765 while most atoms and groups of atoms are reduced to Lennard-Jones
766 interaction sites. This simplification reduces the length scale of
767 long range interactions from $\frac{1}{r}$ to $\frac{1}{r^3}$,
768 removing the need for the computationally expensive Ewald
769 sum. Instead, Verlet neighbor-lists and cutoff radii are used for the
770 dipolar interactions, and, if desired, a reaction field may be added
771 to mimic longer range interactions.
772
773 As an example, lipid head-groups in {\sc duff} are represented as
774 point dipole interaction sites. Placing a dipole at the head group's
775 center of mass mimics the charge separation found in common
776 phospholipid head groups such as phosphatidylcholine.\cite{Cevc87}
777 Additionally, a large Lennard-Jones site is located at the
778 pseudoatom's center of mass. The model is illustrated by the red atom
779 in Fig.~\ref{oopseFig:lipidModel}. The water model we use to
780 complement the dipoles of the lipids is a
781 reparameterization\cite{fennell04} of the soft sticky dipole (SSD)
782 model of Ichiye
783 \emph{et al.}\cite{liu96:new_model}
784
785 \begin{figure}
786 \centering
787 \includegraphics[width=\linewidth]{lipidModel.eps}
788 \caption[A representation of a lipid model in {\sc duff}]{A
789 representation of the lipid model. $\phi$ is the torsion angle,
790 $\theta$ is the bend angle, and $\mu$ is the dipole moment of the head
791 group.}
792 \label{oopseFig:lipidModel}
793 \end{figure}
794
795 A set of scalable parameters has been used to model the alkyl groups
796 with Lennard-Jones sites. For this, parameters from the TraPPE force
797 field of Siepmann \emph{et al.}\cite{Siepmann1998} have been
798 utilized. TraPPE is a unified-atom representation of n-alkanes which
799 is parametrized against phase equilibria using Gibbs ensemble Monte
800 Carlo simulation techniques.\cite{Siepmann1998} One of the advantages
801 of TraPPE is that it generalizes the types of atoms in an alkyl chain
802 to keep the number of pseudoatoms to a minimum; thus, the parameters
803 for a unified atom such as $\text{CH}_2$ do not change depending on
804 what species are bonded to it.
805
806 As is required by TraPPE, {\sc duff} also constrains all bonds to be
807 of fixed length. Typically, bond vibrations are the fastest motions in
808 a molecular dynamic simulation. With these vibrations present, small
809 time steps between force evaluations must be used to ensure adequate
810 energy conservation in the bond degrees of freedom. By constraining
811 the bond lengths, larger time steps may be used when integrating the
812 equations of motion. A simulation using {\sc duff} is illustrated in
813 Scheme \ref{sch:DUFF}.
814
815 \begin{lstlisting}[float,caption={[Invocation of {\sc duff}]A portion
816 of a meta-data file showing a simulation utilizing {\sc
817 duff}},label={sch:DUFF}]
818
819 #include "water.md"
820 #include "lipid.md"
821
822 nComponents = 2;
823 component{
824 type = "simpleLipid_16";
825 nMol = 60;
826 }
827
828 component{
829 type = "SSD_water";
830 nMol = 1936;
831 }
832
833 initialConfig = "bilayer.in";
834
835 forceField = "DUFF";
836
837 \end{lstlisting}
838
839 \subsubsection{\label{oopseSec:energyFunctions}{\sc duff} Energy Functions}
840
841 The total potential energy function in {\sc duff} is
842 \begin{equation}
843 V = \sum^{N}_{I=1} V^{I}_{\text{Internal}}
844 + \sum^{N-1}_{I=1} \sum_{J>I} V^{IJ}_{\text{Cross}},
845 \label{eq:totalPotential}
846 \end{equation}
847 where $V^{I}_{\text{Internal}}$ is the internal potential of molecule $I$:
848 \begin{equation}
849 V^{I}_{\text{Internal}} =
850 \sum_{\theta_{ijk} \in I} V_{\text{bend}}(\theta_{ijk})
851 + \sum_{\phi_{ijkl} \in I} V_{\text{torsion}}(\phi_{ijkl})
852 + \sum_{i \in I} \sum_{(j>i+4) \in I}
853 \biggl[ V_{\text{LJ}}(r_{ij}) + V_{\text{dipole}}
854 (\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},\boldsymbol{\Omega}_{j})
855 \biggr].
856 \label{eq:internalPotential}
857 \end{equation}
858 Here $V_{\text{bend}}$ is the bend potential for all 1, 3 bonded pairs
859 within the molecule $I$, and $V_{\text{torsion}}$ is the torsion
860 potential for all 1, 4 bonded pairs. The pairwise portions of the
861 non-bonded interactions are excluded for atom pairs that are involved
862 in the smae bond, bend, or torsion. All other atom pairs within a
863 molecule are subject to the LJ pair potential.
864
865 The bend potential of a molecule is represented by the following function:
866 \begin{equation}
867 V_{\text{bend}}(\theta_{ijk}) = k_{\theta}( \theta_{ijk} - \theta_0
868 )^2, \label{eq:bendPot}
869 \end{equation}
870 where $\theta_{ijk}$ is the angle defined by atoms $i$, $j$, and $k$
871 (see Fig.~\ref{oopseFig:lipidModel}), $\theta_0$ is the equilibrium
872 bond angle, and $k_{\theta}$ is the force constant which determines the
873 strength of the harmonic bend. The parameters for $k_{\theta}$ and
874 $\theta_0$ are borrowed from those in TraPPE.\cite{Siepmann1998}
875
876 The torsion potential and parameters are also borrowed from TraPPE. It is
877 of the form:
878 \begin{equation}
879 V_{\text{torsion}}(\phi) = c_1[1 + \cos \phi]
880 + c_2[1 + \cos(2\phi)]
881 + c_3[1 + \cos(3\phi)],
882 \label{eq:origTorsionPot}
883 \end{equation}
884 where:
885 \begin{equation}
886 \cos\phi = (\hat{\mathbf{r}}_{ij} \times \hat{\mathbf{r}}_{jk}) \cdot
887 (\hat{\mathbf{r}}_{jk} \times \hat{\mathbf{r}}_{kl}).
888 \label{eq:torsPhi}
889 \end{equation}
890 Here, $\hat{\mathbf{r}}_{\alpha\beta}$ are the set of unit bond
891 vectors between atoms $i$, $j$, $k$, and $l$. For computational
892 efficiency, the torsion potential has been recast after the method of
893 {\sc charmm},\cite{Brooks83} in which the angle series is converted to
894 a power series of the form:
895 \begin{equation}
896 V_{\text{torsion}}(\phi) =
897 k_3 \cos^3 \phi + k_2 \cos^2 \phi + k_1 \cos \phi + k_0,
898 \label{eq:torsionPot}
899 \end{equation}
900 where:
901 \begin{align*}
902 k_0 &= c_1 + c_3, \\
903 k_1 &= c_1 - 3c_3, \\
904 k_2 &= 2 c_2, \\
905 k_3 &= 4c_3.
906 \end{align*}
907 By recasting the potential as a power series, repeated trigonometric
908 evaluations are avoided during the calculation of the potential
909 energy.
910
911
912 The cross potential between molecules $I$ and $J$,
913 $V^{IJ}_{\text{Cross}}$, is as follows:
914 \begin{equation}
915 V^{IJ}_{\text{Cross}} =
916 \sum_{i \in I} \sum_{j \in J}
917 \biggl[ V_{\text{LJ}}(r_{ij}) + V_{\text{dipole}}
918 (\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},\boldsymbol{\Omega}_{j})
919 + V_{\text{sticky}}
920 (\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},\boldsymbol{\Omega}_{j})
921 \biggr],
922 \label{eq:crossPotentail}
923 \end{equation}
924 where $V_{\text{LJ}}$ is the Lennard Jones potential,
925 $V_{\text{dipole}}$ is the dipole dipole potential, and
926 $V_{\text{sticky}}$ is the sticky potential defined by the SSD model
927 (Sec.~\ref{oopseSec:SSD}). Note that not all atom types include all
928 interactions.
929
930 The dipole-dipole potential has the following form:
931 \begin{equation}
932 V_{\text{dipole}}(\mathbf{r}_{ij},\boldsymbol{\Omega}_{i},
933 \boldsymbol{\Omega}_{j}) = \frac{|\mu_i||\mu_j|}{4\pi\epsilon_{0}r_{ij}^{3}} \biggl[
934 \boldsymbol{\hat{u}}_{i} \cdot \boldsymbol{\hat{u}}_{j}
935 -
936 3(\boldsymbol{\hat{u}}_i \cdot \hat{\mathbf{r}}_{ij}) %
937 (\boldsymbol{\hat{u}}_j \cdot \hat{\mathbf{r}}_{ij}) \biggr].
938 \label{eq:dipolePot}
939 \end{equation}
940 Here $\mathbf{r}_{ij}$ is the vector starting at atom $i$ pointing
941 towards $j$, and $\boldsymbol{\Omega}_i$ and $\boldsymbol{\Omega}_j$
942 are the orientational degrees of freedom for atoms $i$ and $j$
943 respectively. The magnitude of the dipole moment of atom $i$ is
944 $|\mu_i|$, $\boldsymbol{\hat{u}}_i$ is the standard unit orientation
945 vector of $\boldsymbol{\Omega}_i$, and $\boldsymbol{\hat{r}}_{ij}$ is
946 the unit vector pointing along $\mathbf{r}_{ij}$
947 ($\boldsymbol{\hat{r}}_{ij}=\mathbf{r}_{ij}/|\mathbf{r}_{ij}|$).
948
949 \subsubsection{\label{oopseSec:SSD}The {\sc duff} Water Models: SSD/E
950 and SSD/RF}
951
952 In the interest of computational efficiency, the default solvent used
953 by {\sc oopse} is the extended Soft Sticky Dipole (SSD/E) water
954 model.\cite{fennell04} The original SSD was developed by Ichiye
955 \emph{et al.}\cite{liu96:new_model} as a modified form of the hard-sphere
956 water model proposed by Bratko, Blum, and
957 Luzar.\cite{Bratko85,Bratko95} It consists of a single point dipole
958 with a Lennard-Jones core and a sticky potential that directs the
959 particles to assume the proper hydrogen bond orientation in the first
960 solvation shell. Thus, the interaction between two SSD water molecules
961 \emph{i} and \emph{j} is given by the potential
962 \begin{equation}
963 V_{ij} =
964 V_{ij}^{LJ} (r_{ij})\ + V_{ij}^{dp}
965 (\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)\ +
966 V_{ij}^{sp}
967 (\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j),
968 \label{eq:ssdPot}
969 \end{equation}
970 where the $\mathbf{r}_{ij}$ is the position vector between molecules
971 \emph{i} and \emph{j} with magnitude equal to the distance $r_{ij}$, and
972 $\boldsymbol{\Omega}_i$ and $\boldsymbol{\Omega}_j$ represent the
973 orientations of the respective molecules. The Lennard-Jones and dipole
974 parts of the potential are given by equations \ref{eq:lennardJonesPot}
975 and \ref{eq:dipolePot} respectively. The sticky part is described by
976 the following,
977 \begin{equation}
978 u_{ij}^{sp}(\mathbf{r}_{ij},\boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)=
979 \frac{\nu_0}{2}[s(r_{ij})w(\mathbf{r}_{ij},
980 \boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j) +
981 s^\prime(r_{ij})w^\prime(\mathbf{r}_{ij},
982 \boldsymbol{\Omega}_i,\boldsymbol{\Omega}_j)]\ ,
983 \label{eq:stickyPot}
984 \end{equation}
985 where $\nu_0$ is a strength parameter for the sticky potential, and
986 $s$ and $s^\prime$ are cubic switching functions which turn off the
987 sticky interaction beyond the first solvation shell. The $w$ function
988 can be thought of as an attractive potential with tetrahedral
989 geometry:
990 \begin{equation}
991 w({\bf r}_{ij},{\bf \Omega}_i,{\bf \Omega}_j)=
992 \sin\theta_{ij}\sin2\theta_{ij}\cos2\phi_{ij},
993 \label{eq:stickyW}
994 \end{equation}
995 while the $w^\prime$ function counters the normal aligned and
996 anti-aligned structures favored by point dipoles:
997 \begin{equation}
998 w^\prime({\bf r}_{ij},{\bf \Omega}_i,{\bf \Omega}_j)=
999 (\cos\theta_{ij}-0.6)^2(\cos\theta_{ij}+0.8)^2-w^0,
1000 \label{eq:stickyWprime}
1001 \end{equation}
1002 It should be noted that $w$ is proportional to the sum of the $Y_3^2$
1003 and $Y_3^{-2}$ spherical harmonics (a linear combination which
1004 enhances the tetrahedral geometry for hydrogen bonded structures),
1005 while $w^\prime$ is a purely empirical function. A more detailed
1006 description of the functional parts and variables in this potential
1007 can be found in the original SSD
1008 articles.\cite{liu96:new_model,liu96:monte_carlo,chandra99:ssd_md,Ichiye03}
1009
1010 \begin{figure}
1011 \centering
1012 \includegraphics[width=\linewidth]{waterAngle.eps}
1013 \caption[Coordinate definition for the SSD/E water model]{Coordinates
1014 for the interaction between two SSD/E water molecules. $\theta_{ij}$
1015 is the angle that $r_{ij}$ makes with the $\hat{z}$ vector in the
1016 body-fixed frame for molecule $i$. The $\hat{z}$ vector bisects the
1017 HOH angle in each water molecule. }
1018 \label{oopseFig:ssd}
1019 \end{figure}
1020
1021
1022 Since SSD/E is a single-point {\it dipolar} model, the force
1023 calculations are simplified significantly relative to the standard
1024 {\it charged} multi-point models. In the original Monte Carlo
1025 simulations using this model, Ichiye {\it et al.} reported that using
1026 SSD decreased computer time by a factor of 6-7 compared to other
1027 models.\cite{liu96:new_model} What is most impressive is that these
1028 savings did not come at the expense of accurate depiction of the
1029 liquid state properties. Indeed, SSD/E maintains reasonable agreement
1030 with the Head-Gordon diffraction data for the structural features of
1031 liquid water.\cite{hura00,liu96:new_model} Additionally, the dynamical
1032 properties exhibited by SSD/E agree with experiment better than those
1033 of more computationally expensive models (like TIP3P and
1034 SPC/E).\cite{chandra99:ssd_md} The combination of speed and accurate
1035 depiction of solvent properties makes SSD/E a very attractive model
1036 for the simulation of large scale biochemical simulations.
1037
1038 Recent constant pressure simulations revealed issues in the original
1039 SSD model that led to lower than expected densities at all target
1040 pressures.\cite{Ichiye03,fennell04} The default model in {\sc oopse}
1041 is therefore SSD/E, a density corrected derivative of SSD that
1042 exhibits improved liquid structure and transport behavior. If the use
1043 of a reaction field long-range interaction correction is desired, it
1044 is recommended that the parameters be modified to those of the SSD/RF
1045 model (an SSD variant parameterized for reaction field). These solvent
1046 parameters are listed and can be easily modified in the {\sc duff}
1047 force field file ({\tt DUFF.frc}). A table of the parameter values
1048 and the drawbacks and benefits of the different density corrected SSD
1049 models can be found in reference~\citen{fennell04}.
1050
1051 \subsection{\label{oopseSec:eam}Embedded Atom Method}
1052
1053 {\sc oopse} implements a potential that describes bonding in
1054 transition metal
1055 systems.~\cite{Finnis84,Ercolessi88,Chen90,Qi99,Ercolessi02} This
1056 potential has an attractive interaction which models ``Embedding'' a
1057 positively charged pseudo-atom core in the electron density due to the
1058 free valance ``sea'' of electrons created by the surrounding atoms in
1059 the system. A pairwise part of the potential (which is primarily
1060 repulsive) describes the interaction of the positively charged metal
1061 core ions with one another. The Embedded Atom Method ({\sc
1062 eam})~\cite{Daw84,FBD86,johnson89,Lu97} has been widely adopted in the
1063 materials science community and has been included in {\sc oopse}. A
1064 good review of {\sc eam} and other formulations of metallic potentials
1065 was given by Voter.\cite{Voter:95}
1066
1067 The {\sc eam} potential has the form:
1068 \begin{equation}
1069 V = \sum_{i} F_{i}\left[\rho_{i}\right] + \sum_{i} \sum_{j \neq i}
1070 \phi_{ij}({\bf r}_{ij})
1071 \end{equation}
1072 where $F_{i} $ is an embedding functional that approximates the energy
1073 required to embed a positively-charged core ion $i$ into a linear
1074 superposition of spherically averaged atomic electron densities given
1075 by $\rho_{i}$,
1076 \begin{equation}
1077 \rho_{i} = \sum_{j \neq i} f_{j}({\bf r}_{ij}),
1078 \end{equation}
1079 Since the density at site $i$ ($\rho_i$) must be computed before the
1080 embedding functional can be evaluated, {\sc eam} and the related
1081 transition metal potentials require two loops through the atom pairs
1082 to compute the inter-atomic forces.
1083
1084 The pairwise portion of the potential, $\phi_{ij}$, is a primarily
1085 repulsive interaction between atoms $i$ and $j$. In the original
1086 formulation of {\sc eam}\cite{Daw84}, $\phi_{ij}$ was an entirely
1087 repulsive term; however later refinements to {\sc eam} allowed for
1088 more general forms for $\phi$.\cite{Daw89} The effective cutoff
1089 distance, $r_{{\text cut}}$ is the distance at which the values of
1090 $f(r)$ and $\phi(r)$ drop to zero for all atoms present in the
1091 simulation. In practice, this distance is fairly small, limiting the
1092 summations in the {\sc eam} equation to the few dozen atoms
1093 surrounding atom $i$ for both the density $\rho$ and pairwise $\phi$
1094 interactions.
1095
1096 In computing forces for alloys, mixing rules as outlined by
1097 Johnson~\cite{johnson89} are used to compute the heterogenous pair
1098 potential,
1099 \begin{eqnarray}
1100 \label{eq:johnson}
1101 \phi_{ab}(r)=\frac{1}{2}\left(
1102 \frac{f_{b}(r)}{f_{a}(r)}\phi_{aa}(r)+
1103 \frac{f_{a}(r)}{f_{b}(r)}\phi_{bb}(r)
1104 \right).
1105 \end{eqnarray}
1106 No mixing rule is needed for the densities, since the density at site
1107 $i$ is simply the linear sum of density contributions of all the other
1108 atoms.
1109
1110 The {\sc eam} force field illustrates an additional feature of {\sc
1111 oopse}. Foiles, Baskes and Daw fit {\sc eam} potentials for Cu, Ag,
1112 Au, Ni, Pd, Pt and alloys of these metals.\cite{FBD86} These fits are
1113 included in {\sc oopse} as the {\tt u3} variant of the {\sc eam} force
1114 field. Voter and Chen reparamaterized a set of {\sc eam} functions
1115 which do a better job of predicting melting points.\cite{Voter:87}
1116 These functions are included in {\sc oopse} as the {\tt VC} variant of
1117 the {\sc eam} force field. An additional set of functions (the
1118 ``Universal 6'' functions) are included in {\sc oopse} as the {\tt u6}
1119 variant of {\sc eam}. For example, to specify the Voter-Chen variant
1120 of the {\sc eam} force field, the user would add the {\tt
1121 forceFieldVariant = "VC";} line to the meta-data file.
1122
1123 The potential files used by the {\sc eam} force field are in the
1124 standard {\tt funcfl} format, which is the format utilized by a number
1125 of other codes (e.g. ParaDyn~\cite{Paradyn}, {\sc dynamo 86}). It
1126 should be noted that the energy units in these files are in eV, not
1127 $\mbox{kcal mol}^{-1}$ as in the rest of the {\sc oopse} force field
1128 files.
1129
1130 \subsection{\label{oopseSec:pbc}Periodic Boundary Conditions}
1131
1132 \newcommand{\roundme}{\operatorname{round}}
1133
1134 \textit{Periodic boundary conditions} are widely used to simulate bulk
1135 properties with a relatively small number of particles. In this method
1136 the simulation box is replicated throughout space to form an infinite
1137 lattice. During the simulation, when a particle moves in the primary
1138 cell, its image in other cells move in exactly the same direction with
1139 exactly the same orientation. Thus, as a particle leaves the primary
1140 cell, one of its images will enter through the opposite face. If the
1141 simulation box is large enough to avoid ``feeling'' the symmetries of
1142 the periodic lattice, surface effects can be ignored. The available
1143 periodic cells in {\sc oopse} are cubic, orthorhombic and
1144 parallelepiped. {\sc oopse} use a $3 \times 3$ matrix, $\mathsf{H}$,
1145 to describe the shape and size of the simulation box. $\mathsf{H}$ is
1146 defined:
1147 \begin{equation}
1148 \mathsf{H} = ( \mathbf{h}_x, \mathbf{h}_y, \mathbf{h}_z ),
1149 \end{equation}
1150 where $\mathbf{h}_{\alpha}$ is the column vector of the $\alpha$ axis of the
1151 box. During the course of the simulation both the size and shape of
1152 the box can be changed to allow volume fluctuations when constraining
1153 the pressure.
1154
1155 A real space vector, $\mathbf{r}$ can be transformed in to a box space
1156 vector, $\mathbf{s}$, and back through the following transformations:
1157 \begin{align}
1158 \mathbf{s} &= \mathsf{H}^{-1} \mathbf{r}, \\
1159 \mathbf{r} &= \mathsf{H} \mathbf{s}.
1160 \end{align}
1161 The vector $\mathbf{s}$ is now a vector expressed as the number of box
1162 lengths in the $\mathbf{h}_x$, $\mathbf{h}_y$, and $\mathbf{h}_z$
1163 directions. To find the minimum image of a vector $\mathbf{r}$, {\sc
1164 oopse} first converts it to its corresponding vector in box space, and
1165 then casts each element to lie in the range $[-0.5,0.5]$:
1166 \begin{equation}
1167 s_{i}^{\prime}=s_{i}-\roundme(s_{i}),
1168 \end{equation}
1169 where $s_i$ is the $i$th element of $\mathbf{s}$, and
1170 $\roundme(s_i)$ is given by
1171 \begin{equation}
1172 \roundme(x) =
1173 \begin{cases}
1174 \lfloor x+0.5 \rfloor & \text{if $x \ge 0$,} \\
1175 \lceil x-0.5 \rceil & \text{if $x < 0$.}
1176 \end{cases}
1177 \end{equation}
1178 Here $\lfloor x \rfloor$ is the floor operator, and gives the largest
1179 integer value that is not greater than $x$, and $\lceil x \rceil$ is
1180 the ceiling operator, and gives the smallest integer that is not less
1181 than $x$.
1182
1183 Finally, the minimum image coordinates $\mathbf{r}^{\prime}$ are
1184 obtained by transforming back to real space,
1185 \begin{equation}
1186 \mathbf{r}^{\prime}=\mathsf{H}^{-1}\mathbf{s}^{\prime}.%
1187 \end{equation}
1188 In this way, particles are allowed to diffuse freely in $\mathbf{r}$,
1189 but their minimum images, or $\mathbf{r}^{\prime}$, are used to compute
1190 the inter-atomic forces.
1191
1192
1193
1194 \section{\label{oopseSec:mechanics}Mechanics}
1195
1196 \subsection{\label{oopseSec:integrate}Integrating the Equations of Motion: the
1197 DLM method}
1198
1199 The default method for integrating the equations of motion in {\sc
1200 oopse} is a velocity-Verlet version of the symplectic splitting method
1201 proposed by Dullweber, Leimkuhler and McLachlan
1202 (DLM).\cite{Dullweber1997} When there are no directional atoms or
1203 rigid bodies present in the simulation, this integrator becomes the
1204 standard velocity-Verlet integrator which is known to sample the
1205 microcanonical (NVE) ensemble.\cite{Frenkel1996}
1206
1207 Previous integration methods for orientational motion have problems
1208 that are avoided in the DLM method. Direct propagation of the Euler
1209 angles has a known $1/\sin\theta$ divergence in the equations of
1210 motion for $\phi$ and $\psi$,\cite{allen87:csl} leading to numerical
1211 instabilities any time one of the directional atoms or rigid bodies
1212 has an orientation near $\theta=0$ or $\theta=\pi$. Quaternion-based
1213 integration methods work well for propagating orientational motion;
1214 however, energy conservation concerns arise when using the
1215 microcanonical (NVE) ensemble. An earlier implementation of {\sc
1216 oopse} utilized quaternions for propagation of rotational motion;
1217 however, a detailed investigation showed that they resulted in a
1218 steady drift in the total energy, something that has been observed by
1219 Laird {\it et al.}\cite{Laird97}
1220
1221 The key difference in the integration method proposed by Dullweber
1222 \emph{et al.} is that the entire $3 \times 3$ rotation matrix is
1223 propagated from one time step to the next. In the past, this would not
1224 have been feasible, since the rotation matrix for a single body has
1225 nine elements compared with the more memory-efficient methods (using
1226 three Euler angles or 4 quaternions). Computer memory has become much
1227 less costly in recent years, and this can be translated into
1228 substantial benefits in energy conservation.
1229
1230 The basic equations of motion being integrated are derived from the
1231 Hamiltonian for conservative systems containing rigid bodies,
1232 \begin{equation}
1233 H = \sum_{i} \left( \frac{1}{2} m_i {\bf v}_i^T \cdot {\bf v}_i +
1234 \frac{1}{2} {\bf j}_i^T \cdot \overleftrightarrow{\mathsf{I}}_i^{-1} \cdot
1235 {\bf j}_i \right) +
1236 V\left(\left\{{\bf r}\right\}, \left\{\mathsf{A}\right\}\right),
1237 \end{equation}
1238 where ${\bf r}_i$ and ${\bf v}_i$ are the cartesian position vector
1239 and velocity of the center of mass of particle $i$, and ${\bf j}_i$,
1240 $\overleftrightarrow{\mathsf{I}}_i$ are the body-fixed angular
1241 momentum and moment of inertia tensor respectively, and the
1242 superscript $T$ denotes the transpose of the vector. $\mathsf{A}_i$
1243 is the $3 \times 3$ rotation matrix describing the instantaneous
1244 orientation of the particle. $V$ is the potential energy function
1245 which may depend on both the positions $\left\{{\bf r}\right\}$ and
1246 orientations $\left\{\mathsf{A}\right\}$ of all particles. The
1247 equations of motion for the particle centers of mass are derived from
1248 Hamilton's equations and are quite simple,
1249 \begin{eqnarray}
1250 \dot{{\bf r}} & = & {\bf v}, \\
1251 \dot{{\bf v}} & = & \frac{{\bf f}}{m},
1252 \end{eqnarray}
1253 where ${\bf f}$ is the instantaneous force on the center of mass
1254 of the particle,
1255 \begin{equation}
1256 {\bf f} = - \frac{\partial}{\partial
1257 {\bf r}} V(\left\{{\bf r}(t)\right\}, \left\{\mathsf{A}(t)\right\}).
1258 \end{equation}
1259
1260 The equations of motion for the orientational degrees of freedom are
1261 \begin{eqnarray}
1262 \dot{\mathsf{A}} & = & \mathsf{A} \cdot
1263 \mbox{ skew}\left(\overleftrightarrow{\mathsf{I}}^{-1} \cdot {\bf j}\right),\\
1264 \dot{{\bf j}} & = & {\bf j} \times \left( \overleftrightarrow{\mathsf{I}}^{-1}
1265 \cdot {\bf j} \right) - \mbox{ rot}\left(\mathsf{A}^{T} \cdot \frac{\partial
1266 V}{\partial \mathsf{A}} \right).
1267 \end{eqnarray}
1268 In these equations of motion, the $\mbox{skew}$ matrix of a vector
1269 ${\bf v} = \left( v_1, v_2, v_3 \right)$ is defined:
1270 \begin{equation}
1271 \mbox{skew}\left( {\bf v} \right) := \left(
1272 \begin{array}{ccc}
1273 0 & v_3 & - v_2 \\
1274 -v_3 & 0 & v_1 \\
1275 v_2 & -v_1 & 0
1276 \end{array}
1277 \right).
1278 \end{equation}
1279 The $\mbox{rot}$ notation refers to the mapping of the $3 \times 3$
1280 rotation matrix to a vector of orientations by first computing the
1281 skew-symmetric part $\left(\mathsf{A} - \mathsf{A}^{T}\right)$ and
1282 then associating this with a length 3 vector by inverting the
1283 $\mbox{skew}$ function above:
1284 \begin{equation}
1285 \mbox{rot}\left(\mathsf{A}\right) := \mbox{ skew}^{-1}\left(\mathsf{A}
1286 - \mathsf{A}^{T} \right).
1287 \end{equation}
1288 Written this way, the $\mbox{rot}$ operation creates a set of
1289 conjugate angle coordinates to the body-fixed angular momenta
1290 represented by ${\bf j}$. This equation of motion for angular momenta
1291 is equivalent to the more familiar body-fixed forms,
1292 \begin{eqnarray}
1293 \dot{j_{x}} & = & \tau^b_x(t) -
1294 \left(\overleftrightarrow{\mathsf{I}}_{yy}^{-1} - \overleftrightarrow{\mathsf{I}}_{zz}^{-1} \right) j_y j_z, \\
1295 \dot{j_{y}} & = & \tau^b_y(t) -
1296 \left(\overleftrightarrow{\mathsf{I}}_{zz}^{-1} - \overleftrightarrow{\mathsf{I}}_{xx}^{-1} \right) j_z j_x,\\
1297 \dot{j_{z}} & = & \tau^b_z(t) -
1298 \left(\overleftrightarrow{\mathsf{I}}_{xx}^{-1} - \overleftrightarrow{\mathsf{I}}_{yy}^{-1} \right) j_x j_y,
1299 \end{eqnarray}
1300 which utilize the body-fixed torques, ${\bf \tau}^b$. Torques are
1301 most easily derived in the space-fixed frame,
1302 \begin{equation}
1303 {\bf \tau}^b(t) = \mathsf{A}(t) \cdot {\bf \tau}^s(t),
1304 \end{equation}
1305 where the torques are either derived from the forces on the
1306 constituent atoms of the rigid body, or for directional atoms,
1307 directly from derivatives of the potential energy,
1308 \begin{equation}
1309 {\bf \tau}^s(t) = - \hat{\bf u}(t) \times \left( \frac{\partial}
1310 {\partial \hat{\bf u}} V\left(\left\{ {\bf r}(t) \right\}, \left\{
1311 \mathsf{A}(t) \right\}\right) \right).
1312 \end{equation}
1313 Here $\hat{\bf u}$ is a unit vector pointing along the principal axis
1314 of the particle in the space-fixed frame.
1315
1316 The DLM method uses a Trotter factorization of the orientational
1317 propagator. This has three effects:
1318 \begin{enumerate}
1319 \item the integrator is area-preserving in phase space (i.e. it is
1320 {\it symplectic}),
1321 \item the integrator is time-{\it reversible}, making it suitable for Hybrid
1322 Monte Carlo applications, and
1323 \item the error for a single time step is of order $\mathcal{O}\left(h^4\right)$
1324 for timesteps of length $h$.
1325 \end{enumerate}
1326
1327 The integration of the equations of motion is carried out in a
1328 velocity-Verlet style 2-part algorithm, where $h= \delta t$:
1329
1330 {\tt moveA:}
1331 \begin{align*}
1332 {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
1333 + \frac{h}{2} \left( {\bf f}(t) / m \right), \\
1334 %
1335 {\bf r}(t + h) &\leftarrow {\bf r}(t)
1336 + h {\bf v}\left(t + h / 2 \right), \\
1337 %
1338 {\bf j}\left(t + h / 2 \right) &\leftarrow {\bf j}(t)
1339 + \frac{h}{2} {\bf \tau}^b(t), \\
1340 %
1341 \mathsf{A}(t + h) &\leftarrow \mathrm{rotate}\left( h {\bf j}
1342 (t + h / 2) \cdot \overleftrightarrow{\mathsf{I}}^{-1} \right).
1343 \end{align*}
1344
1345 In this context, the $\mathrm{rotate}$ function is the reversible product
1346 of the three body-fixed rotations,
1347 \begin{equation}
1348 \mathrm{rotate}({\bf a}) = \mathsf{G}_x(a_x / 2) \cdot
1349 \mathsf{G}_y(a_y / 2) \cdot \mathsf{G}_z(a_z) \cdot \mathsf{G}_y(a_y /
1350 2) \cdot \mathsf{G}_x(a_x /2),
1351 \end{equation}
1352 where each rotational propagator, $\mathsf{G}_\alpha(\theta)$, rotates
1353 both the rotation matrix ($\mathsf{A}$) and the body-fixed angular
1354 momentum (${\bf j}$) by an angle $\theta$ around body-fixed axis
1355 $\alpha$,
1356 \begin{equation}
1357 \mathsf{G}_\alpha( \theta ) = \left\{
1358 \begin{array}{lcl}
1359 \mathsf{A}(t) & \leftarrow & \mathsf{A}(0) \cdot \mathsf{R}_\alpha(\theta)^T, \\
1360 {\bf j}(t) & \leftarrow & \mathsf{R}_\alpha(\theta) \cdot {\bf j}(0).
1361 \end{array}
1362 \right.
1363 \end{equation}
1364 $\mathsf{R}_\alpha$ is a quadratic approximation to
1365 the single-axis rotation matrix. For example, in the small-angle
1366 limit, the rotation matrix around the body-fixed x-axis can be
1367 approximated as
1368 \begin{equation}
1369 \mathsf{R}_x(\theta) \approx \left(
1370 \begin{array}{ccc}
1371 1 & 0 & 0 \\
1372 0 & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4} & -\frac{\theta}{1+
1373 \theta^2 / 4} \\
1374 0 & \frac{\theta}{1+
1375 \theta^2 / 4} & \frac{1-\theta^2 / 4}{1 + \theta^2 / 4}
1376 \end{array}
1377 \right).
1378 \end{equation}
1379 All other rotations follow in a straightforward manner.
1380
1381 After the first part of the propagation, the forces and body-fixed
1382 torques are calculated at the new positions and orientations
1383
1384 {\tt doForces:}
1385 \begin{align*}
1386 {\bf f}(t + h) &\leftarrow
1387 - \left(\frac{\partial V}{\partial {\bf r}}\right)_{{\bf r}(t + h)}, \\
1388 %
1389 {\bf \tau}^{s}(t + h) &\leftarrow {\bf u}(t + h)
1390 \times \frac{\partial V}{\partial {\bf u}}, \\
1391 %
1392 {\bf \tau}^{b}(t + h) &\leftarrow \mathsf{A}(t + h)
1393 \cdot {\bf \tau}^s(t + h).
1394 \end{align*}
1395
1396 {\sc oopse} automatically updates ${\bf u}$ when the rotation matrix
1397 $\mathsf{A}$ is calculated in {\tt moveA}. Once the forces and
1398 torques have been obtained at the new time step, the velocities can be
1399 advanced to the same time value.
1400
1401 {\tt moveB:}
1402 \begin{align*}
1403 {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t + h / 2 \right)
1404 + \frac{h}{2} \left( {\bf f}(t + h) / m \right), \\
1405 %
1406 {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t + h / 2 \right)
1407 + \frac{h}{2} {\bf \tau}^b(t + h) .
1408 \end{align*}
1409
1410 The matrix rotations used in the DLM method end up being more costly
1411 computationally than the simpler arithmetic quaternion
1412 propagation. With the same time step, a 1000-molecule water simulation
1413 shows an average 7\% increase in computation time using the DLM method
1414 in place of quaternions. This cost is more than justified when
1415 comparing the energy conservation of the two methods as illustrated in
1416 Fig.~\ref{timestep}.
1417
1418 \begin{figure}
1419 \centering
1420 \includegraphics[width=\linewidth]{timeStep.eps}
1421 \caption[Energy conservation for quaternion versus DLM dynamics]{Energy conservation using quaternion based integration versus
1422 the method proposed by Dullweber \emph{et al.} with increasing time
1423 step. For each time step, the dotted line is total energy using the
1424 DLM integrator, and the solid line comes from the quaternion
1425 integrator. The larger time step plots are shifted up from the true
1426 energy baseline for clarity.}
1427 \label{timestep}
1428 \end{figure}
1429
1430 In Fig.~\ref{timestep}, the resulting energy drift at various time
1431 steps for both the DLM and quaternion integration schemes is
1432 compared. All of the 1000 molecule water simulations started with the
1433 same configuration, and the only difference was the method for
1434 handling rotational motion. At time steps of 0.1 and 0.5 fs, both
1435 methods for propagating molecule rotation conserve energy fairly well,
1436 with the quaternion method showing a slight energy drift over time in
1437 the 0.5 fs time step simulation. At time steps of 1 and 2 fs, the
1438 energy conservation benefits of the DLM method are clearly
1439 demonstrated. Thus, while maintaining the same degree of energy
1440 conservation, one can take considerably longer time steps, leading to
1441 an overall reduction in computation time.
1442
1443 There is only one specific keyword relevant to the default integrator,
1444 and that is the time step for integrating the equations of motion.
1445
1446 \begin{center}
1447 \begin{tabular}{llll}
1448 {\bf variable} & {\bf Meta-data keyword} & {\bf units} & {\bf
1449 default value} \\
1450 $h$ & {\tt dt = 2.0;} & fs & none
1451 \end{tabular}
1452 \end{center}
1453
1454 \subsection{\label{sec:extended}Extended Systems for other Ensembles}
1455
1456 {\sc oopse} implements a number of extended system integrators for
1457 sampling from other ensembles relevant to chemical physics. The
1458 integrator can be selected with the {\tt ensemble} keyword in the
1459 meta-data file:
1460
1461 \begin{center}
1462 \begin{tabular}{lll}
1463 {\bf Integrator} & {\bf Ensemble} & {\bf Meta-data instruction} \\
1464 NVE & microcanonical & {\tt ensemble = NVE; } \\
1465 NVT & canonical & {\tt ensemble = NVT; } \\
1466 NPTi & isobaric-isothermal & {\tt ensemble = NPTi;} \\
1467 & (with isotropic volume changes) & \\
1468 NPTf & isobaric-isothermal & {\tt ensemble = NPTf;} \\
1469 & (with changes to box shape) & \\
1470 NPTxyz & approximate isobaric-isothermal & {\tt ensemble = NPTxyz;} \\
1471 & (with separate barostats on each box dimension) & \\
1472 \end{tabular}
1473 \end{center}
1474
1475 The relatively well-known Nos\'e-Hoover thermostat\cite{Hoover85} is
1476 implemented in {\sc oopse}'s NVT integrator. This method couples an
1477 extra degree of freedom (the thermostat) to the kinetic energy of the
1478 system and it has been shown to sample the canonical distribution in
1479 the system degrees of freedom while conserving a quantity that is, to
1480 within a constant, the Helmholtz free energy.\cite{melchionna93}
1481
1482 NPT algorithms attempt to maintain constant pressure in the system by
1483 coupling the volume of the system to a barostat. {\sc oopse} contains
1484 three different constant pressure algorithms. The first two, NPTi and
1485 NPTf have been shown to conserve a quantity that is, to within a
1486 constant, the Gibbs free energy.\cite{melchionna93} The Melchionna
1487 modification to the Hoover barostat is implemented in both NPTi and
1488 NPTf. NPTi allows only isotropic changes in the simulation box, while
1489 box {\it shape} variations are allowed in NPTf. The NPTxyz integrator
1490 has {\it not} been shown to sample from the isobaric-isothermal
1491 ensemble. It is useful, however, in that it maintains orthogonality
1492 for the axes of the simulation box while attempting to equalize
1493 pressure along the three perpendicular directions in the box.
1494
1495 Each of the extended system integrators requires additional keywords
1496 to set target values for the thermodynamic state variables that are
1497 being held constant. Keywords are also required to set the
1498 characteristic decay times for the dynamics of the extended
1499 variables.
1500
1501 \begin{center}
1502 \begin{tabular}{llll}
1503 {\bf variable} & {\bf Meta-data instruction} & {\bf units} & {\bf
1504 default value} \\
1505 $T_{\mathrm{target}}$ & {\tt targetTemperature = 300;} & K & none \\
1506 $P_{\mathrm{target}}$ & {\tt targetPressure = 1;} & atm & none \\
1507 $\tau_T$ & {\tt tauThermostat = 1e3;} & fs & none \\
1508 $\tau_B$ & {\tt tauBarostat = 5e3;} & fs & none \\
1509 & {\tt resetTime = 200;} & fs & none \\
1510 & {\tt useInitialExtendedSystemState = true;} & logical &
1511 true
1512 \end{tabular}
1513 \end{center}
1514
1515 Two additional keywords can be used to either clear the extended
1516 system variables periodically ({\tt resetTime}), or to maintain the
1517 state of the extended system variables between simulations ({\tt
1518 useInitialExtendedSystemState}). More details on these variables
1519 and their use in the integrators follows below.
1520
1521 \subsection{\label{oopseSec:noseHooverThermo}Nos\'{e}-Hoover Thermostatting}
1522
1523 The Nos\'e-Hoover equations of motion are given by\cite{Hoover85}
1524 \begin{eqnarray}
1525 \dot{{\bf r}} & = & {\bf v}, \\
1526 \dot{{\bf v}} & = & \frac{{\bf f}}{m} - \chi {\bf v} ,\\
1527 \dot{\mathsf{A}} & = & \mathsf{A} \cdot
1528 \mbox{ skew}\left(\overleftrightarrow{\mathsf{I}}^{-1} \cdot {\bf j}\right), \\
1529 \dot{{\bf j}} & = & {\bf j} \times \left( \overleftrightarrow{\mathsf{I}}^{-1}
1530 \cdot {\bf j} \right) - \mbox{ rot}\left(\mathsf{A}^{T} \cdot \frac{\partial
1531 V}{\partial \mathsf{A}} \right) - \chi {\bf j}.
1532 \label{eq:nosehoovereom}
1533 \end{eqnarray}
1534
1535 $\chi$ is an ``extra'' variable included in the extended system, and
1536 it is propagated using the first order equation of motion
1537 \begin{equation}
1538 \dot{\chi} = \frac{1}{\tau_{T}^2} \left( \frac{T}{T_{\mathrm{target}}} - 1 \right).
1539 \label{eq:nosehooverext}
1540 \end{equation}
1541
1542 The instantaneous temperature $T$ is proportional to the total kinetic
1543 energy (both translational and orientational) and is given by
1544 \begin{equation}
1545 T = \frac{2 K}{f k_B}
1546 \end{equation}
1547 Here, $f$ is the total number of degrees of freedom in the system,
1548 \begin{equation}
1549 f = 3 N + 3 N_{\mathrm{orient}} - N_{\mathrm{constraints}},
1550 \end{equation}
1551 and $K$ is the total kinetic energy,
1552 \begin{equation}
1553 K = \sum_{i=1}^{N} \frac{1}{2} m_i {\bf v}_i^T \cdot {\bf v}_i +
1554 \sum_{i=1}^{N_{\mathrm{orient}}} \frac{1}{2} {\bf j}_i^T \cdot
1555 \overleftrightarrow{\mathsf{I}}_i^{-1} \cdot {\bf j}_i.
1556 \end{equation}
1557
1558 In eq.(\ref{eq:nosehooverext}), $\tau_T$ is the time constant for
1559 relaxation of the temperature to the target value. To set values for
1560 $\tau_T$ or $T_{\mathrm{target}}$ in a simulation, one would use the
1561 {\tt tauThermostat} and {\tt targetTemperature} keywords in the
1562 meta-data file. The units for {\tt tauThermostat} are fs, and the
1563 units for the {\tt targetTemperature} are degrees K. The integration
1564 of the equations of motion is carried out in a velocity-Verlet style 2
1565 part algorithm:
1566
1567 {\tt moveA:}
1568 \begin{align*}
1569 T(t) &\leftarrow \left\{{\bf v}(t)\right\}, \left\{{\bf j}(t)\right\} ,\\
1570 %
1571 {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
1572 + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} - {\bf v}(t)
1573 \chi(t)\right), \\
1574 %
1575 {\bf r}(t + h) &\leftarrow {\bf r}(t)
1576 + h {\bf v}\left(t + h / 2 \right) ,\\
1577 %
1578 {\bf j}\left(t + h / 2 \right) &\leftarrow {\bf j}(t)
1579 + \frac{h}{2} \left( {\bf \tau}^b(t) - {\bf j}(t)
1580 \chi(t) \right) ,\\
1581 %
1582 \mathsf{A}(t + h) &\leftarrow \mathrm{rotate}
1583 \left(h * {\bf j}(t + h / 2)
1584 \overleftrightarrow{\mathsf{I}}^{-1} \right) ,\\
1585 %
1586 \chi\left(t + h / 2 \right) &\leftarrow \chi(t)
1587 + \frac{h}{2 \tau_T^2} \left( \frac{T(t)}
1588 {T_{\mathrm{target}}} - 1 \right) .
1589 \end{align*}
1590
1591 Here $\mathrm{rotate}(h * {\bf j}
1592 \overleftrightarrow{\mathsf{I}}^{-1})$ is the same symplectic Trotter
1593 factorization of the three rotation operations that was discussed in
1594 the section on the DLM integrator. Note that this operation modifies
1595 both the rotation matrix $\mathsf{A}$ and the angular momentum ${\bf
1596 j}$. {\tt moveA} propagates velocities by a half time step, and
1597 positional degrees of freedom by a full time step. The new positions
1598 (and orientations) are then used to calculate a new set of forces and
1599 torques in exactly the same way they are calculated in the {\tt
1600 doForces} portion of the DLM integrator.
1601
1602 Once the forces and torques have been obtained at the new time step,
1603 the temperature, velocities, and the extended system variable can be
1604 advanced to the same time value.
1605
1606 {\tt moveB:}
1607 \begin{align*}
1608 T(t + h) &\leftarrow \left\{{\bf v}(t + h)\right\},
1609 \left\{{\bf j}(t + h)\right\}, \\
1610 %
1611 \chi\left(t + h \right) &\leftarrow \chi\left(t + h /
1612 2 \right) + \frac{h}{2 \tau_T^2} \left( \frac{T(t+h)}
1613 {T_{\mathrm{target}}} - 1 \right), \\
1614 %
1615 {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
1616 + h / 2 \right) + \frac{h}{2} \left(
1617 \frac{{\bf f}(t + h)}{m} - {\bf v}(t + h)
1618 \chi(t h)\right) ,\\
1619 %
1620 {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t
1621 + h / 2 \right) + \frac{h}{2}
1622 \left( {\bf \tau}^b(t + h) - {\bf j}(t + h)
1623 \chi(t + h) \right) .
1624 \end{align*}
1625
1626 Since ${\bf v}(t + h)$ and ${\bf j}(t + h)$ are required to calculate
1627 $T(t + h)$ as well as $\chi(t + h)$, they indirectly depend on their
1628 own values at time $t + h$. {\tt moveB} is therefore done in an
1629 iterative fashion until $\chi(t + h)$ becomes self-consistent. The
1630 relative tolerance for the self-consistency check defaults to a value
1631 of $\mbox{10}^{-6}$, but {\sc oopse} will terminate the iteration
1632 after 4 loops even if the consistency check has not been satisfied.
1633
1634 The Nos\'e-Hoover algorithm is known to conserve a Hamiltonian for the
1635 extended system that is, to within a constant, identical to the
1636 Helmholtz free energy,\cite{melchionna93}
1637 \begin{equation}
1638 H_{\mathrm{NVT}} = V + K + f k_B T_{\mathrm{target}} \left(
1639 \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
1640 \right).
1641 \end{equation}
1642 Poor choices of $h$ or $\tau_T$ can result in non-conservation
1643 of $H_{\mathrm{NVT}}$, so the conserved quantity is maintained in the
1644 last column of the {\tt .stat} file to allow checks on the quality of
1645 the integration.
1646
1647 Bond constraints are applied at the end of both the {\tt moveA} and
1648 {\tt moveB} portions of the algorithm. Details on the constraint
1649 algorithms are given in section \ref{oopseSec:rattle}.
1650
1651 \subsection{\label{sec:NPTi}Constant-pressure integration with
1652 isotropic box deformations (NPTi)}
1653
1654 To carry out isobaric-isothermal ensemble calculations, {\sc oopse}
1655 implements the Melchionna modifications to the Nos\'e-Hoover-Andersen
1656 equations of motion.\cite{melchionna93} The equations of motion are
1657 the same as NVT with the following exceptions:
1658
1659 \begin{eqnarray}
1660 \dot{{\bf r}} & = & {\bf v} + \eta \left( {\bf r} - {\bf R}_0 \right), \\
1661 \dot{{\bf v}} & = & \frac{{\bf f}}{m} - (\eta + \chi) {\bf v}, \\
1662 \dot{\eta} & = & \frac{1}{\tau_{B}^2 f k_B T_{\mathrm{target}}} V \left( P -
1663 P_{\mathrm{target}} \right), \\
1664 \dot{\mathcal{V}} & = & 3 \mathcal{V} \eta .
1665 \label{eq:melchionna1}
1666 \end{eqnarray}
1667
1668 $\chi$ and $\eta$ are the ``extra'' degrees of freedom in the extended
1669 system. $\chi$ is a thermostat, and it has the same function as it
1670 does in the Nos\'e-Hoover NVT integrator. $\eta$ is a barostat which
1671 controls changes to the volume of the simulation box. ${\bf R}_0$ is
1672 the location of the center of mass for the entire system, and
1673 $\mathcal{V}$ is the volume of the simulation box. At any time, the
1674 volume can be calculated from the determinant of the matrix which
1675 describes the box shape:
1676 \begin{equation}
1677 \mathcal{V} = \det(\mathsf{H}).
1678 \end{equation}
1679
1680 The NPTi integrator requires an instantaneous pressure. This quantity
1681 is calculated via the pressure tensor,
1682 \begin{equation}
1683 \overleftrightarrow{\mathsf{P}}(t) = \frac{1}{\mathcal{V}(t)} \left(
1684 \sum_{i=1}^{N} m_i {\bf v}_i(t) \otimes {\bf v}_i(t) \right) +
1685 \overleftrightarrow{\mathsf{W}}(t).
1686 \end{equation}
1687 The kinetic contribution to the pressure tensor utilizes the {\it
1688 outer} product of the velocities, denoted by the $\otimes$ symbol. The
1689 stress tensor is calculated from another outer product of the
1690 inter-atomic separation vectors (${\bf r}_{ij} = {\bf r}_j - {\bf
1691 r}_i$) with the forces between the same two atoms,
1692 \begin{equation}
1693 \overleftrightarrow{\mathsf{W}}(t) = \sum_{i} \sum_{j>i} {\bf r}_{ij}(t)
1694 \otimes {\bf f}_{ij}(t).
1695 \end{equation}
1696 In systems containing cutoff groups, the stress tensor is computed
1697 between the centers-of-mass of the cutoff groups:
1698 \begin{equation}
1699 \overleftrightarrow{\mathsf{W}}(t) = \sum_{a} \sum_{b} {\bf r}_{ab}(t)
1700 \otimes {\bf f}_{ab}(t).
1701 \end{equation}
1702 where ${\bf r}_{ab}$ is the distance between the centers of mass, and
1703 \begin{equation}
1704 {\bf f}_{ab} = s(r_{ab}) \sum_{i \in a} \sum_{j \in b} {\bf f}_{ij} +
1705 s\prime(r_{ab}) \frac{{\bf r}_{ab}}{|r_{ab}|} \sum_{i \in a} \sum_{j
1706 \in b} V_{ij}({\bf r}_{ij}).
1707 \end{equation}
1708
1709 The instantaneous pressure is then simply obtained from the trace of
1710 the pressure tensor,
1711 \begin{equation}
1712 P(t) = \frac{1}{3} \mathrm{Tr} \left( \overleftrightarrow{\mathsf{P}}(t).
1713 \right)
1714 \end{equation}
1715
1716 In eq.(\ref{eq:melchionna1}), $\tau_B$ is the time constant for
1717 relaxation of the pressure to the target value. To set values for
1718 $\tau_B$ or $P_{\mathrm{target}}$ in a simulation, one would use the
1719 {\tt tauBarostat} and {\tt targetPressure} keywords in the meta-data
1720 file. The units for {\tt tauBarostat} are fs, and the units for the
1721 {\tt targetPressure} are atmospheres. Like in the NVT integrator, the
1722 integration of the equations of motion is carried out in a
1723 velocity-Verlet style 2 part algorithm with only the following differences:
1724
1725 {\tt moveA:}
1726 \begin{align*}
1727 P(t) &\leftarrow \left\{{\bf r}(t)\right\}, \left\{{\bf v}(t)\right\} ,\\
1728 %
1729 {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
1730 + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} - {\bf v}(t)
1731 \left(\chi(t) + \eta(t) \right) \right), \\
1732 %
1733 \eta(t + h / 2) &\leftarrow \eta(t) + \frac{h
1734 \mathcal{V}(t)}{2 N k_B T(t) \tau_B^2} \left( P(t)
1735 - P_{\mathrm{target}} \right), \\
1736 %
1737 {\bf r}(t + h) &\leftarrow {\bf r}(t) + h
1738 \left\{ {\bf v}\left(t + h / 2 \right)
1739 + \eta(t + h / 2)\left[ {\bf r}(t + h)
1740 - {\bf R}_0 \right] \right\} ,\\
1741 %
1742 \mathsf{H}(t + h) &\leftarrow e^{-h \eta(t + h / 2)}
1743 \mathsf{H}(t).
1744 \end{align*}
1745
1746 The propagation of positions to time $t + h$
1747 depends on the positions at the same time. {\sc oopse} carries out
1748 this step iteratively (with a limit of 5 passes through the iterative
1749 loop). Also, the simulation box $\mathsf{H}$ is scaled uniformly for
1750 one full time step by an exponential factor that depends on the value
1751 of $\eta$ at time $t +
1752 h / 2$. Reshaping the box uniformly also scales the volume of
1753 the box by
1754 \begin{equation}
1755 \mathcal{V}(t + h) \leftarrow e^{ - 3 h \eta(t + h /2)} \times
1756 \mathcal{V}(t)
1757 \end{equation}
1758
1759 The {\tt doForces} step for the NPTi integrator is exactly the same as
1760 in both the DLM and NVT integrators. Once the forces and torques have
1761 been obtained at the new time step, the velocities can be advanced to
1762 the same time value.
1763
1764 {\tt moveB:}
1765 \begin{align*}
1766 P(t + h) &\leftarrow \left\{{\bf r}(t + h)\right\},
1767 \left\{{\bf v}(t + h)\right\}, \\
1768 %
1769 \eta(t + h) &\leftarrow \eta(t + h / 2) +
1770 \frac{h \mathcal{V}(t + h)}{2 N k_B T(t + h)
1771 \tau_B^2} \left( P(t + h) - P_{\mathrm{target}} \right), \\
1772 %
1773 {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
1774 + h / 2 \right) + \frac{h}{2} \left(
1775 \frac{{\bf f}(t + h)}{m} - {\bf v}(t + h)
1776 (\chi(t + h) + \eta(t + h)) \right) ,\\
1777 %
1778 {\bf j}\left(t + h \right) &\leftarrow {\bf j}\left(t
1779 + h / 2 \right) + \frac{h}{2} \left( {\bf
1780 \tau}^b(t + h) - {\bf j}(t + h)
1781 \chi(t + h) \right) .
1782 \end{align*}
1783
1784 Once again, since ${\bf v}(t + h)$ and ${\bf j}(t + h)$ are required
1785 to calculate $T(t + h)$, $P(t + h)$, $\chi(t + h)$, and $\eta(t +
1786 h)$, they indirectly depend on their own values at time $t + h$. {\tt
1787 moveB} is therefore done in an iterative fashion until $\chi(t + h)$
1788 and $\eta(t + h)$ become self-consistent. The relative tolerance for
1789 the self-consistency check defaults to a value of $\mbox{10}^{-6}$,
1790 but {\sc oopse} will terminate the iteration after 4 loops even if the
1791 consistency check has not been satisfied.
1792
1793 The Melchionna modification of the Nos\'e-Hoover-Andersen algorithm is
1794 known to conserve a Hamiltonian for the extended system that is, to
1795 within a constant, identical to the Gibbs free energy,
1796 \begin{equation}
1797 H_{\mathrm{NPTi}} = V + K + f k_B T_{\mathrm{target}} \left(
1798 \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
1799 \right) + P_{\mathrm{target}} \mathcal{V}(t).
1800 \end{equation}
1801 Poor choices of $\delta t$, $\tau_T$, or $\tau_B$ can result in
1802 non-conservation of $H_{\mathrm{NPTi}}$, so the conserved quantity is
1803 maintained in the last column of the {\tt .stat} file to allow checks
1804 on the quality of the integration. It is also known that this
1805 algorithm samples the equilibrium distribution for the enthalpy
1806 (including contributions for the thermostat and barostat),
1807 \begin{equation}
1808 H_{\mathrm{NPTi}} = V + K + \frac{f k_B T_{\mathrm{target}}}{2} \left(
1809 \chi^2 \tau_T^2 + \eta^2 \tau_B^2 \right) + P_{\mathrm{target}}
1810 \mathcal{V}(t).
1811 \end{equation}
1812
1813 Bond constraints are applied at the end of both the {\tt moveA} and
1814 {\tt moveB} portions of the algorithm. Details on the constraint
1815 algorithms are given in section \ref{oopseSec:rattle}.
1816
1817 \subsection{\label{sec:NPTf}Constant-pressure integration with a
1818 flexible box (NPTf)}
1819
1820 There is a relatively simple generalization of the
1821 Nos\'e-Hoover-Andersen method to include changes in the simulation box
1822 {\it shape} as well as in the volume of the box. This method utilizes
1823 the full $3 \times 3$ pressure tensor and introduces a tensor of
1824 extended variables ($\overleftrightarrow{\eta}$) to control changes to
1825 the box shape. The equations of motion for this method differ from
1826 those of NPTi as follows:
1827 \begin{eqnarray}
1828 \dot{{\bf r}} & = & {\bf v} + \overleftrightarrow{\eta} \cdot \left( {\bf r} - {\bf R}_0 \right), \\
1829 \dot{{\bf v}} & = & \frac{{\bf f}}{m} - (\overleftrightarrow{\eta} +
1830 \chi \cdot \mathsf{1}) {\bf v}, \\
1831 \dot{\overleftrightarrow{\eta}} & = & \frac{1}{\tau_{B}^2 f k_B
1832 T_{\mathrm{target}}} V \left( \overleftrightarrow{\mathsf{P}} - P_{\mathrm{target}}\mathsf{1} \right) ,\\
1833 \dot{\mathsf{H}} & = & \overleftrightarrow{\eta} \cdot \mathsf{H} .
1834 \label{eq:melchionna2}
1835 \end{eqnarray}
1836
1837 Here, $\mathsf{1}$ is the unit matrix and $\overleftrightarrow{\mathsf{P}}$
1838 is the pressure tensor. Again, the volume, $\mathcal{V} = \det
1839 \mathsf{H}$.
1840
1841 The propagation of the equations of motion is nearly identical to the
1842 NPTi integration:
1843
1844 {\tt moveA:}
1845 \begin{align*}
1846 \overleftrightarrow{\mathsf{P}}(t) &\leftarrow \left\{{\bf r}(t)\right\},
1847 \left\{{\bf v}(t)\right\} ,\\
1848 %
1849 {\bf v}\left(t + h / 2\right) &\leftarrow {\bf v}(t)
1850 + \frac{h}{2} \left( \frac{{\bf f}(t)}{m} -
1851 \left(\chi(t)\mathsf{1} + \overleftrightarrow{\eta}(t) \right) \cdot
1852 {\bf v}(t) \right), \\
1853 %
1854 \overleftrightarrow{\eta}(t + h / 2) &\leftarrow
1855 \overleftrightarrow{\eta}(t) + \frac{h \mathcal{V}(t)}{2 N k_B
1856 T(t) \tau_B^2} \left( \overleftrightarrow{\mathsf{P}}(t)
1857 - P_{\mathrm{target}}\mathsf{1} \right), \\
1858 %
1859 {\bf r}(t + h) &\leftarrow {\bf r}(t) + h \left\{ {\bf v}
1860 \left(t + h / 2 \right) + \overleftrightarrow{\eta}(t +
1861 h / 2) \cdot \left[ {\bf r}(t + h)
1862 - {\bf R}_0 \right] \right\}, \\
1863 %
1864 \mathsf{H}(t + h) &\leftarrow \mathsf{H}(t) \cdot e^{-h
1865 \overleftrightarrow{\eta}(t + h / 2)} .
1866 \end{align*}
1867 {\sc oopse} uses a power series expansion truncated at second order
1868 for the exponential operation which scales the simulation box.
1869
1870 The {\tt moveB} portion of the algorithm is largely unchanged from the
1871 NPTi integrator:
1872
1873 {\tt moveB:}
1874 \begin{align*}
1875 \overleftrightarrow{\mathsf{P}}(t + h) &\leftarrow \left\{{\bf r}
1876 (t + h)\right\}, \left\{{\bf v}(t
1877 + h)\right\}, \left\{{\bf f}(t + h)\right\} ,\\
1878 %
1879 \overleftrightarrow{\eta}(t + h) &\leftarrow
1880 \overleftrightarrow{\eta}(t + h / 2) +
1881 \frac{h \mathcal{V}(t + h)}{2 N k_B T(t + h)
1882 \tau_B^2} \left( \overleftrightarrow{P}(t + h)
1883 - P_{\mathrm{target}}\mathsf{1} \right) ,\\
1884 %
1885 {\bf v}\left(t + h \right) &\leftarrow {\bf v}\left(t
1886 + h / 2 \right) + \frac{h}{2} \left(
1887 \frac{{\bf f}(t + h)}{m} -
1888 (\chi(t + h)\mathsf{1} + \overleftrightarrow{\eta}(t
1889 + h)) \right) \cdot {\bf v}(t + h), \\
1890 \end{align*}
1891
1892 The iterative schemes for both {\tt moveA} and {\tt moveB} are
1893 identical to those described for the NPTi integrator.
1894
1895 The NPTf integrator is known to conserve the following Hamiltonian:
1896 \begin{equation}
1897 H_{\mathrm{NPTf}} = V + K + f k_B T_{\mathrm{target}} \left(
1898 \frac{\tau_{T}^2 \chi^2(t)}{2} + \int_{0}^{t} \chi(t^\prime) dt^\prime
1899 \right) + P_{\mathrm{target}} \mathcal{V}(t) + \frac{f k_B
1900 T_{\mathrm{target}}}{2}
1901 \mathrm{Tr}\left[\overleftrightarrow{\eta}(t)\right]^2 \tau_B^2.
1902 \end{equation}
1903
1904 This integrator must be used with care, particularly in liquid
1905 simulations. Liquids have very small restoring forces in the
1906 off-diagonal directions, and the simulation box can very quickly form
1907 elongated and sheared geometries which become smaller than the cutoff
1908 radius. The NPTf integrator finds most use in simulating crystals or
1909 liquid crystals which assume non-orthorhombic geometries.
1910
1911 \subsection{\label{nptxyz}Constant pressure in 3 axes (NPTxyz)}
1912
1913 There is one additional extended system integrator which is somewhat
1914 simpler than the NPTf method described above. In this case, the three
1915 axes have independent barostats which each attempt to preserve the
1916 target pressure along the box walls perpendicular to that particular
1917 axis. The lengths of the box axes are allowed to fluctuate
1918 independently, but the angle between the box axes does not change.
1919 The equations of motion are identical to those described above, but
1920 only the {\it diagonal} elements of $\overleftrightarrow{\eta}$ are
1921 computed. The off-diagonal elements are set to zero (even when the
1922 pressure tensor has non-zero off-diagonal elements).
1923
1924 It should be noted that the NPTxyz integrator is {\it not} known to
1925 preserve any Hamiltonian of interest to the chemical physics
1926 community. The integrator is extremely useful, however, in generating
1927 initial conditions for other integration methods. It {\it is} suitable
1928 for use with liquid simulations, or in cases where there is
1929 orientational anisotropy in the system (i.e. in lipid bilayer
1930 simulations).
1931
1932 \subsection{\label{sec:constraints}Constraint Methods}
1933
1934 \subsubsection{\label{oopseSec:rattle}The {\sc rattle} Method for Bond
1935 Constraints}
1936
1937 In order to satisfy the constraints of fixed bond lengths within {\sc
1938 oopse}, we have implemented the {\sc rattle} algorithm of
1939 Andersen.\cite{andersen83} {\sc rattle} is a velocity-Verlet
1940 formulation of the {\sc shake} method\cite{ryckaert77} for iteratively
1941 solving the Lagrange multipliers which maintain the holonomic
1942 constraints. Both methods are covered in depth in the
1943 literature,\cite{leach01:mm,allen87:csl} and a detailed description of
1944 this method would be redundant.
1945
1946 \subsubsection{\label{oopseSec:zcons}The Z-Constraint Method}
1947
1948 A force auto-correlation method based on the fluctuation-dissipation
1949 theorem was developed by Roux and Karplus to investigate the dynamics
1950 of ions inside ion channels.\cite{Roux91} The time-dependent friction
1951 coefficient can be calculated from the deviation of the instantaneous
1952 force from its mean value:
1953 \begin{equation}
1954 \xi(z,t)=\langle\delta F(z,t)\delta F(z,0)\rangle/k_{B}T,
1955 \end{equation}
1956 where%
1957 \begin{equation}
1958 \delta F(z,t)=F(z,t)-\langle F(z,t)\rangle.
1959 \end{equation}
1960
1961 If the time-dependent friction decays rapidly, the static friction
1962 coefficient can be approximated by
1963 \begin{equation}
1964 \xi_{\text{static}}(z)=\int_{0}^{\infty}\langle\delta F(z,t)\delta F(z,0)\rangle dt.
1965 \end{equation}
1966
1967 This allows the diffusion constant to then be calculated through the
1968 Einstein relation:\cite{Marrink94}
1969 \begin{equation}
1970 D(z)=\frac{k_{B}T}{\xi_{\text{static}}(z)}=\frac{(k_{B}T)^{2}}{\int_{0}^{\infty
1971 }\langle\delta F(z,t)\delta F(z,0)\rangle dt}.%
1972 \end{equation}
1973
1974 The Z-Constraint method, which fixes the $z$ coordinates of a few
1975 ``tagged'' molecules with respect to the center of the mass of the
1976 system is a technique that was proposed to obtain the forces required
1977 for the force auto-correlation calculation.\cite{Marrink94} However,
1978 simply resetting the coordinate will move the center of the mass of
1979 the whole system. To avoid this problem, we have developed a new
1980 method that is utilized in {\sc oopse}. Instead of resetting the
1981 coordinates, we reset the forces of $z$-constrained molecules and
1982 subtract the total constraint forces from the rest of the system after
1983 the force calculation at each time step.
1984
1985 After the force calculation, the total force on molecule $\alpha$,
1986 \begin{equation}
1987 G_{\alpha} = \sum_i F_{\alpha i},
1988 \label{oopseEq:zc1}
1989 \end{equation}
1990 where $F_{\alpha i}$ is the force in the $z$ direction on atom $i$ in
1991 $z$-constrained molecule $\alpha$. The forces on the atoms in the
1992 $z$-constrained molecule are then adjusted to remove the total force
1993 on molecule $\alpha$:
1994 \begin{equation}
1995 F_{\alpha i} = F_{\alpha i} -
1996 \frac{m_{\alpha i} G_{\alpha}}{\sum_i m_{\alpha i}}.
1997 \end{equation}
1998 Here, $m_{\alpha i}$ is the mass of atom $i$ in the $z$-constrained
1999 molecule. After the forces have been adjusted, the velocities must
2000 also be modified to subtract out molecule $\alpha$'s center-of-mass
2001 velocity in the $z$ direction.
2002 \begin{equation}
2003 v_{\alpha i} = v_{\alpha i} -
2004 \frac{\sum_i m_{\alpha i} v_{\alpha i}}{\sum_i m_{\alpha i}},
2005 \end{equation}
2006 where $v_{\alpha i}$ is the velocity of atom $i$ in the z direction.
2007 Lastly, all of the accumulated constraint forces must be subtracted
2008 from the rest of the unconstrained system to keep the system center of
2009 mass of the entire system from drifting.
2010 \begin{equation}
2011 F_{\beta i} = F_{\beta i} - \frac{m_{\beta i} \sum_{\alpha} G_{\alpha}}
2012 {\sum_{\beta}\sum_i m_{\beta i}},
2013 \end{equation}
2014 where $\beta$ denotes all {\it unconstrained} molecules in the
2015 system. Similarly, the velocities of the unconstrained molecules must
2016 also be scaled:
2017 \begin{equation}
2018 v_{\beta i} = v_{\beta i} + \sum_{\alpha} \frac{\sum_i m_{\alpha i}
2019 v_{\alpha i}}{\sum_i m_{\alpha i}}.
2020 \end{equation}
2021
2022 This method will pin down the centers-of-mass of all of the
2023 $z$-constrained molecules, and will also keep the entire system fixed
2024 at the original system center-of-mass location.
2025
2026 At the very beginning of the simulation, the molecules may not be at
2027 their desired positions. To steer a $z$-constrained molecule to its
2028 specified position, a simple harmonic potential is used:
2029 \begin{equation}
2030 U(t)=\frac{1}{2}k_{\text{Harmonic}}(z(t)-z_{\text{cons}})^{2},%
2031 \end{equation}
2032 where $k_{\text{Harmonic}}$ is an harmonic force constant, $z(t)$ is
2033 the current $z$ coordinate of the center of mass of the constrained
2034 molecule, and $z_{\text{cons}}$ is the desired constraint
2035 position. The harmonic force operating on the $z$-constrained molecule
2036 at time $t$ can be calculated by
2037 \begin{equation}
2038 F_{z_{\text{Harmonic}}}(t)=-\frac{\partial U(t)}{\partial z(t)}=
2039 -k_{\text{Harmonic}}(z(t)-z_{\text{cons}}).
2040 \end{equation}
2041
2042 The user may also specify the use of a constant velocity method
2043 (steered molecular dynamics) to move the molecules to their desired
2044 initial positions.
2045
2046 To use of the $z$-constraint method in an {\sc oopse} simulation, the
2047 molecules must be specified using the {\tt nZconstraints} keyword in
2048 the meta-data file. The other parameters for modifying the behavior
2049 of the $z$-constraint method are listed in table~\ref{table:zconParams}.
2050
2051 \begin{table}
2052 \caption{The Global Keywords: Z-Constraint Parameters}
2053 \label{table:zconParams}
2054 \begin{center}
2055 % Note when adding or removing columns, the \hsize numbers must add up to the total number
2056 % of columns.
2057 \begin{tabularx}{\linewidth}%
2058 {>{\setlength{\hsize}{1.00\hsize}}X%
2059 >{\setlength{\hsize}{0.4\hsize}}X%
2060 >{\setlength{\hsize}{1.2\hsize}}X%
2061 >{\setlength{\hsize}{1.4\hsize}}X}
2062
2063 {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
2064
2065 {\tt nZconstraints} & integer & The number of zconstraint molecules& If using zconstraint method, {\tt nZconstraints} must be set \\
2066 {\tt zconsTime} & fs & Sets the frequency at which the {\tt .fz} file is written & \\
2067 {\tt zconsForcePolicy} & string & The strategy of subtracting
2068 zconstraint force from the unconstrained molecules & Possible
2069 strategies are {\tt BYMASS} and {\tt BYNUMBER}. Default
2070 strategy is set to {\tt BYMASS}\\
2071 {\tt zconsGap} & $\mbox{\AA}$ & Set the distance between two adjacent
2072 constraint positions& Used mainly in moving molecules through a simulation \\
2073 {\tt zconsFixtime} & fs & Sets how long the zconstraint molecule is
2074 fixed & {\tt zconsFixtime} must be set if {\tt zconsGap} is set\\
2075 {\tt zconsUsingSMD} &logical & Flag for using Steered Molecular
2076 Dynamics or Harmonic Forces to move the molecule & Harmonic Forces are
2077 used by default\\
2078
2079 \end{tabularx}
2080 \end{center}
2081 \end{table}
2082
2083
2084 \section{\label{sec:minimize}Energy Minimization}
2085
2086 As one of the basic procedures of molecular modeling, energy
2087 minimization is used to identify local configurations that are stable
2088 points on the potential energy surface. There is a vast literature on
2089 energy minimization algorithms have been developed to search for the
2090 global energy minimum as well as to find local structures which are
2091 stable fixed points on the surface. We have included two simple
2092 minimization algorithms: steepest descent, ({\sc sd}) and conjugate
2093 gradient ({\sc cg}) to help users find reasonable local minima from
2094 their initial configurations.
2095
2096 Since {\sc oopse} handles atoms and rigid bodies which have
2097 orientational coordinates as well as translational coordinates, there
2098 is some subtlety to the choice of parameters for minimization
2099 algorithms.
2100
2101 Given a coordinate set $x_{k}$ and a search direction $d_{k}$, a line
2102 search algorithm is performed along $d_{k}$ to produce
2103 $x_{k+1}=x_{k}+$ $\lambda _{k}d_{k}$.
2104
2105 In the steepest descent ({\sc sd}) algorithm,%
2106 \begin{equation}
2107 d_{k}=-\nabla V(x_{k})
2108 \end{equation}
2109 The gradient and the direction of next step are always orthogonal.
2110 This may cause oscillatory behavior in narrow valleys. To overcome
2111 this problem, the Fletcher-Reeves variant~\cite{FletcherReeves} of the
2112 conjugate gradient ({\sc cg}) algorithm is used to generate $d_{k+1}$
2113 via simple recursion:
2114 \begin{align}
2115 d_{k+1} & =-\nabla V(x_{k+1})+\gamma_{k}d_{k}\\
2116 \gamma_{k} & =\frac{\nabla V(x_{k+1})^{T}\nabla V(x_{k+1})}{\nabla
2117 V(x_{k})^{T}\nabla V(x_{k})}%
2118 \end{align}
2119
2120 The Polak-Ribiere variant~\cite{PolakRibiere} of the conjugate
2121 gradient ($\gamma_{k}$) is defined as%
2122 \begin{equation}
2123 \gamma_{k}=\frac{[\nabla V(x_{k+1})-\nabla V(x)]^{T}\nabla V(x_{k+1})}{\nabla
2124 V(x_{k})^{T}\nabla V(x_{k})}%
2125 \end{equation}
2126
2127 The conjugate gradient method assumes that the conformation is close
2128 enough to a local minimum that the potential energy surface is very
2129 nearly quadratic. When the initial structure is far from the minimum,
2130 the steepest descent method can be superior to the conjugate gradient
2131 method. Hence, the steepest descent method is often used for the first
2132 10-100 steps of minimization. Another useful feature of minimization
2133 methods in {\sc oopse} is that a modified {\sc shake} algorithm can be
2134 applied during the minimization to constraint the bond lengths if this
2135 is required by the force field. Meta-data parameters concerning the
2136 minimizer are given in Table~\ref{table:minimizeParams}
2137
2138 \begin{table}
2139 \caption{The Global Keywords: Energy Minimizer Parameters}
2140 \label{table:minimizeParams}
2141 \begin{center}
2142 % Note when adding or removing columns, the \hsize numbers must add up to the total number
2143 % of columns.
2144 \begin{tabularx}{\linewidth}%
2145 {>{\setlength{\hsize}{1.2\hsize}}X%
2146 >{\setlength{\hsize}{0.6\hsize}}X%
2147 >{\setlength{\hsize}{1.1\hsize}}X%
2148 >{\setlength{\hsize}{1.1\hsize}}X}
2149
2150 {\bf keyword} & {\bf units} & {\bf use} & {\bf remarks} \\ \hline
2151
2152 {\tt minimizer} & string & selects the minimization method to be used
2153 & either {\tt CG} (conjugate gradient) or {\tt SD} (steepest
2154 descent) \\
2155 {\tt minimizerMaxIter} & steps & Sets the maximum iteration number in the energy minimization & Default value is 200\\
2156 {\tt minimizerWriteFreq} & steps & Sets the frequency at which the {\tt .dump} and {\tt .stat} files are writtern during energy minimization & \\
2157 {\tt minimizerStepSize} & $\mbox{\AA}$ & Set the step size of line search & Default value is 0.01\\
2158 {\tt minimizerFTol} & $\mbox{kcal mol}^{-1}$ & Sets energy tolerance & Default value is $10^{-8}$\\
2159 {\tt minimizerGTol} & $\mbox{kcal mol}^{-1}\mbox{\AA}^{-1}$ & Sets gradient tolerance & Default value is $10^{-8}$\\
2160 {\tt minimizerLSTol} & $\mbox{kcal mol}^{-1}$ & Sets line search tolerance & Default value is $10^{-8}$\\
2161 {\tt minimizerLSMaxIter} & steps & Sets the maximum iteration of line searching & Default value is 50\\
2162
2163 \end{tabularx}
2164 \end{center}
2165 \end{table}
2166
2167 \section{\label{oopseSec:parallelization} Parallel Simulation Implementation}
2168
2169 Although processor power is continually improving, it is still
2170 unreasonable to simulate systems of more then a 1000 atoms on a single
2171 processor. To facilitate study of larger system sizes or smaller
2172 systems for longer time scales, parallel methods were developed to
2173 allow multiple CPU's to share the simulation workload. Three general
2174 categories of parallel decomposition methods have been developed:
2175 these are the atomic,\cite{Fox88} spatial~\cite{plimpton95} and
2176 force~\cite{Paradyn} decomposition methods.
2177
2178 Algorithmically simplest of the three methods is atomic decomposition,
2179 where $N$ particles in a simulation are split among $P$ processors for
2180 the duration of the simulation. Computational cost scales as an
2181 optimal $\mathcal{O}(N/P)$ for atomic decomposition. Unfortunately all
2182 processors must communicate positions and forces with all other
2183 processors at every force evaluation, leading the communication costs
2184 to scale as an unfavorable $\mathcal{O}(N)$, \emph{independent of the
2185 number of processors}. This communication bottleneck led to the
2186 development of spatial and force decomposition methods, in which
2187 communication among processors scales much more favorably. Spatial or
2188 domain decomposition divides the physical spatial domain into 3D boxes
2189 in which each processor is responsible for calculation of forces and
2190 positions of particles located in its box. Particles are reassigned to
2191 different processors as they move through simulation space. To
2192 calculate forces on a given particle, a processor must simply know the
2193 positions of particles within some cutoff radius located on nearby
2194 processors rather than the positions of particles on all
2195 processors. Both communication between processors and computation
2196 scale as $\mathcal{O}(N/P)$ in the spatial method. However, spatial
2197 decomposition adds algorithmic complexity to the simulation code and
2198 is not very efficient for small $N$, since the overall communication
2199 scales as the surface to volume ratio $\mathcal{O}(N/P)^{2/3}$ in
2200 three dimensions.
2201
2202 The parallelization method used in {\sc oopse} is the force
2203 decomposition method. Force decomposition assigns particles to
2204 processors based on a block decomposition of the force
2205 matrix. Processors are split into an optimally square grid forming row
2206 and column processor groups. Forces are calculated on particles in a
2207 given row by particles located in that processor's column
2208 assignment. Force decomposition is less complex to implement than the
2209 spatial method but still scales computationally as $\mathcal{O}(N/P)$
2210 and scales as $\mathcal{O}(N/\sqrt{P})$ in communication
2211 cost. Plimpton has also found that force decompositions scale more
2212 favorably than spatial decompositions for systems up to 10,000 atoms
2213 and favorably compete with spatial methods up to 100,000
2214 atoms.\cite{plimpton95}
2215
2216 \section{\label{oopseSec:conclusion}Conclusion}
2217
2218 We have presented a new open source parallel simulation program {\sc
2219 oopse}. This program offers some novel capabilities, but mostly makes
2220 available a library of modern object-oriented code for the scientific
2221 community to use freely. Notably, {\sc oopse} can handle symplectic
2222 integration of objects (atoms and rigid bodies) which have
2223 orientational degrees of freedom. It can also work with transition
2224 metal force fields and point-dipoles. It is capable of scaling across
2225 multiple processors through the use of force based decomposition. It
2226 also implements several advanced integrators allowing the end user
2227 control over temperature and pressure. In addition, it is capable of
2228 integrating constrained dynamics through both the {\sc rattle}
2229 algorithm and the $z$-constraint method.
2230
2231 We encourage other researchers to download and apply this program to
2232 their own research problems. By making the code available, we hope to
2233 encourage other researchers to contribute their own code and make it a
2234 more powerful package for everyone in the molecular dynamics community
2235 to use. All source code for {\sc oopse} is available for download at
2236 {\tt http://oopse.org}.
2237
2238 \newpage
2239 \section{Acknowledgments}
2240
2241 Development of {\sc oopse} was funded by a New Faculty Award from the
2242 Camille and Henry Dreyfus Foundation and by the National Science
2243 Foundation under grant CHE-0134881. Computation time was provided by
2244 the Notre Dame Bunch-of-Boxes (B.o.B) computer cluster under NSF grant
2245 DMR-0079647.
2246
2247 \bibliographystyle{achemso}
2248 \bibliography{oopsePaper}
2249
2250 \end{document}