NPScalars computes the Newman-Penrose scalar \(\Psi _{4}\) with up to 6th order accurate finite-difference stencils.
NPScalars was introduced in [1] (cf. Appendix C therein for the detailed description) as part of the Lean code, to compute the Newman-Penrose scalar \(\Psi _{4}\) and perform its decomposition into spherical harmonics. It has since been modified to interface instead with the Multipole thorn for this decomposition.
The thorn was made publicly available through the Canuda numerical relativity library [2], and has since been distributed also as a part of the Einstein Toolkit.
The bulk of the code is written in Fortran 90 and should be simple to follow – emphasis has been given to readability.
NPScalars is included with the Einstein Toolkit and can also be obtained through the Canuda numerical relativity library [2].
[1] U. Sperhake, “Binary black-hole evolutions of excision and puncture data,” Phys. Rev. D 76 (2007), 104015 doi:10.1103/PhysRevD.76.104015 [arXiv:gr-qc/0606079 [gr-qc]].
[2] H. Witek, M. Zilhao, G. Bozzola, C.-H. Cheng, A. Dima, M. Elley, G. Ficarra, T. Ikeda, R. Luna, C. Richards, N. Sanchis-Gual, H. Okada da Silva. “Canuda: a public numerical relativity library to probe fundamental physics,” Zenodo (2023) doi: 10.5281/zenodo.3565474
| calculate_np_every | Scope: private | INT |
| Description: Calculate Psi4 every N iterations
| ||
| Range | Default: 1 | |
| *:* | 0 or negative is never
| |
| np_order | Scope: private | INT |
| Description: Accuracy of finite differences used in computing Psi4
| ||
| Range | Default: 4 | |
| 4 | Fourth order
| |
| 6 | Sixth order
| |
| 8 | Eighth order
| |
| stress_energy_state | Scope: shared from CANUDAX_BSSNMOL | BOOLEAN |
Implements:
canudax_npscalars
Inherits:
admbasex
tmunubasex
| Group Names | Variable Names | Details | |
| nppsi4r_group | compact | 0 | |
| psi4re | description | Real part of Newman-Penrose scalar Psi_4 | |
| dimensions | 3 | ||
| distribution | DEFAULT | ||
| group type | GF | ||
| tags | checkpoint=”no” tensortypealias=”Scalar” tensorweight=0 tensorparity=1 | ||
| timelevels | 1 | ||
| variable type | REAL | ||
| nppsi4i_group | compact | 0 | |
| psi4im | description | Imaginary part of Newman-Penrose scalar Psi_4 | |
| dimensions | 3 | ||
| distribution | DEFAULT | ||
| group type | GF | ||
| tags | checkpoint=”no” tensortypealias=”Scalar” tensorweight=0 tensorparity=-1 | ||
| timelevels | 1 | ||
| variable type | REAL | ||
Uses header:
loop.hxx
loop_device.hxx
evolve_utils.hxx
fd_stencils.hxx
This section lists all the variables which are assigned storage by thorn CanudaX/CanudaX_NPScalars. 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: | |
| NPPsi4R_group | |
| NPPsi4I_group | |
CCTK_PARAMCHECK
canudax_npscalars_paramcheck
check canudax_npscalars parameters for consistency
| Language: | c | |
| Type: | function | |
CCTK_POSTINITIAL
canudax_npscalars_calc
calculate newman-penrose scalars
| After: | odesolvers_poststep | |
| Type: | group | |
CCTK_EVOL
canudax_npscalars_calc
calculate newman-penrose scalars
| After: | odesolvers_calledbysolve | |
| Type: | group | |
CanudaX_NPScalars_Calc
canudax_npscalars_calc_psi4
calculate newman-penrose scalar psi4 as a grid function
| Language: | c | |
| Reads: | admbasex::metric(everywhere) | |
| admbasex::curv(everywhere) | ||
| admbasex::lapse(everywhere) | ||
| admbasex::shift(everywhere) | ||
| tmunubasex::ettt(everywhere) | ||
| tmunubasex::etti(everywhere) | ||
| tmunubasex::etij(everywhere) | ||
| Sync: | nppsi4r_group | |
| nppsi4i_group | ||
| Type: | function | |
| Writes: | psi4re(interior) | |
| psi4im(interior) | ||