| 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} |