ForceModel#

class ForceModel#

Bases: ABC

Abstract base class for force models.

A ForceModel aggregates one or more DynamicModel sub-models into a single configurable interface. The total translational acceleration delivered to the integrator is the sum of all active sub-model contributions:

\[\mathbf{a}(t) = \sum_{i} \mathbf{a}_i(\mathbf{r},\,\dot{\mathbf{r}},\,\mathbf{p},\,t)\]

where each \(\mathbf{a}_i\) is computed by the corresponding DynamicModel instance and \(\mathbf{p}\) is the vector of solve-for or consider parameters.

In addition to the total acceleration, the ForceModel collects the partial derivatives \(\partial \mathbf{a} / \partial \mathbf{p}\) from each active sub-model. These partials populate the \(\partial \mathbf{f} / \partial \mathbf{p}\) term required to integrate the variational equations

\[\dot{\mathbf{S}} = F\,\mathbf{S} + \frac{\partial \mathbf{f}}{\partial \mathbf{p}}\]

whose solution \(\mathbf{S}\) is the sensitivity matrix used by the orbit-determination filter.

Parameters:

None

Notes

Concrete sub-classes must override _initialize_force_models() and _compute_total_acceleration(). Call initialize_force_models() before invoking any compute methods to bind the model to a concrete StateArray, reference frame, and epoch.

See also

scarabaeus.ForceModelTranslation

Translational force model aggregator.

scarabaeus.DynamicModel

Base class for individual force model components.

Attributes:
base_frame

Reference frame used for all dynamics computations.

force_models

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

state_vector

State vector bound to this force model.

t0

Initial epoch for this force model.

Methods

initialize_force_models(state_vector[, ...])

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

initialize_force_models(state_vector: StateArray, base_frame: Frame | None = None) None#

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

Must be called before any compute methods are invoked.

Parameters:
  • state_vector (StateArray) – Initial state vector that internal force models will be constructed from.

  • base_frame (Frame, optional) – Reference frame for all dynamics computations. Defaults to J2000 if None.

property base_frame: Frame#

Reference frame used for all dynamics computations. Defaults to J2000.

property force_models: dict#

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

Raises:

RuntimeError – If the model has not been initialized.

property state_vector: StateArray#

State vector bound to this force model.

Raises:

RuntimeError – If initialize_force_models has not been called.

property t0: EpochArray#

Initial epoch for this force model.

Raises:

RuntimeError – If initialize_force_models has not been called.