Frequency plan

Frequency plan infrastructure is provided by the freqplan subpackage.

The high level interface is given by the ABC FreqPlanSource which provides a method to get the frequency plan. For a given MOSA, those methods return a FuncOfTime or FuncOfTimeConst with the frequency plan for the corresponding laser as function of time. Currently there is just one implementation, FreqPlanSourceFile. It reads the frequency plan data from a FreqPlanFile instance (see below) and sets up a global interpolation spline. There is no chunking option, since the frequency plans do not require too much memory.

Different from GW response and glitch handling, there is no implementation representing the static case. Currently, the simulator sets up a FuncOfTimeConst directly for this use case, not using the FreqPlanSource interface. This will likely change in the future.

The low level for reading the frequency plan files is provided by the FreqPlanFile class. This is not an abstract interface, but directly reads the only supported file format. In the future, it is planned to use an abstract base class for this as well.

        flowchart TB
   fplanhdf5[(Freq. plan HDF5 file)]
   subgraph pkg_freqplan [freqplan]
      fplan_source[FreqPlanSource]
      fplan_source_interp[FreqPlanSourceFile]
      fplan_file[FreqPlanFile]
   end
   funcs[FuncOfTimeTypes]
   fplan_source --> funcs
   fplan_source_interp --> fplan_source
   fplan_file --> fplan_source_interp
   fplanhdf5 --> fplan_file