Geometric helper function

gwmemory.angles.analytic_gamma(lm1: Tuple[int, int], lm2: Tuple[int, int], ell: int) float

Analytic function to compute gamma_lmlm_l Eq. (8) of arXiv:1807.0090

The primary component is taken from https://github.com/moble/spherical/blob/c3fe00ab6d79732fe1cbc6d56574ea94702d89ae/spherical/multiplication.py.

Parameters:
lm1: tuple

tuple of first spherical harmonic mode

lm2: tuple

tuple of second spherical harmonic mode

ell: int

The degree of the output spherical harmonic

Returns:
float: the gamma coefficient
gwmemory.angles.cross_tensor(wx: ndarray, wy: ndarray) ndarray

Calculate the cross polarization tensor for some basis. c.f., eq. 2 of https://arxiv.org/pdf/1710.03794.pdf

gwmemory.angles.memory_correction(ell: int, ss: int = 0) float

Correction to the Gamma function for the operator in Eq. (12) of arXiv:2011.01309

Parameters:
ell: int

degree of the spherical harmonic

ss: int

spin-weight of the waveform being adjusted, ss=0 for out purpose

Returns:
int: the correction
gwmemory.angles.omega_ij_to_omega_pol(omega_ij: ndarray, inc: float, phase: float) Tuple[ndarray, ndarray]

Map from strain tensor to plus and cross modes.

We assume that only plus and cross are present.

Parameters:
omega_ij: array

3x3 matrix describing strain or a proxy for strain

inc: float

inclination of source

phase: float

phase at coalescence of source

Returns:
hp: float

Magnitude of plus mode.

hx: float

Magnitude of cross mode.

gwmemory.angles.plus_tensor(wx: ndarray, wy: ndarray) ndarray

Calculate the plus polarization tensor for some basis. c.f., eq. 2 of https://arxiv.org/pdf/1710.03794.pdf

gwmemory.angles.wave_frame(theta: float, phi: float, psi: float = 0) Tuple[ndarray, ndarray]

Generate wave-frame basis from three angles, see Nishizawa et al. (2009)