Skip to content

Earth Gravity Models

Spherical-harmonic Earth gravity (Montenbruck & Gill 2000, ยง3.2, Eq. 3.33) from the ICGEM coefficient files (Ince et al. 2019) of EGM96 (Lemoine et al. 1998), EGM2008 (Pavlis et al. 2012), JGM-2 (Nerem et al. 1994), JGM-3 (Tapley et al. 1996) and ITU_GRACE16 (Akyilmaz et al. 2016; downloaded on first use). The tide system of each model and how the solid-tide correction accounts for it are described in the force models guide.

gravmodel

Earth gravity models available for use

For details, see: http://icgem.gfz-potsdam.de/

egm96, egm2008, jgm2 and jgm3 are compiled into satkit (to degree 70) and need no data directory or network; itugrace16 is downloaded on first use. Each model's tide system (tide-free or zero-tide C20) is read when it is loaded and the propagator's tidemodel.solid_step1 correction accounts for it, so any model can be combined with any tide model without double-counting the permanent tide.

jgm3 class-attribute

The "JGM3" gravity model, Tapley et al. (1996). Zero-tide C20. Compiled in.

jgm2 class-attribute

The "JGM2" gravity model, Nerem et al. (1994). Tide-free C20. Compiled in.

egm96 class-attribute

The "EGM96" gravity model, Lemoine et al. (1998). Tide-free C20. Compiled in (truncated to degree 70).

itugrace16 class-attribute

The ITU_GRACE16 gravity model, Akyilmaz et al. (2016), a GRACE-only satellite solution. Zero-tide C20. Licensed CC BY 4.0, so it is not compiled in: the coefficient file (1.8 MB) is downloaded into the data directory on first use, and selecting it offline raises RuntimeError. Results derived from it should cite the model.

egm2008 class-attribute

The "EGM2008" gravity model, Pavlis et al. (2012). Tide-free C20. Compiled in (truncated to degree 70). Default for the orbit propagator.

gravity(pos, *, model=..., degree=6, order=None)

Return acceleration due to Earth gravity at the input position

Parameters:

Name Type Description Default
pos list[float] | itrfcoord | ArrayLike[float]

Position as ITRF coordinate or numpy 3-vector representing ITRF position in meters

required

Other Parameters:

Name Type Description
model gravmodel

The gravity model to use. Default is gravmodel.egm2008

degree int

Maximum degree of gravity model to use. Default is 6, maximum is 70

order int

Maximum order of gravity model to use. Default is same as degree

Returns:

Type Description
NDArray[float64]

acceleration in m/s^2 in the International Terrestrial Reference Frame (ITRF)

Notes
  • For details of calculation, see Chapter 3.2 of: "Satellite Orbits: Models, Methods, Applications", O. Montenbruck and E. Gill, Springer, 2000 (https://doi.org/10.1007/978-3-642-58351-3).
Example
coord = satkit.itrfcoord(latitude_deg=42.44, longitude_deg=-71.15, altitude=0)
accel = satkit.gravity(coord)
print(accel)
# array with acceleration in m/s^2 in ITRF

gravity_and_partials(pos, *, model=..., degree=6, order=None)

Gravity and partial derivatives of gravity with respect to Cartesian coordinates

Parameters:

Name Type Description Default
pos itrfcoord | ArrayLike[float]

Position as ITRF coordinate or numpy 3-vector representing ITRF position in meters

required

Other Parameters:

Name Type Description
model gravmodel

The gravity model to use. Default is gravmodel.egm2008

degree int

Maximum degree of gravity model to use. Default is 6, maximum is 70

order int

Maximum order of gravity model to use. Default is same as degree

Returns:

Type Description
tuple[NDArray[float64], NDArray[float64]]

acceleration in m/s^2 and partial derivative of acceleration with respect to ITRF Cartesian coordinate in m/s^2 / m

For details of calculation, see Chapter 3.2 of: "Satellite Orbits: Models, Methods, Applications", O. Montenbruck and E. Gill, Springer, 2000 (https://doi.org/10.1007/978-3-642-58351-3).