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 ioipsl, ONLY : histbeg_totreg, histdef, histend, histsync, & |
89 |
USE interface_surf |
histwrite, ymds2ju |
90 |
USE dimens_m |
USE dimens_m, ONLY : iim, jjm |
91 |
USE indicesol |
USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf |
92 |
USE dimphy |
USE dimphy, ONLY : klev, klon, zmasq |
93 |
USE dimsoil |
USE dimsoil, ONLY : nsoilmx |
94 |
USE temps |
USE temps, ONLY : annee_ref, itau_phy |
95 |
USE iniprint |
USE dynetat0_m, ONLY : day_ini |
96 |
USE yomcst |
USE iniprint, ONLY : prt_level |
97 |
USE yoethf |
USE yomcst, ONLY : rd, rg, rkappa |
98 |
USE fcttre |
USE conf_phys_m, ONLY : iflag_pbl |
|
USE conf_phys_m |
|
99 |
USE gath_cpl, ONLY : gath2cpl |
USE gath_cpl, ONLY : gath2cpl |
100 |
|
|
101 |
IMPLICIT NONE |
IMPLICIT NONE |
222 |
|
|
223 |
! maf pour sorties IOISPL en cas de debugagage |
! maf pour sorties IOISPL en cas de debugagage |
224 |
|
|
225 |
CHARACTER*80 cldebug |
CHARACTER (80) cldebug |
226 |
SAVE cldebug |
SAVE cldebug |
227 |
CHARACTER*8 cl_surf(nbsrf) |
CHARACTER (8) cl_surf(nbsrf) |
228 |
SAVE cl_surf |
SAVE cl_surf |
229 |
INTEGER nhoridbg, nidbg |
INTEGER nhoridbg, nidbg |
230 |
SAVE nhoridbg, nidbg |
SAVE nhoridbg, nidbg |
297 |
ytherm = 0. |
ytherm = 0. |
298 |
|
|
299 |
IF (check) THEN |
IF (check) THEN |
300 |
print *, modname, ' klon=', klon |
PRINT *, modname, ' klon=', klon |
301 |
END IF |
END IF |
302 |
|
|
303 |
IF (debugindex .AND. first_appel) THEN |
IF (debugindex .AND. first_appel) THEN |
449 |
END DO |
END DO |
450 |
|
|
451 |
IF (check) THEN |
IF (check) THEN |
452 |
print *, 'CLMAIN, nsrf, knon =', nsrf, knon |
PRINT *, 'CLMAIN, nsrf, knon =', nsrf, knon |
453 |
END IF |
END IF |
454 |
|
|
455 |
! variables pour avoir une sortie IOIPSL des INDEX |
! variables pour avoir une sortie IOIPSL des INDEX |
525 |
END DO |
END DO |
526 |
END DO |
END DO |
527 |
|
|
|
|
|
528 |
! calculer Cdrag et les coefficients d'echange |
! calculer Cdrag et les coefficients d'echange |
529 |
CALL coefkz(nsrf, knon, ypaprs, ypplay, & !IM 261103 |
CALL coefkz(nsrf, knon, ypaprs, ypplay, ksta, ksta_ter, yts,& |
530 |
ksta, ksta_ter, & !IM 261103 |
yrugos, yu, yv, yt, yq, yqsurf, ycoefm, ycoefh) |
|
yts, yrugos, yu, yv, yt, yq, yqsurf, ycoefm, ycoefh) |
|
531 |
!IM 081204 BEG |
!IM 081204 BEG |
532 |
!CR test |
!CR test |
533 |
IF (iflag_pbl==1) THEN |
IF (iflag_pbl==1) THEN |
582 |
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, & |
583 |
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 |
584 |
DO k = 2, klev |
DO k = 2, klev |
585 |
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) & |
586 |
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)) & |
587 |
|
/ ypaprs(1:knon, k) *(ypplay(1:knon, k-1)-ypplay(1:knon, k))/ & |
588 |
rg |
rg |
589 |
END DO |
END DO |
590 |
DO k = 1, klev |
DO k = 1, klev |
591 |
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) & |
592 |
**rkappa*(1.+0.61*yq(1:knon, k)) |
/ ypplay(1:knon, k))**rkappa * (1.+0.61*yq(1:knon, k)) |
593 |
END DO |
END DO |
594 |
yzlev(1:knon, 1) = 0. |
yzlev(1:knon, 1) = 0. |
595 |
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) |
641 |
! calculer la diffusion des vitesses "u" et "v" |
! calculer la diffusion des vitesses "u" et "v" |
642 |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
643 |
|
|
644 |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yu, ypaprs, ypplay, ydelp, & |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yu, ypaprs, ypplay, & |
645 |
y_d_u, y_flux_u) |
ydelp, y_d_u, y_flux_u) |
646 |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yv, ypaprs, ypplay, ydelp, & |
CALL clvent(knon, dtime, yu1, yv1, ycoefm, yt, yv, ypaprs, ypplay, & |
647 |
y_d_v, y_flux_v) |
ydelp, y_d_v, y_flux_v) |
648 |
|
|
649 |
! pour le couplage |
! pour le couplage |
650 |
ytaux = y_flux_u(:, 1) |
ytaux = y_flux_u(:, 1) |
798 |
END DO |
END DO |
799 |
|
|
800 |
CALL stdlevvar(klon, knon, nsrf, zxli, uzon, vmer, tair1, qair1, zgeo1, & |
CALL stdlevvar(klon, knon, nsrf, zxli, uzon, vmer, tair1, qair1, zgeo1, & |
801 |
tairsol, qairsol, rugo1, psfce, patm, & |
tairsol, qairsol, rugo1, psfce, patm, yt2m, yq2m, yt10m, yq10m, & |
802 |
yt2m, yq2m, yt10m, yq10m, yu10m, yustar) |
yu10m, yustar) |
803 |
!IM 081204 END |
!IM 081204 END |
804 |
|
|
805 |
DO j = 1, knon |
DO j = 1, knon |