Force Model Configuration¶
Configuration classes for numerical orbit propagation force models. ForceModelConfig provides factory methods for common configurations and allows customization of gravity, atmospheric drag, solar radiation pressure, and third-body perturbations.
Note
For conceptual explanations and usage examples, see Force Models in the User Guide.
ForceModelConfig¶
ForceModelConfig ¶
ForceModelConfig(gravity: GravityConfiguration = None, drag: DragConfiguration = None, srp: SolarRadiationPressureConfiguration = None, third_body: ThirdBodyConfiguration = None, relativity: bool = False, mass: ParameterSource = None)
Force model configuration for numerical orbit propagation.
Defines all perturbation forces to be included: gravity, drag, SRP, third-body, relativity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
gravity | GravityConfiguration | Gravity model configuration. Default is point mass gravity. | None |
drag | DragConfiguration | Atmospheric drag configuration. Default is None (disabled). | None |
srp | SolarRadiationPressureConfiguration | Solar radiation pressure configuration. Default is None (disabled). | None |
third_body | ThirdBodyConfiguration | Third-body perturbations configuration. Default is None (disabled). | None |
relativity | bool | Enable relativistic corrections. Default is False. | False |
mass | ParameterSource | Spacecraft mass source. Default is None. | None |
Attributes:
| Name | Type | Description |
|---|---|---|
gravity | GravityConfiguration | Gravity model configuration |
drag | DragConfiguration or None | Atmospheric drag configuration |
srp | SolarRadiationPressureConfiguration or None | Solar radiation pressure configuration |
third_body | ThirdBodyConfiguration or None | Third-body perturbations configuration |
relativity | bool | Enable relativistic corrections |
mass | ParameterSource or None | Spacecraft mass source |
Example
Initialize instance.
conservative_forces builtin ¶
conservative_forces() -> ForceModelConfig
Create a conservative forces configuration (gravity + third-body + relativity, no drag/SRP).
default builtin ¶
default() -> ForceModelConfig
Create a default force model configuration.
Includes: - 20x20 EGM2008 gravity - Harris-Priester atmospheric drag - Solar radiation pressure with conical eclipse - Sun and Moon third-body perturbations
Requires parameter vector: [mass, drag_area, Cd, srp_area, Cr]
earth_gravity builtin ¶
earth_gravity() -> ForceModelConfig
Create an Earth gravity-only configuration (no drag, SRP, or third-body).
Uses 20x20 EGM2008 gravity. No parameter vector required.
geo_default builtin ¶
geo_default() -> ForceModelConfig
Create a configuration suitable for GEO satellites.
Includes SRP and third-body perturbations, omits drag. Requires parameter vector: [mass, , , srp_area, Cr]
high_fidelity builtin ¶
high_fidelity() -> ForceModelConfig
Create a high-fidelity force model configuration.
Includes: - 120x120 EGM2008 gravity - NRLMSISE-00 atmospheric model - SRP with conical eclipse - Sun, Moon, and all planets (DE440s ephemerides) - Relativistic corrections
Requires parameter vector: [mass, drag_area, Cd, srp_area, Cr]
leo_default builtin ¶
leo_default() -> ForceModelConfig
Create a configuration suitable for LEO satellites.
Includes drag and higher-order gravity, plus SRP and third-body. Requires parameter vector: [mass, drag_area, Cd, srp_area, Cr]
requires_params method descriptor ¶
requires_params() -> Any
Check if this configuration requires a parameter vector.
two_body builtin ¶
two_body() -> ForceModelConfig
Create a two-body (point mass) gravity configuration.
Uses only central body gravity with no perturbations. Produces results equivalent to Keplerian propagation. No parameter vector required.
Configuration Components¶
GravityConfiguration ¶
GravityConfiguration(degree: int = None, order: int = None, model_type: GravityModelType = None, use_global: bool = False)
Gravity model configuration.
Specifies the gravity model: point mass or spherical harmonic expansion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
degree | int | Maximum degree of spherical harmonic expansion. If None, uses point mass gravity. | None |
order | int | Maximum order of spherical harmonic expansion. If None, uses point mass gravity. | None |
model_type | GravityModelType | Gravity model to use. Defaults to EGM2008_360. | None |
use_global | bool | If True, use global gravity model. Defaults to False. | False |
Example
Initialize instance.
get_degree method descriptor ¶
get_degree() -> int
Get the degree (for spherical harmonic).
Returns:
| Type | Description |
|---|---|
int | int or None: Degree if spherical harmonic, None otherwise. |
get_order method descriptor ¶
get_order() -> int
Get the order (for spherical harmonic).
Returns:
| Type | Description |
|---|---|
int | int or None: Order if spherical harmonic, None otherwise. |
is_spherical_harmonic method descriptor ¶
is_spherical_harmonic() -> Any
Check if this is spherical harmonic gravity.
point_mass builtin ¶
point_mass() -> GravityConfiguration
Create a point mass gravity configuration.
Returns:
| Name | Type | Description |
|---|---|---|
GravityConfiguration | GravityConfiguration | Point mass (two-body) gravity. |
spherical_harmonic builtin ¶
spherical_harmonic(degree: int, order: int, model_type: GravityModelType = None, use_global: bool = False) -> GravityConfiguration
Create a spherical harmonic gravity configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
degree | int | Maximum degree of expansion. | required |
order | int | Maximum order of expansion. | required |
model_type | GravityModelType | Gravity model to use. Defaults to EGM2008_360. | None |
use_global | bool | If True, use global gravity model. Defaults to False. | False |
Returns:
| Name | Type | Description |
|---|---|---|
GravityConfiguration | GravityConfiguration | Spherical harmonic gravity. |
DragConfiguration ¶
DragConfiguration(model: AtmosphericModel, area: ParameterSource, cd: ParameterSource)
Atmospheric drag configuration.
Defines the atmospheric model and drag parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model | AtmosphericModel | Atmospheric density model. | required |
area | ParameterSource | Drag cross-sectional area source [m²]. | required |
cd | ParameterSource | Drag coefficient source (dimensionless). | required |
Attributes:
| Name | Type | Description |
|---|---|---|
model | AtmosphericModel | Atmospheric density model |
area | ParameterSource | Drag area source |
cd | ParameterSource | Drag coefficient source |
Example
Initialize instance.
SolarRadiationPressureConfiguration ¶
SolarRadiationPressureConfiguration(area: ParameterSource, cr: ParameterSource, eclipse_model: EclipseModel)
Solar radiation pressure configuration.
Defines the SRP parameters and eclipse model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
area | ParameterSource | SRP cross-sectional area source [m²]. | required |
cr | ParameterSource | Coefficient of reflectivity source (dimensionless). | required |
eclipse_model | EclipseModel | Eclipse model for shadow effects. | required |
Attributes:
| Name | Type | Description |
|---|---|---|
area | ParameterSource | SRP area source |
cr | ParameterSource | Reflectivity coefficient source |
eclipse_model | EclipseModel | Eclipse model |
Example
Initialize instance.
ThirdBodyConfiguration ¶
Third-body perturbations configuration.
Defines which celestial bodies to include and ephemeris source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ephemeris_source | EphemerisSource | Source for celestial body ephemerides. | required |
bodies | list[ThirdBody] | List of bodies to include as perturbers. | required |
Attributes:
| Name | Type | Description |
|---|---|---|
ephemeris_source | EphemerisSource | Ephemeris source |
bodies | list[ThirdBody] | List of perturbing bodies |
Example
Initialize instance.
Enumerations¶
AtmosphericModel ¶
Atmospheric density model selection.
Example
Initialize instance.
EclipseModel ¶
ThirdBody ¶
Third-body perturber.
Celestial bodies that can act as gravitational perturbers.
Initialize instance.
ParameterSource ¶
Source for a parameter value (fixed or from parameter vector).
Allows specifying whether a parameter comes from a fixed value or from an index in the parameter vector.
Example
Initialize instance.
get_index method descriptor ¶
get_index() -> int
Get the parameter index (if this is a ParameterIndex source).
Returns:
| Type | Description |
|---|---|
int | int or None: The parameter index, or None if this is a Value. |
get_value method descriptor ¶
get_value() -> float
Get the fixed value (if this is a Value source).
Returns:
| Type | Description |
|---|---|
float | float or None: The fixed value, or None if this is a ParameterIndex. |
is_parameter_index method descriptor ¶
is_parameter_index() -> Any
Check if this source references a parameter index.
parameter_index builtin ¶
parameter_index(index: int) -> ParameterSource
Create a parameter index source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index | int | Index into the parameter vector. | required |
Returns:
| Name | Type | Description |
|---|---|---|
ParameterSource | ParameterSource | A parameter source referencing a parameter vector index. |
value builtin ¶
value(value: float) -> ParameterSource
Create a fixed value parameter source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value | float | The fixed parameter value. | required |
Returns:
| Name | Type | Description |
|---|---|---|
ParameterSource | ParameterSource | A parameter source with a fixed value. |
See Also¶
- NumericalOrbitPropagator - Propagator using force models
- Orbital Dynamics - Detailed force model documentation
- Force Models Guide - User guide