DSST propagator initialization


#1

Dear Orekit team,

I am trying to use the DSST propagator but I have some questions about the correct usage.

I would like to use the DSST propagator to compute a mean orbital state starting from a perturbed orbital state. For example, I would like to compute the mean eccentricity starting from the eccentricity of a perturbed orbit (which is not constant).

In the following lines of code I would expect that dsst1 and dsst2 produce the same results for a propagation:

    State initialState;
    
    DSSTPropagator dsst1 = new DSSTPropagator(new DormandPrince853Integrator(minStep, maxStep, vecAbsoluteTolerance, vecRelativeTolerance),true);
    State mean = DSSTPropagator.computeMeanState(initialState, attitudeProvider, forceModels);
    dsst1.setInitialState(mean, false);

    DSSTPropagator dsst2 = new DSST(new DormandPrince853Integrator(minStep, maxStep, vecAbsoluteTolerance, vecRelativeTolerance),true);
    dsst2.setInitialState(initialState, true);

What is the expected behavior for the two propagators?

Kind Regards,
Raffaele Ferraro


#2

If the attitude provider and force models list in the call to computeMeanState are the same as the one in the configured propagator, then the two methods should gibe the same result.
In fact, what is done internally in the second case, is what you do manually in the first case
(see https://gitlab.orekit.org/orekit/orekit/blob/master/src/main/java/org/orekit/propagation/semianalytical/dsst/DSSTPropagator.java#L591).