Skip to content

Least-squares fitting of quasinormal modes to ringdown waveforms.

License

Notifications You must be signed in to change notification settings

eliotfinch/qnmfits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qnmfits

Least-squares fitting of quasinormal modes to ringdown waveforms.

Installation

The package can be installed with pip install . - this assumes you are in the same directory as the pyproject.toml file. All dependencies for SXS waveform analysis should be installed automatically. Currently, the gwsurrogate and surfinBH packages (needed for the analysis of surrogate models) are not automatically installed.

Note that when first importing the package, there may be a short delay.

You may prefer to install the dependencies via conda - please see the dependencies in the pyproject.toml file. All packages are available on conda or conda-forge. You may additionally need to install spinsfast via

conda install --channel conda-forge spinsfast

If using conda, I recommend installing all dependencies via conda first, and then running pip install . in the cloned qnmfits directory.

Usage

The core of the package is the qnmfits.py file; this contains a collection of functions for performing ringdown analyses on any supplied waveform. For an overview of the available functions, see the package tutorial notebook.

Additional functions for performing spatial mapping of linear and quadratic QNMs are available in spatial_mapping_functions.py. See this repository for example usage. See also Dyer & Moore (arxiv:2410.13935) for further details.

Often you will want to work with SXS waveforms. For this we provide a SXS helper class (also demonstrated in the package tutorial) to load and manipulate waveforms (see the functions in Base.py to see what manipulations are available). You can, of course, load the SXS waveform data by other means and then pass it to the functions in qnmfits.py. Similar to the SXS class, there are classes for loading NRSur7dq4 and NRHybSur3dq8 surrogate waveforms (note that these are less well-tested).

A note on QNM labelling

In this package QNMs are specified with four numbers: (ell, m, n, sign). The first three numbers refer to the usual angular (ell), azimuthal (m), and overtone (n) indices. The fourth number is either +1 or -1, and refers to the sign of the real part of the QNM frequency. In other words, sign=1 refers to the "regular" QNMs to the right of the imaginary axis, and sign=-1 refers to "mirror" QNMs to the left of the imaginary axis. Note that this is different to the prograde (co-rotating) and retrograde (counter-rotating) classification you sometimes see. See the figure below (source code here) for a visualisation of the different QNM labelling conventions:

QNM taxonomy

If you want use QNMs with an overtone index n>7, then you will need to download extra data by calling the download_cook_data() function:

import qnmfits
qnmfits.download_cook_data()

The reason for this is because for n>7 we encounter QNM "multiplets" which the qnm package has trouble handling. Note that there are different labelling conventions for these multiplets. For example, the Schwarzschild (2,2,8) QNM has the behaviour of "splitting" into two branches when the spin is increased:

QNM multiplet taxonomy

This has led to these two branches being labelled as (2,2,80) and (2,2,81) by Cook & Zalutskiy (arxiv:1607.07406). However, from a practical perspective we will be mostly working with Kerr black holes, and these two branches behave as a n=8 and n=9 overtone. So, as indicated by the figure above, we label them as such (this follows the convention of Forteza & Mourier (arXiv:2107.11829)).

About

Least-squares fitting of quasinormal modes to ringdown waveforms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages