219 |
|
|
220 |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
221 |
|
|
222 |
REAL evap(klon), devap(klon) ! evaporation and its derivative |
REAL evap(klon) ! flux d'\'evaporation au sol |
223 |
REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee |
real devap(klon) ! derivative of the evaporation flux at the surface |
224 |
|
REAL sens(klon) ! flux de chaleur sensible au sol |
225 |
|
real dsens(klon) ! derivee du flux de chaleur sensible au sol |
226 |
REAL, save:: dlw(klon) ! derivee infra rouge |
REAL, save:: dlw(klon) ! derivee infra rouge |
227 |
REAL bils(klon) ! bilan de chaleur au sol |
REAL bils(klon) ! bilan de chaleur au sol |
228 |
REAL, save:: fder(klon) ! Derive de flux (sensible et latente) |
REAL, save:: fder(klon) ! Derive de flux (sensible et latente) |
252 |
REAL cldtau(klon, llm) ! epaisseur optique |
REAL cldtau(klon, llm) ! epaisseur optique |
253 |
REAL cldemi(klon, llm) ! emissivite infrarouge |
REAL cldemi(klon, llm) ! emissivite infrarouge |
254 |
|
|
255 |
REAL fluxq(klon, llm, nbsrf) ! flux turbulent d'humidite |
REAL flux_q(klon, nbsrf) ! flux turbulent d'humidite à la surface |
256 |
REAL fluxt(klon, llm, nbsrf) ! flux turbulent de chaleur |
REAL flux_t(klon, nbsrf) ! flux turbulent de chaleur à la surface |
257 |
REAL fluxu(klon, llm, nbsrf) ! flux turbulent de vitesse u |
REAL flux_u(klon, nbsrf) ! flux turbulent de vitesse u à la surface |
258 |
REAL fluxv(klon, llm, nbsrf) ! flux turbulent de vitesse v |
REAL flux_v(klon, nbsrf) ! flux turbulent de vitesse v à la surface |
|
|
|
|
REAL zxfluxt(klon, llm) |
|
|
REAL zxfluxq(klon, llm) |
|
|
REAL zxfluxu(klon, llm) |
|
|
REAL zxfluxv(klon, llm) |
|
259 |
|
|
260 |
! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que |
! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que |
261 |
! les variables soient r\'emanentes. |
! les variables soient r\'emanentes. |
311 |
|
|
312 |
REAL upwd(klon, llm) ! saturated updraft mass flux |
REAL upwd(klon, llm) ! saturated updraft mass flux |
313 |
REAL dnwd(klon, llm) ! saturated downdraft mass flux |
REAL dnwd(klon, llm) ! saturated downdraft mass flux |
|
REAL dnwd0(klon, llm) ! unsaturated downdraft mass flux |
|
314 |
REAL, save:: cape(klon) |
REAL, save:: cape(klon) |
315 |
|
|
316 |
INTEGER iflagctrl(klon) ! flag fonctionnement de convect |
INTEGER iflagctrl(klon) ! flag fonctionnement de convect |
611 |
|
|
612 |
fder = dlw |
fder = dlw |
613 |
|
|
|
! Couche limite: |
|
|
|
|
614 |
CALL clmain(dtphys, pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, & |
CALL clmain(dtphys, pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, & |
615 |
ftsol, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, & |
ftsol, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, & |
616 |
paprs, play, fsnow, fqsurf, fevap, falbe, fluxlat, rain_fall, & |
paprs, play, fsnow, fqsurf, fevap, falbe, fluxlat, rain_fall, & |
617 |
snow_fall, fsolsw, fsollw, fder, rlat, frugs, agesno, rugoro, & |
snow_fall, fsolsw, fsollw, fder, rlat, frugs, agesno, rugoro, & |
618 |
d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, fluxt, fluxq, fluxu, & |
d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, flux_q, flux_u, & |
619 |
fluxv, cdragh, cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, & |
flux_v, cdragh, cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, & |
620 |
u10m, v10m, pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, & |
u10m, v10m, pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, & |
621 |
trmb3, plcl, fqcalving, ffonte, run_off_lic_0) |
trmb3, plcl, fqcalving, ffonte, run_off_lic_0) |
622 |
|
|
623 |
! Incr\'ementation des flux |
! Incr\'ementation des flux |
624 |
|
|
625 |
zxfluxt = 0. |
sens = - sum(flux_t * pctsrf, dim = 2) |
626 |
zxfluxq = 0. |
evap = - sum(flux_q * pctsrf, dim = 2) |
627 |
zxfluxu = 0. |
fder = dlw + dsens + devap |
|
zxfluxv = 0. |
|
|
DO nsrf = 1, nbsrf |
|
|
DO k = 1, llm |
|
|
DO i = 1, klon |
|
|
zxfluxt(i, k) = zxfluxt(i, k) + fluxt(i, k, nsrf) * pctsrf(i, nsrf) |
|
|
zxfluxq(i, k) = zxfluxq(i, k) + fluxq(i, k, nsrf) * pctsrf(i, nsrf) |
|
|
zxfluxu(i, k) = zxfluxu(i, k) + fluxu(i, k, nsrf) * pctsrf(i, nsrf) |
|
|
zxfluxv(i, k) = zxfluxv(i, k) + fluxv(i, k, nsrf) * pctsrf(i, nsrf) |
|
|
END DO |
|
|
END DO |
|
|
END DO |
|
|
DO i = 1, klon |
|
|
sens(i) = - zxfluxt(i, 1) ! flux de chaleur sensible au sol |
|
|
evap(i) = - zxfluxq(i, 1) ! flux d'\'evaporation au sol |
|
|
fder(i) = dlw(i) + dsens(i) + devap(i) |
|
|
ENDDO |
|
628 |
|
|
629 |
DO k = 1, llm |
DO k = 1, llm |
630 |
DO i = 1, klon |
DO i = 1, klon |
723 |
if (conv_emanuel) then |
if (conv_emanuel) then |
724 |
CALL concvl(paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, w01, & |
CALL concvl(paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, w01, & |
725 |
d_t_con, d_q_con, d_u_con, d_v_con, rain_con, ibas_con, itop_con, & |
d_t_con, d_q_con, d_u_con, d_v_con, rain_con, ibas_con, itop_con, & |
726 |
upwd, dnwd, dnwd0, Ma, cape, iflagctrl, qcondc, pmflxr, da, phi, mp) |
upwd, dnwd, Ma, cape, iflagctrl, qcondc, pmflxr, da, phi, mp) |
727 |
snow_con = 0. |
snow_con = 0. |
728 |
clwcon0 = qcondc |
clwcon0 = qcondc |
729 |
mfu = upwd + dnwd |
mfu = upwd + dnwd |
751 |
conv_t = d_t_dyn + d_t_vdf / dtphys |
conv_t = d_t_dyn + d_t_vdf / dtphys |
752 |
z_avant = sum((q_seri + ql_seri) * zmasse, dim=2) |
z_avant = sum((q_seri + ql_seri) * zmasse, dim=2) |
753 |
CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), & |
CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), & |
754 |
q_seri(:, llm:1:- 1), conv_t, conv_q, zxfluxq(:, 1), omega, & |
q_seri(:, llm:1:- 1), conv_t, conv_q, - evap, omega, & |
755 |
d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), & |
d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), & |
756 |
mfd(:, llm:1:- 1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, & |
mfd(:, llm:1:- 1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, & |
757 |
kdtop, pmflxr, pmflxs) |
kdtop, pmflxr, pmflxs) |
1177 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
1178 |
CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.) |
CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.) |
1179 |
CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf)) |
CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf)) |
1180 |
CALL histwrite_phy("sens_"//clnsurf(nsrf), fluxt(:, 1, nsrf)) |
CALL histwrite_phy("sens_"//clnsurf(nsrf), flux_t(:, nsrf)) |
1181 |
CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf)) |
CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf)) |
1182 |
CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf)) |
CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf)) |
1183 |
CALL histwrite_phy("taux_"//clnsurf(nsrf), fluxu(:, 1, nsrf)) |
CALL histwrite_phy("taux_"//clnsurf(nsrf), flux_u(:, nsrf)) |
1184 |
CALL histwrite_phy("tauy_"//clnsurf(nsrf), fluxv(:, 1, nsrf)) |
CALL histwrite_phy("tauy_"//clnsurf(nsrf), flux_v(:, nsrf)) |
1185 |
CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf)) |
CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf)) |
1186 |
CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf)) |
CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf)) |
1187 |
END DO |
END DO |
1198 |
CALL histwrite_phy("s_trmb1", s_trmb1) |
CALL histwrite_phy("s_trmb1", s_trmb1) |
1199 |
CALL histwrite_phy("s_trmb2", s_trmb2) |
CALL histwrite_phy("s_trmb2", s_trmb2) |
1200 |
CALL histwrite_phy("s_trmb3", s_trmb3) |
CALL histwrite_phy("s_trmb3", s_trmb3) |
1201 |
if (conv_emanuel) CALL histwrite_phy("ptop", ema_pct) |
|
1202 |
|
if (conv_emanuel) then |
1203 |
|
CALL histwrite_phy("ptop", ema_pct) |
1204 |
|
CALL histwrite_phy("dnwd0", - mp) |
1205 |
|
end if |
1206 |
|
|
1207 |
CALL histwrite_phy("temp", t_seri) |
CALL histwrite_phy("temp", t_seri) |
1208 |
CALL histwrite_phy("vitu", u_seri) |
CALL histwrite_phy("vitu", u_seri) |
1209 |
CALL histwrite_phy("vitv", v_seri) |
CALL histwrite_phy("vitv", v_seri) |