NPScalars

Miguel Zilhão and Helvi Witek

June 30, 2023

Abstract

NPScalars computes the Newman-Penrose scalar \(\Psi _{4}\) with up to 6th order accurate finite-difference stencils.

1 NPScalars

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.

2 Obtaining this thorn

NPScalars is included with the Einstein Toolkit and can also be obtained through the Canuda numerical relativity library [2].

References

[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

3 Parameters




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_BSSNMOLBOOLEAN



4 Interfaces

General

Implements:

canudax_npscalars

Inherits:

admbasex

tmunubasex

Grid Variables

4.0.1 PRIVATE GROUPS





  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

5 Schedule

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.

Storage

 

Always:  
NPPsi4R_group  
NPPsi4I_group  
   

Scheduled Functions

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)