Skip to content

Config

Configuration dataclasses for composable orbit dynamics.

Provides :class:SpacecraftParams for physical spacecraft properties and :class:ForceModelConfig for selecting which perturbation forces to include in an orbit propagation. Configuration is static — Python if branches on boolean toggles are resolved at JAX trace time, producing a single optimized computation graph with no runtime branching.

ForceModelConfig dataclass

Configuration for composable orbit dynamics.

Selects which perturbation forces to include in the dynamics closure returned by :func:~astrojax.orbit_dynamics.factory.create_orbit_dynamics.

Parameters:

Name Type Description Default
gravity_type str

"point_mass" or "spherical_harmonics".

'point_mass'
gravity_model GravityModel | None

A :class:GravityModel instance. Required when gravity_type is "spherical_harmonics".

None
gravity_degree int

Maximum degree for spherical harmonic evaluation.

20
gravity_order int

Maximum order for spherical harmonic evaluation.

20
drag bool

Enable atmospheric drag.

False
density_model str

Atmospheric density model — "harris_priester" or "nrlmsise00". Only used when drag is True.

'harris_priester'
srp bool

Enable solar radiation pressure.

False
third_body_sun bool

Enable Sun gravitational perturbation.

False
third_body_moon bool

Enable Moon gravitational perturbation.

False
eclipse_model str

Shadow model for SRP — "conical", "cylindrical", or "none".

'conical'
spacecraft SpacecraftParams

Spacecraft physical properties.

SpacecraftParams()

Examples:

from astrojax.orbit_dynamics.config import ForceModelConfig
config = ForceModelConfig()  # point-mass only
config.gravity_type

geo_default(gravity_model=None) staticmethod

Preset: typical GEO force model.

Includes 8x8 spherical harmonic gravity, SRP, and Sun/Moon third-body perturbations. No atmospheric drag (altitude too high for Harris-Priester).

Parameters:

Name Type Description Default
gravity_model GravityModel | None

Optional pre-loaded gravity model.

None

Returns:

Name Type Description
ForceModelConfig ForceModelConfig

GEO-appropriate configuration.

Examples:

config = ForceModelConfig.geo_default()
config.drag

leo_default(gravity_model=None, density_model='harris_priester') staticmethod

Preset: typical LEO force model.

Includes 20x20 spherical harmonic gravity, atmospheric drag, SRP, and Sun/Moon third-body perturbations. If no gravity model is provided, JGM3 is loaded automatically.

Parameters:

Name Type Description Default
gravity_model GravityModel | None

Optional pre-loaded gravity model.

None
density_model str

Atmospheric density model — "harris_priester" or "nrlmsise00".

'harris_priester'

Returns:

Name Type Description
ForceModelConfig ForceModelConfig

LEO-appropriate configuration.

Examples:

config = ForceModelConfig.leo_default()
config.drag

two_body() staticmethod

Preset: point-mass gravity only (Keplerian two-body).

Returns:

Name Type Description
ForceModelConfig ForceModelConfig

Configuration with only point-mass gravity.

Examples:

config = ForceModelConfig.two_body()
config.gravity_type

SpacecraftParams dataclass

Physical properties of the spacecraft.

All values are SI. Defaults represent a generic small satellite.

Parameters:

Name Type Description Default
mass float

Spacecraft mass [kg].

1000.0
drag_area float

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

10.0
srp_area float

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

10.0
cd float

Coefficient of drag [dimensionless].

2.2
cr float

Coefficient of reflectivity [dimensionless].

1.3