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