We currently use white jitter noise (in angle), for MOSA and SC. The allocation is not white, and have some relaxation at low frequencies, with a noise in
A[1+(f0.8mHz)4]
This corresponds to feature (7) in the list, with high priority, deadline January 2023. Note that the noise shape will probably need to be updated in the near future, so that we should allow for pole-zero model parametrization.
This is implemented for LISANode (one of the many changes in https://gitlab.in2p3.fr/j2b.bayle/LISANode/-/merge_requests/350, to be split into its own self-contained merge request). We use a Franklin noise generator. We don’t have Franklin generators in LISA Instrument, so we can either implement it (a bit more work), or use ad-hoc models for now.
Edited
Designs
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
(Nevermind this comment, CBE = allocation right now for some reason)
Is allocation the correct choice, or do we use CBE? Obviously allocation is conservative but it's also often unphysical in spectral character. Right now we have the number from the L3 proposal (10^-8 [m/rt(Hz)]) which was really neither of those specific concepts, but probably closer to the CBE.
Yeah, we don't in the perf model itself, and I think upon a few seconds contemplation that's because we have two different SC designs from the Primes, so we actually can't have one CBE. My bad. Anyhow, the flat jitter level is lower by a factor of 2 than the old value, [5E-9.*sqrt(1+(0.8E-3./f).^4)], and the low frequency ramp up happens as TTL gets less relevant, so as above I rescind my comment!
It's not gonna be easy but fortunately I have a somewhat working implementation in Python! (As I first did a quick and dirty implementation in Python to then ported it to C++)
One difficulty I see is that in the propagation step (going from time step
i
to
i+1
) we need to form the matrix-vector product of a constant matrix and the last intermediary noise vector. This translates really well in LISANode since we simulate sample-by-sample but for LISA Instrument where we simulate the full time series I don't know how to efficiently port that to Numpy syntax?
Yes, I would also vote for that! Another option could be to start with a continuous time pole zero model and use the Bilinear Transform to design an approximate IIR filter for white noise. Have you tried that before? It seems quite easy and possibly even equivalent to what you propose?
Yes, that's pretty much what we do… except that IIR filters are not super well-behaved. Once has to be careful to implement them as order-2 cells, and they are a pain because we cannot (in theory) chunk the simulation in time anymore.
I also mean for the classical example of calculating the timer deviations by integrating the clock noise. So there are already elements in the simulation which prevent chunking and parallel execution, right?
In my understanding to calculate the next sample for an IIR filter (i.e. y[n]) you need some x[n], x[n-1], ..., x[n-M] and y[n-1], ..., z[n-N] with a finite M and N depending on the order of the filter. So you need those samples from the previous chunk not the entire one. Where is my loop hole?
I think I'm projecting a Dask-like implementation of this. And in this case, you map computations on overlapping-chunked arrays, such that you have to be able to express your result as y[n:n+N] = f(x[n:n+M]), where M is the chunk length, including margins. With just this framework, you cannot, right?