Baikal: An Einstein Toolkit thorn for solving Einstein’s equations in the BSSN formalism, in Cartesian coordinates

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

May 18, 2020

Abstract

Baikal solves Einstein’s equations of general relativity in the BSSN formalism. Given that the complications and super-short-lengthscale variations usually associated with the stress-energy tensor Tμν in strongly curved spacetimes, this thorn implements finite-difference derivatives up to and including 4th order, but no higher. 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 Baikal and its sister thorn BaikalVacuum 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-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-BaikalETK.ipynb

1 Planned features

2 Parameters




diss_strength
Scope: restricted  REAL



Description: diss_strength (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: eta (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: Finite-differencing order



Range   Default: 4
2:2
”finite-differencing order = 2”
4:4
”finite-differencing order = 4”






lapse_floor
Scope: restricted  REAL



Description: lapse_floor (see NRPy+ for parameter definition)



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






pi
Scope: restricted  REAL



Description: PI (see NRPy+ for parameter definition)



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






dtlapse_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



Baikal






dtshift_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



Baikal






evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



Baikal






lapse_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



Baikal






shift_evolution_method
Scope: shared from ADMBASE  KEYWORD



Extends ranges:



Baikal



3 Interfaces

General

Implements:

baikal

Inherits:

admbase

boundary

grid

methodoflines

tmunubase

Grid Variables

3.0.1 PUBLIC GROUPS




  Group Names    Variable Names    Details   




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




evol_variables_rhs   compact0
aDD00_rhsGF   descriptionright-hand-side storage for BSSN evolved gridfunctions
aDD01_rhsGF   dimensions3
aDD02_rhsGF   distributionDEFAULT
aDD11_rhsGF   group typeGF
aDD12_rhsGF   tagsInterpNumTimelevels=1 prolongation=”none”
aDD22_rhsGF   timelevels1
alpha_rhsGF  variable typeREAL




aux_variables   compact0
HGF   descriptionAuxiliary gridfunctions for BSSN diagnostics
MU0GF   dimensions3
MU1GF   distributionDEFAULT
MU2GF   group typeGF
  timelevels3
 variable typeREAL




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




Uses header:

Symmetry.h

Boundary.h

4 Schedule

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

Scheduled Functions

CCTK_STARTUP

  baikal_banner

  output ascii art banner

 

 Language:c
 Options: meta
 Type: function

CCTK_STARTUP

  baikal_registerslicing

  register 3+1 slicing condition

 

 After: baikal_banner
  Language:c
 Options: meta
 Type: function

MoL_CalcRHS

  baikal_newrad

  newrad boundary conditions, scheduled right after rhs eval.

 

 After: baikal_rhs
  Language:c
 Type: function

MoL_PostStep

  baikal_floor_the_lapse

  set lapse = max(lapse_floor, lapse)

 

 Before: baikal_enforce_detgammabar_constraint
   bc_update
 Language:c
 Type: function

MoL_PostStep

  baikal_enforce_detgammabar_constraint

  enforce detgammabar = detgammahat (= 1 in cartesian)

 

 Before: bc_update
 Language:c
 Type: function

MoL_PostStep

  baikal_boundaryconditions_evolved_gfs

  apply boundary conditions and perform amr+interprocessor synchronization

 

 Language:c
 Options: level
 Sync: evol_variables
 Type: function

MoL_PostStep

  applybcs

  group for applying boundary conditions

 

 After:baikal_boundaryconditions_evolved_gfs
 Type:group

MoL_PostStep

  baikal_bssn_to_adm

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

 

 After: baikal_applybcs
 Before: admbase_setadmvars
  Language:c
 Options: local
 Type: function

MoL_PseudoEvolution

  baikal_driver_bssn_t4uu

  mol_pseudoevolution: compute t4uu, needed for bssn constraints

 

 Before: baikal_bssn_constraints
  Language:c
 Options: local
 Type: function

MoL_PseudoEvolution

  baikal_bssn_constraints

  compute bssn (hamiltonian and momentum) constraints

 

 Language:c
 Options: local
 Type: function

MoL_PseudoEvolution

  baikal_boundaryconditions_aux_gfs

  enforce symmetry bcs in constraint computation

 

 After: baikal_bssn_constraints
  Language:c
 Options: level
 Sync: aux_variables
 Type: function

MoL_PseudoEvolution

  baikal_bssn_to_adm

  perform bssn-to-adm conversion in mol_pseudoevolution. needed for proper hydrobase integration.

 

 After: baikal_boundaryconditions_aux_gfs
 Language:c
 Options: local
 Type: function

CCTK_BASEGRID

  baikal_symmetry_registration

  register symmetries, the cartgrid3d way.

 

 Language:c
 Options: global
 Type: function

MoL_PseudoEvolution

  applybcs

  apply boundary conditions

 

 After:baikal_boundaryconditions_aux_gfs
 Type:group

CCTK_BASEGRID

  baikal_zero_rhss

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

 

 After: baikal_symmetry_registration
 Language:c
 Type: function

CCTK_INITIAL

  baikal_adm_to_bssn

  convert initial data into bssn variables

 

 After: admbase_postinitial
 Language:c
 Options: local
 Sync: evol_variables
 Type: function

CCTK_INITIAL

  applybcs

  apply boundary conditions

 

 After:baikal_adm_to_bssn
 Type:group

MoL_Register

  baikal_mol_registration

  register variables for mol

 

 Language:c
 Options: meta
 Type: function

MoL_CalcRHS

  baikal_driver_bssn_t4uu

  mol: compute t4uu, needed for bssn rhss.

 

 Before: baikal_bssn_to_adm
  Language:c
 Type: function

MoL_CalcRHS

  baikal_driver_pt1_bssn_ricci

  mol: compute ricci tensor

 

 Before: baikal_rhs
  Language:c
 Type: function

MoL_CalcRHS

  baikal_driver_pt2_bssn_rhss

  mol: evaluate bssn rhss

 

 After: baikal_ricci
  Language:c
 Type: function

Aliased Functions

 

Alias Name:         Function Name:
ApplyBCs Baikal_ApplyBCs
Baikal_driver_BSSN_T4UU Baikal_T4UU
Baikal_driver_pt1_BSSN_Ricci Baikal_Ricci
Baikal_driver_pt2_BSSN_RHSsBaikal_RHS