QuasiLocalMeasures

Erik Schnetter <schnetter@cct.lsu.edu>
Roland Haas <rhaas@ncsa.illinois.edu>

2017-03-21

Abstract

Calculate quasi-local measures such as masses, momenta, or angular momenta and related quantities on closed two-dimentional surfaces, including on horizons.

1 Introduction

The module QuasiLocalMeasures implements the calculation of mass and spin multipoles from the isolated and dynamical horizon formalism [12], as well as a number of other proposed formulæ for quasilocal mass, linear momentum and angular momentum that have been advanced over the years [3]. Even though there are only a few rigorous proofs that establish the properties of these latter quantities, they have been demonstrated to be surprisingly helpful in numerical simulations (see, e.g., [4]), and are therefore an indispensable tool in numerical relativity. QuasiLocalMeasures takes as input a horizon surface, or any other surface that the user specifies (like a large coordinate sphere) and can calculate useful quantities such as the Weyl or Ricci scalars or the three-volume element of the horizon world tube in addition to physical observables such as mass and momenta.

2 Physical System

The Weyl tensor \(C_{\alpha \beta \gamma \delta }\) is defined as the traceless part of the Riemann tensor \(R_{\alpha \beta \gamma \delta }\)

\begin {eqnarray} {\Gamma ^{\alpha }}_{\beta \gamma } &=& \frac 12 g^{\alpha \mu } \left ( g_{\mu \beta ,\gamma }+g_{\mu \gamma ,\beta } - g_{\beta \gamma ,\mu } \right ), \\ {R^\alpha }_{\beta \gamma \delta } &=& {\Gamma ^\alpha }_{\beta \delta ,\gamma } - {\Gamma ^\alpha }_{\beta \gamma ,\delta } + {\Gamma ^\alpha }_{\mu \gamma } {\Gamma ^\mu }_{\beta \delta } - {\Gamma ^\alpha }_{\mu \delta } {\Gamma ^\mu }_{\beta \gamma }, \\ {R^\beta }_\delta &=& {R^{\mu \beta }}_{\mu \delta }, \\ R &=& {R^\mu }_\mu , \\ C_{\alpha \beta \gamma \delta } &=& R_{\alpha \beta \gamma \delta }+ {\frac {1}{2}}\left (R_{\alpha \delta }g_{\beta \gamma }-R_{\alpha \gamma }g_{\beta \delta }+R_{\beta \gamma }g_{\alpha \delta }-R_{\beta \delta }g_{\alpha \gamma }\right )+ {\frac {1}{6}}R\left (g_{\alpha \gamma }g_{\beta \delta }-g_{\alpha \delta }g_{\beta \gamma }\right ), \end {eqnarray}

where \({\Gamma ^{\alpha }}_{\beta \gamma }\), \({R^\beta }_\delta \) and \(R\) are the Christoffel symbols, Ricci tensor and Riemann scalar respectively [6]. Its self-dual is \begin {equation} \tilde C_{\alpha \beta \gamma \delta } = C_{\alpha \beta \gamma \delta } + (i/2)\epsilon _{\alpha \beta \mu \nu } {C^{\mu \nu }}_{\gamma \delta }. \end {equation}

The curvature invariants \(\mathcal {I}\) (qlm_i) and \(\mathcal {J}\) (qlm_j) are defined in terms of the self-dual of the Weyl tensor [5] \begin {equation} \mathcal {I} = \tilde C_{\alpha \beta \gamma \delta } \tilde C^{\alpha \beta \gamma \delta } \qquad \mbox {and}\qquad \mathcal {J} = \tilde C_{\alpha \beta \gamma \delta } {\tilde C^{\gamma \delta }}_{\mu \nu } \tilde C^{\mu \nu \alpha \beta }. \end {equation}

3 A note on evaluating 3D integrals on the horizon world tube

[NOTE: Ignore the stuff below. You can do that much easier.]

3.1 Integral transformation

The papers about dynamical horizons contain integrals over the 3D horizon world tube, expressed e.g. as

\begin {eqnarray} \int X\; d^3V \end {eqnarray}

where \(X\) is some quantity that lives on the horizon. These integrals have to be transformed into a \(2+1\) form so that they can be conveniently evaluated, e.g. as

\begin {eqnarray} \int X\; A\, d^2S\, dt \end {eqnarray}

where \(d^2S\) is the area element on the horizon cross section contained in \(\Sigma \), and \(dt\) is the coordinate time differential. The factor \(A\) should contain the extra terms due to this coordinate transformation.

