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

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.xEtienne <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 . Given that the complications and super-short-lengthscale variations usually associated with the stress-energy tensor 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-ETKxthorn-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

Currently Baikal / BaikalVacuum do not officially support numerical grids containing symmetry assumptions, but appropriate symmetries should be registered. Users are encouraged to proceed with caution when using symmetries. Future work will include adding official support for symmetries.

Baikal / BaikalVacuum do not yet support an extensive variety of gauge conditions, instead defaulting to the tried-and-true standard moving puncture gauge conditions ( lapse combined with the “Gamma”-driving shift [though note that Baikal / BaikalVacuum refer to the “Gamma” variable as the “Lambda” variable]). Additional gauge condition options will eventually be added.

Baikal / BaikalVacuum do not support Llama-based multiblock (e.g., cubed sphere) grids, and adding this support is currently not a high priority.

2 Parameters

11dissxstrength 10Scope: restrictedx01 REAL

11Description: (see NRPy+ for parameter definition)

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

11

11eta  10Scope: restrictedx01  REAL

11Description: (see NRPy+ for parameter definition)

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

11fdxorder  10Scope: restrictedx01  INT

11Description: (see NRPy+ for parameter definition)

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

11

11lapsexfloor  10Scope: restrictedx01  REAL

11Description: (see NRPy+ for parameter definition)

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

11

11dtlapsexevolutionxmethod 10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11BaikalVacuum  10

11

11dtshiftxevolutionxmethod 10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11BaikalVacuum  10

11

11evolutionxmethod  10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11BaikalVacuum  10

11

11lapsexevolutionxmethod10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11BaikalVacuum  10

11

11shiftxevolutionxmethod 10Scope: shared from ADMBASEx01  KEYWORD

11Extends ranges:

11BaikalVacuum  10

11

3 Interfaces

General Implements: baikalvacuum

Inherits: admbase boundary grid Grid Variables

3.0.1 PUBLIC GROUPS

11x Group Names x10x Variable Names xx01 Details x11x
11 evolxvariables 10  x01  compact110
11                 10  aDD00GF  x01 description11Evolved gridfunctions.
11                 10  aDD01GF  x01 dimensions113
11                 10  aDD02GF  x01 distribution11DEFAULT
11                 10  aDD11GF  x01 group type11GF
11                 10  aDD12GF  x01 timelevels113
11                 10  aDD22GF  x01variable type11REAL
11 evolxvariablesxrhs 10  x01  compact110
11                 10 aDD00xrhsGF x01 description11Right-hand-side gridfunctions.
11                 10 aDD01xrhsGF x01 dimensions113
11                 10 aDD02xrhsGF x01 distribution11DEFAULT
11                 10 aDD11xrhsGF x01 group type11GF
11                 10 aDD12xrhsGF x01  tags11InterpNumTimelevels=1 prolongation=”none” checkpoint=”no”
11                 10 aDD22xrhsGF x01 timelevels111
11                 10 alphaxrhsGF x01variable type11REAL
11 auxevolxvariables 10 x01 compact110
11                 10 RbarDD00GF x01 description11Auxiliary gridfunctions needed for evaluating the RHSs.
11                 10 RbarDD01GF x01 dimensions113
11                 10 RbarDD02GF x01 distribution11DEFAULT
11                 10 RbarDD11GF x01 group type11GF
11                 10 RbarDD12GF x01  tags11InterpNumTimelevels=1 prolongation=”none” checkpoint=”no”
11                 10 RbarDD22GF x01 timelevels111
11                 10  x01variable type11REAL
11 auxxvariables 10  x01  compact110
11                 10  HGF  x01 description11Auxiliary gridfunctions for e.g.
11                 10  x  x01 description11diagnostics.
11                 10 MSQUAREDGF x01 dimensions113
11                 10  MU0GF  x01 distribution11DEFAULT
11                 10  MU1GF  x01 group type11GF
11                 10  MU2GF  x01 timelevels113
11                 10  x01variable type11REAL

11

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 x

