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^{\mu \nu }\) 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-ETK_thorn-BaikalETK.ipynb Jupyter notebook here:
https://github.com/zachetienne/nrpytutorial
Also the NRPy+ Jupyter documentation can be navigated via the following link:
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 (\(1+\log \) 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.
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.
| |
pi | Scope: restricted | REAL |
Description: (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 | ||
Implements:
baikal
Inherits:
admbase
boundary
grid
tmunubase
Group Names | Variable Names | Details | |
evol_variables | compact | 0 | |
aDD00GF | description | Evolved gridfunctions. | |
aDD01GF | dimensions | 3 | |
aDD02GF | distribution | DEFAULT | |
aDD11GF | group type | GF | |
aDD12GF | timelevels | 3 | |
aDD22GF | variable type | REAL | |
evol_variables_rhs | compact | 0 | |
aDD00_rhsGF | description | Right-hand-side gridfunctions. | |
aDD01_rhsGF | dimensions | 3 | |
aDD02_rhsGF | distribution | DEFAULT | |
aDD11_rhsGF | group type | GF | |
aDD12_rhsGF | tags | InterpNumTimelevels=1 prolongation=”none” checkpoint=”no” | |
aDD22_rhsGF | timelevels | 1 | |
alpha_rhsGF | variable type | REAL | |
auxevol_variables | compact | 0 | |
RbarDD00GF | description | Auxiliary gridfunctions needed for evaluating the RHSs. | |
RbarDD01GF | dimensions | 3 | |
RbarDD02GF | distribution | DEFAULT | |
RbarDD11GF | group type | GF | |
RbarDD12GF | tags | InterpNumTimelevels=1 prolongation=”none” checkpoint=”no” | |
RbarDD22GF | timelevels | 1 | |
T4UU00GF | variable type | REAL | |
aux_variables | compact | 0 | |
HGF | description | Auxiliary gridfunctions for e.g. | |
description | diagnostics. | ||
MSQUAREDGF | dimensions | 3 | |
MU0GF | distribution | DEFAULT | |
MU1GF | group type | GF | |
MU2GF | timelevels | 3 | |
variable type | REAL | ||
Uses header:
Symmetry.h
Boundary.h
Slicing.h
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.
Always: | |
evol_variables[3] | |
evol_variables_rhs[1] | |
auxevol_variables[1] | |
aux_variables[3] | |
CCTK_STARTUP
baikal_registerslicing
register 3+1 slicing condition
Language: | c | |
Options: | meta | |
Type: | function | |
Driver_BoundarySelect (conditional)
baikal_specify_driver_boundaryconditions
register boundary conditions in presync bin driver_boundaryselect.
Language: | c | |
Options: | meta | |
Type: | function | |
MoL_CalcRHS (conditional)
baikal_rhs_eval_order_2
evaluate bssn rhss, at finite-differencing order 2
After: | baikal_ricci | |
Language: | c | |
Reads: | evol_variables(everywhere) | |
auxevol_variables(interior) | ||
Type: | function | |
Writes: | evol_variables_rhs(interior) | |
MoL_CalcRHS (conditional)
baikal_rhs_eval_order_4
evaluate bssn rhss, at finite-differencing order 4
After: | baikal_ricci | |
Language: | c | |
Reads: | evol_variables(everywhere) | |
auxevol_variables(interior) | ||
Type: | function | |
Writes: | evol_variables_rhs(interior) | |
MoL_CalcRHS (conditional)
baikal_specify_newrad_boundaryconditions_parameters
newrad boundary conditions, scheduled right after rhs eval.
After: | baikal_rhs | |
Language: | c | |
Reads: | evol_variables(everywhere) | |
Type: | function | |
Writes: | evol_variables_rhs(boundary) | |
MoL_PostStep (conditional)
baikal_bssn_to_adm
perform bssn-to-adm conversion. useful for diagnostics.
After: | baikal_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)
baikal_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)
baikal_floor_the_lapse
set lapse = max(lapse_floor, lapse)
Before: | baikal_enforce_detgammahat_constraint | |
Language: | c | |
Reads: | alphagf(everywhere) | |
Type: | function | |
Writes: | alphagf(everywhere) | |
MoL_PostStep (conditional)
baikal_specify_evol_boundaryconditions
register boundary conditions and perform amr+interprocessor synchronization
Language: | c | |
Options: | level | |
Sync: | evol_variables | |
Type: | function | |
MoL_PostStep (conditional)
applybcs
apply registered boundary conditions
After: | baikal_specify_evol_boundaryconditions | |
Type: | group | |
MoL_PseudoEvolution (conditional)
baikal_bssn_constraints_order_2
compute bssn (hamiltonian and momentum) constraints, at finite-differencing order 2
Language: | c | |
Reads: | add00gf | |
add01gf | ||
add02gf | ||
add11gf | ||
add12gf | ||
add22gf | ||
hdd00gf | ||
hdd01gf | ||
hdd02gf | ||
hdd11gf | ||
hdd12gf | ||
hdd22gf | ||
trkgf | ||
cfgf | ||
lambdau0gf | ||
lambdau1gf | ||
lambdau2gf | ||
alphagf | ||
vetu0gf | ||
vetu1gf | ||
vetu2gf | ||
t4uu00gf | ||
t4uu01gf | ||
t4uu02gf | ||
t4uu03gf | ||
Type: | function | |
Writes: | aux_variables | |
MoL_PseudoEvolution (conditional)
baikal_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 | ||
alphagf | ||
vetu0gf | ||
vetu1gf | ||
vetu2gf | ||
t4uu00gf | ||
t4uu01gf | ||
t4uu02gf | ||
t4uu03gf | ||
Type: | function | |
Writes: | aux_variables | |
CCTK_BASEGRID
baikal_symmetry_registration_oldcartgrid3d
register symmetries, the cartgrid3d way.
Language: | c | |
Options: | global | |
Type: | function | |
MoL_PseudoEvolution
baikal_bssn_to_adm
perform bssn-to-adm conversion in mol_pseudoevolution. needed for proper hydrobase integration.
After: | baikal_aux_applybcs | |
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_PseudoEvolution
baikal_t4dd_to_t4uu
compute t4uu from t4dd (provided in et?? from tmunubase), needed for bssn constraints
Before: | baikal_bssn_constraints | |
Language: | c | |
Reads: | tmunubase::stress_energy_scalar | |
tmunubase::stress_energy_vector | ||
tmunubase::stress_energy_tensor | ||
hdd00gf | ||
hdd01gf | ||
hdd02gf | ||
hdd11gf | ||
hdd12gf | ||
hdd22gf | ||
alphagf | ||
cfgf | ||
vetu0gf | ||
vetu1gf | ||
vetu2gf | ||
Type: | function | |
Writes: | t4uu00gf(everywhere) | |
t4uu01gf(everywhere) | ||
t4uu02gf(everywhere) | ||
t4uu03gf(everywhere) | ||
t4uu11gf(everywhere) | ||
t4uu12gf(everywhere) | ||
t4uu13gf(everywhere) | ||
t4uu22gf(everywhere) | ||
t4uu23gf(everywhere) | ||
t4uu33gf(everywhere) | ||
MoL_PseudoEvolution
baikal_specify_aux_boundaryconditions
register boundary conditions and perform amr+interprocessor synchronization
After: | baikal_bssn_constraints | |
Language: | c | |
Options: | level | |
Sync: | aux_variables | |
Type: | function | |
MoL_PseudoEvolution
applybcs
apply registered boundary conditions
After: | baikal_specify_aux_boundaryconditions | |
Type: | group | |
CCTK_BASEGRID
baikal_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)
baikal_adm_to_bssn_order_2
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)
baikal_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 | |
MoL_Register (conditional)
baikal_mol_registration
register variables for mol
Language: | c | |
Options: | meta | |
Type: | function | |
MoL_CalcRHS (conditional)
baikal_ricci_eval_order_2
compute ricci tensor, needed for bssn rhss, at finite-differencing order 2
Before: | baikal_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)
baikal_ricci_eval_order_4
compute ricci tensor, needed for bssn rhss, at finite-differencing order 4
Before: | baikal_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)
baikal_t4dd_to_t4uu
compute t4uu from t4dd (provided in et?? from tmunubase), needed for bssn rhss
Before: | baikal_rhs | |
Language: | c | |
Reads: | tmunubase::stress_energy_scalar | |
tmunubase::stress_energy_vector | ||
tmunubase::stress_energy_tensor | ||
hdd00gf | ||
hdd01gf | ||
hdd02gf | ||
hdd11gf | ||
hdd12gf | ||
hdd22gf | ||
alphagf | ||
cfgf | ||
vetu0gf | ||
vetu1gf | ||
vetu2gf | ||
Type: | function | |
Writes: | t4uu00gf(everywhere) | |
t4uu01gf(everywhere) | ||
t4uu02gf(everywhere) | ||
t4uu03gf(everywhere) | ||
t4uu11gf(everywhere) | ||
t4uu12gf(everywhere) | ||
t4uu13gf(everywhere) | ||
t4uu22gf(everywhere) | ||
t4uu23gf(everywhere) | ||
t4uu33gf(everywhere) | ||
Alias Name: | Function Name: |
ApplyBCs | Baikal_aux_ApplyBCs |
Baikal_BSSN_constraints_order_2 | Baikal_BSSN_constraints |
Baikal_BSSN_constraints_order_4 | Baikal_BSSN_constraints |
Baikal_Ricci_eval_order_2 | Baikal_Ricci |
Baikal_Ricci_eval_order_4 | Baikal_Ricci |
Baikal_Symmetry_registration_oldCartGrid3D | Symmetry_registration |
Baikal_rhs_eval_order_2 | Baikal_RHS |
Baikal_rhs_eval_order_4 | Baikal_RHS |