--- trunk/phylmd/fisrtilp.f 2018/02/05 10:39:38 254 +++ trunk/phylmd/fisrtilp.f90 2019/09/26 17:08:42 339 @@ -4,9 +4,9 @@ contains - SUBROUTINE fisrtilp(dtime, paprs, pplay, t, q, ptconv, ratqs, d_t, d_q, & - d_ql, rneb, radliq, rain, snow, pfrac_impa, pfrac_nucl, pfrac_1nucl, & - frac_impa, frac_nucl, prfl, psfl, rhcl) + SUBROUTINE fisrtilp(paprs, pplay, t, q, ptconv, ratqs, d_t, d_q, d_ql, rneb, & + cldliq, rain, snow, pfrac_impa, pfrac_nucl, pfrac_1nucl, frac_impa, & + frac_nucl, prfl, psfl, rhcl) ! From phylmd/fisrtilp.F, version 1.2, 2004/11/09 16:55:40 ! First author: Z. X. Li (LMD/CNRS), 20 mars 1995 @@ -14,15 +14,16 @@ ! Objet : condensation et pr\'ecipitation stratiforme, sch\'ema de ! nuage, sch\'ema de condensation \`a grande \'echelle (pluie). + USE numer_rec_95, ONLY: nr_erf + + use comconst, only: dtphys USE comfisrtilp, ONLY: cld_lc_con, cld_lc_lsc, cld_tau_con, & cld_tau_lsc, coef_eva, ffallv_con, ffallv_lsc, iflag_pdf, reevap_ice USE dimphy, ONLY: klev, klon USE fcttre, ONLY: foede, foeew - USE numer_rec_95, ONLY: nr_erf USE suphec_m, ONLY: rcpd, rd, retv, rg, rlstt, rlvtt, rtt USE yoethf_m, ONLY: r2es, r5ies, r5les, rvtmp2 - REAL, INTENT (IN):: dtime ! intervalle du temps (s) REAL, INTENT (IN):: paprs(klon, klev+1) ! pression a inter-couche REAL, INTENT (IN):: pplay(klon, klev) ! pression au milieu de couche REAL, INTENT (IN):: t(klon, klev) ! temperature (K) @@ -37,7 +38,7 @@ REAL, INTENT (out):: d_ql(klon, klev) ! incrementation de l'eau liquide REAL, INTENT (out):: rneb(klon, klev) ! fraction nuageuse - REAL, INTENT (out):: radliq(klon, klev) + REAL, INTENT (out):: cldliq(klon, klev) ! eau liquide utilisee dans rayonnement REAL, INTENT (out):: rain(klon) ! pluies (mm/s) @@ -118,8 +119,8 @@ PRINT *, 'fisrtilp, ninter:', ninter PRINT *, 'fisrtilp, evap_prec:', evap_prec PRINT *, 'fisrtilp, cpartiel:', cpartiel - IF (abs(dtime / real(ninter) - 360.) > 0.001) THEN - PRINT *, "fisrtilp : ce n'est pas pr\'evu, voir Z. X. Li", dtime + IF (abs(dtphys / real(ninter) - 360.) > 0.001) THEN + PRINT *, "fisrtilp : ce n'est pas pr\'evu, voir Z. X. Li", dtphys PRINT *, "Je pr\'ef\`ere un sous-intervalle de 6 minutes." END IF appel1er = .FALSE. @@ -165,7 +166,7 @@ d_q(i, k) = 0.0 d_ql(i, k) = 0.0 rneb(i, k) = 0.0 - radliq(i, k) = 0.0 + cldliq(i, k) = 0.0 frac_nucl(i, k) = 1. frac_impa(i, k) = 1. END DO @@ -204,9 +205,9 @@ zmair = (paprs(i, k)-paprs(i, k+1))/rg zcpair = rcpd*(1.0+rvtmp2*zq(i)) zcpeau = rcpd*rvtmp2 - zt(i) = ((t(i, k + 1) + d_t(i, k + 1)) * zrfl(i) * dtime & + zt(i) = ((t(i, k + 1) + d_t(i, k + 1)) * zrfl(i) * dtphys & * zcpeau + zmair * zcpair* zt(i)) & - / (zmair * zcpair + zrfl(i) * dtime * zcpeau) + / (zmair * zcpair + zrfl(i) * dtphys * zcpeau) END IF END DO @@ -221,10 +222,10 @@ zqev = max(0.0, (zqs(i)-zq(i))*zneb(i)) zqevt = coef_eva*(1.0-zq(i)/zqs(i))*sqrt(zrfl(i))* & (paprs(i, k)-paprs(i, k+1))/pplay(i, k)*zt(i)*rd/rg - zqevt = max(0.0, min(zqevt, zrfl(i)))*rg*dtime/ & + zqevt = max(0.0, min(zqevt, zrfl(i)))*rg*dtphys/ & (paprs(i, k)-paprs(i, k+1)) zqev = min(zqev, zqevt) - zrfln(i) = zrfl(i) - zqev*(paprs(i, k)-paprs(i, k+1))/rg/dtime + zrfln(i) = zrfl(i) - zqev*(paprs(i, k)-paprs(i, k+1))/rg/dtphys ! pour la glace, on r\'e\'evapore toute la pr\'ecip dans la ! couche du dessous la glace venant de la couche du @@ -233,9 +234,9 @@ IF (zt(i)0.0) THEN d_ql(i, k) = zoliq(i) zrfl(i) = zrfl(i) + max(zcond(i) - zoliq(i), 0.) & - * (paprs(i, k) - paprs(i, k + 1)) / (rg * dtime) + * (paprs(i, k) - paprs(i, k + 1)) / (rg * dtphys) END IF IF (zt(i)