def get_strain(fseries, fref=100): # injection param m1, m2 = 38.90726199927476, 4.099826620277696 m1*=lal.MSUN_SI m2*=lal.MSUN_SI s1x, s1y, s1z = -0.5292121532005147, 0.0815506948762848, 0.6489430710417405 s2x, s2y, s2z = 0.32082521678503834, -0.7843006704918378, 0.02983346070373225 iota = 2.489741666120003 phase = 2.3487991630017353 dist= 100 # convert fseries to lal vector F = fseries F = lal.CreateREAL8Vector(len(F)) F.data[:] = fseries # compute strain WFdict = lal.CreateDict() hplus, hcross = lalsim.SimInspiralChooseFDWaveformSequence( phase, m1, m2, s1x, s1y, s1z, s2x, s2y, s2z, fref, dist * 1e6 * lal.PC_SI, iota, WFdict, lalsim.IMRPhenomXPHM, F ) return dict( asd = np.abs(hplus.data.data), phase = np.unwrap(np.angle(hplus.data.data)), time = np.fft.irfft(hplus.data.data) )
def get_fd_waveform_sequence(template=None, **kwds): """Return values of the waveform evaluated at the sequence of frequency points. Parameters ---------- template: object An object that has attached properties. This can be used to substitute for keyword arguments. A common example would be a row in an xml table. {params} Returns ------- hplustilde: Array The plus phase of the waveform in frequency domain evaluated at the frequency points. hcrosstilde: Array The cross phase of the waveform in frequency domain evaluated at the frequency points. """ kwds['delta_f'] = -1 kwds['f_lower'] = -1 p = props(template, required_args=parameters.cbc_fd_required, **kwds) lal_pars = _check_lal_pars(p) hp, hc = lalsimulation.SimInspiralChooseFDWaveformSequence( float(p['coa_phase']), float(pnutils.solar_mass_to_kg(p['mass1'])), float(pnutils.solar_mass_to_kg(p['mass2'])), float(p['spin1x']), float(p['spin1y']), float(p['spin1z']), float(p['spin2x']), float(p['spin2y']), float(p['spin2z']), float(p['f_ref']), pnutils.megaparsecs_to_meters(float(p['distance'])), float(p['inclination']), lal_pars, _lalsim_enum[p['approximant']], p['sample_points'].lal()) return Array(hp.data.data), Array(hc.data.data)
def _lalsim_fd_sequence(**p): """ Shim to interface to lalsimulation SimInspiralChooseFDWaveformSequence """ lal_pars = _check_lal_pars(p) hp, hc = lalsimulation.SimInspiralChooseFDWaveformSequence( float(p['coa_phase']), float(pnutils.solar_mass_to_kg(p['mass1'])), float(pnutils.solar_mass_to_kg(p['mass2'])), float(p['spin1x']), float(p['spin1y']), float(p['spin1z']), float(p['spin2x']), float(p['spin2y']), float(p['spin2z']), float(p['f_ref']), pnutils.megaparsecs_to_meters(float(p['distance'])), float(p['inclination']), lal_pars, _lalsim_enum[p['approximant']], p['sample_points'].lal()) return Array(hp.data.data), Array(hc.data.data)
def lalsim_SimInspiralChooseFDWaveformSequence( phase, mass_1, mass_2, spin_1x, spin_1y, spin_1z, spin_2x, spin_2y, spin_2z, reference_frequency, luminosity_distance, iota, waveform_dictionary, approximant, frequency_array): """ Safely call lalsimulation.SimInspiralChooseFDWaveformSequence Parameters ---------- phase: float, int mass_1: float, int mass_2: float, int spin_1x: float, int spin_1y: float, int spin_1z: float, int spin_2x: float, int spin_2y: float, int spin_2z: float, int reference_frequency: float, int luminosity_distance: float, int iota: float, int waveform_dictionary: None, lal.Dict approximant: int, str frequency_array: np.ndarray, lal.REAL8Vector """ [ mass_1, mass_2, spin_1x, spin_1y, spin_1z, spin_2x, spin_2y, spin_2z, luminosity_distance, iota, phase, reference_frequency ] = convert_args_list_to_float(mass_1, mass_2, spin_1x, spin_1y, spin_1z, spin_2x, spin_2y, spin_2z, luminosity_distance, iota, phase, reference_frequency) if isinstance(approximant, int): pass elif isinstance(approximant, str): approximant = lalsim_GetApproximantFromString(approximant) else: raise ValueError("approximant not an int") if not isinstance(frequency_array, lal.REAL8Vector): old_frequency_array = frequency_array.copy() frequency_array = lal.CreateREAL8Vector(len(old_frequency_array)) frequency_array.data = old_frequency_array return lalsim.SimInspiralChooseFDWaveformSequence( phase, mass_1, mass_2, spin_1x, spin_1y, spin_1z, spin_2x, spin_2y, spin_2z, reference_frequency, luminosity_distance, iota, waveform_dictionary, approximant, frequency_array)