Keplerian Propagator¶
Analytical two-body orbit propagator using Keplerian orbital elements. The Keplerian propagator provides fast, analytical orbit propagation for unperturbed two-body motion. It uses closed-form solutions to Kepler's equations for orbital element propagation.
Orbital Elements¶
The propagator accepts orbital elements in the following order: 1. a - Semi-major axis (meters) 2. e - Eccentricity (dimensionless) 3. i - Inclination (degrees radians) 4. Ω - Right ascension of ascending node (degrees radians) 5. ω - Argument of periapsis (degrees radians) 6. M or ν - Mean anomaly or true anomaly (degrees radians)
Use OrbitRepresentation to specify element type: - MEAN_ELEMENTS - Mean orbital elements with mean anomaly - OSCULATING_ELEMENTS - Osculating elements with true anomaly
Class Reference¶
KeplerianPropagator ¶
KeplerianPropagator(epoch: Epoch, state: ndarray, frame: OrbitFrame, representation: OrbitRepresentation, angle_format: AngleFormat, step_size: float)
Keplerian orbit propagator using two-body dynamics.
The Keplerian propagator implements ideal two-body orbital mechanics without perturbations. It's fast and accurate for short time spans but doesn't account for real-world effects like drag, J2, solar radiation pressure, etc.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
state | ndarray | 6-element state vector. | required |
frame | OrbitFrame | Reference frame (ECI or ECEF). | required |
representation | OrbitRepresentation | State representation (Cartesian or Keplerian). | required |
angle_format | AngleFormat | Angle format for Keplerian elements. | required |
step_size | float | Step size in seconds for propagation. | required |
Attributes:
| Name | Type | Description |
|---|---|---|
current_epoch | Epoch | Current propagation time |
initial_epoch | Epoch | Initial epoch from propagator creation |
step_size | float | Current step size in seconds |
trajectory | OrbitTrajectory | Accumulated trajectory states |
Example
Initialize instance.
trajectory property ¶
Get accumulated trajectory.
Returns:
| Name | Type | Description |
|---|---|---|
OrbitalTrajectory | SOrbitTrajectory | The accumulated trajectory. |
Example
from_ecef builtin ¶
from_ecef(epoch: Epoch, state: ndarray, step_size: float) -> KeplerianPropagator
Create a new Keplerian propagator from Cartesian state in ECEF frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
state | ndarray | 6-element Cartesian state [x, y, z, vx, vy, vz] in ECEF frame. | required |
step_size | float | Step size in seconds for propagation. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | New propagator instance. |
from_eci builtin ¶
from_eci(epoch: Epoch, state: ndarray, step_size: float) -> KeplerianPropagator
Create a new Keplerian propagator from Cartesian state in ECI frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
state | ndarray | 6-element Cartesian state [x, y, z, vx, vy, vz] in ECI frame. | required |
step_size | float | Step size in seconds for propagation. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | New propagator instance. |
from_keplerian builtin ¶
from_keplerian(epoch: Epoch, elements: ndarray, angle_format: AngleFormat, step_size: float) -> KeplerianPropagator
Create a new Keplerian propagator from Keplerian orbital elements.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
elements | ndarray | 6-element Keplerian elements [a, e, i, raan, argp, mean_anomaly]. | required |
angle_format | AngleFormat | Angle format (Degrees or Radians). | required |
step_size | float | Step size in seconds for propagation. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | New propagator instance. |
generate_uuid method descriptor ¶
generate_uuid() -> Any
Generate a new UUID and set it in-place (mutating).
get_id method descriptor ¶
get_id() -> int
Get the current numeric ID.
Returns:
| Type | Description |
|---|---|
int | int or None: The numeric ID, or None if not set. |
Example
get_name method descriptor ¶
get_name() -> str
Get the current name.
Returns:
| Type | Description |
|---|---|
str | str or None: The name, or None if not set. |
Example
get_uuid method descriptor ¶
get_uuid() -> str
Get the current UUID.
Returns:
| Type | Description |
|---|---|
str | str or None: The UUID as a string, or None if not set. |
Example
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 |
Example
propagate_to method descriptor ¶
Propagate to a specific target epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_epoch | Epoch | The epoch to propagate to. | required |
Example
reset method descriptor ¶
reset() -> Any
Reset propagator to initial conditions.
Example
set_eviction_policy_max_age method descriptor ¶
Set eviction policy to keep states within maximum age.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
max_age | float | Maximum age in seconds. | required |
Example
set_eviction_policy_max_size method descriptor ¶
Set eviction policy to keep maximum number of states.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
max_size | int | Maximum number of states to retain. | required |
Example
set_id method descriptor ¶
Set the numeric ID in-place (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id | int or None | Numeric ID to assign, or None to clear. | required |
set_identity method descriptor ¶
set_initial_conditions method descriptor ¶
set_initial_conditions(epoch: Epoch, state: ndarray, frame: OrbitFrame, representation: OrbitRepresentation, angle_format: AngleFormat) -> Any
Set initial conditions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Initial epoch. | required |
state | ndarray | Initial state vector. | required |
frame | OrbitFrame | Reference frame. | required |
representation | OrbitRepresentation | State representation. | required |
angle_format | AngleFormat | Angle format. | required |
Example
set_name method descriptor ¶
Set the name in-place (mutating).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str or None | Name to assign, or None to clear. | required |
set_step_size method descriptor ¶
Set step size in seconds (explicit method).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_step_size | float | New step size in seconds. | required |
Example
state method descriptor ¶
state_ecef method descriptor ¶
state_eci method descriptor ¶
state_eme2000 method descriptor ¶
state_gcrf method descriptor ¶
state_itrf method descriptor ¶
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 for state computation. | required |
angle_format | AngleFormat | If AngleFormat.DEGREES, angular elements are returned in degrees, otherwise in radians. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: Mean Keplerian elements [a, e, i, raan, argp, mean_anomaly]. |
state_koe_osc method descriptor ¶
state_koe_osc(epoch: Epoch, angle_format: AngleFormat) -> ndarray
Compute state as osculating elements at a specific epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Target epoch for state computation. | required |
angle_format | AngleFormat | If AngleFormat.DEGREES, angular elements are returned in degrees, otherwise in radians. | required |
Returns:
| Type | Description |
|---|---|
ndarray | numpy.ndarray: Osculating elements [a, e, i, raan, argp, mean_anomaly]. |
states method descriptor ¶
states_ecef method descriptor ¶
states_eci method descriptor ¶
states_gcrf method descriptor ¶
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 epochs for state computation. | required |
angle_format | AngleFormat | If AngleFormat.DEGREES, angular elements are returned in degrees, otherwise in radians. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of mean Keplerian element vectors [a, e, i, raan, argp, mean_anomaly]. |
states_koe_osc method descriptor ¶
states_koe_osc(epochs: list[Epoch], angle_format: AngleFormat) -> List
Compute states as osculating elements at multiple epochs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epochs | list[Epoch] | List of epochs for state computation. | required |
angle_format | AngleFormat | If AngleFormat.DEGREES, angular elements are returned in degrees, otherwise in radians. | required |
Returns:
| Type | Description |
|---|---|
List | list[numpy.ndarray]: List of osculating element vectors. |
step method descriptor ¶
step() -> Any
Step forward by the default step size.
Example
step_by method descriptor ¶
Step forward by a specified time duration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step_size | float | Time step in seconds. | required |
Example
step_past method descriptor ¶
Step past a specified target epoch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_epoch | Epoch | The epoch to step past. | required |
Example
with_id method descriptor ¶
with_id(id: int) -> KeplerianPropagator
Set the numeric ID and return self (consuming constructor pattern).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id | int | Numeric ID to assign to this propagator. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | Self with ID set. |
with_identity method descriptor ¶
with_identity(name: Union[str, None], uuid_str: Union[str, None], id: Union[int, None]) -> KeplerianPropagator
Set all identity fields at once and return self (consuming constructor pattern).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str or None | Optional name to assign. | required |
uuid_str | str or None | Optional UUID string to assign. | required |
id | int or None | Optional numeric ID to assign. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | Self with identity set. |
with_name method descriptor ¶
with_name(name: str) -> KeplerianPropagator
Set the name and return self (consuming constructor pattern).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Name to assign to this propagator. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | Self with name set. |
Example
with_new_uuid method descriptor ¶
with_new_uuid() -> KeplerianPropagator
Generate a new UUID, set it, and return self (consuming constructor pattern).
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | Self with new UUID set. |
with_uuid method descriptor ¶
with_uuid(uuid_str: str) -> KeplerianPropagator
Set the UUID and return self (consuming constructor pattern).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
uuid_str | str | UUID string to assign to this propagator. | required |
Returns:
| Name | Type | Description |
|---|---|---|
KeplerianPropagator | KeplerianPropagator | Self with UUID set. |
See Also¶
- SGPPropagator - SGP4/SDP4 propagator for TLE data
- Keplerian Elements - Orbital element conversion functions
- OrbitRepresentation - Element type specification