Source code for orbix.observatory.observatory

"""Observatory composition wrapper around ObservatoryL2Halo.

Bundles an orbit model with platform-level operational scalars
(temperature, overheads, stability, keepout limits) that jaxedith
and other downstream consumers read when assembling ETC count rates.

Follows equinox-best-practices Style A: pure field declarations with
defaults, no custom __init__.
"""

import equinox as eqx

from orbix.observatory.orbit import ObservatoryL2Halo


[docs] class Observatory(eqx.Module): """Space telescope observatory platform. Composes an :class:`ObservatoryL2Halo` orbit model with operational scalars (thermal state, overheads, wavefront stability, keepout limits). All scalar fields have sensible defaults so a bare ``Observatory(orbit=orbit)`` constructs a reasonable HWO-like platform. Args: orbit: L2 halo orbit model. temperature_K: Telescope equilibrium temperature in Kelvin. settling_time_d: Slew-settling time in days. overhead_multi: Multiplicative overhead factor on science time. overhead_fixed_s: Fixed overhead in seconds per observation. stability_fact: Wavefront stability factor (EXOSIMS speckle model). keepout_min_deg: Minimum allowed solar elongation in degrees. keepout_max_deg: Maximum allowed solar elongation in degrees. """ orbit: ObservatoryL2Halo temperature_K: float = 270.0 settling_time_d: float = 1.0 overhead_multi: float = 1.0 overhead_fixed_s: float = 0.0 stability_fact: float = 1.0 keepout_min_deg: float = 0.0 keepout_max_deg: float = 180.0