Anybody knows about reliable open source implementation of analytical orbit propagator (for a generic orbit, given the initial state and not TLE)? Possibly including up to J2 and drag also.

I have performed a deep literature review about analytical and semi-analytical and almost nothing is available and ready to use online. I am implementing an analytical but I was looking for some implemented reference.

  • 1
    $\begingroup$ So to double check, an analytical orbit propagator here would be a program, or a set of equations ready to put into code that doesn't use numerical integration, but instead uses a set of equations that give the position as a function of time directly? Something you could just say "t = 100,000 seconds, where is it?" and you'd get an x, y, z position without iteration? See for example the references in this Astronomy SE question Nodal Precession of Planets especially Meeus' Astronomical Algorithms. While I've never seen it I hear it's loaded! $\endgroup$
    – uhoh
    Oct 13, 2022 at 1:27
  • $\begingroup$ Also, you can take a look at PyEphem "PyEphem generates positions using the 1980s techniques popularized in Jean Meeus’s Astronomical Algorithms, like the IAU 1980 model of Earth nutation and VSOP87 planetary theory. These make PyEphem faster and more compact than modern astronomy libraries, but limit its accuracy to around 1 arcsecond. This is often sufficient for most amateur astronomy, but users needing higher precision should investigate a more modern Python astronomy library like Skyfield or AstroPy." $\endgroup$
    – uhoh
    Oct 13, 2022 at 1:33
  • $\begingroup$ See also PyEphem under the hood - how does it calculate position of planets? So I think all (easy) roads lead to either VSOP or Jean Meeus’s Astronomical Algorithms, though there may be some earlier "roll-your-own" works. Of course SGP4 might also qualify as an answer though you'll be fighting it all the way since it speaks only in TLEs, unless this stuff helps: What's a Brouwer-Lyddane mean semi major axis, or any other, for an orbit in a lumpy gravity field? $\endgroup$
    – uhoh
    Oct 13, 2022 at 1:34
  • 1
    $\begingroup$ Following up on @uhoh's comment, if assuming by analytical you mean something that doesn't use numerical integration, I would ask you to consider why you need that. J2 is predictable, but drag is completely unpredictable. If you are looking at saving mathematical load by using equations rather than integration so you can look far into the future, I'd question the validity of your drag estimates. $\endgroup$
    – Carlos N
    Oct 14, 2022 at 17:18
  • 1
    $\begingroup$ When I talk about analytical propagation I mean something like Hoots' and Brouwer-Lyddane theories. And what I was looking for is a existing implementation in any language, just considering the analytical forms for propagation, $\endgroup$ Oct 19, 2022 at 6:58

1 Answer 1


You can check out orekit.org,which basically is an open source java library for orbital mechanics. They have implemented various analytical propagators, all inheriting from an AbstractAnalyticalPropagator class:


For example keplerian, Eckstein Hechler or Brouwer Lyddane

Here you can find the source code for Brouwer Lyddane for example



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.