4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE thermcell(ngrid, nlay, ptimestep, pplay, pplev, pphi, pu, pv, pt, & |
SUBROUTINE thermcell(ngrid, nlay, ptimestep, pplay, pplev, pphi, u, v, pt, & |
8 |
po, pduadj, pdvadj, pdtadj, pdoadj, fm0, entr0) |
po, pduadj, pdvadj, pdtadj, pdoadj, fm0, entr0) |
9 |
|
|
10 |
! Calcul du transport vertical dans la couche limite en pr\'esence |
! Calcul du transport vertical dans la couche limite en pr\'esence |
22 |
USE dimphy, ONLY : klev, klon |
USE dimphy, ONLY : klev, klon |
23 |
USE suphec_m, ONLY : rd, rg, rkappa |
USE suphec_m, ONLY : rd, rg, rkappa |
24 |
|
|
|
! arguments: |
|
|
|
|
25 |
INTEGER ngrid, nlay |
INTEGER ngrid, nlay |
26 |
real ptimestep |
real ptimestep |
|
REAL, intent(in):: pt(ngrid, nlay) |
|
|
real pdtadj(ngrid, nlay) |
|
|
REAL, intent(in):: pu(ngrid, nlay) |
|
|
real pduadj(ngrid, nlay) |
|
|
REAL, intent(in):: pv(ngrid, nlay) |
|
|
real pdvadj(ngrid, nlay) |
|
|
REAL po(ngrid, nlay), pdoadj(ngrid, nlay) |
|
27 |
REAL, intent(in):: pplay(ngrid, nlay) |
REAL, intent(in):: pplay(ngrid, nlay) |
28 |
real, intent(in):: pplev(ngrid, nlay+1) |
real, intent(in):: pplev(ngrid, nlay+1) |
29 |
real, intent(in):: pphi(ngrid, nlay) |
real, intent(in):: pphi(ngrid, nlay) |
30 |
|
REAL, intent(in):: u(ngrid, nlay) |
31 |
|
REAL, intent(in):: v(ngrid, nlay) |
32 |
|
REAL, intent(in):: pt(ngrid, nlay) |
33 |
|
REAL po(ngrid, nlay) |
34 |
|
real pduadj(ngrid, nlay) |
35 |
|
real pdvadj(ngrid, nlay) |
36 |
|
real pdtadj(ngrid, nlay) |
37 |
|
real pdoadj(ngrid, nlay) |
38 |
|
real fm0(klon, klev+1), entr0(klon, klev) |
39 |
|
|
40 |
|
! Local: |
41 |
|
|
42 |
integer idetr |
integer idetr |
43 |
save idetr |
save idetr |
44 |
data idetr/3/ |
data idetr/3/ |
45 |
|
|
|
! local: |
|
|
|
|
46 |
INTEGER ig, k, l, lmaxa(klon), lmix(klon) |
INTEGER ig, k, l, lmaxa(klon), lmix(klon) |
47 |
! CR: on remplace lmax(klon, klev+1) |
! CR: on remplace lmax(klon, klev+1) |
48 |
INTEGER lmax(klon), lmin(klon), lentr(klon) |
INTEGER lmax(klon), lmin(klon), lentr(klon) |
75 |
real xxx(klon, klev+1) |
real xxx(klon, klev+1) |
76 |
real larg_cons(klon, klev+1) |
real larg_cons(klon, klev+1) |
77 |
real larg_detr(klon, klev+1) |
real larg_detr(klon, klev+1) |
78 |
real fm0(klon, klev+1), entr0(klon, klev), detr(klon, klev) |
real detr(klon, klev) |
79 |
real fm(klon, klev+1), entr(klon, klev) |
real fm(klon, klev+1), entr(klon, klev) |
80 |
real fmc(klon, klev+1) |
real fmc(klon, klev+1) |
81 |
|
|
111 |
DO ig=1, ngrid |
DO ig=1, ngrid |
112 |
zpspsk(ig, l)=(pplay(ig, l)/pplev(ig, 1))**RKAPPA |
zpspsk(ig, l)=(pplay(ig, l)/pplev(ig, 1))**RKAPPA |
113 |
zh(ig, l)=pt(ig, l)/zpspsk(ig, l) |
zh(ig, l)=pt(ig, l)/zpspsk(ig, l) |
114 |
zu(ig, l)=pu(ig, l) |
zu(ig, l)=u(ig, l) |
115 |
zv(ig, l)=pv(ig, l) |
zv(ig, l)=v(ig, l) |
116 |
zo(ig, l)=po(ig, l) |
zo(ig, l)=po(ig, l) |
117 |
ztv(ig, l)=zh(ig, l)*(1.+0.61*zo(ig, l)) |
ztv(ig, l)=zh(ig, l)*(1.+0.61*zo(ig, l)) |
118 |
end DO |
end DO |