LISA Response Models

Fast Frequency Domain Response

class bbhx.response.fastfdresponse.LISATDIResponse(TDItag='AET', orbits: Orbits | None = None, rescaled: bool = False, tdi2: bool = False, order_fresnel_stencil=0, use_gpu=False)

Bases: object

Evaluate the fast frequency domain response function

The response function is the fast frequency domain response function from arXiv:1806.10734 and arXiv:2003.00357. Please cite these papers if this class is used. This response assumes a fixed, non-breathing armlength for the LISA constellation.

This class has GPU capability.

Parameters:
  • TDItag (str, optional) – TDI channels to generate. Options are "XYZ" and "AET". If "XYZ" is not given, it will default to "AET". (Default: "AET")

  • orbits (Orbits, optional) – Orbit class. If None, orbits is set to EqualArmlengthOrbits. (Default: None)

  • rescaled (bool, optional) – If True, rescale TDI functions to avoid infinities at high frequency. (Default: False)

  • tdi2 (bool, optional) – If True, apply a factor of \(-2i \sin{(4x)}e^{i4x})\) to tdi1 output. This is a conversion from TDI 1 to TDI 2 under the assumption of equal armlengt orbits. (Default: False)

  • order_fresnel_stencil (int, optional) – Order of the Fresnel stencil in the response. Currently, anything above 0 is not implemented. This is left in for future compatibility. (Default: 0)

  • use_gpu (bool, optional) – If True, use a GPU. (Default: False)

allowable_modes

Allowed list of mode tuple pairs (l,m) for the chosen waveform model.

Type:

list

ells_default

Default values for the l index of the harmonic.

Type:

np.ndarray

mms_default

Default values for the m index of the harmonic.

Type:

np.ndarray

includes_amps

If True, the out_buffer contains the first entry for amplitudes.

Type:

bool

order_fresnel_stencil

Order of the Fresnel stencil in the response. Currently, anything above 0 is not implemented. This is left in for future compatibility.

Type:

int

TDItag

TDI channels to generate. Either "XYZ" or "AET".

Type:

str

property use_gpu: bool

Whether to use a GPU.

property response_gen

C function on GPU/CPU

property xp

Numpy or Cupy

property citation

Return citations for this class

property transferL1

(num_bin_all, num_modes, length)

Type:

TransferL1 term in response. Shape

property transferL2

(num_bin_all, num_modes, length)

Type:

TransferL2 term in response. Shape

property transferL3

(num_bin_all, num_modes, length)

Type:

TransferL3 term in response. Shape

property phase

(num_bin_all, num_modes, length)

Type:

Get updated phase info. Shape

property tf

(num_bin_all, num_modes, length)

Type:

Get tf info. Shape

__call__(freqs, inc, lam, beta, psi, phi_ref, length, modes=None, phase=None, tf=None, out_buffer=None, adjust_phase=True, direct=False)

Evaluate respones function

Parameters:
  • freqs (1D or 2D xp.ndarray) – Frequency at which the response is evaluated. 2D shape is (num_bin_all, length). If given as a 1D array, it should be of length num_bin_all * length.

  • inc (scalar or 1D xp.ndarray) – Inclination of BBH system in radians.

  • lam (scalar or 1D xp.ndarray) – Ecliptic longitude in SSB frame in radians.

  • beta (scalar or 1D xp.ndarray) – Ecliptic latitude in SSB frame in radians.

  • psi (scalar or 1D xp.ndarray) – Polarization angle of the system in radians.

  • phi_ref (scalar or 1D xp.ndarray) – Reference phase. Note: The response function rotates the source by phi_ref. For this reason, the main waveform functions (e.g. bbhx.waveform.BBHWaveformFD) provide phi_ref = 0.0 into the source-frame scaled waveform generators (e.g. bbhx.waveforms.phenomhm.PhenomHMAmpPhase). This allows the reference phase to be applied here in the response.

  • length (int) – The length of the individual frequency arrays. This is required because of the options for putting in 1D arrays into this function. The length tells the chunk size in a 1D array.

  • modes (list, optional) – Harmonic modes to use. If not given, they will default to those available in the waveform model PhenomHM: [(2,2), (3,3), (4,4), (2,1), (3,2), (4,3)]. (Default: None)

  • phase (xp.ndarray, optional) – Waveform phase. This is adjusted by the phaseRdelay quantity in the code. If more than 1D, the shape should be (num_bin_all, num_modes, length). If 1D, its total length should be equivalent to num_bin_all * num_modes * length. If out_buffer is not provided, phase and tf are required.

  • tf (xp.ndarray, optional) – Waveform time-frequency correspondence. This tells the response where the LISA constellation is at each frequency. If more than 1D, the shape should be (num_bin_all, num_modes, length). If 1D, its total length should be equivalent to num_bin_all * num_modes * length. If out_buffer is not provided, phase and tf are required.

  • out_buffer (xp.ndarray, optional) – 1D array initialized to contain all computations from the inital waveform and response function. If providing out_buffer, the response fills it directly. To make this happen easily in GPU/CPU agnostic manner, out_buffer needs to be a 1D array with length equivalent to nparams * num_bin_all * num_modes * length. nparams can be 8 if the buffer does not include the amplitudes (which are not needed at all for the response computation) or 9 if it includes the amplitudes. (Default: None)

  • adjust_phase (bool, optional) – If True adjust the phase array in-place inside the response code. Note: This only applies when inputing phase and tf. (Default: True)

Raises:

ValueError – Incorrect dimensions for the arrays.