Thorn Guide for the Exact Thorn

Date

Abstract

This thorn sets up the $3+1$ ADM variables for any of a number of exact spacetimes/coordinates, and even some non-Einstein spcetimes/coordinates. It’s easy to add more spacetimes/coordinates: all you have to supply is the 4-metric ${g}_{ab}$ and the inverse 4-metric ${g}^{ab}$ (this thorn automagically calculates all the ADM variables from these). Optionally, any 4-metric can be Lorentz-boosted in any direction. As another option, the ADM variables can be calculated on an arbitrary slice through the spacetime, using arbitrary coordinates on the slice. Given a lapse and shift, the slice can be evolved through the exact solution, in order to check on an evolution code, or in order to test gauge conditions without the need for an evolution code.

1 Introduction

This thorn sets up the ADM variables for any of a number of diﬀerent spacetimes/coordinates (we call the combination of a spacetime and a coordinate system a model), as speciﬁed by the Exact::exact_model parameter.

By default, this thorn sets up the ADM variables on an initial slice only. However, setting
ADMBase::evolution_method = "exact" makes this thorn set up the ADM variables at CCTK_PRESTEP every time step of an evolution, so you get an exact spacetime, not just a single slice.

There is an option to Lorentz-boost any vacuum model (more precisely any model which doesn’t set the stress-energy tensor; see table 1 and section 2 for details) in any direction.

There is also a more general option to set up the ADM variables on an arbitrary slice through the spacetime, using arbitrary coordinates on the slice. Given a lapse and shift computed by some other thorn(s), the slice can be evolved through the exact solution, in order to check on an evolution code, or in order to test gauge conditions without the need for an evolution code. This option is documented in doc/slice_evolver.tex.

This thorn is mainly written in a mixture of Fortran 77 and Fortran 90; a few routines are written in C. At present Fortran 90 is used only for the “arbitrary slice” option (described in the previous paragraph). If this option isn’t needed, then the Fortran 90 code can all be #ifdef-ed out, allowing this thorn to be compiled on a system having only Fortran 77 and C compilers (i.e. no Fortran 90 compiler). This can be done by changing a single line in src/include/Exact.inc; see the comments there for details.

1.1 Models Supported

Table 1 shows the models supported by thorn Exact.1 As a general policy, this thorn includes only cases where the full 4-metric ${g}_{ab}$ (and its inverse, although we could dispense with that if needed) is known throughout the spacetime. Cases where this is only known on one speciﬁc slice, should live in separate initial data thorns.

 Model Name ${T}_{\mu \nu }$? Description Minkowski spacetime "Minkowski" – Minkowski spacetime "Minkowski/shift" – Minkowski spacetime with time-dependent shift vector "Minkowski/funny" – Minkowski spacetime in non-trivial spatial coordinates "Minkowski/gauge wave" – Minkowski spacetime in gauge-wave coordinates "Minkowski/shifted gauge wave" – Minkowski spacetime in shifted gauge-wave coordinates "Minkowski/conf wave" – Minkowski spacetime with $sin$ in conformal factor Black hole spacetimes "Schwarzschild/EF" – Schwarzschild spacetime in Eddington-Finkelstein coordinates "Schwarzschild/PG" – Schwarzschild spacetime in Painlevé-Gullstrand coordinates (these have a ﬂat 3-metric) "Schwarzschild/BL" – Schwarzschild spacetime in Brill-Lindquist coordinates "Schwarzschild/Novikov" – Schwarzschild spacetime in Novikov coordinates "Kerr/Boyer-Lindquist" – Kerr spacetime in Boyer-Lindquist coordinates "Kerr/Kerr-Schild" – Kerr spacetime in Kerr-Schild coordinates "Schwarzschild-Lemaitre" Yes Schwarzschild-Lemaitre spacetime (Schwarzschild black hole with a cosmological constant) "multi-BH" – Majumdar-Papapetrou or Kastor-Traschen maximally-charged (extreme Reissner-Nordstrom) multi-BH solutions "Alvi" – Alvi post-Newtonian 2BH spacetime (not fully implemented yet) "Thorne-fakebinary" – Thorne’s “fake binary” spacetime (non-Einstein) Cosmological spacetimes "Lemaitre" Yes Lemaitre-type spacetime "de Sitter" Yes de Sitter spacetime "de Sitter+Lambda" Yes de Sitter spacetime with cosmological constant "anti-de Sitter+Lambda" Yes anti-de Sitter spacetime with cosmological constant "Bianchi I" – approximate Bianchi type I spacetime "Goedel" – Gödel spacetime "Bertotti" Yes Bertotti spacetime "Kasner" Yes Kasner-like spacetime "Kasner-axisymmetric" – axisymmetric Kasner spacetime "Kasner-generalized" Yes generalized Kasner spacetime "Gowdy-wave" – Gowdy metric (polarized wave in an expanding universe) "Milne" – Milne spacetime for pre-big-bang cosmology Miscellaneous spacetimes "boost-rotation symmetric" – boost-rotation symmetric spacetime "bowl" – bowl (“bag of gold”) spacetime (non-Einstein) "constant density star" Yes constant density (Schwarzschild) star

Table 1: This table shows all the models currently supported by thorn Exact. The ${T}_{\mu \nu }$ column shows which models set the Cactus stress-energy tensor; as discussed in section 1.3 this includes both all non-vacuum models and all models with a cosmological constant.

1.2 Naming Conventions

This thorn includes many diﬀerent spacetimes and coordinate systems, so we use the following naming conventions to help keep the diﬀerent models and parameters clear:

• If we have multiple coordinate systems for a given spacetime, the models are named with the pattern "spacetime/coordinates". For example, the model "Schwarzschild/EF" is Schwarzschild spacetime in Eddington-Finkelstein coordinates.2
• If we have spacetimes which are identical or very similar, except that one has a cosmological constant and the other doesn’t, we name the with-cosmological-constant one by appending +Lambda to the without-cosmological-constant spacetime name. For example, the cosmological-constant variant of anti-de Sitter spacetime is the model "anti-de Sitter+Lambda".
• All the parameters for individual models have names which begin with the model name (with any slash (/) or hyphen (-) characters converted to underscores (_)), followed by a double underscore (__).
• The description comment for each parameter in the param.ccl ﬁle begins with the model name follwed by a colon (:). For example,
REAL Schwarzschild_EF__mass "Schwarzschild/EF: BH mass"
{
*:* :: "any real number"
} 1.0

1.3 The Cosmological Constant and the Stress-Energy Tensor

A number of these models have a cosmological constant. To use these with the Cactus code (which generally is written for the case of no cosmological constant), we use a simple trick: we transfer the term with the cosmological constant to the right hand side of the Einstein equations, introducing ﬁctitious “matter” terms in the stress-energy tensor.

This thorn uses the standard Cactus “CalcTmunu” interface for introducing terms into the stress-energy tensor. See Ian Hawke’s documentation for the ADMCoupling thorn for details.

1.4 Accuracy

This thorn has been found to set up its initial data less accurately than you might think. In particular,

Denis Pollney has found that if this thorn is used to set up a Schwarzschild or Kerr solution (Schwarzschild/EF or Kerr/Kerr-Schild model), there are low-level ($\sim 1{0}^{-12}$) asymmetries between the ﬁeld variables in the supposedly-symmetric octants.

Jonathan Thornburg has found that for at least the Schwarzschild/EF and Kerr/Kerr-Schild models (and quite likely for all models), this thorn’s values of the extrinsic curvature ${K}_{ij}$ have random point-to-point errors of about $\sim \frac{1}{2}×1{0}^{-10}$ (in regions where the metric is $O\left(1\right)$.

We suspect that these problems may be due to this thorn’s internally ﬁrst setting up the 4-metric, then computing the Bona-Masso variables by numerically ﬁnite diﬀerencing the 4-metric3 , then computing the ADM variables from this.

1.5 Time Levels

In the context of Cactus grid functions with (potentially) multiple time levels, this thorn only sets the initial data on the current time level!. This is a bug. :(

If you’re doing a time evolution using the standard Cactus MoL thorn,

• Variables that you’re going to evolve (for example the ADM 3-metric if you’re evolving it directly) only need initial data to be set on the current time level.
• Other variables that are used by the evolution system, but aren’t themselves evolved (for example the ADM 3-metric if you’re evolving some other ﬁelds on a ﬁxed background) must have initial data set on all time levels. MoL calls these “save-and-restore” variables.

MoL oﬀers a useful option to help work around problems of this sort (only the current time level is set, when you need all time levels): If you set

MoL::initial_data_is_crap = true

then MoL will copy the current time level to all other time levels, for all grid functions that are registered as “evolved”, “save-and-restore”, and/or “constrained” variables. This happens in the POSTINITIAL schedule bin.

1.6 Further Sources of Information

This documentation is at best a secondary source of information about this thorn – the primary sources are the param.ccl ﬁle and the source code itself. In particular, much of this documentation was developed by reverse-engineering from these primary sources, so it’s quite possible (indeed even likely!) that there are errors or omissions here. Caveat Lector!

2 Lorentz-Boosting a Spacetime

For any of the models which don’t set the stress-energy tensor (i.e. which are vacuum and have no cosmological constant; see section 1.3 and table 1 for details),4 you can optionally Lorentz-boost the model by a speciﬁed 3-velocity ${v}^{i}$. The parameters for this are boost_vx, boost_vy, and boost_vz.

We deﬁne the Cactus spacetime coordinates to be $\left(t,{x}^{i}\right)$, while the model is at rest in coordinates $\left(T,{X}^{i}\right)$. The model’s “origin” ${X}^{i}=0$ is located at the Cactus coordinates ${x}^{i}={v}^{i}t$.

The boost Lorentz transformation is deﬁned by

 $\begin{array}{ccc}T\hfill & \hfill =\hfill & \gamma \left(t-{\eta }_{ij}{v}^{i}{x}^{j}\right)\hfill \\ {X}_{\parallel }^{i}\hfill & \hfill =\hfill & \gamma \left({x}_{\parallel }^{i}-{v}^{i}t\right)\hfill \\ {X}_{\perp }^{i}\hfill & \hfill =\hfill & {x}_{\perp }^{i}\hfill \end{array}$ (1)

and the inverse transformation by

 $\begin{array}{ccc}t\hfill & \hfill =\hfill & \gamma \left(T+{\eta }_{ij}{v}^{i}{X}^{j}\right)\hfill \\ {x}_{\parallel }^{i}\hfill & \hfill =\hfill & \gamma \left({X}_{\parallel }^{i}+{v}^{i}T\right)\hfill \\ {x}_{\perp }^{i}\hfill & \hfill =\hfill & {X}_{\perp }^{i}\hfill \end{array}$ (2)

where $\gamma \equiv {\left(1-{v}^{2}\right)}^{-1∕2}$ is the usual Lorentz factor, ${\eta }_{ij}$ is the ﬂat metric, and $\parallel$ and $\perp$ refer to the (ﬂat-space) components of ${x}^{i}$ parallel and perpendicular to ${v}^{i}$, respectively.

In more detail, deﬁne the unit vector ${n}^{i}={v}^{i}∕\sqrt{{\eta }_{jk}{v}^{j}{v}^{k}}$ and the (ﬂat-space) projection operators

 $\begin{array}{ccc}{\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}\hfill & \hfill =\hfill & {\eta }_{jk}{n}^{i}{n}^{k}\hfill \\ \hfill & \hfill \equiv \hfill & {n}^{i}{n}_{j}\phantom{\rule{2em}{0ex}}\left(using{\eta }_{ij}toraise/lowerindices\right)\hfill \\ {\perp }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}\hfill & \hfill =\hfill & {\delta {}_{i}}^{}j-{\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}\hfill \end{array}$ (3)

Then the Lorentz transformations are

 $\begin{array}{ccc}T\hfill & \hfill =\hfill & \gamma \left(t-{\eta }_{ij}{v}^{i}{x}^{j}\right)\hfill \\ {X}^{i}\hfill & \hfill =\hfill & \gamma \left({\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}{x}^{j}-{v}^{i}t\right)+{\perp }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}{x}^{j}\hfill \end{array}$ (4)

