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 toEqualArmlengthOrbits
. (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
, theout_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 lengthnum_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
) providephi_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 tonum_bin_all * num_modes * length
. Ifout_buffer
is not provided,phase
andtf
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 tonum_bin_all * num_modes * length
. Ifout_buffer
is not provided,phase
andtf
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 tonparams * 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 inputingphase
andtf
. (Default:True
)
- Raises:
ValueError – Incorrect dimensions for the arrays.