Hello,
I have questions and problems while trying to use the AbstractGaussianContribution class for the DSST propagation.
First, it’s not easy to call the “init” method of the underlying force model because the “initialize” method of AbstractGaussianContribution, called at the beginning of a DSST propagation, does not provide a spacecraftState at start and/or a time. So what is the correct way to initialize a ForceModel from an AbstractGaussianContribution ?
Then, while I tried to implement a long low-thrust maneuver in DSST with the AbstractGaussianContribution class, I encountered a problem when trying to propagate with a propagation type = Osculating.
I want to set a maneuver that thrusts between two mean equinoctial longitudes, with the start and stop triggered by event detectors. But when I run it, an exception is raised.
Exception in thread "main" org.orekit.errors.OrekitException: échantillon d'interpolation vide
at org.orekit.errors.OrekitException.unwrap(OrekitException.java:154)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:494)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:414)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:397)
at DsstPropagatorBehavior.propagate(DsstPropagatorBehavior.java:64)
at DsstPropagatorBehavior.main(DsstPropagatorBehavior.java:91)
Caused by: org.hipparchus.exception.MathIllegalArgumentException: échantillon d'interpolation vide
at org.hipparchus.analysis.interpolation.HermiteInterpolator.checkInterpolation(HermiteInterpolator.java:277)
at org.hipparchus.analysis.interpolation.HermiteInterpolator.value(HermiteInterpolator.java:176)
at org.orekit.propagation.semianalytical.dsst.utilities.ShortPeriodicsInterpolatedCoefficient.value(ShortPeriodicsInterpolatedCoefficient.java:76)
at org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal$ZonalShortPeriodicCoefficients.value(DSSTZonal.java:1506)
at org.orekit.propagation.semianalytical.dsst.DSSTPropagator$MeanPlusShortPeriodicMapper.mapArrayToState(DSSTPropagator.java:841)
at org.orekit.propagation.integration.StateMapper.mapArrayToState(StateMapper.java:167)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.getCompleteState(AbstractIntegratedPropagator.java:595)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.access$600(AbstractIntegratedPropagator.java:63)
at org.orekit.propagation.integration.AbstractIntegratedPropagator$AdaptedEventDetector.init(AbstractIntegratedPropagator.java:774)
at org.hipparchus.ode.AbstractIntegrator.initIntegration(AbstractIntegrator.java:225)
at org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator.integrate(EmbeddedRungeKuttaIntegrator.java:196)
at org.orekit.propagation.integration.AbstractIntegratedPropagator.propagate(AbstractIntegratedPropagator.java:468)
... 4 more
What is stranged id that the exception is raised in DSSTZonal…
This exception is raised only when the propagation type is OSCULATING (when adding the short terms). In MEAN propagation, the problem is not raised and the propagation runs fine (at least, the propagation finishes without errors but I didn’t check the correctness of the propagation…).
It seems linked to the use of the event detectors. If I remove the detectors and force the underlying force model to thrust all the time (but with the LLimit set correctly), I do not have this error (but a different result…).
What is the correct way to handle detectors that would enable/disable the thrust for example ?
I made a small piece of code to reproduce the behavior I encountered.
If someone has already done something similar with DSST and could explain me how to handle it correctly, that would be great!
ConstantManeuver.java (8.8 KB) DsstPropagatorBehavior.java (4.5 KB) DsstThrustManeuver.java (2.8 KB)
Thanks
Christophe