and

 $\begin{array}{ccc}t\hfill & \hfill =\hfill & \gamma \left(T+{\eta }_{ij}{v}^{i}{X}^{j}\right)\hfill \\ x\hfill & \hfill =\hfill & \gamma \left({\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}{X}^{j}+{v}^{i}T\right)+{\perp }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}{X}^{j}\hfill \end{array}$ (5)

so their coordinate partial derivatives for transforming ${g}_{ab}$ and ${g}^{ab}$ are

 $\begin{array}{cccccc}\frac{\partial T}{\partial t}\hfill & \hfill =\hfill & \gamma \phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\hfill & \frac{\partial T}{\partial {x}^{j}}\hfill & \hfill =\hfill & -\gamma {v}^{j}\hfill \\ \frac{\partial {X}^{i}}{\partial t}\hfill & \hfill =\hfill & -\gamma {v}^{i}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\hfill & \frac{\partial {X}^{i}}{\partial {x}^{j}}\hfill & \hfill =\hfill & \gamma {\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}+{\perp }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}\hfill \end{array}$ (6)

and

 $\begin{array}{cccccc}\frac{\partial t}{\partial T}\hfill & \hfill =\hfill & \gamma \phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\hfill & \frac{\partial t}{\partial {X}^{j}}\hfill & \hfill =\hfill & \gamma {v}^{j}\hfill \\ \frac{\partial {x}^{i}}{\partial T}\hfill & \hfill =\hfill & \gamma {v}^{i}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\phantom{\rule{2em}{0ex}}\hfill & \frac{\partial {x}^{i}}{\partial {X}^{j}}\hfill & \hfill =\hfill & \gamma {\parallel }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}+{\perp }^{i}{\phantom{\rule{0.3em}{0ex}}}_{j}\hfill \end{array}$ (7)

3 Minkowski Spacetime

This thorn can set up Minkowski spacetime using several diﬀerent types of coordinates:

3.1 Minkowski Spacetime

Exact::exact_model = "Minkowski" speciﬁes Minkowski spacetime in the usual Minkowski coordinates:

 ${g}_{ab}=diag\left[\begin{array}{cccc}\hfill -1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \end{array}\right]$ (8)

3.2 Minkowski Spacetime in Non-Trivial Spatial coordinates

Exact::exact_model = "Minkowski/funny" speciﬁes Minkowski spacetime with the usual Minkowski time slicing, but using the nontrivial spatial coordinates deﬁned as follows: First take the ﬂat metric in polar spherical coordinates, then deﬁne a new radial coordinate by

 $r={r}_{w}\left(\right1-aG\left({r}_{w}\right)\left)\right$ (9)

where $G\left(r\right)=exp\left(-\frac{1}{2}{r}^{2}∕{\sigma }^{2}\right)$ is a Gaussian centered at $r=0$.

The parameters are the perturbation amplitude $a=$Exact::Minkowski_funny__amplitude and the perturbation width $\sigma =$Exact::Minkowski_funny__sigma.

3.3 Minkowski Spacetime in Non-Trivial Slices with Shift

Exact::exact_model = "Minkowski/shift" speciﬁes Minkowski spacetime with the nontrivial time slicing and spatial coordinates deﬁned as follows: First take the ﬂat 4-metric in polar spherical coordinates, then deﬁne a new time coordinate by

 ${t}_{w}=t-aG\left(r\right)$ (10)

$G\left(r\right)=exp\left(-\frac{1}{2}{r}^{2}∕{\sigma }^{2}\right)$ is a Gaussian centered at $r=0$. Note this gives a time-indpendent 4-metric.

The parameters are the perturbation amplitude $a=$Exact::Minkowski_shift__amplitude and the perturbation width $\sigma =$Exact::Minkowski_shift__sigma.

3.4 Minkowski Spacetime in gauge-wave coordinates

Exact::exact_model = "Minkowski/gauge wave" speciﬁes Minkowski spacetime with the “gauge-wave” coordinates suggested by Carlos Bona: The line element is

 $d{s}^{2}=-Hd{t}^{2}+Hd{x}^{2}+d{y}^{2}+d{z}^{2},$ (11)

where $H=H\left(x-t\right)$, for instance $H=1-Asin\left(\left(x-t\right)∕\Lambda \right)$. This is a ﬂat spacetime, but the slice is a planar wave travelling along the x axis.

This thorn implements several possible choices for the $H$ function, controlled by the Minkowski_gauge_wave__what_fn parameter:

$\begin{array}{rcll}H\left(x-t\right)& =& 1-Asin\left(\frac{x-\omega t}{\Lambda }-\delta \right)& \text{(12)}\text{}\text{}\\ H\left(x-t\right)& =& exp\left(-Asin\left(\frac{x-\omega t}{\Lambda }-\delta \right)\right)& \text{(13)}\text{}\text{}\\ H\left(x-t\right)& =& 1-Aexp\left(-{x}^{2}\right)& \text{(14)}\text{}\text{}\end{array}$

The parameters are

• $A=$Minkowski_gauge_wave__amplitude, the amplitude
• $\omega =$Minkowski_gauge_wave__omega, the angular frequency
• $\lambda =$Minkowski_gauge_wave__lambda, the wavelength
• $\delta =$Minkowski_gauge_wave__phase, the phase shift

A plane wave has $\omega =±\lambda$ for a wave that travels in the $x$ direction, and $\omega =±\lambda \sqrt{2}$ for a diagonal wave.

If the Boolean parameter Minkowski_gauge_wave__diagonal is true, then we make the gauge wave travel diagonally across the grid by the coordinate transformation

$\begin{array}{rcll}x& =& \frac{1}{\sqrt{2}}\left({x}^{\prime }-{y}^{\prime }\right)& \text{(15)}\text{}\text{}\\ y& =& \frac{1}{\sqrt{2}}\left({x}^{\prime }+{y}^{\prime }\right)& \text{(16)}\text{}\text{}\end{array}$

For code testing, the idea is to test evolving this with periodic boundary conditions, to see whether the code is able to cope with that. The tricky part is to make the wave ﬁt the grid exactly (otherwise the periodic boundary wouldn’t make sence), especially in the diagonal case.

3.5 Minkowski Spacetime in shifted gauge-wave coordinates

Exact::exact_model = "Minkowski/shifted gauge wave" speciﬁes Minkowski spacetime with the “shifted gauge-wave” coordinates suggested by Jeﬀ Winicour: The line element is

 $d{s}^{2}=\left(H-1\right)\phantom{\rule{0.3em}{0ex}}d{t}^{2}+\left(H+1\right)\phantom{\rule{0.3em}{0ex}}d{x}^{2}-2H\phantom{\rule{0.3em}{0ex}}dt\phantom{\rule{0.3em}{0ex}}dx+d{y}^{2}+d{z}^{2}$ (17)

where $H=H\left(x-t\right)$, for instance $H=Asin\left(\left(x-t\right)∕\Lambda \right)$. This is a ﬂat spacetime, but the slice is a planar wave travelling along the x axis.

This thorn implements one choice for the $H$ function, controlled by the Minkowski_gauge_wave__what_fn parameter:

$\begin{array}{rcll}H\left(x-t\right)& =& 1-Asin\left(\frac{x-\omega t}{\Lambda }-\delta \right)& \text{(18)}\text{}\text{}\end{array}$

The parameters are

• $A=$Minkowski_gauge_wave__amplitude, the amplitude
• $\omega =$Minkowski_gauge_wave__omega, the angular frequency
• $\lambda =$Minkowski_gauge_wave__lambda, the wavelength
• $\delta =$Minkowski_gauge_wave__phase, the phase shift

A plane wave has $\omega =±\lambda$ for a wave that travels in the $x$ direction, and $\omega =±\lambda \sqrt{2}$ for a diagonal wave.

If the Boolean parameter Minkowski_gauge_wave__diagonal is true, then we make the gauge wave travel diagonally across the grid by the coordinate transformation

$\begin{array}{rcll}x& =& \frac{1}{\sqrt{2}}\left({x}^{\prime }-{y}^{\prime }\right)& \text{(19)}\text{}\text{}\\ y& =& \frac{1}{\sqrt{2}}\left({x}^{\prime }+{y}^{\prime }\right)& \text{(20)}\text{}\text{}\end{array}$

