\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}

\newlength{\tableWidth} \newlength{\maxVarWidth} \newlength{\paraWidth} \newlength{\descWidth} \begin{document}

\title{CottonmouthBSSN}
\author{Lucas Sanches \\ Max Morris \\ Steven R. Brandt}
\date{$ $Date$ $}

\maketitle

% Do not delete next line
% START CACTUS THORNGUIDE

% Add all definitions used in this documentation here

\begin{abstract}
    Provides the BSSN equations as generated by the EinsteinEngine.
\end{abstract}

\section{Introduction}

%Einstein Engine
The Einstein Engine is a DSL and toolkit for creating Cactus thorns.
It can generate complete CarpetX thorns from simple recipes written in Python.

\subsection{How to set up EinsteinEngine}

\begin{itemize}
   \item Create a venv and activate it. 
   \begin{verbatim}
   python -m venv venv && . ./venv/bin/activate
   \end{verbatim}
\item Install the dependencies.
   \begin{verbatim}
   python -m pip install -r requirements.txt
   \end{verbatim}

\item Install EinsteinEngine. 
   \begin{verbatim}
   python -m pip install .
   \end{verbatim}
\end{itemize}
   
\subsection{How to generate a thorn}

\begin{itemize}
\item Be sure the venv is activated.
   \begin{verbatim}
   . ./venv/bin/activate
   \end{verbatim}

\item Typecheck the recipe with MyPy.
   \begin{verbatim}
   mypy recipes/Cottonmouth/bssnok_unsplit_ricci_opt.py
   \end{verbatim}

\item Run the recipe.
   \begin{verbatim}
   python recipes/Cottonmouth/bssnok_unsplit_ricci_opt.py
   \end{verbatim}
\end{itemize}

\section{Parameters}

TBD

% Do not delete next line
% END CACTUS THORNGUIDE



\section{Parameters} 


\parskip = 0pt

\setlength{\tableWidth}{160mm}

\setlength{\paraWidth}{\tableWidth}
\setlength{\descWidth}{\tableWidth}
\settowidth{\maxVarWidth}{conformal\_factor\_floor}

\addtolength{\paraWidth}{-\maxVarWidth}
\addtolength{\paraWidth}{-\columnsep}
\addtolength{\paraWidth}{-\columnsep}
\addtolength{\paraWidth}{-\columnsep}

\addtolength{\descWidth}{-\columnsep}
\addtolength{\descWidth}{-\columnsep}
\addtolength{\descWidth}{-\columnsep}
\noindent \begin{tabular*}{\tableWidth}{|c|l@{\extracolsep{\fill}}r|}
\hline
\multicolumn{1}{|p{\maxVarWidth}}{conformal\_factor\_floor} & {\bf Scope:} restricted & REAL \\\hline
\multicolumn{3}{|p{\descWidth}|}{{\bf Description:}   {\em The conformal factor W will never be smaller than this value}} \\
\hline{\bf Range} & &  {\bf Default:} 1e-10 \\\multicolumn{1}{|p{\maxVarWidth}|}{\centering *} & \multicolumn{2}{p{\paraWidth}|}{} \\\hline
\end{tabular*}

