5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE clmain(dtime, itap, pctsrf, pctsrf_new, t, q, u, v, jour, rmu0, & |
SUBROUTINE clmain(dtime, itap, pctsrf, pctsrf_new, t, q, u, v, jour, rmu0, & |
8 |
co2_ppm, ts, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, & |
ts, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, & |
9 |
paprs, pplay, snow, qsurf, evap, falbe, fluxlat, rain_fall, snow_f, & |
paprs, pplay, snow, qsurf, evap, falbe, fluxlat, rain_fall, snow_f, & |
10 |
solsw, sollw, fder, rlat, rugos, debut, agesno, rugoro, d_t, d_q, d_u, & |
solsw, sollw, fder, rlat, rugos, debut, agesno, rugoro, d_t, d_q, d_u, & |
11 |
d_v, d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, q2, & |
d_v, d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, q2, & |
33 |
use coefkzmin_m, only: coefkzmin |
use coefkzmin_m, only: coefkzmin |
34 |
USE conf_gcm_m, ONLY: prt_level |
USE conf_gcm_m, ONLY: prt_level |
35 |
USE conf_phys_m, ONLY: iflag_pbl |
USE conf_phys_m, ONLY: iflag_pbl |
|
USE dimens_m, ONLY: iim, jjm |
|
36 |
USE dimphy, ONLY: klev, klon, zmasq |
USE dimphy, ONLY: klev, klon, zmasq |
37 |
USE dimsoil, ONLY: nsoilmx |
USE dimsoil, ONLY: nsoilmx |
38 |
use hbtm_m, only: hbtm |
use hbtm_m, only: hbtm |
55 |
REAL, INTENT(IN):: u(klon, klev), v(klon, klev) ! vitesse |
REAL, INTENT(IN):: u(klon, klev), v(klon, klev) ! vitesse |
56 |
INTEGER, INTENT(IN):: jour ! jour de l'annee en cours |
INTEGER, INTENT(IN):: jour ! jour de l'annee en cours |
57 |
REAL, intent(in):: rmu0(klon) ! cosinus de l'angle solaire zenithal |
REAL, intent(in):: rmu0(klon) ! cosinus de l'angle solaire zenithal |
|
REAL, intent(in):: co2_ppm ! taux CO2 atmosphere |
|
58 |
REAL, INTENT(IN):: ts(klon, nbsrf) ! temperature du sol (en Kelvin) |
REAL, INTENT(IN):: ts(klon, nbsrf) ! temperature du sol (en Kelvin) |
59 |
REAL, INTENT(IN):: cdmmax, cdhmax ! seuils cdrm, cdrh |
REAL, INTENT(IN):: cdmmax, cdhmax ! seuils cdrm, cdrh |
60 |
REAL, INTENT(IN):: ksta, ksta_ter |
REAL, INTENT(IN):: ksta, ksta_ter |
124 |
REAL t2m(klon, nbsrf), q2m(klon, nbsrf) |
REAL t2m(klon, nbsrf), q2m(klon, nbsrf) |
125 |
REAL u10m(klon, nbsrf), v10m(klon, nbsrf) |
REAL u10m(klon, nbsrf), v10m(klon, nbsrf) |
126 |
|
|
127 |
!IM cf. AM : pbl, hbtm (Comme les autres diagnostics on cumule ds |
! Ionela Musat cf. Anne Mathieu : pbl, hbtm (Comme les autres |
128 |
! physiq ce qui permet de sortir les grdeurs par sous surface) |
! diagnostics on cumule dans physiq ce qui permet de sortir les |
129 |
|
! grandeurs par sous-surface) |
130 |
REAL pblh(klon, nbsrf) |
REAL pblh(klon, nbsrf) |
131 |
! pblh------- HCL |
! pblh------- HCL |
132 |
REAL capcl(klon, nbsrf) |
REAL capcl(klon, nbsrf) |
211 |
|
|
212 |
REAL yt2m(klon), yq2m(klon), yu10m(klon) |
REAL yt2m(klon), yq2m(klon), yu10m(klon) |
213 |
REAL yustar(klon) |
REAL yustar(klon) |
|
! -- LOOP |
|
|
REAL yu10mx(klon) |
|
|
REAL yu10my(klon) |
|
|
REAL ywindsp(klon) |
|
|
! -- LOOP |
|
214 |
|
|
215 |
REAL yt10m(klon), yq10m(klon) |
REAL yt10m(klon), yq10m(klon) |
216 |
REAL ypblh(klon) |
REAL ypblh(klon) |
283 |
y_dflux_q = 0. |
y_dflux_q = 0. |
284 |
ytsoil = 999999. |
ytsoil = 999999. |
285 |
yrugoro = 0. |
yrugoro = 0. |
|
yu10mx = 0. |
|
|
yu10my = 0. |
|
|
ywindsp = 0. |
|
286 |
d_ts = 0. |
d_ts = 0. |
287 |
yfluxlat = 0. |
yfluxlat = 0. |
288 |
flux_t = 0. |
flux_t = 0. |
337 |
yrads(j) = solsw(i, nsrf) + sollw(i, nsrf) |
yrads(j) = solsw(i, nsrf) + sollw(i, nsrf) |
338 |
ypaprs(j, klev+1) = paprs(i, klev+1) |
ypaprs(j, klev+1) = paprs(i, klev+1) |
339 |
y_run_off_lic_0(j) = run_off_lic_0(i) |
y_run_off_lic_0(j) = run_off_lic_0(i) |
|
yu10mx(j) = u10m(i, nsrf) |
|
|
yu10my(j) = v10m(i, nsrf) |
|
|
ywindsp(j) = sqrt(yu10mx(j)*yu10mx(j)+yu10my(j)*yu10my(j)) |
|
340 |
END DO |
END DO |
341 |
|
|
342 |
! For continent, copy soil water content |
! For continent, copy soil water content |
444 |
|
|
445 |
! calculer la diffusion de "q" et de "h" |
! calculer la diffusion de "q" et de "h" |
446 |
CALL clqh(dtime, itap, jour, debut, rlat, knon, nsrf, ni(:knon), & |
CALL clqh(dtime, itap, jour, debut, rlat, knon, nsrf, ni(:knon), & |
447 |
pctsrf, ytsoil, yqsol, rmu0, co2_ppm, yrugos, yrugoro, yu1, & |
pctsrf, ytsoil, yqsol, rmu0, yrugos, yrugoro, yu1, & |
448 |
yv1, coefh(:knon, :), yt, yq, yts, ypaprs, ypplay, ydelp, & |
yv1, coefh(:knon, :), yt, yq, yts, ypaprs, ypplay, ydelp, & |
449 |
yrads, yalb(:knon), ysnow, yqsurf, yrain_f, ysnow_f, yfder, & |
yrads, yalb(:knon), ysnow, yqsurf, yrain_f, ysnow_f, yfder, & |
450 |
yfluxlat, pctsrf_new, yagesno(:knon), y_d_t, y_d_q, & |
yfluxlat, pctsrf_new, yagesno(:knon), y_d_t, y_d_q, & |
576 |
|
|
577 |
END DO |
END DO |
578 |
|
|
579 |
CALL hbtm(knon, ypaprs, ypplay, yt2m, yq2m, yustar, & |
CALL hbtm(knon, ypaprs, ypplay, yt2m, yq2m, yustar, y_flux_t, & |
580 |
y_flux_t, y_flux_q, yu, yv, yt, yq, ypblh, ycapcl, yoliqcl, & |
y_flux_q, yu, yv, yt, yq, ypblh(:knon), ycapcl, yoliqcl, & |
581 |
ycteicl, ypblt, ytherm, ytrmb1, ytrmb2, ytrmb3, ylcl) |
ycteicl, ypblt, ytherm, ytrmb1, ytrmb2, ytrmb3, ylcl) |
582 |
|
|
583 |
DO j = 1, knon |
DO j = 1, knon |