summaryrefslogtreecommitdiff
path: root/doc/UsersGuide/GettingStarted.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/UsersGuide/GettingStarted.tex')
-rw-r--r--doc/UsersGuide/GettingStarted.tex383
1 files changed, 383 insertions, 0 deletions
diff --git a/doc/UsersGuide/GettingStarted.tex b/doc/UsersGuide/GettingStarted.tex
new file mode 100644
index 00000000..2c8558a1
--- /dev/null
+++ b/doc/UsersGuide/GettingStarted.tex
@@ -0,0 +1,383 @@
+% /*@@
+% @file RunningCactus.tex
+% @date 27 Jan 1999
+% @author Tom Goodale, Gabrielle Allen, Gerd Lanferman, Thomas Radke
+% @desc
+% How to run Cactus part of the Cactus User's Guide
+% @enddesc
+% @version $Header$
+% @@*/
+
+\begin{cactuspart}{Introduction}{$RCSfile$}{$Revision$}\label{part:Introduction}
+\renewcommand{\thepage}{\Alph{part}\arabic{page}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Getting Started}
+\label{cha:gs}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Obtaining Cactus}
+\label{sec:checkout}
+
+Cactus is distributed, extended, and maintained using the free CVS
+software (\textit{Concurrent Versions System}: \url{http://www.cvshome.org}).
+CVS allows many people to work on a large software project
+together without getting into a tangle.
+Since Cactus thorns are distributed from several repositories on the
+main CVS site, and from a growing number of user sites, we provide a
+\texttt{GetCactus} script on our website for checking out the flesh
+and thorns. The script is available at
+
+\url{http://www.cactuscode.org/download/GetCactus}.
+
+The
+script takes as an argument the name of a file containing a \textit{ThornList},
+that is a list of thorns with the syntax
+\begin{alltt}
+<\var{arrangement name}>/<\var{thorn name}>
+\end{alltt}
+
+If no filename is given, only the flesh is checked out.
+Optional directives in the ThornList indicate which CVS repository to fetch
+thorns from. The default is to take the thorns from the same repository as
+the flesh. A full description of ThornList syntax is provided in Appendix~\ref{chap:th}.
+ThornLists for example applications are provided on the Cactus website at
+
+%%% FIXME: url
+
+The same script can be used to checkout additional thorns, or to update
+existing ones.
+
+The Cactus website also provides a form interface for direct download at:
+
+\url{http://www.cactuscode.org/cactus\_cgi-bin/download.pl}
+
+CVS experts who want to use raw CVS commands are directed to
+Appendix~\ref{sec:Appendix.cvs} for full instructions. For CVS novices,
+we also summarize in the Appendix basic CVS commands.
+
+The space required for an installation depends on the arrangements and
+thorns used. The flesh on its own requires less than 5 MB.
+
+Another script, \texttt{MakeThornList}, can be used to produce a minimal
+ThornList from a given Cactus par file. It needs a \emph{master} ThornList
+to be copied into your \texttt{Cactus} directory.
+
+See \url{http://www.cactuscode.org/toolkit/makeThornList/}.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{Directory Structure}
+\label{sec:dist}
+
+A fresh checkout creates a directory \texttt{Cactus} with the
+following subdirectories:
+
+\begin{Lentry}
+
+\item[\texttt{CVS}] the CVS bookkeeping directory, present in every subdirectory
+
+\item[\texttt{doc}] Cactus documentation
+
+\item[\texttt{lib}] contains libraries
+
+\item[\texttt{src}] contains the source code for Cactus
+
+\item [\texttt{arrangements}] contains the Cactus arrangements. The arrangements
+ (the actual ``physics'') are not supplied by just checking out just Cactus.
+ If the arrangements you want to use are standard Cactus arrangements, or
+ reside on our CVS repository (\texttt{cvs.cactuscode.org}),
+ they can be checked out in similar way to the flesh.
+\end{Lentry}
+
+When Cactus is first compiled, it creates a new directory
+\texttt{Cactus/configs}, which will contain all the source code, object files
+and libraries created during the build process.
+
+Configurations are described in detail in Section \ref{sec:configurations}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Compiling a Cactus application}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+Cactus can be built in different configurations from the same copy of
+the source files, and these different configurations coexist in the
+\texttt{Cactus/configs} directory. Here are several instances in which
+ this can be useful:
+
+\begin{enumerate}
+\item{}Different configurations can be for \emph{different
+architectures}. You can keep executables for multiple architectures
+based on a single copy of source code, shared on a common file
+system.
+\item{} You can compare different \textit{compiler options}, and \textit{debug-modes}.
+ You might want to compile different communication protocols
+ (e.g. MPI or Globus), or leave them out all together.
+\item{} You can have different configurations for \textit{different thorn
+ collections} compiled into your executable.
+\end{enumerate}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Creating a Configuration}
+\label{sec:configurations}
+
+At its simplest, this is done by \texttt{gmake <\var{config}>}.
+This generates a
+configuration with the name \texttt{\var{config}}, doing its best to
+automatically determine the default compilers and compilation flags
+suitable for the current architecture.
+
+There are a number of additional command-line arguments which may be supplied
+to override some parts of the procedure; they are listed in Section~\ref{sec:confopts}.
+
+Once you have created a new configuration, the command
+\\ \\
+\texttt{gmake <\var{configuration name}>}
+\\ \\
+will build an executable, prompting you along the way for the
+thorns which should be included. There is a range of \texttt{gmake}
+targets and options which are detailed in Section~\ref{sec:gmtafobuanadco}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Running a Cactus application}
+
+Cactus executables always run from a parameter file (which may be
+provided as a command-line argument taken from standard input), which
+specifies which thorns to use and sets the values of each thorn's
+parameters (the parameters that are not set will take on default values,
+see~\ref{sec:Appendix.param}).
+
+There is no restriction on the name
+of the parameter file, although it is conventional to use the file
+extension \texttt{.par}. Optional command-line arguments can be used
+to customise runtime behaviour, and to provide information about the
+thorns used in the executable. The general syntax for running Cactus from
+a parameter file is then
+
+\texttt{./cactus\_<\var{config}> <\var{parameter file}>
+[\var{command-line options}]}
+
+A parameter file is a text file whose lines are either comments
+or parameter statements.
+Comments are blank lines or lines that begin with either
+`\texttt{\#}' or `\texttt{!}'.
+A parameter statement consists of one or more parameter names, followed by
+an `\texttt{=}', followed by the value(s) for this (these) parameter(s).
+Note that all string parameters are case insensitive.
+
+The first parameter statement in any parameter file should set \texttt{ActiveThorns},
+which is a special parameter that tells the
+program which \textit{thorns} are to be activated. Only parameters from active
+thorns can be set (and only those routines \textit{scheduled} by active thorns
+are run). By default all thorns are inactive. For example, the first
+entry in a parameter file which is using just the two thorns
+\texttt{CactusPUGH/PUGH} and \texttt{CactusBase/CartGrid3D} should be
+
+\texttt{ActiveThorns = "PUGH CartGrid3D"}
+
+Parameter specifications following \texttt{ActiveThorns} usually are
+carried out by listing
+the name of the \textit{thorn} which defined the parameter, two colons,
+and the name of the parameter --- e.g.~\texttt{wavetoyF77::amplitude}
+(see Section~\ref{sec:Cactus_parameters.scope} for more information).
+
+Notes:
+
+\begin{itemize}
+
+\item{} You can obtain lists of the parameters associated with
+each thorn using the command-line options \texttt{-o} and \texttt{-O}
+(Section~\ref{sec:command_line_options}).
+
+\item{} For examples of parameter files, look in the \texttt{par} directory
+ which can be found in most thorns.
+
+\item {}
+The Cactus make system provides a mechanism for generating a
+\textit{Thorn Guide} containing separate chapters for each thorn and
+arrangement in your configuration.
+Details about parameters, grid variables and scheduling are
+automatically included in from a thorns CCL files into the Thorn
+Guide. To construct a Thorn Guide for the configuration
+\texttt{$<$\var{config}$>$} use
+
+\texttt{gmake $<$\var{config}$>$-ThornGuide}
+
+or to make a Thorn Guide for all the thorns in the \texttt{arrangements} directory
+
+\texttt{gmake $<$\var{config}$>$}.
+
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\chapter{Getting and looking at output}
+
+
+\section{Screen output}
+
+As your Cactus executable runs, standard output and standard error
+are usually written to the screen. Standard output provides you
+with information about the run, and standard error reports warnings
+and errors from the flesh and thorns.
+
+As the program runs, the normal output provides the following information:
+
+\begin{Lentry}
+
+\item [Active thorns]
+ A report is made as each of the thorns in the \texttt{ActiveThorns}
+parameters from the parameter file (see Section~\ref{sec:Parameter_File})
+is attempted to be activated. This report
+shows whether the thorn activation was successful, and if successful gives the
+thorn's implementation. For example
+
+\begin{verbatim}
+Activating thorn idscalarwave...Success -> active implementation idscalarwave
+\end{verbatim}
+
+\item [Failed parameters]
+ If any of the parameters in the parameter file does not belong to any
+of the active thorns, or if the parameter value is not in the allowed range
+(see Section~\ref{sec:Parameters.Types_and_Ranges}),
+an error is registered. For example, if the parameter is not recognised
+
+\begin{verbatim}
+Unknown parameter time::ddtfac
+\end{verbatim}
+or if the parameter value is not in the allowed range
+
+\begin{verbatim}
+Unable to set keyword CartGrid3D::type - ByMouth not in any active range
+\end{verbatim}
+
+\item [Scheduling information]
+ The scheduled routines (see Section~\ref{chap:scheduling}),
+are listed, in the order that they will be executed. For example
+
+\begin{verbatim}
+----------------------------------------------------------------------
+ Startup routines
+ Cactus: Register banner for Cactus
+ CartGrid3D: Register GH Extension for GridSymmetry
+ CartGrid3D: Register coordinates for the Cartesian grid
+ IOASCII: Startup routine
+ IOBasic: Startup routine
+ IOUtil: IOUtil startup routine
+ PUGH: Startup routine
+ WaveToyC: Register banner
+
+ Parameter checking routines
+ CartGrid3D: Check coordinates for CartGrid3D
+ IDScalarWave: Check parameters
+
+ Initialisation
+ CartGrid3D: Set up spatial 3D Cartesian coordinates on the GH
+ PUGH: Report on PUGH set up
+ Time: Set timestep based on speed one Courant condition
+ WaveToyC: Schedule symmetries
+ IDScalarWave: Initial data for 3D wave equation
+
+ do loop over timesteps
+ WaveToyC: Evolution of 3D wave equation
+ t = t+dt
+ if (analysis)
+ endif
+ enddo
+----------------------------------------------------------------------
+\end{verbatim}
+
+\item [Thorn banners]
+ Usually a thorn registers a short piece of text as a \emph{banner}.
+ This banner of each thorn is displayed in the standard output when
+ the thorn is initialised.
+
+\end{Lentry}
+
+
+\section{File output}
+Output methods in Cactus are all provided by thorns.
+Any number of output methods can be used for each run.
+The behaviour of the output thorns in the
+standard arrangements are described in those thorns' documentation.
+
+In general, output thorns decide what to output by parsing a string parameter
+containing the names of those grid variables, or groups of variables, for which
+output is required. The names should be fully qualified with the
+implementation and group or variable names.
+
+There is usually a parameter for each method to denote how often, in evolution
+iterations, this output should be performed. There is also usually a parameter
+to define the directory in which the output should be placed, defaulting to the
+directory from which the executable is run.
+
+See Chapter~\ref{chap:io_methods} for details on creating your own IO method.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Checkpointing/Recovery}
+\label{sec:checkpointing}
+
+Checkpointing is defined as saving the current state of a run (parameter
+settings, contents of grid variables, and other relevant information) to a file.
+At a later time, this run can then be restarted from that state by recovering
+all the data from the checkpoint file.
+
+Cactus checkpointing and recovery methods are provided by thorns.
+In general, these thorns decide how often to generate a checkpoint.
+They also register their recovery routines with the flesh; these recovery
+routines may then be called during initialisation of a subsequent run to
+perform the recovery of the state of the run.
+Such a recovery is requested by setting a parameter in the parameter file.
+
+See Chapter~\ref{chap:cp_recovery_methods} for details of how to create
+your own checkpointing and recovery methods.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Reporting bugs}
+\label{sec:gehe}
+
+For tracking problem reports and bugs, we use GNATS, which is a bug tracking
+system published under the GNU license. We have set up a web interface at
+\url{http://www.cactuscode.org/BugReporting}, which allows easy submission and browsing
+of problem reports.
+
+A description of the GNATS categories we use is provided in the Appendix
+\ref{sec:Appendix.gnats}.
+
+% OK, there is NO emacs at the moment, because the GNATS setup is really stupid
+% and sendpr handles like c.... besides the fact, that the user has to go
+% through a make process which installs stuff somewhere on his HD. gerd.
+% BUT, we could distribute our own, either copy cvsbug, or write a perl
+% version. Tom
+% \begin{itemize}
+% \item \texttt{A web interface}
+% \item \texttt{SendPR}
+% {FIXME: Mention the emacs thing here too...}
+% \end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% FIXME: add something quick on required software and supported architectures
+
+%%%% FIXME: add an example
+
+\end{cactuspart}