| 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 |
– |
\section{\label{sec:intro}Introduction} |
| 17 |
|
|
| 18 |
< |
\begin{itemize} |
| 18 |
> |
\section{\label{oopseSec:foreword}Foreword} |
| 19 |
|
|
| 20 |
< |
\item Need for package / Niche to fill |
| 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 |
< |
\item Design Goal |
| 30 |
> |
{\sc give final breakdown of who wrote which section here.} |
| 31 |
|
|
| 32 |
< |
\item Open Source |
| 32 |
> |
\section{\label{sec:intro}Introduction} |
| 33 |
|
|
| 34 |
< |
\item Discussion of Paper Layout |
| 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 |
< |
\end{itemize} |
| 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 |
< |
\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 |
| 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 |
| 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} |
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 873 |
|
\begin{equation} |
| 874 |
|
\xi(z,t)=\langle\delta F(z,t)\delta F(z,0)\rangle/k_{B}T |
| 875 |
|
\end{equation} |
| 827 |
– |
|
| 828 |
– |
|
| 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 |
| 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 |
|
|
| 1033 |
– |
|
| 1034 |
– |
|
| 1035 |
– |
\subsection{\label{sec:programLang} Programming Languages } |
| 1036 |
– |
|
| 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 |
|
|
| 1083 |
– |
\subsection{\label{sec:memory}Memory Allocation in Analysis} |
| 1084 |
– |
|
| 1085 |
– |
\subsection{\label{sec:documentation}Documentation} |
| 1086 |
– |
|
| 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 |
|
|