You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These regressions are due to the use in FieldDetectorBasedEventState of isZero, when integration happens between two Field times whose difference lies beyond the getReal component.
The text was updated successfully, but these errors were encountered:
For the second regression, the problematic call to isZero seems to be on line 369 (on loopG in if statement). If one replaces is with getReal() == 0.0, the regression is gone
I'm struggling to create reproductible cases in Hipparchus that would serve as unit tests. I'm already struggling to find short ones in Orekit. @maisonobe you know FieldDetectorBasedEventState better than me, do you event understand exactly why these two lines are problematic when there is a time detection with a non-zero gradient in the independent variable?
I'm almost tempted to make the two changes without any tests checking that the regression doesn't occur again in the future. It's not good practise but FieldDetectorBasedEventState is not a reader-friendly class.
You are right, checking the value itself is sufficient, and in fact checking the partial derivatives is wrong here: when we cross a zero, there is no reason why the derivatives should be zero. In fact the derivative with respect to time itself is non-zero.
So +1 on the change, and OK for not adding specific tests, I agree it is difficult.
See Orekit forum post: https://forum.orekit.org/t/regression-with-field-propagation-detection/3108/4
These regressions are due to the use in FieldDetectorBasedEventState of isZero, when integration happens between two Field times whose difference lies beyond the getReal component.
The text was updated successfully, but these errors were encountered: