TeukolskyQNMFunctions
computes the quasinormal modes and eigenfunctions
for the spin s Teukolsky equation
using a horizon penetrating, hyperboloidally compactified coordinate system.
The main advantage of using these coordinates is that the quasinormal
wavefunctions are finite valued from the black hole to future null infinity.
The original version of this code used a Chebyshev pseudospectral method to compute the radial part of the eigenfunctions, and a spectral method to compute the angular part of the eigenfunctions The angular spectral method was originally introduced by Cook and Zalutskiy).
The current version of the code makes use of a fully spectral method to discretize in the radial direction. This method was originally described in (see also the bibtex entry at the end)
Olver, Sheehan, and Alex Townsend.
"A fast and well-conditioned spectral method."
siam REVIEW 55.3 (2013): 462-489.
We make use of the ApproxFun.jl package to perform the new, spectral discretization.
The note arXiv:2202.03837 explains the main ideas that went into this code, and derives the relevant equations of motion.
See also the examples
directory.
- The black hole mass is set to 1 in the code, so the black hole spin parameter can be see as the dimensionless spin.
This code does not compute quasinormal modes nearly as quickly (nor at a given numerical precision as accurately) as other established quasinormal mode codes, e.g. Leo Stein's qnm code. If you just want to compute a quasinormal mode, I suggest using that code, or looking at the publicly available qnm tables, e.g. Emanuele Berti's tables of qnm.
This code can be used to generate pure QNM initial data for the TeukEvolution.jl code.
The original version of this code (which made use of a pseudo-spectral discretization in the radial direction) had some issues computing higher overtones, since radial points were needed to resolve those modes. This likely because Chebyshev pseudospectral operators are not very well conditioned.
The current version of the code makes use of a fully spectral method via
the ApproxFun package (see above), and can now resolve higher overtones.
See examples/example_compute_qnm.jl
for example overtone calculations.
There is a Zenodo link at the top of this README, if you would like to cite the code directly. If you end up using this code in a publication, please also cite
@article{Ripley:2022ypi,
author = "Ripley, Justin L.",
title = "{Computing the quasinormal modes and eigenfunctions for the Teukolsky equation using horizon penetrating, hyperboloidally compactified coordinates}",
eprint = "2202.03837",
archivePrefix = "arXiv",
primaryClass = "gr-qc",
doi = "10.1088/1361-6382/ac776d",
journal = "Class. Quant. Grav.",
volume = "39",
number = "14",
pages = "145009",
year = "2022"
}
If you use the latest version of this code that makes use of the ApproxFun.jl package, I suggest you cite that package as well, along with
@article{olver2013fast,
author="Olver, Sheehan and Townsend, Alex",
title="{A fast and well-conditioned spectral method}",
eprint = "1202.1347",
archivePrefix = "arXiv",
primaryClass = "math.NA",
doi= "https://doi.org/10.1137/120865458",
journal="siam REVIEW",
volume="55",
number="3",
pages="462--489",
year="2013",
publisher="SIAM"
}
If you would like to add a feature, fix a bug, etc, you can open a pull request, or email me (Justin) at
ripley [at] illinois [dot] edu