Date

### Abstract

Basic analysis of the metric and extrinsic curvature tensors

### 1 Purpose

This thorn provides analysis routines to calculate the following quantities:

• The trace of the extrinsic curvature ($trK$).

• The determinant of the 3-metric ($detg$).

• The components of the 3-metric in spherical coordinates
(${g}_{rr},{g}_{r𝜃},{g}_{r\varphi },{g}_{𝜃𝜃},{g}_{\varphi 𝜃},{g}_{\varphi \varphi }$).

• The components of the extrinsic curvature in spherical coordinates
(${K}_{rr},{K}_{r𝜃},{K}_{r\varphi },{K}_{𝜃𝜃},{K}_{𝜃\varphi },{K}_{\varphi \varphi }$).

• The components of the 3-Ricci tensor in cartesian coordinates
(${\mathsc{ℛ}}_{ij}$) for $i,j\in \left\{1,2,3\right\}$.

• The Ricci scalar ($\mathsc{ℛ}$).

### 2 Trace of Extrinsic Curvature

The trace of the extrinsic curvature at each point on the grid is placed in the grid function trK. The algorithm for calculating the trace uses the physical metric, that is it includes any conformal factor.

 $trK\equiv trK=\frac{1}{{\psi }^{4}}{g}^{ij}{K}_{ij}$ (1)

### 3 Determinant of 3-Metric

The determinant of the 3-metric at each point on the grid is placed in the grid function detg. This is always the determinant of the conformal metric, that is it does not include any conformal factor.

 $detg\equiv detg=-{g}_{13}^{2}\ast {g}_{22}+2\ast {g}_{12}\ast {g}_{13}\ast {g}_{23}-{g}_{11}\ast {g}_{23}^{2}-{g}_{12}^{2}\ast {g}_{33}+{g}_{11}\ast {g}_{22}\ast {g}_{33}$ (2)

### 4 Transformation to Spherical Cooordinates

The values of the metric and/or extrinsic curvature in a spherical polar coordinate system $\left(r,𝜃,\varphi \right)$ evaluated at each point on the computational grid are placed in the grid functions (grr, grt, grp, gtt, gtp, gpp) and (krr, krt, krp, ktt, ktp, kpp). In the spherical transformation, the $𝜃$ coordinate is referred to as q and the $\varphi$ as p.

The general transformation from Cartesian to Spherical for such tensors is

