Skip to content

Vallado (2013): Fundamentals of Astrodynamics

This is not a primary research document. Every other page in the foundations section covers a single paper that contributes one piece of the SGP4 puzzle. This textbook is different — it is the pedagogical synthesis that explains how all those pieces fit together.

Vallado is uniquely positioned to write it. He is the lead author of both the Rev-1 modernization paper (AIAA 2006-6753-Rev1) and the SGP4 Orbit Determination paper (AIAA 2008-6770). He served as Senior Research Astrodynamicist at AGI (now Ansys), retired USAF Lt. Colonel, with degrees in astrodynamics engineering (USAFA), astronautical engineering (AFIT), and systems management (USC). The textbook provides the theoretical backdrop that those papers assume the reader already understands: VOP formulations, Brouwer’s canonical transformations, the perturbation hierarchy, and the coordinate-frame infrastructure surrounding TEME.

What the textbook uniquely contributes is context that none of the primary papers provide on their own — the relationships between the theories, the historical decisions that shaped the operational system, and several critical warnings about element compatibility that are not documented anywhere else in the public literature.

Ch.TitlePagesSGP4 Relevance
1Equations of Motion1—40Foundation: two-body, n-body
2Kepler’s Equation and Kepler’s Problem41—127TLE format (Sec. 2.4.2), mean elements, B*, Delaunay/Poincare elements
3Coordinate and Time Systems129—239TEME frame (Sec. 3.7.4), IAU-2010 reductions, WGS-84, canonical units
4Observations241—275Sensor systems, observation types
5Celestial Phenomena277—315Sun/Moon position vectors (used by SDP4)
6Orbital Maneuvering317—421Hohmann, relative motion
7Initial Orbit Determination423—513Gauss, Lambert, Gibbs methods
8Special Perturbation Techniques517—604Numerical integration, gravity field, atmospheric drag models, third-body, solar radiation
9General Perturbation Techniques609—728Core SGP4 chapter: VOP, Brouwer, Kozai, SGP4 history, DSST
10Orbit Determination and Estimation731—833Differential correction, Kalman filtering, relates to AIAA 2008-6770
11Mission Analysis837—936Satellite look angles, close approach
12Interplanetary Mission Analysis941—987Patched conics, CRTBP

79 numbered algorithms provide pseudocode implementations throughout. Appendix D tabulates gravitational coefficients, nutation coefficients, and data sources.

The textbook surfaces several facts that are buried in footnotes, scattered across chapters, or simply absent from the primary papers. These are the findings that change how you use TLEs.

The footnote on p. 233 states this directly. The True Equator, Mean Equinox frame that SGP4 outputs is “actually a misnomer” — the true equator correctly implies the CIP as Z-axis, but the X-axis is not the conventional mean equinox. It relates to the “uniform equinox” of Herrick (1971) and Seidelmann (1992).

No authoritative specification document exists for TEME. The 4-term nutation approximation used internally by SGP4 is inferred from Koskela (1967), which states that coefficients greater than 0.2 arcseconds are included. This inference is consistent with the original implementation, but it is an inference — not a specification.

Table 3-6 quantifies the cost: TEME position differs from GCRF by 437 m and velocity by 264 mm/s. That is the frame-conversion error alone, on top of any SGP4 propagation error. Computing nutation at the TLE epoch instead of at propagation time introduces an additional 23.6 m error in just 3 days.

Despite its definition as B=12cDAρoR/mB^* = \frac{1}{2} c_D A \rho_o R_\oplus / m, the textbook notes that B* is “really an arbitrary free parameter in differential correction.” It absorbs modeling errors from all sources — maneuvers, solar pressure, gravity mismodeling — not just atmospheric drag. It can appear negative. It may be “completely unrelated to drag effects.”

The conversion between B* and ballistic coefficient uses BC=1/(12.741621B)BC = 1/(12.741621 \cdot B^*) kg/m2^2 with R=6378.135R_\oplus = 6378.135 km from Hoots and Roehrich (1980). But this conversion only has physical meaning when B* is actually representing drag, which is not guaranteed.

Kozai and Brouwer Mean Elements Are Not Interchangeable

Section titled “Kozai and Brouwer Mean Elements Are Not Interchangeable”

