NaN on anomaly with FieldEclipseDetector and Complex Field
A NaN can appear on the anomaly (after event detection?), leading to the code crashing at org.orekit.bodies.Ellipsoid.pointOnLimb
Data to reproduce:
Initial conditions
final double mu = Constants.WGS84_EARTH_MU;
final Frame inertialFrame = FramesFactory.getGCRF();
final Vector3D initialPosition = new Vector3D(Constants.EGM96_EARTH_EQUATORIAL_RADIUS + 2000e3,
100., -1000.);
final Vector3D initialVelocity = new Vector3D(-100., 7.5e3, 1.);
final double initialMass = 1000.;
final PVCoordinates pvCoordinates = orbit.getPVCoordinates();
final FieldVector3D<T> fieldPosition = new FieldVector3D<>(field, pvCoordinates.getPosition());
final FieldVector3D<T> fieldVelocity = new FieldVector3D<>(field, pvCoordinates.getVelocity());
final FieldPVCoordinates<T> fieldPVCoordinates = new FieldPVCoordinates<>(fieldPosition,
fieldVelocity);
return new FieldCartesianOrbit<>(fieldPVCoordinates, inertialFrame,
new FieldAbsoluteDate<>(field, orbit.getDate()), field.getZero().add(mu));
Propagator
final T fieldStepSize = field.getOne().add(stepSize);
final ClassicalRungeKuttaFieldIntegrator<T> fieldIntegrator = new ClassicalRungeKuttaFieldIntegrator<>(field,
60.);
final FieldNumericalPropagator<T> fieldPropagator = new FieldNumericalPropagator<>(field,
fieldIntegrator);
final FieldOrbit<T> fieldInitialOrbit = createConstantFieldOrbit(field, initialOrbit);
final T fieldInitialMass = field.getZero().add(initialMass);
fieldPropagator.setInitialState(new FieldSpacecraftState<>(fieldInitialOrbit, fieldInitialMass));
detector
eventDetector = new EclipseDetector(CelestialBodyFactory.getSun(),Constants.SUN_RADIUS,
new OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
Constants.WGS84_EARTH_FLATTENING, earth.getBodyOrientedFrame()));
fieldDetector = new FieldEclipseDetector<>(field,
((EclipseDetector) detector).getOccultationEngine()).withHandler(new FieldStopOnEvent<>());
Time of flight of 10000 seconds will lead to bug with Complex (not DerivativeStructure for instance).
Edited by Romain Serra