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'
|
gravity_model
|
GravityModel | None
|
A :class: |
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'
|
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'
|
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:
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'
|
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig |
ForceModelConfig
|
LEO-appropriate configuration. |
Examples:
two_body()
staticmethod
¶
Preset: point-mass gravity only (Keplerian two-body).
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig |
ForceModelConfig
|
Configuration with only point-mass gravity. |
Examples:
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
|