Source code for missiontools.comm.link

"""RF link budget analysis."""

from __future__ import annotations

import numpy as np
import numpy.typing as npt

from .antenna import AbstractAntenna
from ..orbit.propagation import propagate_analytical
from ..orbit.frames import geodetic_to_ecef, ecef_to_eci, eci_to_ecef
from ..orbit.constants import EARTH_SEMI_MAJOR_AXIS

_C = 299_792_458.0          # speed of light (m/s)
_K_DB = 10.0 * np.log10(1.380649e-23)  # Boltzmann constant in dBW/K/Hz ≈ -228.6