inspiralfuns

This is the documentation for the inspiralfuns module, which consists of parts of the procedure for simulating the inspiral portions of gravitational waves, collected into modular functions.

get_M_and_eta

get_M_and_eta(**kwargs)

Gives total mass (M) and symmetric mass ratio (eta) from either m1 and m2 OR logMc and q; M and eta are used by many functions in the GW synthesis.

Parameters

First method

m1: float

Mass of one object in binary in solar masses.

m2: float

Mass of other object in binary in solar masses.

Second method

logMc: float

log10(the chirp mass of the binary in solar masses).

q: float

The mass ratio of the objects in the binary.

Returns

(M,eta): tuple of floats

The total mass of the binary, followed by the symmetric mass ratio.

startx

startx(M,flow)

Gives starting value/lower boundary for integration of post-Newtonian parameter, based on Buskirk et al. (2019) equation 22.

Parameters

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

flow: float

Lower cutoff frequency for the gravitational waveform, which we usually set to be 10 Hz.

Returns

value: float

The starting value for the post-Newtonian integration.

endx

endx(eta,merger_type)

Gives ending value/upper boundary for integration of post-Newtonian parameter, based on Buskirk et al. (2019) equation 23.

Parameters

eta: float

Symmetric mass ratio of the binary, can be obtained from get_M_and_eta().

merger_type: string

‘BH’ for a BH-BH merger, ‘NS’ for a BH-NS or NS-NS merger

Returns

value: float

The ending value for the post-Newtonian integration.

PNderiv

PNderiv(x,M,eta)

Encodes the differential equation for the post-Newtonian parameter that is integrated by x_integration(), based on Huerta et al. (2017) and Buskirk et al. (2019). This function should usually not be called directly, but rather by x_integration().

Parameters

x: float

The post-Newtonian parameter, the variable being integrated over.

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

eta: float

Symmetric mass ratio of the binary, can be obtained from get_M_and_eta().

Returns

Mdxdt: float

The value of M * (dx/dt) for the input x, as given by the differential equation.

PN_parameter_integration

PN_parameter_integration(start,end,M,eta)

Integrates the PNderiv() differential equation for the post-Newtonian parameter, x.

Parameters

start: float

The starting value/lower boundary of the integration, from startx().

end: float

The ending value/upper boundary of the integration, from endx().

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

eta: float

Symmetric mass ratio of the binary, can be obtained from get_M_and_eta().

Returns

[x,xtimes,dt]: list of lists of floats

First list is the series of values of the post-Newtonian parameter x that has been integrated, second list is the time corresponding to each value of x (data point), third list is the timestep between each pair of data points.

inspiral_time_conversion

inspiral_time_conversion(xtimes,M)

Converting times in geometric units from x_integration() to times in real units.

Parameters

xtimes: list of floats

Times in geometric units of data points in the integration of the post- Newtonian parameter, from PN_parameter_integration().

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

Returns

realtimes: list of floats

xtimes, but in seconds instead of geometric units.

inspiral_phase_freq_integration

inspiral_phase_freq_integration(x,dt,M)

Integration of orbital phase and angular frequency for the inspiral, using the post-Newtonian parameter, based on Buskirk et al. (2019) equation 7.

Parameters

x: list of floats

Values of the post-Newtonian parameter over time, from PN_parameter_integration().

dt: list of floats

Timesteps in geometric units between each value of xtimes, from PN_parameter_integration().

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

Returns

[i_phase,omega,freq]: list of lists of floats

First list is the values of orbital phase at each timestep, second list is the angular frequency, third list is the frequency of the GW signal.

radius_calculation

radius_calculation(x,M,eta)

Calculation of orbital radius (and time-derivative of radius) for the binary for each timestep during the inspiral, based on Buskirk et al. (2019).

Parameters

x: list of floats

Values of the post-Newtonian parameter over time, from PN_parameter_integration().

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

eta: float

Symmetric mass ratio of the binary, can be obtained from get_M_and_eta().

Returns

[r,rdot]: list of lists of floats

First list is the values of the orbital radius (in geometric units) at each timestep, second list is the time-derivative of the radius (used by strain calculations).

a1_a2_calculation

a1_a2_calculation(r,rdot,omega,D,M,eta)

Calculation of A1 and A2, two coefficients used in the calculation of strain polarisations, based on Buskirk et al. (2019) equation 9.

Parameters

r: list of floats

Values of the orbital radius over time, from radius_calculation().

rdot: list of floats

Values of the time-derivative of the radius, from radius_calculation().

omega: list of floats

Values of the angular frequency over time, from inspiral_phase_freq_integration().

D: float

Distance from the detector to the binary, in Mpc. IMPORTANT: if you want to feed the strain values into the SNR calculator, use the default distance of 100 Mpc here and instead set the distance when using the SNR functions.

M: float

Total mass of the binary, can be obtained from get_M_and_eta().

eta: float

Symmetric mass ratio of the binary, can be obtained from get_M_and_eta().

Returns

[A1,A2]: list of lists of floats

The first list is the values of the A1 parameter used in strain calculation over time, the second list is the A2 parameter.

inspiral_strain_polarisations

inspiral_strain_polarisations(A1,A2,i_phase)

Calculating the values of the two polarisations of strain for the inspiral, using the coefficients from a1_a2_calculation().

Parameters

A1: list of floats

Values of the first strain coefficient over time, from a1_a2_calculation().

A2: list of floats

Values of the second strain coefficient over time, from a1_a2_calculation().

i_phase: list of floats

Values of the orbital phase at each timestep, from inspiral_phase_freq_integration().

Returns

[Aorth,Adiag]: list of lists of floats

The first list is the values of the orthogonal/plus polarisation of strain over time, the second list is the diagonal/cross polarisation.

inspiral_strain_amplitude

inspiral_strain_amplitude(Aorth,Adiag)

Calculating the amplitude of the strain from the polarisations.

Parameters

Aorth: list of floats

The values of the orthogonal/plus polarisation of strain over time, from inspiral_strain_polarisations().

Adiag: list of floats

The values of the diagonal/cross polarisation of strain over time, from inspiral_strain_polarisations().

Returns

i_amp: list of floats

The values of the amplitude of the GW strain over time (unitless).

list_size_reducer

list_size_reducer(reduction_factor,your_list)

Optional function to reduce the size of the lists output by the inspiral functions (not the merger lists, as those are much shorter), in order to reduce filesize to conserve storage space. NOTES: The typical reduction factor we have used in our research using this code is 100. The inspiral lists used by the matching/merger portions are realtimes, omega, i_phase and i_amp so if you reduce one of these you should reduce all of them.

Parameters

reduction_factor: int

The factor you want to reduce the list length by.

your_list: list

The list you want to reduce.

Returns

reduced_list: list

your_list, in reduced form.