BaikalVacuum: An Einstein Toolkit thorn for solving Einstein’s equations in vacuum (e.g., black hole) spacetimes, in the BSSN formalism, in Cartesian coordinates

Zachariah B. Etienne <zachetie *at* gmail *dot* com>

May 18, 2020

Abstract

BaikalVacuum solves Einstein’s equations of general relativity in the BSSN formalism, for the case of vacuum (e.g., black hole) spacetimes. In such spacetimes Einstein’s equations reduce to \(G^{\mu \nu }=0\). Given that the complications and super-short-lengthscale variations usually associated with the stress-energy tensor \(T^{\mu \nu }\) in strongly curved spacetimes do not exist in vacuum spacetimes, this thorn implements very high order finite-difference derivatives up to and including 8th order. All codes within this thorn were generated using the Python-based NRPy+ infrastructure, which may be found at http://nrpyplus.net/ (alt link: https://github.com/zachetienne/nrpytutorial).

Both BaikalVacuum and its sister thorn Baikal are fully documented in Jupyter notebooks within NRPy+, and the latest documentation for BaikalETK (the name of the combined Baikal / BaikalVacuum project) may be found in the Tutorial-ETK_thorn-BaikalETK.ipynb Jupyter notebook here:

https://github.com/zachetienne/nrpytutorial

Also the NRPy+ Jupyter documentation can be navigated via the following link:

https://nbviewer.jupyter.org/github/zachetienne/nrpytutorial/blob/master/Tutorial-ETK_thorn-BaikalETK.ipynb

1 Planned features

2 Parameters




diss_strength
Scope: restricted  REAL



Description: (see NRPy+ for parameter definition)



Range   Default: 0.1
*:*
All values accepted. NRPy+ does not restrict the allowed ranges of parameters yet.






eta
Scope: restricted  REAL



Description: (see NRPy+ for parameter definition)



Range   Default: 2.0
*:*
All values accepted. NRPy+ does not restrict the allowed ranges of parameters yet.






fd_order
Scope: restricted  INT



Description: (see NRPy+ for parameter definition)



Range   Default: 4
*:*
All values accepted. NRPy+ does not restrict the allowed ranges of parameters yet.






lapse_floor
Scope: restricted  REAL



Description: (see NRPy+ for parameter definition)



Range   Default: 1e-15
*:*
All values accepted. NRPy+ does not restrict the allowed ranges of parameters yet.






dtlapse_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



BaikalVacuum






dtshift_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



BaikalVacuum






evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



BaikalVacuum






lapse_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



BaikalVacuum






shift_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



BaikalVacuum



3 Interfaces

General

Implements:

baikalvacuum

Inherits:

admbase

boundary

grid

Grid Variables

3.0.1 PUBLIC GROUPS




  Group Names    Variable Names    Details   




evol_variables   compact0
aDD00GF   descriptionEvolved gridfunctions.
aDD01GF   dimensions3
aDD02GF   distributionDEFAULT
aDD11GF   group typeGF
aDD12GF   timelevels3
aDD22GF  variable typeREAL




evol_variables_rhs   compact0
aDD00_rhsGF   descriptionRight-hand-side gridfunctions.
aDD01_rhsGF   dimensions3
aDD02_rhsGF   distributionDEFAULT
aDD11_rhsGF   group typeGF
aDD12_rhsGF   tagsInterpNumTimelevels=1 prolongation=”none” checkpoint=”no”
aDD22_rhsGF   timelevels1
alpha_rhsGF  variable typeREAL




auxevol_variables   compact0
RbarDD00GF   descriptionAuxiliary gridfunctions needed for evaluating the RHSs.
RbarDD01GF   dimensions3
RbarDD02GF   distributionDEFAULT
RbarDD11GF   group typeGF
RbarDD12GF   tagsInterpNumTimelevels=1 prolongation=”none” checkpoint=”no”
RbarDD22GF   timelevels1
 variable typeREAL




aux_variables   compact0
HGF   descriptionAuxiliary gridfunctions for e.g.
    descriptiondiagnostics.
MSQUAREDGF   dimensions3
MU0GF   distributionDEFAULT
MU1GF   group typeGF
MU2GF   timelevels3
 variable typeREAL




Uses header:

Symmetry.h

Boundary.h

Slicing.h

4 Schedule

This section lists all the variables which are assigned storage by thorn WVUThorns/BaikalVacuum. 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:  
evol_variables[3]  
evol_variables_rhs[1] 
auxevol_variables[1]  
aux_variables[3]  
   

Scheduled Functions

CCTK_STARTUP

  baikalvacuum_registerslicing

  register 3+1 slicing condition

 

 Language:c
 Options: meta
 Type: function

Driver_BoundarySelect (conditional)

  baikalvacuum_specify_driver_boundaryconditions

  register boundary conditions in presync bin driver_boundaryselect.

 

 Language:c
 Type: function

MoL_CalcRHS (conditional)

  baikalvacuum_ricci_eval_order_8

  compute ricci tensor, needed for bssn rhss, at finite-differencing order 8

 

 Before: baikalvacuum_rhs
  Language:c
 Reads: hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: rbardd00gf
   rbardd01gf
   rbardd02gf
   rbardd11gf
   rbardd12gf
   rbardd22gf

MoL_CalcRHS (conditional)

  baikalvacuum_rhs_eval_order_4

  evaluate bssn rhss, at finite-differencing order 4

 

 After: baikalvacuum_ricci
  Language:c
 Reads: evol_variables(everywhere)
   auxevol_variables(interior)
 Type: function
 Writes: evol_variables_rhs(interior)

MoL_CalcRHS (conditional)

  baikalvacuum_rhs_eval_order_6

  evaluate bssn rhss, at finite-differencing order 6

 

 After: baikalvacuum_ricci
  Language:c
 Reads: evol_variables(everywhere)
   auxevol_variables(interior)
 Type: function
 Writes: evol_variables_rhs(interior)

MoL_CalcRHS (conditional)

  baikalvacuum_rhs_eval_order_8

  evaluate bssn rhss, at finite-differencing order 8

 

 After: baikalvacuum_ricci
  Language:c
 Reads: evol_variables(everywhere)
   auxevol_variables(interior)
 Type: function
 Writes: evol_variables_rhs(interior)

MoL_CalcRHS (conditional)

  baikalvacuum_specify_newrad_boundaryconditions_parameters

  newrad boundary conditions, scheduled right after rhs eval.

 

 After: baikalvacuum_rhs
  Language:c
 Reads: evol_variables(everywhere)
 Type: function
 Writes: evol_variables_rhs(boundary)

MoL_PostStep (conditional)

  baikalvacuum_bssn_to_adm

  perform bssn-to-adm conversion. useful for diagnostics.

 

 After: baikalvacuum_evol_applybcs
 Before: admbase_setadmvars
  Language:c
 Reads: add00gf
   add01gf
   add02gf
   add11gf
   add12gf
   add22gf
   hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   vetu0gf
   vetu1gf
   vetu2gf
   betu0gf
   betu1gf
   betu2gf
   cfgf
   trkgf
   alphagf
 Type: function
 Writes: admbase::metric(everywhere)
   admbase::shift(everywhere)
   admbase::curv(everywhere)
   admbase::dtshift(everywhere)
   admbase::lapse(everywhere)

MoL_PostStep (conditional)

  baikalvacuum_enforce_detgammahat_constraint

  enforce detgammabar = detgammahat (= 1 in cartesian)

 

 Language:c
 Reads: hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
 Type: function
 Writes: hdd00gf(everywhere)
   hdd01gf(everywhere)
   hdd02gf(everywhere)
   hdd11gf(everywhere)
   hdd12gf(everywhere)
   hdd22gf(everywhere)

MoL_PostStep (conditional)

  baikalvacuum_floor_the_lapse

  set lapse = max(lapse_floor, lapse)

 

 Before: baikalvacuum_enforce_detgammahat_constraint
 Language:c
 Reads: alphagf(everywhere)
 Type: function
 Writes: alphagf(everywhere)

MoL_PostStep (conditional)

  baikalvacuum_specify_evol_boundaryconditions

  register boundary conditions and perform amr+interprocessor synchronization

 

 Language:c
 Sync: evol_variables
 Type: function

MoL_PostStep (conditional)

  applybcs

  apply registered boundary conditions

 

 After:baikalvacuum_specify_evol_boundaryconditions
 Type:group

CCTK_BASEGRID (conditional)

  baikalvacuum_symmetry_registration_oldcartgrid3d

  register symmetries, the cartgrid3d way.

 

 Language:c
 Options: global
 Type: function

MoL_PseudoEvolution (conditional)

  baikalvacuum_bssn_constraints_order_4

  compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 4

 

 Language:c
 Reads: add00gf
   add01gf
   add02gf
   add11gf
   add12gf
   add22gf
   hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   trkgf
   cfgf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: aux_variables

