/[lmdze]/trunk/phylmd/Conflx/flxdlfs.f
ViewVC logotype

Annotation of /trunk/phylmd/Conflx/flxdlfs.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (hide annotations)
Wed Mar 5 14:57:53 2014 UTC (10 years, 3 months ago) by guez
File size: 3616 byte(s)
Changed all ".f90" suffixes to ".f".
1 guez 78 module flxdlfs_m
2    
3     IMPLICIT none
4    
5     contains
6    
7     SUBROUTINE flxdlfs(ptenh, pqenh, pgeoh, paph, ptu, pqu, ldcum, kcbot, &
8     kctop, pmfub, prfl, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, kdtop, lddraf)
9    
10     ! This routine calculates level of free sinking for cumulus
11     ! downdrafts and specifies T, q, u and v values
12    
13     ! To produce LFS-values for cumulus downdrafts for massflux
14     ! cumulus parameterization
15    
16     ! Input are environmental values of T, q, u, v, p, Phi and updraft
17     ! values T, q, u and v and also cloud base massflux and
18     ! cu-precipitation rate. it returns T, q, u and v values and
19     ! massflux at LFS.
20    
21     ! Check for negative buoyancy of air of equal parts of moist
22     ! environmental air and cloud air.
23    
24     USE dimphy, ONLY: klev, klon
25     USE flxadjtq_m, ONLY: flxadjtq
26     USE suphec_m, ONLY: rcpd, retv
27     USE yoecumf, ONLY: cmfdeps
28    
29     REAL ptenh(klon, klev)
30     REAL pqenh(klon, klev)
31     REAL, intent(in):: pgeoh(klon, klev), paph(klon, klev + 1)
32     REAL ptu(klon, klev), pqu(klon, klev)
33     LOGICAL ldcum(klon)
34     INTEGER kcbot(klon), kctop(klon)
35     REAL pmfub(klon)
36     REAL prfl(klon)
37     REAL ptd(klon, klev), pqd(klon, klev)
38     REAL pmfd(klon, klev), pmfds(klon, klev), pmfdq(klon, klev)
39     REAL pdmfdp(klon, klev)
40     INTEGER kdtop(klon)
41     LOGICAL lddraf(klon)
42    
43     ! Local:
44     REAL ztenwb(klon, klev), zqenwb(klon, klev), zcond(klon)
45     REAL zttest, zqtest, zbuo, zmftop
46     LOGICAL llo2(klon)
47     INTEGER i, k, is, icall
48    
49     !----------------------------------------------------------------------
50    
51     DO i= 1, klon
52     lddraf(i)=.FALSE.
53     kdtop(i)=klev + 1
54     ENDDO
55    
56     ! DETERMINE LEVEL OF FREE SINKING BY
57     ! DOING A SCAN FROM TOP TO BASE OF CUMULUS CLOUDS
58    
59     ! FOR EVERY POINT AND PROCEED AS FOLLOWS:
60     ! (1) DETEMINE WET BULB ENVIRONMENTAL T AND Q
61     ! (2) DO MIXING WITH CUMULUS CLOUD AIR
62     ! (3) CHECK FOR NEGATIVE BUOYANCY
63    
64     ! THE ASSUMPTION IS THAT AIR OF DOWNDRAFTS IS MIXTURE
65     ! OF 50% CLOUD AIR + 50% ENVIRONMENTAL AIR AT WET BULB
66     ! TEMPERATURE (I.E. WHICH BECAME SATURATED DUE TO
67     ! EVAPORATION OF RAIN AND CLOUD WATER)
68    
69     DO k = 3, klev-3
70     is=0
71     DO i= 1, klon
72     ztenwb(i, k)=ptenh(i, k)
73     zqenwb(i, k)=pqenh(i, k)
74     llo2(i) = ldcum(i).AND.prfl(i).GT.0. &
75     .AND..NOT.lddraf(i) &
76     .AND.(k.LT.kcbot(i).AND.k.GT.kctop(i))
77     IF ( llo2(i) ) is = is + 1
78     end DO
79     IF(is.EQ.0) cycle
80    
81     icall=2
82     CALL flxadjtq(paph(:, k), ztenwb(1, k), zqenwb(1, k), llo2, icall)
83    
84     ! DO MIXING OF CUMULUS AND ENVIRONMENTAL AIR
85     ! AND CHECK FOR NEGATIVE BUOYANCY.
86     ! THEN SET VALUES FOR DOWNDRAFT AT LFS.
87    
88     DO i= 1, klon
89     IF (llo2(i)) THEN
90     zttest=0.5*(ptu(i, k) + ztenwb(i, k))
91     zqtest=0.5*(pqu(i, k) + zqenwb(i, k))
92     zbuo=zttest*(1. + RETV*zqtest)- &
93     ptenh(i, k)*(1. + RETV *pqenh(i, k))
94     zcond(i)=pqenh(i, k)-zqenwb(i, k)
95     zmftop=-CMFDEPS*pmfub(i)
96     IF (zbuo.LT.0..AND.prfl(i).GT.10.*zmftop*zcond(i)) THEN
97     kdtop(i)=k
98     lddraf(i)=.TRUE.
99     ptd(i, k)=zttest
100     pqd(i, k)=zqtest
101     pmfd(i, k)=zmftop
102     pmfds(i, k)=pmfd(i, k)*(RCPD*ptd(i, k) + pgeoh(i, k))
103     pmfdq(i, k)=pmfd(i, k)*pqd(i, k)
104     pdmfdp(i, k-1)=-0.5*pmfd(i, k)*zcond(i)
105     prfl(i)=prfl(i) + pdmfdp(i, k-1)
106     ENDIF
107     ENDIF
108     end DO
109     end DO
110    
111     END SUBROUTINE flxdlfs
112    
113     end module flxdlfs_m

  ViewVC Help
Powered by ViewVC 1.1.21