Using NRLMSISE-00 with numerical propagator

Hi @MaximeJ @bcazabonne @evan.ward,

Thank you all for helping out. I think the time step is the issue as @MaximeJ suggests, because reducing the step-size and position tolerance makes it work, but then we lose the advantange of the semi-analytical propagator.

@bcazabonne The error doesn’t occur when i use a numerical propagator, but it does with the DSST propagator using both Harris Priester and JB2008 atmospheric models. @evan.ward I believe this user had a similar issue https://forum.orekit.org/t/dsst-propagator-issues-at-low-altitudes/640

Here’s the last set of orbital elements written to my output file (Angles in degrees, sma in Km).
Date : 2021-06-16T11:55:08.73936Z
SMA : 6552.9290
Ecc: 0.0003071
Incl: 22.97438
RAAN: 162.40034
AoP: -185.05898
MAN: 58.98348

@evan.ward I have attached the test case and a unit test, and heres a copy of the backtrace from the exception.

Exception in thread "main" org.orekit.errors.OrekitException: altitude (-5,432,513.404 m) is below the 100,000 m allowed threshold
	at org.orekit.models.earth.atmosphere.HarrisPriester.getDensity(HarrisPriester.java:283)
	at org.orekit.models.earth.atmosphere.HarrisPriester.getDensity(HarrisPriester.java:393)
	at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:80)
	at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$IntegrableFunction.value(AbstractGaussianContribution.java:1003)
	at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$GaussQuadrature.basicIntegrate(AbstractGaussianContribution.java:1472)
	at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution$GaussQuadrature.integrate(AbstractGaussianContribution.java:1383)
	at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution.getMeanElementRate(AbstractGaussianContribution.java:388)
	at org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution.getMeanElementRate(AbstractGaussianContribution.java:300)
	at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$Main.elementRates(DSSTPropagator.java:1173)
	at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$Main.computeDerivatives(DSSTPropagator.java:1152)
	at org.orekit.propagation.integration.AbstractIntegratedPropagator$ConvertedMainStateEquations.computeDerivatives(AbstractIntegratedPropagator.java:758)
	at org.hipparchus.ode.ExpandableODE.computeDerivatives(ExpandableODE.java:134)
	at org.hipparchus.ode.AbstractIntegrator.computeDerivatives(AbstractIntegrator.java:265)
	at org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator.integrate(EmbeddedRungeKuttaIntegrator.java:252)
	at org.orekit.propagation.integration.AbstractIntegratedPropagator.integrateDynamics(AbstractIntegratedPropagator.java:477)
	at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:425)
	at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:385)
	at test.reentry(test.java:100)
	at test.main(test.java:106)

Thank you
test.java (5.7 KB)
testTest.java (429 Bytes)