How to have a better propagator?

Hello orekit team,

I have issue with my propagotor and I want to make it more precise.

Curently I used DP method for the integrator and the force model I added are :

NewtonianAttraction centralAttraction = new NewtonianAttraction(;

NormalizedSphericalHarmonicsProvider harmonicsProvider = GravityFieldFactory.getNormalizedProvider(n, m);
HolmesFeatherstoneAttractionModel nonCentralPerturbation = new HolmesFeatherstoneAttractionModel(ConstantsODTS.ecef, harmonicsProvider);

ThirdBodyAttraction sunPerturbation = new ThirdBodyAttraction(CelestialBodyFactory.getSun());

ThirdBodyAttraction moonPerturbation = new ThirdBodyAttraction(CelestialBodyFactory.getMoon());

RadiationSensitive spacecraft = new IsotropicRadiationSingleCoefficient(25, 1,8);
SolarRadiationPressure SRP = new SolarRadiationPressure(CelestialBodyFactory.getSun(),6378136.46, spacecraft );

My propagotor diverge really quickly after a certain time of propagationas it can be seen in the figure below.


I noticed that not adding the SRP model does not change really this error. So I think the problem comes from here.

Do you have any hints ?

Thank you in advance,


Hi @luca123

Maybe you could first increase the degree and order of the Earth’s potential. I see you use 2×2.

Also, having the initial orbital elements and/or orbit type would be very useful to help you initialize a consistent perturbation model.

Finally, I see your plot is the difference compare to reference. What reference do you use?

Best regards,

Thank you Bryan for your answer,

I indeed try to increase the order of earth potential and I work to dimish the peak. Howevrer, it’s still there.

How do you explain the really little impact the SRP have on the orbit? Because this force is supposed to be higher than teh other order of Earth potential right ?

The reference I use to compare is a SP3 file generated by someone else…

No, unless you are very far from Earth.

For regular propagation, we typically use gravity fields at degree-order 60 or something like that for LEO, for GNSS (MEO orbits) we use degree-order 12 and for GEO orbits we use degree order 6. When performing precise orbit determination, these figures go up.

Also on LEO satellites, drag is very important, but if you use SP3 I guess you are dealing with MEO.

Other force models that should be used are solid and ocean tides, and in the case of GPS there is a classical force called Y-bias that should be considered.

Hi @luca123,

The figure just below is one of my favourite in orbital mechanics [1]. It shows the order of magnitude of various perturbations depending the satellite altitude. It helps a lot to build the best dynamical model to perform orbit propagation. Orekit can model all these perturbations.

[1]: Montenbruck, O., Gill, E., & Lutze, F. (2002). Satellite orbits: models, methods, and applications. Appl. Mech. Rev., 55(2), B27-B28.

To help you initializing the solid and ocean tides, you can look at the method setSolidTides and setOceanTides of the tutorial.

Best regards,

1 Like

Thank you Luc for your answer,

Could you tell me more about the Y-bias you mentionned please ?



Thank you very much Bryan,
I realized that tides may not be neglected.

I will try to add them,



The Y-bias is linked to radiation pressure and the attitude model.
It is often modeled as a parametric acceleration and estimated because it is mainly a catch-all force for everything that has no precise model.

Ok, I see. Thank you very much