5 |
rain_f, snow_f, solsw, sollw, sollwdown, fder, rlon, rlat, cufi,& |
rain_f, snow_f, solsw, sollw, sollwdown, fder, rlon, rlat, cufi,& |
6 |
cvfi, rugos, debut, lafin, agesno, rugoro, d_t, d_q, d_u, d_v,& |
cvfi, rugos, debut, lafin, agesno, rugoro, d_t, d_q, d_u, d_v,& |
7 |
d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, q2,& |
d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, q2,& |
8 |
dflux_t, dflux_q, zcoefh, zu1, zv1, t2m, q2m, u10m, v10m, & |
dflux_t, dflux_q, zcoefh, zu1, zv1, t2m, q2m, u10m, v10m, pblh,& |
9 |
pblh, capcl, oliqcl, cteicl, pblt, therm, trmb1, trmb2, trmb3,& |
capcl, oliqcl, cteicl, pblt, therm, trmb1, trmb2, trmb3, plcl,& |
10 |
plcl, fqcalving, ffonte, run_off_lic_0, & !IM "slab" ocean |
fqcalving, ffonte, run_off_lic_0, flux_o, flux_g, tslab, seaice) |
|
flux_o, flux_g, tslab, seaice) |
|
11 |
|
|
12 |
! From phylmd/clmain.F, v 1.6 2005/11/16 14:47:19 |
! From phylmd/clmain.F, v 1.6 2005/11/16 14:47:19 |
13 |
|
|
85 |
|
|
86 |
!$$$ PB ajout pour soil |
!$$$ PB ajout pour soil |
87 |
|
|
88 |
USE ioipsl |
USE histcom, ONLY : histbeg_totreg, histdef, histend, histsync |
89 |
USE interface_surf |
use histwrite_m, only: histwrite |
90 |
USE dimens_m |
use calendar, ONLY : ymds2ju |
91 |
USE indicesol |
USE dimens_m, ONLY : iim, jjm |
92 |
USE dimphy |
USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf |
93 |
USE dimsoil |
USE dimphy, ONLY : klev, klon, zmasq |
94 |
USE temps |
USE dimsoil, ONLY : nsoilmx |
95 |
USE iniprint |
USE temps, ONLY : annee_ref, itau_phy |
96 |
USE yomcst |
USE dynetat0_m, ONLY : day_ini |
97 |
USE yoethf |
USE iniprint, ONLY : prt_level |
98 |
USE fcttre |
USE yomcst, ONLY : rd, rg, rkappa |
99 |
USE conf_phys_m |
USE conf_phys_m, ONLY : iflag_pbl |
100 |
USE gath_cpl, ONLY : gath2cpl |
USE gath_cpl, ONLY : gath2cpl |
101 |
|
|
102 |
IMPLICIT NONE |
IMPLICIT NONE |
223 |
|
|
224 |
! maf pour sorties IOISPL en cas de debugagage |
! maf pour sorties IOISPL en cas de debugagage |
225 |
|
|
226 |
CHARACTER*80 cldebug |
CHARACTER (80) cldebug |
227 |
SAVE cldebug |
SAVE cldebug |
228 |
CHARACTER*8 cl_surf(nbsrf) |
CHARACTER (8) cl_surf(nbsrf) |
229 |
SAVE cl_surf |
SAVE cl_surf |
230 |
INTEGER nhoridbg, nidbg |
INTEGER nhoridbg, nidbg |
231 |
SAVE nhoridbg, nidbg |
SAVE nhoridbg, nidbg |
298 |
ytherm = 0. |
ytherm = 0. |
299 |
|
|
300 |
IF (check) THEN |
IF (check) THEN |
301 |
print *, modname, ' klon=', klon |
PRINT *, modname, ' klon=', klon |
302 |
END IF |
END IF |
303 |
|
|
304 |
IF (debugindex .AND. first_appel) THEN |
IF (debugindex .AND. first_appel) THEN |
450 |
END DO |
END DO |
451 |
|
|
452 |
IF (check) THEN |
IF (check) THEN |
453 |
print *, 'CLMAIN, nsrf, knon =', nsrf, knon |
PRINT *, 'CLMAIN, nsrf, knon =', nsrf, knon |
454 |
END IF |
END IF |
455 |
|
|
456 |
! variables pour avoir une sortie IOIPSL des INDEX |
! variables pour avoir une sortie IOIPSL des INDEX |
526 |
END DO |
END DO |
527 |
END DO |
END DO |
528 |
|
|
|
|
|
529 |
! calculer Cdrag et les coefficients d'echange |
! calculer Cdrag et les coefficients d'echange |
530 |
CALL coefkz(nsrf, knon, ypaprs, ypplay, & !IM 261103 |
CALL coefkz(nsrf, knon, ypaprs, ypplay, ksta, ksta_ter, yts,& |
531 |
ksta, ksta_ter, & !IM 261103 |
yrugos, yu, yv, yt, yq, yqsurf, ycoefm, ycoefh) |
|
yts, yrugos, yu, yv, yt, yq, yqsurf, ycoefm, ycoefh) |
|
532 |
!IM 081204 BEG |
!IM 081204 BEG |
533 |
!CR test |
!CR test |
534 |
IF (iflag_pbl==1) THEN |
IF (iflag_pbl==1) THEN |
583 |
yzlay(1:knon, 1) = rd*yt(1:knon, 1)/(0.5*(ypaprs(1:knon, & |
yzlay(1:knon, 1) = rd*yt(1:knon, 1)/(0.5*(ypaprs(1:knon, & |
584 |
1)+ypplay(1:knon, 1)))*(ypaprs(1:knon, 1)-ypplay(1:knon, 1))/rg |
1)+ypplay(1:knon, 1)))*(ypaprs(1:knon, 1)-ypplay(1:knon, 1))/rg |
585 |
DO k = 2, klev |
DO k = 2, klev |
586 |
yzlay(1:knon, k) = yzlay(1:knon, k-1) + rd*0.5*(yt(1:knon, k-1)+yt(1: & |
yzlay(1:knon, k) = yzlay(1:knon, k-1) & |
587 |
knon, k))/ypaprs(1:knon, k)*(ypplay(1:knon, k-1)-ypplay(1:knon, k))/ & |
+ rd*0.5*(yt(1:knon, k-1) +yt(1: knon, k)) & |
588 |
|
/ ypaprs(1:knon, k) *(ypplay(1:knon, k-1)-ypplay(1:knon, k))/ & |
589 |
rg |
rg |
590 |
END DO |
END DO |
591 |
DO k = 1, klev |
DO k = 1, klev |
592 |
yteta(1:knon, k) = yt(1:knon, k)*(ypaprs(1:knon, 1)/ypplay(1:knon, k)) & |
yteta(1:knon, k) = yt(1:knon, k)*(ypaprs(1:knon, 1) & |
593 |
**rkappa*(1.+0.61*yq(1:knon, k)) |
/ ypplay(1:knon, k))**rkappa * (1.+0.61*yq(1:knon, k)) |
594 |
END DO |
END DO |
595 |
yzlev(1:knon, 1) = 0. |
yzlev(1:knon, 1) = 0. |
596 |
yzlev(1:knon, klev+1) = 2.*yzlay(1:knon, klev) - yzlay(1:knon, klev-1) |
yzlev(1:knon, klev+1) = 2.*yzlay(1:knon, klev) - yzlay(1:knon, klev-1) |
642 |
! calculer la diffusion des vitesses "u" et "v" |
! calculer la diffusion des vitesses "u" et "v" |
643 |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
644 |
|
|
645 |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yu, ypaprs, ypplay, ydelp, & |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yu, ypaprs, ypplay, & |
646 |
y_d_u, y_flux_u) |
ydelp, y_d_u, y_flux_u) |
647 |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yv, ypaprs, ypplay, ydelp, & |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yv, ypaprs, ypplay, & |
648 |
y_d_v, y_flux_v) |
ydelp, y_d_v, y_flux_v) |
649 |
|
|
650 |
! pour le couplage |
! pour le couplage |
651 |
ytaux = y_flux_u(:, 1) |
ytaux = y_flux_u(:, 1) |
799 |
END DO |
END DO |
800 |
|
|
801 |
CALL stdlevvar(klon, knon, nsrf, zxli, uzon, vmer, tair1, qair1, zgeo1, & |
CALL stdlevvar(klon, knon, nsrf, zxli, uzon, vmer, tair1, qair1, zgeo1, & |
802 |
tairsol, qairsol, rugo1, psfce, patm, & |
tairsol, qairsol, rugo1, psfce, patm, yt2m, yq2m, yt10m, yq10m, & |
803 |
yt2m, yq2m, yt10m, yq10m, yu10m, yustar) |
yu10m, yustar) |
804 |
!IM 081204 END |
!IM 081204 END |
805 |
|
|
806 |
DO j = 1, knon |
DO j = 1, knon |