Starting from the \(3\)-volume element \(d^3V\), let us first decompose it into the \(2\)-volume element \(d^2S\) and a “time” coordinate on the horizon, which we call \(\sigma \). Note that \(\sigma \) will generally be a spacelike coordinate for dynamical horizons. Let \(\mathbf {Q}\) be the induced \(3\)-metric on the horizon, and \(\mathbf {q}\) be the induced \(2\)-metric on the cross section. Then it is

\begin {eqnarray} d^3V & = & \sqrt {\det Q}\; d\theta \, d\phi \, d\sigma \\ & = & \frac {\sqrt {\det Q}}{\sqrt {\det q}}\; d^2S\, d\sigma \end {eqnarray}

because \(d^2S = \sqrt {\det q}\, d\theta \, d\phi \).

The coordinate time differential \(dt\) and the differential \(d\sigma \) will in general not be aligned because the horizon world tube will in general not have a static coordinate shape. It is

\begin {eqnarray} d\tau & = & (\cosh \alpha )\, dt + (\sinh \alpha )\, ds \\ d\sigma & = & (\cosh \alpha )\, ds + (\sinh \alpha )\, dt \end {eqnarray}

where \(s\) is a radial coordinate perpendicular to the horizon and also perpendicular to \(t\), and \(\tau \) is perpendicular to \(\sigma \) and lies in the plan spanned by \(t\) and \(s\). \(\tau \) and \(\sigma \) are depend on \(t\) and \(s\) via a Lorentz boost. Thus we have

\begin {eqnarray} \frac {d\sigma }{dt} & = & (\cosh \alpha )\, \frac {ds}{dt} + (\sinh \alpha )\, \frac {dt}{dt} \\ & = & \sinh \alpha \quad \text {.} \end {eqnarray}

Putting everything together we arrive at

\begin {eqnarray} \int X\; \frac {\sqrt {\det Q}}{\sqrt {\det q}}\; (\sinh \alpha )\, d^2S\, dt \quad \text {.} \end {eqnarray}

3.2 The “lapse” function \(N_R\)

Starting from

\begin {eqnarray} N_R & = & | \partial R | \end {eqnarray}

we find, since the radius \(R\) changes only in the \(\sigma \) direction,

\begin {eqnarray} N_R^2 & = & g^{\sigma \sigma }\, (\partial _\sigma R)\, (\partial _\sigma R) \quad \text {.} \end {eqnarray}

If we assume \(\partial _\tau R = 0\) and write \(\partial _t R = \dot R\), and use the relations between \(\sigma \) and \(t\) from above, we get

\begin {eqnarray} \dot R & = & \partial _t R \\ & = & \frac {\partial \tau }{\partial t} \partial _\tau R + \frac {\partial \sigma }{\partial t} \partial _\sigma R \\ & = & \sinh \alpha \, \partial _\sigma R \end {eqnarray}

[NOTE: but \(\partial _t \alpha \ne 0\).] and therefore

\begin {eqnarray} \partial _\sigma R & = & \frac {1}{\sinh \alpha }\; \dot R \quad \text {.} \end {eqnarray}

Additionally we have \(g^{\sigma \sigma } = g^{ab} \sigma _a \sigma _b = g_{ab} \sigma ^a \sigma ^b\) where \(\sigma ^a\) is the unit vector in the \(\sigma \) direction, i.e. 

\begin {eqnarray} \tau ^a & = & (\cosh \alpha )\, t^a + (\sinh \alpha )\, s^a \\ \sigma ^a & = & (\cosh \alpha )\, s^a + (\sinh \alpha )\, t^a \end {eqnarray}

3.3 Special Behaviour

In order to use the QuasiLocalMeasures thorn on existing data (postprocessing), the following procedure is necessary.

The thorns involved in this procedure have some examples. In general, this is NOT a “just do it” action; you have to know what you are doing, since you have to put the pieces together in your parameter file and make sure that everything is consistent. We may have a vision that you just call a script in a directory that contains output files and the script figures out everything else, but we’re not there yet. All the ingredients are there, but you’ll have to put them together in the right way. Think Lego.

4 Interpreting 2D output

2D output is given on a rectangular grid. This grid has coordinates which are regular and have a constant spacing in the \(\theta \) and \(\phi \) directions. Cactus output has only grid point indices, but does not contain the coordinates \(\theta \) and \(\phi \) themselves.

In gnuplot, one can define functions to convert indices to coordinates:

\begin {eqnarray} \theta (i) & = & (i - g\theta + 0.5) * \pi / n\theta \\ \phi (j) & = & (j - g\phi ) * 2*\pi / n\phi \end {eqnarray}

where \(g\theta \) and \(g\phi \) is the number of ghost points in the corresponding direction, and \(n\theta \) and \(n\phi \) the number of interior points. Here are the same equations in gnuplot syntax:

