TLEPropagator (and its Field equivalent) is the only analytical propagator than implements resetInitialState, but not resetIntermediateState (throws an exception), which sounds a bit counterintuitive. Could we put some effort into making the latter work? I know it wraps other propagators e.g. SDP4, but I mean resetInitialState surely had the same problem?
A nice byproduct would be the compatibility with ImpulseManeuver.
resetIntialState is only used for the SGP4 orbit determination. Before that, the method threw the same exception as resetIntermediateState.
I don’t like this ugly architecture. Because I don’t like the fact of re initializing the initial state of an analytical propagator. But it was the only one available solution when we implemented the SGP4 orbit determination. So, I understand it is counterintuitive and that’s something we shall improve.
I don’t know if now we can just build a new TLEPropagator instead of using resetInitialState() for SGP4 orbit determination. Unfortunately, I don’t have the code in front of me to answer this question
Thanks for your post Bryan, it does bring some perspectives into this. Since the resetInitialState is there, I think it would more interesting to adapt if for resetIntermediateState (so that ImpulseManeuver can be used) rather than trying to remove it and replace it for OD. Anyway I can look into it once my backlog of issues is slimmer.
Edit: but if someone wants to look into this, they’re my guest
By looking at the code only, I believe it’s possible to implement resetIntermediateState very similarly to resetInitialState. I could contribute this for 12.0.1, assuming there’s no suprise when testing and if we’re okay to consider this as a “bug”.
Despite the apparent lack of public interest for this , I have proposed a way to implement resetIntermediateState. You can peruse it in this MR. Feedback welcome. Once the design is agreed, I will apply it to the Field equivalent.
Recall that this enables for TlePropagator the use of state resetting events such as ImpulseManeuver. I’ve also fixed a bug (the mass was not updated in resetInitialState).