Skip to content

Atmospheric Drag

Atmospheric drag acceleration calculations.

Note

For conceptual explanations and examples, see Atmospheric Drag in the Learn section.

Drag Acceleration

accel_drag builtin

accel_drag(x_object: ndarray, density: float, mass: float, area: float, drag_coefficient: float, T: ndarray) -> ndarray

Compute acceleration due to atmospheric drag.

Parameters:

Name Type Description Default
x_object ndarray

Satellite state vector in inertial frame. Units: [m; m/s]

required
density float

Atmospheric density. Units: (kg/m³)

required
mass float

Spacecraft mass. Units: (kg)

required
area float

Wind-facing cross-sectional area. Units: (m²)

required
drag_coefficient float

Coefficient of drag (dimensionless)

required
T ndarray

Rotation matrix from inertial to true-of-date frame (3x3)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to drag. Units: (m/s²)

Example
1
2
3
4
5
6
import brahe as bh
import numpy as np

x_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0, 0.0, 7500.0, 0.0])
density = 1.0e-12
a_drag = bh.accel_drag(x_object, density, 1000.0, 1.0, 2.3, np.eye(3))

Arbitrary Central Body

accel_drag_for_body builtin

accel_drag_for_body(x_object: ndarray, density: float, mass: float, area: float, drag_coefficient: float, T: ndarray, omega: Union[ndarray, List]) -> ndarray

Compute acceleration due to atmospheric drag about an arbitrary central body, using that body's atmospheric co-rotation rate.

Generalizes accel_drag to non-Earth central bodies. accel_drag is equivalent to calling this with Earth's spin vector [0, 0, OMEGA_EARTH].

Parameters:

Name Type Description Default
x_object ndarray

Satellite state vector in the central body's inertial frame. Units: [m; m/s]

required
density float

Atmospheric density. Units: (kg/m³)

required
mass float

Spacecraft mass. Units: (kg)

required
area float

Wind-facing cross-sectional area. Units: (m²)

required
drag_coefficient float

Coefficient of drag (dimensionless)

required
T ndarray

Rotation matrix from inertial to body-fixed (true-of-date) frame (3x3)

required
omega ndarray or list

Body-fixed axial spin vector of the central body. Units: (rad/s)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to drag. Units: (m/s²)

Example
1
2
3
4
5
6
7
8
import brahe as bh
import numpy as np

x_object = np.array([bh.R_MOON + 100e3, 0.0, 0.0, 0.0, 1600.0, 0.0])
density = 1.0e-14
a_drag = bh.accel_drag_for_body(
    x_object, density, 1000.0, 1.0, 2.3, np.eye(3), [0.0, 0.0, bh.OMEGA_MOON]
)

See Also