Dear all,
We have been enjoying propagation tools in Orekit for quite a while, thank you for that !
Lately, we have been encountering some exception such as :
org.hipparchus.exception.MathIllegalStateException: maximal count (100) exceeded at org.hipparchus.util.Incrementor.lambda$static$0(Incrementor.java:41) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.util.Incrementor.increment(Incrementor.java:238) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver.incrementEvaluationCount(BaseAbstractUnivariateSolver.java:318) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver.computeObjectiveValue(BaseAbstractUnivariateSolver.java:165) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.analysis.solvers.BracketingNthOrderBrentSolver.doSolveInterval(BracketingNthOrderBrentSolver.java:297) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.analysis.solvers.BracketingNthOrderBrentSolver.solveInterval(BracketingNthOrderBrentSolver.java:426) ~[hipparchus-core-1.7.jar:?] at org.hipparchus.analysis.solvers.BracketedUnivariateSolver.solveInterval(BracketedUnivariateSolver.java:126) ~[hipparchus-core-1.7.jar:?] at org.orekit.propagation.events.EventState.findRoot(EventState.java:320) ~[orekit-10.2.jar:?] at org.orekit.propagation.events.EventState.evaluateStep(EventState.java:218) ~[orekit-10.2.jar:?] at org.orekit.propagation.analytical.AbstractAnalyticalPropagator.acceptStep(AbstractAnalyticalPropagator.java:308) ~[orekit-10.2.jar:?] at org.orekit.propagation.analytical.AbstractAnalyticalPropagator.propagate(AbstractAnalyticalPropagator.java:168) ~[orekit-10.2.jar:?]
The cause is tough to be understood : we suspect a bug due to discontinuities in our models. Still, that is not easy to investigate : it occurs during a long propagation, which takes a lot of time to be executed.
To analyze the problem, we would need to propagate near the date of the exception and then investigate the current state we’re in.
Do you think Orekit would gain from being more user-friendly : for example, we could catch the underlying MathRuntimeException in the propagator loop and then rethrow it but with additional information such as the date at which the exception occurs ? Such “debug” information on the problematic step of the propagation might be helpful for a user looking to investigate a bug, as well as add some quality of life information when investigating a bug in a long propagation (to avoid waiting for a long time again for a long propagation).
Thank you for everything!
Anne-Laure