orbix.observatory.keepout#

Sun/Earth keepout zone checks.

Determines whether a target star is observable based on angular separation from bright solar system bodies. Port of the keepout logic from EXOSIMS.Prototypes.Observatory.keepout, simplified to Sun + Earth (the Moon is dropped as negligible against the L2 geometry; see is_observable).

Functions#

_unit_vector(v)

Normalize vector to unit length.

_angular_sep(v1, v2)

Angular separation between two direction vectors (radians).

_target_ecliptic_dir(ra_rad, dec_rad, mjd)

Unit vector toward a target in heliocentric ecliptic frame.

body_angle(obs_pos_eclip, body_pos_eclip, ra_rad, ...)

Angle between a solar system body and a target as seen from the observatory.

is_observable(obs_pos_eclip, ra_rad, dec_rad, mjd[, ...])

Check if a target is observable (outside all keepout zones).

Module Contents#

orbix.observatory.keepout._unit_vector(v)[source]#

Normalize vector to unit length.

Parameters:

v (jax.numpy.ndarray)

Return type:

jax.numpy.ndarray

orbix.observatory.keepout._angular_sep(v1, v2)[source]#

Angular separation between two direction vectors (radians).

Parameters:
  • v1 (jax.numpy.ndarray)

  • v2 (jax.numpy.ndarray)

Return type:

float

orbix.observatory.keepout._target_ecliptic_dir(ra_rad, dec_rad, mjd)[source]#

Unit vector toward a target in heliocentric ecliptic frame.

Parameters:
Return type:

jax.numpy.ndarray

orbix.observatory.keepout.body_angle(obs_pos_eclip, body_pos_eclip, ra_rad, dec_rad, mjd)[source]#

Angle between a solar system body and a target as seen from the observatory.

Parameters:
  • obs_pos_eclip (jax.numpy.ndarray) – Observatory heliocentric ecliptic position (AU).

  • body_pos_eclip (jax.numpy.ndarray) – Body heliocentric ecliptic position (AU).

  • ra_rad (float) – Target RA in radians.

  • dec_rad (float) – Target Dec in radians.

  • mjd (float) – MJD for coordinate conversion.

Returns:

Angular separation in radians.

Return type:

float

orbix.observatory.keepout.is_observable(obs_pos_eclip, ra_rad, dec_rad, mjd, ko_sun_min_deg=45.0, ko_sun_max_deg=180.0, ko_earth_min_deg=0.0, ko_earth_max_deg=180.0)[source]#

Check if a target is observable (outside all keepout zones).

Parameters:
  • obs_pos_eclip (jax.numpy.ndarray) – Observatory heliocentric ecliptic position (AU), shape (3,).

  • ra_rad (float) – Target right ascension in radians.

  • dec_rad (float) – Target declination in radians.

  • mjd (float) – Modified Julian Date.

  • ko_sun_min_deg (float) – Minimum Sun keepout angle (degrees).

  • ko_sun_max_deg (float) – Maximum Sun keepout angle (degrees).

  • ko_earth_min_deg (float) – Minimum Earth keepout angle (degrees).

  • ko_earth_max_deg (float) – Maximum Earth keepout angle (degrees).

Returns:

True if the target is observable, False if it falls in a keepout zone.

Return type:

jaxtyping.Array