Skip to content

Drag

Atmospheric drag acceleration model.

Computes the non-conservative acceleration due to atmospheric drag on a spacecraft, accounting for the relative velocity between the spacecraft and the co-rotating atmosphere.

All inputs and outputs use SI base units (metres, metres/second, metres/second squared, kg, kg/m^3).

References
  1. O. Montenbruck and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012.

accel_drag(x, density, mass, area, cd, T)

Acceleration due to atmospheric drag.

Transforms the state to the ECEF (ITRF) frame via T, computes the velocity relative to the co-rotating atmosphere, and returns the drag acceleration in the inertial (ECI) frame.

Parameters:

Name Type Description Default
x ArrayLike

6-element inertial state [r, v] [m; m/s].

required
density float

Atmospheric density [kg/m^3].

required
mass float

Spacecraft mass [kg].

required
area float

Wind-facing cross-sectional area [m^2].

required
cd float

Coefficient of drag [dimensionless].

required
T ArrayLike

3x3 rotation matrix from ECI to ECEF (ITRF).

required

Returns:

Type Description
Array

Drag acceleration in ECI [m/s^2], shape (3,).

Examples:

import jax.numpy as jnp
from astrojax.orbit_dynamics import accel_drag
x = jnp.array([6878e3, 0.0, 0.0, 0.0, 7500.0, 0.0])
a = accel_drag(x, 1e-12, 1000.0, 1.0, 2.0, jnp.eye(3))