In trying to use DSST Propagator in Orekit 10.0, to propagate down to bottom of ionosphere, I observe the following issues:
-
Normally, simulations abort with this type error:
org.orekit.errors.OrekitException: altitude (85,116.548 m) is below the 100,000 m allowed threshold
at org.orekit.models.earth.atmosphere.HarrisPriester.getDensity(HarrisPriester.java:283)
at com.ray.orbits.MainTmp$1.getDensity(MainTmp.java:624)
at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:87)
at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$IntegrableFunction.value(AbstractGaussianContribution.java:939)
at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$GaussQuadrature.basicIntegrate(AbstractGaussianContribution.java:1675)
at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$GaussQuadrature.integrate(AbstractGaussianContribution.java:1587)
at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution.getMeanElementRate(AbstractGaussianContribution.java:364)
at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution.getMeanElementRate(AbstractGaussianContribution.java:278)
at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$Main.elementRates(DSSTPropagator.java:933)
at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$Main.computeDerivatives(DSSTPropagator.java:912)
at org.orekit.propagation.integration.AbstractIntegratedPropagator$ConvertedMainStateEquations.computeDerivatives(AbstractIntegratedPropagator.java:675) -
Adding: dsstProp.addEventDetector(new AltitudeDetector(150e3, earth));
then simulations will sometimes end at 150km and other times error #1 is still produced. Decreasing the max time step helps but is not 100% reliable. -
Other errors that sometimes occur, even with small max timesteps, include (rarely):
a) Caused by: org.hipparchus.exception.MathIllegalStateException: NaN appears during integration near time 155,560,100
at org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator.integrate(EmbeddedRungeKuttaIntegrator.java:274)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:466)
and (frequently):
b) Hyperbolic orbits cannot be handled as org.orekit.orbits.EquinoctialOrbit instances (DSSTPropagator: 798).
Questions arise:
a) The problem seems to be that the DSSTPropagator will perform intermediate calculations at altitudes below the limit set by AltitudeDetector. Is there some way to prevent this?
b) Is there a fix for the EquinoctialOrbit exception, which seems especially troublesome?
c) Suppose I wanted to propagate the orbital decay even further (say down to the ground). Should I use DSSTPropagator down to some altitude and then something else below that? What is “some altitude” and what is “something else”?
Thanks!
Jim