Technical details specific to Engrenage - GRTLCollaboration/engrenage GitHub Wiki

There are some features of Engrenage that differ from standard 3+1D BSSN codes. These choices were made in order to get an acceptable runtime on a laptop with a basic python implementation. It was judged that the slight increase in complexity balanced out against the need to achieve some non trivial evolutions of physical interest.

In particular the spherical symmetry that is assumed potentially gives rise to coordinate singularities at $r=0$. This is managed using the reference metric approach first proposed by Brown, plus a rescaling of the tensor components to factor out the $1/r$ dependencies related to the coordinate basis vectors. One can view the latter rescaling roughly as using an orthonormal spherical coordinate basis (as in standard undergraduate courses that avoid tensors). The papers section of the wiki provides all the background in these methods, but at a level of detail that is probably more than what you need for using the code. The slides for my lecture on the topic are here: ADMtoBSSN.pdf.

Another change is the option to use non equally spaced radial coordinates, which only affects the way in which derivatives on the grid are calculated, and the way in which ghost zones are filled. More details are in Useful code background.

Other technical notes on Engrenage

  • This code uses the BSSN formulation of NR, which is not the only option, but is arguably one of the most common. Alternatives include General Harmonic Coordinates (GHC) and null coordinate methods.

  • The code uses a dynamical gauge, which is not essential for spherically symmetric problems (one can use semi constrained methods to fix a gauge), but is more similar to the evolution methods used in larger 3+1D codes.

  • Due to Birkhoff's theorem the code does not simulate situations with gravitational waves, which may make it seem rather pointless! However, it still allows some interesting problems, and you to learn the basics of NR, whilst keeping the methods and coding aspects as simple as possible. Since a scalar field is included as the matter component, one can calculate scalar waves, which provide a spin 0 equivalent of the spin -2 tensor waves.