11Always:  11x
11evolxvariables[3] 11x
11evolxvariablesxrhs[1]11x
11auxevolxvariables[1] 11x
11auxxvariables[3]  11x

11x  11x

11

Scheduled Functions

CCTKxSTARTUP x baikalvacuumxregisterslicing x register 3+1 slicing condition x

11x11Language:11c
11 x 11Options: 11meta
11 x 11Type: 11function

11

DriverxBoundarySelect (conditional) x baikalvacuumxspecifyxdriverxboundaryconditions x register boundary conditions in presync bin driverxboundaryselect. x

11x11Language:11c
11 x 11Type: 11function

11

MoLxCalcRHS (conditional) x baikalvacuumxriccixevalxorderx8 x compute ricci tensor, needed for bssn rhss, at finite-differencing order 8

11x11Before: 11baikalvacuumxrhs
11 x 11Language:11c
11 x 11Reads: 11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11rbardd00gf
11 x 11x  11rbardd01gf
11 x 11x  11rbardd02gf
11 x 11x  11rbardd11gf
11 x 11x  11rbardd12gf
11 x 11x  11rbardd22gf

11

MoLxCalcRHS (conditional) x baikalvacuumxrhsxevalxorderx4 x evaluate bssn rhss, at finite-differencing order 4 x

11x11After: 11baikalvacuumxricci
11 x 11Language:11c
11 x 11Reads: 11evolxvariables(everywhere)
11 x 11x  11auxevolxvariables(interior)
11 x 11Type: 11function
11 x 11Writes: 11evolxvariablesxrhs(interior)

11

MoLxCalcRHS (conditional) x baikalvacuumxrhsxevalxorderx6 x evaluate bssn rhss, at finite-differencing order 6 x

11x11After: 11baikalvacuumxricci
11 x 11Language:11c
11 x 11Reads: 11evolxvariables(everywhere)
11 x 11x  11auxevolxvariables(interior)
11 x 11Type: 11function
11 x 11Writes: 11evolxvariablesxrhs(interior)

11

MoLxCalcRHS (conditional) x baikalvacuumxrhsxevalxorderx8 x evaluate bssn rhss, at finite-differencing order 8 x

11x11After: 11baikalvacuumxricci
11 x 11Language:11c
11 x 11Reads: 11evolxvariables(everywhere)
11 x 11x  11auxevolxvariables(interior)
11 x 11Type: 11function
11 x 11Writes: 11evolxvariablesxrhs(interior)

11

MoLxCalcRHS (conditional) x baikalvacuumxspecifyxnewradxboundaryconditionsxparameters x newrad boundary conditions, scheduled right after rhs eval. x

11x11After: 11baikalvacuumxrhs
11 x 11Language:11c
11 x 11Reads: 11evolxvariables(everywhere)
11 x 11Type: 11function
11 x 11Writes: 11evolxvariablesxrhs(boundary)

11

MoLxPostStep (conditional) x baikalvacuumxbssnxtoxadm x perform bssn-to-adm conversion. useful for diagnostics. x

11x11After: 11baikalvacuumxevolxapplybcs
11 x 11Before: 11admbasexsetadmvars
11 x 11Language:11c
11 x 11Reads: 11add00gf
11 x 11x  11add01gf
11 x 11x  11add02gf
11 x 11x  11add11gf
11 x 11x  11add12gf
11 x 11x  11add22gf
11 x 11x  11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11vetu0gf
11 x 11x  11vetu1gf
11 x 11x  11vetu2gf
11 x 11x  11betu0gf
11 x 11x  11betu1gf
11 x 11x  11betu2gf

11 x 11x  11cfgf

11 x 11x  11trkgf
11 x 11x  11alphagf
11 x 11Type: 11function
11 x 11Writes: 11admbase::metric(everywhere)
11 x 11x  11admbase::shift(everywhere)
11 x 11x  11admbase::curv(everywhere)
11 x 11x  11admbase::dtshift(everywhere)
11 x 11x  11admbase::lapse(everywhere)

11

