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.gamma(lm1: str, lm2: str, incs: ndarray = None, theta: ndarray = None, phi: ndarray = None, y_lmlm_factor: ndarray = None) list
Coefficients mapping the spherical harmonic components of the oscillatory strain to the memory.
Computed according to equation 8 of Talbot et al. (2018), arXiv:1807.00990. Output modes with l=range(2, 20), m=m1-m2.
- Parameters:
- lm1: str
first input spherical harmonic mode
- lm2: str
second input spherical haromonic mode
- incs: array, optional
observer inclination values over which to compute the final integral
- theta: array, optional
1d array of binary inclination values, over which to compute first integral
- phi: array, optional
1d array of binary polarisation values, over which to compute the first integral
- y_lmlm_factor: array, optional
Array over of spherical harmonic factor evaluated on meshgrid of theta, phi
- Returns:
- gammas: list
List of coefficients for output modes, l=range(2, 20), m=m1-m2
Notes
I recommend using
analytic_gamma
instead, it is much more precise.
- gwmemory.angles.lambda_lmlm(inc: float, phase: float, lm1: str, lm2: str, theta: ndarray = None, phi: ndarray = None, y_lmlm_factor: ndarray = None) complex
Angular integral for a specific ll’mm’ as given by equation 7 of Talbot et al. (2018), arXiv:1807.00990.
The transverse traceless part of the integral over all binary orientations is returned.
The integral is given by: frac{1}{2} int_{S^{2}} dOmega’ Y^{-2}_{ell_1 m_1}(Omega’) bar{Y}^{-2}_{ell_2 m_2}(Omega’) times \ left[frac{n_jn_k}{1-n_{l}N_{l}} right]^{TT} (e^{+}_{jk} - i e^{times}_{jk})
- Parameters:
- inc: float
binary inclination
- phase: float
binary phase at coalescence
- lm1: str
first lm value format is e.g., ‘22’
- lm2: str
second lm value format is e.g., ‘22’
- theta: array, optional
1d array of binary inclination values, over which to integrate
- phi: array, optional
1d array of binary polarisation values, over which to integrate
- y_lmlm_factor: array, optional
Array over of spherical harmonic factor evaluated on meshgrid of theta, phi
- Returns:
- lambda_lmlm: float, complex
lambda_plus - i lambda_cross
- gwmemory.angles.lambda_matrix(inc: float, phase: float, lm1: str, lm2: str, theta: ndarray = None, phi: ndarray = None, y_lmlm_factor: ndarray = None) ndarray
Angular integral for a specific ll’mm’ as given by equation 7 of Talbot et al. (2018), arXiv:1807.00990.
The transverse traceless part of the integral over all binary orientations is returned.
The integral is given by: int_{S^{2}} dOmega’ Y^{-2}_{ell_1 m_1}(Omega’) bar{Y}^{-2}_{ell_2 m_2}(Omega’) times \ left[frac{n_jn_k}{1-n_{l}N_{l}} right]^{TT}
- Parameters:
- inc: float
binary inclination
- phase: float
binary phase at coalescence
- lm1: str
first lm value format is e.g., ‘22’
- lm2: str
second lm value format is e.g., ‘22’
- theta: array, optional
1d array of binary inclination values, over which to integrate
- phi: array, optional
1d array of binary polarisation values, over which to integrate
- y_lmlm_factor: array, optional
Array over of spherical harmonic factor evaluated on meshgrid of theta, phi
- Returns:
- lambda_mat: array
three by three transverse traceless matrix of the appropriate integral
- 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)