Hi @sbaudier
Welcome to the Orekit forum!
Congratulations! I think you found a bug in Orekit.
The post you highlighted was related to a bug in ImpulseManeuver
. You have the same problem but with ConfigurableLowThrustManeuver
.
The fix to apply in Orekit is straightforward. In the init
method of the EventBasedManeuverTriggers
class, the following implementation
/** {@inheritDoc} */
@Override
public void init(final SpacecraftState initialState, final AbsoluteDate target) {
if (!initialized) {
initialized = true;
forward = target.isAfterOrEqualTo(initialState);
if (!forward && !allowBackwardPropagation) {
// backward propagation was forbidden
throw new OrekitException(OrekitMessages.BACKWARD_PROPAGATION_NOT_ALLOWED);
}
checkInitialFiringState(initialState);
} // multiples calls to init : because it is a force model and by each detector
}
must be improved by
/** {@inheritDoc} */
@Override
public void init(final SpacecraftState initialState, final AbsoluteDate target) {
if (!initialized) {
initialized = true;
forward = target.isAfterOrEqualTo(initialState);
if (!forward && !allowBackwardPropagation) {
// backward propagation was forbidden
throw new OrekitException(OrekitMessages.BACKWARD_PROPAGATION_NOT_ALLOWED);
}
startFiringDetector.init(initialState, target);
stopFiringDetector.init(initialState, target);
checkInitialFiringState(initialState);
} // multiples calls to init : because it is a force model and by each detector
}
In other words, the start and stop firing detectors must be initialized.
I reproduced your problem, applied the above fix locally and it works without regression in the Orekit’s tests.
Could you open an issue in our GitLab repository? After that, I will officially fix it and the fix will be available in the next Orekit version.
Best regards,
Bryan