1 SUBROUTINE cv3_vertmix(len, nd, iflag, plim1, plim2, p, ph, &
3 wi, nk, tmix, thmix, qmix, qsmix, umix, vmix, plcl)
29 INTEGER,
INTENT (IN) :: nd, len
30 INTEGER,
DIMENSION (len),
INTENT (IN) :: nk
31 REAL,
DIMENSION (nd),
INTENT (IN) :: w
32 REAL,
DIMENSION (len),
INTENT (IN) :: plim1, plim2
33 REAL,
DIMENSION (len,nd),
INTENT (IN) :: t, q
34 REAL,
DIMENSION (len,nd),
INTENT (IN) :: u, v
35 REAL,
DIMENSION (len,nd),
INTENT (IN) :: p
36 REAL,
DIMENSION (len,nd+1),
INTENT (IN) :: ph
38 INTEGER,
DIMENSION (len),
INTENT (INOUT) :: iflag
40 REAL,
DIMENSION (len),
INTENT (OUT) :: tmix, thmix, qmix
41 REAL,
DIMENSION (len),
INTENT (OUT) :: umix, vmix
42 REAL,
DIMENSION (len),
INTENT (OUT) :: qsmix
43 REAL,
DIMENSION (len),
INTENT (OUT) :: plcl
44 REAL,
DIMENSION (len,nd),
INTENT (OUT) :: wi
48 INTEGER,
DIMENSION(len) :: j1, j2
51 REAL :: x, y, p0, p0m1, zdelta, zcor
54 REAL,
DIMENSION(len) :: plim2p
55 REAL,
DIMENSION(len) :: ahm, dpw, coef
56 REAL,
DIMENSION(len) :: rdcp, a2, b2, pnk
57 REAL,
DIMENSION(len) :: rh, chi
58 REAL,
DIMENSION(len) :: eqwght
59 REAL,
DIMENSION(len,nd) :: p1, p2
63 plim2p(:) = min(plim2(:),plim1(:)-dpmin)
68 IF (plim1(i)<=ph(i,j)) j1(i) = j
70 IF (plim2p(i)< ph(i,j)) j2(i) = j
95 IF (j2(i) < j1(i))
THEN
99 coef(i) = 1./(plim1(i)-plim2p(i))
107 IF (j>=j1(i) .AND. j<=j2(i))
THEN
108 p1(i, j) = min(ph(i,j), plim1(i))
109 p2(i, j) = max(ph(i,j+1), plim2p(i))
113 wi(i, j) = w(j)*(p1(i,j)-p2(i,j))*coef(i)+eqwght(i)
114 dpw(i) = dpw(i) + wi(i, j)
128 IF (j>=j1(i) .AND. j<=j2(i))
THEN
129 wi(i, j) = wi(i, j)/dpw(i)
130 ahm(i) = ahm(i) + (
cpd*(1.-q(i,j))+q(i,j)*
cpv)*t(i, j)*wi(i, j)
131 qmix(i) = qmix(i) + q(i, j)*wi(i, j)
132 umix(i) = umix(i) + u(i, j)*wi(i, j)
133 vmix(i) = vmix(i) + v(i, j)*wi(i, j)
139 rdcp(i) = (
rrd*(1.-qmix(i))+qmix(i)*
rrv)/(
cpd*(1.-qmix(i))+qmix(i)*
cpv)
149 IF (j>=j1(i) .AND. j<=j2(i))
THEN
151 y = (.5*(p1(i,j)+p2(i,j))/pnk(i))**rdcp(i)
153 b2(i) = b2(i) + (
cpd*(1.-qmix(i))+qmix(i)*
cpv)*y*wi(i, j)
159 tmix(i) = ahm(i)/b2(i)
160 thmix(i) = tmix(i)*(p0/pnk(i))**rdcp(i)
167 zdelta = max(0., sign(1.,rtt-tmix(i)))
168 qsmix(i) = r2es*foeew(tmix(i), zdelta)/(pnk(i)*100.)
169 qsmix(i) = min(0.5, qsmix(i))
170 zcor = 1./(1.-retv*qsmix(i))
171 qsmix(i) = qsmix(i)*zcor
186 IF (iflag(i)/=7)
THEN
188 rh(i) = qmix(i)/qsmix(i)
189 chi(i) = tmix(i)/(a-b*rh(i)-tmix(i))
192 chi(i) = max(chi(i), 0.)
193 rh(i) = max(rh(i), 0.)
194 plcl(i) = pnk(i)*(rh(i)**chi(i))
195 IF (((plcl(i)<200.0) .OR. (plcl(i)>=2000.0)) .AND. (iflag(i)==0)) &
200 niflag7 = niflag7 + 1
!$Id!Thermodynamical constants for cpv
!$Id!Thermodynamical constants for rrd
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo cpd
!$Id!Thermodynamical constants for rrv
subroutine cv3_vertmix(len, nd, iflag, plim1, plim2, p, ph, t, q, u, v, w, wi, nk, tmix, thmix, qmix, qsmix, umix, vmix, plcl)