theta(i) = (i - nghosts + 0.5) * pi / ntheta
phi(j) = (j - nghosts) * 2*pi / nphi

Usually, nghosts=2, ntheta=35, and nphi=72. i and j are is the integer grid point indices. Note that ntheta and nphi in the parameter file include ghost zones, while their definitions here do not include them. In general, nphi is even and ntheta is odd, because the points are staggered about the poles.

A test plot shows whether the plot is symmetric about \(\pi /2\) in the \(\theta \) and \(\pi \) in the \(\phi \) direction. Also, plotting something axisymmetric with bitant symmetry vs. \(\theta \) and vs. \(\pi -\theta \), and vs. \(\phi \) and \(2\pi -\phi \), should lie exactly on top of each other.

There are also scalars origin/delta_theta/phi which one can use in the above equations. Then the equations read

theta(i) = (i + origin_theta) * delta_theta
phi(j) = (j + origin_phi) * delta_phi

but, of course, these four quantities are all irrational and don’t look nice.

References

[1]   O. Dreyer, B. Krishnan, D. Shoemaker and E. Schnetter, Phys. Rev. D 67, 024018 (2003) doi:10.1103/PhysRevD.67.024018 [gr-qc/0206008].

[2]   E. Schnetter, B. Krishnan and F. Beyer, Phys. Rev. D 74, 024028 (2006) doi:10.1103/PhysRevD.74.024028 [gr-qc/0604015].

[3]   L. B. Szabados, Living Rev. Rel. 7, 4 (2004).

[4]   G. Lovelace et al., Phys. Rev. D 82, 064031 (2010) doi:10.1103/PhysRevD.82.064031 [arXiv:0907.0869 [gr-qc]].

[5]   J. G. Baker, M. Campanelli and C. O. Lousto, Phys. Rev. D 65, 044001 (2002) doi:10.1103/PhysRevD.65.044001 [gr-qc/0104063].

[6]   C. W. Misner, K. S. Thorne and J. A. Wheeler, San Francisco 1973, 1279p

5 Parameters




begin_qlm_calculations_after
Scope: private  REAL



Description: when should we start calculations?



Range   Default: 0.0
*:*
at/after this time (inclusively)






coordsystem
Scope: private  STRING



Description: The coordinate system to use



Range   Default: cart3d
must be a registered coordinate system






interpolator
Scope: private  STRING



Description: The interpolator to use



Range   Default: Lagrange polynomial interpolation
must be a registered interpolator






interpolator_options
Scope: private  STRING



Description: Options for the interpolator



Range   Default: order=2
must be a valid options specification






killing_vector_method
Scope: private  KEYWORD



Description: Method for finding the Killing vector field



Range   Default: eigenvector
axial
Assume that d/dphi is a Killing vector
eigenvector
Solve the Killing vector equation as eigenvector equation
gradient
Calculate the normal to the gradient of a scalar






killing_vector_normalisation
Scope: private  KEYWORD



Description: Method for normalising the Killing vector field



Range   Default: average
average
Average several integral lines
median
Use the median integral line






num_surfaces
Scope: private  INT



Description: Number of surfaces



Range   Default: 1
0:100






output_vtk_every
Scope: private  INT



Description: Output a VTK file with the main 2D



Range   Default: (none)
don’t output VTK file
1:*
output every so many iterations






spatial_order
Scope: private  INT



Description: Order of spatial differencing



Range   Default: 2
2
second order
4
fourth order






surface_index
Scope: private  INT



Description: Spherical surface that contains the surface shape



Range   Default: -1
-1
do not calculate
0:*
surface index






surface_name
Scope: private  STRING



Description: Spherical surface that contains the surface shape



Range   Default: (none)
use surface_index
.*
surface name






verbose
Scope: private  BOOLEAN



Description: Produce log output while running



  Default: no






veryverbose
Scope: private  BOOLEAN



Description: Produce much log output while running



  Default: no






auto_res
Scope: shared from SPHERICALSURFACE BOOLEAN






maxnphi
Scope: shared from SPHERICALSURFACE INT






maxntheta
Scope: shared from SPHERICALSURFACE INT






nghostsphi
Scope: shared from SPHERICALSURFACE INT






nghoststheta
Scope: shared from SPHERICALSURFACE INT






nphi
Scope: shared from SPHERICALSURFACE INT






nsurfaces
Scope: shared from SPHERICALSURFACE INT






ntheta
Scope: shared from SPHERICALSURFACE INT






symmetric_x
Scope: shared from SPHERICALSURFACE BOOLEAN






