Added frequency and time dependent effects for detector responses and polarization functions
This MR contains several additions to allow for efficient evaluation of the detector response and polarization tensors that correct for a few effects:
Arm length:
frequency_dependent_detector_tensor calculates the detector tensor (which reduces to 1/2 in the static DC limit, appropriate in the long wavelength approximation) for a list of frequencies. This follows the frequency-dependent expression in Essick et al (2017) arXiv:1708.06843, which is isolated in the function frequency_dependent_projected_detector_function. I believe that I have optimized this such that it adds minimal overhead.
-
calculate_nis its own function which calculates the line-of-sight vector n given a geocentric time, ra, and dec. The components of this vector are computed in its own functioncalculate_n_components. This is useful to isolate for when time dependent effects are included.
Time dependent effects:
Changing detector position:
-
time_and_frequency_dependent_detector_tensor_given_gmstassumes the user has supplied a list of gmsts, with each gmst corresponding to the gmst at each frequency in the list of frequencies, and computes the line-of-sight vector n for each gmst in this list. It then does a similar calculation asfrequency_dependent_detector_tensor, but each frequency has a different corresponding n vector. -
time_delay_from_geocenter_given_gmstcomputes the time delay from the geocenter assuming the user has supplied a list of gmsts. -
get_time_dependent_polarization_tensor_given_gmstessentially loops over the same computation asget_polarization_tensorgiven an array of gmsts - the reason the above functions assume the user has supplied a list of gmsts is because otherwise the actual call to
greenwich_mean_sidereal_timefor each time/frequency point becomes a bottleneck. So it is more efficient to pre-compute an array of gmsts and interpolate in the interferometer object, and feed these interpolated gmst values totime_delay_from_geocenter_given_gmst. - I also added a few functions to Doppler shift the frequencies, but I quickly realized this is probably not necessary to include since
(1 + \frac{\mathbf{v}.\mathbf{n}}{c})for Earth's rotation frequency\omega = 7.29e-5 \rm rad/sgives a maximum correction on the order of\mathcal{O}(10^{-6})in the\mathcal{v}parallel to\mathcal{n}configuration. Nevertheless I put in the functions as well as corresponding property in bilby's interferometer object to store the tangential rotation velocity at the site of the interferometer. I can remove these if they are unnecessary and not used.