Source code for foxes.utils.abl.stable

import numpy as np
from .neutral import logz as lgz


[docs] def logz(height, z0): """ Calculates the log factor for wind speed profiles. Parameters ---------- height: float The evaluation height z0: float The roughness length Returns ------- lz: float The log factor :group: utils.abl.stable """ return lgz(height, z0)
[docs] def psi(height, mol): """ The Psi function Parameters ---------- height: float The height value mol: float The Monin-Obukhov height Returns ------- psi: float The Psi function value :group: utils.abl.stable """ h = np.minimum(height, np.abs(mol)) return -5.0 * h / mol
[docs] def ustar(ws_ref, h_ref, z0, mol, kappa=0.41): """ Calculates the friction velocity, based on reference data. Parameters ---------- ws_ref: float The reference wind speed h_ref: float The reference height z0: float The roughness length mol: float The Monin-Obukhov height kappa: float The von Karman constant Returns ------- ustar: float The friction velocity :group: utils.abl.stable """ return ws_ref * kappa / (logz(h_ref, z0) - psi(h_ref, mol))
[docs] def calc_ws(height, z0, ustar, psi, kappa=0.41): """ Calculate wind speeds at given height Parameters ---------- height: float The evaluation height z0: float The roughness length ustar: float The friction velocity psi: float The Psi function values kappa: float The von Karman constant Returns ------- ws: float The wind speed :group: utils.abl.stable """ return ustar / kappa * (logz(height, z0) - psi)