qnm.spinsequence

Follow a QNM labeled by (s,l,m,n) as spin varies from a=0 upwards.

Classes

KerrSpinSeq(*args, **kwargs) Object to follow a QNM up a sequence in a, starting from a=0.
class qnm.spinsequence.KerrSpinSeq(*args, **kwargs)[source]

Object to follow a QNM up a sequence in a, starting from a=0. Values for omega and the separation constant from one value of a are used to seed the root finding for the next value of a, to maintain continuity in a when separation constant order can change. Uses NearbyRootFinder to actually perform the root-finding.

Parameters:
a_max: float [default: .99]

Maximum dimensionless spin of black hole for the sequence, 0 <= a_max < 1.

delta_a: float [default: 0.005]

Step size in a for following the sequence from a=0 to a_max

delta_a_min: float [default: 1.e-5]

Minimum step size in a.

delta_a_max: float [default: 4.e-3]

Maximum step size in a.

s: int [default: 2]

Spin of field of interest

m: int [default: 2]

Azimuthal number of mode of interest

l: int [default: 2]

The l-number of a sequence starting from the analytically-known value at a=0

l_max: int [default: 20]

Maximum value of l to include in the spherical-spheroidal matrix for finding separation constant and mixing coefficients. Must be sufficiently larger than l of interest that angular spectral method can converge. The number of l’s needed for convergence depends on a.

omega_guess: complex [default: from schwarzschild.QNMDict]

Initial guess of omega for root-finding

tol: float [default: sqrt(double epsilon)]

Tolerance for root-finding omega

cf_tol: float [defailt: 1e-10]

Tolerance for continued fraction calculation

n: int [default: 0]

Overtone number of interest (sets the inversion number for infinite continued fraction in Leaver’s method)

Nr: int [default: 300]

Truncation number of radial infinite continued fraction. Must be sufficiently large for convergence.

Nr_min: int [default: Nr]

Minimum number of terms for evaluating continued fraction.

Nr_max: int [default: 4000]

Maximum number of terms for evaluating continued fraction.

r_N: complex [default: 0.j]

Seed value taken for truncation of infinite continued fraction. UNUSED, REMOVE

Methods

__call__(a[, store, interp_only, …]) Solve for omega, A, and C[] at a given spin a.
build_interps() Build interpolating functions for omega(a) and A(a).
do_find_sequence() Solve for the “spin sequence”, i.e.
__call__(a, store=False, interp_only=False, resolve_if_found=False)[source]

Solve for omega, A, and C[] at a given spin a.

This uses the interpolants, based on the solved sequence, for initial guesses of omega(a) and A(a).

Parameters:
a: float

Value of spin, 0 <= a < 1.

store: bool, optional [default: False]

Whether or not to save newly solved data in sequence. Warning, this can produce a slowdown if a lot of data needs to be moved.

interp_only: bool, optional [default: False]

If False, use the Leaver solver to polish the interpolated guess. If True, just use the interpolated guess.

resolve_if_found: bool, optional [default: False]

If False, and the value of a is found in the sequence, the previously-found solution is returned. If True, the Leaver solver will be used to polish the root with the current parameters for the solver.

Returns:
complex, complex, complex ndarray

The first element of the tuple is omega. The second element of the tuple is A. The third element of the tuple is the array of complex spherical-spheroidal decomposition coefficients. For documentation on the format of the spherical-spheroidal decomposition coefficient array, see qnm.angular or qnm.angular.C_and_sep_const_closest().

build_interps()[source]

Build interpolating functions for omega(a) and A(a).

This is automatically called at the end of do_find_sequence().

do_find_sequence()[source]

Solve for the “spin sequence”, i.e. solve for the QNM as we go up in spin.