For code testing, the idea is to test evolving this with periodic boundary conditions, to see whether the code is able to cope with that. The tricky part is to make the wave ﬁt the grid exactly (otherwise the periodic boundary wouldn’t make sence), especially in the diagonal case.

3.6 Minkowski Spacetime with $sin$ term in conformal factor

Exact::exact_model = "Minkowski/conf wave" speciﬁes Minkowski spacetime with a $sin$ term in the Cactus static conformal factor. You have three parameters:

• Minkowski_conf_wave__amplitude ($a$)
• Minkowski_conf_wave__wavelength ($l$)
• Minkowski_conf_wave__direction ($d$)

These control $\Psi$ in the following form:

 $\Psi =asin\left(\frac{2\pi }{l}D\right)+1$ (21)

Here $D$ is x, y or z according to d of 0, 1 or 2.

Alas, the “arbitrary slice evolver” option (documented in doc/slice_evolver.tex) doesn’t work with this model. There’s no warning, you’ll just silently get wrong results. Sigh…

4 Black Hole Spacetimes

This thorn can set up Schwarzschild and Kerr spacetimes in several diﬀerent types of coordinates, and also a couple of multiple-black-hole spacetimes:

4.1 Schwarzschild Spacetime in Eddington-Finkelstein coordinates

Exact::exact_model = "Schwarzschild/EF" speciﬁes Schwarzschild spacetime in (ingoing) Eddington-Finkelstein coordinates, as described in MTW box 31.2 and ﬁgure 32.1. The only physics parameter is the black hole mass $m=$Schwarzschild_EF__mass.

There is also a numerical parameter Schwarzschild_EF__epsilon which is used to avoid division by zero if a grid point falls exactly at the origin; the default setting should be ok for most purposes.

In the usual polar spherical $\left(t,r,𝜃,\varphi \right)$ coordinates, the 4-metric and ADM variables are

$\begin{array}{rcll}{g}_{ab}& =& \left[\begin{array}{cccc}\hfill -\left(1-\frac{2m}{r}\right)\hfill & \hfill \frac{2m}{r}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \frac{2m}{r}\hfill & \hfill 1+\frac{2m}{r}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill {r}^{2}\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill {r}^{2}{sin}^{2}𝜃\hfill \end{array}\right]& \text{(22)}\text{}\text{}\\ {g}_{ij}& =& diag\left[\begin{array}{ccc}\hfill 1+\frac{2m}{r}\hfill & \hfill {r}^{2}\hfill & \hfill {r}^{2}{sin}^{2}𝜃\hfill \end{array}\right]& \text{(23)}\text{}\text{}\\ {K}_{ij}& =& diag\left[\begin{array}{ccc}\hfill -\frac{2{m}^{2}}{{r}^{2}}\frac{1+\frac{m}{r}}{\sqrt{1+\frac{2m}{r}}}\hfill & \hfill \frac{2{m}^{2}}{\sqrt{1+\frac{2m}{r}}}\hfill & \hfill \frac{2{m}^{2}}{\sqrt{1+\frac{2m}{r}}}{sin}^{2}𝜃\hfill \end{array}\right]& \text{(24)}\text{}\text{}\\ \alpha & =& \frac{1}{\sqrt{1+\frac{2m}{r}}}& \text{(25)}\text{}\text{}\\ {\beta }^{i}& =& \left[\begin{array}{ccc}\hfill \frac{2m}{r}\frac{1}{\sqrt{1+\frac{2m}{r}}}\hfill & \hfill 0\hfill & \hfill 0\hfill \end{array}\right]& \text{(26)}\text{}\text{}\end{array}$

