1 |
|
\appendix |
2 |
|
\chapter{\label{chapt:oopse}Object-Oriented Parallel Simulation Engine} |
3 |
|
|
4 |
< |
Designing object-oriented software is hard, and designing reusable |
5 |
< |
object-oriented scientific software is even harder. Absence of |
6 |
< |
applying modern software development practices is the bottleneck of |
7 |
< |
Scientific Computing community\cite{Wilson2006}. For instance, in |
4 |
> |
Absence of applying modern software development practices is the |
5 |
> |
bottleneck of Scientific Computing community\cite{Wilson2006}. In |
6 |
|
the last 20 years , there are quite a few MD packages that were |
7 |
|
developed to solve common MD problems and perform robust simulations |
8 |
|
. However, many of the codes are legacy programs that are either |
62 |
|
program of the package, \texttt{oopse} and it corresponding parallel |
63 |
|
version \texttt{oopse\_MPI}, as well as other useful utilities, such |
64 |
|
as \texttt{StatProps} (see Sec.~\ref{appendixSection:StaticProps}), |
65 |
< |
\texttt{DynamicProps} (see |
66 |
< |
Sec.~\ref{appendixSection:appendixSection:DynamicProps}), |
67 |
< |
\texttt{Dump2XYZ} (see |
70 |
< |
Sec.~\ref{appendixSection:appendixSection:Dump2XYZ}), \texttt{Hydro} |
71 |
< |
(see Sec.~\ref{appendixSection:appendixSection:hydrodynamics}) |
65 |
> |
\texttt{DynamicProps} (see Sec.~\ref{appendixSection:DynamicProps}), |
66 |
> |
\texttt{Dump2XYZ} (see Sec.~\ref{appendixSection:Dump2XYZ}), |
67 |
> |
\texttt{Hydro} (see Sec.~\ref{appendixSection:hydrodynamics}) |
68 |
|
\textit{etc}. |
69 |
|
|
70 |
|
\begin{figure} |
109 |
|
As one of the latest advanced techniques emerged from |
110 |
|
object-oriented community, design patterns were applied in some of |
111 |
|
the modern scientific software applications, such as JMol, {\sc |
112 |
< |
OOPSE}\cite{Meineke05} and PROTOMOL\cite{Matthey05} \textit{etc}. |
113 |
< |
The following sections enumerates some of the patterns used in {\sc |
114 |
< |
OOPSE}. |
112 |
> |
OOPSE}\cite{Meineke2005} and PROTOMOL\cite{Matthey2005} |
113 |
> |
\textit{etc}. The following sections enumerates some of the patterns |
114 |
> |
used in {\sc OOPSE}. |
115 |
|
|
116 |
|
\subsection{\label{appendixSection:singleton}Singleton} |
117 |
|
|
252 |
|
diagram of Visitor patten.} \label{appendixFig:visitorUML} |
253 |
|
\end{figure} |
254 |
|
|
255 |
< |
%\begin{figure} |
256 |
< |
%\centering |
257 |
< |
%\includegraphics[width=\linewidth]{hierarchy.eps} |
258 |
< |
%\caption[Class hierarchy for ojects in {\sc OOPSE}]{ A diagram of |
259 |
< |
%the class hierarchy. |
260 |
< |
%\begin{itemize} |
265 |
< |
%\item A {\bf StuntDouble} is {\it any} object that can be manipulated by the |
266 |
< |
%integrators and minimizers. |
267 |
< |
%\item An {\bf Atom} is a fundamental point-particle that can be moved around during a simulation. |
268 |
< |
%\item A {\bf DirectionalAtom} is an atom which has {\it orientational} as well as translational degrees of freedom. |
269 |
< |
%\item A {\bf RigidBody} is a collection of {\bf Atom}s or {\bf |
270 |
< |
%DirectionalAtom}s which behaves as a single unit. |
271 |
< |
%\end{itemize} |
272 |
< |
%} \label{oopseFig:hierarchy} |
273 |
< |
%\end{figure} |
255 |
> |
\begin{figure} |
256 |
> |
\centering |
257 |
> |
\includegraphics[width=\linewidth]{hierarchy.eps} |
258 |
> |
\caption[Class hierarchy for ojects in {\sc OOPSE}]{ A diagram of |
259 |
> |
the class hierarchy. } \label{oopseFig:hierarchy} |
260 |
> |
\end{figure} |
261 |
|
|
262 |
|
\begin{lstlisting}[float,caption={[The implementation of Visitor pattern (II)]Source code of the element classes.},label={appendixScheme:element}] |
263 |
|
|
361 |
|
on the specifics of the simulation). The names of rigid bodies are |
362 |
|
generated automatically. For example, the name of the first rigid |
363 |
|
body in a DMPC molecule is DMPC\_RB\_0. |
364 |
+ |
\begin{itemize} |
365 |
+ |
\item A {\bf StuntDouble} is {\it any} object that can be manipulated by the |
366 |
+ |
integrators and minimizers. |
367 |
+ |
\item An {\bf Atom} is a fundamental point-particle that can be moved around during a simulation. |
368 |
+ |
\item A {\bf DirectionalAtom} is an atom which has {\it orientational} as well as translational degrees of freedom. |
369 |
+ |
\item A {\bf RigidBody} is a collection of {\bf Atom}s or {\bf |
370 |
+ |
DirectionalAtom}s which behaves as a single unit. |
371 |
+ |
\end{itemize} |
372 |
|
|
373 |
|
\section{\label{appendixSection:syntax}Syntax of the Select Command} |
374 |
|
|