aboutsummaryrefslogtreecommitdiff
path: root/doc/documentation.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/documentation.tex')
-rw-r--r--doc/documentation.tex167
1 files changed, 167 insertions, 0 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
new file mode 100644
index 0000000..6bfaceb
--- /dev/null
+++ b/doc/documentation.tex
@@ -0,0 +1,167 @@
+% 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.
+
+\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}
+
+\author{Erik Schnetter \textless schnetter@cct.lsu.edu\textgreater}
+
+\title{TmunuBase}
+
+\date{2008-04-07}
+
+\maketitle
+
+% Do not delete next line
+% START CACTUS THORNGUIDE
+
+\begin{abstract}
+ Provide grid functions for the stress-energy tensor $T_{\mu\nu}$,
+ and schedule when these grid functions are calculated. This allows
+ different thorns to cooperate without explicitly depending on each
+ other. This thorn is compatible with the \texttt{CalcTmumu.inc}
+ interface, in the sense that thorns using this interface will work
+ correctly with TmunuBase. Thorn TmunuBase is for the stress-energy
+ tensor what thorn ADMBase is for the metric tensor.
+\end{abstract}
+
+\section{Introduction}
+
+Thorn \texttt{TmunuBase} provides core infrastructure for thorns
+implementing some kind of energy or matter in general relativity, for
+example general relativistic hydrodynamics formulations. It provides
+the basic variables, i.e., the stress-energy tensor $T_{\mu\nu}$, in
+addition to a set of parameters to regulate their use. These
+variables are used to communicate between (possibly multiple) thorns
+contributing to the stress-energy content of the spacetime, and thorns
+needing to evaluate the stress-energy tensor such as spacetime
+evolution methods. It also provides schedule groups to manage when
+$T_{\mu\nu}$ is calculated and when it is ready for access.
+
+\section{Using TmunuBase}
+
+\subsection{Variables}
+
+TmunuBase weakly assumes (but does not require) that the spacetime is
+described in terms of a $3+1$ decomposition. The variables provided
+by \texttt{TmunuBase} are:
+\begin{itemize}
+\item The ``scalar'' part of $T_{\mu\nu}$, its time-time component:
+ \texttt{eTtt}
+\item The ``vector'' part of $T_{\mu\nu}$, its time-space components:
+ \texttt{eTtx}, \texttt{eTty}, \texttt{eTtz}
+\item The ``tensor'' part of $T_{\mu\nu}$, its space-space components:
+ \texttt{eTxx}, \texttt{eTxy}, \texttt{eTxz}, \texttt{eTyy},
+ \texttt{eTyz}, \texttt{eTzz}
+\end{itemize}
+These components have the prefix \texttt{e} to avoid naming conflicts
+with existing variables. Many thorns dealing with matter already use
+variable names such as \texttt{Ttt}.
+
+These variables have up to three time levels.
+
+\subsection{Parameters}
+
+By default, the TmunuBase variables have no storage, and TmunuBase is
+inactive. This makes it possible to add a matter interface to
+existing vacuum spacetime methods without changing their behaviour.
+
+Several parameters choose how TmunuBase behaves at run time:
+\begin{itemize}
+\item The parameter \texttt{stress\_energy\_storage} activates storage
+ for $T_{\mu\nu}$ and enables the schedule groups which calculate it.
+\item The parameter \texttt{stress\_energy\_at\_RHS} moves calculating
+ the $T_{\mu\nu}$ from the \texttt{evol} bin into the
+ \texttt{MoL\_PostStep} group. This increases the order of accuracy
+ of the spacetime--matter coupling, but is only possible when thorn
+ MoL is used.\footnote{This was one of the main reason why thorn MoL
+ was instroduced.} Generally, this parameter should be set when
+ MoL is used.
+\item The parameter \texttt{timelevels} chooses the number of time
+ levels for $T_{\mu\nu}$. The default is a single time level, which
+ is sufficient for unigrid simulation. Mesh refinement simulation
+ may require several time levels if mesh refinement boundaries
+ require correct values.
+\item The parameter \texttt{prolongation\_type} defines the
+ prolongation operator for mesh refinement boundaries. The default
+ is Lagrange interpolation.
+\end{itemize}
+
+The grid scalar \texttt{stress\_energy\_state} describes whether the
+$T_{\mu\nu}$ variables have storage.
+
+\section{Programming with TmunuBase}
+
+\subsection{Contributing to $T_{\mu\nu}$}
+
+There may be multiple thorns contributing to $T_{\mu\nu}$. Therefore,
+thorn TmunuBase initialises $T_{\mu\nu}$ to zero, and each thorn has
+to add to the existing values in $T_{\mu\nu}$. The corresponding
+routine should be scheduled in the bin \texttt{AddToTmunu}.
+\emph{Note:} Do not schedule anything in the schedule bin
+\texttt{SetTmunu}.
+
+\subsection{Reading from $T_{\mu\nu}$}
+
+Since the values of $T_{\mu\nu}$ change at each time step, or -- if a
+thorn like \texttt{MoL} is used -- at each substep, $T_{\mu\nu}$ needs
+to be recalculated frequently. This happens either in the schedule
+bin \texttt{evol} or in the schedule group \texttt{MoL\_PostStep}.
+$T_{\mu\nu}$ may only be accessed after it has been calculated, e.g.\
+\texttt{IN MoL\_PostStep AFTER SetTmunu}. $T_{\mu\nu}$ can be freely
+accessed at other times, e.g.\ in \texttt{MoL\_CalcRHS} or at
+\texttt{poststep} or \texttt{analyisis}.
+
+\section{Compatibility to ADMCoupling}
+
+Cactus provides another interface for contributing to the
+stress-energy tensor, called \texttt{CalcTmunu}. This alternative
+interface (which is described in thorn \texttt{ADMCoupling}) requires
+writing routines in fixed-format Fortran 77 and inserting lines of
+code into a file \texttt{CalcTmunu.inc}. We suggest to use exactly
+one of these two interface and not to mix them.
+
+Thorn TmunuBase takes contributions from the \texttt{CalcTmunu}
+interface automatically into account as well. It also collects the
+values which are added to its $T_{\mu\nu}$ and provides these to other
+thorns which use the \texttt{CalcTmunu.inc} interface. That is, thorn
+TmunuBase is fully backwards compatible.
+
+\subsection{Comparison to ADMCoupling}
+
+The \texttt{CalcTmunu} interface and this thorn TmunuBase make
+different space/performance tradeoffs. \texttt{CalcTmunu} does not
+store any components of the stress-energy tensor, which saves memory
+and is also more efficient if its components can be quickly calculated
+from other variables (presumably the state vector of a hydrodynamics
+thorn).
+
+TmunuBase requires explicit storage for $T_{\mu\nu}$. This is
+necessary if $T_{\mu\nu}$ needs to be interpolated e.g.\ for dynamical
+horizon calculations. Compared to the overall number of grid function
+in a typical simulation the number of additional variables is
+tolerable (typical numbers are 10 additional variables with 200
+existing variables). With the exception of the parts ensuring
+compatibility to \texttt{CalcTmunu}, TmunuBase is also a much simpler
+and more flexible mechanism.
+
+\subsection{Acknowledgements}
+
+We thank I. Hawke for designing and implementing thorn MoL, without
+which a generic high-order coupling between spacetime and
+hydrodynamics methods would not be possible.
+
+% Do not delete next line
+% END CACTUS THORNGUIDE
+
+\end{document}