\vspace{0.5cm}\noindent \begin{tabular*}{\tableWidth}{|c|l@{\extracolsep{\fill}}r|}
\hline
\multicolumn{1}{|p{\maxVarWidth}}{dissipation\_epsilon} & {\bf Scope:} restricted & REAL \\\hline
\multicolumn{3}{|p{\descWidth}|}{{\bf Description:}   {\em The ammount of dissipation to add. Should be in the [0, 1/3[ range}} \\
\hline{\bf Range} & &  {\bf Default:} 0.2 \\\multicolumn{1}{|p{\maxVarWidth}|}{\centering *} & \multicolumn{2}{p{\paraWidth}|}{} \\\hline
\end{tabular*}

\vspace{0.5cm}\noindent \begin{tabular*}{\tableWidth}{|c|l@{\extracolsep{\fill}}r|}
\hline
\multicolumn{1}{|p{\maxVarWidth}}{eta\_b} & {\bf Scope:} restricted & REAL \\\hline
\multicolumn{3}{|p{\descWidth}|}{{\bf Description:}   {\em Mass dependent damping coefficient for the hyperbolic gamma driver shift}} \\
\hline{\bf Range} & &  {\bf Default:} 1.0 \\\multicolumn{1}{|p{\maxVarWidth}|}{\centering *} & \multicolumn{2}{p{\paraWidth}|}{} \\\hline
\end{tabular*}

\vspace{0.5cm}\noindent \begin{tabular*}{\tableWidth}{|c|l@{\extracolsep{\fill}}r|}
\hline
\multicolumn{1}{|p{\maxVarWidth}}{evolved\_lapse\_floor} & {\bf Scope:} restricted & REAL \\\hline
\multicolumn{3}{|p{\descWidth}|}{{\bf Description:}   {\em The evolved lapse will never be smaller than this value}} \\
\hline{\bf Range} & &  {\bf Default:} 0.0 \\\multicolumn{1}{|p{\maxVarWidth}|}{\centering *} & \multicolumn{2}{p{\paraWidth}|}{} \\\hline
\end{tabular*}

\vspace{0.5cm}\parskip = 10pt 

\section{Interfaces} 


\parskip = 0pt

\vspace{3mm} \subsection*{General}

\noindent {\bf Implements}: 

cottonmouthbssnok
\vspace{2mm}

\noindent {\bf Inherits}: 

admbasex

driver

odesolvers

tmunubasex
\vspace{2mm}
\subsection*{Grid Variables}
\vspace{5mm}\subsubsection{PUBLIC GROUPS}

\vspace{5mm}

\begin{tabular*}{150mm}{|c|c@{\extracolsep{\fill}}|rl|} \hline 
~ {\bf Group Names} ~ & ~ {\bf Variable Names} ~  &{\bf Details} ~ & ~\\ 
\hline 
at &  & centering & centering=\{0 0 0\} \\ 
 & AtDD00 & compact & 0 \\ 
 & AtDD01 & dimensions & 3 \\ 
 & AtDD02 & distribution & DEFAULT \\ 
 & AtDD11 & group type & GF \\ 
 & AtDD12 & tags & rhs="CottonmouthBSSNOK::At\_rhs" parities=\{+1 +1 +1  -1 -1 +1  -1 +1 -1  +1 +1 +1  +1 -1 -1  +1 +1 +1\} \\ 
 & AtDD22 & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
at\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & At\_rhsDD00 & compact & 0 \\ 
 & At\_rhsDD01 & dimensions & 3 \\ 
 & At\_rhsDD02 & distribution & DEFAULT \\ 
 & At\_rhsDD11 & group type & GF \\ 
 & At\_rhsDD12 & tags & checkpoint="no" parities=\{+1 +1 +1  -1 -1 +1  -1 +1 -1  +1 +1 +1  +1 -1 -1  +1 +1 +1\} \\ 
 & At\_rhsDD22 & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
confconnect &  & centering & centering=\{0 0 0\} \\ 
 & ConfConnectU0 & compact & 0 \\ 
 & ConfConnectU1 & dimensions & 3 \\ 
 & ConfConnectU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::ConfConnect\_rhs" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
confconnect\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & ConfConnect\_rhsU0 & compact & 0 \\ 
 & ConfConnect\_rhsU1 & dimensions & 3 \\ 
 & ConfConnect\_rhsU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
deltacons &  & centering & centering=\{0 0 0\} \\ 
 & DeltaConsU0 & compact & 0 \\ 
 & DeltaConsU1 & dimensions & 3 \\ 
 & DeltaConsU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
hamcons &  & centering & centering=\{0 0 0\} \\ 
 & HamCons & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
\end{tabular*} 



\vspace{5mm}
\vspace{5mm}

\begin{tabular*}{150mm}{|c|c@{\extracolsep{\fill}}|rl|} \hline 
~ {\bf Group Names} ~ & ~ {\bf Variable Names} ~  &{\bf Details} ~ & ~ \\ 
\hline 
momcons &  & centering & centering=\{0 0 0\} \\ 
 & MomConsU0 & compact & 0 \\ 
 & MomConsU1 & dimensions & 3 \\ 
 & MomConsU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
evo\_lapse &  & centering & centering=\{0 0 0\} \\ 
 & evo\_lapse & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::evo\_lapse\_rhs" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
evo\_lapse\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & evo\_lapse\_rhs & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
evo\_shift &  & centering & centering=\{0 0 0\} \\ 
 & evo\_shiftU0 & compact & 0 \\ 
 & evo\_shiftU1 & dimensions & 3 \\ 
 & evo\_shiftU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::evo\_shift\_rhs" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
evo\_shift\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & evo\_shift\_rhsU0 & compact & 0 \\ 
 & evo\_shift\_rhsU1 & dimensions & 3 \\ 
 & evo\_shift\_rhsU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
gt &  & centering & centering=\{0 0 0\} \\ 
 & gtDD00 & compact & 0 \\ 
 & gtDD01 & dimensions & 3 \\ 
 & gtDD02 & distribution & DEFAULT \\ 
 & gtDD11 & group type & GF \\ 
 & gtDD12 & tags & rhs="CottonmouthBSSNOK::gt\_rhs" parities=\{+1 +1 +1  -1 -1 +1  -1 +1 -1  +1 +1 +1  +1 -1 -1  +1 +1 +1\} \\ 
 & gtDD22 & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
\end{tabular*} 



\vspace{5mm}
\vspace{5mm}

\begin{tabular*}{150mm}{|c|c@{\extracolsep{\fill}}|rl|} \hline 
~ {\bf Group Names} ~ & ~ {\bf Variable Names} ~  &{\bf Details} ~ & ~ \\ 
\hline 
gt\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & gt\_rhsDD00 & compact & 0 \\ 
 & gt\_rhsDD01 & dimensions & 3 \\ 
 & gt\_rhsDD02 & distribution & DEFAULT \\ 
 & gt\_rhsDD11 & group type & GF \\ 
 & gt\_rhsDD12 & tags & checkpoint="no" parities=\{+1 +1 +1  -1 -1 +1  -1 +1 -1  +1 +1 +1  +1 -1 -1  +1 +1 +1\} \\ 
 & gt\_rhsDD22 & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
shift\_b &  & centering & centering=\{0 0 0\} \\ 
 & shift\_BU0 & compact & 0 \\ 
 & shift\_BU1 & dimensions & 3 \\ 
 & shift\_BU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::shift\_B\_rhs" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
shift\_b\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & shift\_B\_rhsU0 & compact & 0 \\ 
 & shift\_B\_rhsU1 & dimensions & 3 \\ 
 & shift\_B\_rhsU2 & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{-1 +1 +1  +1 -1 +1  +1 +1 -1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
trk &  & centering & centering=\{0 0 0\} \\ 
 & trK & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::trK\_rhs" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
trk\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & trK\_rhs & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
w &  & centering & centering=\{0 0 0\} \\ 
 & w & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & rhs="CottonmouthBSSNOK::w\_rhs" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
\end{tabular*} 



\vspace{5mm}
\vspace{5mm}

\begin{tabular*}{150mm}{|c|c@{\extracolsep{\fill}}|rl|} \hline 
~ {\bf Group Names} ~ & ~ {\bf Variable Names} ~  &{\bf Details} ~ & ~ \\ 
\hline 
w\_rhs &  & centering & centering=\{0 0 0\} \\ 
 & w\_rhs & compact & 0 \\ 
 &  & dimensions & 3 \\ 
 &  & distribution & DEFAULT \\ 
 &  & group type & GF \\ 
 &  & tags & checkpoint="no" parities=\{+1 +1 +1\} \\ 
 &  & timelevels & 1 \\ 
 &  & variable type & REAL \\ 
\hline 
\end{tabular*} 



\vspace{5mm}

\noindent {\bf Uses header}: 

newradx.hxx
\vspace{2mm}\parskip = 10pt 

\section{Schedule} 


\parskip = 0pt


\noindent This section lists all the variables which are assigned storage by thorn Cottonmouth/CottonmouthBSSNOK.  Storage can either last for the duration of the run ({\bf Always} means that if this thorn is activated storage will be assigned, {\bf Conditional} means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.


\subsection*{Storage}

\hspace{5mm}

 \begin{tabular*}{160mm}{ll} 

{\bf Always:}&  ~ \\ 
 At[1] & ~\\ 
 At\_rhs[1] & ~\\ 
 evo\_shift\_rhs[1] & ~\\ 
 gt[1] & ~\\ 
 gt\_rhs[1] & ~\\ 
 shift\_B[1] & ~\\ 
 shift\_B\_rhs[1] & ~\\ 
 trK[1] & ~\\ 
 trK\_rhs[1] & ~\\ 
 w[1] & ~\\ 
 w\_rhs[1] & ~\\ 
 ConfConnect[1] & ~\\ 
 ConfConnect\_rhs[1] & ~\\ 
 DeltaCons[1] & ~\\ 
 HamCons[1] & ~\\ 
 MomCons[1] & ~\\ 
 evo\_lapse[1] & ~\\ 
 evo\_lapse\_rhs[1] & ~\\ 
 evo\_shift[1] & ~\\ 
~ & ~\\ 
\end{tabular*} 


\subsection*{Scheduled Functions}
\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_InitialGroup} 

\hspace{5mm} adm2bssn\_pt1\_group 

\hspace{5mm}{\it group for function `adm2bssn\_pt1`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf adm2bssn\_pt1\_group} 

\hspace{5mm} adm2bssn\_pt1 

\hspace{5mm}{\it function `adm2bssn\_pt1` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & admbasex::alp(interior) \\ 
~& ~ &admbasex::betax(everywhere)\\ 
~& ~ &admbasex::betay(everywhere)\\ 
~& ~ &admbasex::betaz(everywhere)\\ 
~& ~ &admbasex::dtbetax(interior)\\ 
~& ~ &admbasex::dtbetay(interior)\\ 
~& ~ &admbasex::dtbetaz(interior)\\ 
~& ~ &admbasex::gxx(interior)\\ 
~& ~ &admbasex::gxy(interior)\\ 
~& ~ &admbasex::gxz(interior)\\ 
~& ~ &admbasex::gyy(interior)\\ 
~& ~ &admbasex::gyz(interior)\\ 
~& ~ &admbasex::gzz(interior)\\ 
~& ~ &admbasex::kxx(interior)\\ 
~& ~ &admbasex::kxy(interior)\\ 
~& ~ &admbasex::kxz(interior)\\ 
~& ~ &admbasex::kyy(interior)\\ 
~& ~ &admbasex::kyz(interior)\\ 
~& ~ &admbasex::kzz(interior)\\ 
~ & Type:  & function \\ 
~ & Writes:  & atdd00(interior) \\ 
~& ~ &atdd01(interior)\\ 
~& ~ &atdd02(interior)\\ 
~& ~ &atdd11(interior)\\ 
~& ~ &atdd12(interior)\\ 
~& ~ &atdd22(interior)\\ 
~& ~ &evo\_lapse(interior)\\ 
~& ~ &evo\_shiftu0(interior)\\ 
~& ~ &evo\_shiftu1(interior)\\ 
~& ~ &evo\_shiftu2(interior)\\ 
~& ~ &gtdd00(interior)\\ 
~& ~ &gtdd01(interior)\\ 
~& ~ &gtdd02(interior)\\ 
~& ~ &gtdd11(interior)\\ 
~& ~ &gtdd12(interior)\\ 
~& ~ &gtdd22(interior)\\ 
~& ~ &shift\_bu0(interior)\\ 
~& ~ &shift\_bu1(interior)\\ 
~& ~ &shift\_bu2(interior)\\ 
~& ~ &trk(interior)\\ 
~& ~ &w(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf bssn2adm\_group} 

\hspace{5mm} bssn2adm 

\hspace{5mm}{\it function `bssn2adm` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & atdd00(everywhere) \\ 
~& ~ &atdd01(everywhere)\\ 
~& ~ &atdd02(everywhere)\\ 
~& ~ &atdd11(everywhere)\\ 
~& ~ &atdd12(everywhere)\\ 
~& ~ &atdd22(everywhere)\\ 
~& ~ &evo\_lapse(everywhere)\\ 
~& ~ &evo\_shiftu0(everywhere)\\ 
~& ~ &evo\_shiftu1(everywhere)\\ 
~& ~ &evo\_shiftu2(everywhere)\\ 
~& ~ &gtdd00(everywhere)\\ 
~& ~ &gtdd01(everywhere)\\ 
~& ~ &gtdd02(everywhere)\\ 
~& ~ &gtdd11(everywhere)\\ 
~& ~ &gtdd12(everywhere)\\ 
~& ~ &gtdd22(everywhere)\\ 
~& ~ &trk(everywhere)\\ 
~& ~ &w(everywhere)\\ 
~ & Type:  & function \\ 
~ & Writes:  & admbasex::alp(everywhere) \\ 
~& ~ &admbasex::betax(everywhere)\\ 
~& ~ &admbasex::betay(everywhere)\\ 
~& ~ &admbasex::betaz(everywhere)\\ 
~& ~ &admbasex::gxx(everywhere)\\ 
~& ~ &admbasex::gxy(everywhere)\\ 
~& ~ &admbasex::gxz(everywhere)\\ 
~& ~ &admbasex::gyy(everywhere)\\ 
~& ~ &admbasex::gyz(everywhere)\\ 
~& ~ &admbasex::gzz(everywhere)\\ 
~& ~ &admbasex::kxx(everywhere)\\ 
~& ~ &admbasex::kxy(everywhere)\\ 
~& ~ &admbasex::kxz(everywhere)\\ 
~& ~ &admbasex::kyy(everywhere)\\ 
~& ~ &admbasex::kyz(everywhere)\\ 
~& ~ &admbasex::kzz(everywhere)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf bssn2adm\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `bssn2adm`. syncs: at, evo\_lapse, evo\_shift, gt, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & bssn2adm \\ 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &evo\_lapse\\ 
~& ~ &evo\_shift\\ 
~& ~ &gt\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_AnalysisGroup} 

\hspace{5mm} constraints\_group 

\hspace{5mm}{\it group for function `constraints`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf constraints\_group} 

\hspace{5mm} constraints 

\hspace{5mm}{\it function `constraints` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & atdd00(everywhere) \\ 
~& ~ &atdd01(everywhere)\\ 
~& ~ &atdd02(everywhere)\\ 
~& ~ &atdd11(everywhere)\\ 
~& ~ &atdd12(everywhere)\\ 
~& ~ &atdd22(everywhere)\\ 
~& ~ &confconnectu0(everywhere)\\ 
~& ~ &confconnectu1(everywhere)\\ 
~& ~ &confconnectu2(everywhere)\\ 
~& ~ &tmunubasex::ettt(interior)\\ 
~& ~ &tmunubasex::ettx(interior)\\ 
~& ~ &tmunubasex::etty(interior)\\ 
~& ~ &tmunubasex::ettz(interior)\\ 
~& ~ &tmunubasex::etxx(interior)\\ 
~& ~ &tmunubasex::etxy(interior)\\ 
~& ~ &tmunubasex::etxz(interior)\\ 
~& ~ &tmunubasex::etyy(interior)\\ 
~& ~ &tmunubasex::etyz(interior)\\ 
~& ~ &tmunubasex::etzz(interior)\\ 
~& ~ &evo\_lapse(interior)\\ 
~& ~ &evo\_shiftu0(interior)\\ 
~& ~ &evo\_shiftu1(interior)\\ 
~& ~ &evo\_shiftu2(interior)\\ 
~& ~ &gtdd00(everywhere)\\ 
~& ~ &gtdd01(everywhere)\\ 
~& ~ &gtdd02(everywhere)\\ 
~& ~ &gtdd11(everywhere)\\ 
~& ~ &gtdd12(everywhere)\\ 
~& ~ &gtdd22(everywhere)\\ 
~& ~ &trk(everywhere)\\ 
~& ~ &w(everywhere)\\ 
~ & Type:  & function \\ 
~ & Writes:  & deltaconsu0(interior) \\ 
~& ~ &deltaconsu1(interior)\\ 
~& ~ &deltaconsu2(interior)\\ 
~& ~ &hamcons(interior)\\ 
~& ~ &momconsu0(interior)\\ 
~& ~ &momconsu1(interior)\\ 
~& ~ &momconsu2(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf constraints\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `constraints`. syncs: at, confconnect, gt, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & constraints \\ 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &confconnect\\ 
~& ~ &gt\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_PostStepGroup} 

\hspace{5mm} enforce\_pt1\_group 

\hspace{5mm}{\it group for function `enforce\_pt1`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf enforce\_pt1\_group} 

\hspace{5mm} enforce\_pt1 

\hspace{5mm}{\it function `enforce\_pt1` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & evo\_lapse(interior) \\ 
~& ~ &gtdd00(interior)\\ 
~& ~ &gtdd01(interior)\\ 
~& ~ &gtdd02(interior)\\ 
~& ~ &gtdd11(interior)\\ 
~& ~ &gtdd12(interior)\\ 
~& ~ &gtdd22(interior)\\ 
~& ~ &w(interior)\\ 
~ & Type:  & function \\ 
~ & Writes:  & evo\_lapse(interior) \\ 
~& ~ &gtdd00(interior)\\ 
~& ~ &gtdd01(interior)\\ 
~& ~ &gtdd02(interior)\\ 
~& ~ &gtdd11(interior)\\ 
~& ~ &gtdd12(interior)\\ 
~& ~ &gtdd22(interior)\\ 
~& ~ &w(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_PostStepGroup} 

\hspace{5mm} enforce\_pt2\_group 

\hspace{5mm}{\it group for function `enforce\_pt2`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & enforce\_pt1\_group \\ 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf enforce\_pt2\_group} 

\hspace{5mm} enforce\_pt2 

\hspace{5mm}{\it function `enforce\_pt2` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & atdd00(interior) \\ 
~& ~ &atdd01(interior)\\ 
~& ~ &atdd02(interior)\\ 
~& ~ &atdd11(interior)\\ 
~& ~ &atdd12(interior)\\ 
~& ~ &atdd22(interior)\\ 
~& ~ &gtdd00(interior)\\ 
~& ~ &gtdd01(interior)\\ 
~& ~ &gtdd02(interior)\\ 
~& ~ &gtdd11(interior)\\ 
~& ~ &gtdd12(interior)\\ 
~& ~ &gtdd22(interior)\\ 
~ & Type:  & function \\ 
~ & Writes:  & atdd00(interior) \\ 
~& ~ &atdd01(interior)\\ 
~& ~ &atdd02(interior)\\ 
~& ~ &atdd11(interior)\\ 
~& ~ &atdd12(interior)\\ 
~& ~ &atdd22(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_RHSGroup} 

\hspace{5mm} rhs\_group 

\hspace{5mm}{\it group for function `rhs`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf adm2bssn\_pt1\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `adm2bssn\_pt1`. syncs: admbasex::shift. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & adm2bssn\_pt1 \\ 
~ & Language:  & c \\ 
~ & Sync:  & admbasex::shift \\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf rhs\_group} 

\hspace{5mm} rhs 

\hspace{5mm}{\it function `rhs` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & atdd00(everywhere) \\ 
~& ~ &atdd01(everywhere)\\ 
~& ~ &atdd02(everywhere)\\ 
~& ~ &atdd11(everywhere)\\ 
~& ~ &atdd12(everywhere)\\ 
~& ~ &atdd22(everywhere)\\ 
~& ~ &confconnectu0(everywhere)\\ 
~& ~ &confconnectu1(everywhere)\\ 
~& ~ &confconnectu2(everywhere)\\ 
~& ~ &tmunubasex::ettt(interior)\\ 
~& ~ &tmunubasex::ettx(interior)\\ 
~& ~ &tmunubasex::etty(interior)\\ 
~& ~ &tmunubasex::ettz(interior)\\ 
~& ~ &tmunubasex::etxx(interior)\\ 
~& ~ &tmunubasex::etxy(interior)\\ 
~& ~ &tmunubasex::etxz(interior)\\ 
~& ~ &tmunubasex::etyy(interior)\\ 
~& ~ &tmunubasex::etyz(interior)\\ 
~& ~ &tmunubasex::etzz(interior)\\ 
~& ~ &evo\_lapse(everywhere)\\ 
~& ~ &evo\_shiftu0(everywhere)\\ 
~& ~ &evo\_shiftu1(everywhere)\\ 
~& ~ &evo\_shiftu2(everywhere)\\ 
~& ~ &gtdd00(everywhere)\\ 
~& ~ &gtdd01(everywhere)\\ 
~& ~ &gtdd02(everywhere)\\ 
~& ~ &gtdd11(everywhere)\\ 
~& ~ &gtdd12(everywhere)\\ 
~& ~ &gtdd22(everywhere)\\ 
~& ~ &shift\_bu0(everywhere)\\ 
~& ~ &shift\_bu1(everywhere)\\ 
~& ~ &shift\_bu2(everywhere)\\ 
~& ~ &trk(everywhere)\\ 
~& ~ &w(everywhere)\\ 
~ & Type:  & function \\ 
~ & Writes:  & at\_rhsdd00(interior) \\ 
~& ~ &at\_rhsdd01(interior)\\ 
~& ~ &at\_rhsdd02(interior)\\ 
~& ~ &at\_rhsdd11(interior)\\ 
~& ~ &at\_rhsdd12(interior)\\ 
~& ~ &at\_rhsdd22(interior)\\ 
~& ~ &confconnect\_rhsu0(interior)\\ 
~& ~ &confconnect\_rhsu1(interior)\\ 
~& ~ &confconnect\_rhsu2(interior)\\ 
~& ~ &evo\_lapse\_rhs(interior)\\ 
~& ~ &evo\_shift\_rhsu0(interior)\\ 
~& ~ &evo\_shift\_rhsu1(interior)\\ 
~& ~ &evo\_shift\_rhsu2(interior)\\ 
~& ~ &gt\_rhsdd00(interior)\\ 
~& ~ &gt\_rhsdd01(interior)\\ 
~& ~ &gt\_rhsdd02(interior)\\ 
~& ~ &gt\_rhsdd11(interior)\\ 
~& ~ &gt\_rhsdd12(interior)\\ 
~& ~ &gt\_rhsdd22(interior)\\ 
~& ~ &shift\_b\_rhsu0(interior)\\ 
~& ~ &shift\_b\_rhsu1(interior)\\ 
~& ~ &shift\_b\_rhsu2(interior)\\ 
~& ~ &trk\_rhs(interior)\\ 
~& ~ &w\_rhs(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf rhs\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `rhs`. syncs: at, confconnect, evo\_lapse, evo\_shift, gt, shift\_b, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & rhs \\ 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &confconnect\\ 
~& ~ &evo\_lapse\\ 
~& ~ &evo\_shift\\ 
~& ~ &gt\\ 
~& ~ &shift\_b\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf ODESolvers\_Initial} 

\hspace{5mm} cottonmouthbssnok\_initialgroup 

\hspace{5mm}{\it bssnok initialization routines } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & admbasex\_postinitial \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf ODESolvers\_PostStep} 

\hspace{5mm} cottonmouthbssnok\_poststepgroup 

\hspace{5mm}{\it bssnok post-step routines } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & admbasex\_setadmvars \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf ODESolvers\_RHS} 

\hspace{5mm} cottonmouthbssnok\_rhsgroup 

\hspace{5mm}{\it bssnok equations rhs computation } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CCTK\_ANALYSIS} 

\hspace{5mm} cottonmouthbssnok\_analysisgroup 

\hspace{5mm}{\it bssnok analysis routines } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_AnalysisGroup} 

\hspace{5mm} sync\_monitored\_constraints 

\hspace{5mm}{\it empty function for explicitly syncing variables as provided in an explicitsyncbatch. syncs: hamcons, momcons, deltacons. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & constraints \\ 
~ & Language:  & c \\ 
~ & Sync:  & hamcons \\ 
~& ~ &momcons\\ 
~& ~ &deltacons\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CCTK\_POSTPOSTINITIAL} 

\hspace{5mm} init\_evolve\_cottonmouthbssnok 

\hspace{5mm}{\it group containing all functions from evolve that should run before step 0. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CCTK\_POSTPOSTINITIAL} 

\hspace{5mm} init\_analysis\_cottonmouthbssnok 

\hspace{5mm}{\it group containing all functions from analysis that should run before step 0. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & init\_evolve\_cottonmouthbssnok \\ 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CCTK\_POSTPOSTINITIAL} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function to sync the state vector. syncs: at, confconnect, evo\_lapse, evo\_shift, gt, shift\_b, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & init\_evolve\_cottonmouthbssnok \\ 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &confconnect\\ 
~& ~ &evo\_lapse\\ 
~& ~ &evo\_shift\\ 
~& ~ &gt\\ 
~& ~ &shift\_b\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_InitialGroup} 

\hspace{5mm} adm2bssn\_pt2\_group 

\hspace{5mm}{\it group for function `adm2bssn\_pt2`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & adm2bssn\_pt1\_group \\ 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CCTK\_POSTSTEP} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function to sync the state vector. syncs: at, confconnect, evo\_lapse, evo\_shift, gt, shift\_b, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &confconnect\\ 
~& ~ &evo\_lapse\\ 
~& ~ &evo\_shift\\ 
~& ~ &gt\\ 
~& ~ &shift\_b\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf adm2bssn\_pt2\_group} 

\hspace{5mm} adm2bssn\_pt2 

\hspace{5mm}{\it function `adm2bssn\_pt2` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & gtdd00(everywhere) \\ 
~& ~ &gtdd01(everywhere)\\ 
~& ~ &gtdd02(everywhere)\\ 
~& ~ &gtdd11(everywhere)\\ 
~& ~ &gtdd12(everywhere)\\ 
~& ~ &gtdd22(everywhere)\\ 
~ & Type:  & function \\ 
~ & Writes:  & confconnectu0(interior) \\ 
~& ~ &confconnectu1(interior)\\ 
~& ~ &confconnectu2(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf adm2bssn\_pt2\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `adm2bssn\_pt2`. syncs: gt. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & adm2bssn\_pt2 \\ 
~ & Language:  & c \\ 
~ & Sync:  & gt \\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_RHSGroup} 

\hspace{5mm} apply\_dissipation\_group 

\hspace{5mm}{\it group for function `apply\_dissipation`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & rhs\_group \\ 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf apply\_dissipation\_group} 

\hspace{5mm} apply\_dissipation 

\hspace{5mm}{\it function `apply\_dissipation` generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Language:  & c \\ 
~ & Reads:  & atdd00(everywhere) \\ 
~& ~ &atdd01(everywhere)\\ 
~& ~ &atdd02(everywhere)\\ 
~& ~ &atdd11(everywhere)\\ 
~& ~ &atdd12(everywhere)\\ 
~& ~ &atdd22(everywhere)\\ 
~& ~ &at\_rhsdd00(interior)\\ 
~& ~ &at\_rhsdd01(interior)\\ 
~& ~ &at\_rhsdd02(interior)\\ 
~& ~ &at\_rhsdd11(interior)\\ 
~& ~ &at\_rhsdd12(interior)\\ 
~& ~ &at\_rhsdd22(interior)\\ 
~& ~ &confconnectu0(everywhere)\\ 
~& ~ &confconnectu1(everywhere)\\ 
~& ~ &confconnectu2(everywhere)\\ 
~& ~ &confconnect\_rhsu0(interior)\\ 
~& ~ &confconnect\_rhsu1(interior)\\ 
~& ~ &confconnect\_rhsu2(interior)\\ 
~& ~ &evo\_lapse(everywhere)\\ 
~& ~ &evo\_lapse\_rhs(interior)\\ 
~& ~ &evo\_shiftu0(everywhere)\\ 
~& ~ &evo\_shiftu1(everywhere)\\ 
~& ~ &evo\_shiftu2(everywhere)\\ 
~& ~ &evo\_shift\_rhsu0(interior)\\ 
~& ~ &evo\_shift\_rhsu1(interior)\\ 
~& ~ &evo\_shift\_rhsu2(interior)\\ 
~& ~ &gtdd00(everywhere)\\ 
~& ~ &gtdd01(everywhere)\\ 
~& ~ &gtdd02(everywhere)\\ 
~& ~ &gtdd11(everywhere)\\ 
~& ~ &gtdd12(everywhere)\\ 
~& ~ &gtdd22(everywhere)\\ 
~& ~ &gt\_rhsdd00(interior)\\ 
~& ~ &gt\_rhsdd01(interior)\\ 
~& ~ &gt\_rhsdd02(interior)\\ 
~& ~ &gt\_rhsdd11(interior)\\ 
~& ~ &gt\_rhsdd12(interior)\\ 
~& ~ &gt\_rhsdd22(interior)\\ 
~& ~ &shift\_bu0(everywhere)\\ 
~& ~ &shift\_bu1(everywhere)\\ 
~& ~ &shift\_bu2(everywhere)\\ 
~& ~ &shift\_b\_rhsu0(interior)\\ 
~& ~ &shift\_b\_rhsu1(interior)\\ 
~& ~ &shift\_b\_rhsu2(interior)\\ 
~& ~ &trk(everywhere)\\ 
~& ~ &trk\_rhs(interior)\\ 
~& ~ &w(everywhere)\\ 
~& ~ &w\_rhs(interior)\\ 
~ & Type:  & function \\ 
~ & Writes:  & at\_rhsdd00(interior) \\ 
~& ~ &at\_rhsdd01(interior)\\ 
~& ~ &at\_rhsdd02(interior)\\ 
~& ~ &at\_rhsdd11(interior)\\ 
~& ~ &at\_rhsdd12(interior)\\ 
~& ~ &at\_rhsdd22(interior)\\ 
~& ~ &confconnect\_rhsu0(interior)\\ 
~& ~ &confconnect\_rhsu1(interior)\\ 
~& ~ &confconnect\_rhsu2(interior)\\ 
~& ~ &evo\_lapse\_rhs(interior)\\ 
~& ~ &evo\_shift\_rhsu0(interior)\\ 
~& ~ &evo\_shift\_rhsu1(interior)\\ 
~& ~ &evo\_shift\_rhsu2(interior)\\ 
~& ~ &gt\_rhsdd00(interior)\\ 
~& ~ &gt\_rhsdd01(interior)\\ 
~& ~ &gt\_rhsdd02(interior)\\ 
~& ~ &gt\_rhsdd11(interior)\\ 
~& ~ &gt\_rhsdd12(interior)\\ 
~& ~ &gt\_rhsdd22(interior)\\ 
~& ~ &shift\_b\_rhsu0(interior)\\ 
~& ~ &shift\_b\_rhsu1(interior)\\ 
~& ~ &shift\_b\_rhsu2(interior)\\ 
~& ~ &trk\_rhs(interior)\\ 
~& ~ &w\_rhs(interior)\\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf apply\_dissipation\_group} 

\hspace{5mm} statesync\_cottonmouthbssnok 

\hspace{5mm}{\it empty function for explicitly syncing variables read everywhere in function `apply\_dissipation`. syncs: at, confconnect, evo\_lapse, evo\_shift, gt, shift\_b, trk, w. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & Before:  & apply\_dissipation \\ 
~ & Language:  & c \\ 
~ & Sync:  & at \\ 
~& ~ &confconnect\\ 
~& ~ &evo\_lapse\\ 
~& ~ &evo\_shift\\ 
~& ~ &gt\\ 
~& ~ &shift\_b\\ 
~& ~ &trk\\ 
~& ~ &w\\ 
~ & Type:  & function \\ 
\end{tabular*} 


\vspace{5mm}

\noindent {\bf CottonmouthBSSNOK\_PostStepGroup} 

\hspace{5mm} bssn2adm\_group 

\hspace{5mm}{\it group for function `bssn2adm`. generated by einsteinengine. } 


\hspace{5mm}

 \begin{tabular*}{160mm}{cll} 
~ & After:  & enforce\_pt2\_group \\ 
~ & Language:  & c \\ 
~ & Type:  & group \\ 
\end{tabular*} 



\vspace{5mm}\parskip = 10pt 
\end{document}