symmetric_y
Scope: shared from SPHERICALSURFACE BOOLEAN






symmetric_z
Scope: shared from SPHERICALSURFACE BOOLEAN



6 Interfaces

General

Implements:

quasilocalmeasures

Inherits:

admbase

sphericalsurface

tmunubase

Grid Variables

6.0.1 PRIVATE GROUPS




  Group Names     Variable Names     Details   




qlm_state   compact0
qlm_calc_error   descriptionStatus information
qlm_have_valid_data   dimensions0
qlm_have_killing_vector   distributionCONSTANT
qlm_timederiv_order   group typeSCALAR
qlm_iteration   timelevels1
 vararray_sizenum_surfaces
 variable typeINT




qlm_state_p   compact0
qlm_have_valid_data_p   descriptionPrevious status information
qlm_have_valid_data_p_p   dimensions0
qlm_have_killing_vector_p   distributionCONSTANT
qlm_have_killing_vector_p_p  group typeSCALAR
  timelevels1
 vararray_sizenum_surfaces
 variable typeINT




qlm_grid_int   compact0
qlm_nghoststheta   descriptionGrid description
qlm_nghostsphi   dimensions0
qlm_ntheta   distributionCONSTANT
qlm_nphi   group typeSCALAR
  timelevels1
 vararray_sizenum_surfaces
 variable typeINT




qlm_grid_real   compact0
qlm_origin_x   descriptionGrid description
qlm_origin_y   dimensions0
qlm_origin_z   distributionCONSTANT
qlm_origin_theta   group typeSCALAR
qlm_origin_phi   timelevels1
qlm_delta_theta  vararray_sizenum_surfaces
qlm_delta_phi  variable typeREAL




qlm_grid_real_p   compact0
qlm_origin_x_p   descriptionPrevious grid description
qlm_origin_y_p   dimensions0
qlm_origin_z_p   distributionCONSTANT
qlm_origin_x_p_p   group typeSCALAR
qlm_origin_y_p_p   timelevels1
qlm_origin_z_p_p  vararray_sizenum_surfaces
 variable typeREAL




qlm_shapes   compact0
qlm_shape   descriptionShape of the surface
  dimensions2
  distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL








  Group Names    Variable Names    Details   




qlm_shapes_p   compact0
qlm_shape_p   descriptionPrevious shapes of the surface
qlm_shape_p_p   dimensions2
  distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_coordinates   compact0
qlm_x   descriptionCartesian coordinates of the grid points on the surface
qlm_y   dimensions2
qlm_z   distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_coordinates_p   compact0
qlm_x_p   descriptionPast Cartesian coordinates of the grid points on the surface
qlm_y_p   dimensions2
qlm_z_p   distributionCONSTANT
qlm_x_p_p   group typeARRAY
qlm_y_p_p   sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
qlm_z_p_p   tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_tetrad_l   compact0
qlm_l0   descriptionTetrad vector lmˆ  u
qlm_l1   dimensions2
qlm_l2   distributionCONSTANT
qlm_l3   group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_tetrad_n   compact0
qlm_n0   descriptionTetrad vector nˆm  u
qlm_n1   dimensions2
qlm_n2   distributionCONSTANT
qlm_n3   group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_tetrad_m   compact0
qlm_m0   descriptionTetrad vector mmˆ  u
qlm_m1   dimensions2
qlm_m2   distributionCONSTANT
qlm_m3   group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeCOMPLEX








  Group Names     Variable Names    Details   




qlm_newman_penrose   compact0
qlm_npkappa   descriptionNewman-Penrose quantities
qlm_nptau   dimensions2
qlm_npsigma   distributionCONSTANT
qlm_nprho   group typeARRAY
qlm_npepsilon   sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
qlm_npgamma   tagsCheckpoint=”no”
    tagsconvergence_power=1
qlm_npbeta   timelevels1
qlm_npalpha  vararray_sizenum_surfaces
qlm_nppi  variable typeCOMPLEX




qlm_weyl_scalars   compact0
qlm_psi0   descriptionWeyl scalars (aka Newman-Penrose spin coefficients)
qlm_psi1   dimensions2
qlm_psi2   distributionCONSTANT
qlm_psi3   group typeARRAY
qlm_psi4   sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
qlm_i   tagsCheckpoint=”no”
    tagsconvergence_power=1
qlm_j   timelevels1
qlm_s  vararray_sizenum_surfaces
qlm_sdiff  variable typeCOMPLEX




qlm_ricci_scalars   compact0
qlm_phi00   descriptionRicci scalars
qlm_phi11   dimensions2
qlm_phi01   distributionCONSTANT
qlm_phi12   group typeARRAY
qlm_phi10   sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
qlm_phi21   tagsCheckpoint=”no”
    tagsconvergence_power=1