MoLxPostStep (conditional) x baikalvacuumxenforcexdetgammahatxconstraint x enforce detgammabar = detgammahat (= 1 in cartesian)

11x11Language:11c
11 x 11Reads: 11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11Type: 11function
11 x 11Writes: 11hdd00gf(everywhere)
11 x 11x  11hdd01gf(everywhere)
11 x 11x  11hdd02gf(everywhere)
11 x 11x  11hdd11gf(everywhere)
11 x 11x  11hdd12gf(everywhere)
11 x 11x  11hdd22gf(everywhere)

11

MoLxPostStep (conditional) x baikalvacuumxfloorxthexlapse x set lapse = max(lapsexfloor, lapse) x

11x11Before: 11baikalvacuumxenforcexdetgammahatxconstraint
11 x 11Language:11c
11 x 11Reads: 11alphagf(everywhere)
11 x 11Type: 11function
11 x 11Writes: 11alphagf(everywhere)

11

MoLxPostStep (conditional) x baikalvacuumxspecifyxevolxboundaryconditions x register boundary conditions and perform amr+interprocessor synchronization x

11x11Language:11c
11 x 11Sync:  11evolxvariables
11 x 11Type: 11function

11

MoLxPostStep (conditional) x applybcs x apply registered boundary conditions x

11x11After:11baikalvacuumxspecifyxevolxboundaryconditions
11 x 11Type:11group

11

CCTKxBASEGRID (conditional) x baikalvacuumxsymmetryxregistrationxoldcartgrid3d x register symmetries, the cartgrid3d way. x

11x11Language:11c
11 x 11Options: 11global
11 x 11Type: 11function

11

MoLxPseudoEvolution (conditional) x baikalvacuumxbssnxconstraintsxorderx4 x compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 4 x

11x11Language:11c
11 x 11Reads: 11add00gf
11 x 11x  11add01gf
11 x 11x  11add02gf
11 x 11x  11add11gf
11 x 11x  11add12gf
11 x 11x  11add22gf
11 x 11x  11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11trkgf

11 x 11x  11cfgf

11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11auxxvariables

11

MoLxPseudoEvolution (conditional) x baikalvacuumxbssnxconstraintsxorderx6 x compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 6 x

11x11Language:11c
11 x 11Reads: 11add00gf
11 x 11x  11add01gf
11 x 11x  11add02gf
11 x 11x  11add11gf
11 x 11x  11add12gf
11 x 11x  11add22gf
11 x 11x  11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11trkgf

11 x 11x  11cfgf

11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11auxxvariables

11

MoLxPseudoEvolution (conditional) x baikalvacuumxbssnxconstraintsxorderx8 x compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 8

11x11Language:11c
11 x 11Reads: 11add00gf
11 x 11x  11add01gf
11 x 11x  11add02gf
11 x 11x  11add11gf
11 x 11x  11add12gf
11 x 11x  11add22gf
11 x 11x  11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11trkgf

11 x 11x  11cfgf

11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11auxxvariables

11

MoLxPseudoEvolution x baikalvacuumxspecifyxauxxboundaryconditions x register boundary conditions and perform amr+interprocessor synchronization x

11x11After: 11baikalvacuumxbssnxconstraints
11 x 11Language:11c
11 x 11Sync:  11auxxvariables
11 x 11Type: 11function

11

MoLxPseudoEvolution x applybcs x apply registered boundary conditions x

11x11After:11baikalvacuumxspecifyxauxxboundaryconditions
11 x 11Type:11group

11

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

11x11After: 11symmetryxregistration
11 x 11Language:11c
11 x 11Type: 11function
11 x 11Writes: 11evolxvariablesxrhs(everywhere)

11

CCTKxINITIAL (conditional) x baikalvacuumxadmxtoxbssnxorderx4 x convert initial data into bssn variables

