53 |
|
|
54 |
real zmax(klon), zw, zw2(klon, klev+1), ztva(klon, klev) |
real zmax(klon), zw, zw2(klon, klev+1), ztva(klon, klev) |
55 |
|
|
56 |
real zlev(klon, klev+1), zlay(klon, klev) |
real zlev(klon, klev+1) |
57 |
REAL zh(klon, klev), zdhadj(klon, klev) |
REAL zh(klon, klev), zdhadj(klon, klev) |
58 |
REAL ztv(klon, klev) |
REAL ztv(klon, klev) |
59 |
real zu(klon, klev), zv(klon, klev), zo(klon, klev) |
real zu(klon, klev), zv(klon, klev), zo(klon, klev) |
|
real zla(klon, klev+1) |
|
|
real zwa(klon, klev+1) |
|
|
real zld(klon, klev+1) |
|
60 |
real zva(klon, klev) |
real zva(klon, klev) |
61 |
real zua(klon, klev) |
real zua(klon, klev) |
62 |
real zoa(klon, klev) |
real zoa(klon, klev) |
69 |
real thetath2(klon, klev), wth2(klon, klev) |
real thetath2(klon, klev), wth2(klon, klev) |
70 |
common/comtherm/thetath2, wth2 |
common/comtherm/thetath2, wth2 |
71 |
|
|
72 |
integer isplit, nsplit |
integer nsplit |
73 |
parameter (nsplit=10) |
parameter (nsplit=10) |
|
data isplit/0/ |
|
|
save isplit |
|
74 |
|
|
|
logical sorties |
|
75 |
real rho(klon, klev), rhobarz(klon, klev+1), masse(klon, klev) |
real rho(klon, klev), rhobarz(klon, klev+1), masse(klon, klev) |
76 |
real zpspsk(klon, klev) |
real zpspsk(klon, klev) |
77 |
|
|
78 |
real wmax(klon), wmaxa(klon) |
real wmax(klon), wmaxa(klon) |
|
real wa(klon, klev, klev+1) |
|
|
real wd(klon, klev+1) |
|
79 |
real fracd(klon, klev+1) |
real fracd(klon, klev+1) |
80 |
real xxx(klon, klev+1) |
real xxx(klon, klev+1) |
81 |
real larg_cons(klon, klev+1) |
real larg_cons(klon, klev+1) |
96 |
|
|
97 |
! initialisation: |
! initialisation: |
98 |
|
|
|
sorties=.true. |
|
99 |
IF(ngrid.NE.klon) THEN |
IF(ngrid.NE.klon) THEN |
100 |
PRINT * |
PRINT * |
101 |
PRINT *, 'STOP dans convadj' |
PRINT *, 'STOP dans convadj' |
132 |
zlev(ig, 1)=0. |
zlev(ig, 1)=0. |
133 |
zlev(ig, nlay+1)=(2.*pphi(ig, klev)-pphi(ig, klev-1))/RG |
zlev(ig, nlay+1)=(2.*pphi(ig, klev)-pphi(ig, klev-1))/RG |
134 |
enddo |
enddo |
|
do l=1, nlay |
|
|
do ig=1, ngrid |
|
|
zlay(ig, l)=pphi(ig, l)/RG |
|
|
enddo |
|
|
enddo |
|
135 |
|
|
136 |
! Calcul des densites |
! Calcul des densites |
137 |
|
|
147 |
enddo |
enddo |
148 |
enddo |
enddo |
149 |
|
|
|
do k=1, nlay |
|
|
do l=1, nlay+1 |
|
|
do ig=1, ngrid |
|
|
wa(ig, k, l)=0. |
|
|
enddo |
|
|
enddo |
|
|
enddo |
|
|
|
|
150 |
! Calcul de w2, quarre de w a partir de la cape |
! Calcul de w2, quarre de w a partir de la cape |
151 |
! a partir de w2, on calcule wa, vitesse de l'ascendance |
! a partir de w2, on calcule wa, vitesse de l'ascendance |
152 |
|
|
523 |
do ig=1, ngrid |
do ig=1, ngrid |
524 |
if(fracd(ig, l).lt.0.1) then |
if(fracd(ig, l).lt.0.1) then |
525 |
stop'fracd trop petit' |
stop'fracd trop petit' |
|
else |
|
|
! vitesse descendante "diagnostique" |
|
|
wd(ig, l)=fm(ig, l)/(fracd(ig, l)*rhobarz(ig, l)) |
|
526 |
endif |
endif |
527 |
enddo |
enddo |
528 |
enddo |
enddo |
594 |
enddo |
enddo |
595 |
enddo |
enddo |
596 |
|
|
|
print *, '14 OK convect8' |
|
|
|
|
|
! Calculs pour les sorties |
|
|
|
|
|
if(sorties) then |
|
|
do l=1, nlay |
|
|
do ig=1, ngrid |
|
|
zla(ig, l)=(1.-fracd(ig, l))*zmax(ig) |
|
|
zld(ig, l)=fracd(ig, l)*zmax(ig) |
|
|
if(1.-fracd(ig, l).gt.1.e-10) & |
|
|
zwa(ig, l)=wd(ig, l)*fracd(ig, l)/(1.-fracd(ig, l)) |
|
|
enddo |
|
|
enddo |
|
|
|
|
|
isplit=isplit+1 |
|
|
endif |
|
|
|
|
|
print *, '19 OK convect8' |
|
|
|
|
597 |
end SUBROUTINE thermcell |
end SUBROUTINE thermcell |
598 |
|
|
599 |
end module thermcell_m |
end module thermcell_m |