Source code for heron.models.gw

"""
This module contains objects which provide the specifically-GW parts of waveform surrogate models.
"""
from elk.waveform import Waveform, Timeseries
import astropy.constants as c
from math import log

[docs]class HofTSurrogate(object): def _to_frequency(self, timeseries, *args): """Convert an elk timeseries output from heron into an elk frequency series output.""" return timeseries.to_fseries(*args)
[docs] def bilby(self, time, mass_1, mass_2, luminosity_distance): """ Return a waveform from the GPR in a format expected by the Bilby ecosystem """ times_b = time.copy() times_b -= self.t_min total_mass_cat = self.total_mass time_factor_cat = (c.c.value**3 / c.G.value)/(total_mass_cat*c.M_sun.value) #*1e4 #h_factor = c.pc.value if mass_1 > mass_2: mass_ratio = mass_2/mass_1 else: mass_ratio = mass_1/mass_2 total_mass = (mass_1+mass_2)#*c.M_sun.value time_factor = (c.c.value**3 / c.G.value)/(total_mass*c.M_sun.value) times_b *= (total_mass_cat / total_mass) #(time_factor/time_factor_cat) p = {'mass ratio': 1, 'spin 1x': 0, 'spin 1y': 0, 'spin 1z': 0, 'spin 2x': 0, 'spin 2y': 0, 'spin 2z': 0} p['mass ratio'] = mass_ratio mean = self.mean(p=p, times = times_b) return {"plus": mean[0].data / luminosity_distance , "cross": mean[1].data / luminosity_distance}
[docs]class BBHSurrogate(object): problem_dims = 8 columns = {0: "time", 1: "mass ratio", 2: "spin 1x", 3: "spin 1y", 4: "spin 1z", 5: "spin 2x", 6: "spin 2y", 7: "spin 2z", 8: "h+", 9: "hx" } parameters = ("mass ratio", "spin 1x", "spin 1y", "spin 1z", "spin 2x", "spin 2y", "spin 2z") c_ind = {j:i for i,j in columns.items()}
[docs]class BBHNonSpinSurrogate(object): problem_dims = 2 columns = {0: "time", 1: "mass ratio", 8: "h+", 9: "hx" } parameters = ("mass ratio",) c_ind = {j:i for i,j in columns.items()}