--- trunk/tengDissertation/Appendix.tex 2006/04/24 18:49:32 2730 +++ trunk/tengDissertation/Appendix.tex 2006/06/07 02:49:09 2813 @@ -1,10 +1,11 @@ -\chapter{\label{chapt:appendix}APPENDIX} +\appendix +\chapter{\label{chapt:oopse}Object-Oriented Parallel Simulation Engine (OOPSE)} Designing object-oriented software is hard, and designing reusable object-oriented scientific software is even harder. Absence of applying modern software development practices is the bottleneck of -Scientific Computing community\cite{wilson}. For instance, in the -last 20 years , there are quite a few MD packages that were +Scientific Computing community\cite{Wilson2006}. For instance, in +the last 20 years , there are quite a few MD packages that were developed to solve common MD problems and perform robust simulations . However, many of the codes are legacy programs that are either poorly organized or extremely complex. Usually, these packages were @@ -14,19 +15,29 @@ documents which is crucial to the maintenance and exte most MD programs also suffer from missing design and implement documents which is crucial to the maintenance and extensibility. +\section{\label{appendixSection:architecture }Architecture} + +\begin{figure} +\centering +\includegraphics[width=\linewidth]{architecture.eps} +\caption[The architecture of {\sc oopse}-3.0] {The architecture of +{\sc oopse}-3.0.} \label{appendixFig:architecture} +\end{figure} + \section{\label{appendixSection:desginPattern}Design Pattern} Design patterns are optimal solutions to commonly-occurring problems in software design. Although originated as an architectural concept -for buildings and towns by Christopher Alexander \cite{alexander}, -software patterns first became popular with the wide acceptance of -the book, Design Patterns: Elements of Reusable Object-Oriented -Software \cite{gamma94}. Patterns reflect the experience, knowledge -and insights of developers who have successfully used these patterns -in their own work. Patterns are reusable. They provide a ready-made -solution that can be adapted to different problems as necessary. -Pattern are expressive. they provide a common vocabulary of -solutions that can express large solutions succinctly. +for buildings and towns by Christopher Alexander +\cite{Alexander1987}, software patterns first became popular with +the wide acceptance of the book, Design Patterns: Elements of +Reusable Object-Oriented Software \cite{Gamma1994}. Patterns reflect +the experience, knowledge and insights of developers who have +successfully used these patterns in their own work. Patterns are +reusable. They provide a ready-made solution that can be adapted to +different problems as necessary. Pattern are expressive. they +provide a common vocabulary of solutions that can express large +solutions succinctly. Patterns are usually described using a format that includes the following information: @@ -74,8 +85,6 @@ that you are operating on. \subsection{\label{appendixSection:templateMethod}Template Method} -\section{\label{appendixSection:analysisFramework}Analysis Framework} - \section{\label{appendixSection:concepts}Concepts} OOPSE manipulates both traditional atoms as well as some objects @@ -83,14 +92,14 @@ freedom. Here is a diagram of the class heirarchy: collections of atoms or atoms which have orientational degrees of freedom. Here is a diagram of the class heirarchy: -\begin{figure} -\centering -\includegraphics[width=3in]{heirarchy.pdf} -\caption[Class heirarchy for StuntDoubles in {\sc oopse}-3.0]{ \\ -The class heirarchy of StuntDoubles in {\sc oopse}-3.0. The -selection syntax allows the user to select any of the objects that -are descended from a StuntDouble.} \label{oopseFig:heirarchy} -\end{figure} +%\begin{figure} +%\centering +%\includegraphics[width=3in]{heirarchy.eps} +%\caption[Class heirarchy for StuntDoubles in {\sc oopse}-3.0]{ \\ +%The class heirarchy of StuntDoubles in {\sc oopse}-3.0. The +%selection syntax allows the user to select any of the objects that +%are descended from a StuntDouble.} \label{oopseFig:heirarchy} +%\end{figure} \begin{itemize} \item A {\bf StuntDouble} is {\it any} object that can be manipulated by the @@ -143,7 +152,7 @@ not & ``!'' \\ \subsection{\label{appendixSection:name}Name expressions} \begin{center} -\begin{tabular}{|llp{3in}|} +\begin{tabular}{|llp{2in}|} \hline {\bf type of expression} & {\bf examples} & {\bf translation of examples} \\ @@ -227,7 +236,7 @@ wouldselect StuntDoubles which have mass greater than \end{center} For example, the phrase {\tt select mass > 16.0 and charge < -2} -wouldselect StuntDoubles which have mass greater than 16.0 and +would select StuntDoubles which have mass greater than 16.0 and charges less than -2. \subsection{\label{appendixSection:within}Within expressions} @@ -241,43 +250,9 @@ atoms. select all StuntDoubles which are within 2.5 angstroms of PO4 or NC4 atoms. -\section{\label{appendixSection:tools}Tools which use the selection command} -\subsection{\label{appendixSection:Dump2XYZ}Dump2XYZ} - -Dump2XYZ can transform an OOPSE dump file into a xyz file which can -be opened by other molecular dynamics viewers such as Jmol and VMD. -The options available for Dump2XYZ are as follows: - - -\begin{longtable}[c]{|EFG|} -\caption{Dump2XYZ Command-line Options} -\\ \hline -{\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline -\endhead -\hline -\endfoot - -h & {\tt -{}-help} & Print help and exit \\ - -V & {\tt -{}-version} & Print version and exit \\ - -i & {\tt -{}-input=filename} & input dump file \\ - -o & {\tt -{}-output=filename} & output file name \\ - -n & {\tt -{}-frame=INT} & print every n frame (default=`1') \\ - -w & {\tt -{}-water} & skip the the waters (default=off) \\ - -m & {\tt -{}-periodicBox} & map to the periodic box (default=off)\\ - -z & {\tt -{}-zconstraint} & replace the atom types of zconstraint molecules (default=off) \\ - -r & {\tt -{}-rigidbody} & add a pseudo COM atom to rigidbody (default=off) \\ - -t & {\tt -{}-watertype} & replace the atom type of water model (default=on) \\ - -b & {\tt -{}-basetype} & using base atom type (default=off) \\ - & {\tt -{}-repeatX=INT} & The number of images to repeat in the x direction (default=`0') \\ - & {\tt -{}-repeatY=INT} & The number of images to repeat in the y direction (default=`0') \\ - & {\tt -{}-repeatZ=INT} & The number of images to repeat in the z direction (default=`0') \\ - -s & {\tt -{}-selection=selection script} & By specifying {\tt -{}-selection}=``selection command'' with Dump2XYZ, the user can select an arbitrary set of StuntDoubles to be -converted. \\ - & {\tt -{}-originsele} & By specifying {\tt -{}-originsele}=``selection command'' with Dump2XYZ, the user can re-center the origin of the system around a specific StuntDouble \\ - & {\tt -{}-refsele} & In order to rotate the system, {\tt -{}-originsele} and {\tt -{}-refsele} must be given to define the new coordinate set. A StuntDouble which contains a dipole (the direction of the dipole is always (0, 0, 1) in body frame) is specified by {\tt -{}-originsele}. The new x-z plane is defined by the direction of the dipole and the StuntDouble is specified by {\tt -{}-refsele}. -\end{longtable} +\section{\label{appendixSection:analysisFramework}Analysis Framework} - \subsection{\label{appendixSection:StaticProps}StaticProps} {\tt StaticProps} can compute properties which are averaged over @@ -336,7 +311,7 @@ distribution functions are most easily seen in the fig \begin{figure} \centering -\includegraphics[width=3in]{definition.pdf} +\includegraphics[width=3in]{definition.eps} \caption[Definitions of the angles between directional objects]{ \\ Any two directional objects (DirectionalAtoms and RigidBodies) have a set of two angles ($\theta$, and $\omega$) between the z-axes of @@ -353,19 +328,19 @@ The options available for {\tt StaticProps} are as fol \endfoot -h& {\tt -{}-help} & Print help and exit \\ -V& {\tt -{}-version} & Print version and exit \\ - -i& {\tt -{}-input=filename} & input dump file \\ - -o& {\tt -{}-output=filename} & output file name \\ - -n& {\tt -{}-step=INT} & process every n frame (default=`1') \\ - -r& {\tt -{}-nrbins=INT} & number of bins for distance (default=`100') \\ - -a& {\tt -{}-nanglebins=INT} & number of bins for cos(angle) (default= `50') \\ - -l& {\tt -{}-length=DOUBLE} & maximum length (Defaults to 1/2 smallest length of first frame) \\ - & {\tt -{}-sele1=selection script} & select the first StuntDouble set \\ - & {\tt -{}-sele2=selection script} & select the second StuntDouble set \\ - & {\tt -{}-sele3=selection script} & select the third StuntDouble set \\ - & {\tt -{}-refsele=selection script} & select reference (can only be used with {\tt -{}-gxyz}) \\ - & {\tt -{}-molname=STRING} & molecule name \\ - & {\tt -{}-begin=INT} & begin internal index \\ - & {\tt -{}-end=INT} & end internal index \\ + -i& {\tt -{}-input} & input dump file \\ + -o& {\tt -{}-output} & output file name \\ + -n& {\tt -{}-step} & process every n frame (default=`1') \\ + -r& {\tt -{}-nrbins} & number of bins for distance (default=`100') \\ + -a& {\tt -{}-nanglebins} & number of bins for cos(angle) (default= `50') \\ + -l& {\tt -{}-length} & maximum length (Defaults to 1/2 smallest length of first frame) \\ + & {\tt -{}-sele1} & select the first StuntDouble set \\ + & {\tt -{}-sele2} & select the second StuntDouble set \\ + & {\tt -{}-sele3} & select the third StuntDouble set \\ + & {\tt -{}-refsele} & select reference (can only be used with {\tt -{}-gxyz}) \\ + & {\tt -{}-molname} & molecule name \\ + & {\tt -{}-begin} & begin internal index \\ + & {\tt -{}-end} & end internal index \\ \hline \multicolumn{3}{|l|}{One option from the following group of options is required:} \\ \hline @@ -414,10 +389,10 @@ The options available for DynamicProps are as follows: \endfoot -h& {\tt -{}-help} & Print help and exit \\ -V& {\tt -{}-version} & Print version and exit \\ - -i& {\tt -{}-input=filename} & input dump file \\ - -o& {\tt -{}-output=filename} & output file name \\ - & {\tt -{}-sele1=selection script} & select first StuntDouble set \\ - & {\tt -{}-sele2=selection script} & select second StuntDouble set (if sele2 is not set, use script from sele1) \\ + -i& {\tt -{}-input} & input dump file \\ + -o& {\tt -{}-output} & output file name \\ + & {\tt -{}-sele1} & select first StuntDouble set \\ + & {\tt -{}-sele2} & select second StuntDouble set (if sele2 is not set, use script from sele1) \\ \hline \multicolumn{3}{|l|}{One option from the following group of options is required:} \\ \hline @@ -426,4 +401,55 @@ The options available for DynamicProps are as follows: -d& {\tt -{}-dcorr} & compute dipole correlation function \end{longtable} +\section{\label{appendixSection:tools}Other Useful Utilities} + +\subsection{\label{appendixSection:Dump2XYZ}Dump2XYZ} + +Dump2XYZ can transform an OOPSE dump file into a xyz file which can +be opened by other molecular dynamics viewers such as Jmol and VMD. +The options available for Dump2XYZ are as follows: + + +\begin{longtable}[c]{|EFG|} +\caption{Dump2XYZ Command-line Options} +\\ \hline +{\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline +\endhead +\hline +\endfoot + -h & {\tt -{}-help} & Print help and exit \\ + -V & {\tt -{}-version} & Print version and exit \\ + -i & {\tt -{}-input} & input dump file \\ + -o & {\tt -{}-output} & output file name \\ + -n & {\tt -{}-frame} & print every n frame (default=`1') \\ + -w & {\tt -{}-water} & skip the the waters (default=off) \\ + -m & {\tt -{}-periodicBox} & map to the periodic box (default=off)\\ + -z & {\tt -{}-zconstraint} & replace the atom types of zconstraint molecules (default=off) \\ + -r & {\tt -{}-rigidbody} & add a pseudo COM atom to rigidbody (default=off) \\ + -t & {\tt -{}-watertype} & replace the atom type of water model (default=on) \\ + -b & {\tt -{}-basetype} & using base atom type (default=off) \\ + & {\tt -{}-repeatX} & The number of images to repeat in the x direction (default=`0') \\ + & {\tt -{}-repeatY} & The number of images to repeat in the y direction (default=`0') \\ + & {\tt -{}-repeatZ} & The number of images to repeat in the z direction (default=`0') \\ + -s & {\tt -{}-selection} & By specifying {\tt -{}-selection}=``selection command'' with Dump2XYZ, the user can select an arbitrary set of StuntDoubles to be +converted. \\ + & {\tt -{}-originsele} & By specifying {\tt -{}-originsele}=``selection command'' with Dump2XYZ, the user can re-center the origin of the system around a specific StuntDouble \\ + & {\tt -{}-refsele} & In order to rotate the system, {\tt -{}-originsele} and {\tt -{}-refsele} must be given to define the new coordinate set. A StuntDouble which contains a dipole (the direction of the dipole is always (0, 0, 1) in body frame) is specified by {\tt -{}-originsele}. The new x-z plane is defined by the direction of the dipole and the StuntDouble is specified by {\tt -{}-refsele}. +\end{longtable} + \subsection{\label{appendixSection:hydrodynamics}Hydrodynamics} + +\begin{longtable}[c]{|EFG|} +\caption{Hydrodynamics Command-line Options} +\\ \hline +{\bf option} & {\bf verbose option} & {\bf behavior} \\ \hline +\endhead +\hline +\endfoot + -h & {\tt -{}-help} & Print help and exit \\ + -V & {\tt -{}-version} & Print version and exit \\ + -i & {\tt -{}-input} & input dump file \\ + -o & {\tt -{}-output} & output file prefix (default=`hydro') \\ + -b & {\tt -{}-beads} & generate the beads only, hydrodynamics calculation will not be performed (default=off)\\ + & {\tt -{}-model} & hydrodynamics model (support ``AnalyticalModel'', ``RoughShell'' and ``BeadModel'') \\ +\end{longtable}