diff --git a/lisainstrument/instrument.py b/lisainstrument/instrument.py index 76d077fa044c96aa80627dee3e8dc3a4e1796f16..f184e2a0b61111f9a17d8bc836ba32c41aecd952 100755 --- a/lisainstrument/instrument.py +++ b/lisainstrument/instrument.py @@ -208,6 +208,7 @@ class Instrument: self.physics_fs = self.fs * self.physics_upsampling logger.info("Computing physics time vector (size=%s, dt=%s)", self.physics_size, self.physics_dt) self.physics_t = self.t0 + np.arange(self.physics_size, dtype=np.float64) * self.physics_dt + self.physics_et = self.physics_t - self.t0 # elapsed time # Telemetry sampling self.telemetry_downsampling = int(telemetry_downsampling) @@ -223,8 +224,10 @@ class Instrument: self.telemetry_t0 = self.t0 - self.initial_telemetry_size * self.telemetry_dt logger.info("Computing telemetry time vector (size=%s, dt=%s)", self.telemetry_size, self.telemetry_dt) self.telemetry_t = self.telemetry_t0 + np.arange(self.telemetry_size, dtype=np.float64) * self.telemetry_dt + self.physics_t_withinitial = self.telemetry_t0 + \ np.arange(self.physics_size + self.initial_telemetry_physics_size, dtype=np.float64) * self.physics_dt + self.physics_et_withinitial = self.physics_t_withinitial - self.t0 # Instrument topology self.central_freq = float(central_freq) @@ -801,30 +804,23 @@ class Instrument: self.simulate_noises() logger.debug("Computing local timer deviations") - self.local_timer_deviations = \ - self.clock_offsets + \ - self.clock_freqoffsets * self.physics_t + \ - self.clock_freqlindrifts * self.physics_t**2 / 2 + \ - self.clock_freqquaddrifts * self.physics_t**3 / 3 + \ - ForEachSC(lambda sc: - cumulative_trapezoid(np.broadcast_to( - self.clock_noise_fluctuations_withinitial[sc], - self.physics_size + self.initial_telemetry_physics_size), - dx=self.physics_dt, initial=0)[self.initial_telemetry_physics_size:] - ) - + t = self.physics_et_withinitial self.local_timer_deviations_withinitial = \ - self.clock_offsets + \ - self.clock_freqoffsets * self.physics_t_withinitial + \ - self.clock_freqlindrifts * self.physics_t_withinitial**2 / 2 + \ - self.clock_freqquaddrifts * self.physics_t_withinitial**3 / 3 + \ - ForEachSC(lambda sc: + self.clock_offsets \ + + self.clock_freqoffsets * t \ + + self.clock_freqlindrifts * t**2 / 2 \ + + self.clock_freqquaddrifts * t**3 / 3 \ + + ForEachSC(lambda sc: cumulative_trapezoid(np.broadcast_to( self.clock_noise_fluctuations_withinitial[sc], self.physics_size + self.initial_telemetry_physics_size), dx=self.physics_dt, initial=0) ) + self.local_timer_deviations = self.local_timer_deviations_withinitial.transformed( + lambda _, x: x if np.isscalar(x) else x[self.initial_telemetry_physics_size:] + ) + ## Timer deviations from TCB physics_to_telemetry = lambda _, x: x[::self.physics_upsampling * self.telemetry_downsampling] @@ -837,7 +833,7 @@ class Instrument: 0 if self.tdir_tone_amplitudes[mosa] == 0 \ else self.tdir_tone_amplitudes[mosa] * np.sin( 2 * np.pi * self.tdir_tone_frequencies[mosa] - * (self.physics_t + self.local_timer_deviations[mosa[0]]) + * (self.physics_et + self.local_timer_deviations[mosa[0]]) + self.tdir_tone_initial_phases[mosa] ) ) @@ -1333,7 +1329,7 @@ class Instrument: self.clock_noise_offsets = self.clock_freqoffsets else: logger.debug("Generating clock noise offsets") - t = self.physics_t + t = self.physics_et self.clock_noise_offsets = \ self.clock_freqoffsets \ + self.clock_freqlindrifts * t \ @@ -1751,6 +1747,7 @@ class Instrument: logger.debug("Writing clock noise to '%s'", output) self.clock_noise_offsets.write(hdf5, 'clock_noise_offsets') self.clock_noise_fluctuations.write(hdf5, 'clock_noise_fluctuations') + self.clock_noise_fluctuations_withinitial.write(hdf5, 'clock_noise_fluctuations_withinitial') logger.debug("Writing modulation noise to '%s'", output) self.modulation_noises.write(hdf5, 'modulation_noises') @@ -1795,6 +1792,7 @@ class Instrument: logger.debug("Writing local timer deviations to '%s'", output) self.local_timer_deviations.write(hdf5, 'local_timer_deviations') + self.local_timer_deviations_withinitial.write(hdf5, 'local_timer_deviations_withinitial') logger.debug("Writing tilt-to-length couplings to '%s'", output) self.local_ttls.write(hdf5, 'local_ttls') diff --git a/tests/test_instrument.py b/tests/test_instrument.py index bb97ee9972d855e9c58057c502fcba1c21ec091c..54adb731c58fedd3dcdf3855f0bd5df966c53c42 100755 --- a/tests/test_instrument.py +++ b/tests/test_instrument.py @@ -38,13 +38,11 @@ def test_esa_orbits_1_0_2(): instru = Instrument(size=100, orbits='tests/esa-orbits-1-0-2.h5') instru.simulate() -@pytest.mark.skip("see https://gitlab.in2p3.fr/lisa-simulation/instrument/-/issues/83") def test_keplerian_orbits_2_0_dev(): """Test that simulations can run with Keplerian orbit files v2.0.dev.""" instru = Instrument(size=100, orbits='tests/keplerian-orbits-2-0-dev.h5') instru.simulate() -@pytest.mark.skip("see https://gitlab.in2p3.fr/lisa-simulation/instrument/-/issues/83") def test_esa_trailing_orbits_2_0_dev(): """Test that simulations can run with ESA trailing orbit files v2.0.dev.""" instru = Instrument(size=100, orbits='tests/esa-trailing-orbits-2-0-dev.h5')