1 |
< |
\documentclass[11pt]{article} |
2 |
< |
\usepackage{amsmath} |
3 |
< |
\usepackage{amssymb} |
4 |
< |
\usepackage{endfloat} |
5 |
< |
\usepackage{berkeley} |
6 |
< |
\usepackage{listings} |
7 |
< |
\usepackage{epsf} |
8 |
< |
\usepackage[ref]{overcite} |
9 |
< |
\usepackage{setspace} |
10 |
< |
\usepackage{tabularx} |
11 |
< |
\pagestyle{plain} |
12 |
< |
\pagenumbering{arabic} |
13 |
< |
\oddsidemargin 0.0cm \evensidemargin 0.0cm |
14 |
< |
\topmargin -21pt \headsep 10pt |
15 |
< |
\textheight 9.0in \textwidth 6.5in |
16 |
< |
\brokenpenalty=10000 |
17 |
< |
\renewcommand{\baselinestretch}{1.2} |
18 |
< |
\renewcommand\citemid{\ } % no comma in optional reference note |
1 |
> |
\chapter{\label{chapt:oopse}OOPSE: AN OPEN SOURCE OBJECT-ORIENTED PARALLEL SIMULATION ENGINE FOR MOLECULAR DYNAMICS} |
2 |
|
|
20 |
– |
\begin{document} |
21 |
– |
\lstset{language=C,float,frame=tblr,frameround=tttt} |
22 |
– |
\renewcommand{\lstlistingname}{Scheme} |
23 |
– |
\title{{\sc oopse}: An Open Source Object-Oriented Parallel Simulation |
24 |
– |
Engine for Molecular Dynamics} |
3 |
|
|
26 |
– |
\author{Matthew A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher J. Fennell and J. Daniel Gezelter\\ |
27 |
– |
Department of Chemistry and Biochemistry\\ |
28 |
– |
University of Notre Dame\\ |
29 |
– |
Notre Dame, Indiana 46556} |
4 |
|
|
5 |
< |
\date{\today} |
6 |
< |
\maketitle |
5 |
> |
%% \begin{abstract} |
6 |
> |
%% We detail the capabilities of a new open-source parallel simulation |
7 |
> |
%% package ({\sc oopse}) that can perform molecular dynamics simulations |
8 |
> |
%% on atom types that are missing from other popular packages. In |
9 |
> |
%% particular, {\sc oopse} is capable of performing orientational |
10 |
> |
%% dynamics on dipolar systems, and it can handle simulations of metallic |
11 |
> |
%% systems using the embedded atom method ({\sc eam}). |
12 |
> |
%% \end{abstract} |
13 |
|
|
14 |
< |
\begin{abstract} |
15 |
< |
We detail the capabilities of a new open-source parallel simulation |
16 |
< |
package ({\sc oopse}) that can perform molecular dynamics simulations |
37 |
< |
on atom types that are missing from other popular packages. In |
38 |
< |
particular, {\sc oopse} is capable of performing orientational |
39 |
< |
dynamics on dipolar systems, and it can handle simulations of metallic |
40 |
< |
systems using the embedded atom method ({\sc eam}). |
41 |
< |
\end{abstract} |
14 |
> |
\lstset{language=C,frame=TB,basicstyle=\small,basicstyle=\ttfamily, % |
15 |
> |
xleftmargin=0.5in, xrightmargin=0.5in,captionpos=b, % |
16 |
> |
abovecaptionskip=0.5cm, belowcaptionskip=0.5cm} |
17 |
|
|
18 |
< |
\newpage |
18 |
> |
\section{\label{oopseSec:foreword}Foreword} |
19 |
|
|
20 |
< |
\section{\label{sec:intro}Introduction} |
20 |
> |
In this chapter, I present and detail the capabilities of the open |
21 |
> |
source simulation package {\sc oopse}. It is important to note, that a |
22 |
> |
simulation package of this size and scope would not have been possible |
23 |
> |
without the collaborative efforts of my colleagues: Charles |
24 |
> |
F.~Vardeman II, Teng Lin, Christopher J.~Fennell and J.~Daniel |
25 |
> |
Gezelter. Although my contributions to [\sc oopse} are signifigant, |
26 |
> |
consideration of my work apart from the others, would not give a |
27 |
> |
complete description to the package's capabilities. As such, all |
28 |
> |
contributions to {\sc oopse} to date are presented in this chapter. |
29 |
|
|
30 |
< |
\begin{itemize} |
30 |
> |
{\sc give final breakdown of who wrote which section here.} |
31 |
|
|
32 |
< |
\item Need for package / Niche to fill |
32 |
> |
\section{\label{sec:intro}Introduction} |
33 |
|
|
34 |
< |
\item Design Goal |
34 |
> |
When choosing to simulate a chemical system with molecular dynamics, |
35 |
> |
there are a variety of options available. For simple systems, one |
36 |
> |
might consider writing one's own programming code. However, as systems |
37 |
> |
grow larger and more complex, building and maintaining code for the |
38 |
> |
simulations becomes a time consuming task. In such cases it is usually |
39 |
> |
more convienent for a researcher to turn to pre-existing simulation |
40 |
> |
packages. These packages, such as {\sc amber}\cite{pearlman:1995} and |
41 |
> |
{\sc charmm}\cite{Brooks83}, provide powerful tools for researchers to |
42 |
> |
conduct simulations of their systems without spending their time |
43 |
> |
developing a code base to conduct their research. This then frees them |
44 |
> |
to perhaps explore experimental analouges to their models. |
45 |
|
|
46 |
< |
\item Open Source |
46 |
> |
Despite their utility, problems with these packages arise when |
47 |
> |
researchers try to develop techniques or energetic models that the |
48 |
> |
code was not originally designed to do. Examples of uncommonly |
49 |
> |
implemented techniques and energetics include; dipole-dipole |
50 |
> |
interactions, rigid body dynamics, and metallic emmbedded |
51 |
> |
potentials. When faced with these obstacles, a researcher must either |
52 |
> |
develop their own code or license and extend one of the commercial |
53 |
> |
packages. What we have elected to do, is develop a package of |
54 |
> |
simulation code capable of implementing the types of models upon which |
55 |
> |
our research is based. |
56 |
|
|
57 |
< |
\item Discussion of Paper Layout |
58 |
< |
|
59 |
< |
\end{itemize} |
60 |
< |
|
61 |
< |
\section{\label{sec:empiricalEnergy}The Empirical Energy Functions} |
57 |
> |
Having written {\sc oopse} we are implementing the concept of Open |
58 |
> |
Source dcevelopment, and releaseing our source code into the public |
59 |
> |
domain. It is our intent that by doing so, other researchers might |
60 |
> |
benefit from our work, and add their own contributions to the |
61 |
> |
package. The license under which {\sc oopse} is distributed allows any |
62 |
> |
researcher to download and modify the source code for their own |
63 |
> |
use. In this way further development of {\sc oopse} is not limited to |
64 |
> |
only the models of interest to ourselves, but also those of the |
65 |
> |
community of scientists who contribute back to the project. |
66 |
|
|
67 |
< |
\subsection{\label{sec:atomsMolecules}Atoms, Molecules and Rigid Bodies} |
67 |
> |
We have structured this chapter to first discuss the emperical energy |
68 |
> |
functions that {\sc oopse } implements in |
69 |
> |
Sec.~\ref{oopseSec:empericalEnergy}. Following that is a discusion of |
70 |
> |
the various input and output files associated with the package |
71 |
> |
(Sec.~\ref{oopseSec:IOfiles}). In Sec.~\ref{oopseSec:Mechanics} |
72 |
> |
elucidates the various Molecular Dynamics algorithms {\sc oopse} |
73 |
> |
mplements in the integration of the Newtonian equations of |
74 |
> |
motion. Basic analysis of the trajectories obtained from the |
75 |
> |
simulation is discussed in Sec.~\ref{oopseSec:props}. Program design |
76 |
> |
considerations as well as the software distribution license is |
77 |
> |
presented in Sec.~\ref{oopseSec:design}. And lastly, |
78 |
> |
Sec.~\ref{oopseSec:conclusion} concludes the chapter. |
79 |
|
|
80 |
+ |
\section{\label{oopseSec:empiricalEnergy}The Empirical Energy Functions} |
81 |
+ |
|
82 |
+ |
\subsection{\label{oopseSec:atomsMolecules}Atoms, Molecules and Rigid Bodies} |
83 |
+ |
|
84 |
|
The basic unit of an {\sc oopse} simulation is the atom. The |
85 |
|
parameters describing the atom are generalized to make the atom as |
86 |
|
flexible a representation as possible. They may represent specific |
89 |
|
directional components associated with them (\emph{e.g.}~permanent |
90 |
|
dipoles). Charges on atoms are not currently supported by {\sc oopse}. |
91 |
|
|
92 |
< |
\begin{lstlisting}[caption={[Specifier for molecules and atoms] A sample specification of the simple Ar molecule},label=sch:AtmMole] |
92 |
> |
\begin{lstlisting}[float,caption={[Specifier for molecules and atoms] A sample specification of the simple Ar molecule},label=sch:AtmMole] |
93 |
|
molecule{ |
94 |
|
name = "Ar"; |
95 |
|
nAtoms = 1; |
100 |
|
} |
101 |
|
\end{lstlisting} |
102 |
|
|
103 |
+ |
|
104 |
|
Atoms can be collected into secondary srtructures such as rigid bodies |
105 |
|
or molecules. The molecule is a way for {\sc oopse} to keep track of |
106 |
|
the atoms in a simulation in logical manner. Molecular units store the |
164 |
|
placements of the atoms relative to the origin of the rigid body, |
165 |
|
which itself has a position relative to the origin of the molecule. |
166 |
|
|
167 |
< |
\begin{lstlisting}[caption={[Defining rigid bodies]A sample definition of a rigid body},label={sch:rigidBody}] |
167 |
> |
\begin{lstlisting}[float,caption={[Defining rigid bodies]A sample definition of a rigid body},label={sch:rigidBody}] |
168 |
|
molecule{ |
169 |
|
name = "TIP3P_water"; |
170 |
|
nRigidBodies = 1; |
209 |
|
shows a system of 108 Ar particles simulated with the Lennard-Jones |
210 |
|
force field. |
211 |
|
|
212 |
< |
\begin{lstlisting}[caption={[Invocation of the Lennard-Jones force field] A sample system using the Lennard-Jones force field.},label={sch:LJFF}] |
212 |
> |
\begin{lstlisting}[float,caption={[Invocation of the Lennard-Jones force field] A sample system using the Lennard-Jones force field.},label={sch:LJFF}] |
213 |
|
|
214 |
|
/* |
215 |
|
* The Ar molecule is specified |
261 |
|
|
262 |
|
|
263 |
|
|
264 |
< |
\subsection{\label{sec:DUFF}Dipolar Unified-Atom Force Field} |
264 |
> |
\subsection{\label{oopseSec:DUFF}Dipolar Unified-Atom Force Field} |
265 |
|
|
266 |
|
The dipolar unified-atom force field ({\sc duff}) was developed to |
267 |
|
simulate lipid bilayers. The simulations require a model capable of |
290 |
|
\emph{et al.}\cite{liu96:new_model} |
291 |
|
|
292 |
|
\begin{figure} |
293 |
< |
\epsfxsize=\linewidth |
294 |
< |
\epsfbox{lipidModel.eps} |
293 |
> |
\centering |
294 |
> |
\includegraphics[width=\linewidth]{lipidModel.eps} |
295 |
|
\caption{A representation of the lipid model. $\phi$ is the torsion angle, $\theta$ % |
296 |
|
is the bend angle, $\mu$ is the dipole moment of the head group, and n |
297 |
|
is the chain length.} |
298 |
< |
\label{fig:lipidModel} |
298 |
> |
\label{oopseFig:lipidModel} |
299 |
|
\end{figure} |
300 |
|
|
301 |
|
We have used a set of scalable parameters to model the alkyl groups |
318 |
|
used when integrating the equations of motion. A simulation using {\sc |
319 |
|
duff} is illustrated in Scheme \ref{sch:DUFF}. |
320 |
|
|
321 |
< |
\begin{lstlisting}[caption={[Invocation of {\sc duff}]Sample \texttt{.bass} file showing a simulation utilizing {\sc duff}},label={sch:DUFF}] |
321 |
> |
\begin{lstlisting}[float,caption={[Invocation of {\sc duff}]Sample \texttt{.bass} file showing a simulation utilizing {\sc duff}},label={sch:DUFF}] |
322 |
|
|
323 |
|
#include "water.mdl" |
324 |
|
#include "lipid.mdl" |
340 |
|
|
341 |
|
\end{lstlisting} |
342 |
|
|
343 |
< |
\subsubsection{\label{subSec:energyFunctions}{\sc duff} Energy Functions} |
343 |
> |
\subsection{\label{oopseSec:energyFunctions}{\sc duff} Energy Functions} |
344 |
|
|
345 |
|
The total potential energy function in {\sc duff} is |
346 |
|
\begin{equation} |
533 |
|
density corrected SSD models can be found in reference |
534 |
|
\ref{Gezelter04}. |
535 |
|
|
536 |
< |
\begin{lstlisting}[caption={[A simulation of {\sc ssd} water]An example file showing a simulation including {\sc ssd} water.},label={sch:ssd}] |
536 |
> |
\begin{lstlisting}[float,caption={[A simulation of {\sc ssd} water]An example file showing a simulation including {\sc ssd} water.},label={sch:ssd}] |
537 |
|
|
538 |
|
#include "water.mdl" |
539 |
|
|
568 |
|
\end{lstlisting} |
569 |
|
|
570 |
|
|
571 |
< |
\subsection{\label{sec:eam}Embedded Atom Method} |
571 |
> |
\subsection{\label{oopseSec:eam}Embedded Atom Method} |
572 |
|
|
573 |
|
Several other molecular dynamics packages\cite{dynamo86} exist which have the |
574 |
|
capacity to simulate metallic systems, including some that have |
607 |
|
interactions. Foiles et al. fit EAM potentials for fcc metals Cu, Ag, Au, Ni, Pd, Pt and alloys of these metals\cite{FDB86}. These potential fits are in the DYNAMO 86 format and are included with {\sc oopse}. |
608 |
|
|
609 |
|
|
610 |
< |
\subsection{\label{Sec:pbc}Periodic Boundary Conditions} |
610 |
> |
\subsection{\label{oopseSec:pbc}Periodic Boundary Conditions} |
611 |
|
|
612 |
|
\newcommand{\roundme}{\operatorname{round}} |
613 |
|
|
650 |
|
\begin{equation} |
651 |
|
\roundme(x)=\left\{ |
652 |
|
\begin{array}{cc}% |
653 |
< |
\lfloor{x+0.5}\rfloor & \text{if \ }x\geqslant0\\ |
653 |
> |
\lfloor{x+0.5}\rfloor & \text{if \ }x\geqslant 0 \\ |
654 |
|
\lceil{x-0.5}\rceil & \text{otherwise}% |
655 |
|
\end{array} |
656 |
|
\right. |
667 |
|
\end{equation} |
668 |
|
|
669 |
|
|
670 |
< |
\section{Input and Output Files} |
670 |
> |
\section{\label{oopseSec:IOfiles}Input and Output Files} |
671 |
|
|
672 |
|
\subsection{{\sc bass} and Model Files} |
673 |
|
|
681 |
|
Fig.~\ref{fig:bassExample}. |
682 |
|
|
683 |
|
\begin{figure} |
662 |
– |
|
684 |
|
\centering |
685 |
|
\framebox[\linewidth]{\rule{0cm}{0.75\linewidth}I'm a {\sc bass} file!} |
686 |
|
\caption{Here is an example \texttt{.bass} file} |
700 |
|
molecular prototype once, then simply include it into each simulation |
701 |
|
containing that molecule. |
702 |
|
|
703 |
< |
\subsection{\label{subSec:coordFiles}Coordinate Files} |
703 |
> |
\subsection{\label{oopseSec:coordFiles}Coordinate Files} |
704 |
|
|
705 |
|
The standard format for storage of a systems coordinates is a modified |
706 |
|
xyz-file syntax, the exact details of which can be seen in |
752 |
|
the integrator. The statistics file is denoted with the \texttt{.stat} |
753 |
|
file extension. |
754 |
|
|
755 |
< |
\section{\label{sec:mechanics}Mechanics} |
755 |
> |
\section{\label{oopseSec:mechanics}Mechanics} |
756 |
|
|
757 |
|
\subsection{\label{integrate}Integrating the Equations of Motion: the Symplectic Step Integrator} |
758 |
|
|
794 |
|
\ref{timestep}. |
795 |
|
|
796 |
|
\begin{figure} |
797 |
< |
\epsfxsize=6in |
798 |
< |
\epsfbox{timeStep.epsi} |
797 |
> |
\centering |
798 |
> |
\includegraphics[width=\linewidth]{timeStep.eps} |
799 |
|
\caption{Energy conservation using quaternion based integration versus |
800 |
|
the symplectic step method proposed by Dullweber \emph{et al.} with |
801 |
|
increasing time step. For each time step, the dotted line is total |
873 |
|
\begin{equation} |
874 |
|
\xi(z,t)=\langle\delta F(z,t)\delta F(z,0)\rangle/k_{B}T |
875 |
|
\end{equation} |
855 |
– |
|
856 |
– |
|
876 |
|
where% |
877 |
|
\begin{equation} |
878 |
|
\delta F(z,t)=F(z,t)-\langle F(z,t)\rangle |
927 |
|
Worthy of mention, other kinds of potential functions can also be used to |
928 |
|
drive the z-constraint molecule. |
929 |
|
|
930 |
< |
\section{\label{sec:analysis}Trajectory Analysis} |
930 |
> |
\section{\label{oopseSec:props}Trajectory Analysis} |
931 |
|
|
932 |
< |
\subsection{\label{subSec:staticProps}Static Property Analysis} |
932 |
> |
\subsection{\label{oopseSec:staticProps}Static Property Analysis} |
933 |
|
|
934 |
|
The static properties of the trajectories are analyzed with the |
935 |
|
program \texttt{staticProps}. The code is capable of calculating the following |
1062 |
|
multiple reads on the same file. |
1063 |
|
|
1064 |
|
\begin{figure} |
1065 |
< |
\epsfxsize=6in |
1066 |
< |
\epsfbox{dynamicPropsMem.eps} |
1065 |
> |
\centering |
1066 |
> |
\includegraphics[width=\linewidth]{dynamicPropsMem.eps} |
1067 |
|
\caption{This diagram illustrates the dynamic memory allocation used by \texttt{dynamicProps}, which follows the scheme: $\sum^{N_{\text{memory blocks}}}_{i=1}[ \operatorname{self}(i) + \sum^{N_{\text{memory blocks}}}_{j>i} \operatorname{cross}(i,j)]$. The shaded region represents the self correlation of the memory block, and the open blocks are read one at a time and the cross correlations between blocks are calculated.} |
1068 |
|
\label{fig:dynamicPropsMemory} |
1069 |
|
\end{figure} |
1070 |
|
|
1071 |
< |
\section{\label{sec:ProgramDesign}Program Design} |
1071 |
> |
\section{\label{oopseSec:design}Program Design} |
1072 |
|
|
1073 |
|
\subsection{\label{sec:architecture} OOPSE Architecture} |
1074 |
|
|
1077 |
|
developed around the parseing engine and {\texttt libmdtools} is the |
1078 |
|
software library developed around the simulation engine. |
1079 |
|
|
1061 |
– |
|
1062 |
– |
|
1063 |
– |
\subsection{\label{sec:programLang} Programming Languages } |
1064 |
– |
|
1080 |
|
\subsection{\label{sec:parallelization} Parallelization of OOPSE} |
1081 |
|
|
1082 |
|
Although processor power is doubling roughly every 18 months according |
1123 |
|
favorably then spatial decomposition up to 10,000 atoms and favorably |
1124 |
|
competes with spatial methods for up to 100,000 atoms. |
1125 |
|
|
1111 |
– |
\subsection{\label{sec:memory}Memory Allocation in Analysis} |
1112 |
– |
|
1113 |
– |
\subsection{\label{sec:documentation}Documentation} |
1114 |
– |
|
1126 |
|
\subsection{\label{openSource}Open Source and Distribution License} |
1127 |
|
|
1128 |
|
|
1129 |
< |
\section{\label{sec:conclusion}Conclusion} |
1129 |
> |
\section{\label{oopseSec:conclusion}Conclusion} |
1130 |
|
|
1131 |
|
\begin{itemize} |
1132 |
|
|
1145 |
|
\item How well does it meet the primary goal |
1146 |
|
|
1147 |
|
\end{itemize} |
1137 |
– |
\section{Acknowledgments} |
1138 |
– |
The authors would like to thank espresso for fueling this work, and |
1139 |
– |
would also like to send a special acknowledgement to single malt |
1140 |
– |
scotch for its wonderful calming effects and its ability to make the |
1141 |
– |
troubles of the world float away. |
1142 |
– |
\bibliographystyle{achemso} |
1143 |
– |
|
1144 |
– |
\bibliography{oopse} |
1145 |
– |
|
1146 |
– |
\end{document} |