aboutsummaryrefslogtreecommitdiff
path: root/doc/documentation.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/documentation.tex')
-rw-r--r--doc/documentation.tex309
1 files changed, 309 insertions, 0 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
new file mode 100644
index 0000000..7699b35
--- /dev/null
+++ b/doc/documentation.tex
@@ -0,0 +1,309 @@
+% *======================================================================*
+% Cactus Thorn template for ThornGuide documentation
+% Author: Ian Kelley
+% Date: Sun Jun 02, 2002
+% $Header$
+%
+% Thorn documentation in the latex file doc/documentation.tex
+% will be included in ThornGuides built with the Cactus make system.
+% The scripts employed by the make system automatically include
+% pages about variables, parameters and scheduling parsed from the
+% relevant thorn CCL files.
+%
+% This template contains guidelines which help to assure that your
+% documentation will be correctly added to ThornGuides. More
+% information is available in the Cactus UsersGuide.
+%
+% Guidelines:
+% - Do not change anything before the line
+% % START CACTUS THORNGUIDE",
+% except for filling in the title, author, date, etc. fields.
+% - Each of these fields should only be on ONE line.
+% - Author names should be separated with a \\ or a comma.
+% - You can define your own macros, but they must appear after
+% the START CACTUS THORNGUIDE line, and must not redefine standard
+% latex commands.
+% - To avoid name clashes with other thorns, 'labels', 'citations',
+% 'references', and 'image' names should conform to the following
+% convention:
+% ARRANGEMENT_THORN_LABEL
+% For example, an image wave.eps in the arrangement CactusWave and
+% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps
+% - Graphics should only be included using the graphicx package.
+% More specifically, with the "\includegraphics" command. Do
+% not specify any graphic file extensions in your .tex file. This
+% will allow us to create a PDF version of the ThornGuide
+% via pdflatex.
+% - References should be included with the latex "\bibitem" command.
+% - Use \begin{abstract}...\end{abstract} instead of \abstract{...}
+% - Do not use \appendix, instead include any appendices you need as
+% standard sections.
+% - For the benefit of our Perl scripts, and for future extensions,
+% please use simple latex.
+%
+% *======================================================================*
+%
+% Example of including a graphic image:
+% \begin{figure}[ht]
+% \begin{center}
+% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure}
+% \end{center}
+% \caption{Illustration of this and that}
+% \label{MyArrangement_MyThorn_MyLabel}
+% \end{figure}
+%
+% Example of using a label:
+% \label{MyArrangement_MyThorn_MyLabel}
+%
+% Example of a citation:
+% \cite{MyArrangement_MyThorn_Author99}
+%
+% Example of including a reference
+% \bibitem{MyArrangement_MyThorn_Author99}
+% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999),
+% 1--16. {\tt http://www.nowhere.com/}}
+%
+% *======================================================================*
+
+% If you are using CVS use this line to give version information
+% $Header$
+
+\documentclass{article}
+
+% Use the Cactus ThornGuide style file
+% (Automatically used from Cactus distribution, if you have a
+% thorn without the Cactus Flesh download this from the Cactus
+% homepage at www.cactuscode.org)
+\usepackage{../../../../doc/latex/cactus}
+
+\begin{document}
+
+% The author of the documentation
+\author{Erik Schnetter \textless schnetter@aei.mpg.de\textgreater}
+
+% The title of the document (not necessarily the name of the Thorn)
+\title{SphericalSurface}
+
+% the date your document was last changed, if your document is in CVS,
+% please use:
+\date{$ $Date$ $}
+
+\maketitle
+
+% Do not delete next line
+% START CACTUS THORNGUIDE
+
+% Add all definitions used in this documentation here
+% \def\mydef etc
+
+\begin{abstract}
+This thorn provides a repository for two-dimensional surfaces with
+spherical topology. This thorn does not actually do anything with
+these surfaces, but allow other thorns to store and retrieve the
+surfaces and some associated information. The exact interpretation of
+the stored quantities is up to the using thorns, but certain standard
+definitions are suggested.
+\end{abstract}
+
+
+
+\section{Introduction}
+
+Many thorns work on manifolds that are two-dimensional, closed
+surfaces. Examples are apparent and event horizons, or the surfaces
+on which gravitational waves are extracted. Other such surfaces might
+be excision or outer boundaries (although these are currently not
+treated as such). There is a need to have a common representation for
+such surfaces, so that the surface-finding thorns and the thorns
+working with these surfaces can be independent. A common
+representation will also facilitate visualisation. This thorn
+\texttt{SphericalSurface} provides just such a common representation.
+
+This thorn is not meant to do anything else but be a ``repository''
+for surfaces. It is up to the surface-finding and surface-using
+thorns to agree on the details of the information stored. Of course,
+standard definitions for the stored quantities are suggested. (For
+example, there is no exact definition of the quadrupole moment,
+because this definition will depend on the kind of surface that is
+stored. However, it is specified that the quadrupole moment should be
+calculate with respect to the centroid, and that it should not be
+trace-free.)
+
+This thorn provides storage for several independent surfaces,
+identified by an \emph{index}. It is up to the user to specify,
+probably in the parameter file, which thorns use what surfaces for
+what purpose.
+
+
+
+\section{Surface Definition}
+
+This thorn provides, for each surface, a two-dimensional grid array
+\texttt{sf\_radius} and grid scalars \texttt{sf\_origin\_x},
+\texttt{sf\_origin\_y}, and \texttt{sf\_origin\_z}. The number of
+surfaces is determined by the parameter \texttt{nsurfaces}, which has
+to be set in the parameter file.
+
+\texttt{sf\_radius} should contain the radius of the surface as
+measured from its origin, where the arrays indices vary in the
+$\theta$ and $\phi$ direction, respectively. Both the radius array
+and the surface origin are supposed to be set when a surface is
+stored.
+
+The coordinates on the surface, i.e.\ the grid origin and spacing in
+the $\theta$ and $\phi$ directions, is available from the grid scalars
+\texttt{sf\_origin\_theta}, \texttt{sf\_origin\_phi},
+\texttt{sf\_delta\_theta}, and \texttt{sf\_delta\_phi}. These grid
+scalars are set by the thorn SphericalSurface in the \texttt{basegrid}
+bin, and are meant to be read-only for other thorns.
+
+
+
+\begin{quotation}
+\subsection*{A note on vector grid variables}
+
+A relatively new addition to Cactus (in November 2003) are vector grid
+variables. These are essentially arrays of grid variables. Thorn
+SphericalSurface makes use of these by storing the surfaces in such
+arrays. That means that in order to access data from a single
+surface, on has to use the corresponding surface index as array index.
+In a similar manner, thorn SurfaceIndex uses array parameters for its
+parameters (except certain global ones).
+
+This should be kept in mind when writing source code. C has the
+unfortunate property of converting arrays into meaningless integers if
+an array subscript is accidentally omitted. Fortran knows whole-array
+expressions, meaning that it would act on all surfaces instead of a
+single one if an array subscript is accidentally omitted.
+
+Each element of a vector grid function is a grid function. (The term
+``grid function vector'' might have been more appropriate.) As such,
+it has a name, which can be used e.g.\ for output. The name consists
+of the vector grid function name to which the surface index in square
+brackets has been appended.
+\end{quotation}
+
+
+
+\subsection{Global Surface Quantities}
+
+In many cases, only some abstract information about the surface is of
+interest, such as its mean radius or its quadrupole moment. For that
+purpose there are additional grid scalars that carry this information.
+These grid scalars are also supposed to be set when a surface is
+stored. These grid scalars are
+\begin{description}
+
+\item[\texttt{sf\_mean\_radius}] Mean of the surface radius. This
+should be the arithmetic mean where the radii have been weighted with
+$\sin\theta$, or a suitable generalisation thereof. This quantity is
+also supposed to be a measure of the surface's monopole moment. One
+suggested expression is $M=\sqrt{A}$ with $A = \int_S d\Omega\, r^2 /
+\int_S d\Omega$.
+
+\item[\texttt{sf\_min\_radius}, \texttt{sf\_max\_radius}] Minimum and
+maximum of the surface radius.
+
+\item[\texttt{sf\_centroid\_x}, \texttt{sf\_centroid\_y},
+\texttt{sf\_centroid\_z}] The centre of the surface. While the
+quantities \texttt{sf\_origin\_*} denote the point from which the
+radius of the surface is measured, the quantities
+\texttt{sf\_centroid\_*} should contain the point which is
+``logically'' the centre of the surface. This quantity is supposed to
+be a measure of the dipole moment of the surface. One suggested
+expression is $D^i = \int_S d\Omega\, x^i / A$.
+
+\item[\texttt{sf\_quadrupole\_xx}, \texttt{sf\_quadrupole\_xy},
+\texttt{sf\_quadrupole\_xz}, \texttt{sf\_quadrupole\_yy},
+\texttt{sf\_quadrupole\_yz}, \texttt{sf\_quadrupole\_zz}] The
+quadrupole moment of the surface. This should be the full quadrupole
+moment and not a trace-free quantity. One suggested expression is
+$Q^{ij} = \int_S d\Omega\, y^i y^j / A$ with $y^i = x^i - D^i$.
+
+\item[\texttt{sf\_min\_x}, \texttt{sf\_min\_y}, \texttt{sf\_min\_z},
+\texttt{sf\_max\_x}, \texttt{sf\_max\_y}, \texttt{sf\_max\_z}] The
+bounding box of the surface.
+
+\end{description}
+Note that the integral expressions are only suggestions which should
+be adapted to whatever is natural for the stored surface. The
+suggested integral expressions also depend on the metric which is
+used; this should be a ``natural'' metric for the surface. E.g.\ for
+apparent horizons, this might be the induced two-metric $q_{ij}$ from
+the projection of the ADM three-metric $\gamma_{ij}$.
+
+
+
+\subsection{Validity of Surface Data}
+
+There is also an integer flag \texttt{valid} available. Its
+definition is up to the surface-providing thorn. The following
+interpretations are \emph{suggested}:
+\begin{description}
+
+\item[zero:] No surface is provided at this time step.
+
+\item[negative:] No surface could be found at this time step. This
+indicates an error.
+
+\item[positive:] The surface data are valid.
+
+\end{description}
+Note that, if this flag is used, it is necessary to set this flag at
+every iteration. This flag is not automatically reset to zero.
+
+
+
+\section{Surface Array Shape}
+
+The number of grid points in the radius array \texttt{sf\_radius} is
+determined by the parameters \texttt{ntheta} and \texttt{nphi}. These
+arrays exist for each surface. (Internally, thorn SphericalSurface
+stores all surfaces with the same array shape \texttt{maxntheta} and
+\texttt{maxnphi}, so that the parameters \texttt{ntheta} and
+\texttt{nphi} must not be used for index calculations. Use the
+surfaces \texttt{lsh} instead.) The surface array shape includes
+ghost or boundary zones at the array edges. These ghost zones have
+the same size for all surfaces.
+
+
+
+\section{Surface Symmetries}
+
+It is often the case that one uses symmetries to reduce the size of
+the simulation domain, such as octant or quadrant mode. Whenever a
+symmetry plane intersects a surface, only part of the surface is
+actually stored. The user has to define the symmetries of each
+surface in the parameter file via the parameters
+\texttt{sf\_symmetry\_x}, \texttt{sf\_symmetry\_y}, and
+\texttt{sf\_symmetry\_z}. The indicate that a
+reflection symmetry exists in the corresponding direction. The
+surface origin is required to lie in the corresponding symmetry
+planes.
+
+Thorn SphericalSurface takes these symmetries into account when it
+calculates the grid spacing and the origin of the surface coordinates
+$\theta$ and $\phi$.
+
+
+
+\section{Input and Output}
+
+As the surfaces are stored as grid variables, the standard input and
+output routines will work for them. The standard visualisation tools
+will be able to visualise them. The surfaces will also automatically
+be checkpointed and restored.
+
+
+
+\subsection{Acknowledgements}
+
+This thorn was suggested during meetings of the numerical relativity
+group at the AEI. Jonathan Thornburg provided many detailed and
+useful suggestions. Ed Evans, Carsten Gundlach, Ian Hawke, and Denis
+Pollney contributed comments and suggestions.
+
+% Do not delete next line
+% END CACTUS THORNGUIDE
+
+\end{document}