satkit 0.22.0

Satellite Toolkit
Documentation
# References

The models, algorithms and constants in `satkit` are taken from the sources
below. Pages on this site cite them as *(Author Year, §section)*, linking to
the entry here; each entry gives the section, equation or algorithm numbers the
code follows where that is useful.

## Books

<a id="vallado2013"></a>
- **Vallado, D. A. (2013).** *Fundamentals of Astrodynamics and Applications*,
  4th ed. Microcosm Press, Hawthorne, CA. ISBN 978-1881883180. Companion
  software and errata: <https://celestrak.org/software/vallado-sw.php>.
  Used for: SGP4 reference implementation (the C++ code satkit's port follows),
  GMST (Algorithm 15, Eq. 3-45), IAU-76/FK5 reduction (§3.7, Eqs. 3-88 to
  3-90), TEME (§3.7.3), RSW/NTW frames (§3.3, Eq. 3-31), Kepler's equation
  (Algorithm 2), Sun position (Algorithm 29, §5.1.1), sunrise/sunset
  (Algorithm 30, §5.3.1), Moon position (Algorithm 31, §5.2.3), Hohmann
  transfer (§6.3), Lambert background (Ch. 7), TDB−TT (Eq. 3-50).

<a id="montenbruck2000"></a>
- **Montenbruck, O., & Gill, E. (2000).** *Satellite Orbits: Models, Methods,
  Applications*. Springer, Berlin. <https://doi.org/10.1007/978-3-642-58351-3>.
  Used for: the force-model structure and the forces-vs-altitude figure
  (§3.1, Fig. 3.1), spherical-harmonic gravity (§3.2, Eqs. 3.28–3.33),
  third-body point-mass attraction (§3.3.1, Eq. 3.37), solar radiation pressure
  and the conical shadow model (§3.4, Eqs. 3.69–3.75, §3.4.2), atmospheric drag
  (§3.5), variational equations and the state transition matrix (§7.1–7.2,
  Eqs. 7.42, 7.75), covariance mapping (§8.1).

<a id="battin1999"></a>
- **Battin, R. H. (1999).** *An Introduction to the Mathematics and Methods of
  Astrodynamics*, revised ed. AIAA Education Series.
  <https://doi.org/10.2514/4.861543>. Used for: the hypergeometric-series
  form of the Lambert time-of-flight equation near the parabolic boundary.

<a id="hairer1996"></a>
- **Hairer, E., & Wanner, G. (1996).** *Solving Ordinary Differential Equations
  II: Stiff and Differential-Algebraic Problems*, 2nd ed. Springer.
  <https://doi.org/10.1007/978-3-642-05221-7>. Used for: the RODAS4 Rosenbrock
  integrator (§IV.7).

<a id="tapley2004"></a>
- **Tapley, B. D., Schutz, B. E., & Born, G. H. (2004).** *Statistical Orbit
  Determination*. Elsevier Academic Press.
  <https://doi.org/10.1016/B978-0-12-683630-1.X5019-X>. Used for: batch
  least-squares orbit determination and covariance propagation in the
  tutorials (§4.2–4.3).

<a id="markley2014"></a>
- **Markley, F. L., & Crassidis, J. L. (2014).** *Fundamentals of Spacecraft
  Attitude Determination and Control*. Springer.
  <https://doi.org/10.1007/978-1-4939-0802-8>. Used for: quaternion and
  local-vertical/local-horizontal frame conventions.

## Standards and conventions

<a id="petit2010"></a>
- **Petit, G., & Luzum, B. (eds.) (2010).** *IERS Conventions (2010)*. IERS
  Technical Note No. 36, Verlag des Bundesamts für Kartographie und Geodäsie,
  Frankfurt am Main. ISBN 3-89888-989-6.
  <https://iers-conventions.obspm.fr/content/tn36.pdf>. Used for: the
  ITRF↔GCRF reduction (Ch. 5: polar motion Eq. 5.3, Earth rotation angle
  Eq. 5.15, CIP X/Y and CIO locator series Tables 5.2a/5.2b/5.2d, frame bias
  §5.5.4 and Eq. 5.36), solid Earth tides (§6.2.1 Step 1, Eqs. 6.6–6.7,
  Table 6.3 Love numbers; §6.2.2 Step 2), time scales (Ch. 10, §10.1 TDB−TT),
  and the relativistic acceleration (§10.3, Eq. 10.12).

<a id="ccsds502"></a>
- **CCSDS (2023).** *Orbit Data Messages*. Recommended Standard CCSDS
  502.0-B-3 (Blue Book), Consultative Committee for Space Data Systems,
  April 2023. <https://ccsds.org/Pubs/502x0b3e1.pdf>. Used for: the Orbital
  Mean-Element Message (OMM) format and the RTN reference frame used for
  covariance and maneuver components.

<a id="nga2014"></a>
- **NGA (2014).** *Department of Defense World Geodetic System 1984: Its
  Definition and Relationships with Local Geodetic Systems*, Version 1.0.0,
  NGA.STND.0036_1.0.0_WGS84, National Geospatial-Intelligence Agency.
  <https://nsgreg.nga.mil/doc/view?i=4085>. Used for: the WGS 84 ellipsoid
  and defining parameters ($GM$, $\omega_\oplus$, $a$, $f$).

<a id="itu460"></a>
- **ITU-R (2002).** *Standard-frequency and time-signal emissions*,
  Recommendation ITU-R TF.460-6.
  <https://www.itu.int/rec/R-REC-TF.460-6-200202-I/en>. Used for: the
  definition of UTC and leap seconds.

<a id="bulletinc"></a>
- **IERS Bulletin C** — leap-second announcements (Earth Orientation Center,
  Observatoire de Paris). <https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat>.
  Source of the TAI−UTC table compiled into `satkit`.

## Papers and reports

<a id="hoots1980"></a>
- **Hoots, F. R., & Roehrich, R. L. (1980).** *Models for Propagation of NORAD
  Element Sets*. Spacetrack Report No. 3, Aerospace Defense Command (reprinted
  by T. S. Kelso, 1988). <https://celestrak.org/NORAD/documentation/spacetrk.pdf>.
  The original SGP4/SDP4 description.

<a id="vallado2006"></a>
- **Vallado, D. A., Crawford, P., Hujsak, R., & Kelso, T. S. (2006).**
  "Revisiting Spacetrack Report #3." AIAA 2006-6753, AIAA/AAS Astrodynamics
  Specialist Conference, Keystone, CO. <https://doi.org/10.2514/6.2006-6753>.
  <https://celestrak.org/publications/AIAA/2006-6753/AIAA-2006-6753-Rev3.pdf>.
  The modern SGP4 reference: the algorithm, the TEME frame, and the test
  vectors satkit's port is verified against.

<a id="vallado2008"></a>
- **Vallado, D. A., & Crawford, P. (2008).** "SGP4 Orbit Determination."
  AIAA 2008-6770, AIAA/AAS Astrodynamics Specialist Conference, Honolulu, HI.
  <https://doi.org/10.2514/6.2008-6770>. Used for: fitting TLEs to state
  vectors (`TLE.fit_from_states`).

<a id="picone2002"></a>
- **Picone, J. M., Hedin, A. E., Drob, D. P., & Aikin, A. C. (2002).**
  "NRLMSISE-00 empirical model of the atmosphere: Statistical comparisons and
  scientific issues." *Journal of Geophysical Research: Space Physics*,
  107(A12), 1468. <https://doi.org/10.1029/2002JA009430>. satkit's density
  model is a Rust port of Dominik Brodowski's C implementation of NRLMSISE-00.

<a id="park2021"></a>
- **Park, R. S., Folkner, W. M., Williams, J. G., & Boggs, D. H. (2021).**
  "The JPL Planetary and Lunar Ephemerides DE440 and DE441." *The Astronomical
  Journal*, 161(3), 105. <https://doi.org/10.3847/1538-3881/abd414>.

<a id="folkner2009"></a>
- **Folkner, W. M., Williams, J. G., & Boggs, D. H. (2009).** "The Planetary
  and Lunar Ephemeris DE 421." IPN Progress Report 42-178, Jet Propulsion
  Laboratory. <https://ipnpr.jpl.nasa.gov/progress_report/42-178/178C.pdf>.

<a id="lemoine1998"></a>
- **Lemoine, F. G., et al. (1998).** *The Development of the Joint NASA GSFC
  and the National Imagery and Mapping Agency (NIMA) Geopotential Model
  EGM96*. NASA/TP-1998-206861. <https://ntrs.nasa.gov/citations/19980218814>.

<a id="tapley1996"></a>
- **Tapley, B. D., et al. (1996).** "The Joint Gravity Model 3." *Journal of
  Geophysical Research: Solid Earth*, 101(B12), 28029–28049.
  <https://doi.org/10.1029/96JB01645>.

<a id="nerem1994"></a>
- **Nerem, R. S., et al. (1994).** "Gravity model development for
  TOPEX/POSEIDON: Joint Gravity Models 1 and 2." *Journal of Geophysical
  Research: Oceans*, 99(C12), 24421–24447. <https://doi.org/10.1029/94JC01376>.

<a id="akyilmaz2016"></a>
- **Akyilmaz, O., et al. (2016).** *ITU_GRACE16: The global gravity field
  model including GRACE data up to degree and order 180 of ITU and other
  collaborating institutions*. GFZ Data Services.
  <https://doi.org/10.5880/icgem.2016.006>.

<a id="ince2019"></a>
- **Ince, E. S., et al. (2019).** "ICGEM – 15 years of successful collection
  and distribution of global gravitational models, associated services, and
  future plans." *Earth System Science Data*, 11, 647–674.
  <https://doi.org/10.5194/essd-11-647-2019>. The archive the gravity
  coefficient files are taken from: <https://icgem.gfz.de/>.

<a id="berry2004"></a>
- **Berry, M. M., & Healy, L. M. (2004).** "Implementation of Gauss-Jackson
  Integration for Orbit Propagation." *The Journal of the Astronautical
  Sciences*, 52(3), 331–357. <https://drum.lib.umd.edu/handle/1903/2202>.

<a id="verner2010"></a>
- **Verner, J. H. (2010).** "Numerically optimal Runge–Kutta pairs with
  interpolants." *Numerical Algorithms*, 53, 383–396.
  <https://doi.org/10.1007/s11075-009-9290-3>. Coefficient sets from
  <https://www.sfu.ca/~jverner/>: `RKV98.IIa.Efficient`, `RKV87.IIa.Robust`
  and `RKV65.IIIXb.Efficient` (via the `numeris` crate).

<a id="tsitouras2011"></a>
- **Tsitouras, Ch. (2011).** "Runge–Kutta pairs of order 5(4) satisfying only
  the first column simplifying assumption." *Computers & Mathematics with
  Applications*, 62(2), 770–775. <https://doi.org/10.1016/j.camwa.2011.06.002>.

<a id="izzo2015"></a>
- **Izzo, D. (2015).** "Revisiting Lambert's problem." *Celestial Mechanics
  and Dynamical Astronomy*, 121(1), 1–15.
  <https://doi.org/10.1007/s10569-014-9587-y>.

<a id="lancaster1969"></a>
- **Lancaster, E. R., & Blanchard, R. C. (1969).** *A Unified Form of
  Lambert's Theorem*. NASA Technical Note D-5368.
  <https://ntrs.nasa.gov/citations/19690027552>.

<a id="vincenty1975"></a>
- **Vincenty, T. (1975).** "Direct and Inverse Solutions of Geodesics on the
  Ellipsoid with Application of Nested Equations." *Survey Review*, 23(176),
  88–93. <https://doi.org/10.1179/sre.1975.23.176.88>.

<a id="bowring1976"></a>
- **Bowring, B. R. (1976).** "Transformation from Spatial to Geographical
  Coordinates." *Survey Review*, 23(181), 323–327.
  <https://doi.org/10.1179/sre.1976.23.181.323>. Used for: the
  Cartesian → geodetic conversion.

<a id="shoemake1985"></a>
- **Shoemake, K. (1985).** "Animating rotation with quaternion curves."
  *SIGGRAPH '85*, 245–254. <https://doi.org/10.1145/325334.325242>. Used for:
  spherical linear interpolation (SLERP).

<a id="clohessy1960"></a>
- **Clohessy, W. H., & Wiltshire, R. S. (1960).** "Terminal Guidance System
  for Satellite Rendezvous." *Journal of the Aerospace Sciences*, 27(9),
  653–658. <https://doi.org/10.2514/8.8704>. Origin of the RIC
  (radial / in-track / cross-track) relative-motion frame.

<a id="marquardt1963"></a>
- **Marquardt, D. W. (1963).** "An Algorithm for Least-Squares Estimation of
  Nonlinear Parameters." *Journal of the Society for Industrial and Applied
  Mathematics*, 11(2), 431–441. <https://doi.org/10.1137/0111030>.

<a id="nelder1965"></a>
- **Nelder, J. A., & Mead, R. (1965).** "A Simplex Method for Function
  Minimization." *The Computer Journal*, 7(4), 308–313.
  <https://doi.org/10.1093/comjnl/7.4.308>.

<a id="danby1987"></a>
- **Danby, J. M. A. (1987).** "The solution of Kepler's equation, III."
  *Celestial Mechanics*, 40, 303–312. <https://doi.org/10.1007/BF01235847>.
  Used for: the starting value of the Kepler-equation iteration.

<a id="wallace2006"></a>
- **Wallace, P. T., & Capitaine, N. (2006).** "Precession-nutation procedures
  consistent with IAU 2006 resolutions." *Astronomy & Astrophysics*, 459(3),
  981–985. <https://doi.org/10.1051/0004-6361:20065897>.

<a id="mathews2002"></a>
- **Mathews, P. M., Herring, T. A., & Buffett, B. A. (2002).** "Modeling of
  nutation and precession: New nutation series for nonrigid Earth and insights
  into the Earth's interior." *Journal of Geophysical Research: Solid Earth*,
  107(B4), 2068. <https://doi.org/10.1029/2001JB000390>. The IAU 2000A
  nutation model.

<a id="seidelmann1982"></a>
- **Seidelmann, P. K. (1982).** "1980 IAU Theory of Nutation: The final report
  of the IAU Working Group on Nutation." *Celestial Mechanics*, 27, 79–106.
  <https://doi.org/10.1007/BF01228952>. The nutation series used by the
  IAU-76/FK5 (`_approx`) reduction and by TEME.

<a id="charlot2020"></a>
- **Charlot, P., et al. (2020).** "The third realization of the International
  Celestial Reference Frame by very long baseline interferometry." *Astronomy
  & Astrophysics*, 644, A159. <https://doi.org/10.1051/0004-6361/202038368>.

<a id="altamimi2023"></a>
- **Altamimi, Z., Rebischung, P., Collilieux, X., Métivier, L., & Chanard, K.
  (2023).** "ITRF2020: an augmented reference frame refining the modeling of
  nonlinear station motions." *Journal of Geodesy*, 97, 47.
  <https://doi.org/10.1007/s00190-023-01738-w>.

<a id="standish"></a>
- **Standish, E. M., & Williams, J. G.** "Keplerian Elements for Approximate
  Positions of the Major Planets." JPL Solar System Dynamics.
  <https://ssd.jpl.nasa.gov/planets/approx_pos.html>. Used for: the
  low-precision planetary ephemerides (`satkit.planets`).

<a id="gmatspec"></a>
- **NASA Goddard Space Flight Center.** *General Mission Analysis Tool (GMAT)
  Mathematical Specifications*, distributed with GMAT (R2026A:
  `docs/GMATMathSpec.pdf`); an early draft is on NTRS at
  <https://ntrs.nasa.gov/citations/20080031744>. Used for: the GMAT
  configuration of the validation corpus (coordinate systems, §4.1.1 Table 4.1
  and §4.2.6 relativistic terms).

<a id="hughes2014"></a>
- **Hughes, S. P., Qureshi, R. H., Cooley, S. D., & Parker, J. J. (2014).**
  "Verification and Validation of the General Mission Analysis Tool (GMAT)."
  AIAA 2014-4151, AIAA/AAS Astrodynamics Specialist Conference.
  <https://doi.org/10.2514/6.2014-4151>.

<a id="rodriguez2012"></a>
- **Rodriguez-Solano, C. J., Hugentobler, U., & Steigenberger, P. (2012).**
  "Adjustable box-wing model for solar radiation pressure impacting GPS
  satellites." *Advances in Space Research*, 49(7), 1113–1128.
  <https://doi.org/10.1016/j.asr.2012.01.016>. The box-wing SRP model
  referred to (but not implemented) in the force-model guide.

<a id="beutler1994"></a>
- **Beutler, G., Brockmann, E., Gurtner, W., Hugentobler, U., Mervart, L.,
  Rothacher, M., & Verdun, A. (1994).** "Extended orbit modeling techniques at
  the CODE processing center of the International GPS Service for Geodynamics
  (IGS): theory and initial results." *Manuscripta Geodaetica*, 19, 367–386.
  The CODE empirical solar-radiation-pressure parameterization.

<a id="springer1999"></a>
- **Springer, T. A., Beutler, G., & Rothacher, M. (1999).** "A new solar
  radiation pressure model for GPS satellites." *GPS Solutions*, 2(3), 50–62.
  <https://doi.org/10.1007/PL00012757>. The reduced 5-parameter ECOM.

<a id="arnold2015"></a>
- **Arnold, D., Meindl, M., Beutler, G., Dach, R., Schaer, S., Lutz, S.,
  Prange, L., Sośnica, K., Mervart, L., & Jäggi, A. (2015).** "CODE's new
  solar radiation pressure model for GNSS orbit determination." *Journal of
  Geodesy*, 89(8), 775–791. <https://doi.org/10.1007/s00190-015-0814-4>.
  ECOM2 (even harmonics in Δu from orbit noon).

<a id="dach2015"></a>
- **Dach, R., Lutz, S., Walser, P., & Fridez, P. (eds.) (2015).** *Bernese
  GNSS Software Version 5.2*. Astronomical Institute, University of Bern.
  <https://www.bernese.unibe.ch/docs/DOCU52.pdf>. §2.2.2.3 restates the ECOM
  equations and the shadow convention used by CODE.

<a id="duan2021"></a>
- **Duan, B., & Hugentobler, U. (2021).** "Enhanced solar radiation pressure
  model for GPS satellites considering various physical effects." *GPS
  Solutions*, 25, 42. <https://doi.org/10.1007/s10291-020-01073-z>. 24-hour
  GPS prediction accuracy quoted on the ECOM page.

<a id="hilla2016"></a>
- **Hilla, S. (2016).** *The Extended Standard Product 3 Orbit Format (SP3-d)*.
  International GNSS Service. <https://files.igs.org/pub/data/format/sp3d.pdf>.
  The precise-orbit file format read in the GPS tutorials and tests.

## Data sources

<a id="celestrak-spacedata"></a>
- **CelesTrak Space Data**<https://celestrak.org/SpaceData/>. Daily
  `EOP-All.csv` (Earth orientation parameters, from IERS Bulletin A /
  finals) and `SW-All.csv` (space weather: F10.7, Ap; from GFZ and NOAA).
- **NOAA/SWPC predicted solar cycle**  <https://services.swpc.noaa.gov/json/solar-cycle/predicted-solar-cycle.json>,
  the F10.7 forecast used when propagating beyond the space-weather record.
- **NAIF generic kernels**  <https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/>
  (`de440.bsp`, used by GMAT in the validation corpus). satkit itself reads
  JPL's binary DE files (`linux_p1550p2650.440`, `lnxp1900p2053.421`).
- **ICGEM**<https://icgem.gfz.de/> (Ince et al. 2019): source of the
  `.gfc` gravity-coefficient files.
- **NRLMSISE-00 at CCMC**<https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/>:
  reference implementation and documentation of the density model.

## Verification

The Rust and Python test suites check the implementation against:

- **SGP4** — the test vectors distributed with the reference C++ code of
  [Vallado et al. (2006)]#vallado2006.
- **JPL ephemerides** — JPL's `testpo` Chebyshev-interpolation test vectors
  for DE440/DE441 ([Park et al. 2021]#park2021).
- **Frame transforms and Keplerian elements** — worked examples from
  [Vallado (2013)]#vallado2013.
- **Gravity** — reference values from [ICGEM]#ince2019.
- **Numerical propagation** — ESA/IGS precise GPS orbits in
  [SP3-d]#hilla2016 format, and the NASA GMAT reference corpus described in
  [Validation: GMAT Comparison]gmat_validation.md.