ForceModelTranslation#

class ForceModelTranslation(primary_body: Spacecraft, t0: EpochArray | float = None, third_bodies: list | None = None, cannonball_SRP: bool = False, nplate_SRP: bool = False, sph_harm: bool = False, sph_harm_body: CelestialBody | None = None, sph_harm_order: int | None = None, sph_harm_cs_file: str | None = None, sph_harm_norm_flag: bool | None = None, sph_degree_max: int = 100, finite_burn: bool = False, maneuver: Maneuver | None = None, yarkovsky_effect: bool = False, first_order_gauss_markov: bool = False, fogm_beta: ndarray | float | None = None, piecewise_first_order_gauss_markov: bool = False, pfogm_beta: ndarray | float | None = None, pfogm_batch_length: float | None = None, pfogm_n_batches: int | None = None)#

Bases: ForceModel

High-level translational dynamics force model.

This class aggregates and manages all translational (i.e., orbital) force contributions acting on a spacecraft — such as point-mass gravity, spherical harmonics, solar radiation pressure, and thrust — into a single, configurable interface. It acts as the physical backbone of trajectory propagation and estimation in Scarabaeus.

The total translational acceleration is the ordered sum of all active sub-models:

\[\mathbf{a}_\text{total} = \mathbf{a}_\text{grav} + \mathbf{a}_\text{3b} + \mathbf{a}_\text{SRP} + \mathbf{a}_\text{thrust} + \mathbf{a}_\text{Yark} + \mathbf{a}_\text{FOGM} + \cdots\]

where each term is non-zero only when the corresponding flag is enabled at construction time.

Unlike low-level force model components (e.g., PointMassGravity, CannonballSRP), this class serves as a meta-model: it does not compute accelerations itself, but dynamically instantiates and combines sub-models according to the selected configuration flags.

Parameters:
  • primary_body (Spacecraft) – The primary spacecraft object to which the forces are applied. Contains physical properties such as mass, area, and reflectivity.

  • t0 (EpochArray or float, optional) – The initial epoch for the force model.

  • third_bodies (list[str] or list[CelestialBody], optional) – List of point-mass bodies to include when third_body=True.

  • cannonball_SRP (bool, optional) – Enable a classical cannonball solar radiation pressure model. Ignored if nplate_SRP=True.

  • nplate_SRP (bool, optional) – Enable a multi-facet (n-plate) SRP model. Takes precedence over cannonball_SRP.

  • sph_harm (bool, optional) – Enable a spherical harmonics gravity field expansion.

  • sph_harm_body (CelestialBody, optional) – The celestial body for which the spherical harmonics are defined.

  • sph_harm_order (int, optional) – The maximum harmonic order (m) to include.

  • sph_harm_cs_file (str, optional) – Path to the coefficient file containing Cnm/Snm terms.

  • sph_harm_norm_flag (bool, optional) – Whether the coefficients are normalized (True) or unnormalized (False).

  • sph_degree_max (int, optional) – The maximum spherical harmonic degree (n) to include. Default is 100.

  • finite_burn (bool, optional) – Enable continuous-thrust (finite burn) modeling.

  • maneuver (Maneuver, optional) – Maneuver definition object for finite-burn or impulsive dynamics.

  • yarkovsky_effect (bool, optional) – Enable Yarkovsky effect modeling.

Notes

The constructor defines which physical models are active and stores all metadata (files, degrees, body references, etc.) needed for later use. Actual sub-model objects are not built until initialize_force_models() is called, which binds the model to a specific StateArray, reference frame, and epoch.

When both SRP flags are False, SRP effects are excluded entirely. If spherical harmonics are not activated, a baseline point-mass gravity model is always included.

See also

scarabaeus.ForceModel

Abstract parent class defining the shared interface.

scarabaeus.ForceModelRotation

Rotational placeholder (attitude dynamics stub).

scarabaeus.PointMassGravity

Single-body Newtonian gravity.

scarabaeus.SphericalHarmonicsGravity

Gravity field expansion model.

scarabaeus.CannonballSRP

Cannonball solar radiation pressure model.

scarabaeus.nPlateSRP

Multi-plate solar radiation pressure model.

scarabaeus.FiniteBurn

Continuous finite-duration thrust model.

scarabaeus.ImpulsiveBurn

Instantaneous delta-v model.

References

Vallado, D. A. Fundamentals of Astrodynamics and Applications, 4th Ed., Microcosm Press, 2013.

Attributes:
base_frame

Reference frame used for all dynamics computations.

dynamics_mode_list

Ordered list of active force model names (strings) built during construction.

fogm_beta

Time-correlation coefficient(s) for the first-order Gauss-Markov model.

force_models

Dictionary of instantiated sub-model objects keyed by model name string.

maneuver

Maneuver definition used by the finite-burn sub-model, or None.

pfogm_batch_length

Duration of each piecewise FOGM batch in seconds.

pfogm_beta

Time-correlation coefficient(s) for the piecewise first-order Gauss-Markov model.

pfogm_n_batches

Number of batches in the piecewise FOGM model.

primary_body

Primary spacecraft object to which all forces are applied.

sph_degree_max

Maximum harmonic degree (n) included in the expansion.

sph_harm_body

Central body for which spherical harmonics are defined, or None.

sph_harm_cs_file

Path to the Cnm/Snm coefficient file, or None when SH is inactive.

sph_harm_norm_flag

True if coefficients are normalized; False for unnormalized.

sph_harm_order

Maximum harmonic order (m) used in the spherical harmonics model.

state_vector

State vector bound to this force model.

t0

Initial epoch for this force model.

third_bodies

List of point-mass bodies included in third-body gravity, or None.

Methods

initialize_force_models(state_vector[, ...])

Bind this ForceModel to a concrete state and frame, then build internal models.

property dynamics_mode_list: list[str]#

Ordered list of active force model names (strings) built during construction.

property fogm_beta: float | None#

Time-correlation coefficient(s) for the first-order Gauss-Markov model.

property maneuver: Maneuver | None#

Maneuver definition used by the finite-burn sub-model, or None.

property pfogm_batch_length: float | None#

Duration of each piecewise FOGM batch in seconds.

property pfogm_beta: float | None#

Time-correlation coefficient(s) for the piecewise first-order Gauss-Markov model.

property pfogm_n_batches: int | None#

Number of batches in the piecewise FOGM model.

property primary_body: Spacecraft#

Primary spacecraft object to which all forces are applied.

property sph_degree_max: int#

Maximum harmonic degree (n) included in the expansion.

property sph_harm_body: CelestialBody | None#

Central body for which spherical harmonics are defined, or None.

property sph_harm_cs_file: str | None#

Path to the Cnm/Snm coefficient file, or None when SH is inactive.

property sph_harm_norm_flag: bool#

True if coefficients are normalized; False for unnormalized.

property sph_harm_order: int#

Maximum harmonic order (m) used in the spherical harmonics model.

property third_bodies: list[str]#

List of point-mass bodies included in third-body gravity, or None.