I was trying to understand how SGP4 computes the propagated position I had a look on the original publication paper but i have not found a satisfactory answer. So I had a look to the Matlab implementation of the SGP4 library (and its usage example) on https://celestrak.org/publications/AIAA/2006-6753/. But i got really confused.

It seems that the original TLE is propagated linearly head until finish time without timesteps (function sgp4.m). Clearly this cannot be true, it must take into account a timestep placing sgp4 calls into a loop (as the example code usage shows) and intermediate results most probably kept in the "satrec" structure.

However the question remains and is the following:

What is the point of propagating for example, the rate of ascending node (nodedot) since the starting TLE, linearly and straight to a intermediate or final time (tsince)?

I mean, for example the "nodedot" is nonlinear and depends mostly on J2 perturbation (if i remember correctly) so "nodedot" would change between integration timesteps. It doesn't make any sense assuming the initial "nodedot" in all propagation steps!

I understand might be a very basic question, but what am I missing?

• I'm no expert, but as far as I understand SGP4 does not really do the direct numerical integration of the orbit that you think it must do. It's all based on perturbations. Very roughly speaking, gthe period, eccentricity, inclination etc are all used to generate a repeating orbit, and SGP4 calculates the rate of change of those elements based on perturbations from a low-order gravity model, atmospheric drag, and in some situations a very simple model for the effects of the Sun and Moon.
– uhoh
Apr 6, 2020 at 14:44
• For more on that see answers to How do “Deep space” corrections in SGP4 account for the Sun's and Moon's gravity?. Also possibly interesting are answers to Differences between SGP8 and the standard SGP4? Is it ever used in practice?
– uhoh
Apr 6, 2020 at 14:45
• Ah! See answer(s) to Why are Keplerian elements used in TLEs instead of Cartesian state vectors? "With SGP4, calculating where the satellite will be one week from now has the same computational cost as does calculating where it will be one second from now (the same is not true for a numerical integrator" Remember that SGP4 is pretty old and so it needed to run quickly on slow computers so that thousands of spacecraft could be calculated at the same time.
– uhoh
Apr 6, 2020 at 14:52
• Ok, probably I understood. So, SGP4 works with mean orbital elements (instead of normal keplerian), it propagates straight forward the mean elements linearly using the derivatives in the TLE iteself (like nodedot, bstar, etc). Then modifies again those mean elements with the internal model, recovering the true keplerian elements (at the required time from TLE epoch). No "integration steps" are needed thanks to the analytic internal model. Apr 20, 2020 at 8:03
• like I say "I'm no expert, but..." I think that's the general idea.
– uhoh
Apr 20, 2020 at 8:17

The basic thing you're missing is the difference between general perturbations and special perturbations.

Special perturbations means

all numerical methods for deriving the disturbed orbit by direct integration of either the rectangular coordinates or a set of osculating orbital elements

General perturbations means

methods of generalizing the expressions for simple two-body motion of a planet about the sun to include the disturbing effects of the other planets by utilizing infinite trigonometric series expansions and term-by-term integration

Definitions quoted from Richard Battin's An Introduction to the Mathematics and Methods of Astrodynamics (1999), chapter 9.

Special pertubations methods are called special because when you give them some set of initial conditions, and then you integrate from there to find the state at other times, the answer you get applies only in that one special case.

General perturbations methods are called general because they are solved analytically for all possible initial conditions, and all the integration is done before you ever give it any numbers. What comes out is a set of equations for the state where you don't "propagate" anything: you just look up the answer at the desired point.

Consider, for example, the simple, planar, polar form of the Kepler orbit:

$$r = \frac{a(1-e^2)}{1+e \cos(\theta-\omega)}$$

To use this, you plug in semi-major axis ($$a$$), eccentricity ($$e$$), argument of perigee ($$\omega$$), and true anomaly ($$\theta$$). Then you read off radial distance ($$r$$). That's all. There is no need to integrate the equations of motion, because all the math has already been done for you.

This is what SGP4 --- the (U.S. Air Force) Simplified General Perturbations Theory, version 4 --- really does. It is not "propagated linearly with no timesteps", it is implemented as a sequence of nested polynomials and trig functions into which one simply plugs the end time, and the final result is calculated from it in one step.

To make this work, of course, that one step must be outlandishly, overwhelmingly complicated. It is! As David Hammen wrote,

The mathematics of those two line elements is beyond messy. It's a "math-out". (Think of a blizzard where all you see is whiteness. Blizzards are white-out conditions. The paper describing the two line elements is a math-out. All you see is mathematics.)

In that answer, he links a deceptively short article which gives the simplest version I've ever seen. It's only nine pages long, but, well, page five is this: Now, let me stress again, this is just a small part of the simplified version! To see the original solution in all its glory (or horror, depending on your taste in mathematics), and the nature of the various simplifications that were made in order to make it run fast enough to manage the entire catalog on old computers, you have to go all the way back to Space-Track Report Number Two, "General Perturbations Theories Derived from the 1965 Lane Drag Theory" (1979). That little beauty is sixty-four pages, one of which is 