MoL_PseudoEvolution (conditional)

  baikalvacuum_bssn_constraints_order_6

  compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 6

 

 Language:c
 Reads: add00gf
   add01gf
   add02gf
   add11gf
   add12gf
   add22gf
   hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   trkgf
   cfgf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: aux_variables

MoL_PseudoEvolution (conditional)

  baikalvacuum_bssn_constraints_order_8

  compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 8

 

 Language:c
 Reads: add00gf
   add01gf
   add02gf
   add11gf
   add12gf
   add22gf
   hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   trkgf
   cfgf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: aux_variables

MoL_PseudoEvolution

  baikalvacuum_specify_aux_boundaryconditions

  register boundary conditions and perform amr+interprocessor synchronization

 

 After: baikalvacuum_bssn_constraints
  Language:c
 Sync: aux_variables
 Type: function

MoL_PseudoEvolution

  applybcs

  apply registered boundary conditions

 

 After:baikalvacuum_specify_aux_boundaryconditions
 Type:group

CCTK_BASEGRID

  baikalvacuum_zero_rhss

  idea from lean: set all rhs functions to zero to prevent spurious nans

 

 After: symmetry_registration
 Language:c
 Type: function
 Writes: evol_variables_rhs(everywhere)

CCTK_INITIAL (conditional)

  baikalvacuum_adm_to_bssn_order_4

  convert initial data into bssn variables

 

 After: admbase_postinitial
 Language:c
 Reads: admbase::metric
    admbase::shift
   admbase::curv
   admbase::dtshift
   admbase::lapse
 Sync: evol_variables
 Type: function
 Writes: evol_variables

CCTK_INITIAL (conditional)

  baikalvacuum_adm_to_bssn_order_6

  convert initial data into bssn variables

 

 After: admbase_postinitial
 Language:c
 Reads: admbase::metric
    admbase::shift
   admbase::curv
   admbase::dtshift
   admbase::lapse
 Sync: evol_variables
 Type: function
 Writes: evol_variables

CCTK_INITIAL (conditional)

  baikalvacuum_adm_to_bssn_order_8

  convert initial data into bssn variables

 

 After: admbase_postinitial
 Language:c
 Reads: admbase::metric
    admbase::shift
   admbase::curv
   admbase::dtshift
   admbase::lapse
 Sync: evol_variables
 Type: function
 Writes: evol_variables

MoL_Register (conditional)

  baikalvacuum_mol_registration

  register variables for mol

 

 Language:c
 Options: meta
 Type: function

MoL_CalcRHS (conditional)

  baikalvacuum_ricci_eval_order_4

  compute ricci tensor, needed for bssn rhss, at finite-differencing order 4

 

 Before: baikalvacuum_rhs
  Language:c
 Reads: hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: rbardd00gf
   rbardd01gf
   rbardd02gf
   rbardd11gf
   rbardd12gf
   rbardd22gf

MoL_CalcRHS (conditional)

  baikalvacuum_ricci_eval_order_6

  compute ricci tensor, needed for bssn rhss, at finite-differencing order 6

 

 Before: baikalvacuum_rhs
  Language:c
 Reads: hdd00gf
   hdd01gf
   hdd02gf
   hdd11gf
   hdd12gf
   hdd22gf
   lambdau0gf
   lambdau1gf
   lambdau2gf
 Type: function
 Writes: rbardd00gf
   rbardd01gf
   rbardd02gf
   rbardd11gf
   rbardd12gf
   rbardd22gf

Aliased Functions

 

Alias Name:         Function Name:
ApplyBCs BaikalVacuum_aux_ApplyBCs
BaikalVacuum_BSSN_constraints_order_4 BaikalVacuum_BSSN_constraints
BaikalVacuum_BSSN_constraints_order_6 BaikalVacuum_BSSN_constraints
BaikalVacuum_BSSN_constraints_order_8 BaikalVacuum_BSSN_constraints
BaikalVacuum_Ricci_eval_order_4 BaikalVacuum_Ricci
BaikalVacuum_Ricci_eval_order_6 BaikalVacuum_Ricci
BaikalVacuum_Ricci_eval_order_8 BaikalVacuum_Ricci
BaikalVacuum_Symmetry_registration_oldCartGrid3DSymmetry_registration
BaikalVacuum_rhs_eval_order_4 BaikalVacuum_RHS
BaikalVacuum_rhs_eval_order_6 BaikalVacuum_RHS
BaikalVacuum_rhs_eval_order_8 BaikalVacuum_RHS