--- trunk/phylmd/Interface_surf/calcul_fluxs.f 2018/08/02 14:27:11 299 +++ trunk/phylmd/Interface_surf/calcul_fluxs.f 2018/12/03 17:52:21 311 @@ -4,9 +4,9 @@ contains - SUBROUTINE calcul_fluxs(tsurf, p1lay, cal, beta, coef1lay, ps, qsurf, & - radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, tAcoef, qAcoef, tBcoef, & - qBcoef, tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l) + SUBROUTINE calcul_fluxs(tsurf, p1lay, cal, beta, cdragh, ps, qsurf, radsol, & + t1lay, q1lay, u1lay, v1lay, tAcoef, qAcoef, tBcoef, qBcoef, tsurf_new, & + evap, fluxlat, flux_t, dflux_s, dflux_l, dif_grnd) ! Cette routine calcule les flux en h et q à l'interface et une ! température de surface. @@ -31,16 +31,14 @@ real, intent(IN):: cal(:) ! (knon) capacité calorifique du sol real, intent(IN):: beta(:) ! (knon) évaporation réelle - real, intent(IN):: coef1lay(:) ! (knon) coefficient d'échange - real, intent(IN):: ps(:) ! (knon) pression au sol + real, intent(IN):: cdragh(:) ! (knon) coefficient d'échange + real, intent(IN):: ps(:) ! (knon) pression au sol, en Pa real, intent(OUT):: qsurf(:) ! (knon) humidité de l'air au-dessus du sol real, intent(IN):: radsol(:) ! (knon) - ! rayonnement net au sol (longwave + shortwave) - - real, intent(IN):: dif_grnd(:) ! (knon) - ! coefficient de diffusion vers le sol profond + ! net downward radiative (longwave + shortwave) flux at the surface + real, intent(IN):: dif_grnd ! coefficient de diffusion vers le sol profond real, intent(IN):: t1lay(:), q1lay(:), u1lay(:), v1lay(:) ! (knon) real, intent(IN):: tAcoef(:), qAcoef(:) ! (knon) @@ -53,7 +51,7 @@ real, intent(OUT):: evap(:) ! (knon) real, intent(OUT):: fluxlat(:), flux_t(:) ! (knon) - ! flux de chaleurs latente et sensible + ! flux de chaleurs latente et sensible, en W m-2 real, intent(OUT):: dflux_s(:), dflux_l(:) ! (knon) ! dérivées des flux de chaleurs sensible et latente par rapport à @@ -68,15 +66,16 @@ logical delta real zcor real, parameter:: t_grnd = 271.35 + real, parameter:: min_wind_speed = 1. ! in m s-1 !--------------------------------------------------------------------- knon = assert_eq([size(tsurf), size(p1lay), size(cal), size(beta), & - size(coef1lay), size(ps), size(qsurf), size(radsol), size(dif_grnd), & - size(t1lay), size(q1lay), size(u1lay), size(v1lay), size(tAcoef), & - size(qAcoef), size(tBcoef), size(qBcoef), size(tsurf_new), & - size(evap), size(fluxlat), size(flux_t), size(dflux_s), & - size(dflux_l)], "calcul_fluxs knon") + size(cdragh), size(ps), size(qsurf), size(radsol), size(t1lay), & + size(q1lay), size(u1lay), size(v1lay), size(tAcoef), size(qAcoef), & + size(tBcoef), size(qBcoef), size(tsurf_new), size(evap), & + size(fluxlat), size(flux_t), size(dflux_s), size(dflux_l)], & + "calcul_fluxs knon") ! Traitement de l'humidité du sol @@ -90,7 +89,8 @@ qsat(i), zcor) / RLVTT ENDDO - coef = coef1lay * (1. + SQRT(u1lay**2 + v1lay**2)) * p1lay / (RD * t1lay) + coef = cdragh * (min_wind_speed + SQRT(u1lay**2 + v1lay**2)) * p1lay & + / (RD * t1lay) sl = merge(RLSTT, RLVTT, tsurf < RTT) ! Q