def saastamoinen_zenith_wet_delay(latitude, height, temperature, e): r"""Calculates zenith wet delay based Saastamoinen model The total tropospheric delay for a given zenith distance :math:`z` is determined after Equation (19a) in Saastamoinen :cite:`saastamoinen1972`: .. math:: \Delta T = 0.002277 \cdot \sec z \cdot (p + (1255/T + 0.05) \cdot e) - 1.16 \cdot \tan^2 z The zenith tropospheric delay is determined with :math:`z = 0`: .. math:: \Delta T^z = \Delta T_h^z + \Delta T_w^z = zhd + zwd with the zenith hydrostatic delay :math:`zhd = 0.002277 \cdot p` and zenith wet delay :math:`zwd = 0.002277 \cdot (1255/T + 0.05) \cdot e`. Args: latitude (numpy.ndarray): Geodetic latitude for each observation in [rad] height (numpy.ndarray): Orthometric height for each observation in [m] temperature (numpy.ndarray): Temperature for each observation in [Celsius] e (numpy.ndarray): Water vapor pressure for each observation in [hPa] Returns: numpy.ndarray: Zenith wet delay for each observation in [m] """ # Zenith wet delay based on Eq. (19a) in Saastamoinen :cite:`saastamoinen1972` return 0.002_276_8 * (1255 / Unit.celsius_to_kelvin(temperature) + 0.05) * e
def davis_zenith_wet_delay(latitude, height, temperature, e): r"""Calculates zenith wet delay based on Saastamoinen/Davis model The total tropospheric delay for a given zenith distance :math:`z` is determined after Equation (19a) in Saastamoinen :cite:`saastamoinen1972`: .. math:: \Delta T = 0.002277 \cdot \sec z \cdot (p + (1255/T + 0.05) \cdot e) - 1.16 \cdot \tan^2 z The zenith tropospheric delay is determined with :math:`z = 0`: .. math:: \Delta T^z = \Delta T_h^z + \Delta T_w^z = zhd + zwd with the zenith hydrostatic delay :math:`zhd = 0.002277 \cdot p` and zenith wet delay :math:`zwd = 0.002277 \cdot (1255/T + 0.05) \cdot e`. A Fortran routine written by Davis corrects also for the gravity effect due to height :math:`H` and latitude :math:`\phi` (see http://acc.igs.org/tropo/wetsaas.f) and uses the constant :math:`0.0022768` instead of :math:`0.002277`, which leads to .. math:: zwd = 0.0022768 \cdot (1255/T + 0.05) \cdot e / (1 - 0.00266 \cos 2 \phi - 0.00000028 H) . The difference between the orthometric height and geodetic height is called geoid undulation and can reach up to 100 m due to Boehm et al. :cite:`boehm2007`. The influence of height difference is not significant in this equation. The geodetic (ellipsoidal) height is therefore often used instead of the orthometric height. Args: latitude (numpy.ndarray): Geodetic latitude for each observation in [rad] height (numpy.ndarray): Orthometric height for each observation in [m] temperature (numpy.ndarray): Temperature for each observation in [Celsius] e (numpy.ndarray): Water vapor pressure for each observation in [hPa] Returns: numpy.ndarray: Zenith wet delay for each observation in [m] """ gravity_corr = saastamoinen_gravity_correction(latitude, height) # Zenith wet delay based on Eq. (19a) in Saastamoinen :cite:`saastamoinen1972` with additional gravity # correction zwd = 0.002_276_8 * (1255 / Unit.celsius_to_kelvin(temperature) + 0.05) * e / gravity_corr return zwd