module_cu_kf.F

References to this file elsewhere.
1 !WRF:MODEL_LAYER:PHYSICS
2 !
3 
4 MODULE module_cu_kf
5 
6    USE module_wrf_error
7 
8    REAL    , PARAMETER :: RAD          = 1500.
9 
10 CONTAINS
11 
12 !-------------------------------------------------------------
13    SUBROUTINE KFCPS(                                         &
14                ids,ide, jds,jde, kds,kde                     &
15               ,ims,ime, jms,jme, kms,kme                     &
16               ,its,ite, jts,jte, kts,kte                     &
17               ,DT,KTAU,DX                                    &
18               ,rho                                           &
19               ,RAINCV,NCA                                    &
20               ,U,V,TH,T,W,QV,dz8w,Pcps,pi                    &
21               ,W0AVG,XLV0,XLV1,XLS0,XLS1,CP,R,G,EP1          &
22               ,EP2,SVP1,SVP2,SVP3,SVPT0                      &
23               ,STEPCU,CU_ACT_FLAG,warm_rain                  &
24             ! optional arguments
25               ,F_QV    ,F_QC    ,F_QR    ,F_QI    ,F_QS      &
26               ,RQVCUTEN,RQCCUTEN,RQRCUTEN,RQICUTEN,RQSCUTEN  &
27               ,RTHCUTEN                                      &
28                                                              )
29 !-------------------------------------------------------------
30    IMPLICIT NONE
31 !-------------------------------------------------------------
32    INTEGER,      INTENT(IN   ) ::                            &
33                                   ids,ide, jds,jde, kds,kde, & 
34                                   ims,ime, jms,jme, kms,kme, & 
35                                   its,ite, jts,jte, kts,kte
36 
37    INTEGER,      INTENT(IN   ) :: STEPCU
38    LOGICAL,      INTENT(IN   ) :: warm_rain
39 
40    REAL,         INTENT(IN   ) :: XLV0,XLV1,XLS0,XLS1
41    REAL,         INTENT(IN   ) :: CP,R,G,EP1,EP2
42    REAL,         INTENT(IN   ) :: SVP1,SVP2,SVP3,SVPT0
43 
44    INTEGER,      INTENT(IN   ) :: KTAU                   
45 
46    REAL,  DIMENSION( ims:ime , kms:kme , jms:jme )         , &
47           INTENT(IN   ) ::                                   &
48                                                           U, &
49                                                           V, &
50                                                           W, &
51                                                          TH, &
52                                                          QV, &
53                                                           T, &
54                                                        dz8w, &
55                                                        Pcps, &
56                                                         rho, &
57                                                          pi
58 !
59    REAL,  INTENT(IN   ) :: DT, DX
60 
61    REAL, DIMENSION( ims:ime , jms:jme ),                     &
62           INTENT(INOUT) ::                                   &
63                                                      RAINCV  &
64                                                     ,   NCA
65 
66    REAL, DIMENSION( ims:ime , kms:kme , jms:jme ),           &
67           INTENT(INOUT) ::                                   &
68                                                       W0AVG
69 
70    LOGICAL, DIMENSION( ims:ime , jms:jme ),                  &
71           INTENT(INOUT) :: CU_ACT_FLAG
72 
73 !
74 ! Optional arguments
75 !
76 
77    REAL, DIMENSION( ims:ime , kms:kme , jms:jme ),           &
78          OPTIONAL,                                           &
79          INTENT(INOUT) ::                                    &
80                                                    RTHCUTEN  &
81                                                   ,RQVCUTEN  &
82                                                   ,RQCCUTEN  &
83                                                   ,RQRCUTEN  &
84                                                   ,RQICUTEN  &
85                                                   ,RQSCUTEN
86 
87 !
88 ! Flags relating to the optional tendency arrays declared above
89 ! Models that carry the optional tendencies will provdide the
90 ! optional arguments at compile time; these flags all the model
91 ! to determine at run-time whether a particular tracer is in 
92 ! use or not. 
93 !
94 
95    LOGICAL, OPTIONAL ::                                      &
96                                                    F_QV      &
97                                                   ,F_QC      &
98                                                   ,F_QR      &
99                                                   ,F_QI      &
100                                                   ,F_QS
101 
102 
103 
104 ! LOCAL VARS
105 
106    REAL, DIMENSION( kts:kte ) ::                             &
107                                                         U1D, &
108                                                         V1D, &
109                                                         T1D, &
110                                                        DZ1D, &
111                                                        QV1D, &
112                                                         P1D, &
113                                                       RHO1D, &
114                                                     W0AVG1D
115 
116    REAL, DIMENSION( kts:kte )::                              &
117                                                        DQDT, &
118                                                       DQIDT, &
119                                                       DQCDT, &
120                                                       DQRDT, &
121                                                       DQSDT, &
122                                                        DTDT
123 
124    REAL    ::         TST,tv,PRS,RHOE,W0,SCR1,DXSQ,tmp,RTHCUMAX
125 
126    INTEGER :: i,j,k,NTST,ICLDCK
127 
128    LOGICAL :: qi_flag , qs_flag
129 
130 !----------------------------------------------------------------------
131 
132 !--- CALL CUMULUS PARAMETERIZATION                                        
133 !                                                                        
134 !...TST IS THE NUMBER OF TIME STEPS IN 10 MINUTES...W0AVG IS CLOSE TO A    
135 !...RUNNING MEAN VERTICAL VELOCITY...NOTE THAT IF YOU CHANGE TST, IT WIL  
136 !...CHANGE THE FREQUENCY OF THE CONVECTIVE INTITIATION CHECK (SEE BELOW) 
137 !...NOTE THAT THE ORDERING OF VERTICAL LAYERS MUST BE REVERSED FOR W0AVG
138 !...BECAUSE THE ORDERING IS REVERSED IN KFPARA...                         
139 !                                                                           
140    DXSQ=DX*DX
141    qi_flag = .FALSE.
142    qs_flag = .FALSE.
143    IF ( PRESENT( F_QI ) ) qi_flag = f_qi
144    IF ( PRESENT( F_QS ) ) qs_flag = f_qs
145 
146 !----------------------
147    NTST=STEPCU
148    TST=float(NTST*2)                                                         
149 !----------------------
150 !  NTST=NINT(1200./(DT*2.))                                                 
151 !  TST=float(NTST)                                                         
152 !  NTST=NINT(0.5*TST)                                                   
153 !  NTST=MAX0(NTST,1)                                                   
154 !----------------------
155    ICLDCK=MOD(KTAU,NTST)                                              
156 !----------------------
157 
158    DO J = jts,jte  
159       DO K=kts,kte
160          DO I= its,ite
161             SCR1=-5.0E-4*G*rho(I,K,J)*(w(I,K,J)+w(I,K+1,J))
162             TV=T(I,K,J)*(1.+EP1*QV(I,K,J))
163             RHOE=Pcps(I,K,J)/(R*TV)
164             W0=-101.9368*SCR1/RHOE
165             W0AVG(I,K,J)=(W0AVG(I,K,J)*(TST-1.)+W0)/TST
166          ENDDO
167       ENDDO
168    ENDDO
169 !                                                                      
170 !...CHECK FOR CONVECTIVE INITIATION EVERY 5 MINUTES (OR NTST/2)...      
171 !                                                                     
172    RTHCUMAX=0.
173 
174    IF(ICLDCK.EQ.0 .or. KTAU .eq. 1) then
175 
176      DO J = jts,jte  
177      DO I= its,ite
178         CU_ACT_FLAG(i,j) = .true.
179      ENDDO
180      ENDDO
181 
182      DO J = jts,jte  
183         DO I=its,ite
184          IF ( NINT(NCA(I,J)) .gt. 0 ) then
185             CU_ACT_FLAG(i,j) = .false. 
186          ELSE
187 
188             DO k=kts,kte
189                DQDT(k)=0.
190                DQIDT(k)=0.      
191                DQCDT(k)=0.      
192                DQRDT(k)=0.      
193                DQSDT(k)=0.      
194                DTDT(k)=0.
195             ENDDO
196             RAINCV(I,J)=0.
197 !
198 ! assign vars from 3D to 1D
199 
200             DO K=kts,kte
201                U1D(K) =U(I,K,J)
202                V1D(K) =V(I,K,J)
203                T1D(K) =T(I,K,J)
204              RHO1D(K) =rho(I,K,J)
205                QV1D(K)=QV(I,K,J)
206                P1D(K) =Pcps(I,K,J)
207                W0AVG1D(K) =W0AVG(I,K,J)
208                DZ1D(k)=dz8w(I,K,J)
209             ENDDO
210 
211 !
212             CALL KFPARA(I, J,                       &
213                  U1D,V1D,T1D,QV1D,P1D,DZ1D,         &
214                  W0AVG1D,DT,DX,DXSQ,RHO1D,          &
215                  XLV0,XLV1,XLS0,XLS1,CP,R,G,        &
216                  EP2,SVP1,SVP2,SVP3,SVPT0,          &
217                  DQDT,DQIDT,DQCDT,DQRDT,DQSDT,DTDT, &
218                  RAINCV,NCA,                        &
219                  warm_rain,qi_flag,qs_flag,         &
220                  ids,ide, jds,jde, kds,kde,         &        
221                  ims,ime, jms,jme, kms,kme,         &
222                  its,ite, jts,jte, kts,kte          )
223  
224             IF ( PRESENT( RTHCUTEN ) .AND. PRESENT( RQVCUTEN ) ) THEN
225               DO K=kts,kte
226                  RTHCUTEN(I,K,J)=DTDT(K)/pi(I,K,J)
227                  RQVCUTEN(I,K,J)=DQDT(K)
228               ENDDO
229             ENDIF
230 
231             IF( PRESENT(RQRCUTEN) .AND. PRESENT(RQCCUTEN) .AND. &
232                 PRESENT(F_QR)                                    ) THEN
233               IF ( F_QR            ) THEN
234                  DO K=kts,kte
235                     RQRCUTEN(I,K,J)=DQRDT(K)
236                     RQCCUTEN(I,K,J)=DQCDT(K)
237                  ENDDO
238                ELSE
239 ! This is the case for Eta microphysics without 3d rain field
240                  DO K=kts,kte
241                     RQRCUTEN(I,K,J)=0.
242                     RQCCUTEN(I,K,J)=DQRDT(K)+DQCDT(K)
243                  ENDDO
244               ENDIF
245             ENDIF
246 
247 !......     QSTEN STORES GRAUPEL TENDENCY IF IT EXISTS, OTHERISE SNOW (V2)     
248 
249             IF( PRESENT( RQICUTEN ) .AND. qi_flag )THEN
250               DO K=kts,kte
251                  RQICUTEN(I,K,J)=DQIDT(K)
252               ENDDO
253             ENDIF
254 
255             IF( PRESENT ( RQSCUTEN ) .AND. qs_flag )THEN
256               DO K=kts,kte
257                  RQSCUTEN(I,K,J)=DQSDT(K)
258               ENDDO
259             ENDIF                                                         
260 !
261          ENDIF                                                         
262        ENDDO
263      ENDDO
264 
265    ENDIF
266 
267    END SUBROUTINE KFCPS
268    
269 !-----------------------------------------------------------
270    SUBROUTINE KFPARA (I, J,                                &
271                       U0,V0,T0,QV0,P0,DZQ,W0AVG1D,         &
272                       DT,DX,DXSQ,rho,                      &
273                       XLV0,XLV1,XLS0,XLS1,CP,R,G,          &
274                       EP2,SVP1,SVP2,SVP3,SVPT0,            &
275                       DQDT,DQIDT,DQCDT,DQRDT,DQSDT,DTDT,   &
276                       RAINCV,NCA,                          &
277                       warm_rain,qi_flag,qs_flag,           &
278                       ids,ide, jds,jde, kds,kde,           & 
279                       ims,ime, jms,jme, kms,kme,           &
280                       its,ite, jts,jte, kts,kte            )
281 !-----------------------------------------------------------
282       IMPLICIT NONE
283 !-----------------------------------------------------------
284       INTEGER, INTENT(IN   ) :: ids,ide, jds,jde, kds,kde, &
285                                 ims,ime, jms,jme, kms,kme, &
286                                 its,ite, jts,jte, kts,kte, &
287                                 I,J
288       LOGICAL, INTENT(IN   ) :: warm_rain
289       LOGICAL           :: qi_flag, qs_flag
290 
291 !
292       REAL, DIMENSION( kts:kte ),                          &
293             INTENT(IN   ) ::                           U0, &
294                                                        V0, &
295                                                        T0, &
296                                                       QV0, &
297                                                        P0, &
298                                                       rho, &
299                                                       DZQ, &
300                                                   W0AVG1D
301 !
302       REAL,  INTENT(IN   ) :: DT,DX,DXSQ
303 !
304 
305       REAL,  INTENT(IN   ) :: XLV0,XLV1,XLS0,XLS1,CP,R,G
306       REAL,  INTENT(IN   ) :: EP2,SVP1,SVP2,SVP3,SVPT0
307 !
308       REAL, DIMENSION( kts:kte ), INTENT(INOUT) ::         &
309                                                      DQDT, &
310                                                     DQIDT, &
311                                                     DQCDT, &
312                                                     DQRDT, &
313                                                     DQSDT, &
314                                                      DTDT
315 
316       REAL, DIMENSION( ims:ime , jms:jme ),                &
317             INTENT(INOUT) ::                       RAINCV, &
318                                                       NCA
319 !
320 !...DEFINE LOCAL VARIABLES...                                
321 !                                                            
322       REAL, DIMENSION( kts:kte ) ::                        &
323             Q0,Z0,TV0,TU,TVU,QU,TZ,TVD,                    &
324             QD,QES,THTES,TG,TVG,QG,WU,WD,W0,EMS,EMSD,      &
325             UMF,UER,UDR,DMF,DER,DDR,UMF2,UER2,             &
326             UDR2,DMF2,DER2,DDR2,DZA,THTA0,THETEE,          &
327             THTAU,THETEU,THTAD,THETED,QLIQ,QICE,           &
328             QLQOUT,QICOUT,PPTLIQ,PPTICE,DETLQ,DETIC,       &
329             DETLQ2,DETIC2,RATIO,RATIO2
330 
331       REAL, DIMENSION( kts:kte ) ::                        &
332             DOMGDP,EXN,RHOE,TVQU,DP,RH,EQFRC,WSPD,         &
333             QDT,FXM,THTAG,THTESG,THPA,THFXTOP,             &
334             THFXBOT,QPA,QFXTOP,QFXBOT,QLPA,QLFXIN,         &
335             QLFXOUT,QIPA,QIFXIN,QIFXOUT,QRPA,              &
336             QRFXIN,QRFXOUT,QSPA,QSFXIN,QSFXOUT,            &
337             QL0,QLG,QI0,QIG,QR0,QRG,QS0,QSG
338                                          
339       REAL, DIMENSION( kts:kte+1 ) :: OMG
340       REAL, DIMENSION( kts:kte ) :: RAINFB,SNOWFB
341 
342 ! LOCAL VARS
343 
344       REAL    :: P00,T00,CV,B61,RLF,RHIC,RHBC,PIE,         &
345                  TTFRZ,TBFRZ,C5,RATE
346       REAL    :: GDRY,ROCP,ALIQ,BLIQ,                      & 
347                  CLIQ,DLIQ,AICE,BICE,CICE,DICE
348       REAL    :: FBFRC,P300,DPTHMX,THMIX,QMIX,ZMIX,PMIX,   &
349                  ROCPQ,TMIX,EMIX,TLOG,TDPT,TLCL,TVLCL,     &
350                  CPORQ,PLCL,ES,DLP,TENV,QENV,TVEN,TVBAR,   &
351                  ZLCL,WKL,WABS,TRPPT,WSIGNE,DTLCL,GDT,WLCL,&
352                  TVAVG,QESE,WTW,RHOLCL,AU0,VMFLCL,UPOLD,   &
353                  UPNEW,ABE,WKLCL,THTUDL,TUDL,TTEMP,FRC1,   &
354                  QNEWIC,RL,R1,QNWFRZ,EFFQ,BE,BOTERM,ENTERM,&
355                  DZZ,WSQ,UDLBE,REI,EE2,UD2,TTMP,F1,F2,     &
356                  THTTMP,QTMP,TMPLIQ,TMPICE,TU95,TU10,EE1,  &
357                  UD1,CLDHGT,DPTT,QNEWLQ,DUMFDP,EE,TSAT,    &
358                  THTA,P150,USR,VCONV,TIMEC,SHSIGN,VWS,PEF, &
359                  CBH,RCBH,PEFCBH,PEFF,PEFF2,TDER,THTMIN,   &
360                  DTMLTD,QS,TADVEC,DPDD,FRC,DPT,RDD,A1,     &
361                  DSSDT,DTMP,T1RH,QSRH,PPTFLX,CPR,CNDTNF,   &
362                  UPDINC,AINCM2,DEVDMF,PPR,RCED,DPPTDF,     &
363                  DMFLFS,DMFLFS2,RCED2,DDINC,AINCMX,AINCM1, &
364                  AINC,TDER2,PPTFL2,FABE,STAB,DTT,DTT1,     &
365                  DTIME,TMA,TMB,TMM,BCOEFF,ACOEFF,QVDIFF,   &
366                  TOPOMG,CPM,DQ,ABEG,DABE,DFDA,FRC2,DR,     &
367                  UDFRC,TUC,QGS,RH0,RHG,QINIT,QFNL,ERR2,    &
368                  RELERR,RLC,RLS,RNC,FABEOLD,AINCOLD,UEFRC, &
369                  DDFRC,TDC,DEFRC         
370 
371       INTEGER :: KX,K,KL
372 !                                                    
373       INTEGER :: ISTOP,ML,L5,L4,KMIX,LOW,                  &
374                  LC,MXLAYR,LLFC,NLAYRS,NK,                 &
375                  KPBL,KLCL,LCL,LET,IFLAG,                  &
376                  KFRZ,NK1,LTOP,NJ,LTOP1,                   &
377                  LTOPM1,LVF,KSTART,KMIN,LFS,               &
378                  ND,NIC,LDB,LDT,ND1,NDK,                   &
379                  NM,LMAX,NCOUNT,NOITR,                     &
380                  NSTEP,NTC
381 !                                                    
382       DATA P00,T00/1.E5,273.16/                     
383       DATA CV,B61,RLF/717.,0.608,3.339E5/          
384       DATA RHIC,RHBC/1.,0.90/                                    
385       DATA PIE,TTFRZ,TBFRZ,C5/3.141592654,268.16,248.16,1.0723E-3/
386       DATA RATE/0.01/                                           
387 !-----------------------------------------------------------
388       GDRY=-G/CP                                               
389       ROCP=R/CP
390       KL=kte
391       KX=kte
392 !
393 !     ALIQ = 613.3   
394 !     BLIQ = 17.502                                                   
395 !     CLIQ = 4780.8                                                  
396 !     DLIQ = 32.19                                                  
397       ALIQ = SVP1*1000.
398       BLIQ = SVP2
399       CLIQ = SVP2*SVPT0
400       DLIQ = SVP3
401       AICE = 613.2  
402       BICE = 22.452                                         
403       CICE = 6133.0                                        
404       DICE = 0.61                                         
405 !
406 
407 !...OPTION TO FEED CONVECTIVELY GENERATED RAINWATER      
408 !...INTO GRID-RESOLVED RAINWATER (OR SNOW/GRAUPEL)      
409 !...FIELD.  'FBFRC' IS THE FRACTION OF AVAILABLE       
410 !...PRECIPITATION TO BE FED BACK (0.0 - 1.0)...      
411 !                                                   
412       FBFRC=0.0                                    
413 !                                                                       
414 !...SCHEME IS CALLED ONCE  ON EACH NORTH-SOUTH SLICE, THE LOOP BELOW   
415 !...CHECKS FOR THE POSSIBILITY OF INITIATING PARAMETERIZED            
416 !...CONVECTION AT EACH POINT WITHIN THE SLICE                        
417 !                                                                   
418 !...SEE IF IT IS NECESSARY TO CHECK FOR CONVECTIVE TRIGGERING AT THIS 
419 !...GRID POINT. IF NCA>0, CONVECTION IS ALREADY ACTIVE AT THIS POINT,
420 !...JUST FEED BACK THE TENDENCIES SAVED FROM THE TIME WHEN CONVECTION  
421 !...WAS INITIATED.  IF NCA<0, CONVECTION IS NOT ACTIVE                
422 !...AND YOU MAY WANT TO CHECK TO SEE IF IT CAN BE ACTIVATED FOR THE  
423 !...CURRENT CONDITIONS.  IN PREVIOUS APLICATIONS OF THIS SCHEME,    
424 !...THE VARIABLE ICLDCK WAS USED BELOW TO SAVE TIME BY ONLY CHECKING   
425 !...FOR THE POSSIBILITY OF CONVECTIVE INITIATION EVERY 5 OR 10        
426 !...MINUTES...                                                       
427 !                                                                   
428 
429 !  10 CONTINUE                                                 
430 !SUE  P300=1000.*(PSB(I,J)*A(KL)+PTOP-30.)+PP3D(I,J,KL)              
431 
432       P300=P0(1)-30000.
433 !                                                                     
434 !...PRESSURE PERTURBATION TERM IS ONLY DEFINED AT MID-POINT OF       
435 !...VERTICAL LAYERS...SINCE TOTAL PRESSURE IS NEEDED AT THE TOP AND 
436 !...BOTTOM OF LAYERS BELOW, DO AN INTERPOLATION...                       
437 !                                                                       
438 !...INPUT A VERTICAL SOUNDING ... NOTE THAT MODEL LAYERS ARE NUMBERED  
439 !...FROM BOTTOM-UP IN THE KF SCHEME...                                
440 !                                                                    
441       ML=0                                                        
442 !SUE  tmprpsb=1./PSB(I,J)
443 !SUE  CELL=PTOP*tmprpsb
444 
445       DO 15 K=1,KX                                               
446 !SUE     P0(K)=1.E3*(A(NK)*PSB(I,J)+PTOP)+PP3D(I,J,NK)          
447 !                                                                        
448 !...IF Q0 IS ABOVE SATURATION VALUE, REDUCE IT TO SATURATION LEVEL...   
449 !                                                                      
450          ES=ALIQ*EXP((BLIQ*T0(K)-CLIQ)/(T0(K)-DLIQ))                 
451          QES(K)=EP2*ES/(P0(K)-ES)                                 
452          Q0(K)=AMIN1(QES(K),QV0(K))                                 
453          Q0(K)=AMAX1(0.000001,Q0(K))                                 
454          QL0(K)=0.                                                
455          QI0(K)=0.                                               
456          QR0(K)=0.                                              
457          QS0(K)=0.                                             
458 
459          TV0(K)=T0(K)*(1.+B61*Q0(K))                                 
460          RHOE(K)=P0(K)/(R*TV0(K))                                  
461 
462          DP(K)=rho(k)*g*DZQ(k)
463 !                                                                         
464 !...DZQ IS DZ BETWEEN SIGMA SURFACES, DZA IS DZ BETWEEN MODEL HALF LEVEL 
465 !   DP IS THE PRESSURE INTERVAL BETWEEN FULL SIGMA LEVELS...            
466 !                                                                      
467          IF(P0(K).GE.500E2)L5=K                                       
468          IF(P0(K).GE.400E2)L4=K                                      
469          IF(P0(K).GE.P300)LLFC=K                                    
470          IF(T0(K).GT.T00)ML=K                                      
471    15   CONTINUE                                                   
472 
473         Z0(1)=.5*DZQ(1)   
474         DO 20 K=2,KL                                              
475           Z0(K)=Z0(K-1)+.5*(DZQ(K)+DZQ(K-1))   
476           DZA(K-1)=Z0(K)-Z0(K-1)                                 
477    20   CONTINUE                                                       
478         DZA(KL)=0.                                                    
479         KMIX=1                                                       
480    25   LOW=KMIX                                                    
481 
482         IF(LOW.GT.LLFC)GOTO 325                                    
483 
484         LC=LOW                                                    
485         MXLAYR=0                                                 
486 !                                                                        
487 !...ASSUME THAT IN ORDER TO SUPPORT A DEEP UPDRAFT YOU NEED A LAYER OF 
488 !...UNSTABLE AIR 50 TO 100 mb DEEP...TO APPROXIMATE THIS, ISOLATE A      
489 !...GROUP OF ADJACENT INDIVIDUAL MODEL LAYERS, WITH THE BASE AT LEVEL   
490 !...LC, SUCH THAT THE COMBINED DEPTH OF THESE LAYERS IS AT LEAST 60 mb..  
491 !                                                                        
492         NLAYRS=0                                                        
493         DPTHMX=0.                                                      
494         DO 63 NK=LC,KX                                                
495           DPTHMX=DPTHMX+DP(NK)                                            
496           NLAYRS=NLAYRS+1                                                
497    63   IF(DPTHMX.GT.6.E3)GOTO 64                                       
498         GOTO 325                                                       
499    64   KPBL=LC+NLAYRS-1                                              
500         KMIX=LC+1                                                        
501    18   THMIX=0.                                                        
502         QMIX=0.                                                        
503         ZMIX=0.                                                       
504         PMIX=0.                                                             
505         DPTHMX=0.                                                          
506 !                                                                         
507 !...FIND THE THERMODYNAMIC CHARACTERISTICS OF THE LAYER BY              
508 !...MASS-WEIGHTING THE CHARACTERISTICS OF THE INDIVIDUAL MODEL         
509 !...LAYERS...                                                         
510 !                                                                    
511         DO 17 NK=LC,KPBL                                            
512           DPTHMX=DPTHMX+DP(NK)                                     
513           ROCPQ=0.2854*(1.-0.28*Q0(NK))                           
514           THMIX=THMIX+DP(NK)*T0(NK)*(P00/P0(NK))**ROCPQ          
515           QMIX=QMIX+DP(NK)*Q0(NK)                               
516           ZMIX=ZMIX+DP(NK)*Z0(NK)                              
517    17   PMIX=PMIX+DP(NK)*P0(NK)                               
518         THMIX=THMIX/DPTHMX                                   
519         QMIX=QMIX/DPTHMX                                    
520         ZMIX=ZMIX/DPTHMX                                   
521         PMIX=PMIX/DPTHMX                                  
522         ROCPQ=0.2854*(1.-0.28*QMIX)                               
523         TMIX=THMIX*(PMIX/P00)**ROCPQ                             
524         EMIX=QMIX*PMIX/(EP2+QMIX)                             
525 !                                                              
526 !...FIND THE TEMPERATURE OF THE MIXTURE AT ITS LCL, PRESSURE       
527 !...LEVEL OF LCL...                                               
528 !                                                                
529         TLOG=ALOG(EMIX/ALIQ)                                    
530         TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)                             
531         TLCL=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(TMIX-T00))*(TMIX-  &
532              TDPT)                                                    
533         TLCL=AMIN1(TLCL,TMIX)                                       
534         TVLCL=TLCL*(1.+0.608*QMIX)                                 
535         CPORQ=1./ROCPQ                                            
536         PLCL=P00*(TLCL/THMIX)**CPORQ                             
537         DO 29 NK=LC,KL                                          
538           KLCL=NK                                              
539           IF(PLCL.GE.P0(NK))GOTO 35                           
540    29   CONTINUE                                            
541         GOTO 325                                                       
542    35   K=KLCL-1                                                      
543         DLP=ALOG(PLCL/P0(K))/ALOG(P0(KLCL)/P0(K))                    
544 !                                                                   
545 !...ESTIMATE ENVIRONMENTAL TEMPERATURE AND MIXING RATIO AT THE LCL...
546 !                                                                   
547         TENV=T0(K)+(T0(KLCL)-T0(K))*DLP                            
548         QENV=Q0(K)+(Q0(KLCL)-Q0(K))*DLP                           
549         TVEN=TENV*(1.+0.608*QENV)                                
550         TVBAR=0.5*(TV0(K)+TVEN)                                 
551 !        ZLCL=Z0(K)+R*TVBAR*ALOG(P0(K)/PLCL)/G                 
552         ZLCL=Z0(K)+(Z0(KLCL)-Z0(K))*DLP                                 
553 !                                                                      
554 !...CHECK TO SEE IF CLOUD IS BUOYANT USING FRITSCH-CHAPPELL TRIGGER  
555 !...FUNCTION DESCRIBED IN KAIN AND FRITSCH (1992)...W0AVG IS AN     
556 !...APROXIMATE VALUE FOR THE RUNNING-MEAN GRID-SCALE VERTICAL      
557 !...VELOCITY, WHICH GIVES SMOOTHER FIELDS OF CONVECTIVE INITIATION 
558 !...THAN THE INSTANTANEOUS VALUE...FORMULA RELATING TEMPERATURE            
559 !...PERTURBATION TO VERTICAL VELOCITY HAS BEEN USED WITH THE MOST         
560 !...SUCCESS AT GRID LENGTHS NEAR 25 km.  FOR DIFFERENT GRID-LENGTHS,     
561 !...ADJUST VERTICAL VELOCITY TO EQUIVALENT VALUE FOR 25 KM GRID         
562 !...LENGTH, ASSUMING LINEAR DEPENDENCE OF W ON GRID LENGTH...          
563 !                                                                     
564         WKLCL=0.02*ZLCL/2.5E3                                             
565         WKL=(W0AVG1D(K)+(W0AVG1D(KLCL)-W0AVG1D(K))*DLP)*DX/25.E3- & 
566             WKLCL                                                           
567         WABS=ABS(WKL)+1.E-10                                               
568         WSIGNE=WKL/WABS                                                   
569         DTLCL=4.64*WSIGNE*WABS**0.33                                     
570         GDT=G*DTLCL*(ZLCL-Z0(LC))/(TV0(LC)+TVEN)                        
571         WLCL=1.+.5*WSIGNE*SQRT(ABS(GDT)+1.E-10)                        
572         IF(TLCL+DTLCL.GT.TENV)GOTO 45                                 
573         IF(KPBL.GE.LLFC)GOTO 325                                     
574         GOTO 25                                                     
575 !                                                                       
576 !...CONVECTIVE TRIGGERING CRITERIA HAS BEEN SATISFIED...COMPUTE           
577 !...EQUIVALENT POTENTIAL TEMPERATURE                                     
578 !...(THETEU) AND VERTICAL VELOCITY OF THE RISING PARCEL AT THE LCL...    
579 !                                                                       
580    45   THETEU(K)=TMIX*(1.E5/PMIX)**(0.2854*(1.-0.28*QMIX))* & 
581                   EXP((3374.6525/TLCL-2.5403)*QMIX*(1.+0.81*QMIX))     
582         ES=ALIQ*EXP((TENV*BLIQ-CLIQ)/(TENV-DLIQ))                     
583         TVAVG=0.5*(TV0(KLCL)+TENV*(1.+0.608*QENV))                   
584         PLCL=P0(KLCL)*EXP(G/(R*TVAVG)*(Z0(KLCL)-ZLCL))              
585         QESE=EP2*ES/(PLCL-ES)                                    
586         GDT=G*DTLCL*(ZLCL-Z0(LC))/(TV0(LC)+TVEN)                  
587         WLCL=1.+.5*WSIGNE*SQRT(ABS(GDT)+1.E-10)                      
588         THTES(K)=TENV*(1.E5/PLCL)**(0.2854*(1.-0.28*QESE))* &    
589                  EXP((3374.6525/TENV-2.5403)*QESE*(1.+0.81*QESE))           
590         WTW=WLCL*WLCL                                                      
591         IF(WLCL.LT.0.)GOTO 25                                             
592         TVLCL=TLCL*(1.+0.608*QMIX)                                       
593         RHOLCL=PLCL/(R*TVLCL)                                           
594 !                                                                      
595         LCL=KLCL                                                      
596         LET=LCL                                                            
597 !                                                                         
598 !*******************************************************************     
599 !                                                                  *    
600 !                 COMPUTE UPDRAFT PROPERTIES                       *   
601 !                                                                  *  
602 !******************************************************************* 
603 !                                                                   
604 !                                                                  
605 !...ESTIMATE INITIAL UPDRAFT MASS FLUX (UMF(K))...                
606 !                                                                
607         WU(K)=WLCL                                                          
608         AU0=PIE*RAD*RAD                                                    
609         UMF(K)=RHOLCL*AU0                                                 
610         VMFLCL=UMF(K)                                                    
611         UPOLD=VMFLCL                                                    
612         UPNEW=UPOLD                                                    
613 !                                                                     
614 !...RATIO2 IS THE DEGREE OF GLACIATION IN THE CLOUD (0 TO 1),        
615 !...UER IS THE ENVIR ENTRAINMENT RATE, ABE IS AVAILABLE BUOYANT ENERGY,   
616 !   TRPPT IS THE TOTAL RATE OF PRECIPITATION PRODUCTION...               
617 !                                                                         
618         RATIO2(K)=0.                                                    
619         UER(K)=0.                                                      
620         ABE=0.                                                        
621         TRPPT=0.                                                     
622         TU(K)=TLCL                                                  
623         TVU(K)=TVLCL                                               
624         QU(K)=QMIX                                                
625         EQFRC(K)=1.                                              
626         QLIQ(K)=0.                                              
627         QICE(K)=0.                                             
628         QLQOUT(K)=0.                                          
629         QICOUT(K)=0.                                         
630         DETLQ(K)=0.                                         
631         DETIC(K)=0.                                        
632         PPTLIQ(K)=0.                                     
633         PPTICE(K)=0.                                    
634         IFLAG=0                                        
635         KFRZ=LC                                       
636 !                                                    
637 !...THE AMOUNT OF CONV AVAIL POT ENERGY (CAPE) IS CALCULATED WITH   
638 !   RESPECT TO UNDILUTE PARCEL ASCENT; EQ POT TEMP OF UNDILUTE     
639 !   PARCEL IS THTUDL, UNDILUTE TEMPERATURE IS GIVEN BY TUDL...    
640 !                                                                
641         THTUDL=THETEU(K)                                        
642         TUDL=TLCL                                              
643 !                                                             
644 !...TTEMP IS USED DURING CALCULATION OF THE LINEAR GLACIATION        
645 !   PROCESS; IT IS INITIALLY SET TO THE TEMPERATURE AT WHICH        
646 !   FREEZING IS SPECIFIED TO BEGIN.  WITHIN THE GLACIATION         
647 !   INTERVAL, IT IS SET EQUAL TO THE UPDRAFT TEMP AT THE          
648 !   PREVIOUS MODEL LEVEL...                                      
649 !                                                               
650         TTEMP=TTFRZ                                                   
651 !                                                                    
652 !...ENTER THE LOOP FOR UPDRAFT CALCULATIONS...CALCULATE UPDRAFT TEMP,    
653 !   MIXING RATIO, VERTICAL MASS FLUX, LATERAL DETRAINMENT OF MASS AND   
654 !   MOISTURE, PRECIPITATION RATES AT EACH MODEL LEVEL...               
655 !                                                                     
656         DO 60 NK=K,KL-1
657           NK1=NK+1                                                         
658           RATIO2(NK1)=RATIO2(NK)                                          
659 !                                                                        
660 !...UPDATE UPDRAFT PROPERTIES AT THE NEXT MODEL LVL TO REFLECT          
661 !   ENTRAINMENT OF ENVIRONMENTAL AIR...                                     
662 !                                                                          
663           FRC1=0.                                                         
664           TU(NK1)=T0(NK1)                                                
665           THETEU(NK1)=THETEU(NK)                                        
666           QU(NK1)=QU(NK)                                               
667           QLIQ(NK1)=QLIQ(NK)                                          
668           QICE(NK1)=QICE(NK)                                         
669 
670           CALL TPMIX(P0(NK1),THETEU(NK1),TU(NK1),QU(NK1),QLIQ(NK1), & 
671                QICE(NK1),QNEWLQ,QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0, &
672                XLS1,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)        
673           TVU(NK1)=TU(NK1)*(1.+0.608*QU(NK1))                      
674 !                                                                 
675 !...CHECK TO SEE IF UPDRAFT TEMP IS WITHIN THE FREEZING INTERVAL,
676 !   IF IT IS, CALCULATE THE FRACTIONAL CONVERSION TO GLACIATION     
677 !   AND ADJUST QNEWLQ TO REFLECT THE GRADUAL CHANGE IN THETAU      
678 !   SINCE THE LAST MODEL LEVEL...THE GLACIATION EFFECTS WILL BE   
679 !   DETERMINED AFTER THE AMOUNT OF CONDENSATE AVAILABLE AFTER    
680 !   PRECIP FALLOUT IS DETERMINED...TTFRZ IS THE TEMP AT WHICH   
681 !   GLACIATION BEGINS, TBFRZ THE TEMP AT WHICH IT ENDS...     
682 !                                                            
683           IF(TU(NK1).LE.TTFRZ.AND.IFLAG.LT.1)THEN                    
684             IF(TU(NK1).GT.TBFRZ)THEN                                
685               IF(TTEMP.GT.TTFRZ)TTEMP=TTFRZ                        
686               FRC1=(TTEMP-TU(NK1))/(TTFRZ-TBFRZ)                  
687               R1=(TTEMP-TU(NK1))/(TTEMP-TBFRZ)                   
688             ELSE                                                
689               FRC1=(TTEMP-TBFRZ)/(TTFRZ-TBFRZ)                
690               R1=1.                                          
691               IFLAG=1                                       
692             ENDIF                                          
693             QNWFRZ=QNEWLQ                                 
694             QNEWIC=QNEWIC+QNEWLQ*R1*0.5                  
695             QNEWLQ=QNEWLQ-QNEWLQ*R1*0.5                 
696             EFFQ=(TTFRZ-TBFRZ)/(TTEMP-TBFRZ)           
697             TTEMP=TU(NK1)                             
698           ENDIF                                      
699 !                                                  
700 !  CALCULATE UPDRAFT VERTICAL VELOCITY AND PRECIPITATION FALLOUT...  
701 !                                                                   
702           IF(NK.EQ.K)THEN                                          
703             BE=(TVLCL+TVU(NK1))/(TVEN+TV0(NK1))-1.                
704             BOTERM=2.*(Z0(NK1)-ZLCL)*G*BE/1.5                    
705             ENTERM=0.                                           
706             DZZ=Z0(NK1)-ZLCL                                   
707           ELSE                                                
708             BE=(TVU(NK)+TVU(NK1))/(TV0(NK)+TV0(NK1))-1.      
709             BOTERM=2.*DZA(NK)*G*BE/1.5                                        
710             ENTERM=2.*UER(NK)*WTW/UPOLD                                      
711             DZZ=DZA(NK)                                                     
712           ENDIF                                                            
713           WSQ=WTW                                                         
714           CALL CONDLOAD(QLIQ(NK1),QICE(NK1),WTW,DZZ,BOTERM,ENTERM,RATE, & 
715                QNEWLQ,QNEWIC,QLQOUT(NK1),QICOUT(NK1), G)                    
716                                                               
717 !...IF VERT VELOCITY IS LESS THAN ZERO, EXIT THE UPDRAFT LOOP AND,     
718 !   IF CLOUD IS TALL ENOUGH, FINALIZE UPDRAFT CALCULATIONS...         
719 !                                                                    
720           IF(WTW.LE.0.)GOTO 65                                      
721           WABS=SQRT(ABS(WTW))                                      
722           WU(NK1)=WTW/WABS                                        
723 !                                                                
724 !  UPDATE THE ABE FOR UNDILUTE ASCENT...                        
725 !                                                                         
726           THTES(NK1)=T0(NK1)*(1.E5/P0(NK1))**(0.2854*(1.-0.28*QES(NK1))) & 
727                      *                                                   &
728                      EXP((3374.6525/T0(NK1)-2.5403)*QES(NK1)*(1.+0.81*   &
729                      QES(NK1)))                                          
730           UDLBE=((2.*THTUDL)/(THTES(NK)+THTES(NK1))-1.)*DZZ             
731           IF(UDLBE.GT.0.)ABE=ABE+UDLBE*G                               
732 !                                                                     
733 !  DETERMINE THE EFFECTS OF CLOUD GLACIATION IF WITHIN THE SPECIFIED 
734 !  TEMP INTERVAL...                                                 
735 !                                                                  
736           IF(FRC1.GT.1.E-6)THEN                                   
737             CALL DTFRZNEW(TU(NK1),P0(NK1),THETEU(NK1),QU(NK1),QLIQ(NK1), & 
738                  QICE(NK1),RATIO2(NK1),TTFRZ,TBFRZ,QNWFRZ,RL,FRC1,EFFQ,  &
739                  IFLAG,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE &  
740                  ,CICE,DICE)                                     
741           ENDIF                                                 
742 !                                                              
743 !  CALL SUBROUTINE TO CALCULATE ENVIRONMENTAL EQUIVALENT POTENTIAL TEMP.      
744 !  WITHIN GLACIATION INTERVAL, THETAE MUST BE CALCULATED WITH RESPECT TO     
745 !  SAME DEGREE OF GLACIATION FOR ALL ENTRAINING AIR...                      
746 !                                                                          
747           CALL ENVIRTHT(P0(NK1),T0(NK1),Q0(NK1),THETEE(NK1),RATIO2(NK1), &
748                RL,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)                
749                                                                          
750 !...REI IS THE RATE OF ENVIRONMENTAL INFLOW...                          
751 !                                                                      
752           REI=VMFLCL*DP(NK1)*0.03/RAD                                 
753           TVQU(NK1)=TU(NK1)*(1.+0.608*QU(NK1)-QLIQ(NK1)-QICE(NK1))   
754 !                                                                   
755 !...IF CLOUD PARCELS ARE VIRTUALLY COLDER THAN THE ENVIRONMENT, NO 
756 !   ENTRAINMENT IS ALLOWED AT THIS LEVEL...                               
757 !                                                                        
758           IF(TVQU(NK1).LE.TV0(NK1))THEN                                 
759             UER(NK1)=0.0                                               
760             UDR(NK1)=REI                                              
761             EE2=0.                                                   
762             UD2=1.                                                  
763             EQFRC(NK1)=0.                                          
764             GOTO 55                                                        
765           ENDIF                                                          
766           LET=NK1                                                       
767           TTMP=TVQU(NK1)                                               
768 !                                                                          
769 !...DETERMINE THE CRITICAL MIXED FRACTION OF UPDRAFT AND ENVIRONMENTAL    
770 !   AIR FOR ESTIMATION OF ENTRAINMENT AND DETRAINMENT RATES...           
771 !                                                                       
772           F1=0.95                                                      
773           F2=1.-F1                                                    
774           THTTMP=F1*THETEE(NK1)+F2*THETEU(NK1)                       
775           QTMP=F1*Q0(NK1)+F2*QU(NK1)                                
776           TMPLIQ=F2*QLIQ(NK1)                                      
777           TMPICE=F2*QICE(NK1)                                                
778           CALL TPMIX(P0(NK1),THTTMP,TTMP,QTMP,TMPLIQ,TMPICE,QNEWLQ,      & 
779                QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ, &
780                DLIQ,AICE,BICE,CICE,DICE)                                    
781           TU95=TTMP*(1.+0.608*QTMP-TMPLIQ-TMPICE)                          
782           IF(TU95.GT.TV0(NK1))THEN                                        
783             EE2=1.                                                       
784             UD2=0.                                                      
785             EQFRC(NK1)=1.0                                             
786             GOTO 50                                                   
787           ENDIF                                                              
788           F1=0.10                                                           
789           F2=1.-F1                                                         
790           THTTMP=F1*THETEE(NK1)+F2*THETEU(NK1)                            
791           QTMP=F1*Q0(NK1)+F2*QU(NK1)                                    
792           TMPLIQ=F2*QLIQ(NK1)                                            
793           TMPICE=F2*QICE(NK1)                                               
794           CALL TPMIX(P0(NK1),THTTMP,TTMP,QTMP,TMPLIQ,TMPICE,QNEWLQ,      & 
795                QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ, &
796                DLIQ,AICE,BICE,CICE,DICE)                                   
797           TU10=TTMP*(1.+0.608*QTMP-TMPLIQ-TMPICE)                         
798           IF(TU10.EQ.TVQU(NK1))THEN                                      
799             EE2=1.                                                      
800             UD2=0.                                                     
801             EQFRC(NK1)=1.0                                            
802             GOTO 50                                                  
803           ENDIF                                                     
804           EQFRC(NK1)=(TV0(NK1)-TVQU(NK1))*F1/(TU10-TVQU(NK1))      
805           EQFRC(NK1)=AMAX1(0.0,EQFRC(NK1))                        
806           EQFRC(NK1)=AMIN1(1.0,EQFRC(NK1))                       
807           IF(EQFRC(NK1).EQ.1)THEN                               
808             EE2=1.                                             
809             UD2=0.                                            
810             GOTO 50                                          
811           ELSEIF(EQFRC(NK1).EQ.0.)THEN                                       
812             EE2=0.                                                          
813             UD2=1.                                                         
814             GOTO 50                                                       
815           ELSE                                                           
816 !                                                                       
817 !...SUBROUTINE PROF5 INTEGRATES OVER THE GAUSSIAN DIST TO DETERMINE THE
818 !   FRACTIONAL ENTRAINMENT AND DETRAINMENT RATES...                   
819 !                                                                    
820             CALL PROF5(EQFRC(NK1),EE2,UD2)                          
821           ENDIF                                                    
822 !                                                                 
823    50     IF(NK.EQ.K)THEN                                        
824             EE1=1.                                              
825             UD1=0.                                             
826           ENDIF                                               
827 !                                                            
828 !...NET ENTRAINMENT AND DETRAINMENT RATES ARE GIVEN BY THE AVERAGE         
829 !   FRACTIONAL VALUES IN THE LAYER...                                     
830 !                                                                        
831           UER(NK1)=0.5*REI*(EE1+EE2)                                    
832           UDR(NK1)=0.5*REI*(UD1+UD2)                                   
833 !                                                                     
834 !...IF THE CALCULATED UPDRAFT DETRAINMENT RATE IS GREATER THAN THE TOTAL  
835 !   UPDRAFT MASS FLUX, ALL CLOUD MASS DETRAINS, EXIT UPDRAFT CALCULATION    
836 !                                                                          
837    55     IF(UMF(NK)-UDR(NK1).LT.10.)THEN                                
838 !                                                                       
839 !...IF THE CALCULATED DETRAINED MASS FLUX IS GREATER THAN THE TOTAL    
840 !   UPDRAFT FLUX, IMPOSE TOTAL DETRAINMENT OF UPDRAFT MASS AT THE     
841 !   PREVIOUS MODEL                                                   
842 !                                                                   
843             IF(UDLBE.GT.0.)ABE=ABE-UDLBE*G                         
844             LET=NK                                                
845 !         WRITE(98,1015)P0(NK1)/100.                                 
846             GOTO 65                                                 
847           ENDIF                                                    
848           EE1=EE2                                                 
849           UD1=UD2                                                
850           UPOLD=UMF(NK)-UDR(NK1)                                
851           UPNEW=UPOLD+UER(NK1)                                 
852           UMF(NK1)=UPNEW                                      
853 !                                                            
854 !...DETLQ AND DETIC ARE THE RATES OF DETRAINMENT OF LIQUID AND ICE IN 
855 !   THE DETRAINING UPDRAFT MASS...                                   
856 !                                                                   
857           DETLQ(NK1)=QLIQ(NK1)*UDR(NK1)                            
858           DETIC(NK1)=QICE(NK1)*UDR(NK1)                           
859           QDT(NK1)=QU(NK1)                                       
860           QU(NK1)=(UPOLD*QU(NK1)+UER(NK1)*Q0(NK1))/UPNEW        
861           THETEU(NK1)=(THETEU(NK1)*UPOLD+THETEE(NK1)*UER(NK1))/UPNEW  
862           QLIQ(NK1)=QLIQ(NK1)*UPOLD/UPNEW                            
863           QICE(NK1)=QICE(NK1)*UPOLD/UPNEW                           
864 !                                                                  
865 !...KFRZ IS THE HIGHEST MODEL LEVEL AT WHICH LIQUID CONDENSATE IS 
866 !   GENERATING PPTLIQ IS THE RATE OF GENERATION (FALLOUT) OF LIQUID     
867 !   PRECIP AT A GIVING MODEL LVL, PPTICE THE SAME FOR ICE, TRPPT IS    
868 !   THE TOTAL RATE OF PRODUCTION OF PRECIP UP TO THE CURRENT MODEL LEVEL 
869 !                                                                       
870           IF(ABS(RATIO2(NK1)-1.).GT.1.E-6)KFRZ=NK1                     
871           PPTLIQ(NK1)=QLQOUT(NK1)*(UMF(NK)-UDR(NK1))                  
872           PPTICE(NK1)=QICOUT(NK1)*(UMF(NK)-UDR(NK1))                 
873           TRPPT=TRPPT+PPTLIQ(NK1)+PPTICE(NK1)                       
874           IF(NK1.LE.KPBL)UER(NK1)=UER(NK1)+VMFLCL*DP(NK1)/DPTHMX   
875    60   CONTINUE                                                  
876 !                                                                
877 !...CHECK CLOUD DEPTH...IF CLOUD IS TALL ENOUGH, ESTIMATE THE EQUILIBRIU
878 !   TEMPERATURE LEVEL (LET) AND ADJUST MASS FLUX PROFILE AT CLOUD TOP SO
879 !   THAT MASS FLUX DECREASES TO ZERO AS A LINEAR FUNCTION OF PRESSURE  
880 !   BETWEEN THE LET AND CLOUD TOP...                                  
881 !                                                                    
882 !...LTOP IS THE MODEL LEVEL JUST BELOW THE LEVEL AT WHICH VERTICAL  
883 !   VELOCITY FIRST BECOMES NEGATIVE...                             
884 !                                                                 
885    65   LTOP=NK                                                  
886         CLDHGT=Z0(LTOP)-ZLCL                                    
887 !                                                              
888 !...IF CLOUD TOP HGT IS LESS THAN SPECIFIED MINIMUM HEIGHT, GO BACK AND 
889 !   THE NEXT HIGHEST 60MB LAYER TO SEE IF A BIGGER CLOUD CAN BE OBTAINED
890 !   THAT SOURCE AIR...                                                 
891 !                                                                     
892 !       IF(CLDHGT.LT.4.E3.OR.ABE.LT.1.)THEN                          
893         IF(CLDHGT.LT.3.E3.OR.ABE.LT.1.)THEN                         
894           DO 70 NK=K,LTOP                                          
895             UMF(NK)=0.                                            
896             UDR(NK)=0.                                           
897             UER(NK)=0.                                          
898             DETLQ(NK)=0.                                       
899             DETIC(NK)=0.                                      
900             PPTLIQ(NK)=0.                                    
901    70     PPTICE(NK)=0.                                     
902           GOTO 25                                          
903         ENDIF                                             
904 !                                                                    
905 !...IF THE LET AND LTOP ARE THE SAME, DETRAIN ALL OF THE UPDRAFT MASS 
906 !   FLUX THIS LEVEL...                                               
907 !                                                                   
908         IF(LET.EQ.LTOP)THEN                                        
909           UDR(LTOP)=UMF(LTOP)+UDR(LTOP)-UER(LTOP)                 
910           DETLQ(LTOP)=QLIQ(LTOP)*UDR(LTOP)*UPNEW/UPOLD           
911           DETIC(LTOP)=QICE(LTOP)*UDR(LTOP)*UPNEW/UPOLD          
912           TRPPT=TRPPT-(PPTLIQ(LTOP)+PPTICE(LTOP))              
913           UER(LTOP)=0.                                        
914           UMF(LTOP)=0.                                       
915           GOTO 85                                           
916         ENDIF                                              
917 !                                                         
918 !   BEGIN TOTAL DETRAINMENT AT THE LEVEL ABOVE THE LET...
919 !                                                       
920         DPTT=0.                                        
921         DO 71 NJ=LET+1,LTOP                           
922    71   DPTT=DPTT+DP(NJ)                             
923         DUMFDP=UMF(LET)/DPTT                        
924 !                                                  
925 !...ADJUST MASS FLUX PROFILES, DETRAINMENT RATES, AND PRECIPITATION FALL 
926 !   RATES TO REFLECT THE LINEAR DECREASE IN MASS FLX BETWEEN THE LET AND 
927 !   PTOP                                                                
928 !                                                                      
929         DO 75 NK=LET+1,LTOP                                           
930           UDR(NK)=DP(NK)*DUMFDP                                      
931           UMF(NK)=UMF(NK-1)-UDR(NK)                                 
932           DETLQ(NK)=QLIQ(NK)*UDR(NK)                               
933           DETIC(NK)=QICE(NK)*UDR(NK)                              
934           TRPPT=TRPPT-PPTLIQ(NK)-PPTICE(NK)                      
935           PPTLIQ(NK)=(UMF(NK-1)-UDR(NK))*QLQOUT(NK)             
936           PPTICE(NK)=(UMF(NK-1)-UDR(NK))*QICOUT(NK)            
937           TRPPT=TRPPT+PPTLIQ(NK)+PPTICE(NK)                   
938    75   CONTINUE                                             
939 !                                                           
940 !...SEND UPDRAFT CHARACTERISTICS TO OUTPUT FILES...        
941 !                                                         
942    85   CONTINUE                                         
943 !                                                       
944 !...EXTEND THE UPDRAFT MASS FLUX PROFILE DOWN TO THE SOURCE LAYER FOR 
945 !   THE UPDRAFT AIR...ALSO, DEFINE THETAE FOR LEVELS BELOW THE LCL...
946 !                                                                   
947         DO 90 NK=1,K                                               
948           IF(NK.GE.LC)THEN                                        
949             IF(NK.EQ.LC)THEN                                     
950               UMF(NK)=VMFLCL*DP(NK)/DPTHMX                      
951               UER(NK)=VMFLCL*DP(NK)/DPTHMX                     
952             ELSEIF(NK.LE.KPBL)THEN                            
953               UER(NK)=VMFLCL*DP(NK)/DPTHMX                   
954               UMF(NK)=UMF(NK-1)+UER(NK)                     
955             ELSE                                         
956               UMF(NK)=VMFLCL                               
957               UER(NK)=0.                                
958             ENDIF                                         
959             TU(NK)=TMIX+(Z0(NK)-ZMIX)*GDRY             
960             QU(NK)=QMIX                               
961             WU(NK)=WLCL                              
962           ELSE                                      
963             TU(NK)=0.                              
964             QU(NK)=0.                                                      
965             UMF(NK)=0.                                                    
966             WU(NK)=0.                                                    
967             UER(NK)=0.                                                  
968           ENDIF                                                        
969           UDR(NK)=0.                                                  
970           QDT(NK)=0.                                                 
971           QLIQ(NK)=0.                                               
972           QICE(NK)=0.                                              
973           QLQOUT(NK)=0.                                           
974           QICOUT(NK)=0.                                          
975           PPTLIQ(NK)=0.                                         
976           PPTICE(NK)=0.                                        
977           DETLQ(NK)=0.                                        
978           DETIC(NK)=0.                                       
979           RATIO2(NK)=0.                                    
980           EE=Q0(NK)*P0(NK)/(EP2+Q0(NK))                 
981           TLOG=ALOG(EE/ALIQ)                             
982           TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)             
983           TSAT=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(T0(NK)-T00))*( & 
984                T0(NK)-TDPT)                                                
985           THTA=T0(NK)*(1.E5/P0(NK))**(0.2854*(1.-0.28*Q0(NK)))            
986           THETEE(NK)=THTA*                                               & 
987                      EXP((3374.6525/TSAT-2.5403)*Q0(NK)*(1.+0.81*Q0(NK)) &
988                      )                                                   
989           THTES(NK)=THTA*                                                &
990                     EXP((3374.6525/T0(NK)-2.5403)*QES(NK)*(1.+0.81*      &
991                     QES(NK)))                          
992           EQFRC(NK)=1.0                               
993    90   CONTINUE                                     
994 !                                                   
995         LTOP1=LTOP+1                               
996         LTOPM1=LTOP-1                              
997 !                                                  
998 !...DEFINE VARIABLES ABOVE CLOUD TOP...            
999 !                                                             
1000         DO 95 NK=LTOP1,KX                                    
1001           UMF(NK)=0.                                        
1002           UDR(NK)=0.                                       
1003           UER(NK)=0.                                      
1004           QDT(NK)=0.                                     
1005           QLIQ(NK)=0.                                                     
1006           QICE(NK)=0.                                                    
1007           QLQOUT(NK)=0.                                                 
1008           QICOUT(NK)=0.                                                
1009           DETLQ(NK)=0.                                                
1010           DETIC(NK)=0.                                               
1011           PPTLIQ(NK)=0.                                             
1012           PPTICE(NK)=0.                                            
1013           IF(NK.GT.LTOP1)THEN                                     
1014             TU(NK)=0.                                            
1015             QU(NK)=0.                                           
1016             WU(NK)=0.                                          
1017           ENDIF                                              
1018           THTA0(NK)=0.                                      
1019           THTAU(NK)=0.                                     
1020           EMS(NK)=DP(NK)*DXSQ/G                           
1021           EMSD(NK)=1./EMS(NK)                            
1022           TG(NK)=T0(NK)                                 
1023           QG(NK)=Q0(NK)                                
1024           QLG(NK)=0.                                  
1025           QIG(NK)=0.                                 
1026           QRG(NK)=0.                                
1027           QSG(NK)=0.                               
1028    95   OMG(NK)=0.                                 
1029         OMG(KL+1)=0.                               
1030         P150=P0(KLCL)-1.50E4                       
1031         DO 100 NK=1,LTOP                           
1032           THTAD(NK)=0.                             
1033           EMS(NK)=DP(NK)*DXSQ/G                   
1034           EMSD(NK)=1./EMS(NK)                      
1035 !                                                  
1036 !...INITIALIZE SOME VARIABLES TO BE USED LATER IN THE VERT ADVECTION 
1037 !   SCHEME                                                          
1038 !                                                                  
1039           EXN(NK)=(P00/P0(NK))**(0.2854*(1.-0.28*QDT(NK)))        
1040           THTAU(NK)=TU(NK)*EXN(NK)                               
1041           EXN(NK)=(P00/P0(NK))**(0.2854*(1.-0.28*Q0(NK)))       
1042           THTA0(NK)=T0(NK)*EXN(NK)                             
1043 !                                                             
1044 !...LVF IS THE LEVEL AT WHICH MOISTURE FLUX IS ESTIMATED AS THE BASIS 
1045 !...FOR PRECIPITATION EFFICIENCY CALCULATIONS...                     
1046 !                                                                        
1047           IF(P0(NK).GT.P150)LVF=NK                                      
1048   100   OMG(NK)=0.                                                     
1049         LVF=MIN0(LVF,LET)                                             
1050         USR=UMF(LVF+1)*(QU(LVF+1)+QLIQ(LVF+1)+QICE(LVF+1))           
1051         USR=AMIN1(USR,TRPPT)                                        
1052         IF(USR.LT.1.E-8)USR=TRPPT
1053 !                                                                  
1054 !     WRITE(98,1025)KLCL,ZLCL,DTLCL,LTOP,P0(LTOP),IFLAG,          
1055 !    * TMIX-T00,PMIX,QMIX,ABE                                    
1056 !     WRITE(98,1030)P0(LET)/100.,P0(LTOP)/100.,VMFLCL,PLCL/100.,
1057 !    * WLCL,CLDHGT                                             
1058 !                                                             
1059 !...COMPUTE CONVECTIVE TIME SCALE(TIMEC). THE MEAN WIND AT THE LCL     
1060 !...AND MIDTROPOSPHERE IS USED.                                       
1061 !                                                                    
1062         WSPD(KLCL)=SQRT(U0(KLCL)*U0(KLCL)+V0(KLCL)*V0(KLCL))        
1063         WSPD(L5)=SQRT(U0(L5)*U0(L5)+V0(L5)*V0(L5))                 
1064         WSPD(LTOP)=SQRT(U0(LTOP)*U0(LTOP)+V0(LTOP)*V0(LTOP))      
1065         VCONV=.5*(WSPD(KLCL)+WSPD(L5))                           
1066         if (VCONV .gt. 0.) then
1067            TIMEC=DX/VCONV
1068         else
1069            TIMEC=3600.
1070         endif
1071 !       TIMEC=DX/VCONV
1072         TADVEC=TIMEC                                           
1073         TIMEC=AMAX1(1800.,TIMEC)                              
1074         TIMEC=AMIN1(3600.,TIMEC)                             
1075         NIC=NINT(TIMEC/DT)                            
1076         TIMEC=FLOAT(NIC)*DT                            
1077 !                                                         
1078 !...COMPUTE WIND SHEAR AND PRECIPITATION EFFICIENCY.     
1079 !                                                       
1080 !        SHSIGN = CVMGT(1.,-1.,WSPD(LTOP).GT.WSPD(KLCL))
1081         IF(WSPD(LTOP).GT.WSPD(KLCL))THEN               
1082           SHSIGN=1.                                   
1083         ELSE                                         
1084           SHSIGN=-1.                                
1085         ENDIF                                      
1086         VWS=(U0(LTOP)-U0(KLCL))*(U0(LTOP)-U0(KLCL))+(V0(LTOP)-V0(KLCL))* & 
1087             (V0(LTOP)-V0(KLCL))                                         
1088         VWS=1.E3*SHSIGN*SQRT(VWS)/(Z0(LTOP)-Z0(LCL))                   
1089         PEF=1.591+VWS*(-.639+VWS*(9.53E-2-VWS*4.96E-3))               
1090         PEF=AMAX1(PEF,.2)                                            
1091         PEF=AMIN1(PEF,.9)                                           
1092 !                                                                  
1093 !...PRECIPITATION EFFICIENCY IS A FUNCTION OF THE HEIGHT OF CLOUD BASE. 
1094 !                                                                      
1095         CBH=(ZLCL-Z0(1))*3.281E-3                                     
1096         IF(CBH.LT.3.)THEN                                            
1097           RCBH=.02                                                  
1098         ELSE                                                       
1099           RCBH=.96729352+CBH*(-.70034167+CBH*(.162179896+CBH*(-  & 
1100                1.2569798E-2+CBH*(4.2772E-4-CBH*5.44E-6))))    
1101         ENDIF                                                
1102         IF(CBH.GT.25)RCBH=2.4                               
1103         PEFCBH=1./(1.+RCBH)                                
1104         PEFCBH=AMIN1(PEFCBH,.9)                           
1105 !                                                        
1106 !... MEAN PEF. IS USED TO COMPUTE RAINFALL.                           
1107 !                                                                    
1108         PEFF=.5*(PEF+PEFCBH)                                        
1109         PEFF2=PEFF                                                 
1110 !        WRITE(98,1035)PEF,PEFCBH,LC,LET,WKL,VWS                  
1111 !                                                                
1112 !*****************************************************************   
1113 !                                                                *  
1114 !                  COMPUTE DOWNDRAFT PROPERTIES                  * 
1115 !                                                                *
1116 !*****************************************************************         
1117 !                                                                         
1118 !...LET DOWNDRAFT ORIGINATE AT THE LEVEL OF MINIMUM SATURATION EQUIVALEN 
1119 !...POTENTIAL TEMPERATURE (SEQT) IN THE CLOUD LAYER, EXTEND DOWNWARD TO 
1120 !...SURFACE, OR TO THE LAYER BELOW CLOUD BASE AT WHICH ENVIR SEQT IS LES    
1121 !...THAN MIN SEQT IN THE CLOUD LAYER...LET DOWNDRAFT DETRAIN OVER A LAYE   
1122 !...OF SPECIFIED PRESSURE-DEPTH (DPDD)...                                 
1123 !                                                                       
1124         TDER=0.                                                        
1125         KSTART=MAX0(KPBL,KLCL)                                        
1126         THTMIN=THTES(KSTART+1)                                       
1127         KMIN=KSTART+1                                               
1128         DO 104 NK=KSTART+2,LTOP-1                                  
1129           THTMIN=AMIN1(THTMIN,THTES(NK))                          
1130           IF(THTMIN.EQ.THTES(NK))KMIN=NK                         
1131   104   CONTINUE                                                
1132         LFS=KMIN                                               
1133         IF(RATIO2(LFS).GT.0.)CALL ENVIRTHT(P0(LFS),T0(LFS),Q0(LFS),     &
1134           THETEE(LFS),0.,RL,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)   
1135         EQFRC(LFS)=(THTES(LFS)-THETEU(LFS))/(THETEE(LFS)-THETEU(LFS)) 
1136         EQFRC(LFS)=AMAX1(EQFRC(LFS),0.)                              
1137         EQFRC(LFS)=AMIN1(EQFRC(LFS),1.)                             
1138         THETED(LFS)=THTES(LFS)                                     
1139 !                                                                 
1140 !...ESTIMATE THE EFFECT OF MELTING PRECIPITATION IN THE DOWNDRAFT...   
1141 !                                                                            
1142         IF(ML.GT.0)THEN                                                    
1143           DTMLTD=0.5*(QU(KLCL)-QU(LTOP))*RLF/CP                          
1144         ELSE                                                            
1145           DTMLTD=0.                                                    
1146         ENDIF                                                         
1147         TZ(LFS)=T0(LFS)-DTMLTD                                       
1148         ES=ALIQ*EXP((TZ(LFS)*BLIQ-CLIQ)/(TZ(LFS)-DLIQ))             
1149         QS=EP2*ES/(P0(LFS)-ES)                                   
1150         QD(LFS)=EQFRC(LFS)*Q0(LFS)+(1.-EQFRC(LFS))*QU(LFS)             
1151         THTAD(LFS)=TZ(LFS)*(P00/P0(LFS))**(0.2854*(1.-0.28*QD(LFS)))     
1152         IF(QD(LFS).GE.QS)THEN                                           
1153           THETED(LFS)=THTAD(LFS)*                                       & 
1154                       EXP((3374.6525/TZ(LFS)-2.5403)*QS*(1.+0.81*QS))  
1155         ELSE                                                          
1156           CALL ENVIRTHT(P0(LFS),TZ(LFS),QD(LFS),THETED(LFS),0.,RL,EP2,ALIQ, & 
1157                BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)                   
1158         ENDIF                                                       
1159         DO 107 NK=1,LFS                                            
1160           ND=LFS-NK                                             
1161           IF(THETED(LFS).GT.THTES(ND).OR.ND.EQ.1)THEN          
1162             LDB=ND                                            
1163 !                                                            
1164 !...IF DOWNDRAFT NEVER BECOMES NEGATIVELY BUOYANT OR IF IT  
1165 !...IS SHALLOWER 50 mb, DON'T ALLOW IT TO OCCUR AT ALL...             
1166 !                                                                    
1167             IF(NK.EQ.1.OR.(P0(LDB)-P0(LFS)).LT.50.E2)GOTO 141       
1168 ! testing ---- no downdraft
1169 !           GOTO 141       
1170             GOTO 110                                               
1171           ENDIF                                                   
1172   107   CONTINUE                                                 
1173 !                                                               
1174 !...ALLOW DOWNDRAFT TO DETRAIN IN A SINGLE LAYER, BUT WITH DOWNDRAFT AIR 
1175 !...TYPICALLY FLUSHED UP INTO HIGHER LAYERS AS ALLOWED IN THE TOTAL     
1176 !...VERTICAL ADVECTION CALCULATIONS FARTHER DOWN IN THE CODE...        
1177 !                                                                     
1178   110   DPDD=DP(LDB)                                                 
1179         LDT=LDB                                                     
1180         FRC=1.                                                     
1181         DPT=0.                                                              
1182 !      DO 115 NK=LDB,LFS                                                   
1183 !        DPT=DPT+DP(NK)                                                   
1184 !        IF(DPT.GT.DPDD)THEN                                             
1185 !          LDT=NK                                                       
1186 !          FRC=(DPDD+DP(NK)-DPT)/DP(NK)                                
1187 !          GOTO 120                                                   
1188 !        ENDIF                                                       
1189 !        IF(NK.EQ.LFS-1)THEN                                        
1190 !         LDT=NK                                                   
1191 !        FRC=1.                                                   
1192 !        DPDD=DPT                                                
1193 !        GOTO 120                                               
1194 !        ENDIF                                                 
1195 !115   CONTINUE                                               
1196   120   CONTINUE                                             
1197 !                                                           
1198 !...TAKE A FIRST GUESS AT THE INITIAL DOWNDRAFT MASS FLUX..
1199 !                                                         
1200         TVD(LFS)=T0(LFS)*(1.+0.608*QES(LFS))             
1201         RDD=P0(LFS)/(R*TVD(LFS))                        
1202         A1=(1.-PEFF)*AU0                               
1203         DMF(LFS)=-A1*RDD                              
1204         DER(LFS)=EQFRC(LFS)*DMF(LFS)                 
1205         DDR(LFS)=0.                                 
1206         DO 140 ND=LFS-1,LDB,-1                     
1207           ND1=ND+1                                 
1208           IF(ND.LE.LDT)THEN                        
1209             DER(ND)=0.                                              
1210             DDR(ND)=-DMF(LDT+1)*DP(ND)*FRC/DPDD                    
1211             DMF(ND)=DMF(ND1)+DDR(ND)                              
1212             FRC=1.                                               
1213             THETED(ND)=THETED(ND1)                              
1214             QD(ND)=QD(ND1)                                     
1215           ELSE                                                
1216             DER(ND)=DMF(LFS)*0.03*DP(ND)/RAD                 
1217             DDR(ND)=0.                                      
1218             DMF(ND)=DMF(ND1)+DER(ND)                       
1219             IF(RATIO2(ND).GT.0.)CALL ENVIRTHT(P0(ND),T0(ND),Q0(ND),      & 
1220               THETEE(ND),0.,RL,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)   
1221             THETED(ND)=(THETED(ND1)*DMF(ND1)+THETEE(ND)*DER(ND))/DMF(ND) 
1222             QD(ND)=(QD(ND1)*DMF(ND1)+Q0(ND)*DER(ND))/DMF(ND)            
1223           ENDIF                                                        
1224   140   CONTINUE                                                      
1225         TDER=0.                                                      
1226 !                                                                   
1227 !...CALCULATION AN EVAPORATION RATE FOR GIVEN MASS FLUX...        
1228 !                                                                
1229         DO 135 ND=LDB,LDT                                       
1230           TZ(ND)=                                                        & 
1231                  TPDD(P0(ND),THETED(LDT),T0(ND),QS,QD(ND),1.0,XLV0,XLV1, &
1232                  EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)      
1233           ES=ALIQ*EXP((TZ(ND)*BLIQ-CLIQ)/(TZ(ND)-DLIQ))        
1234           QS=EP2*ES/(P0(ND)-ES)                             
1235           DSSDT=(CLIQ-BLIQ*DLIQ)/((TZ(ND)-DLIQ)*(TZ(ND)-DLIQ))                
1236           RL=XLV0-XLV1*TZ(ND)                                                
1237           DTMP=RL*QS*(1.-RHBC)/(CP+RL*RHBC*QS*DSSDT)                        
1238           T1RH=TZ(ND)+DTMP                                                 
1239           ES=RHBC*ALIQ*EXP((BLIQ*T1RH-CLIQ)/(T1RH-DLIQ))                  
1240           QSRH=EP2*ES/(P0(ND)-ES)                                      
1241 !                                                                       
1242 !...CHECK TO SEE IF MIXING RATIO AT SPECIFIED RH IS LESS THAN ACTUAL   
1243 !...MIXING RATIO...IF SO, ADJUST TO GIVE ZERO EVAPORATION...          
1244 !                                                                    
1245           IF(QSRH.LT.QD(ND))THEN                                    
1246             QSRH=QD(ND)                                            
1247 !          T1RH=T1+(QS-QSRH)*RL/CP                                
1248             T1RH=TZ(ND)                                          
1249           ENDIF                                                 
1250           TZ(ND)=T1RH                                          
1251           QS=QSRH                                             
1252           TDER=TDER+(QS-QD(ND))*DDR(ND)                     
1253           QD(ND)=QS                                                   
1254   135   THTAD(ND)=TZ(ND)*(P00/P0(ND))**(0.2854*(1.-0.28*QD(ND)))         
1255 !                                                                       
1256 !...IF DOWNDRAFT DOES NOT EVAPORATE ANY WATER FOR SPECIFIED RELATIVE   
1257 !...HUMIDITY, NO DOWNDRAFT IS ALLOWED...                             
1258 !                                                                   
1259   141   IF(TDER.LT.1.)THEN                                         
1260 !          WRITE(98,3004)I,J                                      
1261  3004       FORMAT(' ','I=',I3,2X,'J=',I3)                       
1262           PPTFLX=TRPPT                                          
1263           CPR=TRPPT                                            
1264           TDER=0.                                             
1265           CNDTNF=0.                                          
1266           UPDINC=1.                                         
1267           LDB=LFS                                          
1268           DO 117 NDK=1,LTOP                               
1269             DMF(NDK)=0.                                                    
1270             DER(NDK)=0.                                  
1271             DDR(NDK)=0.                                 
1272             THTAD(NDK)=0.                              
1273             WD(NDK)=0.                                
1274             TZ(NDK)=0.                               
1275   117     QD(NDK)=0.                                
1276           AINCM2=100.                                                      
1277           GOTO 165                                                        
1278         ENDIF                                                            
1279 !                                                                       
1280 !...ADJUST DOWNDRAFT MASS FLUX SO THAT EVAPORATION RATE IN DOWNDRAFT IS
1281 !...CONSISTENT WITH PRECIPITATION EFFICIENCY RELATIONSHIP...          
1282 !                                                                    
1283         DEVDMF=TDER/DMF(LFS)                                        
1284         PPR=0.                                                     
1285         PPTFLX=PEFF*USR                                           
1286         RCED=TRPPT-PPTFLX                                        
1287 !                                                               
1288 !...PPR IS THE TOTAL AMOUNT OF PRECIPITATION THAT FALLS  OUT OF THE  
1289 !...UPDRAFT FROM CLOUD BASE TO THE LFS...UPDRAFT MASS FLUX WILL BE  
1290 !...INCREASED UP TO THE LFS TO ACCOUNT FOR UPDRAFT AIR MIXING WITH 
1291 !...ENVIRONMENTAL AIR TO THE UPDRAFT, SO PPR WILL INCREASE        
1292 !...PROPORTIONATELY...                                           
1293 !                                                               
1294         DO 132 NM=KLCL,LFS                                     
1295   132   PPR=PPR+PPTLIQ(NM)+PPTICE(NM)                         
1296         IF(LFS.GE.KLCL)THEN                                  
1297           DPPTDF=(1.-PEFF)*PPR*(1.-EQFRC(LFS))/UMF(LFS)     
1298         ELSE                                               
1299           DPPTDF=0.                                       
1300         ENDIF                                            
1301 !                                                       
1302 !...CNDTNF IS THE AMOUNT OF CONDENSATE TRANSFERRED ALONG WITH UPDRAFT      
1303 !...MASS THE DOWNDRAFT AT THE LFS...                                      
1304 !                                                                        
1305         CNDTNF=(QLIQ(LFS)+QICE(LFS))*(1.-EQFRC(LFS))                    
1306         DMFLFS=RCED/(DEVDMF+DPPTDF+CNDTNF)                             
1307         IF(DMFLFS.GT.0.)THEN                                         
1308           TDER=0.                                                   
1309           GOTO 141                                                 
1310         ENDIF                                                     
1311 !                                                                
1312 !...DDINC IS THE FACTOR BY WHICH TO INCREASE THE FIRST-GUESS DOWNDRAFT    
1313 !...MASS FLUX TO SATISFY THE PRECIP EFFICIENCY RELATIONSHIP, UPDINC IS T 
1314 !...WHICH TO INCREASE THE UPDRAFT MASS FLUX BELOW THE LFS TO ACCOUNT FOR
1315 !...TRANSFER OF MASS FROM UPDRAFT TO DOWNDRAFT...                     
1316 !                                                                      
1317 !       DDINC=DMFLFS/DMF(LFS)                                        
1318         IF(LFS.GE.KLCL)THEN                                         
1319           UPDINC=(UMF(LFS)-(1.-EQFRC(LFS))*DMFLFS)/UMF(LFS)        
1320 !                                                                 
1321 !...LIMIT UPDINC TO LESS THAN OR EQUAL TO 1.5...                 
1322 !                                                                         
1323           IF(UPDINC.GT.1.5)THEN                                          
1324             UPDINC=1.5                                                  
1325             DMFLFS2=UMF(LFS)*(UPDINC-1.)/(EQFRC(LFS)-1.)               
1326             RCED2=DMFLFS2*(DEVDMF+DPPTDF+CNDTNF)                      
1327             PPTFLX=PPTFLX+(RCED-RCED2)                               
1328             PEFF2=PPTFLX/USR                                        
1329             RCED=RCED2                                             
1330             DMFLFS=DMFLFS2                                        
1331           ENDIF                                                  
1332         ELSE                                                    
1333           UPDINC=1.                                            
1334         ENDIF                                                 
1335         DDINC=DMFLFS/DMF(LFS)                                
1336         DO 149 NK=LDB,LFS                                   
1337           DMF(NK)=DMF(NK)*DDINC                            
1338           DER(NK)=DER(NK)*DDINC                           
1339           DDR(NK)=DDR(NK)*DDINC                          
1340   149   CONTINUE                                        
1341         CPR=TRPPT+PPR*(UPDINC-1.)                      
1342         PPTFLX=PPTFLX+PEFF*PPR*(UPDINC-1.)            
1343         PEFF=PEFF2                                   
1344         TDER=TDER*DDINC                             
1345 !                                                                          
1346 !...ADJUST UPDRAFT MASS FLUX, MASS DETRAINMENT RATE, AND LIQUID WATER AN  
1347 !   DETRAINMENT RATES TO BE CONSISTENT WITH THE TRANSFER OF THE ESTIMATE 
1348 !   FROM THE UPDRAFT TO THE DOWNDRAFT AT THE LFS...                    
1349 !                                                                     
1350         DO 155 NK=LC,LFS                                             
1351           UMF(NK)=UMF(NK)*UPDINC                                    
1352           UDR(NK)=UDR(NK)*UPDINC                                   
1353           UER(NK)=UER(NK)*UPDINC                                 
1354           PPTLIQ(NK)=PPTLIQ(NK)*UPDINC                          
1355           PPTICE(NK)=PPTICE(NK)*UPDINC                         
1356           DETLQ(NK)=DETLQ(NK)*UPDINC                          
1357   155   DETIC(NK)=DETIC(NK)*UPDINC                           
1358 !                                                           
1359 !...ZERO OUT THE ARRAYS FOR DOWNDRAFT DATA AT LEVELS ABOVE AND BELOW THE 
1360 !...DOWNDRAFT...                                                        
1361 !                                                                           
1362         IF(LDB.GT.1)THEN                                                   
1363           DO 156 NK=1,LDB-1                                               
1364             DMF(NK)=0.                                                   
1365             DER(NK)=0.                                                  
1366             DDR(NK)=0.                                                 
1367             WD(NK)=0.                                                 
1368             TZ(NK)=0.                                                
1369             QD(NK)=0.                                               
1370             THTAD(NK)=0.                                           
1371   156     CONTINUE                                                
1372         ENDIF                                                    
1373         DO 157 NK=LFS+1,KX                                      
1374           DMF(NK)=0.                                           
1375           DER(NK)=0.                                          
1376           DDR(NK)=0.                                         
1377           WD(NK)=0.                                         
1378           TZ(NK)=0.                                        
1379           QD(NK)=0.                                      
1380           THTAD(NK)=0.                                  
1381   157   CONTINUE                                       
1382         DO 158 NK=LDT+1,LFS-1                         
1383           TZ(NK)=0.                                  
1384           QD(NK)=0.                                 
1385   158   CONTINUE                                    
1386 !                                                                          
1387 !                                                                      
1388 !...SET LIMITS ON THE UPDRAFT AND DOWNDRAFT MASS FLUXES SO THAT THE   
1389 !   INFLOW INTO CONVECTIVE DRAFTS FROM A GIVEN LAYER IS NO MORE THAN 
1390 !   IS AVAILABLE IN THAT LAYER INITIALLY...                         
1391 !                                                                  
1392   165   AINCMX=1000.                                              
1393         LMAX=MAX0(KLCL,LFS)                                      
1394         DO 166 NK=LC,LMAX                                       
1395           IF((UER(NK)-DER(NK)).GT.0.)AINCM1=EMS(NK)/((UER(NK)-DER(NK))* & 
1396             TIMEC)                                             
1397           AINCMX=AMIN1(AINCMX,AINCM1)                         
1398   166   CONTINUE                                             
1399         AINC=1.                                             
1400         IF(AINCMX.LT.AINC)AINC=AINCMX                      
1401 !                                                         
1402 !...SAVE THE RELEVENT VARIABLES FOR A UNIT UPDRFT AND DOWNDRFT...THEY    
1403 !...WILL ITERATIVELY ADJUSTED BY THE FACTOR AINC TO SATISFY THE         
1404 !...STABILIZATION CLOSURE...                                           
1405 !                                                                         
1406         NCOUNT=0                                                         
1407         TDER2=TDER                                                      
1408         PPTFL2=PPTFLX                                                  
1409         DO 170 NK=1,LTOP                                              
1410           DETLQ2(NK)=DETLQ(NK)                                       
1411           DETIC2(NK)=DETIC(NK)                                      
1412           UDR2(NK)=UDR(NK)                                         
1413           UER2(NK)=UER(NK)                                        
1414           DDR2(NK)=DDR(NK)                                       
1415           DER2(NK)=DER(NK)                                      
1416           UMF2(NK)=UMF(NK)                                     
1417           DMF2(NK)=DMF(NK)                                    
1418   170   CONTINUE                                             
1419         FABE=1.                                             
1420         STAB=0.95                                          
1421         NOITR=0                                           
1422         IF(AINC/AINCMX.GT.0.999)THEN                     
1423           NCOUNT=0                                      
1424           GOTO 255                                     
1425         ENDIF                                        
1426         ISTOP=0                                     
1427   175   NCOUNT=NCOUNT+1                             
1428 !                                                   
1429 !*****************************************************************         
1430 !                                                                *        
1431 !           COMPUTE PROPERTIES FOR COMPENSATIONAL SUBSIDENCE     *       
1432 !                                                                *      
1433 !*****************************************************************     
1434 !                                                                     
1435 !...DETERMINE OMEGA VALUE NECESSARY AT TOP AND BOTTOM OF EACH LAYER TO    
1436 !...SATISFY MASS CONTINUITY...                                           
1437 !                                                                       
1438   185   CONTINUE                                                       
1439         DTT=TIMEC                                                     
1440         DO 200 NK=1,LTOP                                             
1441           DOMGDP(NK)=-(UER(NK)-DER(NK)-UDR(NK)-DDR(NK))*EMSD(NK)    
1442           IF(NK.GT.1)THEN                                          
1443             OMG(NK)=OMG(NK-1)-DP(NK-1)*DOMGDP(NK-1)               
1444             DTT1=0.75*DP(NK-1)/(ABS(OMG(NK))+1.E-10)             
1445             DTT=AMIN1(DTT,DTT1)                                 
1446           ENDIF                                                        
1447   200   CONTINUE                                                      
1448         DO 488 NK=1,LTOP                                             
1449           THPA(NK)=THTA0(NK)                                        
1450           QPA(NK)=Q0(NK)                                           
1451           NSTEP=NINT(TIMEC/DTT+1)                                 
1452           DTIME=TIMEC/FLOAT(NSTEP)                              
1453           FXM(NK)=OMG(NK)*DXSQ/G                               
1454   488   CONTINUE                                              
1455 !                                                            
1456 !...DO AN UPSTREAM/FORWARD-IN-TIME ADVECTION OF THETA, QV...
1457 !                                                          
1458         DO 495 NTC=1,NSTEP                                
1459 !                                                        
1460 !...ASSIGN THETA AND Q VALUES AT THE TOP AND BOTTOM OF EACH LAYER BASED   
1461 !...SIGN OF OMEGA...                                                     
1462 !                                                                       
1463           DO 493 NK=1,LTOP                                             
1464             THFXTOP(NK)=0.                                             
1465             THFXBOT(NK)=0.                                           
1466             QFXTOP(NK)=0.                                            
1467   493     QFXBOT(NK)=0.                                            
1468           DO 494 NK=2,LTOP
1469             IF(OMG(NK).LE.0.)THEN
1470               THFXBOT(NK)=-FXM(NK)*THPA(NK-1)
1471               QFXBOT(NK)=-FXM(NK)*QPA(NK-1)
1472               THFXTOP(NK-1)=THFXTOP(NK-1)-THFXBOT(NK)
1473               QFXTOP(NK-1)=QFXTOP(NK-1)-QFXBOT(NK)
1474             ELSE
1475               THFXBOT(NK)=-FXM(NK)*THPA(NK)
1476               QFXBOT(NK)=-FXM(NK)*QPA(NK)
1477               THFXTOP(NK-1)=THFXTOP(NK-1)-THFXBOT(NK)
1478               QFXTOP(NK-1)=QFXTOP(NK-1)-QFXBOT(NK)
1479             ENDIF
1480   494     CONTINUE
1481 !                                                   
1482 !...UPDATE THE THETA AND QV VALUES AT EACH LEVEL..  
1483 !                                                       
1484           DO 492 NK=1,LTOP                             
1485             THPA(NK)=THPA(NK)+(THFXBOT(NK)+UDR(NK)*THTAU(NK)+DDR(NK)*     & 
1486                      THTAD(NK)+THFXTOP(NK)-(UER(NK)-DER(NK))*THTA0(NK))* &
1487                      DTIME*EMSD(NK)                                     
1488             QPA(NK)=QPA(NK)+(QFXBOT(NK)+UDR(NK)*QDT(NK)+DDR(NK)*QD(NK)+   & 
1489                     QFXTOP(NK)-(UER(NK)-DER(NK))*Q0(NK))*DTIME*EMSD(NK)  
1490 
1491   492     CONTINUE                                                     
1492   495   CONTINUE                                                      
1493         DO 498 NK=1,LTOP                                             
1494           THTAG(NK)=THPA(NK)                                        
1495           QG(NK)=QPA(NK)                                           
1496   498   CONTINUE                                                  
1497 !                                                                
1498 !...CHECK TO SEE IF MIXING RATIO DIPS BELOW ZERO ANYWHERE;  IF SO,        
1499 !...BORROW MOISTURE FROM ADJACENT LAYERS TO BRING IT BACK UP ABOVE ZERO. 
1500 !                                                                       
1501         DO 499 NK=1,LTOP                                               
1502           IF(QG(NK).LT.0.)THEN                                        
1503             IF(NK.EQ.1)THEN                                          
1504               CALL wrf_error_fatal ( 'module_cu_kf.F: problem with kf scheme:  qg = 0 at the surface' )
1505             ENDIF                                                
1506             NK1=NK+1                                            
1507             IF(NK.EQ.LTOP)NK1=KLCL                             
1508             TMA=QG(NK1)*EMS(NK1)                              
1509             TMB=QG(NK-1)*EMS(NK-1)                           
1510             TMM=(QG(NK)-1.E-9)*EMS(NK)                      
1511             BCOEFF=-TMM/((TMA*TMA)/TMB+TMB)                
1512             ACOEFF=BCOEFF*TMA/TMB                         
1513             TMB=TMB*(1.-BCOEFF)                          
1514             TMA=TMA*(1.-ACOEFF)                         
1515             IF(NK.EQ.LTOP)THEN                                  
1516               QVDIFF=(QG(NK1)-TMA*EMSD(NK1))*100./QG(NK1)     
1517               IF(ABS(QVDIFF).GT.1.)THEN                        
1518             PRINT *,'--WARNING-- CLOUD BASE WATER VAPOR CHANGES BY ',    & 
1519             QVDIFF,                                                      &
1520              ' PERCENT WHEN MOISTURE IS BORROWED TO PREVENT NEG VALUES', &   
1521              ' IN KAIN-FRITSCH'                                             
1522               ENDIF                                                         
1523             ENDIF                                                          
1524             QG(NK)=1.E-9                                                  
1525             QG(NK1)=TMA*EMSD(NK1)                                        
1526             QG(NK-1)=TMB*EMSD(NK-1)                                     
1527           ENDIF                                                           
1528   499   CONTINUE                                                         
1529         TOPOMG=(UDR(LTOP)-UER(LTOP))*DP(LTOP)*EMSD(LTOP)                
1530         IF(ABS(TOPOMG-OMG(LTOP)).GT.1.E-3)THEN                         
1531 !       WRITE(98,*)'ERROR:  MASS DOES NOT BALANCE IN KF SCHEME;'      
1532 !    * ,'TOPOMG, OMG =',TOPOMG,OMG(LTOP)                             
1533         WRITE(6,*)'ERROR:  MASS DOES NOT BALANCE IN KF SCHEME;'        & 
1534        ,'TOPOMG, OMG =',TOPOMG,OMG(LTOP)                            
1535           ISTOP=1                                                  
1536           GOTO 265                                                
1537         ENDIF                                                    
1538 !                                                               
1539 !...CONVERT THETA TO T...                                      
1540 !                                                             
1541 ! PAY ATTENTION ...
1542 !
1543         DO 230 NK=1,LTOP                                     
1544           EXN(NK)=(P00/P0(NK))**(0.2854*(1.-0.28*QG(NK)))   
1545           TG(NK)=THTAG(NK)/EXN(NK)                         
1546           TVG(NK)=TG(NK)*(1.+0.608*QG(NK))                
1547   230   CONTINUE                                         
1548 !                                                       
1549 !*******************************************************************    
1550 !                                                                  *   
1551 !     COMPUTE NEW CLOUD AND CHANGE IN AVAILABLE BUOYANT ENERGY.    *  
1552 !                                                                  * 
1553 !*******************************************************************
1554 !                                                                  
1555 !...THE FOLLOWING COMPUTATIONS ARE SIMILAR TO THAT FOR UPDRAFT    
1556 !                                                                
1557         THMIX=0.                                                
1558         QMIX=0.                                                
1559         PMIX=0.                                               
1560         DO 217 NK=LC,KPBL                                    
1561           ROCPQ=0.2854*(1.-0.28*QG(NK))                     
1562           THMIX=THMIX+DP(NK)*TG(NK)*(P00/P0(NK))**ROCPQ    
1563           QMIX=QMIX+DP(NK)*QG(NK)                         
1564   217   PMIX=PMIX+DP(NK)*P0(NK)                          
1565         THMIX=THMIX/DPTHMX                              
1566         QMIX=QMIX/DPTHMX                              
1567         PMIX=PMIX/DPTHMX                             
1568         ROCPQ=0.2854*(1.-0.28*QMIX)                 
1569         TMIX=THMIX*(PMIX/P00)**ROCPQ                
1570         ES=ALIQ*EXP((TMIX*BLIQ-CLIQ)/(TMIX-DLIQ))                           
1571         QS=EP2*ES/(PMIX-ES)                                              
1572 !                                                                         
1573 !...REMOVE SUPERSATURATION FOR DIAGNOSTIC PURPOSES, IF NECESSARY...      
1574 !                                                                       
1575         IF(QMIX.GT.QS)THEN                                             
1576           RL=XLV0-XLV1*TMIX                                          
1577           CPM=CP*(1.+0.887*QMIX)                                    
1578           DSSDT=QS*(CLIQ-BLIQ*DLIQ)/((TMIX-DLIQ)*(TMIX-DLIQ))      
1579           DQ=(QMIX-QS)/(1.+RL*DSSDT/CPM)                          
1580           TMIX=TMIX+RL/CP*DQ                                     
1581           QMIX=QMIX-DQ                                          
1582           ROCPQ=0.2854*(1.-0.28*QMIX)                          
1583           THMIX=TMIX*(P00/PMIX)**ROCPQ                        
1584           TLCL=TMIX                                          
1585           PLCL=PMIX                                         
1586         ELSE                                               
1587           QMIX=AMAX1(QMIX,0.)                             
1588           EMIX=QMIX*PMIX/(EP2+QMIX)                    
1589           TLOG=ALOG(EMIX/ALIQ)                          
1590           TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)            
1591           TLCL=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(TMIX-T00))*(TMIX-  & 
1592                TDPT)                                                      
1593           TLCL=AMIN1(TLCL,TMIX)                                          
1594           CPORQ=1./ROCPQ                                                
1595           PLCL=P00*(TLCL/THMIX)**CPORQ                                 
1596         ENDIF                                                         
1597         TVLCL=TLCL*(1.+0.608*QMIX)                                   
1598         DO 235 NK=LC,KL                                             
1599           KLCL=NK                                                 
1600   235   IF(PLCL.GE.P0(NK))GOTO 240                               
1601   240   K=KLCL-1                                                
1602         DLP=ALOG(PLCL/P0(K))/ALOG(P0(KLCL)/P0(K))              
1603 !                                                             
1604 !...ESTIMATE ENVIRONMENTAL TEMPERATURE AND MIXING RATIO AT THE LCL...
1605 !                                                                          
1606         TENV=TG(K)+(TG(KLCL)-TG(K))*DLP                                   
1607         QENV=QG(K)+(QG(KLCL)-QG(K))*DLP                                  
1608         TVEN=TENV*(1.+0.608*QENV)                                       
1609         TVBAR=0.5*(TVG(K)+TVEN)                                        
1610 !        ZLCL=Z0(K)+R*TVBAR*ALOG(P0(K)/PLCL)/G                        
1611         ZLCL=Z0(K)+(Z0(KLCL)-Z0(K))*DLP                                     
1612         TVAVG=0.5*(TVEN+TG(KLCL)*(1.+0.608*QG(KLCL)))                      
1613         PLCL=P0(KLCL)*EXP(G/(R*TVAVG)*(Z0(KLCL)-ZLCL))                    
1614         THETEU(K)=TMIX*(1.E5/PMIX)**(0.2854*(1.-0.28*QMIX))*            & 
1615                   EXP((3374.6525/TLCL-2.5403)*QMIX*(1.+0.81*QMIX))      
1616         ES=ALIQ*EXP((TENV*BLIQ-CLIQ)/(TENV-DLIQ))                        
1617         QESE=EP2*ES/(PLCL-ES)                                              
1618         THTESG(K)=TENV*(1.E5/PLCL)**(0.2854*(1.-0.28*QESE))*            &
1619                   EXP((3374.6525/TENV-2.5403)*QESE*(1.+0.81*QESE))       
1620 !                                                                           
1621 !...COMPUTE ADJUSTED ABE(ABEG).                                            
1622 !                                                                         
1623         ABEG=0.                                                         
1624         THTUDL=THETEU(K)                                               
1625         DO 245 NK=K,LTOPM1                                            
1626           NK1=NK+1                                                   
1627           ES=ALIQ*EXP((TG(NK1)*BLIQ-CLIQ)/(TG(NK1)-DLIQ))                    
1628           QESE=EP2*ES/(P0(NK1)-ES)                                        
1629           THTESG(NK1)=TG(NK1)*(1.E5/P0(NK1))**(0.2854*(1.-0.28*QESE))*    & 
1630                       EXP((3374.6525/TG(NK1)-2.5403)*QESE*(1.+0.81*QESE)  & 
1631                       )                                                     
1632 !         DZZ=CVMGT(Z0(KLCL)-ZLCL,DZA(NK),NK.EQ.K)                         
1633           IF(NK.EQ.K)THEN                                                 
1634             DZZ=Z0(KLCL)-ZLCL                                            
1635           ELSE                                                          
1636             DZZ=DZA(NK)                                                
1637           ENDIF                                                       
1638           BE=((2.*THTUDL)/(THTESG(NK1)+THTESG(NK))-1.)*DZZ           
1639   245   IF(BE.GT.0.)ABEG=ABEG+BE*G                                  
1640 !                                                                  
1641 !...ASSUME AT LEAST 90% OF CAPE (ABE) IS REMOVED BY CONVECTION DURING     
1642 !...THE PERIOD TIMEC...                                                  
1643 !                                                                       
1644         IF(NOITR.EQ.1)THEN                                             
1645 !        WRITE(98,1060)FABE                                           
1646           GOTO 265                                                   
1647         ENDIF                                                       
1648         DABE=AMAX1(ABE-ABEG,0.1*ABE)                               
1649         FABE=ABEG/(ABE+1.E-8)                                    
1650         IF(FABE.GT.1.)THEN                                                
1651 !       WRITE(98,*)'UPDRAFT/DOWNDRAFT COUPLET INCREASES CAPE AT THIS '   
1652 !    *,'GRID POINT; NO CONVECTION ALLOWED!'                             
1653           GOTO 325                                                     
1654         ENDIF                                                         
1655         IF(NCOUNT.NE.1)THEN                                          
1656           DFDA=(FABE-FABEOLD)/(AINC-AINCOLD)                        
1657           IF(DFDA.GT.0.)THEN                                       
1658             NOITR=1                                               
1659             AINC=AINCOLD                                         
1660             GOTO 255                                            
1661           ENDIF                                                
1662         ENDIF                                                 
1663         AINCOLD=AINC                                         
1664         FABEOLD=FABE                                        
1665         IF(AINC/AINCMX.GT.0.999.AND.FABE.GT.1.05-STAB)THEN 
1666 !      WRITE(98,1055)FABE                                             
1667           GOTO 265                                                   
1668         ENDIF                                                       
1669         IF(FABE.LE.1.05-STAB.AND.FABE.GE.0.95-STAB)GOTO 265        
1670         IF(NCOUNT.GT.10)THEN                                      
1671 !       WRITE(98,1060)FABE                                       
1672           GOTO 265                                              
1673         ENDIF                                                  
1674 !                                                                             
1675 !...IF MORE THAN 10% OF THE ORIGINAL CAPE REMAINS, INCREASE THE              
1676 !...CONVECTIVE MASS FLUX BY THE FACTOR AINC:                                
1677 !                                                                          
1678         IF(FABE.EQ.0.)THEN                                               
1679           AINC=AINC*0.5                                                 
1680         ELSE                                                           
1681           AINC=AINC*STAB*ABE/(DABE+1.E-8)                             
1682         ENDIF                                                        
1683   255   AINC=AMIN1(AINCMX,AINC)                                     
1684 !...IF AINC BECOMES VERY SMALL, EFFECTS OF CONVECTION              
1685 !...WILL BE MINIMAL SO JUST IGNORE IT...                          
1686         IF(AINC.LT.0.05)GOTO 325                                 
1687 !       AINC=AMAX1(AINC,0.05)                                   
1688         TDER=TDER2*AINC                                        
1689         PPTFLX=PPTFL2*AINC                                    
1690 !     WRITE(98,1080)LFS,LDB,LDT,TIMEC,NSTEP,NCOUNT,FABEOLD,AINCOLD     
1691         DO 260 NK=1,LTOP                                              
1692           UMF(NK)=UMF2(NK)*AINC                                      
1693           DMF(NK)=DMF2(NK)*AINC                                     
1694           DETLQ(NK)=DETLQ2(NK)*AINC                                
1695           DETIC(NK)=DETIC2(NK)*AINC                               
1696           UDR(NK)=UDR2(NK)*AINC                                  
1697           UER(NK)=UER2(NK)*AINC                                 
1698           DER(NK)=DER2(NK)*AINC                                
1699           DDR(NK)=DDR2(NK)*AINC                               
1700   260   CONTINUE                                             
1701 !                                                           
1702 !...GO BACK UP FOR ANOTHER ITERATION...                    
1703 !                                                         
1704         GOTO 175                                         
1705   265   CONTINUE                                        
1706 !                                                      
1707 !...CLEAN THINGS UP, CALCULATE CONVECTIVE FEEDBACK TENDENCIES FOR THIS    
1708 !...GRID POINT...                                                        
1709 !                                                                       
1710 !...COMPUTE HYDROMETEOR TENDENCIES AS IS DONE FOR T, QV...             
1711 !                                                                     
1712 !...FRC2 IS THE FRACTION OF TOTAL CONDENSATE                         
1713 !...GENERATED THAT GOES INTO PRECIPITIATION                         
1714         FRC2=PPTFLX/(CPR*AINC)                                     
1715         DO 270 NK=1,LTOP                                          
1716           QLPA(NK)=QL0(NK)                                       
1717           QIPA(NK)=QI0(NK)                                      
1718           QRPA(NK)=QR0(NK)                                     
1719           QSPA(NK)=QS0(NK)                                    
1720           RAINFB(NK)=PPTLIQ(NK)*AINC*FBFRC*FRC2                         
1721           SNOWFB(NK)=PPTICE(NK)*AINC*FBFRC*FRC2                        
1722   270   CONTINUE                                                      
1723         DO 290 NTC=1,NSTEP                                           
1724 !                                                                   
1725 !...ASSIGN HYDROMETEORS CONCENTRATIONS AT THE TOP AND BOTTOM OF EACH 
1726 !...LAYER BASED ON THE SIGN OF OMEGA...                             
1727 !                                                                  
1728           DO 275 NK=1,LTOP                                        
1729             QLFXIN(NK)=0.                                        
1730             QLFXOUT(NK)=0.                                      
1731             QIFXIN(NK)=0.                                      
1732             QIFXOUT(NK)=0.                                    
1733             QRFXIN(NK)=0.                                    
1734             QRFXOUT(NK)=0.                                  
1735             QSFXIN(NK)=0.                                  
1736             QSFXOUT(NK)=0.                               
1737   275     CONTINUE                                                     
1738           DO 280 NK=2,LTOP                                            
1739             IF(OMG(NK).LE.0.)THEN                                    
1740               QLFXIN(NK)=-FXM(NK)*QLPA(NK-1)                        
1741               QIFXIN(NK)=-FXM(NK)*QIPA(NK-1)                       
1742               QRFXIN(NK)=-FXM(NK)*QRPA(NK-1)                      
1743               QSFXIN(NK)=-FXM(NK)*QSPA(NK-1)                     
1744               QLFXOUT(NK-1)=QLFXOUT(NK-1)+QLFXIN(NK)            
1745               QIFXOUT(NK-1)=QIFXOUT(NK-1)+QIFXIN(NK)           
1746               QRFXOUT(NK-1)=QRFXOUT(NK-1)+QRFXIN(NK)          
1747               QSFXOUT(NK-1)=QSFXOUT(NK-1)+QSFXIN(NK)         
1748             ELSE                                            
1749               QLFXOUT(NK)=FXM(NK)*QLPA(NK)                 
1750               QIFXOUT(NK)=FXM(NK)*QIPA(NK)                
1751               QRFXOUT(NK)=FXM(NK)*QRPA(NK)               
1752               QSFXOUT(NK)=FXM(NK)*QSPA(NK)             
1753               QLFXIN(NK-1)=QLFXIN(NK-1)+QLFXOUT(NK)   
1754               QIFXIN(NK-1)=QIFXIN(NK-1)+QIFXOUT(NK)                      
1755               QRFXIN(NK-1)=QRFXIN(NK-1)+QRFXOUT(NK)                     
1756               QSFXIN(NK-1)=QSFXIN(NK-1)+QSFXOUT(NK)                    
1757             ENDIF                                                     
1758   280     CONTINUE                                                  
1759 !                                                                  
1760 !...UPDATE THE HYDROMETEOR CONCENTRATION VALUES AT EACH LEVEL...  
1761 !                                                                
1762           DO 285 NK=1,LTOP                                                 
1763             QLPA(NK)=QLPA(NK)+(QLFXIN(NK)+DETLQ(NK)-QLFXOUT(NK))*DTIME*  & 
1764                      EMSD(NK)                                               
1765             QIPA(NK)=QIPA(NK)+(QIFXIN(NK)+DETIC(NK)-QIFXOUT(NK))*DTIME*  & 
1766                      EMSD(NK)                                             
1767             QRPA(NK)=QRPA(NK)+(QRFXIN(NK)+QLQOUT(NK)*UDR(NK)-QRFXOUT(NK) & 
1768                      +RAINFB(NK))*DTIME*EMSD(NK)                          
1769             QSPA(NK)=QSPA(NK)+(QSFXIN(NK)+QICOUT(NK)*UDR(NK)-QSFXOUT(NK) &  
1770                      +SNOWFB(NK))*DTIME*EMSD(NK)                           
1771   285     CONTINUE                                                        
1772   290   CONTINUE                                                         
1773         DO 295 NK=1,LTOP                                                
1774           QLG(NK)=QLPA(NK)                                             
1775           QIG(NK)=QIPA(NK)                                            
1776           QRG(NK)=QRPA(NK)                                           
1777           QSG(NK)=QSPA(NK)                                          
1778   295   CONTINUE                                                  
1779 !     WRITE(98,1080)LFS,LDB,LDT,TIMEC,NSTEP,NCOUNT,FABE,AINC     
1780 !                                                               
1781 !...SEND FINAL PARAMETERIZED VALUES TO OUTPUT FILES...         
1782 !                                                             
1783         IF(ISTOP.EQ.1)THEN                                   
1784         WRITE(6,1070)'  P  ','   DP ',' DT K/D ',' DR K/D ','   OMG  ',  & 
1785       ' DOMGDP ','   UMF  ','   UER  ','   UDR  ','   DMF  ','   DER  '  & 
1786       ,'   DDR  ','   EMS  ','    W0  ','  DETLQ ',' DETIC '              
1787           DO 300 K=LTOP,1,-1                                                   
1788             DTT=(TG(K)-T0(K))*86400./TIMEC                                 
1789             RL=XLV0-XLV1*TG(K)                                            
1790             DR=-(QG(K)-Q0(K))*RL*86400./(TIMEC*CP)                       
1791             UDFRC=UDR(K)*TIMEC*EMSD(K)                                  
1792             UEFRC=UER(K)*TIMEC*EMSD(K)                                 
1793             DDFRC=DDR(K)*TIMEC*EMSD(K)                                
1794             DEFRC=-DER(K)*TIMEC*EMSD(K)                              
1795             WRITE (6,1075)P0(K)/100.,DP(K)/100.,DTT,DR,OMG(K),DOMGDP(K)* &  
1796                           1.E4,UMF(K)/1.E6,UEFRC,UDFRC,DMF(K)/1.E6,DEFRC & 
1797                           ,DDFRC,EMS(K)/1.E11,W0AVG1D(K)*1.E2,DETLQ(K) &
1798                           *TIMEC*EMSD(K)*1.E3,DETIC(K)*TIMEC*EMSD(K)*    & 
1799                           1.E3                                            
1800   300     CONTINUE                                                       
1801         WRITE(6,1085)'K','P','Z','T0','TG','DT','TU','TD','Q0','QG',     & 
1802                   'DQ','QU','QD','QLG','QIG','QRG','QSG','RH0','RHG'    
1803           DO 305 K=KX,1,-1                                               
1804             DTT=TG(K)-T0(K)                                          
1805             TUC=TU(K)-T00                                                    
1806             IF(K.LT.LC.OR.K.GT.LTOP)TUC=0.                                  
1807             TDC=TZ(K)-T00                                                  
1808             IF((K.LT.LDB.OR.K.GT.LDT).AND.K.NE.LFS)TDC=0.                 
1809             ES=ALIQ*EXP((BLIQ*TG(K)-CLIQ)/(TG(K)-DLIQ))                  
1810             QGS=ES*EP2/(P0(K)-ES)                                     
1811             RH0=Q0(K)/QES(K)                                              
1812             RHG=QG(K)/QGS                                                
1813             WRITE (6,1090)K,P0(K)/100.,Z0(K),T0(K)-T00,TG(K)-T00,DTT,TUC &
1814                           ,TDC,Q0(K)*1000.,QG(K)*1000.,(QG(K)-Q0(K))*    &   
1815                           1000.,QU(K)*1000.,QD(K)*1000.,QLG(K)*1000.,    &  
1816                           QIG(K)*1000.,QRG(K)*1000.,QSG(K)*1000.,RH0,RHG   
1817   305     CONTINUE                                                        
1818 !                                                                        
1819 !...IF CALCULATIONS ABOVE SHOW AN ERROR IN THE MASS BUDGET, PRINT OUT A 
1820 !...TO BE USED LATER FOR DIAGNOSTIC PURPOSES, THEN ABORT RUN...        
1821 !                                                                     
1822           IF(ISTOP.EQ.1)THEN                                         
1823             DO 310 K=1,KX                                           
1824               WRITE ( wrf_err_message , 1115 )                         &
1825                             Z0(K),P0(K)/100.,T0(K)-273.16,Q0(K)*1000.,   &
1826                             U0(K),V0(K),DP(K)/100.,W0AVG1D(K)         
1827               CALL wrf_message ( TRIM( wrf_err_message ) )
1828   310       CONTINUE                                                   
1829             CALL wrf_error_fatal ( 'module_cu_kf.F: KAIN-FRITSCH' )
1830           ENDIF                                                      
1831         ENDIF                                                       
1832         CNDTNF=(1.-EQFRC(LFS))*(QLIQ(LFS)+QICE(LFS))*DMF(LFS)            
1833 !     WRITE(98,1095)CPR*AINC,TDER+PPTFLX+CNDTNF                            
1834 !                                                                       
1835 !  EVALUATE MOISTURE BUDGET...                                         
1836 !                                                                     
1837         QINIT=0.                                                     
1838         QFNL=0.                                                     
1839         DPT=0.                                                     
1840         DO 315 NK=1,LTOP                                                    
1841           DPT=DPT+DP(NK)                                                     
1842           QINIT=QINIT+Q0(NK)*EMS(NK)                                       
1843           QFNL=QFNL+QG(NK)*EMS(NK)                                        
1844           QFNL=QFNL+(QLG(NK)+QIG(NK)+QRG(NK)+QSG(NK))*EMS(NK)            
1845   315   CONTINUE                                                        
1846         QFNL=QFNL+PPTFLX*TIMEC*(1.-FBFRC)                              
1847         ERR2=(QFNL-QINIT)*100./QINIT                                  
1848 !     WRITE(98,1110)QINIT,QFNL,ERR2                                  
1849 !        IF(ABS(ERR2).GT.0.05)STOP 'QVERR'                           
1850         IF(ABS(ERR2).GT.0.05)CALL wrf_error_fatal( 'module_cu_kf.F: QVERR' )
1851         RELERR=ERR2*QINIT/(PPTFLX*TIMEC+1.E-10)                   
1852 !     WRITE(98,1120)RELERR                                       
1853 !     WRITE(98,*)'TDER, CPR, USR, TRPPT =',                     
1854 !    *TDER,CPR*AINC,USR*AINC,TRPPT*AINC                        
1855 !                                                             
1856 !...FEEDBACK TO RESOLVABLE SCALE TENDENCIES.                 
1857 !                                                           
1858 !...IF THE ADVECTIVE TIME PERIOD (TADVEC) IS LESS THAN SPECIFIED MINIMUM  
1859 !...TIMEC, ALLOW FEEDBACK TO OCCUR ONLY DURING TADVEC...                 
1860 !                                                                       
1861         IF(TADVEC.LT.TIMEC)NIC=NINT(TADVEC/DT)                  
1862         NCA(I,J)=FLOAT(NIC)                                                  
1863         DO 320 K=1,KX                                                
1864 !         IF(IMOIST.NE.2)THEN
1865 !                                                                            
1866 !...IF HYDROMETEORS ARE NOT ALLOWED, THEY MUST BE EVAPORATED OR SUBLIMAT    
1867 !...AND FED BACK AS VAPOR, ALONG WITH ASSOCIATED CHANGES IN TEMPERATURE.   
1868 !...NOTE:  THIS WILL INTRODUCE CHANGES IN THE CONVECTIVE TEMPERATURE AND  
1869 !...WATER VAPOR FEEDBACK TENDENCIES AND MAY LEAD TO SUPERSATURATED VALUE 
1870 !...OF QG...                                                           
1871 !                                                                     
1872 !           RLC=XLV0-XLV1*TG(K)                                      
1873 !           RLS=XLS0-XLS1*TG(K)                                     
1874 !           CPM=CP*(1.+0.887*QG(K))                                
1875 !           TG(K)=TG(K)-(RLC*(QLG(K)+QRG(K))+RLS*(QIG(K)+QSG(K)))/CPM    
1876 !           QG(K)=QG(K)+(QLG(K)+QRG(K)+QIG(K)+QSG(K))                   
1877 !           DQCDT(K)=0.                                           
1878 !           DQIDT(K)=0.                                          
1879 !           DQRDT(K)=0.                                         
1880 !           DQSDT(K)=0.                                        
1881 !         ELSE                                                     
1882             IF(.NOT. qi_flag .and. warm_rain)THEN                                          
1883 !                                                                         
1884 !...IF ICE PHASE IS NOT ALLOWED, MELT ALL FROZEN HYDROMETEORS...         
1885 !                                                                       
1886               CPM=CP*(1.+0.887*QG(K))                                  
1887               TG(K)=TG(K)-(QIG(K)+QSG(K))*RLF/CPM                     
1888               DQCDT(K)=(QLG(K)+QIG(K)-QL0(K)-QI0(K))/TIMEC      
1889               DQIDT(K)=0.                                      
1890               DQRDT(K)=(QRG(K)+QSG(K)-QR0(K)-QS0(K))/TIMEC    
1891               DQSDT(K)=0.                                    
1892             ELSEIF(.NOT. qi_flag .and. .not. warm_rain)THEN                                          
1893 !                                                                      
1894 !...IF ICE PHASE IS ALLOWED, BUT MIXED PHASE IS NOT, MELT FROZEN HYDROME   
1895 !...BELOW THE MELTING LEVEL, FREEZE LIQUID WATER ABOVE THE MELTING LEVEL  
1896 !                                                                        
1897               CPM=CP*(1.+0.887*QG(K))                                   
1898               IF(K.LE.ML)THEN                                         
1899                 TG(K)=TG(K)-(QIG(K)+QSG(K))*RLF/CPM                  
1900               ELSEIF(K.GT.ML)THEN                                              
1901                 TG(K)=TG(K)+(QLG(K)+QRG(K))*RLF/CPM                           
1902               ENDIF                                                          
1903               DQCDT(K)=(QLG(K)+QIG(K)-QL0(K)-QI0(K))/TIMEC             
1904               DQIDT(K)=0.                                             
1905               DQRDT(K)=(QRG(K)+QSG(K)-QR0(K)-QS0(K))/TIMEC           
1906               DQSDT(K)=0.                                           
1907             ELSEIF(qi_flag) THEN
1908 !                                                                           
1909 !...IF MIXED PHASE HYDROMETEORS ARE ALLOWED, FEED BACK CONVECTIVE          
1910 !...TENDENCY OF HYDROMETEORS DIRECTLY...                                  
1911 !                                                                        
1912               DQCDT(K)=(QLG(K)-QL0(K))/TIMEC                       
1913               DQIDT(K)=(QIG(K)-QI0(K))/TIMEC                      
1914               DQRDT(K)=(QRG(K)-QR0(K))/TIMEC                     
1915               IF (qs_flag ) THEN
1916                  DQSDT(K)=(QSG(K)-QS0(K))/TIMEC                    
1917               ELSE
1918                  DQIDT(K)=DQIDT(K)+(QSG(K)-QS0(K))/TIMEC
1919               ENDIF
1920             ELSE                                                    
1921               CALL wrf_error_fatal ( 'module_cu_kf: THIS COMBINATION OF IMOIST,  IICE NOT ALLOWED' )
1922             ENDIF                                                 
1923 !         ENDIF                                                  
1924           DTDT(K)=(TG(K)-T0(K))/TIMEC                      
1925           DQDT(K)=(QG(K)-Q0(K))/TIMEC                                   
1926   320   CONTINUE                                                            
1927 
1928 ! RAINCV is in the unit of mm
1929 
1930         RAINCV(I,J)=DT*PPTFLX*(1.-FBFRC)/DXSQ                       
1931 !         RNC=0.1*TIMEC*PPTFLX/DXSQ                                       
1932         RNC=RAINCV(I,J)*NIC                                              
1933 !        WRITE(98,909)RNC                                               
1934  909     FORMAT(' CONVECTIVE RAINFALL =',F8.4,' CM')                   
1935 
1936   325 CONTINUE                                                        
1937 
1938 1000  FORMAT(' ',10A8)                                                     
1939 1005  FORMAT(' ',F6.0,2X,F6.4,2X,F7.3,1X,F6.4,2X,4(F6.3,2X),2(F7.3,1X))   
1940 1010  FORMAT(' ',' VERTICAL VELOCITY IS NEGATIVE AT ',F4.0,' MB')        
1941 1015   FORMAT(' ','ALL REMAINING MASS DETRAINS BELOW ',F4.0,' MB')          
1942 1025   FORMAT(5X,' KLCL=',I2,' ZLCL=',F7.1,'M',                          &
1943         ' DTLCL=',F5.2,' LTOP=',I2,' P0(LTOP)=',-2PF5.1,'MB FRZ LV=',    & 
1944         I2,' TMIX=',0PF4.1,1X,'PMIX=',-2PF6.1,' QMIX=',3PF5.1,           &
1945         ' CAPE=',0PF7.1)                                                    
1946 1030   FORMAT(' ',' P0(LET) = ',F6.1,' P0(LTOP) = ',F6.1,' VMFLCL =',    &   
1947       E12.3,' PLCL =',F6.1,' WLCL =',F6.3,' CLDHGT =',                   & 
1948       F8.1)                                                               
1949 1035  FORMAT(1X,'PEF(WS)=',F4.2,'(CB)=',F4.2,'LC,LET=',2I3,'WKL='        &
1950       ,F6.3,'VWS=',F5.2)                                                    
1951 1040          FORMAT(' ','PRECIP EFF = 100%, ENVIR CANNOT SUPPORT DOWND' & 
1952       ,'RAFTS')                                                          
1953 !1045  FORMAT('NUMBER OF DOWNDRAFT ITERATIONS EXCEEDS 10...PPTFLX'       & 
1954 !      ' IS DIFFERENT FROM THAT GIVEN BY PRECIP EFF RELATION')            
1955 ! FLIC HAS TROUBLE WITH THIS ONE.                                         
1956 1045  FORMAT('NUMBER OF DOWNDRAFT ITERATIONS EXCEEDS 10')                
1957 1050  FORMAT(' ','LCOUNT= ',I3,' PPTFLX/CPR, PEFF= ',F5.3,1X,F5.3,       &  
1958       'DMF(LFS)/UMF(LCL)= ',F5.3)                                          
1959 1055     FORMAT(/'*** DEGREE OF STABILIZATION =',F5.3,', NO MORE MASS F' &
1960       ,'LUX IS ALLOWED')                                                
1961 !1060     FORMAT(/' ITERATION DOES NOT CONVERGE TO GIVE THE SPECIFIED '  & 
1962 !      'DEGREE OF STABILIZATION!  FABE= ',F6.4)                             
1963 1060  FORMAT(/' ITERATION DOES NOT CONVERGE.  FABE= ',F6.4)                
1964  1070 FORMAT (16A8)                                                       
1965  1075 FORMAT (F8.2,3(F8.2),2(F8.3),F8.2,2F8.3,F8.2,6F8.3)                
1966 1080   FORMAT(2X,'LFS,LDB,LDT =',3I3,' TIMEC, NSTEP=',F5.0,I3,           & 
1967       'NCOUNT, FABE, AINC=',I2,1X,F5.3,F6.2)                              
1968  1085 FORMAT (A3,16A7,2A8)                                               
1969  1090 FORMAT (I3,F7.2,F7.0,10F7.2,4F7.3,2F8.3)                          
1970 1095   FORMAT(' ','  PPT PRODUCTION RATE= ',F10.0,' TOTAL EVAP+PPT= ',   &  
1971        F10.0)                                                           
1972 1105   FORMAT(' ','NET LATENT HEAT RELEASE =',E12.5,' ACTUAL HEATING =', & 
1973        E12.5,' J/KG-S, DIFFERENCE = ',F9.3,'PERCENT')                    
1974 1110   FORMAT(' ','INITIAL WATER =',E12.5,' FINAL WATER =',E12.5,        & 
1975        ' TOTAL WATER CHANGE =',F8.2,'PERCENT')                              
1976  1115 FORMAT (2X,F6.0,2X,F7.2,2X,F5.1,2X,F6.3,2(2X,F5.1),2X,F7.2,2X,F7.4 &  
1977              )                                                            
1978 1120   FORMAT(' ','MOISTURE ERROR AS FUNCTION OF TOTAL PPT =',F9.3,      & 
1979             'PERCENT')                                                  
1980 
1981    END SUBROUTINE KFPARA 
1982 
1983 !-----------------------------------------------------------------------
1984    SUBROUTINE CONDLOAD(QLIQ,QICE,WTW,DZ,BOTERM,ENTERM,RATE,QNEWLQ,     & 
1985                        QNEWIC,QLQOUT,QICOUT,G)                           
1986 !-----------------------------------------------------------------------
1987    IMPLICIT NONE
1988 !-----------------------------------------------------------------------
1989 !  9/18/88...THIS PRECIPITATION FALLOUT SCHEME IS BASED ON THE SCHEME US    
1990 !  BY OGURA AND CHO (1973).  LIQUID WATER FALLOUT FROM A PARCEL IS CAL-    
1991 !  CULATED USING THE EQUATION DQ=-RATE*Q*DT, BUT TO SIMULATE A QUASI-     
1992 !  CONTINUOUS PROCESS, AND TO ELIMINATE A DEPENDENCY ON VERTICAL         
1993 !  RESOLUTION THIS IS EXPRESSED AS Q=Q*EXP(-RATE*DZ).                   
1994 
1995       REAL, INTENT(IN   )   :: G
1996       REAL, INTENT(IN   )   :: DZ,BOTERM,ENTERM,RATE
1997       REAL, INTENT(INOUT)   :: QLQOUT,QICOUT,WTW,QLIQ,QICE,QNEWLQ,QNEWIC
1998 
1999       REAL :: QTOT,QNEW,QEST,G1,WAVG,CONV,RATIO3,OLDQ,RATIO4,DQ,PPTDRG
2000 
2001       QTOT=QLIQ+QICE                                                  
2002       QNEW=QNEWLQ+QNEWIC                                            
2003 !                                                                  
2004 !  ESTIMATE THE VERTICAL VELOCITY SO THAT AN AVERAGE VERTICAL VELOCITY C
2005 !  BE CALCULATED TO ESTIMATE THE TIME REQUIRED FOR ASCENT BETWEEN MODEL
2006 !  LEVELS...                                                          
2007 !                                                                    
2008       QEST=0.5*(QTOT+QNEW)                                          
2009       G1=WTW+BOTERM-ENTERM-2.*G*DZ*QEST/1.5                        
2010       IF(G1.LT.0.0)G1=0.                                          
2011       WAVG=(SQRT(WTW)+SQRT(G1))/2.                               
2012       CONV=RATE*DZ/WAVG                                         
2013 !                                                              
2014 !  RATIO3 IS THE FRACTION OF LIQUID WATER IN FRESH CONDENSATE, RATIO4 IS  
2015 !  THE FRACTION OF LIQUID WATER IN THE TOTAL AMOUNT OF CONDENSATE INVOLV 
2016 !  IN THE PRECIPITATION PROCESS - NOTE THAT ONLY 60% OF THE FRESH CONDEN
2017 !  SATE IS IS ALLOWED TO PARTICIPATE IN THE CONVERSION PROCESS...      
2018 !                                                                     
2019       RATIO3=QNEWLQ/(QNEW+1.E-10)                                    
2020 !     OLDQ=QTOT                                                     
2021       QTOT=QTOT+0.6*QNEW                                           
2022       OLDQ=QTOT                                                   
2023       RATIO4=(0.6*QNEWLQ+QLIQ)/(QTOT+1.E-10)                     
2024       QTOT=QTOT*EXP(-CONV)                                      
2025 !                                                              
2026 !  DETERMINE THE AMOUNT OF PRECIPITATION THAT FALLS OUT OF THE UPDRAFT   
2027 !  PARCEL AT THIS LEVEL...                                              
2028 !                                                                      
2029       DQ=OLDQ-QTOT                                                    
2030       QLQOUT=RATIO4*DQ                                               
2031       QICOUT=(1.-RATIO4)*DQ                                         
2032 !                                                                  
2033 !  ESTIMATE THE MEAN LOAD OF CONDENSATE ON THE UPDRAFT IN THE LAYER, CAL 
2034 !  LATE VERTICAL VELOCITY                                               
2035 !                                                                      
2036       PPTDRG=0.5*(OLDQ+QTOT-0.2*QNEW)                                 
2037       WTW=WTW+BOTERM-ENTERM-2.*G*DZ*PPTDRG/1.5                       
2038 !                                                                   
2039 !  DETERMINE THE NEW LIQUID WATER AND ICE CONCENTRATIONS INCLUDING LOSSE  
2040 !  DUE TO PRECIPITATION AND GAINS FROM CONDENSATION...                   
2041 !                                                                       
2042       QLIQ=RATIO4*QTOT+RATIO3*0.4*QNEW                                 
2043       QICE=(1.-RATIO4)*QTOT+(1.-RATIO3)*0.4*QNEW                      
2044       QNEWLQ=0.                                                      
2045       QNEWIC=0.                                                     
2046 
2047    END SUBROUTINE CONDLOAD
2048 
2049 !-----------------------------------------------------------------------
2050    SUBROUTINE DTFRZNEW(TU,P,THTEU,QVAP,QLIQ,QICE,RATIO2,TTFRZ,TBFRZ,   & 
2051                        QNWFRZ,RL,FRC1,EFFQ,IFLAG,XLV0,XLV1,XLS0,XLS1,  & 
2052                        EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE     )        
2053 !-----------------------------------------------------------------------
2054    IMPLICIT NONE
2055 !-----------------------------------------------------------------------
2056    REAL,         INTENT(IN   )   :: XLV0,XLV1
2057    REAL,         INTENT(IN   )   :: P,TTFRZ,TBFRZ,EFFQ,XLS0,XLS1,EP2,ALIQ, &
2058                                     BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE
2059    REAL,         INTENT(INOUT)   :: TU,THTEU,QVAP,QLIQ,QICE,RATIO2,    &
2060                                     FRC1,RL,QNWFRZ
2061    INTEGER,      INTENT(INOUT)   :: IFLAG
2062 
2063    REAL ::       CCP,RV,C5,QLQFRZ,QNEW,ESLIQ,ESICE,RLC,RLS,PI,ES,RLF,A, &
2064                  B,C,DQVAP,DTFRZ,TU1,QVAP1
2065 !-----------------------------------------------------------------------
2066 !                                                                          
2067 !...ALLOW GLACIATION OF THE UPDRAFT TO OCCUR AS AN APPROXIMATELY LINEAR   
2068 !   FUNCTION OF TEMPERATURE IN THE TEMPERATURE RANGE TTFRZ TO TBFRZ...   
2069 !                                                                       
2070 
2071       RV=461.5                                                         
2072       C5=1.0723E-3                                                    
2073 !                                                                          
2074 !...ADJUST THE LIQUID WATER CONCENTRATIONS FROM FRESH CONDENSATE AND THA  
2075 !   BROUGHT UP FROM LOWER LEVELS TO AN AMOUNT THAT WOULD BE PRESENT IF N 
2076 !   LIQUID WATER HAD FROZEN THUS FAR...THIS IS NECESSARY BECAUSE THE    
2077 !   EXPRESSION FOR TEMP CHANGE IS MULTIPLIED BY THE FRACTION EQUAL TO TH       
2078 !   PARCEL TEMP DECREASE SINCE THE LAST MODEL LEVEL DIVIDED BY THE TOTAL      
2079 !   GLACIATION INTERVAL, SO THAT EFFECTIVELY THIS APPROXIMATELY ALLOWS A     
2080 !   AMOUNT OF LIQUID WATER TO FREEZE WHICH IS EQUAL TO THIS SAME FRACTIO    
2081 !   OF THE LIQUID WATER THAT WAS PRESENT BEFORE THE GLACIATION PROCESS W   
2082 !   INITIATED...ALSO, TO ALLOW THETAU TO CONVERT APPROXIMATELY LINEARLY   
2083 !   ITS VALUE WITH RESPECT TO ICE, WE NEED TO ALLOW A PORTION OF THE FRE 
2084 !   CONDENSATE TO CONTRIBUTE TO THE GLACIATION PROCESS; THE FRACTIONAL  
2085 !   AMOUNT THAT APPLIES TO THIS PORTION IS 1/2 OF THE FRACTIONAL AMOUNT     
2086 !   FROZEN OF THE "OLD" CONDENSATE BECAUSE THIS FRESH CONDENSATE IS ONLY   
2087 !   PRODUCED GRADUALLY OVER THE LAYER...NOTE THAT IN TERMS OF THE DYNAMI  
2088 !   OF THE PRECIPITATION PROCESS, IE. PRECIPITATION FALLOUT, THIS FRACTI 
2089 !   AMNT OF FRESH CONDENSATE HAS ALREADY BEEN INCLUDED IN THE ICE CATEGO
2090 !                                                                      
2091       QLQFRZ=QLIQ*EFFQ                                                
2092       QNEW=QNWFRZ*EFFQ*0.5                                           
2093       ESLIQ=ALIQ*EXP((BLIQ*TU-CLIQ)/(TU-DLIQ))                      
2094       ESICE=AICE*EXP((BICE*TU-CICE)/(TU-DICE))                     
2095       RLC=2.5E6-2369.276*(TU-273.16)                              
2096       RLS=2833922.-259.532*(TU-273.16)                           
2097       RLF=RLS-RLC                                               
2098       CCP=1005.7*(1.+0.89*QVAP)                                 
2099 !                                                             
2100 !  A = D(ES)/DT IS THAT CALCULATED FROM BUCK`S (1981) EMPIRICAL FORMULAS
2101 !  FOR SATURATION VAPOR PRESSURE...                                    
2102 !                                                                     
2103       A=(CICE-BICE*DICE)/((TU-DICE)*(TU-DICE))                       
2104       B=RLS*EP2/P                                                 
2105       C=A*B*ESICE/CCP                                               
2106       DQVAP=B*(ESLIQ-ESICE)/(RLS+RLS*C)-RLF*(QLQFRZ+QNEW)/(RLS+RLS/C)  
2107       DTFRZ=(RLF*(QLQFRZ+QNEW)+B*(ESLIQ-ESICE))/(CCP+A*B*ESICE)        
2108       TU1=TU                                                         
2109       QVAP1=QVAP                                                    
2110       TU=TU+FRC1*DTFRZ                                             
2111       QVAP=QVAP-FRC1*DQVAP                                        
2112       ES=QVAP*P/(EP2+QVAP)                                     
2113       ESLIQ=ALIQ*EXP((BLIQ*TU-CLIQ)/(TU-DLIQ))                           
2114       ESICE=AICE*EXP((BICE*TU-CICE)/(TU-DICE))                          
2115       RATIO2=(ESLIQ-ES)/(ESLIQ-ESICE)                                  
2116 !                                                                     
2117 !  TYPICALLY, RATIO2 IS VERY CLOSE TO (TTFRZ-TU)/(TTFRZ-TBFRZ), USUALLY    
2118 !  WITHIN 1% (USING TU BEFORE GALCIATION EFFECTS ARE APPLIED);  IF THE    
2119 !  INITIAL UPDRAFT TEMP IS BELOW TBFRZ AND RATIO2 IS STILL LESS THAN 1,  
2120 !  AN ADJUSTMENT TO FRC1 AND RATIO2 IS INTRODUCED SO THAT GLACIATION    
2121 !  EFFECTS ARE NOT UNDERESTIMATED; CONVERSELY, IF RATIO2 IS GREATER THAN    
2122 !  FRC1 IS ADJUSTED SO THAT GLACIATION EFFECTS ARE NOT OVERESTIMATED...    
2123 !                                                                        
2124       IF(IFLAG.GT.0.AND.RATIO2.LT.1)THEN                                
2125         FRC1=FRC1+(1.-RATIO2)                                          
2126         TU=TU1+FRC1*DTFRZ                                             
2127         QVAP=QVAP1-FRC1*DQVAP                                        
2128         RATIO2=1.                                                   
2129         IFLAG=1                                                    
2130         GOTO 20                                                   
2131       ENDIF                                                                  
2132       IF(RATIO2.GT.1.)THEN                                                  
2133         FRC1=FRC1-(RATIO2-1.)                                              
2134         FRC1=AMAX1(0.0,FRC1)                                              
2135         TU=TU1+FRC1*DTFRZ                                                
2136         QVAP=QVAP1-FRC1*DQVAP                                           
2137         RATIO2=1.                                                      
2138         IFLAG=1                                                       
2139       ENDIF                                                                   
2140 !                                                                            
2141 !  CALCULATE A HYBRID VALUE OF THETAU, ASSUMING THAT THE LATENT HEAT OF     
2142 !  VAPORIZATION/SUBLIMATION CAN BE ESTIMATED USING THE SAME WEIGHTING      
2143 !  FUNCTION AS THAT USED TO CALCULATE SATURATION VAPOR PRESSURE, CALCU-   
2144 !  LATE NEW LIQUID WATER AND ICE CONCENTRATIONS...                       
2145 !                                                                       
2146    20 RLC=XLV0-XLV1*TU                                                 
2147       RLS=XLS0-XLS1*TU                                                
2148       RL=RATIO2*RLS+(1.-RATIO2)*RLC                                  
2149       PI=(1.E5/P)**(0.2854*(1.-0.28*QVAP))                          
2150       THTEU=TU*PI*EXP(RL*QVAP*C5/TU*(1.+0.81*QVAP))               
2151       IF(IFLAG.EQ.1)THEN                                           
2152         QICE=QICE+FRC1*DQVAP+QLIQ                                
2153         QLIQ=0.                                                             
2154       ELSE                                                                   
2155         QICE=QICE+FRC1*(DQVAP+QLQFRZ)                                      
2156         QLIQ=QLIQ-FRC1*QLQFRZ                                             
2157       ENDIF                                                              
2158       QNWFRZ=0.                                                         
2159                                                                     
2160    END SUBROUTINE DTFRZNEW
2161 
2162 !-----------------------------------------------------------------------
2163 !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC    
2164 !  THIS SUBROUTINE INTEGRATES THE AREA UNDER THE CURVE IN THE GAUSSIAN     
2165 !  DISTRIBUTION...THE NUMERICAL APPROXIMATION TO THE INTEGRAL IS TAKEN F  
2166 !   HANDBOOK OF MATHEMATICAL FUNCTIONS WITH FORMULAS, GRAPHS AND MATHEMA 
2167 !  TABLES  ED. BY ABRAMOWITZ AND STEGUN, NAT L BUREAU OF STANDARDS APPLI
2168 !  MATHEMATICS SERIES.  JUNE, 1964., MAY, 1968.                        
2169 !                                     JACK KAIN                       
2170 !                                     7/6/89                         
2171 !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC     
2172 !***********************************************************************    
2173 !*****    GAUSSIAN TYPE MIXING PROFILE....******************************   
2174    SUBROUTINE PROF5(EQ,EE,UD)                                          
2175 !-----------------------------------------------------------------------
2176    IMPLICIT NONE
2177 !-----------------------------------------------------------------------
2178    REAL,         INTENT(IN   )   :: EQ
2179    REAL,         INTENT(INOUT)   :: EE,UD
2180    REAL ::       SQRT2P,A1,A2,A3,P,SIGMA,FE,X,Y,EY,E45,T1,T2,C1,C2
2181 
2182       DATA SQRT2P,A1,A2,A3,P,SIGMA,FE/2.506628,0.4361836,-0.1201676,    & 
2183       0.9372980,0.33267,0.166666667,0.202765151/                        
2184       X=(EQ-0.5)/SIGMA                                                 
2185       Y=6.*EQ-3.                                                      
2186       EY=EXP(Y*Y/(-2))                                               
2187       E45=EXP(-4.5)                                                 
2188       T2=1./(1.+P*ABS(Y))                                          
2189       T1=0.500498                                                 
2190       C1=A1*T1+A2*T1*T1+A3*T1*T1*T1                              
2191       C2=A1*T2+A2*T2*T2+A3*T2*T2*T2                             
2192       IF(Y.GE.0.)THEN                                                    
2193         EE=SIGMA*(0.5*(SQRT2P-E45*C1-EY*C2)+SIGMA*(E45-EY))-E45*EQ*EQ/2.
2194         UD=SIGMA*(0.5*(EY*C2-E45*C1)+SIGMA*(E45-EY))-E45*(0.5+EQ*EQ/2.-  &
2195            EQ)                                                         
2196       ELSE                                                            
2197         EE=SIGMA*(0.5*(EY*C2-E45*C1)+SIGMA*(E45-EY))-E45*EQ*EQ/2.    
2198         UD=SIGMA*(0.5*(SQRT2P-E45*C1-EY*C2)+SIGMA*(E45-EY))-E45*(0.5+EQ* & 
2199            EQ/2.-EQ)                                                     
2200       ENDIF                                                             
2201       EE=EE/FE                                                         
2202       UD=UD/FE                                                        
2203 
2204    END SUBROUTINE PROF5
2205 
2206 !-----------------------------------------------------------------------
2207    SUBROUTINE TPMIX(P,THTU,TU,QU,QLIQ,QICE,QNEWLQ,QNEWIC,RATIO2,RL,    & 
2208                     XLV0,XLV1,XLS0,XLS1,                               &
2209                     EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE        )      
2210 !-----------------------------------------------------------------------
2211    IMPLICIT NONE
2212 !-----------------------------------------------------------------------
2213    REAL,         INTENT(IN   )   :: XLV0,XLV1
2214    REAL,         INTENT(IN   )   :: P,THTU,RATIO2,RL,XLS0,             &
2215                                     XLS1,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,&
2216                                     CICE,DICE
2217    REAL,         INTENT(INOUT)   :: QU,QLIQ,QICE,TU,QNEWLQ,QNEWIC
2218    REAL    ::    ES,QS,PI,THTGS,F0,T1,T0,C5,RV,ESLIQ,ESICE,F1,DT,QNEW, &
2219                  DQ, QTOT,DQICE,DQLIQ,RLL,CCP
2220    INTEGER ::    ITCNT
2221 !-----------------------------------------------------------------------
2222 !                                                                       
2223 !...THIS SUBROUTINE ITERATIVELY EXTRACTS WET-BULB TEMPERATURE FROM EQUIV
2224 !   POTENTIAL TEMPERATURE, THEN CHECKS TO SEE IF SUFFICIENT MOISTURE IS
2225 !   AVAILABLE TO ACHIEVE SATURATION...IF NOT, TEMPERATURE IS ADJUSTED 
2226 !   ACCORDINGLY, IF SO, THE RESIDUAL LIQUID WATER/ICE CONCENTRATION IS
2227 !   DETERMINED...                                                    
2228 !                                                                   
2229       C5=1.0723E-3                                                 
2230       RV=461.5                                                    
2231 !                                                                
2232 !   ITERATE TO FIND WET BULB TEMPERATURE AS A FUNCTION OF EQUIVALENT POT 
2233 !   TEMP AND PRS, ASSUMING SATURATION VAPOR PRESSURE...RATIO2 IS THE DEG
2234 !   OF GLACIATION...                                                   
2235 !                                                                     
2236       IF(RATIO2.LT.1.E-6)THEN                                        
2237         ES=ALIQ*EXP((BLIQ*TU-CLIQ)/(TU-DLIQ))                       
2238         QS=EP2*ES/(P-ES)                                         
2239         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                        
2240         THTGS=TU*PI*EXP((3374.6525/TU-2.5403)*QS*(1.+0.81*QS))   
2241       ELSEIF(ABS(RATIO2-1.).LT.1.E-6)THEN                       
2242         ES=AICE*EXP((BICE*TU-CICE)/(TU-DICE))                  
2243         QS=EP2*ES/(P-ES)                                    
2244         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                   
2245         THTGS=TU*PI*EXP((3114.834/TU-0.278296)*QS*(1.+0.81*QS))          
2246       ELSE                                                              
2247         ESLIQ=ALIQ*EXP((BLIQ*TU-CLIQ)/(TU-DLIQ))                       
2248         ESICE=AICE*EXP((BICE*TU-CICE)/(TU-DICE))                      
2249         ES=(1.-RATIO2)*ESLIQ+RATIO2*ESICE                            
2250         QS=EP2*ES/(P-ES)                                          
2251         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                         
2252         THTGS=TU*PI*EXP(RL*QS*C5/TU*(1.+0.81*QS))                 
2253       ENDIF                                                      
2254       F0=THTGS-THTU                                             
2255       T1=TU-0.5*F0                                             
2256       T0=TU                                                   
2257       ITCNT=0                                                
2258    90 IF(RATIO2.LT.1.E-6)THEN                               
2259         ES=ALIQ*EXP((BLIQ*T1-CLIQ)/(T1-DLIQ))              
2260         QS=EP2*ES/(P-ES)                                 
2261         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                 
2262         THTGS=T1*PI*EXP((3374.6525/T1-2.5403)*QS*(1.+0.81*QS))    
2263       ELSEIF(ABS(RATIO2-1.).LT.1.E-6)THEN                        
2264         ES=AICE*EXP((BICE*T1-CICE)/(T1-DICE))                  
2265         QS=EP2*ES/(P-ES)                                    
2266         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                   
2267         THTGS=T1*PI*EXP((3114.834/T1-0.278296)*QS*(1.+0.81*QS))     
2268       ELSE                                                         
2269         ESLIQ=ALIQ*EXP((BLIQ*T1-CLIQ)/(T1-DLIQ))                  
2270         ESICE=AICE*EXP((BICE*T1-CICE)/(T1-DICE))                 
2271         ES=(1.-RATIO2)*ESLIQ+RATIO2*ESICE                       
2272         QS=EP2*ES/(P-ES)                                     
2273         PI=(1.E5/P)**(0.2854*(1.-0.28*QS))                    
2274         THTGS=T1*PI*EXP(RL*QS*C5/T1*(1.+0.81*QS))            
2275       ENDIF                                                 
2276       F1=THTGS-THTU                                        
2277       IF(ABS(F1).LT.0.01)GOTO 50         
2278       ITCNT=ITCNT+1                                               
2279       IF(ITCNT.GT.10)GOTO 50                                     
2280       DT=F1*(T1-T0)/(F1-F0)                                     
2281       T0=T1                                                   
2282       F0=F1                                                  
2283       T1=T1-DT                                              
2284       GOTO 90                                              
2285 !                                                         
2286 !   IF THE PARCEL IS SUPERSATURATED, CALCULATE CONCENTRATION OF FRESH    
2287 !   CONDENSATE...                                                       
2288 !                                                                      
2289    50 IF(QS.LE.QU)THEN                                                
2290         QNEW=QU-QS                                                   
2291         QU=QS                                                       
2292         GOTO 96                                                          
2293       ENDIF                                                             
2294 !                                                                      
2295 !   IF THE PARCEL IS SUBSATURATED, TEMPERATURE AND MIXING RATIO MUST BE  
2296 !   ADJUSTED...IF LIQUID WATER OR ICE IS PRESENT, IT IS ALLOWED TO EVAPO
2297 !   SUBLIMATE.                                                         
2298 !                                                                     
2299       QNEW=0.                                                        
2300       DQ=QS-QU                                                      
2301       QTOT=QLIQ+QICE                                               
2302 !                                                                 
2303 !   IF THERE IS ENOUGH LIQUID OR ICE TO SATURATE THE PARCEL, TEMP STAYS   
2304 !   WET BULB VALUE, VAPOR MIXING RATIO IS AT SATURATED LEVEL, AND THE MI 
2305 !   RATIOS OF LIQUID AND ICE ARE ADJUSTED TO MAKE UP THE ORIGINAL SATURA
2306 !   DEFICIT... OTHERWISE, ANY AVAILABLE LIQ OR ICE VAPORIZES AND APPROPR  
2307 !   ADJUSTMENTS TO PARCEL TEMP; VAPOR, LIQUID, AND ICE MIXING RATIOS ARE 
2308 !                                                                       
2309 !...NOTE THAT THE LIQ AND ICE MAY BE PRESENT IN PROPORTIONS SLIGHTLY DIF 
2310 !   THAN SUGGESTED BY THE VALUE OF RATIO2...CHECK TO MAKE SURE THAT LIQ 
2311 !   ICE CONCENTRATIONS ARE NOT REDUCED TO BELOW ZERO WHEN EVAPORATION/
2312 !   SUBLIMATION OCCURS...                                            
2313 !                                                                   
2314       IF(QTOT.GE.DQ)THEN                                           
2315         DQICE=0.0                                                 
2316         DQLIQ=0.0                                                
2317         QLIQ=QLIQ-(1.-RATIO2)*DQ                                
2318         IF(QLIQ.LT.0.)THEN                                     
2319           DQICE=0.0-QLIQ                                      
2320           QLIQ=0.0                                                   
2321         ENDIF                                                       
2322         QICE=QICE-RATIO2*DQ+DQICE                                  
2323         IF(QICE.LT.0.)THEN                                        
2324           DQLIQ=0.0-QICE                                         
2325           QICE=0.0                                              
2326         ENDIF                                                  
2327         QLIQ=QLIQ+DQLIQ                                       
2328         QU=QS                                                
2329         GOTO 96                                             
2330       ELSE                                                  
2331         IF(RATIO2.LT.1.E-6)THEN                             
2332           RLL=XLV0-XLV1*T1                                             
2333         ELSEIF(ABS(RATIO2-1.).LT.1.E-6)THEN                           
2334           RLL=XLS0-XLS1*T1                                           
2335         ELSE                                                        
2336           RLL=RL                                                   
2337         ENDIF                                                     
2338         CCP=1005.7*(1.+0.89*QU)                                            
2339         IF(QTOT.LT.1.E-10)THEN                                           
2340 !                                                                       
2341 !...IF NO LIQUID WATER OR ICE IS AVAILABLE, TEMPERATURE IS GIVEN BY:   
2342           T1=T1+RLL*(DQ/(1.+DQ))/CCP                                   
2343           GOTO 96                                                    
2344         ELSE                                                        
2345 !                                                                  
2346 !...IF SOME LIQ WATER/ICE IS AVAILABLE, BUT NOT ENOUGH TO ACHIEVE SATURA 
2347 !   THE TEMPERATURE IS GIVEN BY:                                        
2348           T1=T1+RLL*((DQ-QTOT)/(1+DQ-QTOT))/CCP                             
2349           QU=QU+QTOT                                                      
2350           QTOT=0.                                                        
2351         ENDIF                                                           
2352         QLIQ=0                                                         
2353         QICE=0.                                                       
2354       ENDIF                                                          
2355    96 TU=T1                                                             
2356       QNEWLQ=(1.-RATIO2)*QNEW                                          
2357       QNEWIC=RATIO2*QNEW                                             
2358       IF(ITCNT.GT.10)PRINT*,'***** NUMBER OF ITERATIONS IN TPMIX =',   & 
2359         ITCNT                                                       
2360 
2361    END SUBROUTINE TPMIX
2362 !-----------------------------------------------------------------------
2363    SUBROUTINE ENVIRTHT(P1,T1,Q1,THT1,R1,RL,                            & 
2364                        EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE     )
2365 !-----------------------------------------------------------------------
2366    IMPLICIT NONE
2367 !-----------------------------------------------------------------------
2368    REAL,  INTENT(IN   ) :: P1,T1,Q1,R1,RL,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,&
2369                            BICE,CICE,DICE      
2370    REAL,  INTENT(INOUT) :: THT1
2371    REAL:: T00,P00,C1,C2,C3,C4,C5,EE,TLOG,TDPT,TSAT,THT,TFPT,TLOGIC,    &
2372           TSATLQ,TSATIC
2373 
2374       DATA T00,P00,C1,C2,C3,C4,C5/273.16,1.E5,3374.6525,2.5403,3114.834,&
2375            0.278296,1.0723E-3/                                       
2376 !                                                                   
2377 !  CALCULATE ENVIRONMENTAL EQUIVALENT POTENTIAL TEMPERATURE...     
2378 !                                                                 
2379 
2380       IF(R1.LT.1.E-6)THEN                                        
2381         EE=Q1*P1/(EP2+Q1)                                     
2382         TLOG=ALOG(EE/ALIQ)                                     
2383         TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)                     
2384         TSAT=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(T1-T00))*(T1-TDPT)
2385         THT=T1*(P00/P1)**(0.2854*(1.-0.28*Q1))                        
2386         THT1=THT*EXP((C1/TSAT-C2)*Q1*(1.+0.81*Q1))                   
2387       ELSEIF(ABS(R1-1.).LT.1.E-6)THEN                               
2388         EE=Q1*P1/(EP2+Q1)                                        
2389         TLOG=ALOG(EE/AICE)                                        
2390         TFPT=(CICE-DICE*TLOG)/(BICE-TLOG)                        
2391         THT=T1*(P00/P1)**(0.2854*(1.-0.28*Q1))                  
2392         TSAT=TFPT-(.182+1.13E-3*(TFPT-T00)-3.58E-4*(T1-T00))*(T1-TFPT)
2393         THT1=THT*EXP((C3/TSAT-C4)*Q1*(1.+0.81*Q1))                   
2394       ELSE                                                          
2395         EE=Q1*P1/(EP2+Q1)                                        
2396         TLOG=ALOG(EE/ALIQ)                                        
2397         TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)                        
2398         TLOGIC=ALOG(EE/AICE)                                    
2399         TFPT=(CICE-DICE*TLOGIC)/(BICE-TLOGIC)                  
2400         THT=T1*(P00/P1)**(0.2854*(1.-0.28*Q1))                
2401         TSATLQ=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(T1-T00))*(T1-TDPT)                                                       
2402         TSATIC=TFPT-(.182+1.13E-3*(TFPT-T00)-3.58E-4*(T1-T00))*(T1-TFPT) 
2403         TSAT=R1*TSATIC+(1.-R1)*TSATLQ                                   
2404         THT1=THT*EXP(RL*Q1*C5/TSAT*(1.+0.81*Q1))                       
2405       ENDIF                                                           
2406 
2407    END SUBROUTINE ENVIRTHT
2408 
2409 !-----------------------------------------------------------------------
2410 !************************* TPDD.FOR ************************************  
2411 !   THIS SUBROUTINE ITERATIVELY EXTRACTS TEMPERATURE FROM EQUIVALENT   * 
2412 !   POTENTIAL TEMP.  IT IS DESIGNED FOR USE WITH DOWNDRAFT CALCULATIONS.
2413 !   IF RELATIVE HUMIDITY IS SPECIFIED TO BE LESS THAN 100%, PARCEL     * 
2414 !   TEMP, SPECIFIC HUMIDITY, AND LIQUID WATER CONTENT ARE ITERATIVELY  *
2415 !   CALCULATED.                                                        * 
2416 !***********************************************************************
2417       FUNCTION TPDD(P,THTED,TGS,RS,RD,RH,XLV0,XLV1,                    &        
2418                     EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE        ) 
2419 !-----------------------------------------------------------------------
2420    IMPLICIT NONE
2421 !-----------------------------------------------------------------------
2422    REAL,   INTENT(IN   )   :: XLV0,XLV1
2423    REAL,   INTENT(IN   )   :: P,THTED,TGS,RD,RH,EP2,ALIQ,BLIQ,         &
2424                               CLIQ,DLIQ,AICE,BICE,CICE,DICE 
2425    REAL,   INTENT(INOUT)   :: RS
2426    REAL    :: TPDD,ES,PI,THTGS,F0,T1,T0,CCP,F1,DT,RL,DSSDT,T1RH,RSRH
2427    INTEGER :: ITCNT
2428 !-----------------------------------------------------------------------
2429       ES=ALIQ*EXP((BLIQ*TGS-CLIQ)/(TGS-DLIQ))                        
2430       RS=EP2*ES/(P-ES)                                            
2431       PI=(1.E5/P)**(0.2854*(1.-0.28*RS))                           
2432       THTGS=TGS*PI*EXP((3374.6525/TGS-2.5403)*RS*(1.+0.81*RS))    
2433       F0=THTGS-THTED                                             
2434       T1=TGS-0.5*F0                                             
2435       T0=TGS                                                   
2436       CCP=1005.7                                               
2437 !                                                                          
2438 !...ITERATE TO FIND WET-BULB TEMPERATURE...                               
2439 !                                                                        
2440       ITCNT=0                                                           
2441    90 ES=ALIQ*EXP((BLIQ*T1-CLIQ)/(T1-DLIQ))                            
2442       RS=EP2*ES/(P-ES)                                              
2443       PI=(1.E5/P)**(0.2854*(1.-0.28*RS))                             
2444       THTGS=T1*PI*EXP((3374.6525/T1-2.5403)*RS*(1.+0.81*RS))        
2445       F1=THTGS-THTED                                               
2446       IF(ABS(F1).LT.0.05)GOTO 50                                  
2447       ITCNT=ITCNT+1                                              
2448       IF(ITCNT.GT.10)GOTO 50                                    
2449       DT=F1*(T1-T0)/(F1-F0)                                    
2450       T0=T1                                                
2451       F0=F1                                                   
2452       T1=T1-DT                                               
2453       GOTO 90                                               
2454    50 RL=XLV0-XLV1*T1                                        
2455 !                                                           
2456 !...IF RELATIVE HUMIDITY IS SPECIFIED TO BE LESS THAN 100%, ESTIMATE THE  
2457 !   TEMPERATURE AND MIXING RATIO WHICH WILL YIELD THE APPROPRIATE VALUE. 
2458 !                                                                       
2459       IF(RH.EQ.1.)GOTO 110                                             
2460       DSSDT=(CLIQ-BLIQ*DLIQ)/((T1-DLIQ)*(T1-DLIQ))                    
2461       DT=RL*RS*(1.-RH)/(CCP+RL*RH*RS*DSSDT)                           
2462       T1RH=T1+DT                                                    
2463       ES=RH*ALIQ*EXP((BLIQ*T1RH-CLIQ)/(T1RH-DLIQ))                        
2464       RSRH=EP2*ES/(P-ES)                                               
2465 !                                                                       
2466 !...CHECK TO SEE IF MIXING RATIO AT SPECIFIED RH IS LESS THAN ACTUAL   
2467 !...MIXING RATIO...IF SO, ADJUST TO GIVE ZERO EVAPORATION...          
2468 !                                                                    
2469       IF(RSRH.LT.RD)THEN                                            
2470         RSRH=RD                                                    
2471         T1RH=T1+(RS-RSRH)*RL/CCP                                   
2472       ENDIF                                                      
2473       T1=T1RH                                                   
2474       RS=RSRH                                                  
2475   110 TPDD=T1                                                 
2476       IF(ITCNT.GT.10)PRINT*,'***** NUMBER OF ITERATIONS IN TPDD = ',  & 
2477         ITCNT                                                         
2478 
2479    END FUNCTION TPDD
2480 
2481 !====================================================================
2482    SUBROUTINE kfinit(RTHCUTEN,RQVCUTEN,RQCCUTEN,RQRCUTEN,           &
2483                      RQICUTEN,RQSCUTEN,NCA,W0AVG,P_QI,P_QS,         &
2484                      P_FIRST_SCALAR,restart,allowed_to_read,        &
2485                      ids, ide, jds, jde, kds, kde,                  &
2486                      ims, ime, jms, jme, kms, kme,                  &
2487                      its, ite, jts, jte, kts, kte                   )
2488 !--------------------------------------------------------------------   
2489    IMPLICIT NONE
2490 !--------------------------------------------------------------------
2491    LOGICAL , INTENT(IN)           ::  restart, allowed_to_read
2492    INTEGER , INTENT(IN)           ::  ids, ide, jds, jde, kds, kde, &
2493                                       ims, ime, jms, jme, kms, kme, &
2494                                       its, ite, jts, jte, kts, kte
2495    INTEGER , INTENT(IN)           ::  P_QI,P_QS,P_FIRST_SCALAR
2496 
2497    REAL,     DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) ::       &
2498                                                           RTHCUTEN, &
2499                                                           RQVCUTEN, &
2500                                                           RQCCUTEN, &
2501                                                           RQRCUTEN, &
2502                                                           RQICUTEN, &
2503                                                           RQSCUTEN
2504 
2505    REAL ,   DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(OUT) :: W0AVG
2506 
2507    REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: NCA
2508 
2509    INTEGER :: i, j, k, itf, jtf, ktf
2510  
2511    jtf=min0(jte,jde-1)
2512    ktf=min0(kte,kde-1)
2513    itf=min0(ite,ide-1)
2514  
2515    IF(.not.restart)THEN
2516      DO j=jts,jtf
2517      DO k=kts,ktf
2518      DO i=its,itf
2519         RTHCUTEN(i,k,j)=0.
2520         RQVCUTEN(i,k,j)=0.
2521         RQCCUTEN(i,k,j)=0.
2522         RQRCUTEN(i,k,j)=0.
2523      ENDDO
2524      ENDDO
2525      ENDDO
2526 
2527      IF (P_QI .ge. P_FIRST_SCALAR) THEN
2528         DO j=jts,jtf
2529         DO k=kts,ktf
2530         DO i=its,itf
2531            RQICUTEN(i,k,j)=0.
2532         ENDDO
2533         ENDDO
2534         ENDDO
2535      ENDIF
2536 
2537      IF (P_QS .ge. P_FIRST_SCALAR) THEN
2538         DO j=jts,jtf
2539         DO k=kts,ktf
2540         DO i=its,itf
2541            RQSCUTEN(i,k,j)=0.
2542         ENDDO
2543         ENDDO
2544         ENDDO
2545      ENDIF
2546 
2547      DO j=jts,jtf
2548      DO i=its,itf
2549         NCA(i,j)=-100.
2550      ENDDO
2551      ENDDO
2552 
2553      DO j=jts,jtf
2554      DO k=kts,ktf
2555      DO i=its,itf
2556         W0AVG(i,k,j)=0.
2557      ENDDO
2558      ENDDO
2559      ENDDO
2560 
2561    ENDIF
2562 
2563    END SUBROUTINE kfinit
2564 
2565 !-------------------------------------------------------
2566 
2567 END MODULE module_cu_kf
2568