Weird error message in propagation from solar activity

Hey there,

During some batch least square orbit determination, I’m getting an error that is somewhat contradictory (pardon my French XD):

org.orekit.errors.OrekitException: pas de paramètres d’activité du soleil disponible le 2022-05-18T21:40:�Z, données disponibles uniquement pour l’intervalle [1998-09-01T00:00:00.000Z, 2041-10-01T00:00:00.000Z]
at org.orekit.models.earth.atmosphere.NRLMSISE00.getDensity(NRLMSISE00.java:1158)
at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:80)
at org.orekit.forces.ForceModel.addContribution(ForceModel.java:109)
at org.orekit.propagation.numerical.NumericalPropagator$Main.computeDerivatives(NumericalPropagator.java:899)
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:408)
at org.orekit.propagation.PropagatorsParallelizer.propagate(PropagatorsParallelizer.java:140)
at org.orekit.estimation.leastsquares.AbstractBatchLSModel.value(AbstractBatchLSModel.java:319)
at org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresFactory$LocalLeastSquaresProblem.evaluate(LeastSquaresFactory.java:440)
at org.orekit.estimation.leastsquares.BatchLSEstimator$TappedLSProblem.evaluate(BatchLSEstimator.java:615)
at org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:333)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

The date is clearly within the boundaries, so apart from the unrendered character, I do not see any problem. Does that issue look familiar to anyone?

Cheers,
Romain.

Changing the atmospheric model, I got the following error, which makes more sense (the IOD might be giving a very poor guess of the orbit):

org.orekit.errors.OrekitException: altitude (-2 399 159,584 m) au dessous de la limite autorisée de 120 000 m
at org.orekit.models.earth.atmosphere.DTM2000.getDensity(DTM2000.java:246)
at org.orekit.models.earth.atmosphere.DTM2000.getDensity(DTM2000.java:374)
at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:80)
at org.orekit.forces.ForceModel.addContribution(ForceModel.java:109)
at org.orekit.propagation.numerical.NumericalPropagator$Main.computeDerivatives(NumericalPropagator.java:899)
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.AdaptiveStepsizeIntegrator.initializeStep(AdaptiveStepsizeIntegrator.java:226)
at org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator.integrate(EmbeddedRungeKuttaIntegrator.java:226)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.integrateDynamics(AbstractIntegratedPropagator.java:477)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:408)
at org.orekit.propagation.PropagatorsParallelizer.propagate(PropagatorsParallelizer.java:140)
at org.orekit.estimation.leastsquares.AbstractBatchLSModel.value(AbstractBatchLSModel.java:319)
at org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresFactory$LocalLeastSquaresProblem.evaluate(LeastSquaresFactory.java:440)
at org.orekit.estimation.leastsquares.BatchLSEstimator$TappedLSProblem.evaluate(BatchLSEstimator.java:615)
at org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:333)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

So NRLMSISE00 is raising the wrong error message?

Hi @Serrof,

Thanks for reporting this bug !

Looks like it yes, that’s weird.
Could you provide us a test case ?

Maxime

Just wanted to bring this thread up because I also got this message today:

JavaError: <super: <class 'JavaError'>, <JavaError object>>
    Java stacktrace:
org.orekit.errors.OrekitException: no solar activity available at 2024-09-11T00:01:�Z, data available only in range [2019-01-01T00:00:00.000Z, 2096-10-01T00:00:00.000Z]
	at org.orekit.models.earth.atmosphere.NRLMSISE00.getDensity(NRLMSISE00.java:1161)
	at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:90)
	at org.orekit.forces.ForceModel.addContribution(ForceModel.java:120)
	at org.orekit.propagation.numerical.NumericalPropagator$Main.computeDerivatives(NumericalPropagator.java:979)

I checked the weather file and it did indeed list solar activity for 2024/9/11:

2024 09 08 2606  6 20 20 13 13 23 20 17 17 143   7   7   5   5   9   7   6   6   7 0.3 1 157 231.0 0 225.1 224.3 227.6 222.0 218.3
2024 09 09 2606  7 23 13 23 13 10 27 27 23 160   9   5   9   5   4  12  12   9   8 0.4 2 151 217.8 0 225.0 224.5 214.8 221.9 218.6
2024 09 10 2606  8 23 13 17 13 13  7 23 13 123   9   5   6   5   5   3   9   5   6 0.3 1 141 207.9 0 224.0 224.6 205.2 221.0 218.7
2024 09 11 2606  9  7 10  7 13 30 37 20 27 150   3   4   3   5  15  22   7  12   9 0.5 2 147 209.6 0 222.8 224.7 207.0 220.0 218.8
2024 09 12 2606 10 20 37 57 67 67 60 70 47 423   7  22  67 111 111  80 132  39  71 1.8 7 132 203.7 0 221.7 224.9 201.2 219.0 219.1
2024 09 13 2606 11 53 43 40 33 33 37 40 60 340  56  32  27  18  18  22  27  80  35 1.4 6 109 188.1 0 220.8 224.9 185.8 218.2 219.1
2024 09 14 2606 12 40 37 20 40 43 17 27 30 253  27  22   7  27  32   6  12  15  19 1.0 5 107 174.4 0 220.0 224.7 172.4 217.4 219.0

And when I removed my measurement values for the first hour of data (20240911T00:00:00.000Z to 20240911T01:00:00.000Z UTC) everything ran fine. I don’t know if I can provide a full test case but I’ll see if I can provide a data file with the measurement data I’m feeding into the LS solver.

The black question mark unicode character seems a lot to me like a seconds number that is NaN.

No I checked that. All my measurement values are even second values. And the same symbol popped up for serrof in his initial report.

Update. I ran the data with a different time frame (i.e. different start and end times that nevertheless included the same area of time where I’m encountering difficulties) and now I’m getting this error.

estimatedParams = lsEstimator.getPropagatorParametersDrivers(True).getDrivers()
lsPropagator = lsEstimator.estimate()[0]
*** orekit.JavaError: <super: <class 'JavaError'>, <JavaError object>>
    Java stacktrace:
org.orekit.errors.OrekitException: Infinite value appears during computation of atmospheric density in NRLMSISE00 model
	at org.orekit.models.earth.atmosphere.NRLMSISE00$Output.densu(NRLMSISE00.java:2622)
	at org.orekit.models.earth.atmosphere.NRLMSISE00$Output.gts7(NRLMSISE00.java:1570)
	at org.orekit.models.earth.atmosphere.NRLMSISE00$Output.gtd7(NRLMSISE00.java:1820)
	at org.orekit.models.earth.atmosphere.NRLMSISE00$Output.gtd7d(NRLMSISE00.java:1928)
	at org.orekit.models.earth.atmosphere.NRLMSISE00.getDensity(NRLMSISE00.java:1181)
	at org.orekit.forces.drag.DragForce.acceleration(DragForce.java:90)
	at org.orekit.forces.ForceModel.addContribution(ForceModel.java:120)
	at org.orekit.propagation.numerical.NumericalPropagator$Main.computeDerivatives(NumericalPropagator.java:979)

which fits in with what serrof said about how the original NRLM error was a misreporting of a zero-altitude error. I’ll double-check the pos/vel data that’s throwing the solver off and see if the values might be odd enough to give me a crazy orbit estimate that flies me into the ground.