Source code for gwBOB.convert_to_strain_using_series

import jax.numpy as jnp
import numpy as np
from jax import config

from gwBOB import BOB_terms_jax
from gwBOB import BOB_terms

config.update("jax_enable_x64", True)

[docs] def generate_strain_from_news_using_series(BOB,N=2): """ Generate the strain from the news using the series approximation described in Kankani and McWilliams (2025) for t0 = -inf scenarios Parameters ---------- BOB : BOB The BOB object containing the time series and parameters. N : int, optional The number of terms in both the inner and outer series. Default is 2. Returns ------- t : numpy array The time array. h : numpy array The strain time series. The conjugate of the complex valued array is taken for consistency with SXS. """ t = jnp.array(BOB.t) all_terms,sum = BOB_terms_jax.calculate_strain_from_news( t, BOB.Omega_0, BOB.Omega_QNM, BOB.tau, BOB.Ap, BOB.tp, BOB_terms_jax.BOB_news_freq_jax, BOB_terms_jax.BOB_amplitude_jax, BOB.m, N) Phi,_ = BOB_terms.BOB_news_phase(BOB) phase_term = np.exp(1j * BOB.m * Phi) h = sum * phase_term h = np.conj(h) #take conjugate for consistency with SXS return t,h
[docs] def generate_strain_from_psi4_using_series(BOB,N=2): """ Generate the strain from psi4 using the series approximation described in Kankani and McWilliams (2025) for t0 = -inf scenarios. This is generally a suboptimal approach for psi4->strain but is included for testing. Parameters ---------- BOB : BOB The BOB object containing the time series and parameters. N : int, optional The number of terms in both the inner and outer series. Default is 2. Returns ------- t : numpy array The time array. h : numpy array The strain time series. The conjugate of the complex valued array is taken for consistency with SXS. """ t = jnp.array(BOB.t) all_terms,sum = BOB_terms_jax.calculate_strain_from_psi4( t, BOB.Omega_0, BOB.Omega_QNM, BOB.tau, BOB.Ap, BOB.tp, BOB_terms_jax.BOB_psi4_freq_jax, BOB_terms_jax.BOB_amplitude_jax, BOB.m, N) Phi,_ = BOB_terms.BOB_psi4_phase(BOB) phase_term = np.exp(1j * BOB.m * Phi) h = sum * phase_term h = np.conj(h) #take conjugate for consistency with SXS return t,h
[docs] def generate_strain_from_news_using_series_finite_t0(BOB,N=2): """ Generate the strain from the news using the series approximation described in Kankani and McWilliams (2025) for finite t0 scenarios. Parameters ---------- BOB : BOB The BOB object containing the time series and parameters. N : int, optional The number of terms in both the inner and outer series. Default is 2. Returns ------- t : numpy array The time array. h : numpy array The strain time series. The conjugate of the complex valued array is taken for consistency with SXS. """ t = jnp.array(BOB.t) all_terms,sum = BOB_terms_jax.calculate_strain_from_news_finite_t0( t, BOB.Omega_0, BOB.Omega_QNM, BOB.tau, BOB.Ap, BOB.tp, BOB.t0, BOB_terms_jax.BOB_news_freq_finite_t0, BOB_terms_jax.BOB_amplitude_jax, BOB.m, N) Phi,_ = BOB_terms.BOB_news_phase_finite_t0(BOB) phase_term = np.exp(1j * BOB.m * Phi) h = sum * phase_term h = np.conj(h) #take conjugate for consistency with SXS return t,h
[docs] def generate_strain_from_psi4_using_series_finite_t0(BOB,N=2): """ Generate the strain from the psi4 using the series approximation described in Kankani and McWilliams (2025) for finite t0 scenarios. This is generally a suboptimal approach for psi4->strain but is included for testing. Parameters ---------- BOB : BOB The BOB object containing the time series and parameters. N : int, optional The number of terms in both the inner and outer series. Default is 2. Returns ------- t : numpy array The time array. h : numpy array The strain time series. The conjugate of the complex valued array is taken for consistency with SXS. """ t = jnp.array(BOB.t) all_terms,sum = BOB_terms_jax.calculate_strain_from_psi4_finite_t0( t, BOB.Omega_0, BOB.Omega_QNM, BOB.tau, BOB.Ap, BOB.tp, BOB.t0, BOB_terms_jax.BOB_psi4_freq_finite_t0, BOB_terms_jax.BOB_amplitude_jax, BOB.m, N) Phi,_ = BOB_terms.BOB_psi4_phase_finite_t0(BOB) phase_term = np.exp(1j * BOB.m * Phi) h = sum * phase_term h = np.conj(h) #take conjugate for consistency with SXS return t,h