(Various other $3+1$ variables for Schwarzschild spacetime in these coordinates are tabulated in appendix 2 of Jonathan Thornburg’s Ph.D thesis, http://www.aei.mpg.de/~jthorn/phd/html/phd.html.)

In the Cactus $\left(t,x,y,z\right)$ Cartesian-topology coordinates the 4-metric is

 ${g}_{ab}=\left[\begin{array}{cccc}\hfill -\left(1-\frac{2m}{r}\right)\hfill & \hfill \frac{2m}{r}\frac{x}{r}\hfill & \hfill \frac{2m}{r}\frac{y}{r}\hfill & \hfill \frac{2m}{r}\frac{z}{r}\hfill \\ \hfill \frac{2m}{r}\frac{x}{r}\hfill & \hfill 1+\frac{2m}{r}\frac{{x}^{2}}{{r}^{2}}\hfill & \hfill \frac{2m}{r}\frac{xy}{{r}^{2}}\hfill & \hfill \frac{2m}{r}\frac{xz}{{r}^{2}}\hfill \\ \hfill \frac{2m}{r}\frac{y}{r}\hfill & \hfill \frac{2m}{r}\frac{xy}{{r}^{2}}\hfill & \hfill 1+\frac{2m}{r}\frac{{y}^{2}}{{r}^{2}}\hfill & \hfill \frac{2m}{r}\frac{yz}{{r}^{2}}\hfill \\ \hfill \frac{2m}{r}\frac{z}{r}\hfill & \hfill \frac{2m}{r}\frac{xz}{{r}^{2}}\hfill & \hfill \frac{2m}{r}\frac{yz}{{r}^{2}}\hfill & \hfill 1+\frac{2m}{r}\frac{{z}^{2}}{{r}^{2}}\hfill \end{array}\right]$ (27)

4.2 Schwarzschild spacetime in Painlevé-Gullstrand coordinates

Exact::exact_model = "Schwarzschild/PG" speciﬁes Schwarzschild spacetime in Painlevé-Gullstrand coordinates, as described by Martel and Poisson, gr-qc/0001069. These coordinates have the interesting property that the spatial metric is ﬂat. The only physics parameter is the black hole mass $m=$Schwarzschild_PG__mass.

There is also a numerical parameter Schwarzschild_PG__epsilon which is used to avoid division by zero if a grid point falls exactly at the origin; the default setting should be ok for most purposes.

In the usual Cactus $\left(t,x,y,z\right)$ Cartesian-topology coordinates, the 4-metric is

 ${g}_{ab}=\left[\begin{array}{cccc}\hfill -1+\frac{2m}{r}\hfill & \hfill \sqrt{\frac{2m}{r}}\frac{x}{r}\hfill & \hfill \sqrt{\frac{2m}{r}}\frac{y}{r}\hfill & \hfill \sqrt{\frac{2m}{r}}\frac{z}{r}\hfill \\ \hfill \sqrt{\frac{2m}{r}}\frac{x}{r}\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \sqrt{\frac{2m}{r}}\frac{y}{r}\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 0\hfill \\ \hfill \sqrt{\frac{2m}{r}}\frac{z}{r}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill \end{array}\right]$ (28)

4.3 Schwarzschild spacetime in Brill–Lindquist coordinates

Exact::exact_model = "Schwarzschild/BL" speciﬁes Schwarzschild spacetime in Brill–Lindquist coordinates. These coordinates have the interesting property that the spatial metric is conformally ﬂat and time-symmetric for the initial data. The only physics parameter is the black hole mass $m=$Schwarzschild_BL__mass.

There is also a numerical parameter Schwarzschild_BL__epsilon which is used to avoid division by zero if a grid point falls exactly at the origin; the default setting should be ok for most purposes.

In the usual Cactus $\left(t,x,y,z\right)$ Cartesian-topology coordinates, the 4-metric is given by

$\begin{array}{rcll}\alpha & =& 1& \text{(29)}\text{}\text{}\\ {\beta }^{i}& =& 0& \text{(30)}\text{}\text{}\\ {\gamma }_{ij}& =& {\Psi }^{4}\phantom{\rule{0.3em}{0ex}}{\delta }_{ij}& \text{(31)}\text{}\text{}\end{array}$

with the conformal factor

$\begin{array}{rcll}\Psi & =& 1+\frac{m}{2r}& \text{(32)}\text{}\text{}\end{array}$

where $r$ is the coordinate radius.

4.4 Schwarzschild Spacetime in Novikov coordinates

Exact::exact_model = "Novikov" speciﬁes the unit-mass Schwarzschild spacetime in Novikov coordinates, as described in gr-qc/9608050 (see also MTW section 31.4 and ﬁgure 31.2). The only physics parameter is the black hole mass $m=$Schwarzschild_Novikov__mass.

There is also a numerical parameter Schwarzschild_Novikov__epsilon which is used to avoid division by zero if a grid point falls exactly at the origin; the default setting should be ok for most purposes.

4.5 Kerr Spacetime in Boyer-Lindquist coordinates

Exact::exact_model = "Kerr/Boyer-Lindquist" speciﬁes Kerr spacetime in (cartesian) Boyer-Lindquist coordinates, as described in MTW box 33.2 (the spin axis is the $z$ axis). The physics parameters are the black hole mass $m=$Kerr_BoyerLindquist__mass, and the dimensionless spin parameter $a=J∕{m}^{2}=$Kerr_BoyerLindquist__spin.

Mitica Vulcanov says: this metric still need some work in order to run properly. Major problems: the convergence and calibration of the units for the parameters and variables.

4.6 Kerr-Schild form of Boosted Rotating Black Hole

Exact::exact_model = "Kerr/Kerr-Schild" speciﬁes Kerr spacetime in Kerr-Schild coordinates, as described in MTW exercise 33.8 (the spin axis is the $z$ axis), Lorentz boosted in the $z$ direction so the black hole is centered at the position $z=vt$. The physics parameters are the black hole mass $m=$Kerr_KerrSchild__mass, the dimensionless spin parameter $a=J∕{m}^{2}=$Kerr_KerrSchild__spin, and the boost velocity $v=$Kerr_KerrSchild__boost_v.

There is also a numerical parameter Kerr_KerrSchild__epsilon which is used to avoid division by zero if a grid point falls exactly at the black hole center; the default setting should be ok for most purposes.

Kerr-Schild coordinates use the same time slicing (n.b. non-maximal!) and $z$ spatial coordinate as Kerr coordinates $\left({x}_{K},{y}_{K},{z}_{K}\right)$, but deﬁne new spatial coordinates $x\equiv {x}_{KS}$ and $y\equiv {y}_{KS}$ by

 ${x}_{KS}+i{y}_{KS}=\left(r+ia\right){e}^{i\varphi }sin𝜃$ (33)

so that

$\begin{array}{rcll}{x}_{KS}& =& {x}_{K}-asin𝜃sin\varphi & \text{(34)}\text{}\text{}\\ {y}_{KS}& =& {y}_{K}+asin𝜃cos\varphi & \text{(35)}\text{}\text{}\end{array}$

In Kerr-Schild coordinates the 4-metric can be written

 ${g}_{ab}={\eta }_{ab}+2H{k}_{a}{k}_{b}$ (36)

where

 $H=\frac{mr}{{r}^{2}+{a}^{2}{z}^{2}∕{r}^{2}}$ (37)

and where

 ${k}^{a}=-\frac{r\left(x\phantom{\rule{0.3em}{0ex}}dx+y\phantom{\rule{0.3em}{0ex}}dy\right)-a\left(x\phantom{\rule{0.3em}{0ex}}dy-y\phantom{\rule{0.3em}{0ex}}dx\right)}{{r}^{2}+{a}^{2}}-\frac{z\phantom{\rule{0.3em}{0ex}}dz}{r}-dt$ (38)

is a null vector.

4.7 Schwarzschild-Lemaitre spacetime (Schwarzschild black hole with cosmological constant

Exact::exact_model = "Schwarzschild/Lemaitre"is a metric proposed by Lemaitre in 1932 as a version of the Schwarzschild solution in a universe with cosmological constant. For a history of this metric and a good review see the chapter of Jean Eisenstaedt, “Lemaitre and the Schwarzschild solution” in the book “The attraction of Gravitation: New Studies in the History of General Relativity”, by J. Earman, et.al. Birkäuser, 1993. The line element is

 $d{s}^{2}=-\left(1-\frac{2m}{r}-\frac{\Lambda }{3}{r}^{2}\right)\phantom{\rule{0.3em}{0ex}}d{t}^{2}+{\left(1-\frac{2m}{r}-\frac{\Lambda }{3}{r}^{2}\right)}^{-1}\phantom{\rule{0.3em}{0ex}}d{r}^{2}+{r}^{2}\phantom{\rule{0.3em}{0ex}}d{𝜃}^{2}+{r}^{2}sin{\left(𝜃\right)}^{2}\phantom{\rule{0.3em}{0ex}}d{\varphi }^{2}$ (39)

Notice that for $\Lambda =0$ this reduces to Schwarzschild spacetime in the usual Schwarzschild coordinates.

The physics parameters are the black hole mass $m=$Schwarzschild_Lemaitre__mass, and the cosmological constant $\Lambda =$Schwarzschild_Lemaitre__Lambda.

The ﬁctitious “matter” stress-energy tensor representing $\Lambda$ is

 ${T}_{ij}=-\frac{\Lambda }{8\pi }{g}_{ij}=\left(\begin{array}{cccc}\hfill -\frac{1}{24}\frac{\Lambda A}{r\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill \frac{3}{8}\frac{r\Lambda }{8\pi A}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {r}^{2}}{\pi }\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {r}^{2}sin{\left(𝜃\right)}^{2}}{\pi }\hfill \end{array}\right)$ (40)

where $A=\left(-3r+6m+\Lambda {r}^{3}\right)$.

Alas, this metric doesn’t seem to give proper ﬁnite diﬀerence convergence for $\Lambda \ne 0$. It works ﬁne for $\Lambda =0$.

4.8 Majumdar-Papapetrou or Kastor-Traschen Maximally-Charged (extreme Reissner-Nordstrom) multi-BH Solutions

Exact::exact_model = "multi-BH" speciﬁes the Majumdar-Papapetrou or Kastor-Traschen solution. The ﬁle KTsol.tex in the documentation directory of this thorn gives more details/references about these solutions.

The Majumdar-Papapetrou solution is a multi-black-hole static solution to Einstein’s equation, containing $N$ maximally charged ($Q=M$, i.e. extreme Reissner-Nordstrom) black holes. The balance between gravitational attraction and electrostatic repulsion among the black holes causes each to maintain its position relative to the others eternally, so the spacetime is static. (The Majumdar-Papapetrou solution somewhat resembles Brill-Lindquist initial data, but with the black holes being charged.) The line element is

 $d{s}^{2}=-\frac{1}{{\Omega }^{2}}d{t}^{2}+{\Omega }^{2}\left(d{x}^{2}+d{y}^{2}+d{z}^{2}\right)$ (41)

where

$\begin{array}{rcll}\Omega & =& 1+\sum _{i=1}^{N}\frac{{M}_{i}}{{r}_{i}}& \text{(42)}\text{}\text{}\\ {r}_{i}& =& \sqrt{{\left(x-{x}_{i}\right)}^{2}+{\left(y-{y}_{i}\right)}^{2}+{\left(z-{z}_{i}\right)}^{2}}& \text{(43)}\text{}\text{}\end{array}$

where ${M}_{i}$ and $\left({x}_{i},{y}_{i},{z}_{i}\right)\in {\Re }^{3}$ are the masses and locations of the individual black holes.

The Kastor-Traschen solution is a cosmological generalization of the Majumdar-Papapetrou solution, where there is a cosmological constant and the black holes participate in an overall De Sitter expansion or contraction. For $\Lambda =0$ the Kastor-Traschen solution reduces to the Majumdar-Papapetrou solution.

The Kastor-Traschen line element is

 $d{s}^{2}=-\frac{1}{{\Omega }^{2}}d{t}^{2}+a{\left(t\right)}^{2}{\Omega }^{2}\left(d{x}^{2}+d{y}^{2}+d{z}^{2}\right)$ (44)

where

$\begin{array}{rcll}\Omega & =& 1+\sum _{i=1}^{N}\frac{{M}_{i}}{a{r}_{i}}& \text{(45)}\text{}\text{}\\ a& =& {e}^{Ht}& \text{(46)}\text{}\text{}\\ H& =& ±\sqrt{\frac{\Lambda }{3}}& \text{(47)}\text{}\text{}\\ {r}_{i}& =& \sqrt{{\left(x-{x}_{i}\right)}^{2}+{\left(y-{y}_{i}\right)}^{2}+{\left(z-{z}_{i}\right)}^{2}}& \text{(48)}\text{}\text{}\end{array}$

This solution represents “incoming” (“outgoing”) charged BHs if $H<0$ ($H>0$). We interpret ${M}_{i}$ as the mass of the $ith$ black hole, although we have neither an asymptotically ﬂat region nor event horizons available to convert this naive interpretation into a rigorous one.

This thorn supports up to 4 black holes. The physics parameters are the number of black holes $N=$multi_BH__nBH and the Hubble constant $H=$multi_BH__Hubble, and then for each black hole $i=1,\dots ,N$, the mass ${m}_{i}=$multi_BH__massi and the $x$, $y$, and $z$ positions ${x}_{i}=$multi_BH__xi, ${y}_{i}=$multi_BH__yi, and ${z}_{i}=$multi_BH__zi respectively.

Note that this thorn does not set ${T}_{\mu \nu }$. FIXME: does treating this metric as vacuum still give a solution to the Einstein equations?

4.9 Alvi post-Newtonian 2BH spacetime (not fully implemented yet)

Exact::exact_model = "Alvi" speciﬁes the Alvi post-Newtonian binary black hole metric, as described in gr-qc/9912113. This uses diﬀerent approxamintion methods to describe diﬀerent regions of a binary black hole system: Near the holes, one uses a distorted Schwarzschild black hole metric, while in the region around them (divided into a near zone and a wave zone) one uses a 1st order post-Newtonian approximation. There are discontinuities at the boundaries between the zones.

This model has physics parameters giving the masses of the two black holes, ${m}_{1}=$Alvi__mass1 and ${m}_{2}=$Alvi__mass2, and their spatial separation $b=$Alvi__separation.

Unfortunately, this metric isn’t fully implemented yet. See Nina Jansen for details.

4.10 Thorne’s “Fake Binary” Approximate Spacetime

Exact::exact_model = "fakebinary" speciﬁes Thorne’s “fake binary” approximate binary-black-hole spacetime, as described in gr-qc/9808024. This is not an exact solution of the Einstein equations, but has qualitative features designed to mimic those of an inspiralling binary black hole spacetime. The physics parameters are:

• $m=$Thorne_fakebinary__mass, the mass
(FIXME: is this the mass of the whole spacetime, or of an individual BH?)
• ${a}_{0}=$Thorne_fakebinary__separation, the initial binary separation
• ${\Omega }_{0}=$Thorne_fakebinary__Omega0, the initial angular frequency of the binary orbit
• Thorne_fakebinary__retarded, a Boolean parameter which controls whether or not to use a retarded time coordinate
• Thorne_fakebinary__atype, a keyword parameter to select a constant ("constant") or quadrupole ("quadrupole") solution
• Thorne_fakebinary__smoothing, a smoothing length for the Newtonian potential

There is also a numerical parameter Thorne_fakebinary__epsilon which is used to avoid division by zero if a grid point falls exactly at either black hole’s center; the default setting should be ok for most purposes.

5 Cosmological Spacetimes

The code for most of these models was written by Mitica Vulcanov <vulcan@aei.mpg.de>.

5.1 Lemaitre-type spacetime

Exact::exact_model="Lemaitre" speciﬁes a Lemairre spacetime, version of the Friedmann-Robertson-Walker model with ﬂat space (i.e. $k=0$), possibly a cosmological constant, $\Lambda$, and a linear dependence between the energy density $𝜖$ and the pressure, $p$, namely $p=\kappa 𝜖$. Thus the metric is the Robertson-Walker metric with $k=0$ and (see gr-qc/0110030, astro-ph/9910093 and references cited here),

 $R\left(t\right)={R}_{0}{\left[cosh\left(\frac{\sqrt{3\Lambda }}{2}\left(\kappa +1\right)t\right)+\sqrt{1+\frac{8\pi G\phantom{\rule{0.3em}{0ex}}{𝜖}_{0}}{\Lambda }}sinh\left(\frac{\sqrt{3\Lambda }}{2}\left(\kappa +1\right)t\right)\right]}^{2∕3\left(\kappa +1\right)}$ (49)

where ${R}_{0}$ is the scale factor of the universe (“radius”) at $t=0$; the density of energy reads

 $𝜖\left(t\right)={𝜖}_{0}\phantom{\rule{0.3em}{0ex}}a{\left(t\right)}^{-3\left(\kappa +1\right)}\phantom{\rule{0.3em}{0ex}}.$ (50)

The stress-enegy tensor is one of a perfect ﬂuid,

 ${T}_{\mu }^{\nu }=\left(𝜖+p\right){u}^{\nu }{u}_{\mu }-p{\delta }_{\mu }^{\nu }\phantom{\rule{0.3em}{0ex}},$ (51)

which depends on the covariant four-velocity ${u}^{\mu }=d{x}^{\mu }∕ds$ (remember $p=\kappa 𝜖$).

The physics parameters are the equation of state parameter $\kappa =$Lemaitre__kappa, the cosmological constant $\Lambda =$Lemaitre__Lambda, the energy density of the universe at time $t=0$, ${𝜖}_{0}=$Lemaitre__epsilon0, and the scale factor (radius) of the universe at time $t=0$, ${R}_{0}=$Lemaitre__R0.

5.2 de Sitter spacetime

Exact::exact_model = "de Sitter" speciﬁes an Einstein-de Sitter spacetime (a zero-pressure spatially-ﬂat Robertson-Walker spacetime), as described in Hawking and Ellis section 5.3 and MTW section 27.11 (see also gr-qc/0110031 for some tests of Cactus with this model). The only physics parameter is the multiplicative scale factor $a=$de_Sitter__scale.

The Einstein-De Sitter spacetime is the special case $R\left(t\right)=\sqrt{a}\phantom{\rule{0.3em}{0ex}}{t}^{2∕3}$, $k=0$ of the more general Robertson-Walker spacetime, so the line element in $\left(t,r,𝜃,\varphi \right)$ coordinates is

 $d{s}^{2}=-d{t}^{2}+a{t}^{4∕3}\left[d{r}^{2}+{r}^{2}\phantom{\rule{0.3em}{0ex}}d{\Omega }^{2}\right]$ (52)

The only non-vanishing component of the stress-energy tensor is

 ${T}_{tt}=\frac{1}{6\pi {t}^{2}}$ (53)

This is properly set up by this thorn.

5.3 de Sitter spacetime with cosmological constant

Exact::exact_model="de Sitter+Lambda" speciﬁes an Einstein-de Sitter spacetime with a cosmological constant, with the line element

 $d{s}^{2}=-d{t}^{2}+{e}^{2∕3\sqrt{3\Lambda }t}\left(d{x}^{2}+d{y}^{2}+d{z}^{2}\right)$ (54)

where $\Lambda$ is the cosmological constant. FIXME: how is $\Lambda$ determined?

The only physics parameter is the multiplicative scale factor $a=$de_Sitter_Lambda__scale.

The ﬁctitious “matter” stress-energy tensor representing $\Lambda$ is

 ${T}_{ij}=-\frac{\Lambda }{8\pi }{g}_{ij}=\left(\begin{array}{cccc}\hfill \frac{1}{8}\frac{\Lambda }{\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {e}^{2∕3\sqrt{3\Lambda }t}}{\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {e}^{2∕3\sqrt{3\Lambda }t}}{\pi }\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {e}^{2∕3\sqrt{3\Lambda }t}}{\pi }\hfill \end{array}\right)\phantom{\rule{0.3em}{0ex}}$ (55)

5.4 anti-de Sitter spacetime with cosmological constant

Exact::exact_model="anti-de Sitter+Lambda" speciﬁes an anti-de Sitter spacetime with a cosmological constant, with the line element

 $d{s}^{2}=d{x}^{2}+{e}^{2∕3\sqrt{-3\Lambda }t}\left(-d{t}^{2}+d{y}^{2}+d{z}^{2}\right)$ (56)

FIXME: how is $\Lambda$ determined?

The only physics parameter is the multiplicative scale factor $a=$anti_de_Sitter_Lambda__scale.

5.5 Approximate Bianchi type I spacetime

Exact::exact_model = "Bianchi I" speciﬁes an approximation to a Bianchi type I spacetime, setting the spacetime metric components as harmonic functions. Thus this is not a proper solution of Einstein equations. The only physics parameter is the multiplicative scale factor $a=$Bianchi_I__scale.

This solution doesn’t work properly yet. See Mitica Vulcanov for further information.

5.6 Gödel spacetime

Exact::exact_model = "Goedel" speciﬁes a Gödel spacetime, as described in Hawking and Ellis section 5.7. The only physics parameter is the multiplicative scale factor $a=$Goedel__scale.

At present this thorn doesn’t set up the stress-energy tensor; you have to do this “by hand”.

This solution doesn’t work properly yet. See Mitica Vulcanov for further information.

5.7 Bertotti spacetime

Exact::exact_model = "Bertotti" speciﬁes a Bertotti spacetime. This a spacetime metric with cosmological constant (see Gravitation and Geometry by Rindler and Trautman, Bibliopolis, Napoli, 1987, page 309), with the line element

 $d{s}^{2}=-{e}^{2\sqrt{-\Lambda }x}d{t}^{2}+d{x}^{2}+{e}^{2\sqrt{-\Lambda }z}d{u}^{2}+d{z}^{2}$ (57)

The only physics parameter is the cosmological constant $\Lambda =$Bertotti__Lambda.

The ﬁctitious “matter” stress-energy tensor representing $\Lambda$ is

 ${T}_{ij}=-\frac{\Lambda }{8\pi }{g}_{ij}=\left(\begin{array}{cccc}\hfill \frac{1}{8}\frac{\Lambda {e}^{2\sqrt{-\Lambda }x}}{\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda }{\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda {e}^{2\sqrt{-\Lambda }z}}{\pi }\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill -\frac{1}{8}\frac{\Lambda }{\pi }\hfill \end{array}\right)\phantom{\rule{0.3em}{0ex}}$ (58)

Mitica Vulcanov says: This metric is not working properly. We suspect that it is not a solution of the vacuum Einstein equations with cosmological constant, thus somebody else can try to calculate properly the above components of the ${T}_{ij}$ - ask Mitica D.N. Vulcanov for more details.

5.8 Kasner-like spacetime

Exact::exact_model="Kasner-like" is the so-called “Kasner-like” metric, as described in L. Pimentel, Int. Journ. of Theor. Physics, 32, No. 6, p. 979, (1993) and the references cited here. (See also MTW section 30.2, gr-qc/0110031, and S. Gotlober et al., “Early Evolution of the Universe and Formation [of] Structure”, Akad. Verlag, 1990.) The Kasner-like line element is

 $d{s}^{2}=-d{t}^{2}+{t}^{2q}\left(d{x}^{2}+d{y}^{2}\right)+{t}^{2-4q}d{z}^{2}$ (59)

Here we have a stress-energy tensor which has all oﬀ-diagonal components vanishing:

$\begin{array}{rcll}{T}_{ij}=\left(\begin{array}{cccc}\hfill q\frac{\left(2-3q\right)}{8\pi {t}^{2}}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill q\frac{\left(2-3q\right){t}^{2q}}{8\pi {t}^{2}}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill q\frac{\left(2-3q\right){t}^{2q}}{8\pi {t}^{2}}\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill q\frac{\left(2-3q\right){t}^{2-4q}}{8\pi {t}^{2}}\hfill \end{array}\right)& & & \text{(60)}\text{}\text{}\end{array}$

There is one parameter $q=$Kasner_like__q.

This metric forms a one parameter family of solutions of Einstein’s equations with a perfect stiﬀ ﬂuid. The parameter $q$ is related to the energy density, as is obvious from the last equation. The qualitative features of the expansion depend on $q$ in the following way: for $q>1∕2$ the universe expands from a “cigar” singularity; for $q=1∕2$, the universe expands purely transversally from an initial “barrel” singularity; for $0 the initial singularity is “point-like” and if $q\le 0$ we have a “pancake” singularity. The case $q=1∕3$ corresponds to an isotropic universe with a stiﬀ ﬂuid; the case $q=0$ is a region of Minkowski spacetime in non-Cartesian coordinates. This family of metrics is “Kasner-like” in the sense that the sum of the exponents is equal to one, but the sum of the squares is not equal to one except in the cases when $q=0$ or $q=2∕3$, when we have the vacuum case.

5.9 axisymmetric Kasner spacetime

Exact::exact_model="Kasner-axisymmetric" speciﬁes an axisymmetric Kasner spacetime, as described in S. D. Hern, Numerical Relativity and Inhomogeneous Cosmologies, PhD thesis, Cambridge (gr-qc/0004036), and S. D. Hern, J. M. Stewart, Class. Quantum Grav, 15, 1581, (1998). The line element is

 $d{s}^{2}=-\frac{d{t}^{2}}{\sqrt{t}}+\frac{d{x}^{2}}{\sqrt{t}}+td{y}^{2}+td{z}^{2}$ (61)

This is an exact solution of the vacuum Einstein equations, explicitly homogeneous, and features a cosmological singularity at $t=0$.

There are no parameters for this model.

5.10 generalized Kasner spacetime

Exact::exact_model="Kasner-generalized" speciﬁes a generalized Kasner spacetime, as described in MTW section 30.2, where the line element is

 $d{s}^{2}=-d{t}^{2}+{t}^{2{p}_{1}}d{x}^{2}+{t}^{2{p}_{2}}d{y}^{2}+{t}^{2{p}_{3}}d{z}^{2}$ (62)

The Kasner parameters ${p}_{1}$, ${p}_{2}$ and ${p}_{3}$ must satisfy the relations ${p}_{1}+{p}_{2}+{p}_{3}=1$ and ${p}_{1}^{2}+{p}_{2}^{2}+{p}_{3}^{2}=1$. Restricting ourselves only to two parameters, ${p}_{1}$ and ${p}_{2}$, we have the following stress-energy tensor:

 ${T}_{ij}=\left(\begin{array}{cccc}\hfill \frac{A}{8\pi {t}^{2}}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill \frac{A{t}^{2{p}_{1}-2}}{8\pi }\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill \frac{A{t}^{2{p}_{2}-2}}{8\pi }\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill \frac{A{t}^{-2{p}_{1}-2{p}_{2}}}{8\pi }\hfill \end{array}\right)$ (63)

where $A={p}_{1}-{p}_{1}^{2}+{p}_{2}-{p}_{2}^{2}-{p}_{1}{p}_{2}$ (note the use of the above ﬁrst condition on the parameters, thus we have ${p}_{3}=1-{p}_{1}-{p}_{2}$).

The parameters are ${p}_{1}=$Kasner_generalized__p1 and ${p}_{2}=$Kasner_generalized__p2.

Mitica Vulcanov has done several simulations with various Kasner spacetimes, see gr-qc/0110031.

5.11 Gowdy-wave Spacetime

Exact::exact_model = "Gowdy-wave" speciﬁes a Gowdy spacetime, which gives a polarized wave in an expanding universe. See K. New, K. Watt, C. W. Misner, and J. Centrella, “Stable 3-level leapfrog integration in numerical relativity”, PRD 58, 064022.

There is only a single parameter, the wave amplitude Gowdy_wave__amplitude.

5.12 Milne Spacetime for Pre-Big-Bang Cosmology

Exact::exact_model = "Milne" speciﬁes a Milne spacetime, as described by gr-qc/9802001 (see in particular reference 14, which in turn points to Zeldovich and Novikov volume 2 section 2.4):

 ${g}_{ab}=\left[\begin{array}{cccc}\hfill -1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill V\left(1+{y}^{2}+{z}^{2}\right)\hfill & \hfill -Vxy\hfill & \hfill -Vxz\hfill \\ \hfill 0\hfill & \hfill -Vxy\hfill & \hfill V\left(1+{x}^{2}+{z}^{2}\right)\hfill & \hfill -Vyz\hfill \\ \hfill 0\hfill & \hfill -Vxz\hfill & \hfill -Vyz\hfill & \hfill V\left(1+{x}^{2}+{y}^{2}\right)\hfill \end{array}\right]$ (64)

where

 $V=\frac{{t}^{2}}{1+{x}^{2}+{y}^{2}+{z}^{2}}$ (65)

The ${g}_{ab}$ given here is indeed what the code computes, but alas noone seems to know whether this is indeed a Milne spacetime.

6 Miscellaneous Spacetimes

6.1 Boost Rotation Symmetric Spacetime

Exact::exactmodel = "starSchwarz" speciﬁes a boost-rotation symmetric spacetime, as described in Jiri Bicak and Bernd Schmidt, ”Asymptotically ﬂat radiative space-times with boost-rotation symmetry”, Physical Review D 40, 1827 (1989). Pravda and Pravdová, gr-qc/0003067, give a general review of boost-rotation symmetric spacetimes.

FIXME: the parameters are …

6.2 Schwarzschild (Constant Density) Star

Exact::exact_model = "constant density star" speciﬁes a constant-density “Schwarzschild” star, as described in MTW Box 23.2. The stress-energy tensor is also properly set up.

6.3 Non-Einstein Bowl (“Bag of Gold”) Spacetime

Exact::exact_model = "bowl" speciﬁes a “bag of Gold” metric, as described in gr-qc/9809004. This is useful for testing purposes, but isn’t a solution of the Einstein equations. The line element in $\left(t,r,𝜃,\varphi \right)$ coordinates is

 $d{s}^{2}=-d{t}^{2}+d{r}^{2}+{R}^{2}\left(r\right)\phantom{\rule{0.3em}{0ex}}d{\Omega }^{2}$ (66)

We choose $R\left(r\right)$ such that $\underset{r\ll 1}{lim}R\left(r\right)=r$ and $\underset{r\gg 1}{lim}R\left(r\right)=r$, so we have a ﬂat 3-metric (and hence 4-metric too) for very small $r$ and for very large $r$. For intermediate values of $r$, we take $0; this deﬁcit in areal radius produces the “bag of gold” geometry.

The physics parameters are

• $a=$bowl__strength, the deformation strength
• $c=$bowl__center, the deformation center
• bowl__shape is a keyword parameter to specify the type of function to use to specify the bowl (see below)
• $\sigma =$bowl__sigma, the deformation width (N.b. for bowl__shape = "Gaussian" the function is actually $exp\left(\right\phantom{\rule{0.3em}{0ex}}-{\left(x-c\right)}^{2}∕{\sigma }^{2}\left)\right$, not $exp\left(\right-\frac{1}{2}{\left(x-c\right)}^{2}∕{\sigma }^{2}\left)\right$. Thus for this case $\sigma$ is actually $\sqrt{2}$ times the standard deviation of the Gaussian.)
• bowl__x_scale, bowl__y_scale, and bowl__z_scale, which set the $x$, $y,$ and $z$ scales of the bowl (i.e. all the computations actually use $x∕$bowl__x_scale, $y∕$bowl__y_scale, and $z∕$bowl__z_scale)
• bowl__evolve is a Boolean parameter which controls whether the bowl should be time-dependent; the remaining parameters are only used if bowl__evolve is true
• ${t}_{0}=$bowl__t0, the center of the Fermi step in time
• ${\sigma }_{t}=$bowl__sigma_t, the width of the Fermi step in time

The size of the deviation from a ﬂat geometry is controled by the parameter $a=$bowl__strength. If $a=0$, we are in ﬂat spacetime. The width of the curved region is controled by $\sigma =$bowl__sigma, and the place where the curvature becomes signiﬁcant (the center of the deformation) is controlled by $c=$bowl__center.

In detail, we choose

 $R\left(r\right)=r-Af\left(r\right)g\left(r\right)$ (67)

Here $A=a$ if bowl_evolve = "false", but is multiplied by a Fermi factor

 $A=\frac{a}{1+exp\left(-{\sigma }_{t}\left(t-{t}_{0}\right)\right)}$ (68)

if bowl_evolve = "true". For this latter case we have ﬂat spacetime far in the past, and a static bowl far in the future. $f\left(r\right)$ is either a Gaussian or a Fermi function,

 $f\left(r\right)=\left\{\begin{array}{cc}exp\left(\right{\left(r-c\right)}^{2}∕{\sigma }^{2}\left)\right\hfill & ifbowl_type="Gaussian"\hfill \\ & \\ \frac{1}{1+exp\left(-\sigma \left(r-c\right)\right)}\hfill & ifbowl_type="Fermi"\hfill \end{array}\right\$ (69)

$g\left(r\right)=1-sech4r$ is a ﬁxup factor to ensure that $\underset{r\to 0}{lim}R\left(r\right)=r$.

The three paramters bowl__x_scale, bowl__y_scale, and bowl__z_scale scale the $\left(x,y,z\right)$ axes respectively. Their default values are all 1. These parameters are useful to hide the spherical symmetry of the metric.

7 Acknowledgments

The original code, including the boost-rotation symmetric metric and the slice evolver, was written by Carsten Gundlach and Miguel Alcubierre. Many diﬀerent people have contributed exact solutions. The Schwarzschild/Lemaitre solution and most (all?) of the cosmological solutions were written by Mitica Vulcanov. The Minkowski/gauge wave model was written by Michael Koppitz. In May-June 2002 Jonathan Thornburg cleaned up a lot of the code, systematized the spacetime/coordinate and parameter names, and wrote most of this documentation (based on the comments in the code, some reverse-engineering, and querying various people about how the code works.) The description of the Kastor-Traschen maximally charged multi-BH model is adapted from the ﬁle KTsol.tex in this same directory, by Hisa-aki Shinkai. The Gowdy model was written by Denis Pollney. The ADMBase::evolution_method = "exact" code was written by Peter Diener. The “boost any vacuum solution” code was written by Jonathan Thornburg.

8 Parameters

 boost_vx Scope: private REAL Description: x component of boost velocity Range Default: 0.0 *:* any real number

 boost_vy Scope: private REAL Description: y component of boost velocity Range Default: 0.0 *:* any real number

 boost_vz Scope: private REAL Description: z component of boost velocity Range Default: 0.0 *:* any real number

 exact_eps Scope: private REAL Description: ﬁnite diﬀerencing stencil size (in terms of the grid spacing) Range Default: 1.0e-6 (0.0:* Positive please

 exact_order Scope: private INT Description: ﬁnite diﬀerencing order Range Default: 2 2 2 4 4

 exblend_gauge Scope: private BOOLEAN Description: Blend the lapse and shift with the exact solution? Default: yes

 exblend_gs Scope: private BOOLEAN Description: Blend the g variables with the exact solution? Default: yes

 exblend_ks Scope: private BOOLEAN Description: Blend the K variables with the exact solution? Default: yes

 exblend_rout Scope: private REAL Description: Outer boundary of blending region Range Default: -1.0 *:* Positive means radial value, negative means use outer bound of grid

 exblend_width Scope: private REAL Description: Width of blending zone Range Default: -3.0 *:* Positive means width in radius, negative means width = exbeldn_width*dx

 overwrite_boundary Scope: private KEYWORD Description: Overwrite g and K on the boundary Range Default: no no Do nothing exact Use boundary data from an exact solution on a trivial slice

 rotation_euler_phi Scope: private REAL Description: Euler angle phi (ﬁrst rotation, about z axis) (irrelevant for axisymmetric models) Range Default: 0.0 *:* any real number

 rotation_euler_psi Scope: private REAL Description: Euler angle psi (third rotation, about z axis) Range Default: 0.0 *:* any real number

 rotation_euler_theta Scope: private REAL Description: Euler angle theta (second rotation, about x axis) Range Default: 0.0 *:* any real number

 shift_add_x Scope: private REAL Description: x component of added shift Range Default: 0.0 *:* any real number

 shift_add_y Scope: private REAL Description: y component of added shift Range Default: 0.0 *:* any real number

 shift_add_z Scope: private REAL Description: z component of added shift Range Default: 0.0 *:* any real number

 slice_gauss_ampl Scope: private REAL Description: Amplitude of Gauss slice in exact Range Default: 0.0 0.0:* Positive please

 slice_gauss_width Scope: private REAL Description: Width of Gauss slice in exact Range Default: 1.0 0.0:* Positive please

 alvi__mass1 Scope: restricted REAL Description: Alvi: mass of BH number 1 Range Default: 1.0 0.0:* any real number >= 0

 alvi__mass2 Scope: restricted REAL Description: Alvi: mass of BH number 2 Range Default: 1.0 0.0:* any real number >= 0

 alvi__separation Scope: restricted REAL Description: Alvi: spatial separation of the black holes Range Default: 20.0 0.0:* must be greater than m1+m2 + 2 sqrt(m1 m2)

 anti_de_sitter_lambda__scale Scope: restricted REAL Description: anti-de Sitter+Lambda: multiplicative scale factor Range Default: 0.1 (0.0:* any positive real number

 bertotti__lambda Scope: restricted REAL Description: Bertotti: cosmological constant Range Default: -1.0 *:* any real number

 bianchi_i__scale Scope: restricted REAL Description: Bianchi I: multiplicative scale factor Range Default: 0.1 (0.0:* any positive real number

 boost_rotation_symmetric__amp Scope: restricted REAL Description: boost-rotation symmetric: dimensionless amplitude Range Default: 0.1 0.0:* Positive please

 boost_rotation_symmetric__min_d Scope: restricted REAL Description: boost-rotation symmetric: dimensionless safety distance Range Default: 0.01 (0.0:* any positive real number

 boost_rotation_symmetric__scale Scope: restricted REAL Description: boost-rotation symmetric: length scale Range Default: 1.0 0.0:* Positive please

 bowl__center Scope: restricted REAL Description: bowl: deformation center Range Default: 2.5 (0.0:* any positive real number

 bowl__evolve Scope: restricted BOOLEAN Description: bowl: are we evolving the metric? Default: false

 bowl__shape Scope: restricted KEYWORD Description: bowl: what shape of bowl should we use? Range Default: Gaussian Gaussian Gaussian bowl Fermi Fermi-function bowl

 bowl__sigma Scope: restricted REAL Description: bowl: width of deformation Range Default: 1.0 (0.0:* any positive real number

 bowl__sigma_t Scope: restricted REAL Description: bowl: width of Fermi step in time Range Default: 1.0 (0.0:* any positive real number

 bowl__strength Scope: restricted REAL Description: bowl: deformation strength Range Default: 0.5 0.0:* any real number >= 0

 bowl__t0 Scope: restricted REAL Description: bowl: center of Fermi step in time Range Default: 1.0 *:* any real number

 bowl__x_scale Scope: restricted REAL Description: bowl: scale for x coordinate Range Default: 1.0 (0.0:* any positive real number

 bowl__y_scale Scope: restricted REAL Description: bowl: scale for y coordinate Range Default: 1.0 (0.0:* any positive real number

 bowl__z_scale Scope: restricted REAL Description: bowl: scale for z coordinate Range Default: 1.0 (0.0:* any positive real number

 constant_density_star__mass Scope: restricted REAL Description: constant density star: mass of star Range Default: 1.0 (0.0:* any positive real number

 constant_density_star__radius Scope: restricted REAL Description: constant density star: radius of star Range Default: 1.0 (0.0:* any positive real number

 de_sitter__scale Scope: restricted REAL Description: de Sitter: multiplicative scale factor Range Default: 0.1 (0.0:* any positive real number

 de_sitter_lambda__scale Scope: restricted REAL Description: de Sitter+Lambda: multiplicative scale factor Range Default: 0.1 (0.0:* any positive real number

 exact_model Scope: restricted KEYWORD Description: The exact solution/coordinates used in thorn exact Range Default: Minkowski Minkowski Minkowski spacetime Minkowski/shift Minkowski spacetime with time-dependent shift vector Minkowski/funny Minkowski spacetime in non-trivial spatial coordinates Minkowski/gauge wave Minkowski spacetime in gauge-wave coordinates see [1] below Minkowski spacetime in shifted gauge-wave coordinates Minkowski/conf wave Minkowski spacetime with ’waves’ in conformal factor Schwarzschild/EF ”Schwarzschild spacetime in Eddington-Finkelstei n coordinates” Schwarzschild/PG Schwarzschild spacetime in Painleve-Gullstrand coordinates Schwarzschild/BL Schwarzschild spacetime in Brill-Lindquist coordinates see [1] below Schwarzschild spacetime in Novikov coordinates see [1] below Schwarzschild metric in Schwarzschild coordinates, with cosmological constant Kerr/Boyer-Lindquist Kerr spacetime in Boyer-Lindquist coordinates Kerr/Kerr-Schild Kerr spacetime in Kerr-Schild coordinates see [1] below Kerr spacetime in distorted Kerr-Schild coordinates such that the horizon is a coordinate sphere multi-BH ”Majumdar-Papapetrou or Kastor-Traschen maximally charged multi BH solutions” Alvi Alvi post-Newtonian 2BH spacetime (not fully implemented yet) Thorne-fakebinary Thorne’s fake-binary spacetime (non-Einstein) Lemaitre Lemaitre-type spacetime de Sitter de Sitter spacetime (R-W cosmology, near t=0, p=0) de Sitter+Lambda de Sitter spacetime with cosmological constant see [1] below anti-de Sitter spacetime with cosmological constant Bianchi I approximate Bianchi type I spacetime Goedel Goedel spacetime Bertotti Bertotti spacetime Kasner-like Kasner-like spacetime Kasner-axisymmetric axisymmetric Kasner spacetime Kasner-generalized generalized Kasner spacetime Gowdy-wave Gowdy spacetime with polarized wave on a torus Milne Milne spacetime for pre-big-bang cosmology see [1] below boost-rotation symmetric spacetime bowl bowl (bag-of-gold) spacetime (non-Einstein) see [1] below constant density (Schwarzschild) star

[1]

Minkowski/shifted gauge wave

[1]

Schwarzschild/Novikov

[1]

Schwarzschild-Lemaitre

[1]

Kerr/Kerr-Schild/spherical

[1]

anti-de Sitter+Lambda

[1]

boost-rotation symmetric

[1]

constant density star

 goedel__scale Scope: restricted REAL Description: Goedel: multiplicative scale factor Range Default: 0.1 (0.0:* any positive real number

 gowdy_wave__amplitude Scope: restricted REAL Description: Gowdy-wave: amplitude parameter Range Default: 0.0 *:* any real number

 kasner_generalized__p1 Scope: restricted REAL Description: Kasner-generalized: x exponent parameter Range Default: 0.1 -1.0:1.0 any real number in the range [-1,1]

 kasner_generalized__p2 Scope: restricted REAL Description: Kasner-generalized: y exponent parameter Range Default: 0.1 -1.0:1.0 any real number in the range [-1,1]

 kasner_like__q Scope: restricted REAL Description: Kasner-like: q parameter Range Default: 0.66666666666666666666 *:* any real number

 kerr_boyerlindquist__mass Scope: restricted REAL Description: Kerr/Boyer-Lindquist: BH mass Range Default: 1.0 (0.0:* any real number > 0

 kerr_boyerlindquist__spin Scope: restricted REAL Description: Kerr/Boyer-Lindquist: dimensionless spin parameter a = J/m2̂ Range Default: 0.6 -1.0:1.0 dimensionless spin parameter a = J/m2̂ for Kerr black hole

 kerr_kerrschild__boost_v Scope: restricted REAL Description: Kerr/Kerr-Schild: boost velocity of black hole in z direction Range Default: 0.0 (-1:1) any real number with absolute value < 1

 kerr_kerrschild__epsilon Scope: restricted REAL Description: Kerr/Kerr-Schild: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 kerr_kerrschild__mass Scope: restricted REAL Description: Kerr/Kerr-Schild: BH mass Range Default: 1.0 (0.0:* any real number > 0

 kerr_kerrschild__parabolic Scope: restricted BOOLEAN Description: Kerr/Kerr-Schild: use a parabolic singularity-avoiding term Default: no

 kerr_kerrschild__power Scope: restricted INT Description: Kerr/Kerr-Schild: power (exponent) of numerical fudge Range Default: 4 1:*

 kerr_kerrschild__spin Scope: restricted REAL Description: Kerr/Kerr-Schild: dimensionless spin parameter a = J/m2̂ Range Default: 0.6 -1.0:1.0 dimensionless spin parameter a = J/m2̂ for Kerr black hole

 kerr_kerrschild__t Scope: restricted REAL Description: Kerr/Kerr-Schild: time oﬀset of black hole Range Default: 0.0 (*:*)

 kerr_kerrschild__x Scope: restricted REAL Description: Kerr/Kerr-Schild: x-coordinate of black hole Range Default: 0.0 (*:*)

 kerr_kerrschild__y Scope: restricted REAL Description: Kerr/Kerr-Schild: y-coordinate of black hole Range Default: 0.0 (*:*)

 kerr_kerrschild__z Scope: restricted REAL Description: Kerr/Kerr-Schild: z-coordinate of black hole Range Default: 0.0 (*:*)

 lemaitre__epsilon0 Scope: restricted REAL Description: Lemaitre: density of the universe at time t=0 Range Default: 1.0 0.0:* any real number >= 0

 lemaitre__kappa Scope: restricted REAL Description: Lemaitre: multiplicative factor in equation of state Range Default: -0.5 *:* any real number

 lemaitre__lambda Scope: restricted REAL Description: Lemaitre: cosmological constant Range Default: 1.0 *:* any real number

 lemaitre__r0 Scope: restricted REAL Description: Lemaitre: scale factor (radius) of the universe at time t=0 Range Default: 1.0 (0.0:* any positive real number

 minkowski_conf_wave__amplitude Scope: restricted REAL Description: Minkowski/conf wave: amplitude of the variation of the conformal factor Range Default: 0.5 0:* any positive real number

 minkowski_conf_wave__direction Scope: restricted INT Description: Minkowski/conf wave: direction of ’wave’ 0,1,2 : x,y,z Range Default: (none) 0:2 0, 1 or 2 for x, y or z

 minkowski_conf_wave__wavelength Scope: restricted REAL Description: Minkowski/conf wave: wave length in cactus units Range Default: 1.0 0:* any positive real number

 minkowski_funny__amplitude Scope: restricted REAL Description: Minkowski/funny: amplitude of Gaussian Range Default: 0.5 0.0:1.0) any real number in the range [0,1)

 minkowski_funny__sigma Scope: restricted REAL Description: Minkowski/funny: width of Gaussian Range Default: 1.0 (0.0: any real number > 0

 minkowski_gauge_wave__amplitude Scope: restricted REAL Description: Minkowski/gauge wave: amplitude of the wave Range Default: 0.5 *:* any real number

 minkowski_gauge_wave__diagonal Scope: restricted BOOLEAN Description: Minkowski/gauge wave: should the wave run diagonally across the grid? Default: no

 minkowski_gauge_wave__lambda Scope: restricted REAL Description: Minkowski/gauge wave: wavelength of waves Range Default: 0.5 *:* any real number

 minkowski_gauge_wave__omega Scope: restricted REAL Description: Minkowski/gauge wave: angular frequency of the wave in time Range Default: 1.0 *:* any real number

 minkowski_gauge_wave__phase Scope: restricted REAL Description: Minkowski/gauge wave: phase shift of wave Range Default: 0.0 *:* any real number

 minkowski_gauge_wave__what_fn Scope: restricted KEYWORD Description: Minkowski/gauge wave: what function to use Range Default: sin sin 1-a*sin(x) expsin ”exp(a*sin(x)*cos(t) )” Gaussian 1-a*exp(-x**2)

 minkowski_shift__amplitude Scope: restricted REAL Description: Minkowski/shift: amplitude of Gaussian Range Default: 0.5 (-1:1) any real number < 1 in absolute value

 minkowski_shift__sigma Scope: restricted REAL Description: Minkowski/shift: width of Gaussian Range Default: 1.0 (0.0:* any real number > 0

 multi_bh__hubble Scope: restricted REAL Description: multi-BH: Hubble constant = +/- sqrt{Lambda/3} Range Default: 0.0 *:* any real number

 multi_bh__mass1 Scope: restricted REAL Description: multi-BH: mass of black hole number 1 Range Default: 0.0 0.0: any real number >= 0

 multi_bh__mass2 Scope: restricted REAL Description: multi-BH: mass of black hole number 2 Range Default: 0.0 0.0: any real number >= 0

 multi_bh__mass3 Scope: restricted REAL Description: multi-BH: mass of black hole number 3 Range Default: 0.0 0.0: any real number >= 0

 multi_bh__mass4 Scope: restricted REAL Description: multi-BH: mass of black hole number 4 Range Default: 0.0 0.0:* any real number >= 0

 multi_bh__nbh Scope: restricted INT Description: multi-BH: number of black holes 0-4 Range Default: (none) 0:4 any integer in the range [0,4]

 multi_bh__x1 Scope: restricted REAL Description: multi-BH: x coord of black hole number 1 Range Default: 0.0 *:* any real number

 multi_bh__x2 Scope: restricted REAL Description: multi-BH: x coord of black hole number 2 Range Default: 0.0 *:* any real number

 multi_bh__x3 Scope: restricted REAL Description: multi-BH: x coord of black hole number 3 Range Default: 0.0 *:* any real number

 multi_bh__x4 Scope: restricted REAL Description: multi-BH: x coord of black hole number 4 Range Default: 0.0 *:* any real number

 multi_bh__y1 Scope: restricted REAL Description: multi-BH: y coord of black hole number 1 Range Default: 0.0 *:* any real number

 multi_bh__y2 Scope: restricted REAL Description: multi-BH: y coord of black hole number 2 Range Default: 0.0 *:* any real number

 multi_bh__y3 Scope: restricted REAL Description: multi-BH: y coord of black hole number 3 Range Default: 0.0 *:* any real number

 multi_bh__y4 Scope: restricted REAL Description: multi-BH: y coord of black hole number 4 Range Default: 0.0 *:* any real number

 multi_bh__z1 Scope: restricted REAL Description: multi-BH: z coord of black hole number 1 Range Default: 0.0 *:* any real number

 multi_bh__z2 Scope: restricted REAL Description: multi-BH: z coord of black hole number 2 Range Default: 0.0 *:* any real number

 multi_bh__z3 Scope: restricted REAL Description: multi-BH: z coord of black hole number 3 Range Default: 0.0 *:* any real number

 multi_bh__z4 Scope: restricted REAL Description: multi-BH: z coord of black hole number 4 Range Default: 0.0 *:* any real number

 schwarzschild_bl__epsilon Scope: restricted REAL Description: Schwarzschild/BL: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 schwarzschild_bl__mass Scope: restricted REAL Description: Schwarzschild/BL: BH mass Range Default: 1.0 (0.0:* any real number > 0.0

 schwarzschild_ef__epsilon Scope: restricted REAL Description: Schwarzschild/EF: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 schwarzschild_ef__mass Scope: restricted REAL Description: Schwarzschild/EF: BH mass Range Default: 1.0 *:* any real number

 schwarzschild_lemaitre__lambda Scope: restricted REAL Description: Schwarzschild-Lemaitre: cosmological constant Range Default: 1.0 *:* any real number

 schwarzschild_lemaitre__mass Scope: restricted REAL Description: Schwarzschild-Lemaitre: BH mass Range Default: 1.0 (0.0:* any real number > 0

 schwarzschild_novikov__epsilon Scope: restricted REAL Description: Schwarzschild/Novikov: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 schwarzschild_novikov__mass Scope: restricted REAL Description: Schwarzschild/Novikov: BH mass Range Default: 1.0 (0.0:* any real number > 0.0

 schwarzschild_pg__epsilon Scope: restricted REAL Description: Schwarzschild/PG: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 schwarzschild_pg__mass Scope: restricted REAL Description: Schwarzschild/PG: BH mass Range Default: 1.0 (0.0:* any real number > 0.0

 thorne_fakebinary__atype Scope: restricted KEYWORD Description: Thorne-fakebinary: binary type Range Default: constant constant quadrupole

 thorne_fakebinary__epsilon Scope: restricted REAL Description: Thorne-fakebinary: numerical fudge Range Default: 1.e-16 0.0:* any real number >= 0.0

 thorne_fakebinary__mass Scope: restricted REAL Description: Thorne-fakebinary: mass Range Default: 1.0 (0.0:* any real number > 0

 thorne_fakebinary__omega0 Scope: restricted REAL Description: Thorne-fakebinary: initial angular frequency Range Default: 1.0 (0.0:* any real number > 0

 thorne_fakebinary__retarded Scope: restricted BOOLEAN Description: Thorne-fakebinary: use retarded time? Default: no

 thorne_fakebinary__separation Scope: restricted REAL Description: Thorne-fakebinary: initial separation Range Default: 5.0 (0.0:* any real number > 0

 thorne_fakebinary__smoothing Scope: restricted REAL Description: Thorne-fakebinary: smoothing for Newtonian potential Range Default: 0.0 0.0:* any real number >= 0

 conformal_storage Scope: shared from STATICCONFORMAL KEYWORD

9 Interfaces

Implements:

exact

Inherits:

grid

coordgauge

staticconformal

Grid Variables

9.0.1 PRIVATE GROUPS
 Group Names Variable Names Details exact_slice compact 0 slicex description Position of an arbitrary slice in exact solution spacetime slicey dimensions 3 slicez distribution DEFAULT slicet group type GF timelevels 1 variable type REAL exact_slicetemp1 compact 0 slicetmp1x description Temporary grid functions 1 slicetmp1y dimensions 3 slicetmp1z distribution DEFAULT slicetmp1t group type GF timelevels 1 variable type REAL exact_slicetemp2 compact 0 slicetmp2x description Temporary grid functions 2 slicetmp2y dimensions 3 slicetmp2z distribution DEFAULT slicetmp2t group type GF timelevels 1 variable type REAL

9.0.2 PROTECTED GROUPS
 Group Names Variable Names Details exact_pars_int compact 0 decoded_exact_model description parameters copied to grid scalars so CalcTmunu code sees them in evolution thorns dimensions 0 distribution CONSTANT group type SCALAR timelevels 1 variable type INT exact_pars_real compact 0 Schwarzschild_Lemaitre___Lambda description parameters copied to grid scalars so CalcTmunu code sees them in evolution thorns Schwarzschild_Lemaitre___mass dimensions 0 Lemaitre___kappa distribution CONSTANT Lemaitre___Lambda group type SCALAR Lemaitre___epsilon0 timelevels 1 Lemaitre___R0 variable type REAL

Scalar_CalcTmunu_temps.inc to CalcTmunu_temps.inc

Slicing.h

10 Schedule

This section lists all the variables which are assigned storage by thorn EinsteinInitialData/Exact. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, 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.

Storage

 Always: Conditional: Exact_pars_int Exact_slice Exact_pars_real Exact_slicetemp1 Exact_slicetemp2

Scheduled Functions

CCTK_PARAMCHECK

exact_paramcheck

do consistency checks on our parameters

 Language: c Options: global Type: function

exact__decode_pars

decode/copy thorn exact parameters into grid scalars

 Language: fortran Type: function

CCTK_PRESTEP (conditional)

exact__initialize

set data from exact solution on an exact slice

 Language: fortran Type: function

MoL_PostStep (conditional)

exact__initialize

set data from exact solution on an exact slice

CCTK_POSTSTEP (conditional)

exact__boundary

overwrite g and k on the boundary with exact solution data

 Language: fortran Type: function

exact__initialize

set initial data from exact solution on a trivial slice

 After: exact__decode_pars Language: fortran Type: function

exact__slice_initialize

set initial data from exact solution on an arbitrary slice

 After: exact__decode_pars Language: fortran Storage: exact_slice Type: function

exact__gauge

set initial lapse and/or shift from exact solution on a trivial slice

 Language: fortran Type: function

CCTK_STARTUP (conditional)

exact__registerslicing

register slicings

 Language: c Options: global Type: function

CCTK_PRESTEP (conditional)

exact__gauge

set evolution lapse and/or shift from exact solution on a trivial slice

 Language: fortran Type: function

MoL_PostStep (conditional)

exact__gauge

set evolution lapse and/or shift from exact solution on a trivial slice

exact__slice_initialize

set initial data from exact solution on arbitrary slice

 After: exact__decode_pars Language: fortran Type: function

CCTK_EVOL (conditional)

exact__slice_evolve

evolve arbitrary slice and extract cauchy data

 Language: fortran Type: function