$\begin{array}{rcll}{A}_{rr}& =& {\mathrm{sin}}^{2}𝜃{\mathrm{cos}}^{2}\varphi {A}_{xx}+{\mathrm{sin}}^{2}𝜃{\mathrm{sin}}^{2}\varphi {A}_{yy}+{\mathrm{cos}}^{2}𝜃{A}_{zz}+2{\mathrm{sin}}^{2}𝜃\mathrm{cos}\varphi \mathrm{sin}\varphi {A}_{xy}& \text{}\\ & & +2\mathrm{sin}𝜃\mathrm{cos}𝜃\mathrm{cos}\varphi {A}_{xz}+2\mathrm{sin}𝜃\mathrm{cos}𝜃\mathrm{sin}\varphi {A}_{yz}& \text{}\\ {A}_{r𝜃}& =& r\left(\mathrm{sin}𝜃\mathrm{cos}𝜃{\mathrm{cos}}^{2}\varphi {A}_{xx}+2\ast \mathrm{sin}𝜃\mathrm{cos}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{xy}+\left({\mathrm{cos}}^{2}𝜃-{\mathrm{sin}}^{2}𝜃\right)\mathrm{cos}\varphi {A}_{xz}& \text{}\\ & & +\mathrm{sin}𝜃\mathrm{cos}𝜃{\mathrm{sin}}^{2}\varphi {A}_{yy}+\left({\mathrm{cos}}^{2}𝜃-{\mathrm{sin}}^{2}𝜃\right)\mathrm{sin}\varphi {A}_{yz}-\mathrm{sin}𝜃\mathrm{cos}𝜃{A}_{zz}\right)& \text{}\\ {A}_{r\varphi }& =& r\mathrm{sin}𝜃\left(-\mathrm{sin}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{xx}-\mathrm{sin}𝜃\left({\mathrm{sin}}^{2}\varphi -{\mathrm{cos}}^{2}\varphi \right){A}_{xy}-\mathrm{cos}𝜃\mathrm{sin}\varphi {A}_{xz}& \text{}\\ & & +\mathrm{sin}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{yy}+\mathrm{cos}𝜃\mathrm{cos}\varphi {A}_{yz}\right)& \text{}\\ {A}_{𝜃𝜃}& =& {r}^{2}\left({\mathrm{cos}}^{2}𝜃{\mathrm{cos}}^{2}\varphi {A}_{xx}+2{\mathrm{cos}}^{2}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{xy}-2\mathrm{sin}𝜃\mathrm{cos}𝜃\mathrm{cos}\varphi {A}_{xz}+{\mathrm{cos}}^{2}𝜃{\mathrm{sin}}^{2}\varphi {A}_{yy}& \text{}\\ & & -2\mathrm{sin}𝜃\mathrm{cos}𝜃\mathrm{sin}\varphi {A}_{yz}+{\mathrm{sin}}^{2}𝜃{A}_{zz}\right)& \text{}\\ {A}_{𝜃\varphi }& =& {r}^{2}\mathrm{sin}𝜃\left(-\mathrm{cos}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{xx}-\mathrm{cos}𝜃\left({\mathrm{sin}}^{2}\varphi -{\mathrm{cos}}^{2}\varphi \right){A}_{xy}+\mathrm{sin}𝜃\mathrm{sin}\varphi {A}_{xz}& \text{}\\ & & +\mathrm{cos}𝜃\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{yy}-\mathrm{sin}𝜃\mathrm{cos}\varphi {A}_{yz}\right)& \text{}\\ {A}_{\varphi \varphi }& =& {r}^{2}{\mathrm{sin}}^{2}𝜃\left({\mathrm{sin}}^{2}\varphi {A}_{xx}-2\mathrm{sin}\varphi \mathrm{cos}\varphi {A}_{xy}+{\mathrm{cos}}^{2}\varphi {A}_{yy}\right)& \text{}\end{array}$

If the parameter normalize_dtheta_dphi is set to yes, the angular components are projected onto the vectors $\left(rd𝜃,r\mathrm{sin}𝜃d\varphi \right)$ instead of the default vector $\left(d𝜃,d\varphi \right)$. That is,

$\begin{array}{rcll}{A}_{𝜃𝜃}& \to & {A}_{𝜃𝜃}∕{r}^{2}& \text{}\\ {A}_{\varphi \varphi }& \to & {A}_{\varphi \varphi }∕\left({r}^{2}{\mathrm{sin}}^{2}𝜃\right)& \text{}\\ {A}_{r𝜃}& \to & {A}_{r𝜃}∕r& \text{}\\ {A}_{r\varphi }& \to & {A}_{r\varphi }∕\left(r\mathrm{sin}𝜃\right)& \text{}\\ {A}_{𝜃\varphi }& \to & {A}_{𝜃\varphi }∕{r}^{2}\mathrm{sin}𝜃\right)& \text{}\end{array}$

### 5 Computing the Ricci tensor and scalar

The computation of the Ricci tensor uses the ADMMacros thorn. The calculation of the Ricci scalar uses the generic trace routine in this thorn.

### 6 Parameters

 normalize_dtheta_dphi Scope: private BOOLEAN Description: Project angular components onto r*dtheta and r*sin(theta)*dphi? Default: no

 ricci_persist Scope: private BOOLEAN Description: Keep storage of the Ricci tensor and scalar around? Default: no

 ricci_prolongation_type Scope: private KEYWORD Description: The kind of boundary prolongation for the Ricci tensor and scalar Range Default: none Lagrange standard prolongation (requires several time levels) copy use data from the current time level (requires only one time level) none no prolongation (use this if you do not have enough time levels active)

 ricci_timelevels Scope: private INT Description: Number of time levels for the Ricci tensor and scalar Range Default: 1 1:3

 metric_type Scope: shared from ADMBASE KEYWORD

### 7 Interfaces

Implements:

Inherits:

staticconformal

grid

#### Grid Variables

