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, third-body perturbations, and solid Earth and ocean tides.
Note
For conceptual explanations and usage examples, see Force Models in the User Guide. For CentralBody, lunar_default()/cislunar_default()/mars_default(), and state_in_frame, see Cislunar and Lunar Propagation and Propagation Around Other Central Bodies.
ForceModelConfig¶
ForceModelConfig ¶
ForceModelConfig(gravity: GravityConfiguration = None, drag: DragConfiguration = None, srp: SolarRadiationPressureConfiguration = None, third_body: ThirdBodyConfiguration | ThirdBody | list = None, relativity: bool = False, mass: ParameterSource = None, frame_transform: FrameTransformationModel = None, tides: Any = 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 | ThirdBody | list | Third-body perturbation entries; a single entry or a list mixing ThirdBody and ThirdBodyConfiguration values. Default is None (disabled). | None |
relativity | bool | Enable relativistic corrections. Default is False. | False |
mass | ParameterSource | Spacecraft mass source. Default is None. | None |
frame_transform | FrameTransformationModel | ECI-to-body-fixed rotation used by every body-fixed force term. Defaults to | 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 | list[ThirdBodyConfiguration] or None | Third-body perturbation entries |
relativity | bool | Enable relativistic corrections |
mass | ParameterSource or None | Spacecraft mass source |
frame_transform | FrameTransformationModel | ECI-to-body-fixed rotation model |
Example
Initialize instance.
central_body property ¶
central_body: Any
Get the central body this configuration propagates relative to.
frame_transform property ¶
frame_transform: Any
Get the ECI-to-body-fixed frame transformation model.
cislunar_default builtin ¶
cislunar_default() -> ForceModelConfig
Create a configuration suitable for cislunar propagation about the Earth-Moon barycenter.
Uses point mass gravity (the barycenter has no mass of its own), no drag, SRP occulted by Earth and the Moon, and Earth/Moon/Sun third-body perturbations (DE440s ephemerides). Requires parameter vector: [mass, , , srp_area, Cr]
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig | ForceModelConfig | Configuration with the Earth-Moon barycenter as the central body. |
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.
for_body builtin ¶
for_body(central_body: CentralBody, gravity: GravityConfiguration, drag: DragConfiguration = None, srp: SolarRadiationPressureConfiguration = None, third_body: ThirdBodyConfiguration | ThirdBody | list = None, relativity: bool = False, mass: ParameterSource = None) -> ForceModelConfig
Create a force model configuration for a specific central body.
Convenience constructor that fills in frame_transform with its default (FrameTransformationModel.FULL_EARTH_ROTATION) so callers only need to specify the options that vary per central body. Does not validate the resulting configuration -- call validate() to check that the chosen options are compatible with central_body.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
central_body | CentralBody | Body the orbit is propagated relative to. | required |
gravity | GravityConfiguration | Gravity model configuration. | required |
drag | DragConfiguration | Atmospheric drag configuration. | None |
srp | SolarRadiationPressureConfiguration | Solar radiation pressure configuration. | None |
third_body | ThirdBodyConfiguration | ThirdBody | list | Third-body perturbation entries; a single entry or a list mixing ThirdBody and ThirdBodyConfiguration values. | None |
relativity | bool | Enable relativistic corrections. Default is False. | False |
mass | ParameterSource | Spacecraft mass source. | None |
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig | ForceModelConfig | A force model configuration for |
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 - Solid Earth tides with frequency-dependent corrections and the solid pole tide - Ocean tides (FES2004, 30x30) with admittance and the ocean pole tide; requires a one-time cached download of the IERS FES2004 coefficient file
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]
lunar_default builtin ¶
lunar_default() -> ForceModelConfig
Create a configuration suitable for propagation about the Moon.
Uses 50x50 GRGM660PRIM lunar gravity, no drag, SRP occulted by the Moon and Earth, and Earth/Sun third-body perturbations (DE440s ephemerides). Requires parameter vector: [mass, , , srp_area, Cr]
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig | ForceModelConfig | Configuration with the Moon as the central body. |
mars_default builtin ¶
mars_default() -> ForceModelConfig
Create a configuration suitable for propagation about Mars.
Uses 50x50 GMM-2B Mars gravity, exponential atmospheric drag, SRP occulted by Mars, and Sun third-body perturbations (DE440s ephemerides). Requires parameter vector: [mass, drag_area, Cd, srp_area, Cr]
Returns:
| Name | Type | Description |
|---|---|---|
ForceModelConfig | ForceModelConfig | Configuration with Mars as the central body. |
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.
validate method descriptor ¶
Validate that this configuration's options are compatible with its central body.
This method is called automatically at propagator construction; it may also be called explicitly ahead of time on a standalone configuration for early feedback.
Returns:
| Name | Type | Description |
|---|---|---|
None | None | If the configuration is internally consistent. |
Raises:
| Type | Description |
|---|---|
RuntimeError | If the configuration is internally inconsistent (naming both the offending option and the central body). |
Central Body¶
CentralBody ¶
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
Example
Initialize instance.
EMB class-attribute ¶
EMB: Any = CentralBody.EMB
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
Earth class-attribute ¶
Earth: Any = CentralBody.Earth
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
Mars class-attribute ¶
Mars: Any = CentralBody.Mars
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
Moon class-attribute ¶
Moon: Any = CentralBody.Moon
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
SSB class-attribute ¶
SSB: Any = CentralBody.SSB
The central body an orbit is propagated relative to.
Earth, Moon, and Mars are built in because they have dedicated named inertial/fixed frame pairs elsewhere in brahe (GCRF/ITRF, LCI/LFPA, MCI/MCMF). EMB and SSB are the Earth-Moon and Solar System barycenters -- useful as propagation origins for heliocentric or cislunar trajectories, but they have no physical radius, spin, or fixed frame. Any other body is constructed via CentralBody.Custom(...) or CentralBody.from_naif_id(...).
Custom staticmethod ¶
Custom(name: str, naif_id: int, gm: float, radius: float = None, omega: Union[ndarray, Sequence] = None, fixed_frame: ReferenceFrame = None) -> CentralBody
Construct a user-defined central body.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Human-readable name (e.g. | required |
naif_id | int | NAIF ID of the body. | required |
gm | float | Gravitational parameter. Units: (m^3/s^2) | required |
radius | float | Mean or equatorial radius, if known. Units: (m) | None |
omega | ndarray or list | Body-fixed axial spin vector, if known. Units: (rad/s) | None |
fixed_frame | ReferenceFrame | Body-fixed reference frame, required for spherical-harmonic gravity and body-fixed rotations. | None |
Returns:
| Name | Type | Description |
|---|---|---|
CentralBody | CentralBody | A user-defined central body. |
fixed_frame method descriptor ¶
fixed_frame() -> ReferenceFrame
Body-fixed reference frame of this body, if one is defined.
Returns:
| Type | Description |
|---|---|
ReferenceFrame | ReferenceFrame or None: |
ReferenceFrame |
|
from_naif_id staticmethod ¶
from_naif_id(naif_id: int) -> CentralBody
Construct a CentralBody from a NAIF ID.
399, 301, 4/499, 3, and 0 map to the built-in Earth, Moon, Mars, EMB, and SSB variants respectively. A fixed table of other commonly used bodies maps to a pre-populated Custom variant.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
naif_id | int | NAIF ID of the body. | required |
Returns:
| Name | Type | Description |
|---|---|---|
CentralBody | CentralBody | The corresponding central body. |
Raises:
| Type | Description |
|---|---|
ValueError | If |
gm method descriptor ¶
gm() -> float
Gravitational parameter of the central body.
Returns:
| Name | Type | Description |
|---|---|---|
float | float | Gravitational parameter. Units: (m^3/s^2). |
inertial_frame method descriptor ¶
inertial_frame() -> ReferenceFrame
ICRF-aligned inertial reference frame centered on this body.
Returns:
| Name | Type | Description |
|---|---|---|
ReferenceFrame | ReferenceFrame |
|
ReferenceFrame | for |
is_barycenter method descriptor ¶
is_barycenter() -> bool
Whether this central body is a barycenter (EMB or SSB).
Returns:
| Name | Type | Description |
|---|---|---|
bool | bool |
|
Configuration Components¶
GravityConfiguration ¶
GravityConfiguration(degree: int = None, order: int = None, model_type: GravityModelType = None, use_global: bool = False, parallel: ParallelMode = None)
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_120. | None |
use_global | bool | If True, use global gravity model. Defaults to False. | False |
parallel | ParallelMode | Parallelization mode for the spherical-harmonic acceleration computation. Defaults to Auto. | None |
Example
Initialize instance.
earth_zonal builtin ¶
earth_zonal(degree: ZonalHarmonicsDegree) -> GravityConfiguration
Create an Earth zonal-only gravity configuration (J_2..=J_n, m=0).
Equivalent to spherical_harmonic with m = 0 against the packaged Earth gravity model, but evaluated via an explicit closed-form expansion that the compiler can vectorise — ~50% faster for the same axially-symmetric expansion. Earth-specific because the J_n coefficients and reference radius are baked into the implementation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
degree | ZonalHarmonicsDegree | Maximum zonal degree (J_2 through J_6). | required |
Returns:
| Name | Type | Description |
|---|---|---|
GravityConfiguration | GravityConfiguration | Earth zonal gravity. |
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_earth_zonal_degree method descriptor ¶
Get the zonal degree (for Earth zonal gravity).
Returns:
| Type | Description |
|---|---|
ZonalHarmonicsDegree | ZonalHarmonicsDegree or None: Zonal degree if Earth zonal gravity, 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. |
get_parallel method descriptor ¶
Get the parallel mode (for spherical harmonic).
Returns:
| Type | Description |
|---|---|
ParallelMode | ParallelMode or None: Parallel mode 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, parallel: ParallelMode = None) -> 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_120. | None |
use_global | bool | If True, use global gravity model. Defaults to False. | False |
parallel | ParallelMode | Parallelization mode for the spherical-harmonic acceleration computation. Defaults to Auto. | None |
Returns:
| Name | Type | Description |
|---|---|---|
GravityConfiguration | GravityConfiguration | Spherical harmonic gravity. |
zero builtin ¶
zero() -> GravityConfiguration
Create a configuration with no gravity term from the propagation center. For barycentric propagation centers (CentralBody.EMB, CentralBody.SSB), which have no mass of their own: every gravitational force enters through the third-body entries.
Returns:
| Name | Type | Description |
|---|---|---|
GravityConfiguration | GravityConfiguration | No central gravity term. |
DragConfiguration ¶
DragConfiguration(model: AtmosphericModel, area: ParameterSource, cd: ParameterSource, body: CentralBody = None)
Atmospheric drag configuration.
Defines the atmospheric model and drag parameters. The optional body attributes the drag to a body other than the propagation's central body: density and relative wind are then evaluated at the object's state relative to that body (e.g. Earth drag on an EMB-centered cislunar trajectory).
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 |
body | CentralBody | Body whose atmosphere produces the drag. Defaults to None, meaning the propagation's central body. | None |
Attributes:
| Name | Type | Description |
|---|---|---|
model | AtmosphericModel | Atmospheric density model |
area | ParameterSource | Drag area source |
cd | ParameterSource | Drag coefficient source |
body | CentralBody or None | Attributed drag body |
Example
Initialize instance.
SolarRadiationPressureConfiguration ¶
SolarRadiationPressureConfiguration(area: ParameterSource, cr: ParameterSource, eclipse_model: EclipseModel, occulting_bodies: list[OccultingBody] = None)
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 |
occulting_bodies | list[OccultingBody] | Bodies whose shadow may occult the sun. Defaults to | None |
Attributes:
| Name | Type | Description |
|---|---|---|
area | ParameterSource | SRP area source |
cr | ParameterSource | Reflectivity coefficient source |
eclipse_model | EclipseModel | Eclipse model |
occulting_bodies | list[OccultingBody] | Bodies whose shadow may occult the sun |
Example
Initialize instance.
ThirdBodyConfiguration ¶
ThirdBodyConfiguration(body: ThirdBody, ephemeris_source: EphemerisSource = None, gravity: GravityConfiguration = None)
Configuration for a single third-body perturber.
Pairs a perturbing body with its ephemeris source and the gravity model used for its perturbation (point-mass by default; a spherical-harmonic or Earth-zonal field evaluates at the object's position relative to the body).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
body | ThirdBody | The perturbing body. | required |
ephemeris_source | EphemerisSource | Source for the body's position. Defaults to | None |
gravity | GravityConfiguration | Gravity model for this perturber. Defaults to point-mass. | None |
Attributes:
| Name | Type | Description |
|---|---|---|
body | ThirdBody | The perturbing body |
ephemeris_source | EphemerisSource | Ephemeris source |
gravity | GravityConfiguration | Gravity model for this perturber |
Example
Initialize instance.
TidesConfiguration ¶
TidesConfiguration(permanent: PermanentTideConfig, solid: SolidTideConfig = None, ocean: OceanTideConfig = None, ephemeris_source: EphemerisSource = Ellipsis)
Tidal correction configuration for ForceModelConfig.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
permanent | PermanentTideConfig | Permanent-tide / tide-system handling. | required |
solid | SolidTideConfig | Solid Earth tide configuration. None disables solid tides. Default is None. | None |
ocean | OceanTideConfig | Ocean tide configuration. None disables ocean tides. Default is None. | None |
ephemeris_source | EphemerisSource | Source for the Sun and Moon positions the tidal corrections are computed from. Defaults to EphemerisSource.LowPrecision (the analytic geocentric ephemerides), which is accurate enough for the ~1e-7 m/s^2 tidal perturbation. Set to a high-precision source to share positions with a third-body perturbation configured against the same source. | Ellipsis |
Example
Initialize instance.
SolidTideConfig ¶
Solid Earth tide settings.
Controls whether Step 2 (frequency-dependent) IERS corrections are applied, and whether the solid Earth pole tide is applied.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
frequency_dependent | bool | Apply IERS Step 2 frequency-dependent corrections. Default is False. | False |
pole_tide | bool | Apply the solid Earth pole tide ΔC̄21/ΔS̄21 (IERS TN36 Section 6.4). Requires EOP initialization. Default is False. | False |
Example
Initialize instance.
OceanTideConfig ¶
OceanTideConfig(degree: int = 20, order: int = 20, include_admittance: bool = True, pole_tide: bool = False)
FES2004 ocean tide configuration (IERS TN36 Section 6.3) plus the ocean pole tide (Section 6.5).
Requires a one-time download of the IERS FES2004 coefficient file into the brahe cache on first use.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
degree | int | Truncation degree, 2-100. Defaults to 20. | 20 |
order | int | Truncation order, <= degree. Defaults to 20. | 20 |
include_admittance | bool | Add secondary waves by admittance interpolation (TN36 Table 6.7). Defaults to True. | True |
pole_tide | bool | Apply the ocean pole tide (2,1) term (TN36 Eq. 6.24). Requires EOP initialization. Defaults to False. | False |
Example
Initialize instance.
PermanentTideConfig ¶
Permanent (zero-frequency) tide handling for the static gravity field.
Controls how the loaded model's C̄20 is reconciled with the solid-tide model.
Use the class attributes AUTO and OFF for the unit variants, or PermanentTideConfig.convert_to(system) to force a specific tide system.
Example
Initialize instance.
AUTO class-attribute ¶
AUTO: Any = PermanentTideConfig.AUTO
Permanent (zero-frequency) tide handling for the static gravity field.
Controls how the loaded model's C̄20 is reconciled with the solid-tide model.
Use the class attributes AUTO and OFF for the unit variants, or PermanentTideConfig.convert_to(system) to force a specific tide system.
Example
OFF class-attribute ¶
OFF: Any = PermanentTideConfig.OFF
Permanent (zero-frequency) tide handling for the static gravity field.
Controls how the loaded model's C̄20 is reconciled with the solid-tide model.
Use the class attributes AUTO and OFF for the unit variants, or PermanentTideConfig.convert_to(system) to force a specific tide system.
Example
convert_to staticmethod ¶
convert_to(system: GravityModelTideSystem) -> PermanentTideConfig
Force the gravity field into the given tide system.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
system | GravityModelTideSystem | Target tide system. | required |
Returns:
| Name | Type | Description |
|---|---|---|
PermanentTideConfig | PermanentTideConfig | A PermanentTideConfig that converts to the given system. |
Enumerations¶
AtmosphericModel ¶
Atmospheric density model selection.
Example
Initialize instance.
EclipseModel ¶
ThirdBody ¶
Third-body perturber.
Celestial bodies that can act as gravitational perturbers.
Example
Initialize instance.
Custom staticmethod ¶
Construct a user-defined perturbing body.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Human-readable name (e.g. | required |
naif_id | int | NAIF ID of the body. | required |
gm | float | Gravitational parameter. Units: (m^3/s^2) | required |
Returns:
| Name | Type | Description |
|---|---|---|
ThirdBody | ThirdBody | A user-defined perturbing body. |
as_central_body method descriptor ¶
as_central_body() -> CentralBody
The CentralBody equivalent of this perturber, if it is a physical body brahe knows how to treat as a frame/parameter center.
Returns:
| Type | Description |
|---|---|
CentralBody | CentralBody | None: Central-body equivalent, or None for the barycenter variants and Custom bodies. |
body_fixed_frame method descriptor ¶
body_fixed_frame() -> ReferenceFrame
The body-fixed reference frame a gravity field attached to this body is expressed in (e.g. ITRF for Earth, LFPA for the Moon, MCMF for Mars).
Returns:
| Type | Description |
|---|---|
ReferenceFrame | ReferenceFrame | None: Body-fixed frame, or None for the barycenter variants, Custom bodies, and bodies without a rotation model. |
OccultingBody ¶
Occulting body for eclipse/shadow modeling in solar radiation pressure calculations.
Identifies a celestial body whose shadow may occult the sun as seen from the spacecraft.
Example
Initialize instance.
Earth class-attribute ¶
Earth: Any = OccultingBody.Earth
Occulting body for eclipse/shadow modeling in solar radiation pressure calculations.
Identifies a celestial body whose shadow may occult the sun as seen from the spacecraft.
Mars class-attribute ¶
Mars: Any = OccultingBody.Mars
Occulting body for eclipse/shadow modeling in solar radiation pressure calculations.
Identifies a celestial body whose shadow may occult the sun as seen from the spacecraft.
Moon class-attribute ¶
Moon: Any = OccultingBody.Moon
Occulting body for eclipse/shadow modeling in solar radiation pressure calculations.
Identifies a celestial body whose shadow may occult the sun as seen from the spacecraft.
Custom staticmethod ¶
Custom(name: str, naif_id: int, radius: float) -> OccultingBody
Construct a user-defined occulting body.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Descriptive name of the body. | required |
naif_id | int | NAIF ID of the physical body. | required |
radius | float | Mean physical radius of the body. Units: (m) | required |
Returns:
| Name | Type | Description |
|---|---|---|
OccultingBody | OccultingBody | A user-defined occulting body. |
naif_id method descriptor ¶
naif_id() -> int
NAIF ID of the physical occulting body.
Returns:
| Name | Type | Description |
|---|---|---|
int | int | NAIF integer ID of the physical body. |
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
- Cislunar and Lunar Propagation -
CentralBody,lunar_default()/cislunar_default(), andstate_in_frame - Propagation Around Other Central Bodies - Mars, custom bodies, and user-defined body-fixed frames