orbix.observatory.solar_system#
Solar system body positions using Vallado (2013) static ephemerides.
All positions are heliocentric ecliptic, in AU. Time inputs are MJD.
This module is a pure-JAX port of the keplerplanet method in
EXOSIMS.Prototypes.Observatory, using orbix’s own Kepler solver.
- Reference:
Vallado, D. A. (2013). Fundamentals of Astrodynamics and Applications. Appendix D.4 – Planetary ephemerides.
Attributes#
Functions#
Convert MJD to Julian centuries since J2000. |
|
|
Obliquity of the ecliptic in degrees (Vallado polynomial). |
|
Rotation matrix about axis 1 (x). |
|
Rotation matrix about axis 3 (z). |
|
Rotate heliocentric equatorial -> ecliptic. |
|
Rotate heliocentric ecliptic -> equatorial. |
|
Pad coefficient list to length n with zeros. |
|
Pack planet ephemeris dict into a (6, NCOEFF) array. |
|
Evaluate all 6 orbital element polynomials at once. |
|
Heliocentric ecliptic position of a solar system body. |
|
Heliocentric equatorial position of a solar system body. |
Heliocentric ecliptic position of Earth (AU). |
|
Heliocentric equatorial position of Earth (AU). |
|
|
Convert equatorial RA/Dec to ecliptic longitude/latitude. |
|
Angular separation between the Sun and a target as seen from the observatory. |
|
Solar elongation (angle between Sun and target as seen from observer). |
Module Contents#
- orbix.observatory.solar_system._J2000_JD = 2451545.0#
- orbix.observatory.solar_system._J2000_MJD = 51544.5#
- orbix.observatory.solar_system._JULIAN_CENTURY = 36525.0#
- orbix.observatory.solar_system._mjd_to_julian_centuries(mjd)[source]#
Convert MJD to Julian centuries since J2000.
- orbix.observatory.solar_system.obliquity_deg(mjd)[source]#
Obliquity of the ecliptic in degrees (Vallado polynomial).
- orbix.observatory.solar_system._rot1(theta)[source]#
Rotation matrix about axis 1 (x).
- Parameters:
theta (float)
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system._rot3(theta)[source]#
Rotation matrix about axis 3 (z).
- Parameters:
theta (float)
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system.equat2eclip(r_equat, mjd)[source]#
Rotate heliocentric equatorial -> ecliptic.
- Parameters:
r_equat (jax.numpy.ndarray) – Position vector(s) in equatorial frame, shape
(3,)or(n, 3).mjd (float) – MJD (scalar) for obliquity calculation.
- Returns:
Position vector(s) in ecliptic frame, same shape as input.
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system.eclip2equat(r_eclip, mjd)[source]#
Rotate heliocentric ecliptic -> equatorial.
- Parameters:
r_eclip (jax.numpy.ndarray) – Position vector(s) in ecliptic frame, shape
(3,)or(n, 3).mjd (float) – MJD (scalar) for obliquity calculation.
- Returns:
Position vector(s) in equatorial frame, same shape as input.
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system._NCOEFF = 4#
- orbix.observatory.solar_system._EPHEM_RAW#
- orbix.observatory.solar_system._pad(coeffs, n=_NCOEFF)[source]#
Pad coefficient list to length n with zeros.
- orbix.observatory.solar_system._pack_planet(raw)[source]#
Pack planet ephemeris dict into a (6, NCOEFF) array.
Row order: a, e, I, O, w, lM.
- Parameters:
raw (dict)
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system._eval_elements(coeffs, TDB)[source]#
Evaluate all 6 orbital element polynomials at once.
- Parameters:
coeffs (jax.numpy.ndarray) – Shape
(6, NCOEFF)– rows are [a, e, I, O, w, lM].TDB (float) – Julian centuries since J2000.
- Returns:
Shape
(6,)– [a, e, I_deg, O_deg, w_deg, lM_deg].- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system.planet_position_ecliptic(body, mjd)[source]#
Heliocentric ecliptic position of a solar system body.
Uses Vallado (2013) Algorithms 2 and 10 – Keplerian elements propagated with polynomial time corrections. All 6 orbital elements are evaluated in a single vectorized
matmul.
- orbix.observatory.solar_system.planet_position_equatorial(body, mjd)[source]#
Heliocentric equatorial position of a solar system body.
- orbix.observatory.solar_system.earth_position_ecliptic(mjd)[source]#
Heliocentric ecliptic position of Earth (AU).
- Parameters:
mjd (float)
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system.earth_position_equatorial(mjd)[source]#
Heliocentric equatorial position of Earth (AU).
- Parameters:
mjd (float)
- Return type:
jax.numpy.ndarray
- orbix.observatory.solar_system.radec_to_ecliptic(ra_rad, dec_rad, mjd)[source]#
Convert equatorial RA/Dec to ecliptic longitude/latitude.
- orbix.observatory.solar_system.sun_target_angle(obs_position_eclip, ra_rad, dec_rad, mjd)[source]#
Angular separation between the Sun and a target as seen from the observatory.
- Parameters:
- Returns:
Angular separation in radians.
- Return type: