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 |
|
|
|
integer isplit, nsplit |
|
|
parameter (nsplit=10) |
|
|
data isplit/0/ |
|
|
save isplit |
|
|
|
|
|
logical sorties |
|
72 |
real rho(klon, klev), rhobarz(klon, klev+1), masse(klon, klev) |
real rho(klon, klev), rhobarz(klon, klev+1), masse(klon, klev) |
73 |
real zpspsk(klon, klev) |
real zpspsk(klon, klev) |
74 |
|
|
75 |
real wmax(klon), wmaxa(klon) |
real wmax(klon), wmaxa(klon) |
|
real wa(klon, klev, klev+1) |
|
|
real wd(klon, klev+1) |
|
76 |
real fracd(klon, klev+1) |
real fracd(klon, klev+1) |
77 |
real xxx(klon, klev+1) |
real xxx(klon, klev+1) |
78 |
real larg_cons(klon, klev+1) |
real larg_cons(klon, klev+1) |
93 |
|
|
94 |
! initialisation: |
! initialisation: |
95 |
|
|
|
sorties=.true. |
|
96 |
IF(ngrid.NE.klon) THEN |
IF(ngrid.NE.klon) THEN |
97 |
PRINT * |
PRINT * |
98 |
PRINT *, 'STOP dans convadj' |
PRINT *, 'STOP dans convadj' |
129 |
zlev(ig, 1)=0. |
zlev(ig, 1)=0. |
130 |
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 |
131 |
enddo |
enddo |
|
do l=1, nlay |
|
|
do ig=1, ngrid |
|
|
zlay(ig, l)=pphi(ig, l)/RG |
|
|
enddo |
|
|
enddo |
|
132 |
|
|
133 |
! Calcul des densites |
! Calcul des densites |
134 |
|
|
144 |
enddo |
enddo |
145 |
enddo |
enddo |
146 |
|
|
|
do k=1, nlay |
|
|
do l=1, nlay+1 |
|
|
do ig=1, ngrid |
|
|
wa(ig, k, l)=0. |
|
|
enddo |
|
|
enddo |
|
|
enddo |
|
|
|
|
147 |
! Calcul de w2, quarre de w a partir de la cape |
! Calcul de w2, quarre de w a partir de la cape |
148 |
! a partir de w2, on calcule wa, vitesse de l'ascendance |
! a partir de w2, on calcule wa, vitesse de l'ascendance |
149 |
|
|
520 |
do ig=1, ngrid |
do ig=1, ngrid |
521 |
if(fracd(ig, l).lt.0.1) then |
if(fracd(ig, l).lt.0.1) then |
522 |
stop'fracd trop petit' |
stop'fracd trop petit' |
|
else |
|
|
! vitesse descendante "diagnostique" |
|
|
wd(ig, l)=fm(ig, l)/(fracd(ig, l)*rhobarz(ig, l)) |
|
523 |
endif |
endif |
524 |
enddo |
enddo |
525 |
enddo |
enddo |
591 |
enddo |
enddo |
592 |
enddo |
enddo |
593 |
|
|
|
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' |
|
|
|
|
594 |
end SUBROUTINE thermcell |
end SUBROUTINE thermcell |
595 |
|
|
596 |
end module thermcell_m |
end module thermcell_m |