ssapy_toolkit.Orbital_Mechanics.keplerian
Keplerian orbital element conversions and utilities.
This module provides functions for converting between Keplerian orbital elements and Cartesian state vectors, as well as computing various orbital parameters.
Functions
|
Compute semi-major axis (a) from perigee (rp) and apogee (ra) distances. |
|
Compute both semi-major axis and eccentricity from apsides. |
|
Calculate apoapsis from semi-major axis and periapsis. |
|
Calculate apoapsis distance from semi-major axis and eccentricity. |
|
Calculate classical orbital elements from position and velocity. |
|
Compute eccentricity (e) from perigee (rp) and apogee (ra) distances. |
|
Calculate the chance radius based on the velocity vector. |
|
Convert human-readable Keplerian Orbital Elements (KOE) to SSAPy format. |
|
Calculate JPL orbital elements using J2000 approximations. |
|
Convert Keplerian elements to parametric coordinates. |
|
Convert Keplerian orbital elements to state vectors using broadcasting. |
|
Convert Keplerian orbital elements to state vectors using loop. |
|
Calculate mean longitude from orbital angles. |
|
Compute periapsis and apoapsis from state vectors. |
|
Compute semi-major axis and eccentricity from apsides. |
|
Calculate periapsis distance from semi-major axis and eccentricity. |
|
Calculate the orbital period from the semi-major axis using Kepler's law. |
|
Get orbital elements for planets using REBOUND. |
|
Convert state vector (position and velocity) to Keplerian elements. |
|
Calculate true anomaly from various orbital parameters. |
|
Calculate velocity at periapsis. |
|
Calculate circular orbital velocity. |
|
Calculate orbital velocity using vis-viva equation. |
- ssapy_toolkit.Orbital_Mechanics.keplerian.a_from_periap(rp, ra)[source]
Compute semi-major axis (a) from perigee (rp) and apogee (ra) distances.
- ssapy_toolkit.Orbital_Mechanics.keplerian.ae_from_periap(rp, ra)[source]
Compute both semi-major axis and eccentricity from apsides.
- ssapy_toolkit.Orbital_Mechanics.keplerian.apapsis_from_a_rp(a, rp)[source]
Calculate apoapsis from semi-major axis and periapsis.
- ssapy_toolkit.Orbital_Mechanics.keplerian.apoapsis(a, e)[source]
Calculate apoapsis distance from semi-major axis and eccentricity.
- ssapy_toolkit.Orbital_Mechanics.keplerian.calculate_orbital_elements(r_, v_, mu_barycenter=398600441800000.0)[source]
Calculate classical orbital elements from position and velocity.
- Parameters:
r (array-like) – Position vector(s) in Cartesian coordinates (m). Can be single vector or array of vectors.
v (array-like) – Velocity vector(s) in Cartesian coordinates (m/s). Can be single vector or array of vectors.
mu_barycenter (float, optional) – Gravitational parameter (m^3/s^2). Defaults to EARTH_MU.
- Returns:
dict – Dictionary containing the following orbital elements: - ‘a’ : ndarray - Semi-major axis (m). - ‘e’ : ndarray - Eccentricity (dimensionless). - ‘i’ : ndarray - Inclination (rad). - ‘tl’ : ndarray - True longitude (rad). - ‘pa’ : ndarray - Argument of periapsis (rad). - ‘raan’ : ndarray - Longitude of ascending node (rad). - ‘ta’ : ndarray - True anomaly (rad). - ‘L’ : ndarray - Specific angular momentum magnitude (m^2/s).
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.e_from_periap(rp, ra)[source]
Compute eccentricity (e) from perigee (rp) and apogee (ra) distances.
- ssapy_toolkit.Orbital_Mechanics.keplerian.get_chance_radius(v, time_step)[source]
Calculate the chance radius based on the velocity vector.
- Parameters:
v (np.ndarray) – The velocity vector of the object at the final time step.
time_step (float) – The time step between checks in seconds.
- Returns:
float – The calculated chance radius in meters.
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.hkoe(kElements_or_a, e=None, i=None, pa=None, raan=None, nu=None)[source]
Convert human-readable Keplerian Orbital Elements (KOE) to SSAPy format.
- Parameters:
kElements_or_a (list, array, or float) – If a 6-element iterable [a, e, i, pa, raan, nu], it’s treated as the full set of elements. If a float, it’s treated as the semimajor axis (a), followed by 5 more positional arguments. Elements are: - a: semimajor axis (meters) - e: eccentricity (unitless) - i: inclination (degrees) - pa: argument of periapsis (degrees) - raan: right ascension of ascending node (degrees) - nu: true anomaly (degrees)
e (float, optional) – Remaining elements if 6 positional arguments are provided (degrees).
i (float, optional) – Remaining elements if 6 positional arguments are provided (degrees).
pa (float, optional) – Remaining elements if 6 positional arguments are provided (degrees).
raan (float, optional) – Remaining elements if 6 positional arguments are provided (degrees).
nu (float, optional) – Remaining elements if 6 positional arguments are provided (degrees).
- Returns:
Array of [a, e, i_rad, ap_rad, raan_rad, nu_rad] with angles in radians. Can be unpacked into individual variables or used as array.
- Return type:
- Raises:
ValueError – If arguments don’t match expected patterns (6-element iterable or 6 positional args).
Author –
------ –
Travis Yeager (yeager7@llnl.gov) –
- ssapy_toolkit.Orbital_Mechanics.keplerian.j2000_orbitals(planet='earth', Teph=2451545.0)[source]
Calculate JPL orbital elements using J2000 approximations.
Reference: https://ssd.jpl.nasa.gov/planets/approx_pos.html Valid for time interval 1800 AD - 2050 AD.
- Parameters:
- Returns:
dict – Dictionary with keys: ‘a’, ‘e’, ‘i’, ‘mean_longitude’, ‘longitude_of_perihelion’, ‘longitude_of_the_ascending_node’.
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.kepler_to_parametric(a, e, i, omega, pa, theta)[source]
Convert Keplerian elements to parametric coordinates.
- Parameters:
- Returns:
tuple – (x_final, y_final, z_final) parametric coordinates.
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.kepler_to_state(a=1, e=0, i=0, pa=0, raan=0, nu=0, mu=398600441800000.0)[source]
Convert Keplerian orbital elements to state vectors using broadcasting.
If any inputs are invalid (e.g., NaN or out-of-range values), the corresponding output is replaced with the average of the surrounding valid outputs.
- Parameters:
a (float or array-like) – Semi-major axis (m). Can be a single value or an array of values.
e (float or array-like) – Eccentricity (dimensionless). Must be in [0, 1).
i (float or array-like) – Inclination (rad). Must be in [0, π].
raan (float or array-like) – Right ascension of the ascending node (rad). Must be in [0, 2π].
pa (float or array-like) – Argument of perigee (rad). Must be in [0, 2π].
nu (float or array-like) – True anomaly (rad). Must be in [0, 2π].
mu (float, optional) – Gravitational parameter (m^3/s^2). Defaults to EARTH_MU.
- Returns:
A tuple containing: - r : ndarray
Position vector(s) in inertial frame (m). Shape is (3,) for single set of orbital elements or (N, 3) for multiple sets.
- vndarray
Velocity vector(s) in inertial frame (m/s). Shape is (3,) for single set of orbital elements or (N, 3) for multiple sets.
- Return type:
Notes
This function supports both single sets and arrays of orbital elements.
Invalid inputs (NaN or out-of-range) are handled by replacing with average of surrounding valid outputs.
Assumes all input values are in the same inertial reference frame.
- ssapy_toolkit.Orbital_Mechanics.keplerian.kepler_to_state_loop(a=1, e=0, i=0, pa=0, raan=0, nu=0, mu=398600441800000.0)[source]
Convert Keplerian orbital elements to state vectors using loop.
- Parameters:
a (float or array-like) – Semi-major axis (m).
e (float or array-like) – Eccentricity (dimensionless).
i (float or array-like) – Inclination (rad).
raan (float or array-like) – Right ascension of the ascending node (rad).
pa (float or array-like) – Argument of perigee (rad).
nu (float or array-like) – True anomaly (rad).
mu (float, optional) – Gravitational parameter (m^3/s^2). Defaults to EARTH_MU.
- Returns:
tuple – A tuple containing: - r : ndarray
Position vector(s) in inertial frame (m).
- vndarray
Velocity vector(s) in inertial frame (m/s).
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.mean_longitude(longitude_of_ascending_node, argument_of_periapsis, mean_anomaly)[source]
Calculate mean longitude from orbital angles.
- ssapy_toolkit.Orbital_Mechanics.keplerian.peri_apo_apsis_from_rv(r, v)[source]
Compute periapsis and apoapsis from state vectors.
- Parameters:
r (array-like) – Position vector (m).
v (array-like) – Velocity vector (m/s).
- Returns:
dict – Dictionary with keys ‘periapsis’ and ‘apoapsis’.
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.peri_apo_from_rv(perigee, apogee)[source]
Compute semi-major axis and eccentricity from apsides.
- ssapy_toolkit.Orbital_Mechanics.keplerian.periapsis(a, e)[source]
Calculate periapsis distance from semi-major axis and eccentricity.
- ssapy_toolkit.Orbital_Mechanics.keplerian.period(a, mu_barycenter=398600441800000.0)[source]
Calculate the orbital period from the semi-major axis using Kepler’s law.
This function computes the orbital period for a satellite orbiting a central body, based on the semi-major axis of the orbit and the gravitational parameter of the body (default is Earth).
- Parameters:
- Returns:
float or np.ndarray – Orbital period(s) in seconds.
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.rebound_orbital_elements(planet='earth', time='2000-1-1', format='utc')[source]
Get orbital elements for planets using REBOUND.
- ssapy_toolkit.Orbital_Mechanics.keplerian.state_to_kepler(r, v, mu=398600441800000.0)[source]
Convert state vector (position and velocity) to Keplerian elements.
- Parameters:
r (array-like) – Position vector in inertial frame (m). Can be single vector (3,) or array of vectors (N, 3).
v (array-like) – Velocity vector in inertial frame (m/s). Can be single vector (3,) or array of vectors (N, 3).
mu (float, optional) – Gravitational parameter (m^3/s^2). Defaults to EARTH_MU.
- Returns:
tuple – A tuple containing Keplerian orbital elements: - a : float or ndarray - Semi-major axis (m). - e : float or ndarray - Eccentricity (dimensionless). - i : float or ndarray - Inclination (rad). - pa : float or ndarray - Argument of perigee (rad). - raan : float or ndarray - RAAN (rad). - nu : float or ndarray - True anomaly (rad).
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.true_anomaly(eccentricity=None, eccentric_anomaly=None, mean_anomaly=None, true_longitude=None, argument_of_periapsis=None, longitude_of_ascending_node=None)[source]
Calculate true anomaly from various orbital parameters.
- Parameters:
eccentricity (float, optional) – Orbital eccentricity.
eccentric_anomaly (float, optional) – Eccentric anomaly (radians).
mean_anomaly (float, optional) – Mean anomaly (radians).
true_longitude (float, optional) – True longitude (radians).
argument_of_periapsis (float, optional) – Argument of periapsis (radians).
longitude_of_ascending_node (float, optional) – Longitude of ascending node (radians).
- Returns:
float – True anomaly (radians).
Author
——
Travis Yeager (yeager7@llnl.gov)
- ssapy_toolkit.Orbital_Mechanics.keplerian.v_periapsis(a, rp, mu)[source]
Calculate velocity at periapsis.
- ssapy_toolkit.Orbital_Mechanics.keplerian.vcircular(r=149597870700, mu_=1.32712786909e+20)[source]
Calculate circular orbital velocity.