Gravitational waves
The infrastructure for getting GW response data is provided by the gwsource subpackage.
The high level interface is given by the ABC GWSource which provides a single method. For a given MOSA, this method returns a FuncOfTime or FuncOfTimeConst with the GW response for the corresponding link as function of time. There are three implementations. For the trivial case of no GW signals, one can use GWSourceZero. For testing, there is an implementation GWSourceNumpyArrays interpolating GW data in numpy arrays.
The main use case is handled by GWSourceSplines which uses spline interpolation functions from the module lisainstrument.sigpro.chunked_splines. The data samples are not provided directly, but instead via a callable that returns data samples within a requested time interval.
The motivation is to allow chunked reading of the samples. Correspondingly, there are two operation modes, using either chunked or global interpolation. For chunked mode, a dedicated interpolation spline is set up for each processed stretch of time, and only sample points for the required time interval are requested from the source. In global mode, a single interplation spline is set up once, using all data. The chunked mode is intended for the use case were the GW is evaluated successively on time intervals. It would become very inefficient for random order or repeated evaluation.
To get sample data from file, there is an interface GWFile. The main purpose is to read GW samples within a requested time window. The corresponding methods have the correct signature for use in GWSourceSplines. Further, the interface provides some needed metadata. There is an implementation for each supported GW response file format version, currently only GWFileV2 supporting file format v2 and v3 (which is identical except for implicit conventions). To load any supported file, there is a function gw_file.
flowchart TB
gwhdf5v2[(GW HDF5 file v 2.*)]
gwhdf5v3[(GW HDF5 file v 3.*)]
subgraph pkg_gwsource [gwsource]
gw_source[GWSource]
gw_source_splines[GWSourceSplines]
gw_source_zero[GWSourceZero]
gw_file[GWFile]
gw_file_v2[GWFileV2]
gw_file_v3[GWFileV3]
end
funcs[FuncOfTimeTypes]
gw_source --> funcs
gw_source_splines --> gw_source
gw_source_zero --> gw_source
gw_file --> gw_source_splines
gw_file_v2 --> gw_file
gw_file_v3 --> gw_file
gwhdf5v2 --> gw_file_v2
gwhdf5v3 --> gw_file_v3