##### 7.0.1 PUBLIC GROUPS
 Group Names Variable Names Details trace_of_k compact 0 trK description trace of extrinsic curvature dimensions 3 distribution DEFAULT group type GF tags tensortypealias=”scalar” Prolongation=”none” timelevels 1 variable type REAL detofg compact 0 detg description determinant of the conformal metric dimensions 3 distribution DEFAULT group type GF tags tensortypealias=”scalar” Prolongation=”none” timelevels 1 variable type REAL spherical_metric compact 0 grr description Metric in spherical coordinates gqq dimensions 3 gpp distribution DEFAULT grq group type GF grp tags Prolongation=”none” gqp timelevels 1 variable type REAL spherical_curv compact 0 krr description extrinsic curvature in spherical coordinates kqq dimensions 3 kpp distribution DEFAULT krq group type GF krp tags Prolongation=”none” kqp timelevels 1 variable type REAL ricci_tensor compact 0 Ricci11 description Components of the Ricci tensor Ricci12 dimensions 3 Ricci13 distribution DEFAULT Ricci22 group type GF Ricci23 tags tensortypealias=”dd_sym” ProlongationParameter=”ADMAnalysis::ricci_prolongation_type” Ricci33 timelevels 3 variable type REAL ricci_scalar compact 0 Ricci description The Ricci scalar dimensions 3 distribution DEFAULT group type GF tags tensortypealias=”scalar” ProlongationParameter=”ADMAnalysis::ricci_prolongation_type” timelevels 3 variable type REAL

Symmetry.h

Provides:

CartToSphere to

Trace to

### 8 Schedule

This section lists all the variables which are assigned storage by thorn EinsteinAnalysis/ADMAnalysis. 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

 Conditional: ricci_tensor[1] ricci_scalar[1] ricci_tensor[2] ricci_scalar[2] ricci_tensor[3] ricci_scalar[3]

#### Scheduled Functions

CCTK_PARAMCHECK

check that the metric_type is recognised

 Language: c Options: global Type: function

CCTK_WRAGH (conditional)

register symmetry of ricci tensor and scalar

 Language: c Options: global Type: function

CCTK_ANALYSIS (conditional)

riccigroup

calculate ricci tensor, with boundary conditions

 Storage: ricci_tensor[1] ricci_scalar[1] detofg Triggers: ricci_tensor ricci_scalar Type: group

RicciGroup

calculate ricci tensor, with boundary conditions

RicciGroup

ricciboundariesgroup

set ricci tensor on the boundary

RicciBoundariesGroup

select boundary conditions for the ricci tensor

 Language: c Options: level Sync: ricci_tensor ricci_scalar Type: function

RicciBoundariesGroup

applybcs

apply boundary conditions to the ricci tensor

CCTK_ANALYSIS

compute the trace of the extrinsic curvature and the determinant of the metric

 Language: c Reads: admbase::metric admbase::curv staticconformal::psi staticconformal::conformal_state Storage: trace_of_k detofg Sync: trace_of_k detofg Triggers: trace_of_k detofg Type: function Writes: trk(everywhere) detg(everywhere)

CCTK_ANALYSIS

calculate the spherical metric in r,theta(q), phi(p)

 Language: c Reads: grid::coordinates admbase::metric Storage: spherical_metric Sync: spherical_metric Triggers: spherical_metric Type: function Writes: spherical_metric(everywhere)

CCTK_ANALYSIS

calculate the spherical ex. curvature in r, theta(q), phi(p)

 Language: c Reads: grid::coordinates admbase::curv Storage: spherical_curv Sync: spherical_curv Triggers: spherical_curv Type: function Writes: spherical_curv(everywhere)

CCTK_POSTINITIAL (conditional)

riccigroup

calculate ricci tensor, with boundary conditions

 After: mol_poststep mol_postinitial Storage: detofg Type: group

CCTK_POSTREGRID (conditional)

ricciboundariesgroup

set ricci tensor on the boundary

 Storage: detofg Type: group

CCTK_POSTRESTRICT (conditional)

ricciboundariesgroup

set ricci tensor on the boundary

 Type: group

CCTK_POST_RECOVER_VARIABLES (conditional)

riccigroup

calculate ricci tensor, with boundary conditions

 After: mol_poststep mol_postinitial Storage: detofg Type: group

CCTK_EVOL (conditional)

riccigroup

calculate ricci tensor, with boundary conditions

 After: mol_evolution Storage: detofg Type: group

#### Aliased Functions

 Alias Name: Function Name: ApplyBCs ADMAnalysis_ApplyBCs