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