I’m building some propagation models with simple impulsive maneuvers using the python wrapper, and looking at the implementation difference between using master vs slave mode in propagation for custom orekit handlers vs custom application handlers, along with maneuvers in both cases.
Using slave mode with application-level handler reads a bit more clearly in python imo for making a custom actions at given time-steps, but in looking at that I noticed strange behavior for the maneuvers.
If in slave mode, DSST propagator, Keplerian orbit, I add the event detector and maneuver, then propagate using a single line to the end of the time span, t_end, such as:
then the maneuver happens.
But if I wrap this in a loop to manage the step size ‘t’ and iterate to t_end, the maneuver does NOT happen (all else equal).
The event detector is a PositionAngleDetector to trigger of a given mean anomaly, and I’m making sure to actually pass through that in each propagation.
So does something happen to detectors/propagators when you repeatedly make the propagate() call, that perhaps destroys the original state? I tried testing this by adding the
into my loop, but that didn’t fix the issue. If I make the step size of the loop beyond the time t where the condition will first be encountered to trigger the maneuver, it also works. So there’s something with the n+1 calls to propagate() that seems to un-set something… any ideas?