diff options
Diffstat (limited to 'doc/mclachlan.tex')
-rw-r--r-- | doc/mclachlan.tex | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/doc/mclachlan.tex b/doc/mclachlan.tex new file mode 100644 index 0000000..1f2db47 --- /dev/null +++ b/doc/mclachlan.tex @@ -0,0 +1,332 @@ +\documentclass[11pt, tightenlines]{revtex4} + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{color} +\usepackage{float} +\usepackage{graphicx} +\usepackage[latin9]{inputenc} +\usepackage{url} + +% Put this package last +\usepackage[bookmarks, bookmarksopen, bookmarksnumbered]{hyperref} +% Put this package after hyperref +\usepackage[all]{hypcap} +% Don't use tt font for urls +\urlstyle{rm} + +% Make a comment stand out visually +\newcommand{\todo}[1]{{\color{blue}$\blacksquare$~\textsf{[TODO: #1]}}} +% Name of a code +\newcommand{\code}[1]{\texttt{#1}} + +\hyphenation{Cac-tus-Ein-stein Schwarz-schild South-amp-ton} +\sloppypar + +\begin{document} + + + +\title{McLachlan} +\date{August 18, 2009} + +\author{Erik Schnetter} +\address{Center for Computation \& Technology, Louisiana State + University, USA} +\homepage{http://www.cct.lsu.edu/~eschnett/McLachlan/} +\email{schnetter@cct.lsu.edu} + +\begin{abstract} + McLachlan is a free Einstein solver that uses the Cactus framework + and the Einstein toolkit. This document describes the basic + features of the code, and also how to obtain, build, and use the + code. +\end{abstract} + +\maketitle + + + +\section{McLachlan} + +McLachlan is a free Einstein solver that uses the Cactus framework and +the Einstein toolkit. McLachlan was developed by Erik Schnetter and +Peter Diener with the help of Jian Tao and Ian Hinder. It was first +described in \cite{ES-Brown2007b}, where (to our knowledge) the first +fully fourth order accurate black hole evolution with adaptive mesh +refinement is presented. The McLachlan web pages are located at +\cite{ES-mclachlanweb}. + + + +% \section{Formulation} +% +% \todo{To be written. BSSN equations, time evolution, constraints.} + + + +% \section{Automated Code Generation} +% +% \todo{To be written. Kranc. Modifying the equations.} + + + +\section{Obtaining McLachlan} + +McLachlan uses the Cactus Software Framework and the Einstein Toolkit. +Cactus organises applications into \emph{thorns} (modules) that can be +maintained independently of each other. In order to use McLachlan, it +is necessary to obtain Cactus as well as a set of supporting thorns. + +The subsections below describe how to obtain Cactus and other +necessary thorns. McLachlan contains also a shell script +\code{checkout.sh} that attempts to automate this. However, this +script is very basic and does not handle errors well. + +\subsection{Tools} + +Cactus thorns are ususall stored in \emph{repositories} that are +managed by version control systems such as CVS \cite{cvsweb}, SVN +(subversion) \cite{svnweb}, or git \cite{gitweb}. + +Before getting the code, you will need to install the following +software on your local system: +\begin{enumerate} +\item wget (or curl) +\item CVS +\item SVN +\item git +\item Perl +\end{enumerate} +These are standard packages, and they should be easily available for +all Linux systems. + +\subsection{Cactus} +\label{sec:cactus} + +Cactus \cite{Goodale02a, ES-cactusweb} is a software framework that +makes it possible to maintain parts of applications independent of +each other, and combine them into an efficient code when building the +application. Cactus is described at \url{http://www.cactuscode.org/}, +and a new version of the of Cactus web site is currently being +prepared at \url{http://preview.cactuscode.org/download/}. + +To obtain Cactus itself as well as a set of basic thorns, follow the +instructions at \url{http://preview.cactuscode.org/download/}. +(Additional thorns specific to numerical relativity are also located +elsewhere.) Don't use a particular thorn list for this; instead, +download all the basic thorn that Cactus offers. + +For reference, here is a brief overview over the commands to do this: +\begin{enumerate} +\item\verb+wget http://preview.cactuscode.org/download/GetCactus+ +\item\verb-chmod a+x GetCactus- +\item\verb+./GetCactus+ + + This checks out Cactus itself (the \emph{flesh}) into a new + subdirectory \code{Cactus}. Use the default answer for all + questions. +\item\verb+cd Cactus+ +\item\verb+gmake checkout+ + + This checks out some arrangements with basic thorns for Cactus, + including the important CactusEinstein arrangement. Again, use the + default answer for all questions, except when you are asked for the + second time whetyer you want to quit. In this case, quit. +\end{enumerate} + +\subsection{Carpet} + +Carpet \cite{ES-Schnetter2003b, ES-Schnetter2006a, ES-carpetweb} is a +\emph{driver} for Cactus. A driver manages memory, handles +parallelism, and performs I/O on behalf of the application. Carpet +supports adaptive mesh refinement (AMR) and multi-block methods. +Carpet is described at \url{http://www.carpetcode.org/}. + +To obtain Carpet, follow the instructions at +\url{http://www.carpetcode.org/get-carpet.html}. Please check out the +\emph{Development Version}, which is currently quite stable. (We are +planning to release a new stable version soon.) + +In particular, the commands to obtain the development version are: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+git clone -o carpet git://carpetcode.dyndns.org/carpet.git+ +\item\verb+cd arrangements+ +\item\verb+ln -s ../carpet/Carpet* .+ +\end{enumerate} +(Don't miss the dot after the \verb+Carpet*+ in the last line.) Note +that Carpet should be checked out into the main Cactus directory, and +the \code{arrangements} subdirectory needs to contain symbolic links +pointing into the \code{carpet} directory. + +\subsection{McLachlan} + +McLachlan \cite{ES-Brown2007b, ES-mclachlanweb} in an Einstein solver. +It uses one of the BSSN formulations of the Einstein equations. +McLachlan is described at +\url{http://www.cct.lsu.edu/~eschnett/McLachlan/}, which is where you +may have obtained this documentation. + +To obtain McLachlan, issue the following commands: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+cd arrangements+ +\item\verb+git clone git://carpetcode.dyndns.org/McLachlan.git+ +\end{enumerate} +Note that McLachlan needs to be checked out directly into the +\code{arrangements} subdirectory. + +McLachlan uses the Kranc code generation package \cite{kranc04, + Husa:2004ip, krancweb, ES-krancweb}. Kranc also contains some +thorns that McLachlan needs. (However, it is not necessary to run +Kranc in order to use McLachlan. It is only necessary to run Kranc if +McLachlan is modified.) + +To obtain Kranc, issue the following commands: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+git clone http://www.aei.mpg.de/~ianhin/kranc.git+ +\item\verb+cd arrangements+ +\item\verb+ln -s ../kranc/Auxiliary/Cactus/KrancNumericalTools .+ +\end{enumerate} +(Don't miss the dot at the end of the last line.) Note that Kranc +needs to be check out into the main Cactus directory, and the +\code{arrangements} subdirectory needs to contain symbolic links +pointing into the \code{kranc} directory. + +\subsection{Other Thorns} + +All other thorns, including the public Whisky thorns, can be obtained +via the GetCactus script that was downloaded above (see section +\ref{sec:cactus}): + +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+cd ..+ +\item\verb+./GetCactus qc0-mclachlan-public.th+ + + Use the default answer for all questions. +\end{enumerate} + +\subsection{Consistency Check} + +The \emph{thorn list} \code{qc0-mclachlan-public.th} lists the thorns +that are necessary for a simple spacetime evolution. The thorns are +grouped into arrangements. All thorns listed in this file must now be +present in the \code{arrangements} subdirectory of the main Cactus +directory. + + + +\section{Building McLachlan} + +Building McLachlan and the other thorns requires C, C++, and Fortran +90 compilers, MPI, as well as the BLAS, GSL, HDF5, and LAPACK +libraries. + +\subsection{Documentation} + +It is best to begin building Cactus with building documentation: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+make UsersGuide+ +\end{enumerate} +This creates the users' guide as \code{doc/UsersGuid.pdf}. + +All Cactus commands are listed with +\begin{enumerate} +\item\verb+make help+ +\end{enumerate} + +\subsection{Option List} + +To build a Cactus application one needs to create an \emph{options + list}. This is a text file containing the configuration options +that tell Cactus what compilers and compiler options to use, and where +MPI and the auxiliary libraries are installed. This process is very +specific to each machine and may require some trial and error. + +We distribute options lists for a range of machines that we are using +on the Cactus web site at +\url{http://preview.cactuscode.org/download/configfiles/}. Option +lists are also available together with the Simulation Factory +\cite{ES-simfactoryweb} at +\url{https://svn.cct.lsu.edu/repos/numrel/simfactory/optionlists/}. + +\subsection{Building} + +To build a Cactus application one starts with an option list and a +thorn list. The text below assumes that you have an option list +called \code{einstein-redshift-gcc.cfg}. + +To configure an application +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+make sim-config options=einstein-redshift-gcc.cfg \+\\ + \verb+THORNLIST=qc0-mclachlan-public.th+ +\item\verb+make sim+ +\end{enumerate} +This is necessary only once, or when the configuration options change. +This will create an application called \code{sim}; of course, the name +could also be different. Different applications, e.g.\ with different +options or different thorn lists, can exist side by side. + +To build the application: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+make sim -j4+ +\end{enumerate} +The make option \code{-j4} builds 4 files at the same time. Use this +option if you have several processors available; this will speed up +building the application. The executable is called \code{cactus\_sim} +and is placed in the \code{exe} subdirectory. + +\subsection{Cleaning} + +You can also clean the application, removing all object files but +keeping the configuration options and thorn list: +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+make sim-realclean+ +\end{enumerate} + + + +\section{Running McLachlan} + +To run the McLachlan code, one needs a \emph{parameter file}. +Parameter files select which thorns are activated at run time, and +what values the thorns' run-time parameters have. They typically have +a \code{.par} suffix. Below, we use the parameter file +\code{qc0-mclachlan-public.par}. + +Cactus applications are started like a regular MPI application. The +exact mechanism depends on the particular MPI implementation. On +Redshift, the command is +\begin{enumerate} +\item\verb+cd Cactus+ +\item\verb+mkdir simulations+ +\item\verb+cd simulations+ +\item\verb+env OMP_NUM_THREADS=1 mpirun ../exe/cactus_sim qc0-mclachlan-public.par+ +\end{enumerate} +This parameter file simulates a single, stationary, spinning black +hole in Kerr-Schild coordinates. It requires about 4~GByte of RAM to +run. + +\emph{Note:} If the options list enables OpenMP, then the Cactus +application will be multi-threaded. Multi-threading can improve +performance and reduce memory consumption, especially when many +($>100$) cores are used. However, it is usually a bad idea to +over-subscribe cores by having too many threads per node. It is +usually best to choose both the number of MPI processes per node and +the number of OpenMP threads per process such that their product +equals the number of cores on a node. The way in which these numbers +are chosen depend on the MPI implementation. + + + +\bibliographystyle{apsrev-titles-manyauthors} +\bibliography{references,publications-schnetter} + +\end{document} |