PageRenderTime 59ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/wrfv2_fire/phys/module_cu_kf.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 2669 lines | 1750 code | 115 blank | 804 comment | 3 complexity | 6487caca6f6ab8133f78922b148dcf06 MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. !WRF:MODEL_LAYER:PHYSICS
  2. !
  3. MODULE module_cu_kf
  4. USE module_wrf_error
  5. REAL , PARAMETER :: RAD = 1500.
  6. CONTAINS
  7. !-------------------------------------------------------------
  8. SUBROUTINE KFCPS( &
  9. ids,ide, jds,jde, kds,kde &
  10. ,ims,ime, jms,jme, kms,kme &
  11. ,its,ite, jts,jte, kts,kte &
  12. ,DT,KTAU,DX,CUDT,CURR_SECS,ADAPT_STEP_FLAG &
  13. ,CUDTACTTIME &
  14. ,rho &
  15. ,RAINCV,PRATEC,NCA &
  16. ,U,V,TH,T,W,QV,dz8w,Pcps,pi &
  17. ,W0AVG,XLV0,XLV1,XLS0,XLS1,CP,R,G,EP1 &
  18. ,EP2,SVP1,SVP2,SVP3,SVPT0 &
  19. ,STEPCU,CU_ACT_FLAG,warm_rain &
  20. ! optional arguments
  21. ,F_QV ,F_QC ,F_QR ,F_QI ,F_QS &
  22. ,RQVCUTEN,RQCCUTEN,RQRCUTEN,RQICUTEN,RQSCUTEN &
  23. ,RTHCUTEN &
  24. )
  25. !-------------------------------------------------------------
  26. IMPLICIT NONE
  27. !-------------------------------------------------------------
  28. INTEGER, INTENT(IN ) :: &
  29. ids,ide, jds,jde, kds,kde, &
  30. ims,ime, jms,jme, kms,kme, &
  31. its,ite, jts,jte, kts,kte
  32. INTEGER, INTENT(IN ) :: STEPCU
  33. LOGICAL, INTENT(IN ) :: warm_rain
  34. REAL, INTENT(IN ) :: XLV0,XLV1,XLS0,XLS1
  35. REAL, INTENT(IN ) :: CP,R,G,EP1,EP2
  36. REAL, INTENT(IN ) :: SVP1,SVP2,SVP3,SVPT0
  37. INTEGER, INTENT(IN ) :: KTAU
  38. REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
  39. INTENT(IN ) :: &
  40. U, &
  41. V, &
  42. W, &
  43. TH, &
  44. QV, &
  45. T, &
  46. dz8w, &
  47. Pcps, &
  48. rho, &
  49. pi
  50. !
  51. REAL, INTENT(IN ) :: DT, DX
  52. REAL, INTENT(IN ) :: CUDT
  53. REAL, INTENT(IN ) :: CURR_SECS
  54. LOGICAL,OPTIONAL, INTENT(IN ) :: ADAPT_STEP_FLAG
  55. REAL, INTENT (INOUT) :: CUDTACTTIME
  56. REAL, DIMENSION( ims:ime , jms:jme ), &
  57. INTENT(INOUT) :: &
  58. RAINCV &
  59. ,PRATEC &
  60. , NCA
  61. REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
  62. INTENT(INOUT) :: &
  63. W0AVG
  64. LOGICAL, DIMENSION( ims:ime , jms:jme ), &
  65. INTENT(INOUT) :: CU_ACT_FLAG
  66. !
  67. ! Optional arguments
  68. !
  69. REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
  70. OPTIONAL, &
  71. INTENT(INOUT) :: &
  72. RTHCUTEN &
  73. ,RQVCUTEN &
  74. ,RQCCUTEN &
  75. ,RQRCUTEN &
  76. ,RQICUTEN &
  77. ,RQSCUTEN
  78. !
  79. ! Flags relating to the optional tendency arrays declared above
  80. ! Models that carry the optional tendencies will provdide the
  81. ! optional arguments at compile time; these flags all the model
  82. ! to determine at run-time whether a particular tracer is in
  83. ! use or not.
  84. !
  85. LOGICAL, OPTIONAL :: &
  86. F_QV &
  87. ,F_QC &
  88. ,F_QR &
  89. ,F_QI &
  90. ,F_QS
  91. ! LOCAL VARS
  92. REAL, DIMENSION( kts:kte ) :: &
  93. U1D, &
  94. V1D, &
  95. T1D, &
  96. DZ1D, &
  97. QV1D, &
  98. P1D, &
  99. RHO1D, &
  100. W0AVG1D
  101. REAL, DIMENSION( kts:kte ):: &
  102. DQDT, &
  103. DQIDT, &
  104. DQCDT, &
  105. DQRDT, &
  106. DQSDT, &
  107. DTDT
  108. REAL :: TST,tv,PRS,RHOE,W0,SCR1,DXSQ,tmp
  109. INTEGER :: i,j,k,NTST,ICLDCK
  110. LOGICAL :: qi_flag , qs_flag
  111. ! adjustable time step changes
  112. REAL :: lastdt = -1.0
  113. REAL :: W0AVGfctr, W0fctr, W0den
  114. LOGICAL :: run_param , doing_adapt_dt , decided
  115. !----------------------------------------------------------------------
  116. !--- CALL CUMULUS PARAMETERIZATION
  117. !
  118. !...TST IS THE NUMBER OF TIME STEPS IN 10 MINUTES...W0AVG IS CLOSE TO A
  119. !...RUNNING MEAN VERTICAL VELOCITY...NOTE THAT IF YOU CHANGE TST, IT WIL
  120. !...CHANGE THE FREQUENCY OF THE CONVECTIVE INTITIATION CHECK (SEE BELOW)
  121. !...NOTE THAT THE ORDERING OF VERTICAL LAYERS MUST BE REVERSED FOR W0AVG
  122. !...BECAUSE THE ORDERING IS REVERSED IN KFPARA...
  123. !
  124. DXSQ=DX*DX
  125. qi_flag = .FALSE.
  126. qs_flag = .FALSE.
  127. IF ( PRESENT( F_QI ) ) qi_flag = f_qi
  128. IF ( PRESENT( F_QS ) ) qs_flag = f_qs
  129. !----------------------
  130. NTST=STEPCU
  131. TST=float(NTST*2)
  132. !----------------------
  133. ! NTST=NINT(1200./(DT*2.))
  134. ! TST=float(NTST)
  135. ! NTST=NINT(0.5*TST)
  136. ! NTST=MAX0(NTST,1)
  137. !----------------------
  138. ! ICLDCK=MOD(KTAU,NTST)
  139. !----------------------
  140. ! write(0,*) 'DT = ',DT,' KTAU = ',KTAU,' DX = ',DX
  141. ! write(0,*) 'CUDT = ',CUDT,' CURR_SECS = ',CURR_SECS
  142. ! write(0,*) 'ADAPT_STEP_FLAG = ',ADAPT_STEP_FLAG,' IDS = ',IDS
  143. ! write(0,*) 'STEPCU = ',STEPCU,' warm_rain = ',warm_rain
  144. ! write(0,*) 'F_QV = ',F_QV,' F_QC = ',F_QV
  145. ! write(0,*) 'F_QI = ',F_QI,' F_QS = ',F_QS
  146. ! write(0,*) 'F_QR = ',F_QR
  147. ! stop
  148. if (lastdt < 0) then
  149. lastdt = dt
  150. endif
  151. if (ADAPT_STEP_FLAG) then
  152. W0AVGfctr = 2 * MAX(CUDT*60,dt) - dt
  153. W0fctr = dt
  154. W0den = 2 * MAX(CUDT*60,dt)
  155. else
  156. W0AVGfctr = (TST-1.)
  157. W0fctr = 1.
  158. W0den = TST
  159. endif
  160. DO J = jts,jte
  161. DO K=kts,kte
  162. DO I= its,ite
  163. ! SCR1=-5.0E-4*G*rho(I,K,J)*(w(I,K,J)+w(I,K+1,J))
  164. ! TV=T(I,K,J)*(1.+EP1*QV(I,K,J))
  165. ! RHOE=Pcps(I,K,J)/(R*TV)
  166. ! W0=-101.9368*SCR1/RHOE
  167. W0=0.5*(w(I,K,J)+w(I,K+1,J))
  168. ! Old:
  169. !
  170. ! W0AVG(I,K,J)=(W0AVG(I,K,J)*(TST-1.)+W0)/TST
  171. ! New, to support adaptive time step:
  172. !
  173. W0AVG(I,K,J) = ( W0AVG(I,K,J) * W0AVGfctr + W0 * W0fctr ) / W0den
  174. ENDDO
  175. ENDDO
  176. ENDDO
  177. lastdt = dt
  178. ! Initialization for adaptive time step.
  179. doing_adapt_dt = .FALSE.
  180. IF ( PRESENT(adapt_step_flag) ) THEN
  181. IF ( adapt_step_flag ) THEN
  182. doing_adapt_dt = .TRUE.
  183. IF ( cudtacttime .EQ. 0. ) THEN
  184. cudtacttime = curr_secs + cudt*60.
  185. END IF
  186. END IF
  187. END IF
  188. ! Do we run through this scheme or not?
  189. ! Test 1: If this is the initial model time, then yes.
  190. ! KTAU=1
  191. ! Test 2: If the user asked for the cumulus to be run every time step, then yes.
  192. ! CUDT=0 or STEPCU=1
  193. ! Test 3: If not adaptive dt, and this is on the requested cumulus frequency, then yes.
  194. ! MOD(KTAU,NST)=0
  195. ! Test 4: If using adaptive dt and the current time is past the last requested activate cumulus time, then yes.
  196. ! CURR_SECS >= CUDTACTTIME
  197. ! If we do run through the scheme, we set the flag run_param to TRUE and we set the decided flag
  198. ! to TRUE. The decided flag says that one of these tests was able to say "yes", run the scheme.
  199. ! We only proceed to other tests if the previous tests all have left decided as FALSE.
  200. ! If we set run_param to TRUE and this is adaptive time stepping, we set the time to the next
  201. ! cumulus run.
  202. decided = .FALSE.
  203. run_param = .FALSE.
  204. IF ( ( .NOT. decided ) .AND. &
  205. ( ktau .EQ. 1 ) ) THEN
  206. run_param = .TRUE.
  207. decided = .TRUE.
  208. END IF
  209. IF ( ( .NOT. decided ) .AND. &
  210. ( ( cudt .EQ. 0. ) .OR. ( stepcu .EQ. 1 ) ) ) THEN
  211. run_param = .TRUE.
  212. decided = .TRUE.
  213. END IF
  214. IF ( ( .NOT. decided ) .AND. &
  215. ( .NOT. doing_adapt_dt ) .AND. &
  216. ( MOD(ktau,ntst) .EQ. 0 ) ) THEN
  217. run_param = .TRUE.
  218. decided = .TRUE.
  219. END IF
  220. IF ( ( .NOT. decided ) .AND. &
  221. ( doing_adapt_dt ) .AND. &
  222. ( curr_secs .GE. cudtacttime ) ) THEN
  223. run_param = .TRUE.
  224. decided = .TRUE.
  225. cudtacttime = curr_secs + cudt*60
  226. END IF
  227. IF (run_param) then
  228. DO J = jts,jte
  229. DO I= its,ite
  230. CU_ACT_FLAG(i,j) = .true.
  231. ENDDO
  232. ENDDO
  233. DO J = jts,jte
  234. DO I=its,ite
  235. ! if (i.eq. 110 .and. j .eq. 59 ) then
  236. ! write(0,*) 'nca = ',nca(i,j),' CU_ACT_FLAG = ',CU_ACT_FLAG(i,j)
  237. ! write(0,*) 'dt = ',dt,' ADAPT_STEP_FLAG = ',ADAPT_STEP_FLAG
  238. ! endif
  239. ! IF ( NINT(NCA(I,J)) .gt. 0 ) then
  240. IF ( NCA(I,J) .gt. 0.5*DT ) then
  241. CU_ACT_FLAG(i,j) = .false.
  242. ELSE
  243. DO k=kts,kte
  244. DQDT(k)=0.
  245. DQIDT(k)=0.
  246. DQCDT(k)=0.
  247. DQRDT(k)=0.
  248. DQSDT(k)=0.
  249. DTDT(k)=0.
  250. ENDDO
  251. RAINCV(I,J)=0.
  252. PRATEC(I,J)=0.
  253. !
  254. ! assign vars from 3D to 1D
  255. DO K=kts,kte
  256. U1D(K) =U(I,K,J)
  257. V1D(K) =V(I,K,J)
  258. T1D(K) =T(I,K,J)
  259. RHO1D(K) =rho(I,K,J)
  260. QV1D(K)=QV(I,K,J)
  261. P1D(K) =Pcps(I,K,J)
  262. W0AVG1D(K) =W0AVG(I,K,J)
  263. DZ1D(k)=dz8w(I,K,J)
  264. ENDDO
  265. !
  266. CALL KFPARA(I, J, &
  267. U1D,V1D,T1D,QV1D,P1D,DZ1D, &
  268. W0AVG1D,DT,DX,DXSQ,RHO1D, &
  269. XLV0,XLV1,XLS0,XLS1,CP,R,G, &
  270. EP2,SVP1,SVP2,SVP3,SVPT0, &
  271. DQDT,DQIDT,DQCDT,DQRDT,DQSDT,DTDT, &
  272. RAINCV,PRATEC,NCA, &
  273. warm_rain,qi_flag,qs_flag, &
  274. ids,ide, jds,jde, kds,kde, &
  275. ims,ime, jms,jme, kms,kme, &
  276. its,ite, jts,jte, kts,kte )
  277. IF ( PRESENT( RTHCUTEN ) .AND. PRESENT( RQVCUTEN ) ) THEN
  278. DO K=kts,kte
  279. RTHCUTEN(I,K,J)=DTDT(K)/pi(I,K,J)
  280. RQVCUTEN(I,K,J)=DQDT(K)
  281. ENDDO
  282. ENDIF
  283. IF( PRESENT(RQRCUTEN) .AND. PRESENT(RQCCUTEN) .AND. &
  284. PRESENT(F_QR) ) THEN
  285. IF ( F_QR ) THEN
  286. DO K=kts,kte
  287. RQRCUTEN(I,K,J)=DQRDT(K)
  288. RQCCUTEN(I,K,J)=DQCDT(K)
  289. ENDDO
  290. ELSE
  291. ! This is the case for Eta microphysics without 3d rain field
  292. DO K=kts,kte
  293. RQRCUTEN(I,K,J)=0.
  294. RQCCUTEN(I,K,J)=DQRDT(K)+DQCDT(K)
  295. ENDDO
  296. ENDIF
  297. ENDIF
  298. !...... QSTEN STORES GRAUPEL TENDENCY IF IT EXISTS, OTHERISE SNOW (V2)
  299. IF( PRESENT( RQICUTEN ) .AND. qi_flag )THEN
  300. DO K=kts,kte
  301. RQICUTEN(I,K,J)=DQIDT(K)
  302. ENDDO
  303. ENDIF
  304. IF( PRESENT ( RQSCUTEN ) .AND. qs_flag )THEN
  305. DO K=kts,kte
  306. RQSCUTEN(I,K,J)=DQSDT(K)
  307. ENDDO
  308. ENDIF
  309. !
  310. ENDIF
  311. ENDDO
  312. ENDDO
  313. ENDIF
  314. END SUBROUTINE KFCPS
  315. !-----------------------------------------------------------
  316. SUBROUTINE KFPARA (I, J, &
  317. U0,V0,T0,QV0,P0,DZQ,W0AVG1D, &
  318. DT,DX,DXSQ,rho, &
  319. XLV0,XLV1,XLS0,XLS1,CP,R,G, &
  320. EP2,SVP1,SVP2,SVP3,SVPT0, &
  321. DQDT,DQIDT,DQCDT,DQRDT,DQSDT,DTDT, &
  322. RAINCV,PRATEC,NCA, &
  323. warm_rain,qi_flag,qs_flag, &
  324. ids,ide, jds,jde, kds,kde, &
  325. ims,ime, jms,jme, kms,kme, &
  326. its,ite, jts,jte, kts,kte )
  327. !-----------------------------------------------------------
  328. IMPLICIT NONE
  329. !-----------------------------------------------------------
  330. INTEGER, INTENT(IN ) :: ids,ide, jds,jde, kds,kde, &
  331. ims,ime, jms,jme, kms,kme, &
  332. its,ite, jts,jte, kts,kte, &
  333. I,J
  334. LOGICAL, INTENT(IN ) :: warm_rain
  335. LOGICAL :: qi_flag, qs_flag
  336. !
  337. REAL, DIMENSION( kts:kte ), &
  338. INTENT(IN ) :: U0, &
  339. V0, &
  340. T0, &
  341. QV0, &
  342. P0, &
  343. rho, &
  344. DZQ, &
  345. W0AVG1D
  346. !
  347. REAL, INTENT(IN ) :: DT,DX,DXSQ
  348. !
  349. REAL, INTENT(IN ) :: XLV0,XLV1,XLS0,XLS1,CP,R,G
  350. REAL, INTENT(IN ) :: EP2,SVP1,SVP2,SVP3,SVPT0
  351. !
  352. REAL, DIMENSION( kts:kte ), INTENT(INOUT) :: &
  353. DQDT, &
  354. DQIDT, &
  355. DQCDT, &
  356. DQRDT, &
  357. DQSDT, &
  358. DTDT
  359. REAL, DIMENSION( ims:ime , jms:jme ), &
  360. INTENT(INOUT) :: RAINCV, &
  361. PRATEC, &
  362. NCA
  363. !
  364. !...DEFINE LOCAL VARIABLES...
  365. !
  366. REAL, DIMENSION( kts:kte ) :: &
  367. Q0,Z0,TV0,TU,TVU,QU,TZ,TVD, &
  368. QD,QES,THTES,TG,TVG,QG,WU,WD,W0,EMS,EMSD, &
  369. UMF,UER,UDR,DMF,DER,DDR,UMF2,UER2, &
  370. UDR2,DMF2,DER2,DDR2,DZA,THTA0,THETEE, &
  371. THTAU,THETEU,THTAD,THETED,QLIQ,QICE, &
  372. QLQOUT,QICOUT,PPTLIQ,PPTICE,DETLQ,DETIC, &
  373. DETLQ2,DETIC2,RATIO,RATIO2
  374. REAL, DIMENSION( kts:kte ) :: &
  375. DOMGDP,EXN,RHOE,TVQU,DP,RH,EQFRC,WSPD, &
  376. QDT,FXM,THTAG,THTESG,THPA,THFXTOP, &
  377. THFXBOT,QPA,QFXTOP,QFXBOT,QLPA,QLFXIN, &
  378. QLFXOUT,QIPA,QIFXIN,QIFXOUT,QRPA, &
  379. QRFXIN,QRFXOUT,QSPA,QSFXIN,QSFXOUT, &
  380. QL0,QLG,QI0,QIG,QR0,QRG,QS0,QSG
  381. REAL, DIMENSION( kts:kte+1 ) :: OMG
  382. REAL, DIMENSION( kts:kte ) :: RAINFB,SNOWFB
  383. ! LOCAL VARS
  384. REAL :: P00,T00,CV,B61,RLF,RHIC,RHBC,PIE, &
  385. TTFRZ,TBFRZ,C5,RATE
  386. REAL :: GDRY,ROCP,ALIQ,BLIQ, &
  387. CLIQ,DLIQ,AICE,BICE,CICE,DICE
  388. REAL :: FBFRC,P300,DPTHMX,THMIX,QMIX,ZMIX,PMIX, &
  389. ROCPQ,TMIX,EMIX,TLOG,TDPT,TLCL,TVLCL, &
  390. CPORQ,PLCL,ES,DLP,TENV,QENV,TVEN,TVBAR, &
  391. ZLCL,WKL,WABS,TRPPT,WSIGNE,DTLCL,GDT,WLCL,&
  392. TVAVG,QESE,WTW,RHOLCL,AU0,VMFLCL,UPOLD, &
  393. UPNEW,ABE,WKLCL,THTUDL,TUDL,TTEMP,FRC1, &
  394. QNEWIC,RL,R1,QNWFRZ,EFFQ,BE,BOTERM,ENTERM,&
  395. DZZ,WSQ,UDLBE,REI,EE2,UD2,TTMP,F1,F2, &
  396. THTTMP,QTMP,TMPLIQ,TMPICE,TU95,TU10,EE1, &
  397. UD1,CLDHGT,DPTT,QNEWLQ,DUMFDP,EE,TSAT, &
  398. THTA,P150,USR,VCONV,TIMEC,SHSIGN,VWS,PEF, &
  399. CBH,RCBH,PEFCBH,PEFF,PEFF2,TDER,THTMIN, &
  400. DTMLTD,QS,TADVEC,DPDD,FRC,DPT,RDD,A1, &
  401. DSSDT,DTMP,T1RH,QSRH,PPTFLX,CPR,CNDTNF, &
  402. UPDINC,AINCM2,DEVDMF,PPR,RCED,DPPTDF, &
  403. DMFLFS,DMFLFS2,RCED2,DDINC,AINCMX,AINCM1, &
  404. AINC,TDER2,PPTFL2,FABE,STAB,DTT,DTT1, &
  405. DTIME,TMA,TMB,TMM,BCOEFF,ACOEFF,QVDIFF, &
  406. TOPOMG,CPM,DQ,ABEG,DABE,DFDA,FRC2,DR, &
  407. UDFRC,TUC,QGS,RH0,RHG,QINIT,QFNL,ERR2, &
  408. RELERR,RLC,RLS,RNC,FABEOLD,AINCOLD,UEFRC, &
  409. DDFRC,TDC,DEFRC
  410. INTEGER :: KX,K,KL
  411. !
  412. INTEGER :: ISTOP,ML,L5,L4,KMIX,LOW, &
  413. LC,MXLAYR,LLFC,NLAYRS,NK, &
  414. KPBL,KLCL,LCL,LET,IFLAG, &
  415. KFRZ,NK1,LTOP,NJ,LTOP1, &
  416. LTOPM1,LVF,KSTART,KMIN,LFS, &
  417. ND,NIC,LDB,LDT,ND1,NDK, &
  418. NM,LMAX,NCOUNT,NOITR, &
  419. NSTEP,NTC
  420. !
  421. DATA P00,T00/1.E5,273.16/
  422. DATA CV,B61,RLF/717.,0.608,3.339E5/
  423. DATA RHIC,RHBC/1.,0.90/
  424. DATA PIE,TTFRZ,TBFRZ,C5/3.141592654,268.16,248.16,1.0723E-3/
  425. DATA RATE/0.01/
  426. !-----------------------------------------------------------
  427. GDRY=-G/CP
  428. ROCP=R/CP
  429. KL=kte
  430. KX=kte
  431. !
  432. ! ALIQ = 613.3
  433. ! BLIQ = 17.502
  434. ! CLIQ = 4780.8
  435. ! DLIQ = 32.19
  436. ALIQ = SVP1*1000.
  437. BLIQ = SVP2
  438. CLIQ = SVP2*SVPT0
  439. DLIQ = SVP3
  440. AICE = 613.2
  441. BICE = 22.452
  442. CICE = 6133.0
  443. DICE = 0.61
  444. !
  445. !...OPTION TO FEED CONVECTIVELY GENERATED RAINWATER
  446. !...INTO GRID-RESOLVED RAINWATER (OR SNOW/GRAUPEL)
  447. !...FIELD. 'FBFRC' IS THE FRACTION OF AVAILABLE
  448. !...PRECIPITATION TO BE FED BACK (0.0 - 1.0)...
  449. !
  450. FBFRC=0.0
  451. !
  452. !...SCHEME IS CALLED ONCE ON EACH NORTH-SOUTH SLICE, THE LOOP BELOW
  453. !...CHECKS FOR THE POSSIBILITY OF INITIATING PARAMETERIZED
  454. !...CONVECTION AT EACH POINT WITHIN THE SLICE
  455. !
  456. !...SEE IF IT IS NECESSARY TO CHECK FOR CONVECTIVE TRIGGERING AT THIS
  457. !...GRID POINT. IF NCA>0, CONVECTION IS ALREADY ACTIVE AT THIS POINT,
  458. !...JUST FEED BACK THE TENDENCIES SAVED FROM THE TIME WHEN CONVECTION
  459. !...WAS INITIATED. IF NCA<0, CONVECTION IS NOT ACTIVE
  460. !...AND YOU MAY WANT TO CHECK TO SEE IF IT CAN BE ACTIVATED FOR THE
  461. !...CURRENT CONDITIONS. IN PREVIOUS APLICATIONS OF THIS SCHEME,
  462. !...THE VARIABLE ICLDCK WAS USED BELOW TO SAVE TIME BY ONLY CHECKING
  463. !...FOR THE POSSIBILITY OF CONVECTIVE INITIATION EVERY 5 OR 10
  464. !...MINUTES...
  465. !
  466. ! 10 CONTINUE
  467. !SUE P300=1000.*(PSB(I,J)*A(KL)+PTOP-30.)+PP3D(I,J,KL)
  468. P300=P0(1)-30000.
  469. !
  470. !...PRESSURE PERTURBATION TERM IS ONLY DEFINED AT MID-POINT OF
  471. !...VERTICAL LAYERS...SINCE TOTAL PRESSURE IS NEEDED AT THE TOP AND
  472. !...BOTTOM OF LAYERS BELOW, DO AN INTERPOLATION...
  473. !
  474. !...INPUT A VERTICAL SOUNDING ... NOTE THAT MODEL LAYERS ARE NUMBERED
  475. !...FROM BOTTOM-UP IN THE KF SCHEME...
  476. !
  477. ML=0
  478. !SUE tmprpsb=1./PSB(I,J)
  479. !SUE CELL=PTOP*tmprpsb
  480. DO 15 K=1,KX
  481. !SUE P0(K)=1.E3*(A(NK)*PSB(I,J)+PTOP)+PP3D(I,J,NK)
  482. !
  483. !...IF Q0 IS ABOVE SATURATION VALUE, REDUCE IT TO SATURATION LEVEL...
  484. !
  485. ES=ALIQ*EXP((BLIQ*T0(K)-CLIQ)/(T0(K)-DLIQ))
  486. QES(K)=EP2*ES/(P0(K)-ES)
  487. Q0(K)=AMIN1(QES(K),QV0(K))
  488. Q0(K)=AMAX1(0.000001,Q0(K))
  489. QL0(K)=0.
  490. QI0(K)=0.
  491. QR0(K)=0.
  492. QS0(K)=0.
  493. TV0(K)=T0(K)*(1.+B61*Q0(K))
  494. RHOE(K)=P0(K)/(R*TV0(K))
  495. DP(K)=rho(k)*g*DZQ(k)
  496. !
  497. !...DZQ IS DZ BETWEEN SIGMA SURFACES, DZA IS DZ BETWEEN MODEL HALF LEVEL
  498. ! DP IS THE PRESSURE INTERVAL BETWEEN FULL SIGMA LEVELS...
  499. !
  500. IF(P0(K).GE.500E2)L5=K
  501. IF(P0(K).GE.400E2)L4=K
  502. IF(P0(K).GE.P300)LLFC=K
  503. IF(T0(K).GT.T00)ML=K
  504. 15 CONTINUE
  505. Z0(1)=.5*DZQ(1)
  506. DO 20 K=2,KL
  507. Z0(K)=Z0(K-1)+.5*(DZQ(K)+DZQ(K-1))
  508. DZA(K-1)=Z0(K)-Z0(K-1)
  509. 20 CONTINUE
  510. DZA(KL)=0.
  511. KMIX=1
  512. 25 LOW=KMIX
  513. IF(LOW.GT.LLFC)GOTO 325
  514. LC=LOW
  515. MXLAYR=0
  516. !
  517. !...ASSUME THAT IN ORDER TO SUPPORT A DEEP UPDRAFT YOU NEED A LAYER OF
  518. !...UNSTABLE AIR 50 TO 100 mb DEEP...TO APPROXIMATE THIS, ISOLATE A
  519. !...GROUP OF ADJACENT INDIVIDUAL MODEL LAYERS, WITH THE BASE AT LEVEL
  520. !...LC, SUCH THAT THE COMBINED DEPTH OF THESE LAYERS IS AT LEAST 60 mb..
  521. !
  522. NLAYRS=0
  523. DPTHMX=0.
  524. DO 63 NK=LC,KX
  525. DPTHMX=DPTHMX+DP(NK)
  526. NLAYRS=NLAYRS+1
  527. 63 IF(DPTHMX.GT.6.E3)GOTO 64
  528. GOTO 325
  529. 64 KPBL=LC+NLAYRS-1
  530. KMIX=LC+1
  531. 18 THMIX=0.
  532. QMIX=0.
  533. ZMIX=0.
  534. PMIX=0.
  535. DPTHMX=0.
  536. !
  537. !...FIND THE THERMODYNAMIC CHARACTERISTICS OF THE LAYER BY
  538. !...MASS-WEIGHTING THE CHARACTERISTICS OF THE INDIVIDUAL MODEL
  539. !...LAYERS...
  540. !
  541. DO 17 NK=LC,KPBL
  542. DPTHMX=DPTHMX+DP(NK)
  543. ROCPQ=0.2854*(1.-0.28*Q0(NK))
  544. THMIX=THMIX+DP(NK)*T0(NK)*(P00/P0(NK))**ROCPQ
  545. QMIX=QMIX+DP(NK)*Q0(NK)
  546. ZMIX=ZMIX+DP(NK)*Z0(NK)
  547. 17 PMIX=PMIX+DP(NK)*P0(NK)
  548. THMIX=THMIX/DPTHMX
  549. QMIX=QMIX/DPTHMX
  550. ZMIX=ZMIX/DPTHMX
  551. PMIX=PMIX/DPTHMX
  552. ROCPQ=0.2854*(1.-0.28*QMIX)
  553. TMIX=THMIX*(PMIX/P00)**ROCPQ
  554. EMIX=QMIX*PMIX/(EP2+QMIX)
  555. !
  556. !...FIND THE TEMPERATURE OF THE MIXTURE AT ITS LCL, PRESSURE
  557. !...LEVEL OF LCL...
  558. !
  559. TLOG=ALOG(EMIX/ALIQ)
  560. TDPT=(CLIQ-DLIQ*TLOG)/(BLIQ-TLOG)
  561. TLCL=TDPT-(.212+1.571E-3*(TDPT-T00)-4.36E-4*(TMIX-T00))*(TMIX- &
  562. TDPT)
  563. TLCL=AMIN1(TLCL,TMIX)
  564. TVLCL=TLCL*(1.+0.608*QMIX)
  565. CPORQ=1./ROCPQ
  566. PLCL=P00*(TLCL/THMIX)**CPORQ
  567. DO 29 NK=LC,KL
  568. KLCL=NK
  569. IF(PLCL.GE.P0(NK))GOTO 35
  570. 29 CONTINUE
  571. GOTO 325
  572. 35 K=KLCL-1
  573. DLP=ALOG(PLCL/P0(K))/ALOG(P0(KLCL)/P0(K))
  574. !
  575. !...ESTIMATE ENVIRONMENTAL TEMPERATURE AND MIXING RATIO AT THE LCL...
  576. !
  577. TENV=T0(K)+(T0(KLCL)-T0(K))*DLP
  578. QENV=Q0(K)+(Q0(KLCL)-Q0(K))*DLP
  579. TVEN=TENV*(1.+0.608*QENV)
  580. TVBAR=0.5*(TV0(K)+TVEN)
  581. ! ZLCL=Z0(K)+R*TVBAR*ALOG(P0(K)/PLCL)/G
  582. ZLCL=Z0(K)+(Z0(KLCL)-Z0(K))*DLP
  583. !
  584. !...CHECK TO SEE IF CLOUD IS BUOYANT USING FRITSCH-CHAPPELL TRIGGER
  585. !...FUNCTION DESCRIBED IN KAIN AND FRITSCH (1992)...W0AVG IS AN
  586. !...APROXIMATE VALUE FOR THE RUNNING-MEAN GRID-SCALE VERTICAL
  587. !...VELOCITY, WHICH GIVES SMOOTHER FIELDS OF CONVECTIVE INITIATION
  588. !...THAN THE INSTANTANEOUS VALUE...FORMULA RELATING TEMPERATURE
  589. !...PERTURBATION TO VERTICAL VELOCITY HAS BEEN USED WITH THE MOST
  590. !...SUCCESS AT GRID LENGTHS NEAR 25 km. FOR DIFFERENT GRID-LENGTHS,
  591. !...ADJUST VERTICAL VELOCITY TO EQUIVALENT VALUE FOR 25 KM GRID
  592. !...LENGTH, ASSUMING LINEAR DEPENDENCE OF W ON GRID LENGTH...
  593. !
  594. WKLCL=0.02*ZLCL/2.5E3
  595. WKL=(W0AVG1D(K)+(W0AVG1D(KLCL)-W0AVG1D(K))*DLP)*DX/25.E3- &
  596. WKLCL
  597. WABS=ABS(WKL)+1.E-10
  598. WSIGNE=WKL/WABS
  599. DTLCL=4.64*WSIGNE*WABS**0.33
  600. GDT=G*DTLCL*(ZLCL-Z0(LC))/(TV0(LC)+TVEN)
  601. WLCL=1.+.5*WSIGNE*SQRT(ABS(GDT)+1.E-10)
  602. IF(TLCL+DTLCL.GT.TENV)GOTO 45
  603. IF(KPBL.GE.LLFC)GOTO 325
  604. GOTO 25
  605. !
  606. !...CONVECTIVE TRIGGERING CRITERIA HAS BEEN SATISFIED...COMPUTE
  607. !...EQUIVALENT POTENTIAL TEMPERATURE
  608. !...(THETEU) AND VERTICAL VELOCITY OF THE RISING PARCEL AT THE LCL...
  609. !
  610. 45 THETEU(K)=TMIX*(1.E5/PMIX)**(0.2854*(1.-0.28*QMIX))* &
  611. EXP((3374.6525/TLCL-2.5403)*QMIX*(1.+0.81*QMIX))
  612. ES=ALIQ*EXP((TENV*BLIQ-CLIQ)/(TENV-DLIQ))
  613. TVAVG=0.5*(TV0(KLCL)+TENV*(1.+0.608*QENV))
  614. PLCL=P0(KLCL)*EXP(G/(R*TVAVG)*(Z0(KLCL)-ZLCL))
  615. QESE=EP2*ES/(PLCL-ES)
  616. GDT=G*DTLCL*(ZLCL-Z0(LC))/(TV0(LC)+TVEN)
  617. WLCL=1.+.5*WSIGNE*SQRT(ABS(GDT)+1.E-10)
  618. THTES(K)=TENV*(1.E5/PLCL)**(0.2854*(1.-0.28*QESE))* &
  619. EXP((3374.6525/TENV-2.5403)*QESE*(1.+0.81*QESE))
  620. WTW=WLCL*WLCL
  621. IF(WLCL.LT.0.)GOTO 25
  622. TVLCL=TLCL*(1.+0.608*QMIX)
  623. RHOLCL=PLCL/(R*TVLCL)
  624. !
  625. LCL=KLCL
  626. LET=LCL
  627. !
  628. !*******************************************************************
  629. ! *
  630. ! COMPUTE UPDRAFT PROPERTIES *
  631. ! *
  632. !*******************************************************************
  633. !
  634. !
  635. !...ESTIMATE INITIAL UPDRAFT MASS FLUX (UMF(K))...
  636. !
  637. WU(K)=WLCL
  638. AU0=PIE*RAD*RAD
  639. UMF(K)=RHOLCL*AU0
  640. VMFLCL=UMF(K)
  641. UPOLD=VMFLCL
  642. UPNEW=UPOLD
  643. !
  644. !...RATIO2 IS THE DEGREE OF GLACIATION IN THE CLOUD (0 TO 1),
  645. !...UER IS THE ENVIR ENTRAINMENT RATE, ABE IS AVAILABLE BUOYANT ENERGY,
  646. ! TRPPT IS THE TOTAL RATE OF PRECIPITATION PRODUCTION...
  647. !
  648. RATIO2(K)=0.
  649. UER(K)=0.
  650. ABE=0.
  651. TRPPT=0.
  652. TU(K)=TLCL
  653. TVU(K)=TVLCL
  654. QU(K)=QMIX
  655. EQFRC(K)=1.
  656. QLIQ(K)=0.
  657. QICE(K)=0.
  658. QLQOUT(K)=0.
  659. QICOUT(K)=0.
  660. DETLQ(K)=0.
  661. DETIC(K)=0.
  662. PPTLIQ(K)=0.
  663. PPTICE(K)=0.
  664. IFLAG=0
  665. KFRZ=LC
  666. !
  667. !...THE AMOUNT OF CONV AVAIL POT ENERGY (CAPE) IS CALCULATED WITH
  668. ! RESPECT TO UNDILUTE PARCEL ASCENT; EQ POT TEMP OF UNDILUTE
  669. ! PARCEL IS THTUDL, UNDILUTE TEMPERATURE IS GIVEN BY TUDL...
  670. !
  671. THTUDL=THETEU(K)
  672. TUDL=TLCL
  673. !
  674. !...TTEMP IS USED DURING CALCULATION OF THE LINEAR GLACIATION
  675. ! PROCESS; IT IS INITIALLY SET TO THE TEMPERATURE AT WHICH
  676. ! FREEZING IS SPECIFIED TO BEGIN. WITHIN THE GLACIATION
  677. ! INTERVAL, IT IS SET EQUAL TO THE UPDRAFT TEMP AT THE
  678. ! PREVIOUS MODEL LEVEL...
  679. !
  680. TTEMP=TTFRZ
  681. !
  682. !...ENTER THE LOOP FOR UPDRAFT CALCULATIONS...CALCULATE UPDRAFT TEMP,
  683. ! MIXING RATIO, VERTICAL MASS FLUX, LATERAL DETRAINMENT OF MASS AND
  684. ! MOISTURE, PRECIPITATION RATES AT EACH MODEL LEVEL...
  685. !
  686. DO 60 NK=K,KL-1
  687. NK1=NK+1
  688. RATIO2(NK1)=RATIO2(NK)
  689. !
  690. !...UPDATE UPDRAFT PROPERTIES AT THE NEXT MODEL LVL TO REFLECT
  691. ! ENTRAINMENT OF ENVIRONMENTAL AIR...
  692. !
  693. FRC1=0.
  694. TU(NK1)=T0(NK1)
  695. THETEU(NK1)=THETEU(NK)
  696. QU(NK1)=QU(NK)
  697. QLIQ(NK1)=QLIQ(NK)
  698. QICE(NK1)=QICE(NK)
  699. CALL TPMIX(P0(NK1),THETEU(NK1),TU(NK1),QU(NK1),QLIQ(NK1), &
  700. QICE(NK1),QNEWLQ,QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0, &
  701. XLS1,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)
  702. TVU(NK1)=TU(NK1)*(1.+0.608*QU(NK1))
  703. !
  704. !...CHECK TO SEE IF UPDRAFT TEMP IS WITHIN THE FREEZING INTERVAL,
  705. ! IF IT IS, CALCULATE THE FRACTIONAL CONVERSION TO GLACIATION
  706. ! AND ADJUST QNEWLQ TO REFLECT THE GRADUAL CHANGE IN THETAU
  707. ! SINCE THE LAST MODEL LEVEL...THE GLACIATION EFFECTS WILL BE
  708. ! DETERMINED AFTER THE AMOUNT OF CONDENSATE AVAILABLE AFTER
  709. ! PRECIP FALLOUT IS DETERMINED...TTFRZ IS THE TEMP AT WHICH
  710. ! GLACIATION BEGINS, TBFRZ THE TEMP AT WHICH IT ENDS...
  711. !
  712. IF(TU(NK1).LE.TTFRZ.AND.IFLAG.LT.1)THEN
  713. IF(TU(NK1).GT.TBFRZ)THEN
  714. IF(TTEMP.GT.TTFRZ)TTEMP=TTFRZ
  715. FRC1=(TTEMP-TU(NK1))/(TTFRZ-TBFRZ)
  716. R1=(TTEMP-TU(NK1))/(TTEMP-TBFRZ)
  717. ELSE
  718. FRC1=(TTEMP-TBFRZ)/(TTFRZ-TBFRZ)
  719. R1=1.
  720. IFLAG=1
  721. ENDIF
  722. QNWFRZ=QNEWLQ
  723. QNEWIC=QNEWIC+QNEWLQ*R1*0.5
  724. QNEWLQ=QNEWLQ-QNEWLQ*R1*0.5
  725. EFFQ=(TTFRZ-TBFRZ)/(TTEMP-TBFRZ)
  726. TTEMP=TU(NK1)
  727. ENDIF
  728. !
  729. ! CALCULATE UPDRAFT VERTICAL VELOCITY AND PRECIPITATION FALLOUT...
  730. !
  731. IF(NK.EQ.K)THEN
  732. BE=(TVLCL+TVU(NK1))/(TVEN+TV0(NK1))-1.
  733. BOTERM=2.*(Z0(NK1)-ZLCL)*G*BE/1.5
  734. ENTERM=0.
  735. DZZ=Z0(NK1)-ZLCL
  736. ELSE
  737. BE=(TVU(NK)+TVU(NK1))/(TV0(NK)+TV0(NK1))-1.
  738. BOTERM=2.*DZA(NK)*G*BE/1.5
  739. ENTERM=2.*UER(NK)*WTW/UPOLD
  740. DZZ=DZA(NK)
  741. ENDIF
  742. WSQ=WTW
  743. CALL CONDLOAD(QLIQ(NK1),QICE(NK1),WTW,DZZ,BOTERM,ENTERM,RATE, &
  744. QNEWLQ,QNEWIC,QLQOUT(NK1),QICOUT(NK1), G)
  745. !...IF VERT VELOCITY IS LESS THAN ZERO, EXIT THE UPDRAFT LOOP AND,
  746. ! IF CLOUD IS TALL ENOUGH, FINALIZE UPDRAFT CALCULATIONS...
  747. !
  748. IF(WTW.LE.0.)GOTO 65
  749. WABS=SQRT(ABS(WTW))
  750. WU(NK1)=WTW/WABS
  751. !
  752. ! UPDATE THE ABE FOR UNDILUTE ASCENT...
  753. !
  754. THTES(NK1)=T0(NK1)*(1.E5/P0(NK1))**(0.2854*(1.-0.28*QES(NK1))) &
  755. * &
  756. EXP((3374.6525/T0(NK1)-2.5403)*QES(NK1)*(1.+0.81* &
  757. QES(NK1)))
  758. UDLBE=((2.*THTUDL)/(THTES(NK)+THTES(NK1))-1.)*DZZ
  759. IF(UDLBE.GT.0.)ABE=ABE+UDLBE*G
  760. !
  761. ! DETERMINE THE EFFECTS OF CLOUD GLACIATION IF WITHIN THE SPECIFIED
  762. ! TEMP INTERVAL...
  763. !
  764. IF(FRC1.GT.1.E-6)THEN
  765. CALL DTFRZNEW(TU(NK1),P0(NK1),THETEU(NK1),QU(NK1),QLIQ(NK1), &
  766. QICE(NK1),RATIO2(NK1),TTFRZ,TBFRZ,QNWFRZ,RL,FRC1,EFFQ, &
  767. IFLAG,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE &
  768. ,CICE,DICE)
  769. ENDIF
  770. !
  771. ! CALL SUBROUTINE TO CALCULATE ENVIRONMENTAL EQUIVALENT POTENTIAL TEMP.
  772. ! WITHIN GLACIATION INTERVAL, THETAE MUST BE CALCULATED WITH RESPECT TO
  773. ! SAME DEGREE OF GLACIATION FOR ALL ENTRAINING AIR...
  774. !
  775. CALL ENVIRTHT(P0(NK1),T0(NK1),Q0(NK1),THETEE(NK1),RATIO2(NK1), &
  776. RL,EP2,ALIQ,BLIQ,CLIQ,DLIQ,AICE,BICE,CICE,DICE)
  777. !...REI IS THE RATE OF ENVIRONMENTAL INFLOW...
  778. !
  779. REI=VMFLCL*DP(NK1)*0.03/RAD
  780. TVQU(NK1)=TU(NK1)*(1.+0.608*QU(NK1)-QLIQ(NK1)-QICE(NK1))
  781. !
  782. !...IF CLOUD PARCELS ARE VIRTUALLY COLDER THAN THE ENVIRONMENT, NO
  783. ! ENTRAINMENT IS ALLOWED AT THIS LEVEL...
  784. !
  785. IF(TVQU(NK1).LE.TV0(NK1))THEN
  786. UER(NK1)=0.0
  787. UDR(NK1)=REI
  788. EE2=0.
  789. UD2=1.
  790. EQFRC(NK1)=0.
  791. GOTO 55
  792. ENDIF
  793. LET=NK1
  794. TTMP=TVQU(NK1)
  795. !
  796. !...DETERMINE THE CRITICAL MIXED FRACTION OF UPDRAFT AND ENVIRONMENTAL
  797. ! AIR FOR ESTIMATION OF ENTRAINMENT AND DETRAINMENT RATES...
  798. !
  799. F1=0.95
  800. F2=1.-F1
  801. THTTMP=F1*THETEE(NK1)+F2*THETEU(NK1)
  802. QTMP=F1*Q0(NK1)+F2*QU(NK1)
  803. TMPLIQ=F2*QLIQ(NK1)
  804. TMPICE=F2*QICE(NK1)
  805. CALL TPMIX(P0(NK1),THTTMP,TTMP,QTMP,TMPLIQ,TMPICE,QNEWLQ, &
  806. QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ, &
  807. DLIQ,AICE,BICE,CICE,DICE)
  808. TU95=TTMP*(1.+0.608*QTMP-TMPLIQ-TMPICE)
  809. IF(TU95.GT.TV0(NK1))THEN
  810. EE2=1.
  811. UD2=0.
  812. EQFRC(NK1)=1.0
  813. GOTO 50
  814. ENDIF
  815. F1=0.10
  816. F2=1.-F1
  817. THTTMP=F1*THETEE(NK1)+F2*THETEU(NK1)
  818. QTMP=F1*Q0(NK1)+F2*QU(NK1)
  819. TMPLIQ=F2*QLIQ(NK1)
  820. TMPICE=F2*QICE(NK1)
  821. CALL TPMIX(P0(NK1),THTTMP,TTMP,QTMP,TMPLIQ,TMPICE,QNEWLQ, &
  822. QNEWIC,RATIO2(NK1),RL,XLV0,XLV1,XLS0,XLS1,EP2,ALIQ,BLIQ,CLIQ, &
  823. DLIQ,AICE,BICE,CICE,DICE)
  824. TU10=TTMP*(1.+0.608*QTMP-TMPLIQ-TMPICE)
  825. IF(TU10.EQ.TVQU(NK1))THEN
  826. EE2=1.
  827. UD2=0.
  828. EQFRC(NK1)=1.0
  829. GOTO 50
  830. ENDIF
  831. EQFRC(NK1)=(TV0(NK1)-TVQU(NK1))*F1/(TU10-TVQU(NK1))
  832. EQFRC(NK1)=AMAX1(0.0,EQFRC(NK1))
  833. EQFRC(NK1)=AMIN1(1.0,EQFRC(NK1))
  834. IF(EQFRC(NK1).EQ.1)THEN
  835. EE2=1.
  836. UD2=0.
  837. GOTO 50
  838. ELSEIF(EQFRC(NK1).EQ.0.)THEN
  839. EE2=0.
  840. UD2=1.
  841. GOTO 50
  842. ELSE
  843. !
  844. !...SUBROUTINE PROF5 INTEGRATES OVER THE GAUSSIAN DIST TO DETERMINE THE
  845. ! FRACTIONAL ENTRAINMENT AND DETRAINMENT RATES...
  846. !
  847. CALL PROF5(EQFRC(NK1),EE2,UD2)
  848. ENDIF
  849. !
  850. 50 IF(NK.EQ.K)THEN
  851. EE1=1.
  852. UD1=0.
  853. ENDIF
  854. !
  855. !...NET ENTRAINMENT AND DETRAINMENT RATES ARE GIVEN BY THE AVERAGE
  856. ! FRACTIONAL VALUES IN THE LAYER...
  857. !
  858. UER(NK1)=0.5*REI*(EE1+EE2)
  859. UDR(NK1)=0.5*REI*(UD1+UD2)
  860. !
  861. !...IF THE CALCULATED UPDRAFT DETRAINMENT RATE IS GREATER THAN THE TOTAL
  862. ! UPDRAFT MASS FLUX, ALL CLOUD MASS DETRAINS, EXIT UPDRAFT CALCULATION
  863. !
  864. 55 IF(UMF(NK)-UDR(NK1).LT.10.)THEN
  865. !
  866. !...IF THE CALCULATED DETRAINED MASS FLUX IS GREATER THAN THE TOTAL
  867. ! UPDRAFT FLUX, IMPOSE TOTAL DETRAINMENT OF UPDRAFT MASS AT THE
  868. ! PREVIOUS MODEL
  869. !

Large files files are truncated, but you can click here to view the full file