11x11After: 11admbasexpostinitial
11 x 11Language:11c
11 x 11Reads: 11admbase::metric
11 x 11x  11admbase::shift
11 x 11x  11admbase::curv
11 x 11x  11admbase::dtshift
11 x 11x  11admbase::lapse
11 x 11Sync:  11evolxvariables
11 x 11Type: 11function
11 x 11Writes: 11evolxvariables

11

CCTKxINITIAL (conditional) x baikalvacuumxadmxtoxbssnxorderx6 x convert initial data into bssn variables x

11x11After: 11admbasexpostinitial
11 x 11Language:11c
11 x 11Reads: 11admbase::metric
11 x 11x  11admbase::shift
11 x 11x  11admbase::curv
11 x 11x  11admbase::dtshift
11 x 11x  11admbase::lapse
11 x 11Sync:  11evolxvariables
11 x 11Type: 11function
11 x 11Writes: 11evolxvariables

11

CCTKxINITIAL (conditional) x baikalvacuumxadmxtoxbssnxorderx8 x convert initial data into bssn variables x

11x11After: 11admbasexpostinitial
11 x 11Language:11c
11 x 11Reads: 11admbase::metric
11 x 11x  11admbase::shift
11 x 11x  11admbase::curv
11 x 11x  11admbase::dtshift
11 x 11x  11admbase::lapse
11 x 11Sync:  11evolxvariables
11 x 11Type: 11function
11 x 11Writes: 11evolxvariables

11

MoLxRegister (conditional) x baikalvacuumxmolxregistration x register variables for mol x

11x11Language:11c
11 x 11Options: 11meta
11 x 11Type: 11function

11

MoLxCalcRHS (conditional) x baikalvacuumxriccixevalxorderx4 x compute ricci tensor, needed for bssn rhss, at finite-differencing order 4

11x11Before: 11baikalvacuumxrhs
11 x 11Language:11c
11 x 11Reads: 11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11rbardd00gf
11 x 11x  11rbardd01gf
11 x 11x  11rbardd02gf
11 x 11x  11rbardd11gf
11 x 11x  11rbardd12gf
11 x 11x  11rbardd22gf

11

MoLxCalcRHS (conditional) x baikalvacuumxriccixevalxorderx6 x compute ricci tensor, needed for bssn rhss, at finite-differencing order 6 x

11x11Before: 11baikalvacuumxrhs
11 x 11Language:11c
11 x 11Reads: 11hdd00gf
11 x 11x  11hdd01gf
11 x 11x  11hdd02gf
11 x 11x  11hdd11gf
11 x 11x  11hdd12gf
11 x 11x  11hdd22gf
11 x 11x  11lambdau0gf
11 x 11x  11lambdau1gf
11 x 11x  11lambdau2gf
11 x 11Type: 11function
11 x 11Writes: 11rbardd00gf
11 x 11x  11rbardd01gf
11 x 11x  11rbardd02gf
11 x 11x  11rbardd11gf
11 x 11x  11rbardd12gf
11 x 11x  11rbardd22gf

11

Aliased Functions x

11Alias Name: xxxxxxx  11Function Name:
11ApplyBCs  11BaikalVacuumxauxxApplyBCs
11BaikalVacuumxBSSNxconstraintsxorderx4  11BaikalVacuumxBSSNxconstraints
11BaikalVacuumxBSSNxconstraintsxorderx6  11BaikalVacuumxBSSNxconstraints
11BaikalVacuumxBSSNxconstraintsxorderx8  11BaikalVacuumxBSSNxconstraints
11BaikalVacuumxRiccixevalxorderx4  11BaikalVacuumxRicci
11BaikalVacuumxRiccixevalxorderx6  11BaikalVacuumxRicci
11BaikalVacuumxRiccixevalxorderx8  11BaikalVacuumxRicci
11BaikalVacuumxSymmetryxregistrationxoldCartGrid3D11Symmetryxregistration
11BaikalVacuumxrhsxevalxorderx4  11BaikalVacuumxRHS
11BaikalVacuumxrhsxevalxorderx6  11BaikalVacuumxRHS
11BaikalVacuumxrhsxevalxorderx8  11BaikalVacuumxRHS