fast_lisa_subtraction.simulation.tdi module

Some utility functions to compute the characteristic strain and Omega_GW related quantities for LISA TDI channels. We follow Eqs. in Sec 2.3 of arXiv:2009.11845

fast_lisa_subtraction.simulation.tdi.Sn(f, Nx, channel)[source]

Add the LISA response to a noise power spectral density.

Parameters:
  • f (numpy.ndarray or torch.Tensor) – Frequency array in Hz.

  • Nx (float or array-like) – Noise PSD in m^2/Hz for the specified channel.

  • channel (str) – TDI channel, one of "A", "E", or "T".

Returns:

Noise PSD including the LISA response.

Return type:

numpy.ndarray or torch.Tensor

fast_lisa_subtraction.simulation.tdi.characteristic_strain(f, Nx, channel)[source]

Compute the characteristic strain for a TDI channel.

Parameters:
  • f (numpy.ndarray or torch.Tensor) – Frequency array in Hz.

  • Nx (float or array-like) – Noise PSD in m^2/Hz for the specified channel.

  • channel (str) – TDI channel, one of "A", "E", or "T".

Returns:

Characteristic strain in m/sqrt(Hz) for the specified channel.

Return type:

numpy.ndarray or torch.Tensor

Notes

The characteristic strain is computed as

\[h_c(f) = \sqrt{f\,S_n(f)},\]

where \(S_n(f)\) includes the LISA response.

fast_lisa_subtraction.simulation.tdi.characteristic_strain_2_omega_gw(f, Sn)[source]

Convert characteristic strain to \(\Omega_{\rm GW}\).

Parameters:
  • f (numpy.ndarray or torch.Tensor) – Frequency array in Hz.

  • Sn (numpy.ndarray or torch.Tensor) – Characteristic strain in 1/sqrt(Hz).

Returns:

Dimensionless \(\Omega_{\rm GW}\).

Return type:

numpy.ndarray or torch.Tensor

Notes

The conversion uses

\[h_c(f) = \sqrt{f\,S_n(f)} \Rightarrow S_n(f) = \frac{h_c^2(f)}{f},\]

and therefore

\[\Omega_{\rm GW}(f) = \frac{4\pi^2 f^3 S_n(f)}{3 H_0^2},\]

with \(H_0 = 3.24\times 10^{-18}\,\mathrm{s^{-1}}\).

fast_lisa_subtraction.simulation.tdi.coarse(f, Si)[source]

Compute a coarse-grained point and uncertainty for one bin.

Parameters:
  • f (numpy.ndarray) – Frequency values in the bin.

  • Si (numpy.ndarray) – Spectrum values in the bin.

Returns:

(fc, Sc, sigma) where fc is the weighted frequency, Sc is the weighted spectrum value, and sigma is the standard deviation of Si.

Return type:

tuple

fast_lisa_subtraction.simulation.tdi.coarse_grain_data(f, data, n=100)[source]

Apply coarse-graining to spectrum data.

Parameters:
  • f (numpy.ndarray) – Frequency array.

  • data (numpy.ndarray) – Spectrum values to be coarse-grained.

  • n (int, optional) – Number of logarithmic bins.

Returns:

(f_coarse, data_coarse, sigma_coarse) corresponding to the coarse-grained frequency, spectrum, and standard deviation.

Return type:

tuple of numpy.ndarray

Notes

The coarse-grained value in each bin is

\[S_k = \frac{\sum_i \sigma_i S_i}{\sum_i \sigma_i},\]

where \(S_i\) are the PSD values and \(\sigma_i\) their associated uncertainties.

fast_lisa_subtraction.simulation.tdi.psd_2_omega_gw(f, Sn)[source]

Convert a PSD to \(\Omega_{\rm GW}\).

Parameters:
  • f (numpy.ndarray or torch.Tensor) – Frequency array in Hz.

  • Sn (numpy.ndarray or torch.Tensor) – Noise power spectral density in 1/Hz.

Returns:

Dimensionless \(\Omega_{\rm GW}\).

Return type:

numpy.ndarray or torch.Tensor

Notes

The conversion uses

\[\Omega_{\rm GW}(f) = \frac{4\pi^2 f^3 S_n(f)}{3 H_0^2},\]

with \(H_0 = 3.24\times 10^{-18}\,\mathrm{s^{-1}}\).