qlm_phi02   timelevels1
qlm_phi22  vararray_sizenum_surfaces
qlm_phi20  variable typeREAL




qlm_twometric   compact0
qlm_qtt   description2-metric
qlm_qtp   dimensions2
qlm_qpp   distributionCONSTANT
qlm_rsc   group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsCheckpoint=”no”
    tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_killing_vector   compact0
qlm_xi_t   descriptionKilling vector field
qlm_xi_p   dimensions2
qlm_chi   distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_killed_twometric   compact0
qlm_lqtt   descriptionLie derivative of the 2-metric along the Killing vector field
qlm_lqtp   dimensions2
qlm_lqpp   distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsCheckpoint=”no”
    tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL








  Group Names     Variable Names     Details   




qlm_invariant_coordinates   compact0
qlm_inv_z   descriptionInvariant coordinates on the surface
    descriptionassuming axisymmetry
  dimensions2
  distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsCheckpoint=”no”
    tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_multipole_moments   compact0
qlm_mp_m0   descriptionMass and spin multipole moments
qlm_mp_m1   dimensions0
qlm_mp_m2   distributionCONSTANT
qlm_mp_m3   group typeSCALAR
qlm_mp_m4   tagsCheckpoint=”no”
qlm_mp_m5   timelevels1
qlm_mp_m6  vararray_sizenum_surfaces
qlm_mp_m7  variable typeREAL




qlm_3determinant   compact0
qlm_3det   description3-Determinant of H for a special choice of the triad
  dimensions2
  distributionCONSTANT
  group typeARRAY
  sizeSPHERICALSURFACE::MAXNTHETA
    sizeSPHERICALSURFACE::MAXNPHI
  tagsCheckpoint=”no”
    tagsconvergence_power=1
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




qlm_scalars   compact0
qlm_time   descriptionScalar quantities on the surface
qlm_equatorial_circumference  dimensions0
qlm_polar_circumference_0   distributionCONSTANT
qlm_polar_circumference_pi_2  group typeSCALAR
qlm_area   timelevels1
qlm_irreducible_mass  vararray_sizenum_surfaces
qlm_radius  variable typeREAL




qlm_scalars_p   compact0
qlm_time_p   descriptionSome scalar quantities on the surface at previous times
qlm_time_p_p   dimensions0
qlm_radius_p   distributionCONSTANT
qlm_radius_p_p   group typeSCALAR
  timelevels1
 vararray_sizenum_surfaces
 variable typeREAL




7 Schedule

This section lists all the variables which are assigned storage by thorn EinsteinAnalysis/QuasiLocalMeasures. 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:  
qlm_state qlm_scalars  
qlm_state_p qlm_scalars_p  
qlm_grid_int qlm_grid_real qlm_grid_real_p  
qlm_shapes qlm_tetrad_l qlm_tetrad_n qlm_tetrad_m  
qlm_shapes_p  
qlm_killing_vector  
qlm_coordinates qlm_coordinates_p  
qlm_newman_penrose qlm_weyl_scalars  
qlm_ricci_scalars qlm_twometric qlm_killed_twometric  
qlm_invariant_coordinates qlm_multipole_moments qlm_3determinant 
   

Scheduled Functions

CCTK_PARAMCHECK

  qlm_paramcheck

  check quasi-local parameter settings

 

 Language:fortran
 Options: global
 Type: function

CCTK_INITIAL

  qlm_init

  initialise quasi-local calculations

 

 Language:fortran
 Options: global
 Type: function

CCTK_ANALYSIS

  qlm_calculate

  calculate quasi-local quantities

 

 After: sphericalsurface_hasbeenset
   settmunu
  Language:fortran
 Options: global
 Storage: qlm_coordinates
   qlm_coordinates_p
   qlm_newman_penrose
   qlm_weyl_scalars
   qlm_ricci_scalars
   qlm_twometric
   qlm_killed_twometric
   qlm_invariant_coordinates
   qlm_multipole_moments
   qlm_3determinant
 Triggers: qlm_state
   qlm_grid_int
   qlm_grid_real
   qlm_shapes
   qlm_tetrad_l
   qlm_tetrad_n
   qlm_tetrad_m
   qlm_coordinates
   qlm_newman_penrose
   qlm_weyl_scalars
   qlm_ricci_scalars
   qlm_twometric
   qlm_killing_vector
   qlm_killed_twometric
   qlm_invariant_coordinates
   qlm_multipole_moments
   qlm_3determinant
   qlm_scalars
 Type: function