This is the most consequential warning in the textbook for anyone working with TLEs. Published TLE sets use Kozai mean elements. AFSPC uses Brouwer mean elements internally. The textbook’s p. 106 footnote: “Air Force Space Command uses nˉ\bar{n} internally as a Brouwer value. However, to maintain compatibility with older theories, the published TLE set converts nˉ\bar{n} to a Kozai value.”

The two theories use different averaging methods. Kozai uses Lagrange VOP with ad hoc averaging. Brouwer uses Delaunay elements and canonical transformations. Both produce “mean elements,” but the secular rates for Ω˙\dot{\Omega} and ω˙\dot{\omega} at the J22J_2^2 level are “significantly different” between the two despite both being formally correct. The textbook puts it bluntly: “three different expressions! What’s worse, they’re all correct.”

STR#3 presented five propagation models: SGP, SGP4, SDP4, SGP8, and SDP8. The textbook states there is “no evidence to suggest that SGP8/SDP8 was implemented for operational TLE formation” (p. 697). The entire satellite catalog has always been SGP4/SDP4. The SGP8/SDP8 models addressed orbital decay and reentry scenarios but never replaced SGP4/SDP4 for routine catalog maintenance.

The US Navy’s PPT3 theory (Cefola and Fonte, 1996) uses a similar Brouwer-based approach but incorporates tesseral and sectorial m-daily effects that SGP4 omits entirely. This improves average LEO accuracy from ~1 km (SGP4) to ~200—300 m — a 3—5x improvement using the same general perturbation framework. Both SGP4 and PPT3 output in the TEME coordinate system.

The ndot/2 and nddot/6 values in the TLE format are already divided by 2 and 6 respectively. The textbook emphasizes: “Don’t divide twice!” (p. 691). This is exactly the kind of implementation trap that the primary papers do not call out explicitly. The mean anomaly update uses:

M=M0+n0Δt+n˙02Δt2+n¨06Δt3M = M_0 + n_0 \Delta t + \frac{\dot{n}_0}{2}\Delta t^2 + \frac{\ddot{n}_0}{6}\Delta t^3

where the ndot/2 and nddot/6 values from the TLE are plugged in directly as the coefficients of Δt2\Delta t^2 and Δt3\Delta t^3 — no further division needed.

Chapter 9 presents SGP4 as one specific instantiation of a general perturbation framework. Understanding this hierarchy makes clear what SGP4 includes, what it approximates, and what it ignores entirely.

The framework proceeds in five stages:

  1. Two-body problem (Chapters 1—2): the unperturbed Keplerian orbit that serves as the reference solution
  2. VOP equations (Sec. 9.3): Lagrangian VOP for conservative forces (gravity) via the disturbing potential RR and Lagrange brackets; Gaussian VOP for nonconservative forces (drag) via RSW decomposition
  3. Method of perturbations (Sec. 9.2): solutions developed as power series in small parameters (J2J_2, etc.), where JiO(J22)J_i \approx O(J_2^2) for i=3,4,5i = 3, 4, 5 explains why J22J_2^2 terms appear alongside J3J_3J5J_5 terms
  4. Specific force models: geopotential (J2J_2J5J_5 zonals for SGP4; full spherical harmonics for numerical methods), drag (static exponential for SGP4; Jacchia-Roberts or NRLMSISE for high-fidelity), third-body (simplified Sun/Moon for SDP4; full ephemerides for numerical)
  5. Different solution methods yield different “mean” elements: Kozai (ad hoc averaging, published in TLEs), Brouwer (canonical transformations, used internally by AFSPC), DSST (generalized averaging, available from Orekit)

This hierarchy makes explicit what the primary papers only imply: SGP4 is a truncated, simplified instantiation of a much larger theoretical framework, and every simplification carries a specific accuracy cost. The ~1 km accuracy at TLE epoch is not a failure of implementation but the expected result of the theory’s deliberate tradeoffs — low computation cost in exchange for reduced fidelity.

The textbook references but does not reproduce the STR#3 FORTRAN source code. For the actual implementation, equation-to-FORTRAN mappings, and compilation notes, see the STR#3 transcription and the annotated FORTRAN source. For the corrected algorithms and 518 test vectors, see Rev-1.