NumericalOrbitPropagator¶
High-fidelity numerical orbit propagator with built-in force models. The NumericalOrbitPropagator integrates orbital dynamics equations using configurable integrators and force models including gravity harmonics, atmospheric drag, solar radiation pressure, and third-body perturbations.
Note
For conceptual explanations and usage examples, see Numerical Propagation in the User Guide.
NumericalOrbitPropagator ¶
NumericalOrbitPropagator(epoch: Any, state: Any, propagation_config: Any, force_config: Any, params: Any = None, initial_covariance: Any = None, additional_dynamics: Any = None, control_input: Any = None)
High-fidelity numerical orbit propagator with configurable force models.
This propagator uses numerical integration with built-in orbital force models: - Gravity (point mass or spherical harmonic) - Atmospheric drag (Harris-Priester, NRLMSISE-00, or exponential) - Solar radiation pressure with eclipse modeling - Third-body perturbations (Sun, Moon, planets) - Relativistic corrections - Solid Earth tides
Attributes:
| Name | Type | Description |
|---|---|---|
current_epoch | Epoch | Current propagation time |
initial_epoch | Epoch | Initial epoch from propagator creation |
state_dim | int | Dimension of state vector (6 for basic, 6+N for extended) |
step_size | float | Current integration step size in seconds |
trajectory | OrbitTrajectory | Accumulated trajectory states |
Example
Initialize instance.
trajectory property ¶
trajectory: OrbitTrajectory
Get accumulated trajectory.
Returns:
| Name | Type | Description |
|---|---|---|
OrbitTrajectory | OrbitTrajectory | The accumulated trajectory. |
trajectory_mode property ¶
Get current trajectory storage mode.
Returns:
| Name | Type | Description |
|---|---|---|
TrajectoryMode | TrajectoryMode | Current trajectory mode. |
add_event_detector method descriptor ¶
add_event_detector(event: Union[TimeEvent, ValueEvent, BinaryEvent, AltitudeEvent]) -> Any
Add an event detector to this propagator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
event | TimeEvent or ValueEvent or BinaryEvent or AltitudeEvent | Event detector | required |
clear_events method descriptor ¶
clear_events() -> Any
Clear all detected events from the event log.
covariance method descriptor ¶
covariance_gcrf method descriptor ¶
covariance_rtn method descriptor ¶
current_params method descriptor ¶
current_params() -> ndarray
Get current parameter vector.
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray or None: Current parameter vector, or None if no params. |
disable_stm_propagation method descriptor ¶
disable_stm_propagation() -> Any
Disable STM (variational equation) propagation.
Providing an initial covariance at construction enables STM propagation automatically. When the STM is not needed, disabling it removes the cost of integrating the variational equations at every step. Covariance propagation requires the STM, so any covariance held by the propagator is cleared: stm() and current_covariance() return None afterwards. Sensitivity propagation, if enabled, is unaffected. No-op if STM propagation is not enabled.
event_log method descriptor ¶
event_log() -> list[DetectedEvent]
Get the event log (list of detected events).
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: List of events detected during propagation. |
events_by_detector_index method descriptor ¶
events_by_detector_index(index: int) -> list[DetectedEvent]
Get events by detector index.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index | int | Detector index (0-based, in order of add_event_detector calls). | required |
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: Events from the specified detector. |
events_by_detector_index_in_range method descriptor ¶
events_by_detector_index_in_range(index: int, start: Epoch, end: Epoch) -> list[DetectedEvent]
Get events by detector index within a time range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index | int | Detector index (0-based, in order of add_event_detector calls). | required |
start | Epoch | Start of time range (inclusive). | required |
end | Epoch | End of time range (inclusive). | required |
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: Events from the specified detector within the time range. |
events_by_name method descriptor ¶
events_by_name(name: str) -> list[DetectedEvent]
Get events by name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Event name to filter by. | required |
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: Events matching the given name. |
events_by_name_in_range method descriptor ¶
events_by_name_in_range(name_pattern: str, start: Epoch, end: Epoch) -> list[DetectedEvent]
Get events by name pattern within a time range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name_pattern | str | Substring to search for in event names. | required |
start | Epoch | Start of time range (inclusive). | required |
end | Epoch | End of time range (inclusive). | required |
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: Events matching the name pattern within the time range. |
events_in_range method descriptor ¶
events_in_range(start: Epoch, end: Epoch) -> list[DetectedEvent]
Get events in time range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start | Epoch | Start of time range. | required |
end | Epoch | End of time range. | required |
Returns:
| Type | Description |
|---|---|
list[DetectedEvent] | list[DetectedEvent]: Events within the given time range. |
from_eci builtin ¶
from_eci(epoch: Epoch, state: ndarray, params: Union[ndarray, None] = None, force_config: Union[ForceModelConfig, None] = None) -> NumericalOrbitPropagator
Create a propagator from ECI Cartesian state with simplified configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
state | ndarray | Initial ECI Cartesian state [x, y, z, vx, vy, vz]. | required |
params | ndarray or None | Parameter vector. | None |
force_config | ForceModelConfig or None | Force model config (default if None). | None |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalOrbitPropagator | NumericalOrbitPropagator | New propagator instance. |
get_covariance_interpolation_method method descriptor ¶
Get current interpolation method for covariance queries.
Returns:
| Name | Type | Description |
|---|---|---|
CovarianceInterpolationMethod | CovarianceInterpolationMethod | Current covariance interpolation method. |
get_interpolation_method method descriptor ¶
get_interpolation_method() -> InterpolationMethod
Get current interpolation method for state trajectory queries.
Returns:
| Name | Type | Description |
|---|---|---|
InterpolationMethod | InterpolationMethod | Current interpolation method. |
latest_event method descriptor ¶
latest_event() -> DetectedEvent
Get latest detected event, if any.
Returns:
| Type | Description |
|---|---|
DetectedEvent | DetectedEvent or None: The most recently detected event. |
params method descriptor ¶
params() -> ndarray
Get the parameter vector supplied at construction.
These are the force-model / consider parameters passed to the dynamics, control input, and (via the estimation filters) measurement models.
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray or None: Parameter vector, or None if no parameters were provided. |
propagate_steps method descriptor ¶
Propagate forward by specified number of steps.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
num_steps | int | Number of steps to take. | required |
propagate_to method descriptor ¶
Propagate to a specific target epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_epoch | Epoch | The epoch to propagate to. | required |
query_events method descriptor ¶
query_events() -> EventQuery
Create an event query builder for filtering detected events.
Returns an EventQuery that allows chainable filtering of detected events. Call .collect() on the query to get the final list of events.
Returns:
| Name | Type | Description |
|---|---|---|
EventQuery | EventQuery | Query builder for filtering events |
Example
reset_termination method descriptor ¶
reset_termination() -> Any
Reset the termination flag to allow continued propagation.
After calling this, propagation can continue even if it was previously stopped by a terminal event.
sensitivity method descriptor ¶
sensitivity() -> ndarray
Get current sensitivity matrix if enabled.
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray or None: The current sensitivity (n x p matrix), or None if not enabled. |
sensitivity_at method descriptor ¶
set_covariance_interpolation_method method descriptor ¶
set_covariance_interpolation_method(method: CovarianceInterpolationMethod) -> Any
Set interpolation method for covariance queries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
method | CovarianceInterpolationMethod | Interpolation method for covariance. | required |
set_eviction_policy_max_age method descriptor ¶
Set trajectory eviction policy based on maximum age.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
max_age | float | Maximum age in seconds to keep states in trajectory. | required |
set_eviction_policy_max_size method descriptor ¶
Set trajectory eviction policy based on maximum size.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
max_size | int | Maximum number of states to keep in trajectory. | required |
set_id method descriptor ¶
Set propagator numeric ID (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id | int or None | New numeric ID for the propagator. | required |
set_identity method descriptor ¶
Set all identity fields at once (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str or None | New name. | required |
uuid_str | str or None | New UUID string. | required |
id | int or None | New numeric ID. | required |
Raises:
| Type | Description |
|---|---|
ValueError | If the UUID string is invalid. |
set_interpolation_method method descriptor ¶
set_interpolation_method(method: InterpolationMethod) -> Any
Set interpolation method for state trajectory queries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
method | InterpolationMethod | Interpolation method to use. | required |
set_name method descriptor ¶
Set propagator name (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str or None | New name for the propagator. | required |
set_trajectory_mode method descriptor ¶
set_trajectory_mode(mode: TrajectoryMode) -> Any
Set trajectory storage mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
mode | TrajectoryMode | The new trajectory mode. | required |
set_uuid method descriptor ¶
Set propagator UUID (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid_str | str or None | New UUID string for the propagator. | required |
Raises:
| Type | Description |
|---|---|
ValueError | If the UUID string is invalid. |
state method descriptor ¶
state_bcbf method descriptor ¶
Get the state at the given epoch in the central body's body-centered body-fixed (BCBF) frame (ITRF for an Earth-centered propagator, LFPA for a Moon-centered one, MCMF for Mars, the configured fixed frame for a custom body).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Target epoch for state computation. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: State vector [x, y, z, vx, vy, vz] in the central body's |
ndarray | body-fixed frame. |
Raises:
| Type | Description |
|---|---|
RuntimeError | If |
state_bci method descriptor ¶
Get the state at the given epoch in the central body's body-centered inertial (BCI) frame (GCRF for an Earth-centered propagator, LCI for a Moon-centered one, MCI for Mars, etc.).
This is the state the integrator actually propagates: no central-body offset or axis rotation is applied. state_eci always returns an Earth-centered state regardless of the propagator's central body; use this method to get the state in its native frame instead, which avoids an Earth round trip for non-Earth propagators.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Target epoch for state computation. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: State vector [x, y, z, vx, vy, vz] in the central body's |
ndarray | inertial frame. |
Raises:
| Type | Description |
|---|---|
RuntimeError | If |
state_ecef method descriptor ¶
state_eci method descriptor ¶
state_eme2000 method descriptor ¶
state_gcrf method descriptor ¶
state_gcrf(epoch) -> ndarray
Compute state at a specific epoch in GCRF coordinates.
state_in_frame method descriptor ¶
state_in_frame(frame: ReferenceFrame, epoch: Epoch) -> ndarray
Compute the state at the given epoch in an arbitrary reference frame.
Converts directly from this propagator's own central body's inertial frame, avoiding an unnecessary Earth round trip for a lunar/Martian propagator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
frame | ReferenceFrame | Reference frame to express the state in. | required |
epoch | Epoch | Target epoch for state computation. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: State vector [x, y, z, vx, vy, vz] in |
Raises:
| Type | Description |
|---|---|
RuntimeError | If the state cannot be computed or the frame conversion fails. |
state_itrf method descriptor ¶
state_itrf(epoch) -> ndarray
Compute state at a specific epoch in ITRF coordinates.
state_koe_mean method descriptor ¶
state_koe_mean(epoch: Epoch, angle_format: AngleFormat) -> ndarray
Compute state as mean Keplerian elements at a specific epoch.
Mean elements are orbit-averaged elements that remove short-period and long-period J2 perturbations using first-order Brouwer-Lyddane theory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Target epoch. | required |
angle_format | AngleFormat | Format for angular elements. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: Mean Keplerian elements [a, e, i, Ω, ω, M]. |
state_koe_osc method descriptor ¶
state_koe_osc(epoch: Epoch, angle_format: AngleFormat) -> ndarray
Compute state as osculating Keplerian elements at a specific epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Target epoch. | required |
angle_format | AngleFormat | Format for angular elements. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: Osculating Keplerian elements [a, e, i, Ω, ω, M]. |
states_bcbf method descriptor ¶
Compute states at multiple epochs in the propagator's central body's body-centered body-fixed (BCBF) frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epochs | list[Epoch] | List of epochs for state computation. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of BCBF state vectors [x, y, z, vx, vy, vz] (meters, m/s). |
states_bci method descriptor ¶
Compute states at multiple epochs in the propagator's central body's body-centered inertial (BCI) frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epochs | list[Epoch] | List of epochs for state computation. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of BCI state vectors [x, y, z, vx, vy, vz] (meters, m/s). |
states_ecef method descriptor ¶
states_eci method descriptor ¶
states_eme2000 method descriptor ¶
states_gcrf method descriptor ¶
states_in_frame method descriptor ¶
states_in_frame(frame: ReferenceFrame, epochs: list[Epoch]) -> List
Compute states at multiple epochs expressed in an arbitrary reference frame, converting from the propagator's native central-body frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
frame | ReferenceFrame | The reference frame to express the states in. | required |
epochs | list[Epoch] | List of epochs for state computation. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of state vectors [x, y, z, vx, vy, vz] in |
states_itrf method descriptor ¶
states_koe_mean method descriptor ¶
states_koe_mean(epochs: list[Epoch], angle_format: AngleFormat) -> List
Compute states as mean Keplerian elements at multiple epochs.
Mean elements are orbit-averaged elements that remove short-period and long-period J2 perturbations using first-order Brouwer-Lyddane theory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epochs | list[Epoch] | List of target epochs. | required |
angle_format | AngleFormat | Format for angular elements. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of mean Keplerian elements [a, e, i, Ω, ω, M]. |
states_koe_osc method descriptor ¶
states_koe_osc(epochs: list[Epoch], angle_format: AngleFormat) -> List
Compute states as osculating Keplerian elements at multiple epochs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epochs | list[Epoch] | List of target epochs. | required |
angle_format | AngleFormat | Format for angular elements. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of osculating Keplerian elements [a, e, i, Ω, ω, M]. |
step_by method descriptor ¶
Step forward by a specified time duration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step_size | float | Time step in seconds. | required |
step_past method descriptor ¶
Step past a specified target epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_epoch | Epoch | The epoch to step past. | required |
stm method descriptor ¶
stm() -> ndarray
Get current STM (State Transition Matrix) if enabled.
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray or None: The current STM (n x n matrix), or None if STM not enabled. |
stm_at method descriptor ¶
terminated method descriptor ¶
terminated() -> bool
Check if propagator is terminated due to a terminal event.
Returns:
| Name | Type | Description |
|---|---|---|
bool | bool | True if propagation was stopped by a terminal event. |
with_identity method descriptor ¶
with_identity(name: Union[str, None], uuid_str: Union[str, None], id: Union[int, None]) -> NumericalOrbitPropagator
Set all identity fields and return self (builder pattern).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str or None | New name. | required |
uuid_str | str or None | New UUID string. | required |
id | int or None | New numeric ID. | required |
Returns:
| Name | Type | Description |
|---|---|---|
NumericalOrbitPropagator | NumericalOrbitPropagator | Self for method chaining. |
Raises:
| Type | Description |
|---|---|
ValueError | If the UUID string is invalid. |
See Also¶
- NumericalPropagator - Generic numerical propagator for arbitrary dynamics
- ForceModelConfig - Force model configuration
- Event Detection - Event detection system
- KeplerianPropagator - Analytical two-body propagator
- Numerical Propagation Guide - User guide documentation