diff --git a/waveform/wrapper_mpv_nosmallexpansion/mpvnosmallwaveform.py b/waveform/wrapper_mpv_nosmallexpansion/mpvnosmallwaveform.py new file mode 100644 index 0000000000000000000000000000000000000000..2bc6315047112b10b92f85f6c8ef8af5856a19eb --- /dev/null +++ b/waveform/wrapper_mpv_nosmallexpansion/mpvnosmallwaveform.py @@ -0,0 +1,36 @@ +import numpy + +def integrand_parityamu_mpvinverse(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) + + +def gen(**kwds): + from pycbc.waveform import get_fd_waveform + from pycbc import cosmology + import lal + from scipy import integrate + #print(kwds) + + 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_parityamu_mpvinverse, 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 = np.exp(-1j*temp*hp.sample_frequencies**2) + expplus = 1/expplus + + 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 diff --git a/waveform/wrapper_mpv_nosmallexpansion/setup.py b/waveform/wrapper_mpv_nosmallexpansion/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..2e0c8ff59b82d94098178188bf228fd9310e9c20 --- /dev/null +++ b/waveform/wrapper_mpv_nosmallexpansion/setup.py @@ -0,0 +1,32 @@ +""" +setup.py file for testing birefringence pycbc waveform plugin package +""" + +from setuptools import Extension, setup, Command +from setuptools import find_packages + +VERSION = '0.0.dev0' + +setup ( + name = 'pycbc-birefringence-mpvnosmall', + version = VERSION, + description = 'A waveform plugin for PyCBC', + author = 'Yifan Wang', + author_email = 'yifan.wang@aei.mpg.de', + url = 'http://www.pycbc.org/', + #download_url = 'https://github.com/gwastro/revchirp/tarball/v%s' % VERSION, + keywords = ['pycbc', 'signal processing', 'gravitational waves'], + py_modules = ['mpvnosmall'], + entry_points = {"pycbc.waveform.fd":"mpvnosmall=mpvnosmallwaveform:gen"}, + classifiers=[ + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.6', + 'Intended Audience :: Science/Research', + 'Natural Language :: English', + 'Topic :: Scientific/Engineering', + 'Topic :: Scientific/Engineering :: Astronomy', + 'Topic :: Scientific/Engineering :: Physics', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + ], +)