diff --git a/srcF/sfx_most_snow.f90 b/srcF/sfx_most_snow.f90 index b6039895a717357c1b2e40234643fbca258ca2d1..6bae4bacea7b83f9c3fdf2c579d4b4549d28d603 100644 --- a/srcF/sfx_most_snow.f90 +++ b/srcF/sfx_most_snow.f90 @@ -189,7 +189,7 @@ contains ! --- get the fluxes ! ---------------------------------------------------------------------------- call get_dynamic_scales(Udyn, Tdyn, Qdyn, zeta, & - Lsnow, S_mean, h_salt, & + Lsnow, S_mean, h_salt, surface_type, & U, Tsemi, dT, dQ, h, z0_m, z0_t, (g / Tsemi), 10) ! ---------------------------------------------------------------------------- @@ -228,14 +228,14 @@ contains !< @brief get dynamic scales ! -------------------------------------------------------------------------------- subroutine get_dynamic_scales(Udyn, Tdyn, Qdyn, zeta, & - Lsnow, S_mean, h_salt, & + Lsnow, S_mean, h_salt, surface_type, & U, Tsemi, dT, dQ, z, z0_m, z0_t, beta, maxiters) ! ---------------------------------------------------------------------------- real, intent(out) :: Udyn, Tdyn, Qdyn !< dynamic scales real, intent(out) :: zeta !< = z/L real, intent(out) :: Lsnow, S_mean real, intent(out) :: h_salt - + integer, intent(in) :: surface_type real, intent(in) :: U !< abs(wind speed) at z real, intent(in) :: Tsemi !< semi-sum of temperature at z and at surface real, intent(in) :: dT, dQ !< temperature & humidity difference between z and at surface @@ -285,6 +285,7 @@ contains zeta = z * Linv !S_salt =0.0004 call S_mean_fun(S_salt, Udyn) + if (surface_type==3) then if (Udyn>u_thsnow) then call simpson_integration(d_s, 0.00000886, 0.0001, 1000); @@ -294,13 +295,10 @@ contains Linv=Linv*((1-S_mean)/(1+sigma_m*S_mean))+(g*w_snow*sigma_m*S_mean/(Udyn**3.0))/(1+sigma_m*S_mean) zeta = z * Linv Lsnow=1/Linv - write(*,*) S_mean, sigma_m, w_snow - !pause - !stop - - endif - - + endif + else + Linv = kappa * beta * (Tdyn + gamma * Qdyn * Tsemi) / (Udyn * Udyn) + endif end do