module sfx_esm_param !> @brief ESM surface flux model parameters !> @details all in SI units ! modules used ! -------------------------------------------------------------------------------- use sfx_phys_const ! -------------------------------------------------------------------------------- ! directives list ! -------------------------------------------------------------------------------- implicit none ! -------------------------------------------------------------------------------- integer, public, parameter :: surface_ocean = 0 !> ocean surface integer, public, parameter :: surface_land = 1 !> land surface !> von Karman constant [n/d] real, parameter :: kappa = 0.40 !> inverse Prandtl (turbulent) number in neutral conditions [n/d] real, parameter :: Pr_t_0_inv = 1.15 !> inverse Prandtl (turbulent) number in free convection [n/d] real, parameter :: Pr_t_inf_inv = 3.5 !> stability function coeff. (unstable) [= g4 & g10 in deprecated code] real, parameter :: alpha_m = 16.0 real, parameter :: alpha_h = 16.0 real, parameter :: alpha_h_fix = 1.2 !> stability function coeff. (stable) real, parameter :: beta_m = 4.7 real, parameter :: beta_h = beta_m !> --- max Ri-bulk value in stable case ( < 1 / beta_m ) real, parameter :: Rib_max = 0.9 / beta_m !> Re fully roughness minimum value [n/d] real, parameter :: Re_rough_min = 16.3 !> roughness model coeff. [n/d] !> --- transitional mode !> B = log(z0_m / z0_t) = B1 * log(B3 * Re) + B2 real, parameter :: B1_rough = 5.0 / 6.0 real, parameter :: B2_rough = 0.45 real, parameter :: B3_rough = kappa * Pr_m !> --- fully rough mode (Re > Re_rough_min) !> B = B4 * Re^(B2) real, parameter :: B4_rough =(0.14 * (30.0**B2_rough)) * (Pr_m**0.8) real, parameter :: B_max_land = 2.0 real, parameter :: B_max_ocean = 8.0 !> Charnock parameters !> z0 = Re_visc_min * (nu / u_dyn) + gamma_c * (u_dyn^2 / g) real, parameter :: gamma_c = 0.0144 real, parameter :: Re_visc_min = 0.111 real, parameter :: h_charnock = 10.0 real, parameter :: c1_charnock = log(h_charnock * (g / gamma_c)) real, parameter :: c2_charnock = Re_visc_min * nu_air * c1_charnock end module sfx_esm_param