7 |
SUBROUTINE physiq(lafin, rdayvrai, time, dtphys, paprs, play, pphi, pphis, & |
SUBROUTINE physiq(lafin, rdayvrai, time, dtphys, paprs, play, pphi, pphis, & |
8 |
u, v, t, qx, omega, d_u, d_v, d_t, d_qx, d_ps, dudyn, PVteta) |
u, v, t, qx, omega, d_u, d_v, d_t, d_qx, d_ps, dudyn, PVteta) |
9 |
|
|
10 |
! From phylmd/physiq.F, version 1.22 2006/02/20 09:38:28 (SVN revision 678) |
! From phylmd/physiq.F, version 1.22 2006/02/20 09:38:28 |
11 |
|
! (subversion revision 678) |
12 |
|
|
13 |
! Author: Z.X. Li (LMD/CNRS) 1993 |
! Author: Z.X. Li (LMD/CNRS) 1993 |
14 |
|
|
15 |
! This is the main procedure for the "physics" part of the program. |
! This is the main procedure for the "physics" part of the program. |
25 |
USE clesphys2, ONLY: cycle_diurne, iflag_con, nbapp_rad, new_oliq, & |
USE clesphys2, ONLY: cycle_diurne, iflag_con, nbapp_rad, new_oliq, & |
26 |
ok_orodr, ok_orolf, soil_model |
ok_orodr, ok_orolf, soil_model |
27 |
USE clmain_m, ONLY: clmain |
USE clmain_m, ONLY: clmain |
28 |
|
use clouds_gno_m, only: clouds_gno |
29 |
USE comgeomphy, ONLY: airephy, cuphy, cvphy |
USE comgeomphy, ONLY: airephy, cuphy, cvphy |
30 |
USE concvl_m, ONLY: concvl |
USE concvl_m, ONLY: concvl |
31 |
USE conf_gcm_m, ONLY: offline, raz_date |
USE conf_gcm_m, ONLY: offline, raz_date |
206 |
PARAMETER(kmaxm1 = kmax-1, lmaxm1 = lmax-1) |
PARAMETER(kmaxm1 = kmax-1, lmaxm1 = lmax-1) |
207 |
|
|
208 |
REAL zx_tau(kmaxm1), zx_pc(lmaxm1) |
REAL zx_tau(kmaxm1), zx_pc(lmaxm1) |
209 |
DATA zx_tau/0.0, 0.3, 1.3, 3.6, 9.4, 23., 60./ |
DATA zx_tau/0., 0.3, 1.3, 3.6, 9.4, 23., 60./ |
210 |
DATA zx_pc/50., 180., 310., 440., 560., 680., 800./ |
DATA zx_pc/50., 180., 310., 440., 560., 680., 800./ |
211 |
|
|
212 |
! cldtopres pression au sommet des nuages |
! cldtopres pression au sommet des nuages |
268 |
REAL, save:: ftsoil(klon, nsoilmx, nbsrf) |
REAL, save:: ftsoil(klon, nsoilmx, nbsrf) |
269 |
! soil temperature of surface fraction |
! soil temperature of surface fraction |
270 |
|
|
271 |
REAL fevap(klon, nbsrf) |
REAL, save:: fevap(klon, nbsrf) ! evaporation |
|
SAVE fevap ! evaporation |
|
272 |
REAL fluxlat(klon, nbsrf) |
REAL fluxlat(klon, nbsrf) |
273 |
SAVE fluxlat |
SAVE fluxlat |
274 |
|
|
315 |
SAVE Ma |
SAVE Ma |
316 |
REAL qcondc(klon, llm) ! in-cld water content from convect |
REAL qcondc(klon, llm) ! in-cld water content from convect |
317 |
SAVE qcondc |
SAVE qcondc |
318 |
REAL ema_work1(klon, llm), ema_work2(klon, llm) |
REAL, save:: sig1(klon, llm), w01(klon, llm) |
|
SAVE ema_work1, ema_work2 |
|
319 |
REAL, save:: wd(klon) |
REAL, save:: wd(klon) |
320 |
|
|
321 |
! Variables locales pour la couche limite (al1): |
! Variables locales pour la couche limite (al1): |
349 |
|
|
350 |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
351 |
|
|
352 |
REAL evap(klon), devap(klon) ! evaporation et sa derivee |
REAL evap(klon), devap(klon) ! evaporation and its derivative |
353 |
REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee |
REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee |
354 |
REAL dlw(klon) ! derivee infra rouge |
REAL dlw(klon) ! derivee infra rouge |
355 |
SAVE dlw |
SAVE dlw |
390 |
|
|
391 |
! Variables locales |
! Variables locales |
392 |
|
|
393 |
real clwcon(klon, llm), rnebcon(klon, llm) |
real, save:: clwcon(klon, llm), rnebcon(klon, llm) |
394 |
real clwcon0(klon, llm), rnebcon0(klon, llm) |
real, save:: clwcon0(klon, llm), rnebcon0(klon, llm) |
|
|
|
|
save rnebcon, clwcon |
|
395 |
|
|
396 |
REAL rhcl(klon, llm) ! humiditi relative ciel clair |
REAL rhcl(klon, llm) ! humiditi relative ciel clair |
397 |
REAL dialiq(klon, llm) ! eau liquide nuageuse |
REAL dialiq(klon, llm) ! eau liquide nuageuse |
417 |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
418 |
REAL, save:: cool(klon, llm) ! refroidissement infrarouge |
REAL, save:: cool(klon, llm) ! refroidissement infrarouge |
419 |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
420 |
REAL, save:: topsw(klon), toplw(klon), solsw(klon), sollw(klon) |
REAL, save:: topsw(klon), toplw(klon), solsw(klon) |
421 |
real sollwdown(klon) ! downward LW flux at surface |
REAL, save:: sollw(klon) ! rayonnement infrarouge montant à la surface |
422 |
|
real, save:: sollwdown(klon) ! downward LW flux at surface |
423 |
REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) |
REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) |
424 |
REAL albpla(klon) |
REAL albpla(klon) |
425 |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
426 |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
427 |
SAVE albpla, sollwdown |
SAVE albpla |
428 |
SAVE heat0, cool0 |
SAVE heat0, cool0 |
429 |
|
|
430 |
INTEGER itaprad |
INTEGER itaprad |
500 |
REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm) |
REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm) |
501 |
REAL rneb(klon, llm) |
REAL rneb(klon, llm) |
502 |
|
|
503 |
REAL pmfu(klon, llm), pmfd(klon, llm) |
REAL mfu(klon, llm), mfd(klon, llm) |
504 |
REAL pen_u(klon, llm), pen_d(klon, llm) |
REAL pen_u(klon, llm), pen_d(klon, llm) |
505 |
REAL pde_u(klon, llm), pde_d(klon, llm) |
REAL pde_u(klon, llm), pde_d(klon, llm) |
506 |
INTEGER kcbot(klon), kctop(klon), kdtop(klon) |
INTEGER kcbot(klon), kctop(klon), kdtop(klon) |
629 |
SAVE solswad |
SAVE solswad |
630 |
SAVE d_u_con |
SAVE d_u_con |
631 |
SAVE d_v_con |
SAVE d_v_con |
|
SAVE rnebcon0 |
|
|
SAVE clwcon0 |
|
632 |
|
|
633 |
real zmasse(klon, llm) |
real zmasse(klon, llm) |
634 |
! (column-density of mass of air in a cell, in kg m-2) |
! (column-density of mass of air in a cell, in kg m-2) |
665 |
solswai(:) = 0. |
solswai(:) = 0. |
666 |
solswad(:) = 0. |
solswad(:) = 0. |
667 |
|
|
668 |
d_u_con = 0.0 |
d_u_con = 0. |
669 |
d_v_con = 0.0 |
d_v_con = 0. |
670 |
rnebcon0 = 0.0 |
rnebcon0 = 0. |
671 |
clwcon0 = 0.0 |
clwcon0 = 0. |
672 |
rnebcon = 0.0 |
rnebcon = 0. |
673 |
clwcon = 0.0 |
clwcon = 0. |
674 |
|
|
675 |
pblh =0. ! Hauteur de couche limite |
pblh =0. ! Hauteur de couche limite |
676 |
plcl =0. ! Niveau de condensation de la CLA |
plcl =0. ! Niveau de condensation de la CLA |
700 |
itaprad = 0 |
itaprad = 0 |
701 |
CALL phyetat0("startphy.nc", pctsrf, ftsol, ftsoil, ocean, tslab, & |
CALL phyetat0("startphy.nc", pctsrf, ftsol, ftsoil, ocean, tslab, & |
702 |
seaice, fqsurf, qsol, fsnow, falbe, falblw, fevap, rain_fall, & |
seaice, fqsurf, qsol, fsnow, falbe, falblw, fevap, rain_fall, & |
703 |
snow_fall, solsw, sollwdown, dlw, radsol, frugs, agesno, zmea, & |
snow_fall, solsw, sollw, dlw, radsol, frugs, agesno, zmea, & |
704 |
zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, & |
zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, & |
705 |
ancien_ok, rnebcon, ratqs, clwcon, run_off_lic_0) |
ancien_ok, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01) |
706 |
|
|
707 |
! ATTENTION : il faudra a terme relire q2 dans l'etat initial |
! ATTENTION : il faudra a terme relire q2 dans l'etat initial |
708 |
q2 = 1e-8 |
q2 = 1e-8 |
828 |
ELSE |
ELSE |
829 |
DO k = 1, llm |
DO k = 1, llm |
830 |
DO i = 1, klon |
DO i = 1, klon |
831 |
d_t_dyn(i, k) = 0.0 |
d_t_dyn(i, k) = 0. |
832 |
d_q_dyn(i, k) = 0.0 |
d_q_dyn(i, k) = 0. |
833 |
ENDDO |
ENDDO |
834 |
ENDDO |
ENDDO |
835 |
ancien_ok = .TRUE. |
ancien_ok = .TRUE. |
882 |
! Appeler la diffusion verticale (programme de couche limite) |
! Appeler la diffusion verticale (programme de couche limite) |
883 |
|
|
884 |
DO i = 1, klon |
DO i = 1, klon |
885 |
zxrugs(i) = 0.0 |
zxrugs(i) = 0. |
886 |
ENDDO |
ENDDO |
887 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
888 |
DO i = 1, klon |
DO i = 1, klon |
915 |
ENDDO |
ENDDO |
916 |
ENDDO |
ENDDO |
917 |
|
|
918 |
! Repartition sous maille des flux LW et SW |
! Répartition sous maille des flux longwave et shortwave |
919 |
! Repartition du longwave par sous-surface linearisee |
! Répartition du longwave par sous-surface linéarisée |
920 |
|
|
921 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
922 |
DO i = 1, klon |
DO i = 1, klon |
930 |
|
|
931 |
! Couche limite: |
! Couche limite: |
932 |
|
|
933 |
CALL clmain(dtphys, itap, date0, pctsrf, pctsrf_new, t_seri, q_seri, & |
CALL clmain(dtphys, itap, pctsrf, pctsrf_new, t_seri, q_seri, & |
934 |
u_seri, v_seri, julien, rmu0, co2_ppm, ok_veget, ocean, npas, nexca, & |
u_seri, v_seri, julien, rmu0, co2_ppm, ok_veget, ocean, & |
935 |
ftsol, soil_model, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, & |
ftsol, soil_model, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, & |
936 |
qsol, paprs, play, fsnow, fqsurf, fevap, falbe, falblw, fluxlat, & |
qsol, paprs, play, fsnow, fqsurf, fevap, falbe, falblw, fluxlat, & |
937 |
rain_fall, snow_fall, fsolsw, fsollw, sollwdown, fder, rlon, rlat, & |
rain_fall, snow_fall, fsolsw, fsollw, fder, rlon, rlat, & |
938 |
cuphy, cvphy, frugs, firstcal, lafin, agesno, rugoro, d_t_vdf, & |
frugs, firstcal, agesno, rugoro, d_t_vdf, & |
939 |
d_q_vdf, d_u_vdf, d_v_vdf, d_ts, fluxt, fluxq, fluxu, fluxv, cdragh, & |
d_q_vdf, d_u_vdf, d_v_vdf, d_ts, fluxt, fluxq, fluxu, fluxv, cdragh, & |
940 |
cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, u10m, v10m, & |
cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, u10m, v10m, & |
941 |
pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, trmb3, plcl, & |
pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, trmb3, plcl, & |
985 |
! Update surface temperature: |
! Update surface temperature: |
986 |
|
|
987 |
DO i = 1, klon |
DO i = 1, klon |
988 |
zxtsol(i) = 0.0 |
zxtsol(i) = 0. |
989 |
zxfluxlat(i) = 0.0 |
zxfluxlat(i) = 0. |
990 |
|
|
991 |
zt2m(i) = 0.0 |
zt2m(i) = 0. |
992 |
zq2m(i) = 0.0 |
zq2m(i) = 0. |
993 |
zu10m(i) = 0.0 |
zu10m(i) = 0. |
994 |
zv10m(i) = 0.0 |
zv10m(i) = 0. |
995 |
zxffonte(i) = 0.0 |
zxffonte(i) = 0. |
996 |
zxfqcalving(i) = 0.0 |
zxfqcalving(i) = 0. |
997 |
|
|
998 |
s_pblh(i) = 0.0 |
s_pblh(i) = 0. |
999 |
s_lcl(i) = 0.0 |
s_lcl(i) = 0. |
1000 |
s_capCL(i) = 0.0 |
s_capCL(i) = 0. |
1001 |
s_oliqCL(i) = 0.0 |
s_oliqCL(i) = 0. |
1002 |
s_cteiCL(i) = 0.0 |
s_cteiCL(i) = 0. |
1003 |
s_pblT(i) = 0.0 |
s_pblT(i) = 0. |
1004 |
s_therm(i) = 0.0 |
s_therm(i) = 0. |
1005 |
s_trmb1(i) = 0.0 |
s_trmb1(i) = 0. |
1006 |
s_trmb2(i) = 0.0 |
s_trmb2(i) = 0. |
1007 |
s_trmb3(i) = 0.0 |
s_trmb3(i) = 0. |
1008 |
|
|
1009 |
IF (abs(pctsrf(i, is_ter) + pctsrf(i, is_lic) + pctsrf(i, is_oce) & |
IF (abs(pctsrf(i, is_ter) + pctsrf(i, is_lic) + pctsrf(i, is_oce) & |
1010 |
+ pctsrf(i, is_sic) - 1.) > EPSFRA) print *, & |
+ pctsrf(i, is_sic) - 1.) > EPSFRA) print *, & |
1084 |
|
|
1085 |
if (iflag_con == 2) then |
if (iflag_con == 2) then |
1086 |
z_avant = sum((q_seri + ql_seri) * zmasse, dim=2) |
z_avant = sum((q_seri + ql_seri) * zmasse, dim=2) |
1087 |
CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:-1), q_seri, & |
CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:-1), & |
1088 |
conv_t, conv_q, zxfluxq(:, 1), omega, d_t_con, d_q_con, & |
q_seri(:, llm:1:-1), conv_t, conv_q, zxfluxq(:, 1), omega, & |
1089 |
rain_con, snow_con, pmfu, pmfd, pen_u, pde_u, pen_d, & |
d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:-1), & |
1090 |
pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs) |
mfd(:, llm:1:-1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, & |
1091 |
|
kdtop, pmflxr, pmflxs) |
1092 |
WHERE (rain_con < 0.) rain_con = 0. |
WHERE (rain_con < 0.) rain_con = 0. |
1093 |
WHERE (snow_con < 0.) snow_con = 0. |
WHERE (snow_con < 0.) snow_con = 0. |
1094 |
DO i = 1, klon |
ibas_con = llm + 1 - kcbot |
1095 |
ibas_con(i) = llm + 1 - kcbot(i) |
itop_con = llm + 1 - kctop |
|
itop_con(i) = llm + 1 - kctop(i) |
|
|
ENDDO |
|
1096 |
else |
else |
1097 |
! iflag_con >= 3 |
! iflag_con >= 3 |
1098 |
|
|
1099 |
CALL concvl(dtphys, paprs, play, t_seri, q_seri, u_seri, & |
CALL concvl(dtphys, paprs, play, t_seri, q_seri, u_seri, & |
1100 |
v_seri, tr_seri, ema_work1, ema_work2, d_t_con, d_q_con, & |
v_seri, tr_seri, sig1, w01, d_t_con, d_q_con, & |
1101 |
d_u_con, d_v_con, d_tr, rain_con, snow_con, ibas_con, & |
d_u_con, d_v_con, d_tr, rain_con, snow_con, ibas_con, & |
1102 |
itop_con, upwd, dnwd, dnwd0, Ma, cape, tvp, iflagctrl, & |
itop_con, upwd, dnwd, dnwd0, Ma, cape, tvp, iflagctrl, & |
1103 |
pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, qcondc, & |
pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, qcondc, & |
1108 |
! supprimer les calculs / ftra.) |
! supprimer les calculs / ftra.) |
1109 |
|
|
1110 |
clwcon0 = qcondc |
clwcon0 = qcondc |
1111 |
pmfu = upwd + dnwd |
mfu = upwd + dnwd |
1112 |
IF (.NOT. ok_gust) wd = 0. |
IF (.NOT. ok_gust) wd = 0. |
1113 |
|
|
1114 |
! Calcul des propriétés des nuages convectifs |
! Calcul des propriétés des nuages convectifs |
1118 |
zx_t = t_seri(i, k) |
zx_t = t_seri(i, k) |
1119 |
IF (thermcep) THEN |
IF (thermcep) THEN |
1120 |
zdelta = MAX(0., SIGN(1., rtt-zx_t)) |
zdelta = MAX(0., SIGN(1., rtt-zx_t)) |
1121 |
zx_qs = r2es * FOEEW(zx_t, zdelta)/play(i, k) |
zx_qs = r2es * FOEEW(zx_t, zdelta) / play(i, k) |
1122 |
zx_qs = MIN(0.5, zx_qs) |
zx_qs = MIN(0.5, zx_qs) |
1123 |
zcor = 1./(1.-retv*zx_qs) |
zcor = 1./(1.-retv*zx_qs) |
1124 |
zx_qs = zx_qs*zcor |
zx_qs = zx_qs*zcor |
1134 |
ENDDO |
ENDDO |
1135 |
|
|
1136 |
! calcul des proprietes des nuages convectifs |
! calcul des proprietes des nuages convectifs |
1137 |
clwcon0 = fact_cldcon*clwcon0 |
clwcon0 = fact_cldcon * clwcon0 |
1138 |
call clouds_gno(klon, llm, q_seri, zqsat, clwcon0, ptconv, ratqsc, & |
call clouds_gno(klon, llm, q_seri, zqsat, clwcon0, ptconv, ratqsc, & |
1139 |
rnebcon0) |
rnebcon0) |
1140 |
|
|
1141 |
|
mfd = 0. |
1142 |
|
pen_u = 0. |
1143 |
|
pen_d = 0. |
1144 |
|
pde_d = 0. |
1145 |
|
pde_u = 0. |
1146 |
END if |
END if |
1147 |
|
|
1148 |
DO k = 1, llm |
DO k = 1, llm |
1167 |
IF (check) THEN |
IF (check) THEN |
1168 |
za = qcheck(klon, llm, paprs, q_seri, ql_seri, airephy) |
za = qcheck(klon, llm, paprs, q_seri, ql_seri, airephy) |
1169 |
print *, "aprescon = ", za |
print *, "aprescon = ", za |
1170 |
zx_t = 0.0 |
zx_t = 0. |
1171 |
za = 0.0 |
za = 0. |
1172 |
DO i = 1, klon |
DO i = 1, klon |
1173 |
za = za + airephy(i)/REAL(klon) |
za = za + airephy(i)/REAL(klon) |
1174 |
zx_t = zx_t + (rain_con(i)+ & |
zx_t = zx_t + (rain_con(i)+ & |
1255 |
ratqs = ratqss |
ratqs = ratqss |
1256 |
endif |
endif |
1257 |
|
|
|
! Processus de condensation à grande echelle et processus de |
|
|
! précipitation : |
|
1258 |
CALL fisrtilp(dtphys, paprs, play, t_seri, q_seri, ptconv, ratqs, & |
CALL fisrtilp(dtphys, paprs, play, t_seri, q_seri, ptconv, ratqs, & |
1259 |
d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, & |
d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, & |
1260 |
pfrac_impa, pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, & |
pfrac_impa, pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, & |
1274 |
IF (check) THEN |
IF (check) THEN |
1275 |
za = qcheck(klon, llm, paprs, q_seri, ql_seri, airephy) |
za = qcheck(klon, llm, paprs, q_seri, ql_seri, airephy) |
1276 |
print *, "apresilp = ", za |
print *, "apresilp = ", za |
1277 |
zx_t = 0.0 |
zx_t = 0. |
1278 |
za = 0.0 |
za = 0. |
1279 |
DO i = 1, klon |
DO i = 1, klon |
1280 |
za = za + airephy(i)/REAL(klon) |
za = za + airephy(i)/REAL(klon) |
1281 |
zx_t = zx_t + (rain_lsc(i) & |
zx_t = zx_t + (rain_lsc(i) & |
1328 |
ENDDO |
ENDDO |
1329 |
ENDDO |
ENDDO |
1330 |
ELSE IF (iflag_cldcon == 3) THEN |
ELSE IF (iflag_cldcon == 3) THEN |
1331 |
! On prend pour les nuages convectifs le max du calcul de la |
! On prend pour les nuages convectifs le maximum du calcul de |
1332 |
! convection et du calcul du pas de temps précédent diminué d'un facteur |
! la convection et du calcul du pas de temps précédent diminué |
1333 |
! facttemps |
! d'un facteur facttemps. |
1334 |
facteur = dtphys *facttemps |
facteur = dtphys * facttemps |
1335 |
do k = 1, llm |
do k = 1, llm |
1336 |
do i = 1, klon |
do i = 1, klon |
1337 |
rnebcon(i, k) = rnebcon(i, k) * facteur |
rnebcon(i, k) = rnebcon(i, k) * facteur |
1338 |
if (rnebcon0(i, k)*clwcon0(i, k) > rnebcon(i, k)*clwcon(i, k)) & |
if (rnebcon0(i, k) * clwcon0(i, k) & |
1339 |
then |
> rnebcon(i, k) * clwcon(i, k)) then |
1340 |
rnebcon(i, k) = rnebcon0(i, k) |
rnebcon(i, k) = rnebcon0(i, k) |
1341 |
clwcon(i, k) = clwcon0(i, k) |
clwcon(i, k) = clwcon0(i, k) |
1342 |
endif |
endif |
1462 |
|
|
1463 |
! Calculer l'hydrologie de la surface |
! Calculer l'hydrologie de la surface |
1464 |
DO i = 1, klon |
DO i = 1, klon |
1465 |
zxqsurf(i) = 0.0 |
zxqsurf(i) = 0. |
1466 |
zxsnow(i) = 0.0 |
zxsnow(i) = 0. |
1467 |
ENDDO |
ENDDO |
1468 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
1469 |
DO i = 1, klon |
DO i = 1, klon |
1485 |
igwd = 0 |
igwd = 0 |
1486 |
DO i = 1, klon |
DO i = 1, klon |
1487 |
itest(i) = 0 |
itest(i) = 0 |
1488 |
IF (((zpic(i)-zmea(i)) > 100.).AND.(zstd(i) > 10.0)) THEN |
IF (((zpic(i)-zmea(i)) > 100.).AND.(zstd(i) > 10.)) THEN |
1489 |
itest(i) = 1 |
itest(i) = 1 |
1490 |
igwd = igwd + 1 |
igwd = igwd + 1 |
1491 |
idx(igwd) = i |
idx(igwd) = i |
1556 |
|
|
1557 |
! Calcul des tendances traceurs |
! Calcul des tendances traceurs |
1558 |
call phytrac(rnpb, itap, lmt_pas, julien, time, firstcal, lafin, nqmx-2, & |
call phytrac(rnpb, itap, lmt_pas, julien, time, firstcal, lafin, nqmx-2, & |
1559 |
dtphys, u, t, paprs, play, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, & |
dtphys, u, t, paprs, play, mfu, mfd, pen_u, pde_u, pen_d, pde_d, & |
1560 |
ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, pctsrf, frac_impa, & |
ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, pctsrf, frac_impa, & |
1561 |
frac_nucl, pphis, albsol, rhcl, cldfra, rneb, diafra, cldliq, & |
frac_nucl, pphis, albsol, rhcl, cldfra, rneb, diafra, cldliq, & |
1562 |
pmflxr, pmflxs, prfl, psfl, da, phi, mp, upwd, dnwd, tr_seri, zmasse) |
pmflxr, pmflxs, prfl, psfl, da, phi, mp, upwd, dnwd, tr_seri, zmasse) |
1563 |
|
|
1564 |
IF (offline) THEN |
IF (offline) THEN |
1565 |
call phystokenc(dtphys, rlon, rlat, t, pmfu, pmfd, pen_u, pde_u, & |
call phystokenc(dtphys, rlon, rlat, t, mfu, mfd, pen_u, pde_u, & |
1566 |
pen_d, pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, & |
pen_d, pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, & |
1567 |
pctsrf, frac_impa, frac_nucl, pphis, airephy, dtphys, itap) |
pctsrf, frac_impa, frac_nucl, pphis, airephy, dtphys, itap) |
1568 |
ENDIF |
ENDIF |
1656 |
itau_phy = itau_phy + itap |
itau_phy = itau_phy + itap |
1657 |
CALL phyredem("restartphy.nc", rlat, rlon, pctsrf, ftsol, ftsoil, & |
CALL phyredem("restartphy.nc", rlat, rlon, pctsrf, ftsol, ftsoil, & |
1658 |
tslab, seaice, fqsurf, qsol, fsnow, falbe, falblw, fevap, & |
tslab, seaice, fqsurf, qsol, fsnow, falbe, falblw, fevap, & |
1659 |
rain_fall, snow_fall, solsw, sollwdown, dlw, radsol, frugs, & |
rain_fall, snow_fall, solsw, sollw, dlw, radsol, frugs, & |
1660 |
agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, & |
agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, & |
1661 |
q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0) |
q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01) |
1662 |
ENDIF |
ENDIF |
1663 |
|
|
1664 |
firstcal = .FALSE. |
firstcal = .FALSE. |