ADMMass

Frank Löffler

2012-05-07

Abstract

Thorn ADMMass can compute the ADM mass from quantities in ADMBase.

1 Introduction

The ADM mass evaluated as either surface integrals at infinity or volume integrals over entire hypersurfaces give a measure of the total energy in the spacetime.

The ADM mass can be defined [1] as a surface integral over a sphere with infinite radius: \begin {equation} \label {eq:ADM_mass} M_{\mbox {\tiny ADM}}=\frac {1}{16\pi }\oint _\infty \sqrt {\gamma }\gamma ^{ij}\gamma ^{kl} (\gamma _{ik,j}-\gamma _{ij,k})\text {d}\! S_l \end {equation} . This is, assuming \(\alpha =1\) at infinity, equivalent to \begin {equation} \label {eq:ADM_mass_volume} M_{\mbox {\tiny ADM}}=\frac {1}{16\pi }\int \left (\alpha \sqrt {\gamma }\gamma ^{ij}\gamma ^{kl} (\gamma _{ik,j}-\gamma _{ij,k})\right )_{,l}\text {d}\!^{\,3}\!\!x \end {equation} . In practice, the following equation can also be used within the thorn: \begin {equation} \label {eq:ADM_mass_lapse} M_{\mbox {\tiny ADM}}=\frac {1}{16\pi }\oint _\infty \alpha \sqrt {\gamma }\gamma ^{ij}\gamma ^{kl} (\gamma _{ik,j}-\gamma _{ij,k})\text {d}\! S_l. \end {equation} This differs from equation (??) by the factor \(\alpha \) inside the integral. For evaluations of those equations at infinity, \(\alpha =1\) is assumed, and they are equal. For evaluations at a finite distance, however, this is usually not the case and the approximation of the ADM mass is gauge-dependent [1]. Depending on circumstances, either (??), (?? or  (??) might give better results.

2 Using This Thorn

Multiple measurements can be done for both volume and surface integral, but the limit for both is 100 (change param.ccl if you need more). You need to specify the number of integrations with ADMMass_number (and ADMMass will perform both integrations that many times).

Also note that this thorn uses the ADMMacros for derivatives. Thus, converegence of results is limited to the order of these derivatives (ADMMacros::spatial_order).

ADMMass provides several possibilities to specify the (finite) integration domain, both for surface and volume integral, which we list in the following:

You should output ADMMass::ADMMass_Masses for the result of the integrations, which will include the results for the volume integral, the usual surface integral and the sorface integral including the lapse.

References

[1]   N. O Murchadha and J. W. York, “Gravitational energy,” Phys. Rev. D 10, 2345 (1974). doi:10.1103/PhysRevD.10.2345

3 Parameters




admmass_debug
Scope: private BOOLEAN



Description: Enable some info at runtime



Default: no






admmass_distance_from_grid_boundary
Scope: private REAL



Description: distance between the grid boundaries and the surface of the integration box



Range Default: -1.0
:
<=0 for disable, positive otherwise






admmass_excise_horizons
Scope: private BOOLEAN



Description: Should we exclude the region inside the AH to the volume integral



Default: no






admmass_number
Scope: private INT



Description: number of measurements



Range Default: 1
0:
0 or positive






admmass_surface_distance
Scope: private REAL



Description: distance between the above-defined center of the integration (cubic) box and its surface



Range Default: -1.0
:
<=0 for disable, positive otherwise






admmass_use_all_volume_as_volume_radius
Scope: private BOOLEAN



Description: Use the whole grid for volume integration



Default: no






admmass_use_surface_distance_as_volume_radius
Scope: private BOOLEAN



Description: Use ADMMass_surface_distance instead of ADMMass_volume_radius



Default: yes






admmass_volume_radius
Scope: private REAL



Description: radius of the sphere inside which the volume integral is computed



Range Default: -1.0
:
<=0 for disable, positive otherwise






admmass_x_max
Scope: private REAL



Description: x position of the righttmost yz-plane for the integration box



Range Default: 100.0
:
anything






admmass_x_min
Scope: private REAL



Description: x position of the leftmost yz-plane for the integration box



Range Default: -100.0
:
anything






admmass_x_pos
Scope: private REAL



Description: x position of the center of the integration box



Range Default: 0.0
:
anything






admmass_y_max
Scope: private REAL



Description: y position of the rightmost xz-plane for the integration box



Range Default: 100.0
:
anything






admmass_y_min
Scope: private REAL



Description: y position of the leftmost xz-plane for the integration box



Range Default: -100.0
:
anything






admmass_y_pos
Scope: private REAL



Description: y position of the center of the integration box



Range Default: 0.0
:
anything






admmass_z_max
Scope: private REAL



Description: z position of the rightmost xy-plane for the integration box



Range Default: 100.0
:
anything






admmass_z_min
Scope: private REAL



Description: z position of the leftmost xy-plane for the integration box



Range Default: -100.0
:
anything






admmass_z_pos
Scope: private REAL



Description: z position of the center of the integration box



Range Default: 0.0
:
anything



4 Interfaces

General

Implements:

admmass

Inherits:

admbase

admmacros

staticconformal

spacemask

Grid Variables

4.0.1 PRIVATE GROUPS





  Group Names     Variable Names   Details    




admmass_loopcounterg compact 0
ADMMass_LoopCounter description ADMMass LoopCounter
dimensions 0
distribution CONSTANT
group type SCALAR
timelevels 1
variable type INT




admmass_masses compact 0
ADMMass_SurfaceMass description ADMMass Scalars
ADMMass_SurfaceMass_Lapse dimensions 0
ADMMass_VolumeMass distribution CONSTANT
group type SCALAR
tags checkpoint=”no”
timelevels 1
vararray_size ADMMass_number
variable type REAL




admmass_gfs_surface compact 0
ADMMass_SurfaceMass_GF description ADMMass gridfunctions for surface integration
dimensions 3
distribution DEFAULT
group type GF
tags Prolongation=”none” tensortypealias=”Scalar” checkpoint=”no”
timelevels 3
variable type REAL




admmass_gfs_volume compact 0
ADMMass_VolumeMass_pot_x description ADMMass gridfunctions for volume integration
ADMMass_VolumeMass_pot_y dimensions 3
ADMMass_VolumeMass_pot_z distribution DEFAULT
ADMMass_VolumeMass_GF group type GF
tags Prolongation=”none” tensortypealias=”Scalar” checkpoint=”no”
timelevels 3
variable type REAL




admmass_box compact 0
ADMMass_box_x_min description Physical coordinates of the surface on which the integral is computed
ADMMass_box_x_max dimensions 0
ADMMass_box_y_min distribution CONSTANT
ADMMass_box_y_max group type SCALAR
ADMMass_box_z_min tags checkpoint=”no”
ADMMass_box_z_max timelevels 1
variable type REAL




grid_spacing_product grid_spacing_product compact 0
description product of cctk_delta_space
  description to be computed in local mode and later used in global mode (carpet problems)
dimensions 0
distribution CONSTANT
group type SCALAR
tags checkpoint=”no”
timelevels 1
variable type REAL




Uses header:

SpaceMask.h

5 Schedule

This section lists all the variables which are assigned storage by thorn EinsteinAnalysis/ADMMass. 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:  
ADMMass_LoopCounterG  
ADMMass_Masses  
ADMMass_GFs_surface[3]  
ADMMass_GFs_volume[3]  
   

Scheduled Functions

CCTK_INITIAL

  admmass_initloopcounter

  initialise the loop counter for admmass

 

  Language: c
  Options: global
  Type: function

CCTK_POSTSTEP

  admmass_setloopcounter

  set the loop counter to the value of the parameter admmass:admmass_number

 

  After: outsidemask_updatemask
  Language: c
  Options: global
  Type: function

CCTK_POSTSTEP

  admmass

  admmass loop

 

  After: admmass_setloopcounter
  Storage: admmass_gfs_surface[3]
    admmass_gfs_volume[3]
    admmass_box
    grid_spacing_product
  Type: group
  While: admmass::admmass_loopcounter

ADMMass

  admmass_loop

  decrement loop counter

 

  Language: c
  Options: global
  Type: function

ADMMass

  admmass_surface

  calculate the admmass using a surface integral: local routine

 

  After: admmass_loop
  Language: c
  Options: global
    loop-local
  Sync: admmass_gfs_surface
  Type: function

ADMMass

  admmass_surface_global

  calculate the admmass using a surface integral: global routine

 

  After: admmass_surface
  Language: c
  Options: global
  Type: function

ADMMass

  admmass_surface_lapse

  calculate the admmass*lapse using a surface integral: local routine

 

  After: admmass_surface_global
  Language: c
  Options: global
    loop-local
  Sync: admmass_gfs_surface
  Type: function

ADMMass

  admmass_surface_lapse_global

  calculate the admmass*lapse using a surface integral: global routine

 

  After: admmass_surface_lapse
  Language: c
  Options: global
  Type: function

ADMMass

  admmass_volume

  calculate the admmass using a volume integral: local routine

 

  After: admmass_surface_lapse_global
  Language: c
  Options: global
    loop-local
  Sync: admmass_gfs_volume
  Type: function

ADMMass

  admmass_volume_global

  calculate the admmass using a volume integral: global routine

 

  After: admmass_volume
  Language: c
  Options: global
  Type: function