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