@BillGray's answer to Why can't custom-made TLEs for the DSCOVR launch booster in orbit around Earth work with SDP4? is quite interesting and informative; I fail to do it justice by summarizing it as saying that SDP4 is an improvement for orbits of 12 and 24 hours since it tries to address perturbative effects of the Sun and Moon's gravity on high Earth orbits, but doesn't work well for Earth orbits much higher (such as some discarded rocket bodies for missions to Lagrange points and deep space.

Thus some of the discussed custom TLE's of very high orbits end up using SDP4 and some stick with SGP4 (via a flag in the TLE it seems).

A TLE creator's gotta do what a TLE creator's gotta do.

The following was also asked and somewhat answered by means of "read this" answers: How do SDP4's "Deep space" corrections to SGP4 account for the Sun's and Moon's gravity?

But in a comment under @BillGray's answer to the DSCOVR booster question, I wrote:

I'm surprised that SDP4's "deep space" math has the narrow range of applicability that it does. In a 3D space defined by $a, \epsilon, i$ I wonder what the shape of the space where SDP4 works better than SGP4 would look like.

So I thought I would just ask that as a new question.

Question: In a 3D space defined by semimajor axis, eccentricity and inclination $(a, \epsilon, i)$, what would be the shape of the space where SDP4 works better than SGP4?

  • $\begingroup$ I think that this is one of the most interesting questions I've ever asked, why the anonymous, unhelpful, silent down vote? Without some feedback I'll never know! $\endgroup$
    – uhoh
    Commented May 26, 2021 at 2:27
  • 3
    $\begingroup$ I'll chip in an upvote because it seems to be a perfectly legit question albeit one I don't really grok. $\endgroup$ Commented May 26, 2021 at 2:42
  • 1
    $\begingroup$ @OrganicMarble thanks! Maybe the dv was for generalized nongrokability $\endgroup$
    – uhoh
    Commented May 26, 2021 at 3:46

2 Answers 2


I have no formal, mathematical answer to this. When I have to fit TLEs to a new object, I try SDP4; if it fails, I drop back to SGP4. It's an entirely empirical "gee, SDP4 didn't work here" approach. I also haven't kept particularly careful track of when it happens, and I've only had SDP4 fail on maybe a dozen objects. So my statistics are not of high quality. With those warnings :

SGP4 almost alway works for objects that are not at escape velocity relative to the earth, even, for example, Gaia (at the earth-sun L2 point) and a few temporarily captured objects such as the Surveyor 2 Centaur in late 2020/early 2021. Exceptions involve extreme closeness to the moon, such as during the lunar flybys of the Chang'e 2, 3, and 4 boosters.

SDP4 is much less robust, and fails for higher and more eccentric orbits. Again, I've not done a careful survey of the matter, but inclination doesn't seem to matter much. I can get a decent fit for IMP-7, in a twelve-day, e=0.08 orbit, and for any object with a period of four days or less. But SDP4 usually fails miserably on objects with apogees beyond the moon.

  • 1
    $\begingroup$ The fitting you mention here is to reported observations, correct? I'm wondering if a simple state vector propagation with say only $J_2$ could be compared directly to SGP4 and SDP4 outputs based on TLEs that are chosen to match the state vectors. I'm not proposing that you do that of course because it's work. But if it could be scripted then a "data cube" of state vectors propagated for $a, \epsilon, i$ points could be generated and the space of $\text{rms}{}_{SDP4} \le \text{rms}{}_{SGP4}$ discovered? (State vectors would use ephemeris Sun, Earth and Moon positions) $\endgroup$
    – uhoh
    Commented May 30, 2021 at 1:30
  • 1
    $\begingroup$ Although, even for a single $\text{rms}$ value one might need to sample a variety epochs within a lunar month and combinations of $\Omega$ and $\omega$ which makes this more like a six than a three dimensional problem. $\endgroup$
    – uhoh
    Commented May 30, 2021 at 1:34
  • 1
    $\begingroup$ I found the deep space equations, now looking for additional explanations/insight for how they work. Textbook or scholarly discussion of equations used by the SDP4 part of SGP4 TLE propagators beyond Space Track Report #1? $\endgroup$
    – uhoh
    Commented May 30, 2021 at 3:02
  • 3
    $\begingroup$ I fit an orbit to observations, and then generate an ephemeris of state vectors and fit TLEs to that. You'll see that the TLEs will have comments such as "Worst residual: nn.nn km". That's relative to the state vector ephems for the particular time span (usually one day) to which they were fitted, and describe only the error of the TLEs relative to the computed state vector. Usually, the error in the state vector is less... but as described in the boilerplate at the top of the file, it may not be, if we didn't have many observations to work with. $\endgroup$
    – Bill Gray
    Commented May 30, 2021 at 19:30
  • 3
    $\begingroup$ I think the 'simple state vector propagation' would have to include more than J2. For these high-flying guys, J2 is less significant than lunar and solar perturbations. My sense is that SGP4/SDP4 actually does a good job of handling J2 and even J3 and J4, plus some lower harmonics... none of which (except J2) matter much for cislunar objects. SDP4 has primitive handling of lunisolar perturbations, good enough for 12 and 24-hour orbits, but insufficiently nuanced for week-long orbits. $\endgroup$
    – Bill Gray
    Commented May 30, 2021 at 19:33

The following is only a partial answer, but I will update as we make progress through this.

I believe the on-going discussion in the comments at For any state vector of a satellite at an arbitrary time T1, is there another state vector at a given time T2 that will result in the same orbit? is becoming too complex to keep it just at comments, so thought it might be better to go on from here (also, such discussion is probably more relevant in the original question).

As discussed in said comments, a possible way to tackle this question is to propagate the same initial state vector with SGP4, SDP4 and a high-precision numerical propagator (HPOP). The latter will be considered as the "true orbit", and the RMSD along propagation during 1 period will be calculated for both SGP4 and SDP4. Whichever comes closer to it is considered to perform better. By repeating this procedure across different values for the initial parameters, we can identify the region of parameter space where SGP4 outperforms SDP4 and vice versa.

A key aspect seems to obtain the starting point for HPOP. I thought the best way would be to propagate the provided mean orbital elements at time 0, which would result in Cartesian coordinates in TEME frame for position and velocity. These would then be converted to GCRF frame (for simplicity, let's assume always the same epoch, let's say 12 pm the 1st of January 2021, UTC time), which could be directly input into the HPOP.

I started doing so for two cases: eccentricity 0, and eccentricity 0.7, in both cases with a semi-major axis of 200 000 km, an inclination of 60 º and (mean) argument of perigee, longitude of the ascending node and mean anomaly of 0. Drag coefficient was also set to 0, although it should not make a difference at such high orbit.

I was surprised to see that the coordinates output by SGP4 and SDP4 at epoch were considerable different! This poses a problem as to how to choose the starting point for the HPOP. I have done a more systematic assessment by calculating the difference of the TEME coordinates output at epoch by SGP4 and SDP4 at different eccentricities and semi-major axes (all other parameters kept as described above). The following quick plot shows the results:

Difference of coordinates at epoch output by SGP4 and SDP4

As you can see, the differences become considerable at high orbits, particularly at high eccentricities, reaching even several tens of thousands of kilometers!

Any ideas about how to choose a good starting point for the HPOP to perform additional comparisons would be greatly appreciated.

Edit 1

As pointed out by @uhoh in the comments to the answers to the question, the best approach is probably to do the following for each point in the space of parameters to be analyzed:

  • Propagate the corresponding state vector with the high-precision numerical propagator (probably for 1 period)
  • Generate TLEs that, when propagated with SGP4 and SDP4, lead to a trajectory as close as possible to the trajectory obtained with the numerical propagator. Note 2 different TLEs would be generated, one that leads to the closest trajectory with SGP4, and another with SDP4
  • Having found the TLEs that lead to a trajectory as close as possible to that obtained with the numerical propagator, now we have starting points for each of the 3 propagators. These starting points would represent the same physical starting point. We can then propagate the 3 starting points, now for a time considerably longer than 1 period, and see, for each region of the parameter space, which one of either SGP4 or SDP4 deviate faster from the trajectory calculated with the high-precision orbital propagator.

I think the generation of optimal initial TLEs for SGP4 and SDP4 might be treated as an optimization problem, with the parameters to be optimized being the mean orbital elements that define the TLE. The target function to minimize would be a measurement of the deviation of the trajectory propagated with SGP4/SDP4 from the trajectory propagated with the HPOP. For example, possibly root-mean-square Euclidean distance (RMSD). Initial values can be easily obtained, for example by converting the GCRF position at epoch to osculating orbital elements and using these as starting values.

I have started to work in such direction, but have found something interesting. I did the following for an initial test:

  1. Generate a TLE with elements corresponding to a semi-major axis of 200,000 km, eccentricity 0.7, inclination 60º, and all other elements 0.
  2. Propagate it for a full period, approximately 14820 minutes, every 30 minutes
  3. Convert all output positions and velocities from TEME to GCRF.
  4. Take the position and velocity at epoch in GCRF and use it to propagate the trajectory for the same length of time and at the same time points with a high-precision numerical propagator (treating it as if it were a GPS block III satellite, using the physical parameters described here)
  5. We now have 2 series of GCRF coordinates at the same time points, one propagated with SGP4 and another one with HPOP. So I calculated the distance between each pair of points, and plotted it against time. Important notice: I am using my own (open-source) implementation of an HPOP here, so we might need to proceed with caution. Even though as far as I have tested the results are quite decent (achieving way higher accuracy than SGP4/SDP4 for GPS satellites and Planet Labs satellites after days of propagation), it probably still requires more testing. The result was the following:

enter image description here

Keep in mind this plot shows the divergence between SGP4 and HPOP (the latter of which we consider the "true trajectory") along 1 period. It can be easily seen that SGP4 starts to diverge massively from HPOP well before 1 orbital period. This creates a problem, since using RMSD between propagations along 1 orbital period as the target function to minimize to obtain an optimal TLE now becomes dominated by the very large distance between points after great divergence starts, therefore beating the original point of generating a TLE for SGP4 and SDP4 that leads to a trajectory as close as possible as that generated by HPOP at the early stages of propagation.

I believe a modification to the approach should be made. Either a shorter time should be used to calculate the RMSD that will be used as the minimization target to generate initial TLEs for both SGP4 and SDP4 (maybe, for example, up to 5000 minutes in this particular case?), or a different metric of difference between trajectories should be used. One that down weights the large differences seen towards the end of the orbital period.

Edit 2

I have performed the same comparison for a GEO satellite, with a period of around 1436 minutes, and the divergence is much lower along the full period. In this case, I have performed the same procedure using both SGP4 and SDP4. The comparison of each SGP4/SDP4 is done with a trajectory obtained with the HPOP from the ephemeris obtained at time 0 with each of them (i.e., not the same HPOP trajectory for both, although at this semimajor axis it does not make much difference). I am attaching the plot here for comparison:

enter image description here

As usual, any advice on what would be best would be very appreciated!

  • $\begingroup$ Comments are not for extended discussion; this conversation has been moved to chat. $\endgroup$
    – called2voyage
    Commented Dec 6, 2021 at 15:29

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.