248 |
! column-density of water in soil, in kg m-2 |
! column-density of water in soil, in kg m-2 |
249 |
|
|
250 |
REAL, save:: fsnow(klon, nbsrf) ! epaisseur neigeuse |
REAL, save:: fsnow(klon, nbsrf) ! epaisseur neigeuse |
251 |
REAL, save:: falbe(klon, nbsrf) ! albedo par type de surface |
REAL, save:: falbe(klon, nbsrf) ! albedo visible par type de surface |
|
REAL, save:: falblw(klon, nbsrf) ! albedo par type de surface |
|
252 |
|
|
253 |
! Param\`etres de l'orographie \`a l'\'echelle sous-maille (OESM) : |
! Param\`etres de l'orographie \`a l'\'echelle sous-maille (OESM) : |
254 |
REAL, save:: zmea(klon) ! orographie moyenne |
REAL, save:: zmea(klon) ! orographie moyenne |
333 |
INTEGER, SAVE:: lmt_pas ! number of time steps of "physics" per day |
INTEGER, SAVE:: lmt_pas ! number of time steps of "physics" per day |
334 |
REAL, save:: pctsrf(klon, nbsrf) ! percentage of surface |
REAL, save:: pctsrf(klon, nbsrf) ! percentage of surface |
335 |
REAL pctsrf_new(klon, nbsrf) ! pourcentage surfaces issus d'ORCHIDEE |
REAL pctsrf_new(klon, nbsrf) ! pourcentage surfaces issus d'ORCHIDEE |
336 |
REAL, save:: albsol(klon) ! albedo du sol total |
REAL, save:: albsol(klon) ! albedo du sol total visible |
|
REAL, save:: albsollw(klon) ! albedo du sol total |
|
337 |
REAL, SAVE:: wo(klon, llm) ! column density of ozone in a cell, in kDU |
REAL, SAVE:: wo(klon, llm) ! column density of ozone in a cell, in kDU |
338 |
|
|
339 |
! Declaration des procedures appelees |
! Declaration des procedures appelees |
625 |
frugs = 0. |
frugs = 0. |
626 |
itap = 0 |
itap = 0 |
627 |
CALL phyetat0(pctsrf, ftsol, ftsoil, tslab, seaice, fqsurf, qsol, & |
CALL phyetat0(pctsrf, ftsol, ftsoil, tslab, seaice, fqsurf, qsol, & |
628 |
fsnow, falbe, falblw, fevap, rain_fall, snow_fall, solsw, sollw, & |
fsnow, falbe, fevap, rain_fall, snow_fall, solsw, sollw, & |
629 |
dlw, radsol, frugs, agesno, zmea, zstd, zsig, zgam, zthe, zpic, & |
dlw, radsol, frugs, agesno, zmea, zstd, zsig, zgam, zthe, zpic, & |
630 |
zval, t_ancien, q_ancien, ancien_ok, rnebcon, ratqs, clwcon, & |
zval, t_ancien, q_ancien, ancien_ok, rnebcon, ratqs, clwcon, & |
631 |
run_off_lic_0, sig1, w01) |
run_off_lic_0, sig1, w01) |
767 |
|
|
768 |
! Calcul de l'abedo moyen par maille |
! Calcul de l'abedo moyen par maille |
769 |
albsol = sum(falbe * pctsrf, dim = 2) |
albsol = sum(falbe * pctsrf, dim = 2) |
|
albsollw = sum(falblw * pctsrf, dim = 2) |
|
770 |
|
|
771 |
! R\'epartition sous maille des flux longwave et shortwave |
! R\'epartition sous maille des flux longwave et shortwave |
772 |
! R\'epartition du longwave par sous-surface lin\'earis\'ee |
! R\'epartition du longwave par sous-surface lin\'earis\'ee |
784 |
CALL clmain(dtphys, itap, pctsrf, pctsrf_new, t_seri, q_seri, u_seri, & |
CALL clmain(dtphys, itap, pctsrf, pctsrf_new, t_seri, q_seri, u_seri, & |
785 |
v_seri, julien, mu0, co2_ppm, ftsol, cdmmax, cdhmax, ksta, ksta_ter, & |
v_seri, julien, mu0, co2_ppm, ftsol, cdmmax, cdhmax, ksta, ksta_ter, & |
786 |
ok_kzmin, ftsoil, qsol, paprs, play, fsnow, fqsurf, fevap, falbe, & |
ok_kzmin, ftsoil, qsol, paprs, play, fsnow, fqsurf, fevap, falbe, & |
787 |
falblw, fluxlat, rain_fall, snow_fall, fsolsw, fsollw, fder, rlat, & |
fluxlat, rain_fall, snow_fall, fsolsw, fsollw, fder, rlat, frugs, & |
788 |
frugs, firstcal, agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, & |
firstcal, agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, & |
789 |
d_ts, fluxt, fluxq, fluxu, fluxv, cdragh, cdragm, q2, dsens, devap, & |
fluxt, fluxq, fluxu, fluxv, cdragh, cdragm, q2, dsens, devap, & |
790 |
ycoefh, yu1, yv1, t2m, q2m, u10m, v10m, pblh, capCL, oliqCL, cteiCL, & |
ycoefh, yu1, yv1, t2m, q2m, u10m, v10m, pblh, capCL, oliqCL, cteiCL, & |
791 |
pblT, therm, trmb1, trmb2, trmb3, plcl, fqcalving, ffonte, & |
pblT, therm, trmb1, trmb2, trmb3, plcl, fqcalving, ffonte, & |
792 |
run_off_lic_0, fluxo, fluxg, tslab) |
run_off_lic_0, fluxo, fluxg, tslab) |
1237 |
|
|
1238 |
IF (MOD(itap - 1, radpas) == 0) THEN |
IF (MOD(itap - 1, radpas) == 0) THEN |
1239 |
! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. |
! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. |
1240 |
DO i = 1, klon |
! Calcul de l'abedo moyen par maille |
1241 |
albsol(i) = falbe(i, is_oce) * pctsrf(i, is_oce) & |
albsol = sum(falbe * pctsrf, dim = 2) |
1242 |
+ falbe(i, is_lic) * pctsrf(i, is_lic) & |
|
|
+ falbe(i, is_ter) * pctsrf(i, is_ter) & |
|
|
+ falbe(i, is_sic) * pctsrf(i, is_sic) |
|
|
albsollw(i) = falblw(i, is_oce) * pctsrf(i, is_oce) & |
|
|
+ falblw(i, is_lic) * pctsrf(i, is_lic) & |
|
|
+ falblw(i, is_ter) * pctsrf(i, is_ter) & |
|
|
+ falblw(i, is_sic) * pctsrf(i, is_sic) |
|
|
ENDDO |
|
1243 |
! Rayonnement (compatible Arpege-IFS) : |
! Rayonnement (compatible Arpege-IFS) : |
1244 |
CALL radlwsw(dist, mu0, fract, paprs, play, zxtsol, albsol, & |
CALL radlwsw(dist, mu0, fract, paprs, play, zxtsol, albsol, t_seri, & |
1245 |
albsollw, t_seri, q_seri, wo, cldfra, cldemi, cldtau, heat, & |
q_seri, wo, cldfra, cldemi, cldtau, heat, heat0, cool, cool0, & |
1246 |
heat0, cool, cool0, radsol, albpla, topsw, toplw, solsw, sollw, & |
radsol, albpla, topsw, toplw, solsw, sollw, sollwdown, topsw0, & |
1247 |
sollwdown, topsw0, toplw0, solsw0, sollw0, lwdn0, lwdn, lwup0, & |
toplw0, solsw0, sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, & |
1248 |
lwup, swdn0, swdn, swup0, swup, ok_ade, ok_aie, tau_ae, piz_ae, & |
swup0, swup, ok_ade, ok_aie, tau_ae, piz_ae, cg_ae, topswad, & |
1249 |
cg_ae, topswad, solswad, cldtaupi, topswai, solswai) |
solswad, cldtaupi, topswai, solswai) |
1250 |
ENDIF |
ENDIF |
1251 |
|
|
1252 |
! Ajouter la tendance des rayonnements (tous les pas) |
! Ajouter la tendance des rayonnements (tous les pas) |
1449 |
IF (lafin) THEN |
IF (lafin) THEN |
1450 |
itau_phy = itau_phy + itap |
itau_phy = itau_phy + itap |
1451 |
CALL phyredem("restartphy.nc", pctsrf, ftsol, ftsoil, tslab, seaice, & |
CALL phyredem("restartphy.nc", pctsrf, ftsol, ftsoil, tslab, seaice, & |
1452 |
fqsurf, qsol, fsnow, falbe, falblw, fevap, rain_fall, snow_fall, & |
fqsurf, qsol, fsnow, falbe, fevap, rain_fall, snow_fall, & |
1453 |
solsw, sollw, dlw, radsol, frugs, agesno, zmea, zstd, zsig, zgam, & |
solsw, sollw, dlw, radsol, frugs, agesno, zmea, zstd, zsig, zgam, & |
1454 |
zthe, zpic, zval, t_ancien, q_ancien, rnebcon, ratqs, clwcon, & |
zthe, zpic, zval, t_ancien, q_ancien, rnebcon, ratqs, clwcon, & |
1455 |
run_off_lic_0, sig1, w01) |
run_off_lic_0, sig1, w01) |
1611 |
CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, & |
1612 |
zx_tmp_2d) |
zx_tmp_2d) |
1613 |
|
|
1614 |
zx_tmp_fi2d(1 : klon) = falbe(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = falbe(:, nsrf) |
1615 |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1616 |
CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, & |
1617 |
zx_tmp_2d) |
zx_tmp_2d) |
1619 |
END DO |
END DO |
1620 |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsol, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsol, zx_tmp_2d) |
1621 |
CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d) |
|
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsollw, zx_tmp_2d) |
|
|
CALL histwrite(nid_ins, "albslw", itau_w, zx_tmp_2d) |
|
1622 |
|
|
1623 |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxrugs, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxrugs, zx_tmp_2d) |
1624 |
CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d) |