ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mattDisertation/oopse.tex
(Generate patch)

Comparing trunk/mattDisertation/oopse.tex (file contents):
Revision 1044 by mmeineke, Mon Feb 9 21:44:01 2004 UTC vs.
Revision 1051 by mmeineke, Fri Feb 13 21:24:07 2004 UTC

# Line 1 | Line 1
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
# Line 68 | Line 89 | dipoles). Charges on atoms are not currently supported
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;
# Line 79 | Line 100 | molecule{
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
# Line 142 | Line 164 | which itself has a position relative to the origin of
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;
# Line 187 | Line 209 | force field.
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
# Line 239 | Line 261 | and
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
# Line 268 | Line 290 | reparameterization of the soft sticky dipole (SSD) mod
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
# Line 296 | Line 318 | duff} is illustrated in Scheme \ref{sch:DUFF}.
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"
# Line 318 | Line 340 | forceField = "DUFF";
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}
# Line 511 | Line 533 | density corrected SSD models can be found in reference
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  
# Line 546 | Line 568 | electrostaticSkinThickness = 1.38;
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
# Line 585 | Line 607 | interactions. Foiles et al. fit EAM potentials for fcc
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  
# Line 628 | Line 650 | where
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.
# Line 645 | Line 667 | transforming back to real space,%
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  
# Line 659 | Line 681 | Fig.~\ref{fig:bassExample}.
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}
# Line 679 | Line 700 | containing that molecule.
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
# Line 731 | Line 752 | file extension.
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  
# Line 773 | Line 794 | energy conservation of the two methods as illustrated
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
# Line 852 | Line 873 | from the deviation of the instaneous force from its me
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
# Line 908 | Line 927 | drive the z-constraint molecule.
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
# Line 1043 | Line 1062 | multiple reads on the same file.  
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  
# Line 1058 | Line 1077 | software library developed around the simulation engin
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
# Line 1108 | Line 1123 | competes with spatial methods for up to 100,000 atoms.
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          
# Line 1134 | Line 1145 | competes with spatial methods for up to 100,000 atoms.
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}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines