Source code for pytgr.birefringence

import numpy

[docs]def integrand(redshift): """ The integrand: (1.0 + z)^parity_beta / sqrt(Omega_m (1+z)^3 + Omega_Lambda) """ omega_m = 0.3075 #pycbc.cosmology.get_cosmology().Om0 # matter density omega_l = 0.6910098821161554 #pycbc.cosmology.get_cosmology().Ode0 # dark energy density return (1.0+redshift)/ numpy.sqrt(omega_m*(1.0+redshift)**3.0 + omega_l)
[docs]def gen_waveform(**kwds): from pycbc.waveform import get_fd_waveform from pycbc import cosmology import lal from scipy import integrate if 'approximant' in kwds: kwds.pop("approximant") if kwds['baseapprox'] is None: raise ValueError("A base waveform approximant is required.") hp, hc = get_fd_waveform(approximant=kwds['baseapprox'], **kwds) zz = cosmology.redshift(kwds['distance']) intz = integrate.quad(integrand, 0, zz)[0] temp = kwds['parity_mpvinverse'] * intz / 1e9 / lal.QE_SI * (lal.H_SI / 2 / lal.PI) * lal.PI * lal.PI / lal.H0_SI expminus = numpy.exp(-1j * temp * hp.sample_frequencies**2) expplus = 1 / expminus hp_parity = (hp + 1j*hc) * expminus / 2 + (hp - 1j*hc) * expplus / 2 hc_parity = (hp + 1j*hc) * expminus / 2j - (hp - 1j*hc) * expplus / 2j return hp_parity, hc_parity