!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
*** S/P FCPARA2
#include "phy_macros_f.h"
SUBROUTINE FCPARA2 (IX,KX,PTOP,FACTDT,DELT, 1,9
$ NCA,PSB,TP1,QP1,CLOUDS,UB,VB,
$ SCR3,AREAUP,DTDT,DQDT,RAINCV,A,
$ SIGMA,DXDY,FCPMASK,ICONVEC,
$ ZCRR)
#include "impnone.cdk"
*
C
C
INTEGER IX,KX
INTEGER NCA(IX), ICONVEC
REAL PTOP,PSB(IX),TP1(IX,KX)
REAL QP1(IX,KX)
REAL CLOUDS(IX,KX)
REAL UB(IX,KX),VB(IX,KX)
REAL AREAUP(IX,KX)
REAL DTDT(IX,KX),DQDT(IX,KX),RAINCV(IX)
REAL DXDY(IX)
REAL ZCRR(IX)
C
C
REAL A(IX,KX),SIGMA(IX,KX+1),FACTDT,DELT,SCR3(IX,KX)
REAL FCPMASK(IX)
C
C
*
*Author
* Fritsch, Chappell and Zhang (Sept 25, 1986)
*
*Revision
* 001 Stephane Belair (1990)
* Incorporation into the RFE model, coupling to
* the subroutine INTERFC
* 002 Stephane Belair (July 1994)
* Incorporation into the official physics library
* 003 B. Bilodeau (Nov 95) - Optimization
* 004 Bernard Bilodeau (Dec 1995) - Cloud fraction diagnostic
* and fcpmask
* 005 S. Belair (Jan 1998) - Correct NCA bug
* 006 S. Belair (Feb 1998) - Adjust the trigger parameter WKLCL
* 007 A. Methot (May 1999) - Correct bug when NCA < 0
* 008 B. Bilodeau (Jan 2001) - Automatic arrays
* 009 M. Lepine (March 2003) - CVMG... Replacements
*
*Object
* to compute convective effects using modified
* Fritsch/Chappell cumulus scheme. (MKS units)
*
*Arguments
*
* - Input -
* IX X dimension of the model grid (NI)
* JX Y dimension of the model grid (NJ)
* KX Z dimension of the model grid (NK)
* J row number
* PTOP the pressure at the top of the atmosphere
* FACTDT factor (1 or 2) for time integration scheme
* (see s/r param)
* DELT length of timestep in seconds
*
* - Input/Output -
* NCA counter for whether convection is activated
*
* - Input -
* PSB the pressure at the bottom of the atmosphere
* TP1 temperature at time (T+1)
* QP1 specific humidity at time (T+1)
* CLOUDS cloud fraction
* UB wind in the X direction at time (T+1)
* VB wind in the Y direction at time (T+1)
* SCR3 vertical velocity at time (T+1)
*
* - Input/Output -
* AREAUP area of updraft
* DTDT convective effects of heating
* DQDT convective effects of moistening
* RAINCV rainfall amount
*
* - Input -
* A where all the variables are defined except
* for SIGMA (corresponding to the levels of the
* RFE model.
* SIGMA where SIGMA is defined
* DXDY area of each tile of the grid
* FCPMASK switch to indicate which convection scheme is used for a
* given point for CONVEC="FCP" or CONVEC="FCPKUO" options
* = 2 FCP yes
* KUO no
* = 1 FCP possible
* KUO no
* = 0 FCP no
* KUO yes
* = -1 FCP possible
* KUO yes
* = -2 FCP yes
* KUO yes
* ICONVEC switch that controls the convection options
* = 5 for FCP
* =11 for FCPKUO
*
* - Output -
* ZCRR convective rainfall rate
*
*
*
*Notes
* References
* Fritsch and Chappell (1980), J. Atmos. Sci., 1722-1733.
* Zhang and Fritsch (1986), J. Atmos. Sci., 1913-1943.
*
**
C
INTEGER NCAPRE
REAL DTFRZ,TP
C
INTEGER I,KL,NK,KFIN,L5,L4,LLFC,ILXM
INTEGER LC,LOW,LB,LC1,KLCL,K,LCL,LET,KLM,LTOP,NK1,LTOP1
INTEGER LTOPM1,LVF,NIC,NLFS,NLL,IFLG,IFLAG,LFS,LFSML
INTEGER ML,LDB,ND,ND1,NUMAX,KLEVAP,NCOUNT,N1,NN
INTEGER NSTEP,N,NTC,NJ,NKP,KPBL
C
C
REAL P300,B61,R,CELL,ROVG,POO,ROVCP,WT,TMIX,QMIX
REAL PMIX,ZMIX,RLL,C1,C2,C3,C4,TDPT,RV,TLCL,ZLCL,GDRY
REAL DZLDZA,TENV,WKLCL,AUMAX
REAL WKL,WABS,WSIGNE,DTLCL,THATA,TVEN,GDT,WLCL,WTW,BU
REAL CP,SDQU,ABE,FREZ,WGLCL,TICE,D273,ES,QS
REAL BE,WBE,G,BVRT,CLDHT,ACP,CLIQ,P165,TRCP,DWU,ZTOP
REAL DDT,ZETL,AUO,WO,WGHT
REAL USR,VCONV,TIMEC,DT2,DTIME,SHSIGN,VWS,PEF,CBH,RCBH
REAL PEFCBH,PEFF,CPR,RCE,RCED,DTMELT,TDER,BEG
REAL THBAR,RHIC,RHCLD,QSD,QPRME,DM,WGTDT,ADU,AUMX,AINC
REAL AER,CPRN,DFBEM,DFBEP,AINCP,AINCM,DXSQD,CRAD,CRAE
REAL DXSQ,DTT,DTMEA,DTRNM,DMEA,CEV,EVAP,ABEG,TSU,QSU
REAL TGU,DFRZ,TSV,TGV,QSV,DABE,FABE,DZETL,TGETL
REAL T2ETL,DTT1,TO,AGO,CPOR,CPV,CV,RHBC
REAL DPMIX
REAL DTHETA,TOTALT,TOTALQ,THETAM,Q0M
REAL TEMPO
CC
C
EXTERNAL DTFRZ,TP
C
*
************************************************************************
* AUTOMATIC ARRAYS
************************************************************************
*
AUTOMATIC ( P0 , REAL , (KX) )
AUTOMATIC ( Z0 , REAL , (KX) )
AUTOMATIC ( T0 , REAL , (KX) )
AUTOMATIC ( Q0 , REAL , (KX) )
AUTOMATIC ( U0 , REAL , (KX) )
AUTOMATIC ( V0 , REAL , (KX) )
AUTOMATIC ( W0 , REAL , (KX) )
AUTOMATIC ( TU , REAL , (KX) )
AUTOMATIC ( QU , REAL , (KX) )
AUTOMATIC ( UU , REAL , (KX) )
AUTOMATIC ( VU , REAL , (KX) )
AUTOMATIC ( WU , REAL , (KX) )
AUTOMATIC ( RU , REAL , (KX) )
AUTOMATIC ( AU , REAL , (KX) )
AUTOMATIC ( UMF , REAL , (KX) )
AUTOMATIC ( TZ , REAL , (KX) )
AUTOMATIC ( QD , REAL , (KX) )
AUTOMATIC ( UD , REAL , (KX) )
AUTOMATIC ( VD , REAL , (KX) )
AUTOMATIC ( WD , REAL , (KX) )
AUTOMATIC ( RD , REAL , (KX) )
AUTOMATIC ( AD , REAL , (KX) )
AUTOMATIC ( DMF , REAL , (KX) )
AUTOMATIC ( TE , REAL , (KX) )
AUTOMATIC ( QE , REAL , (KX) )
AUTOMATIC ( UE , REAL , (KX) )
AUTOMATIC ( VE , REAL , (KX) )
AUTOMATIC ( WE , REAL , (KX) )
AUTOMATIC ( RO , REAL , (KX) )
AUTOMATIC ( AE , REAL , (KX) )
AUTOMATIC ( PPI , REAL , (KX) )
AUTOMATIC ( TG , REAL , (KX) )
AUTOMATIC ( QG , REAL , (KX) )
AUTOMATIC ( UG , REAL , (KX) )
AUTOMATIC ( VG , REAL , (KX) )
AUTOMATIC ( ZA , REAL , (KX) )
AUTOMATIC ( ZB , REAL , (KX) )
AUTOMATIC ( BM , REAL , (KX) )
AUTOMATIC ( EX , REAL , (KX) )
AUTOMATIC ( FT , REAL , (KX) )
AUTOMATIC ( FQ , REAL , (KX) )
AUTOMATIC ( FU , REAL , (KX) )
AUTOMATIC ( FV , REAL , (KX) )
AUTOMATIC ( RL , REAL , (KX) )
AUTOMATIC ( ALF , REAL , (KX) )
AUTOMATIC ( BTA , REAL , (KX) )
AUTOMATIC ( DZQ , REAL , (KX) )
AUTOMATIC ( DZA , REAL , (KX) )
AUTOMATIC ( WPD , REAL , (KX) )
AUTOMATIC ( WGT , REAL , (KX) )
AUTOMATIC ( DQU , REAL , (KX) )
AUTOMATIC ( DQD , REAL , (KX) )
AUTOMATIC ( DET , REAL , (KX) )
AUTOMATIC ( TVG , REAL , (KX) )
AUTOMATIC ( TVU , REAL , (KX) )
AUTOMATIC ( TVD , REAL , (KX) )
AUTOMATIC ( THE , REAL , (KX) )
AUTOMATIC ( THM , REAL , (KX) )
AUTOMATIC ( TDP , REAL , (KX) )
AUTOMATIC ( TST , REAL , (KX) )
AUTOMATIC ( DM2 , REAL , (KX) )
AUTOMATIC ( AU2 , REAL , (KX) )
AUTOMATIC ( AD2 , REAL , (KX) )
AUTOMATIC ( WGO , REAL , (KX) )
AUTOMATIC ( FBEA , REAL , (KX) )
AUTOMATIC ( ACIN , REAL , (KX) )
AUTOMATIC ( THETA , REAL , (KX) )
*
************************************************************************
*
*
*
* Adjustable parameters...
*
* WKLCL = trigger function parameter
WKLCL = 0.07
*
* BVRT = non-hydrostatic effect on the calculation of the vertical
* motion of the convective updraft
BVRT = 1. / (1.+0.5)
*
* BU = entrainment parameter
BU = 6.E-5
*
*
*
C1=2.5E6
C2=2.37E3
C3=2.83E6
C4=259.5
CPV=1952.0
CV=717.0
RV=461.0
POO=1.0E5
WO=1.0
RHIC=1.0
RHBC=0.95
TO=273.16
B61=0.608
TICE=248.0
C
C DEFINITION OF SOME IMPORTANT PARAMETERS AND
C VARIABLES
C
KL=KX
KLM = KL-1
R = 287.05
ROVCP = .2854912
ILXM = IX-2
CP = 1005.46
D273 = 1.0/273.16
G = 9.80616
DT2 = FACTDT*DELT
ROVG = R/G
GDRY = -G/CP
CPOR = CP/R
C
*
* Invert vertically updraft area
kfin=kx/2
*
do k=1,kfin
*
nk = kx-k+1
*
do i=1,ix
tempo = areaup(i,k)
areaup(i,k ) = areaup(i,nk)
areaup(i,nk) = tempo
end do
*
end do
*
17 continue
*
C...INPUT DATA ARE IN A FORM OF NORTH-SOUTH SLICE.
C
DO 650 I = 1,IX
*
*
*
DXSQ = DXDY(I)
AUO = 0.01*DXSQ
CRAD = 0.9*DXSQ
CRAE = 0.1*DXSQ
AGO = 1.0/DXSQ
C
C CHECK THE NECESSITY OF COMPUTING THE CONVECTIVE EFFECTS.
C IF CONVECTION IS STILL ACTIVE, GO TO 1000. THE SCHEME CHECKS FOR
C THE INITIATING POSSIBILITY OF CONVECTION AT NEIGHBOURING POINTS OF
C CONVECTIVE SYSTEMS EVERY TIME STEP, BUT OTHER POINTS EVERY 10-15
C MINUTES.
C
C
NCAPRE = NCA(I)
*
*
**************************************************
IF (ICONVEC.EQ.5) THEN
* FRITSCH-CHAPPELL ONLY. ALWAYS PERFORM CALCULATIONS.
GO TO 10
*
ELSE IF (ICONVEC.EQ.11) THEN
* KUO AND FCP. PERFORM CALCULATIONS ON REQUEST ONLY.
*
IF ( NINT( FCPMASK(I) ).EQ.0 ) THEN
* NEVER PERFORM CALCULATIONS AT THAT POINT
GOTO 650
ELSE IF (ABS( NINT(FCPMASK(I)) ).EQ.2 ) THEN
* FORCE CALCULATIONS AT THAT POINT
GOTO 10
ELSE IF (ABS( NINT(FCPMASK(I)) ).EQ.1 .AND.
% NCA(I).GT.0) THEN
* CONVECTION IS ALREADY TAKING PLACE AT THAT POINT
GOTO 10
ENDIF
*
GOTO 650
*
ENDIF
*
**************************************************
*
10 P300 = 1000.*(PSB(I)*A(I,KL)+PTOP-30.)
C
C...INPUT A VERTICAL SOUNDING
C
DO 20 K = 1, KX
NK = KX-K+1
P0(K) = 1.E3*(A(I,NK)*PSB(I)+PTOP)
*...USE VALUES OF T, Q, U, V AND THETA AT TIME LEVEL +
T0(K) = TP1(I,NK)
Q0(K) = QP1(I,NK)
Q0(K) = AMAX1( Q0(K),1.0E-10 )
THETA(K) = T0(K)*( 1.0E5/P0(K) )**0.286
U0(K) = UB(I,NK)
V0(K) = VB(I,NK)
20 CONTINUE
*
*...TO COMPENSATE FOR THE DEFFICIENCY OF THE TKE BOUNDARY
* LAYER FOR WELL MIXED LAYER...
*
KPBL = 1
*
*...FIND THE FIRST LAYER OF THE THETA INVERSION = KPBL
*
DO 23 K=2,KX-1
DTHETA = THETA(K+1)-THETA(K)
IF (DTHETA.LT.0.0) KPBL=K+1
IF (DTHETA.GE.0.0) GOTO 26
23 CONTINUE
26 IF (KPBL.LE.2) GOTO 34
*
*...MIX THETA AND Q0 IF KPBL > 1
*
TOTALQ = 0.0
TOTALT = 0.0
*
DO 29 K=2,KPBL
TOTALT = TOTALT + THETA(K)
TOTALQ = TOTALQ + Q0(K)
29 CONTINUE
*
THETAM = TOTALT / FLOAT(KPBL-1)
Q0M = TOTALQ / FLOAT(KPBL-1)
*
DO 31 K=1,KPBL
T0(K) = THETA(KPBL)*( P0(K)/1.0E5 )**0.286
Q0(K) = Q0M
31 CONTINUE
34 CONTINUE
*
DO 32 K=1,KX
NK = KX-K+1
TVG(K) = T0(K)*(1.+B61*Q0(K))
RO(K) = P0(K)/(R*TVG(K))
W0(K) = -101.9368*SCR3(I,NK)/RO(K)
CELL = PTOP/PSB(I)
DZQ(K) = ROVG*TVG(K)*ALOG( (SIGMA(I,NK+1)+
+ CELL)/(SIGMA(I,NK)+CELL) )
PPI(K) = (POO/P0(K))**ROVCP
IF (P0(K).GE.500E2) L5 = K
IF (P0(K).GE.400E2) L4 = K
IF (P0(K).GE.P300) LLFC = K
32 CONTINUE
C
*
*
* WE VERIFY THE COUNTER 'NCA'
*
* IF NCA > 0 => CONVECTION IS ALREADY ACTIVITED AND THE
* TENDENCIES DTDT AND DQDT ARE NOT CHANGED
*
IF (NCA(I).GT.0) THEN
NCA(I) = NCA(I) - 1
*
ZCRR(I) = 1000.*RAINCV(I)/(DELT*100.)
*
GOTO 650
ENDIF
*
DO 620 K=1,KX
*
DTDT (I,K) = 0.0
DQDT (I,K) = 0.0
AREAUP(I,K) = 0.0
*
620 CONTINUE
*
RAINCV(I) = 0.0
*
Z0(1) = .5*DZQ(1)
DO 30 K = 2, KL
Z0(K) = Z0(K-1)+.5*(DZQ(K)+DZQ(K-1))
DZA(K-1) = Z0(K)-Z0(K-1)
30 CONTINUE
DZA(KL)=DZQ(KL)
LC = 1
40 LOW = LC+1
IF (LOW.GT.LLFC) GOTO 650
C
C BEGINING WITH THE LOWEST LAYER(NOT INCLUDING THE SURFACE LAYER
C IF THE LAYER IS LESS THAN 20-30M), EVERY TWO LAYERS(50 MB) ARE
C MIXED, LIFTED TO ITS LCL AND CHECKED FOR BOUYANCY UNTIL REACHING
C THE TOP OF THE LOWEST 300-MB LAYER(P300).
C
DO 70 LB = LOW, LLFC
LC = LB
LC1 = LB+1
WT = 1./(DZQ(LC)+DZQ(LC1))
TMIX = (T0(LC)*DZQ(LC)+T0(LC1)*DZQ(LC1))*WT
QMIX = (Q0(LC)*DZQ(LC)+Q0(LC1)*DZQ(LC1))*WT
QMIX = AMAX1(QMIX,1.0E-10)
PMIX = (P0(LC)*DZQ(LC)+P0(LC1)*DZQ(LC1))*WT
ZMIX = (Z0(LC)*DZQ(LC)+Z0(LC1)*DZQ(LC1))*WT
DPMIX = P0(LC) - P0(LC1)
IF (DPMIX.LT.60.E2) THEN
WT=1./( DZQ(LC)+DZQ(LC1)+DZQ(LC1+1) )
TMIX=( T0(LC)*DZQ(LC) + T0(LC1)*DZQ(LC1)
1 + T0(LC1+1)*DZQ(LC1+1) )*WT
QMIX=( Q0(LC)*DZQ(LC) + Q0(LC1)*DZQ(LC1)
1 + Q0(LC1+1)*DZQ(LC1+1) )*WT
QMIX=AMAX1( QMIX,1.0E-10 )
PMIX=( P0(LC)*DZQ(LC) + P0(LC1)*DZQ(LC1)
1 + P0(LC1+1)*DZQ(LC1+1) )*WT
ZMIX=( Z0(LC)*DZQ(LC) + Z0(LC1)*DZQ(LC1)
1 + Z0(LC1+1)*DZQ(LC1+1) )*WT
ENDIF
RLL = C1-C2*(TMIX-TO)
TDPT = 1./(D273-RV/RLL*ALOG(PMIX*QMIX/(611.*(.622+QMIX))))
TDPT = AMIN1(TDPT,TMIX)
TLCL = TDPT-(.212+1.571E-3*(TDPT-TO)-4.36E-4*(TMIX-TO))*
* (TMIX-TDPT)
C
C COMPUTE THE LCL. KLCL IS THE MODEL LEVEL IMEDIATELY ABOVE THE LCL,
C AND K IS THE MODEL LEVEL BELOW THE LCL.
C
ZLCL = ZMIX+(TLCL-TMIX)/GDRY
DO 50 K = LC, L5
KLCL = K
IF (ZLCL.LE.Z0(K)) GOTO 60
50 CONTINUE
GOTO 70
C
60 K = KLCL-1
C
C CHECK TO SEE IF CLOUD IS BUOYANT.
C
DZLDZA = (ZLCL-Z0(K))/DZA(K)
TENV = T0(K)+(T0(KLCL)-T0(K))*DZLDZA
C
C IMPORTANT: POSSIBLE CHANGE FROM THE VERSION OF THE
C SCHEME THAT APPEARS IN THE PENN STATE/
C NCAR MODEL. THE FOLLOWING LINES ARE THERE
C TO PREVAIL FROM INITIAL GRAVITY WAVES
C
C
C
*...MODIFICATION OF THE FILTER FUNCTION NEAR THE LATERAL BOUNDARIES...
*
*
WKL = W0(K)+(W0(KLCL)-W0(K))*DZLDZA-WKLCL
WABS = ABS(WKL)+1.E-10
WSIGNE = WKL/WABS
DTLCL = 4.64*WSIGNE*WABS**0.33
IF (TLCL+DTLCL.GT.TENV) GOTO 80
70 CONTINUE
GOTO 650
C
C THE PARCEL IS BUOYANT, COMPUTE POTENTIAL TEMPERATURE(THETA),
C VIRTUAL TEMPERATURE(TVEN) AND UPDRAFT VELOCITY(WLCL) AT THE LCL.
C
80 THATA = TMIX*(POO/PMIX)**ROVCP
TVEN = TENV*(1.+B61*(Q0(K)+(Q0(KLCL)-Q0(K))*DZLDZA))
GDT = G*DTLCL*(ZLCL-Z0(LC))/(TVG(LC)+TVEN)
WLCL = WO+.5*WSIGNE*SQRT(ABS(GDT)+1.E-10)
WTW = WLCL*WLCL
C
IF (LOW.GT.2) GOTO 100
C
C COMPUTE EQUIVALENT POTENTIAL TEMPERATURE(THETAE) OF ENVIRONMENT.
C BU IS THE ENTRAINMENT RATE. RL IS LATENT HEAT OF VAPORIZATION.
C
DO 90 NK = 1, KX
DET(NK)=0.
WGT(NK) = EXP(BU*DZA(NK))-1.
WGO(NK) = 1./(1.+WGT(NK))
Q0(NK) = AMAX1(1.E-9,Q0(NK))
if (T0(NK) .GT. TICE) then
RL(NK) = C1-C2*(T0(NK)-TO)
else
RL(NK) = C3-C4*(T0(NK)-TO)
endif
TDP(NK) = 1./(D273-RV/RL(NK)*ALOG(P0(NK)*Q0(NK)/(611.*(Q0(NK
* )+.622))))
if (TDP(NK) .gt. TICE) then
TST(NK) = TDP(NK)-(.212+1.571E-3*(TDP(NK)-TO)-4.36E-4*
% (T0(NK)-TO))*(T0(NK)-TDP(NK))
else
TST(NK) = TDP(NK)-(.182+1.13E-3*(TDP(NK)-TO)-3.58E-4*
% (T0(NK)-TO))*(T0(NK)-TDP(NK))
endif
THE(NK) = T0(NK)*PPI(NK)*EXP(RL(NK)*Q0(NK)/(CP*TST(NK)))
90 CONTINUE
100 CONTINUE
LCL = KLCL
LET = LCL
C
C*******************************************************************
C *
C COMPUTE UPDRAFT PROPERTIES *
C *
C*******************************************************************
C
SDQU = 0.
ABE = 0.
IFLAG = 0
FREZ = 0.
WGLCL = EXP(BU*(Z0(KLCL)-ZLCL))-1.
TU(K) = TLCL
TVU(K) = TLCL*(1.+B61*QMIX)
QU(K) = QMIX
THM(K) = THATA*EXP((C1-C2*(TLCL-TO))*QMIX/(CP*TLCL))
C
C...UPDRAFT TEMPERTURE, MIXING RATIO, BUOYANCY AND VELOCITY. THE CLOUD
C...TOP IS DEFINED AT THE LEVEL WHERE UPDRAFT MOTION VANISHES.
C
DO 120 NK = K, KLM
LTOP = NK
IF (TU(NK).GT.TICE) GOTO 110
IF (IFLAG.NE.0) GOTO 110
FREZ = DTFRZ
(TU(NK),P0(NK),QU(NK),.5*SDQU,D273)
TU(NK) = TU(NK)+FREZ
ES = 611.*EXP(RL(NK)/RV*(D273-1./TU(NK)))
QU(NK) = .622*ES/(P0(NK)-ES)
TVU(NK) = TU(NK)*(1.+B61*QU(NK))
THM(NK) = TU(NK)*PPI(NK)*EXP(RL(NK)*QU(NK)/(CP*TU(NK)))
IFLAG = NK
110 NK1 = NK+1
IF (NK.NE.K) THEN
THM(NK1) = (THM(NK)+WGT(NK)*.5*(THE(NK)+THE(NK1)))*WGO(NK)
TU(NK1) = TP
(P0(NK1),THM(NK1),T0(NK1),D273,RL(NK1),QU(NK1)
* ,PPI(NK1))
TVU(NK1) = TU(NK1)*(1.+B61*QU(NK1))
DQU(NK) = (QU(NK)+WGT(NK)*.5*(Q0(NK)+Q0(NK1)))*WGO(NK)-
* QU(NK1)
BE = DZA(NK)*BVRT*((TVU(NK)+TVU(NK1))/(TVG(NK)+TVG(NK1))-1.)
WBE = BE-BU*WTW*DZA(NK)/G
ELSE
THM(NK1) = (THM(K)+WGLCL*.5*(THE(K)*(1.-DZLDZA)+
* THE(LCL)*(1.+DZLDZA)))/(1.+WGLCL)
TU(NK1) = TP
(P0(NK1),THM(NK1),T0(NK1),D273,RL(NK1),QU(NK1)
* ,PPI(NK1))
TVU(NK1) = TU(NK1)*(1.+B61*QU(NK1))
DQU(NK) = (QU(K)+WGLCL*.5*(Q0(K)*(1.-DZLDZA)+Q0(LCL)*
* (1.+DZLDZA)))/(1.+WGLCL)-QU(NK1)
BE = (Z0(LCL)-ZLCL)*BVRT*((TVU(LCL)+TVU(K))/(TVG(LCL)+TVEN)
* -1.)
WBE = BE-BU*WTW*(Z0(LCL)-ZLCL)/G
ENDIF
SDQU = SDQU+DQU(NK)
WTW = WTW+19.62*WBE
WU(NK1) = WTW/SQRT(ABS(WTW)+1.E-10)
if (BE .GT. 0.) ABE = ABE+BE
IF (TU(NK).GE.T0(NK)) LET = NK
IF (WU(NK1).LT.1.E-6) GOTO 130
120 CONTINUE
130 CLDHT = Z0(LTOP)-ZLCL
C
C... IF THE CLOUD DEPTH IS LESS THAN 4 KM, NO CONVECTION IS ALLOWED
C... FOR THE LIFTED LAYER.
C
IF (CLDHT.LT.4.E3.OR.LET.LE.LCL) GOTO 40
ACP = 0.
CLIQ = 0.
P165 = P0(LCL)-1.65E4
TRCP = 0.
LTOP1 = LTOP+1
LTOPM1 = LTOP-1
DWU = WU(LTOP1)-WU(LTOP)
ZTOP = Z0(LTOP)+WU(LTOP)*DZA(LTOP)/(ABS(DWU)+1.E-3)
DDT = T0(LET+1)-TU(LET+1)+TU(LET)-T0(LET)
ZETL = Z0(LET)+DZA(LET)*(TU(LET)-T0(LET))/(ABS(DDT)+1.E-5)
C
C...UPDRAFT MASS FLUX(VMF), OCCUPIED AREA(AU), HORIZONTAL MOMENTUM
C...(UU,VU), AND TOTAL CONDENSATE PRODUCTION RATE(TRCP) .
C...LET IS THE MODEL LEVEL JUST BELOW THE EQUILIBRIUM TEMPERATURE
C...LEVEL. ACP IS THE ANVIL CONDENSATION PRODUCTION RATE ABOVE THE LET.
C...CLIQ IS THE RATE OF LIQUID PRODUCTION UP TO ABOUT 150 MB ABOVE THE
C... LCL AND USR IS THE UPDRAFT SUPPLY RATE.
C
UMF(K) = AUO*WO*POO*(TLCL/THATA)**CPOR/(R*TLCL)
IF (DPMIX.LT.60.E2) THEN
UU(K) = ( U0(LC)*DZQ(LC)+U0(LC1)*DZQ(LC1)+
1 U0(LC1+1)*DZQ(LC1+1) )*WT
VU(K) = ( V0(LC)*DZQ(LC)+V0(LC1)*DZQ(LC1)+
1 V0(LC1+1)*DZQ(LC1+1) )*WT
ELSE
UU(K) = (U0(LC)*DZQ(LC)+U0(LC1)*DZQ(LC1))*WT
VU(K) = (V0(LC)*DZQ(LC)+V0(LC1)*DZQ(LC1))*WT
ENDIF
DO 140 NK = K, LTOP
NK1 = NK+1
if (NK.EQ.K) then
WGHT = WGLCL
else
WGHT = WGT(NK)
endif
IF (NK.NE.K) THEN
UU(NK1) = (UU(NK)+WGHT*.5*(U0(NK)+U0(NK1)))*WGO(NK)
VU(NK1) = (VU(NK)+WGHT*.5*(V0(NK)+V0(NK1)))*WGO(NK)
ELSE
UU(NK1) = (UU(K)+WGHT*.5*(U0(K)*(1.-DZLDZA)+U0(LCL)*
* (1.+DZLDZA)))/(1.+WGLCL)
VU(NK1) = (VU(K)+WGHT*.5*(V0(K)*(1.-DZLDZA)+V0(LCL)*
* (1.+DZLDZA)))/(1.+WGLCL)
ENDIF
RU(NK1) = P0(NK1)/(R*TVU(NK1))
IF (NK1.LE.LET) THEN
UMF(NK1) = UMF(NK)*(1.+WGHT)
ELSE
UMF(NK1) = UMF(LET)*(1.-(Z0(NK1)-ZETL)/(ZTOP-ZETL))
DET(NK1)=UMF(NK)-UMF(NK1)
ACP = ACP+.5*(UMF(NK)+UMF(NK1))*DQU(NK)
ENDIF
AU(NK1) = UMF(NK1)/(RU(NK1)*WU(NK1))
TRCP = TRCP+.5*(UMF(NK)+UMF(NK1))*DQU(NK)
*
IF (P0(NK).LT.P165) GOTO 140
CLIQ = TRCP
LVF = NK
140 CONTINUE
USR = UMF(LVF+1)*QU(LVF+1)+CLIQ
USR = AMIN1(USR,.95*TRCP)
*
IF (USR.LT.0.0) THEN
GOTO 40
ENDIF
C
C...INITIALIZE SOME ARRAYS FOR LATER USE.
C
DO 150 N = 1, K
AU(N) = 0.
TU(N) = 0.
QU(N) = 0.
UU(N) = 0.
VU(N) = 0.
UMF(N) = 0.
RU(N)=0.
WU(N)=0.
150 CONTINUE
DO 160 NK = LTOP1, KX
AU(NK) = 0.
UMF(NK) = 0.
UG(NK) = U0(NK)
VG(NK) = V0(NK)
TG(NK) = T0(NK)
QG(NK) = Q0(NK)
160 CONTINUE
*
* WPD IS INITIALIZED TO ZERO TO AVOID THAT WPD(L5) BE NOT DEFINED
* (REFER TO THE CALCULATION OF VCONV)
DO NK=1,KX
WPD(NK) = 0.0
END DO
*
EX(1) = 0.
FU(1) = U0(1)
FV(1) = V0(1)
FT(1) = T0(1)
FQ(1) = Q0(1)
DO 170 NK = 1, LTOP1
UE(NK) = U0(NK)
VE(NK) = V0(NK)
WPD(NK) = U0(NK)*U0(NK)+V0(NK)*V0(NK)
TZ(NK) = 0.
QD(NK) = 0.
AD(NK) = 0.
WD(NK) = 0.
UD(NK) = 0.
VD(NK) = 0.
RD(NK)=0.
DQD(NK) = 0.
DMF(NK) = 0.
170 CONTINUE
DO 180 NK = 2, LTOP
ZA(NK) = DZA(NK-1)/(DZA(NK)*(Z0(NK+1)-Z0(NK-1)))
ZB(NK) = DZA(NK)/(DZA(NK-1)*(Z0(NK+1)-Z0(NK-1)))
180 CONTINUE
C
C...COMPUTE CONVECTIVE TIME SCALE(TIMEC). THE MEAN WIND AT THE LCL
C...AND MIDTROPOSPHERE IS USED.
C
VCONV = .5*(SQRT(WPD(KLCL))+SQRT(WPD(L5)))
if (vconv.eq.0.0) vconv = 1.e-10
TIMEC = SQRT(DXSQ)/VCONV
TIMEC = AMAX1(1800.,TIMEC)
TIMEC = AMIN1(3600.,TIMEC)
* NIC = TIMEC/(.5*DT2)
NIC = TIMEC/ DELT
* NCA(I) = INT(NIC) + 1 ! bug
NCA(I) = INT(NIC)
* TIMEC = NIC*.5*DT2
TIMEC = NIC* DELT
DTIME = .1*TIMEC
C
C...COMPUTE WIND SHEAR AND PRECIPITATION EFFICIENCY.
C
SHSIGN = sign(1.0,WPD(LTOP)-WPD(LCL))
VWS = (U0(LTOP)-U0(LCL))*(U0(LTOP)-U0(LCL))+
1 (V0(LTOP)-V0(LCL))*(V0(LTOP)-V0(LCL))
VWS = 1.E3*SHSIGN*SQRT(VWS)/(Z0(LTOP)-Z0(LCL))
PEF = 1.591+VWS*(-.639+VWS*(9.53E-2-VWS*4.96E-3))
PEF = AMAX1(PEF,.2)
PEF = AMIN1(PEF,.9)
C
C...PRECIPITATION EFFICIENCY IS A FUNCTION OF THE HEIGHT OF CLOUD BASE.
C
CBH = (ZLCL-Z0(1))*3.281E-3
IF (CBH.LT.3.) THEN
RCBH = .02
ELSE
RCBH = .96729352+CBH*(-.70034167+CBH*(.162179896+CBH*(-
* 1.2569798E-2+CBH*(4.2772E-4-CBH*5.44E-6))))
ENDIF
IF (CBH.GT.25) RCBH = 2.4
PEFCBH = 1./(1.+RCBH)
PEFCBH=AMIN1(PEFCBH,.9)
C
C... MEAN PEF. IS USED TO COMPUTE RAINFALL.
C
PEFF = .5*(PEF+PEFCBH)
C
C...COMPUTE PARTITION OF CONDENSATE AMONG CONVECTIVE PRODUCTION RATE
C...(CPR), ANVIL EVARATION(ACP) AND CONDENSATE EVAPORATION IN THE
C...DOWNDRAFTS(RCED).
C
CPR = PEFF*USR
RCE = TRCP-CPR
ACP = AMAX1(ACP,.05*TRCP)
ACP = AMIN1(ACP,0.15*TRCP,0.5*RCE)
RCED = RCE-ACP
C
C*****************************************************************
C *
C COMPUTE DOWNDRAFT PROPERTIES *
C *
C*****************************************************************
C
DTMELT= 3.34E5*.5*SDQU/CP
NLFS = MIN0(L4,LET)
190 NLFS = MAX0(NLFS-1,KLCL+1)
NLL = NLFS-KLCL
if (NLL .EQ. 1) then
IFLG = 0
else
IFLG = 99
endif
TDER = 0.
IFLAG = 0
C
C...COMPUTE THE LEVEL OF FREE SINK(LFS). 50 TO 50 PERCENTDXSQE OF UPDRAF
C...AND ENVIRONMENTAL AIR IS MIXED.
C
DO 200 NK = 1, NLL
LFS = NLFS-NK
THBAR = .5*(THM(LFS)+THE(LFS))
TZ(LFS) = TP
(P0(LFS),THBAR,T0(LFS),D273,RL(LFS),QS,PPI(LFS))
IF (TZ(LFS).LT.T0(LFS)) GOTO 210
200 CONTINUE
210 THM(LFS) = THBAR
LFSML = LFS-1
C
C...DOWNDRAFT PROPERTIES AT THE LFS. IF THE LFS IS BELOW 0 DEG.,
C...MELTING OF CONDENSATE IS ALLOWED.
C
UD(LFS) = .5*(U0(LFS)+UU(LFS))
VD(LFS) = .5*(V0(LFS)+VU(LFS))
IF(TZ(LFS) .GE. TO) THEN
TZ(LFS) = TZ(LFS)-DTMELT
ES = 611.*EXP(RL(LFS)/RV*(D273-1./TZ(LFS)))
QS = .622*ES/(P0(LFS)-ES)
THM(LFS) = TZ(LFS)*PPI(LFS)*EXP(RL(LFS)*QS/(CP*TZ(LFS)))
IFLAG = 99
ML = LFS
ENDIF
QD(LFS) = RHIC*QS
TVD(LFS) = TZ(LFS)*(1.+B61*QD(LFS))
RD(LFS) = P0(LFS)/(R*TVD(LFS))
C
C...ASSUME INITIAL DOWNDRAFT VELOCITY(WD) OF -1 M/S, AND AREA(AD)
C...PROPORTIONAL TO UPDRAFT AIR.
C
WD(LFS) = -WO
WTW = -1.
AD(LFS) = RCED*AUO/USR
DMF(LFS) = RD(LFS)*AD(LFS)*WD(LFS)
C
C...LDB IS SUPPOSIVELY THE LOWEST LEVEL THE DOWNDRAFT CAN PENETRATE .
C
LDB = LFS
C
C...COMPUTE DOWNDRAFT PROPERTIES BELOW THE LFS. TDER IS TOTAL
C...EVAPORATION RATE IN THE DOWNDRAFTS.
C
DO 240 NK = 1, LFSML
ND = LFSML+2-NK
ND1 = ND-1
if (ND1.LT.KLCL) then
RHCLD = RHBC
else
RHCLD = RHIC
endif
UD(ND1) = (UD(ND)+.5*WGT(ND1)*(U0(ND)+U0(ND1)))*WGO(ND1)
VD(ND1) = (VD(ND)+.5*WGT(ND1)*(V0(ND)+V0(ND1)))*WGO(ND1)
THM(ND1) = (THM(ND)+.5*WGT(ND1)*(THE(ND)+THE(ND1)))*WGO(ND1)
TZ(ND1) = TP
(P0(ND1),THM(ND1),T0(ND1),D273,RL(ND1),QSD,
* PPI(ND1))
QPRME = (QD(ND)+.5*WGT(ND1)*(Q0(ND)+Q0(ND1)))*WGO(ND1)
QD(ND1) = RHCLD*QSD
IF (IFLAG.EQ.99) GOTO 220
C
C...CHECK FOR MELTING LEVEL IF THE LFS IS ABOVE THE LEVEL OF TO.
C
IF (TZ(ND1).LE.TO) GOTO 220
TZ(ND1) = TZ(ND1)-DTMELT
ES = 611.*EXP(RL(ND1)/RV*(D273-1./TZ(ND1)))
QS = .622*ES/(P0(ND1)-ES)
QD(ND1) = RHCLD*QS
THM(ND1) = TZ(ND1)*PPI(ND1)*EXP(RL(ND1)*QS/(CP*TZ(ND1)))
IFLAG = 99
ML = ND1
220 DQD(ND) = QD(ND1)-QPRME
IF(RHCLD.LT.1.) THEN
DM=(QSD-QD(ND1))/(1.+RL(ND1)*RL(ND1)*QSD/(462844.*
1 TZ(ND1)*TZ(ND1)))
TZ(ND1) = TZ(ND1)+RL(ND1)*DM/CP
ENDIF
TVD(ND1) = TZ(ND1)*(1.+B61*QD(ND1))
RD(ND1) = P0(ND1)/(R*TVD(ND1))
WTW = WTW+19.62*DZA(ND1)*(BVRT*(TVD(ND)+TVD(ND1))/(TVG(ND)
* +TVG(ND1))-BVRT-BU*WTW/G)
WD(ND1) = WTW/SQRT(ABS(WTW)+1.E-10)
C
C...CHECK IF DOWNDRAFT HAS ENCOUNTERED COLDER AIR, LOST ITS NEGETIVE
C...BUOYANCY AND CAUSED WD TO BECOME POSITIVE.
C
IF (WD(ND1).GE.0.) GOTO 230
WGTDT=WGT(ND1)
IF(TVD(ND1).GT.TVG(ND1))WGTDT=-2.*WGT(ND1)
DMF(ND1) = DMF(ND)*(1.+WGTDT)
AD(ND1) = DMF(ND1)/(RD(ND1)*WD(ND1))
LDB = ND1
GOTO 240
C
230 IF (IFLG.EQ.99) GOTO 190
240 TDER = TDER+.5*(DMF(ND)+DMF(ND1))*DQD(ND)
C
C...THE DOWNDRAFT AREA AND MASS FLUX ARE ADJUSTED ACCORDING TO
C...SPECIFIED EVAPORATION RATE AND ACTUAL EVAPORATION RATE.
C...ADU IS THE NUMBER OF UNITS OF DOWNDRAFT AIR.
C
ADU = ABS(RCED/TDER)
DO 250 NK = 1, LTOP
AD(NK) = AD(NK)*ADU
DMF(NK) = DMF(NK)*ADU
AU2(NK) = AU(NK)
AD2(NK) = AD(NK)
DM2(NK) = DMF(NK)
250 CONTINUE
AUMX=AU2(1)
NUMAX=1
DO 451 NK=2,LTOP
IF(AU2(NK).GT.AUMX) THEN
AUMX=AU2(NK)
NUMAX=NK
ENDIF
451 CONTINUE
KLEVAP = LTOP-KLCL
NCOUNT=0
AINC =2.
AER = ACP
CPRN = CPR
DFBEM=-0.5
DFBEP= 0.5
AINCP=3.
AINCM=1.
C
C...BEGIN WITH THE LOWEST LAYER, THE DOWNDRAFT AREA IS SUCCESSIVELY
C...FILLED USING THE DOWNDRAFT MASS FLOW AT THE LDB DURING THE
C...CONVECTIVE TIME PERIOD(TIMEC).
270 NCOUNT = NCOUNT+1
DXSQD = CRAD
DM = -DMF(LDB)*TIMEC
DO 280 NK = LDB,LFS
IF (NK.GE.LCL) DXSQD = .6*DXSQ
AD(NK) = AD(NK)+DM/(RD(NK)*DZQ(NK))
IF (AD(NK).LE.DXSQD) GOTO 290
AD(NK) = DXSQD
DM = DM-RD(NK)*DZQ(NK)*(DXSQD-AD2(NK))
280 CONTINUE
290 CONTINUE
IF(NCOUNT.EQ.1) GOTO 440
C
C*****************************************************************
C *
C COMPUTE PROPERTIES FOR COMPENSATIONAL SUBSIDENCE *
C *
C*****************************************************************
C
C...OBTAIN ENVIRONMENTAL VERTICAL MOTION(WE), AREA(AE),AND REASONABLE
C...TIME-STEP FOR COMPUTING TENDENCY EQUATION.
C
DO 300 NK = 1, LTOP1
AE(NK) = DXSQ-AU(NK)-AD(NK)
IF (AE(NK).LT.CRAE) THEN
AE(NK) = CRAE
AD(NK) = DXSQ-AE(NK)-AU(NK)
ENDIF
WE(NK) = -(UMF(NK)+DET(NK)+DMF(NK))/(RO(NK)*AE(NK))
WE(NK) = AMIN1(.5,WE(NK))
WE(NK) = AMAX1(WE(NK),-2.)
DTT = .6*DZA(NK)/(ABS(WE(NK))+1.E-4)
DTIME = AMIN1(DTIME,DTT)
QE(NK) = Q0(NK)
TE(NK) = T0(NK)
300 CONTINUE
NSTEP = TIMEC/DTIME
C
C...COMPUTE TEMPERATURE(TE) MIXING RATIO(RE) AND ANVIL EVAPORATION
C...IN THE SUBSIDENCE.
C
DTMEA = ACP*TIMEC/FLOAT(NSTEP)
DO 360 NTC = 1, NSTEP
DO 310 NK = 2, LTOP
ALF(NK) = -WE(NK)*DTIME*ZA(NK)
BTA(NK) = WE(NK)*DTIME*ZB(NK)
BM(NK) = 1.+ALF(NK)+BTA(NK)*(1.-EX(NK-1))
EX(NK) = ALF(NK)/BM(NK)
FT(NK) = (TE(NK)+WE(NK)*DTIME*GDRY+BTA(NK)*FT(NK-1))/
* BM(NK)
FQ(NK) = (QE(NK)+BTA(NK)*FQ(NK-1))/BM(NK)
310 CONTINUE
DO 320 NK = 2, LTOPM1
NJ = LTOP1-NK
TE(NJ) = EX(NJ)*TE(NJ+1)+FT(NJ)
QE(NJ) = EX(NJ)*QE(NJ+1)+FQ(NJ)
320 CONTINUE
C
C...INCORPORATE DETRAINMENT EFFECT INTO COMPENSATING SUBSIDENCE.
C
DO 330 NK=LET,LTOP
DTRNM=DET(NK)*DTIME/(RO(NK)*AE(NK)*DZQ(NK))
TE(NK)=TE(NK)-RL(NK)*DTRNM*DQU(NK)/CP
QE(NK)=QE(NK)+DTRNM*DQU(NK)
330 CONTINUE
DMEA = DTMEA
DO 340 NKP = 1, KLEVAP
NK = LTOP1-NKP
ES = 611.*EXP(RL(NK)/RV*(D273-1./TE(NK)))
QS = .622*ES/(P0(NK)-ES)
IF(QE(NK) .GE. QS) GOTO 340
DM = (QE(NK)-QS)/(1.+RL(NK)*RL(NK)*QS/(462844.*TE(NK)*TE(
* NK)))
CEV = RO(NK)*AE(NK)*DZQ(NK)
EVAP = AMIN1(-DM,DMEA/CEV)
QE(NK) = QE(NK)+EVAP
TE(NK) = TE(NK)-RL(NK)*EVAP/CP
DMEA = DMEA-CEV*EVAP
IF(DMEA.LE.1.E-6) GOTO 360
340 CONTINUE
360 CONTINUE
C
C...OBTAIN AREA AVERAGED VALUES OF TEMPERATURE AND MIXING RATIO.
C
DO 370 NK = 1, LTOP
TG(NK) = (AE(NK)*TE(NK)+AU(NK)*TU(NK)+AD(NK)*TZ(NK))*AGO
QG(NK) = (AE(NK)*QE(NK)+AU(NK)*QU(NK)+AD(NK)*QD(NK))*AGO
QG(NK) = AMAX1(QG(NK),1.E-10)
TVG(NK) = TG(NK)*(1.+B61*QG(NK))
370 CONTINUE
IF (NCOUNT.GE.10) GOTO 460
IF (NCOUNT.LE.2.AND.ZLCL.GT.3.E3) GOTO 460
C
C*******************************************************************
C *
C COMPUTE NEW CLOUD AND CHANGE IN AVAILABLE BUOYANT ENERGY. *
C *
C*******************************************************************
C
C...THE FOLLOWING COMPUTATIONS ARE SIMILAR TO THAT FOR UPDRAFT
C
IF (DPMIX.LT.60.E2) THEN
TMIX = (TG(LC)*DZQ(LC)+TG(LC1)*DZQ(LC1)+
1 TG(LC1+1)*DZQ(LC1+1) )*WT
QMIX = (QG(LC)*DZQ(LC)+QG(LC1)*DZQ(LC1)+
1 QG(LC1+1)*DZQ(LC1+1) )*WT
ELSE
TMIX = (TG(LC)*DZQ(LC)+TG(LC1)*DZQ(LC1))*WT
QMIX = (QG(LC)*DZQ(LC)+QG(LC1)*DZQ(LC1))*WT
ENDIF
ES = 611.*EXP(RL(LC1)/RV*(D273-1./TMIX))
QS = .622*ES/(PMIX-ES)
QMIX = AMIN1(QS,QMIX)
TDPT = 1./(D273-RV/RL(LC1)*ALOG(PMIX*QMIX/(611.*(.622+QMIX))))
if (TDPT.GT.TMIX) TDPT = TMIX
TLCL = TDPT-(.212+1.571E-3*(TDPT-TO)-4.36E-4*(TMIX-TO))*(TMIX-
* TDPT)
ZLCL = ZMIX+(TLCL-TMIX)/GDRY
DO 380 NK = LC, L4
KLCL = NK
IF (ZLCL.LE.Z0(NK)) GOTO 390
380 CONTINUE
390 K = KLCL-1
DZLDZA = (ZLCL-Z0(K))/DZA(K)
TENV = TG(K)+(TG(KLCL)-TG(K))*DZLDZA
TVEN = TENV*(1.+B61*(QG(K)+(QG(KLCL)-QG(K))*DZLDZA))
THATA = TMIX*(POO/PMIX)**ROVCP
C
C...RECOMPUTE THETAE FOR THE ADJUSTED STRATIFICATION.
C
DO 400 NK = K, LTOP1
TDP(NK) = 1./(D273-RV/RL(NK)*ALOG(P0(NK)*QG(NK)/(611.*(QG(NK
* )+.622))))
TDP(NK) = AMIN1(TG(NK),TDP(NK))
if (TDP(NK) .GT. TICE) then
TST(NK) = TDP(NK)-(.212+1.571E-3*(TDP(NK)-TO)-4.36E-4*
% (TG(NK)-TO))*(TG(NK)-TDP(NK))
else
TST(NK) = TDP(NK)-(.182+1.13E-3*(TDP(NK)-TO)-3.58E-4*
% (TG(NK)-TO))*(TG(NK)-TDP(NK))
endif
THE(NK) = TG(NK)*PPI(NK)*EXP(RL(NK)*QG(NK)/(CP*TST(NK)))
400 CONTINUE
C
IFLAG = 0
ABEG = 0.
SDQU = 0.
WGLCL = EXP(BU*(Z0(KLCL)-ZLCL))-1.
TSU = TLCL
QSU = QMIX
THM(K) = THATA*EXP((C1-C2*(TLCL-TO))*QMIX/(CP*TLCL))
TGU = TSU*(1.+B61*QSU)
C
C...COMPUTE ADJUSTED ABE(ABEG).
C
N=K
IF (IFLAG.EQ.10) GOTO 410
IF (TSU.GT.TICE) GOTO 410
DFRZ = DTFRZ
(TSU,P0(N),QSU,.5*SDQU,D273)
TSU = TSU+DFRZ
ES = 611.*EXP(RL(N)/RV*(D273-1./TSU))
QSU = .622*ES/(P0(N)-ES)
TGU = TSU*(1.+B61*QSU)
THM(N) = TSU*PPI(N)*EXP(RL(N)*QSU/(CP*TSU))
IFLAG = 10
410 N1 = N+1
THM(N1) = (THM(N)+WGLCL*.5*(THE(K)*(1.-DZLDZA)+
* THE(KLCL)*(1.+DZLDZA)))/(1.+WGLCL)
TSV = TP
(P0(N1),THM(N1),TG(N1),D273,RL(N1),QSV,PPI(N1))
TGV = TSV*(1.+B61*QSV)
SDQU = SDQU+(QSU+WGLCL*.5*(QG(K)*(1.-DZLDZA)+
* QG(KLCL)*(1.+DZLDZA)))/(1.+WGLCL)-QSV
BE = (Z0(KLCL)-ZLCL)*BVRT*((TGV+TGU)/(TVG(KLCL)+TVEN)-1.)
TSU = TSV
QSU = QSV
TGU = TGV
IF (BE.GT.0.) ABEG = ABEG+BE
*
DO 430 N = K+1, LTOP
IF (IFLAG.EQ.10) GOTO 415
IF (TSU.GT.TICE) GOTO 415
DFRZ = DTFRZ
(TSU,P0(N),QSU,.5*SDQU,D273)
TSU = TSU+DFRZ
ES = 611.*EXP(RL(N)/RV*(D273-1./TSU))
QSU = .622*ES/(P0(N)-ES)
TGU = TSU*(1.+B61*QSU)
THM(N) = TSU*PPI(N)*EXP(RL(N)*QSU/(CP*TSU))
IFLAG = 10
415 N1 = N+1
THM(N1) = (THM(N)+WGT(N)*.5*(THE(N)+THE(N1)))*WGO(N)
* error in calc of TSV
TSV = TP
(P0(N1),THM(N1),TG(N1),D273,RL(N1),QSV,PPI(N1))
TGV = TSV*(1.+B61*QSV)
SDQU = SDQU+(QSU+WGT(N)*.5*(QG(N)+QG(N1)))*WGO(N)-QSV
BE = DZA(N)*BVRT*((TGV+TGU)/(TVG(N)+TVG(N1))-1.)
TSU = TSV
QSU = QSV
TGU = TGV
IF (BE.GT.0.) ABEG = ABEG+BE
430 CONTINUE
C
C...ASSUME MORE THAN 50% OF ABE IS REMOVED BY CONVECTION DURING THE PERIOD
C...TIMEC.
C
DABE = AMAX1(ABE-ABEG,.2*ABE)
FABE = ABEG/(ABE+1.E-8)
IF(FABE.LT..10.AND.FABE.GT.0.01) GOTO 460
FBEA(NCOUNT)=FABE-.1
ACIN(NCOUNT)=AINC
IF(FABE.GT.0.1)DFBEP=AMIN1(DFBEP,FBEA(NCOUNT))
IF(FABE.LT.0.1)DFBEM=AMAX1(DFBEM,FBEA(NCOUNT))
AINC = AINC*ABE/(DABE+1.E-8)
IF(NCOUNT.LE.4) GOTO 445
DO 435 NN=2,NCOUNT
IF(FBEA(NN).EQ.DFBEP)AINCP=ACIN(NN)
IF(FBEA(NN).EQ.DFBEM)AINCM=ACIN(NN)
435 CONTINUE
AINC=AINCM-(AINCM-AINCP)*DFBEM/(DFBEM-DFBEP)
445 AUMAX=AMIN1(AUMX*AINC,CRAD)
AINC=AUMAX/(0.001+AUMX)
440 AINC = AMIN1(AINC,25.0)
AINC = AMAX1(AINC,1.0)
ACP = AER*AINC
CPR = CPRN*AINC
DO 450 NK = 1, LTOP
AU(NK) = AU2(NK)*AINC
AD(NK) = AD2(NK)*AINC
DMF(NK) = DM2(NK)*AINC
UMF(NK) = RU(NK)*WU(NK)*AU(NK)
if (NK.LE.LET) then
DET(NK) = 0.
else
DET(NK) = UMF(NK-1)-UMF(NK)
endif
450 CONTINUE
GOTO 270
C
C...COMPUTE CONVECTIVE OVEQSHOOTING, ASSUMING THAT THE TOTAL MASS
C...COOLED DOWN IS EQUAL TO THE MASS WARMED UP ABOVE THE LET.
C
460 DDT = T0(LET+1)-TU(LET+1)+TU(LET)-T0(LET)
DZETL = DZA(LET)*(TU(LET)-T0(LET))/(ABS(DDT)+1.E-6)
TGETL = TG(LET)+(TG(LET+1)-TG(LET))*DZETL/DZA(LET)
T2ETL = T0(LET)+(T0(LET+1)-T0(LET))*DZETL/DZA(LET)
BEG = .5*(DZA(LET)-DZETL)*(TG(LET+1)-T0(LET+1)+TGETL-T2ETL)
IF (LET+1.GE.LTOPM1) GOTO 480
NK = LET+1
470 BEG = BEG+.5*DZA(NK)*(TG(NK)-T0(NK)+TG(NK+1)-T0(NK+1))
IF (NK+1.GE.LTOPM1) GOTO 480
NK = NK+1
GOTO 470
C
480 BEG = BEG+.125*DZA(LTOPM1)*(TG(LTOPM1)-T0(LTOPM1))
TG(LTOP) = T0(LTOP)-2.*BEG/(DZA(LTOP)+.5*DZA(LTOPM1))
C
C...COMPUTE HORIZONTAL MOMENTUM IN THE COMPENSATING SUBSIDENCE
C
DO 510 N = 1, NSTEP
DO 490 NK = 2, LTOP
FU(NK) = (U0(NK)+BTA(NK)*FU(NK-1))/BM(NK)
FV(NK) = (V0(NK)+BTA(NK)*FV(NK-1))/BM(NK)
490 CONTINUE
DO 500 NK = 2, LTOPM1
NJ = LTOP1-NK
UE(NJ) = EX(NJ)*UE(NJ+1)+FU(NJ)
VE(NJ) = EX(NJ)*VE(NJ+1)+FV(NJ)
500 CONTINUE
510 CONTINUE
C
C...OBTAIN AREA AVERAGED HORIZONTAL MOMENTUM.
C
DO 520 NK = 1, LTOP
UG(NK) = AGO*(AE(NK)*UE(NK)+AU(NK)*UU(NK)+AD(NK)*UD(NK))
VG(NK) = AGO*(AE(NK)*VE(NK)+AU(NK)*VU(NK)+AD(NK)*VD(NK))
520 CONTINUE
C
* copy "au" into "areaup"
do nk = 1,ltop
areaup(i,nk) = au(nk)
end do
C
C...FEEDBACK TO RESOLVABLE SCALE TENDENCIES. NIDX STORES INDEXES
C...USED TO IDENTIFY CONVECTIVE ACTIVITY FOR INDIVIDUAL GRID POINTS.
C...INP (=1) ALWAYS REPRESENTS ZERO CONVECTIVE TENDENCY STORED IN
C...ARRAYS OF DTDT, DQDT, DUDT AND DVDT.
C
NCA(I) = NCA(I) - 1
C
CCCCC IMPORTANT, SOME LINES ARE CUT FOR THE IMPLEMENTATION OF
CCCCC THE SCHEME IN THE RFE MODEL. THIS IS FOR SIMPLIFICATION
C
DO 610 K = 1, KX
NK = KX-K+1
DTT1=TG(K)-T0(K)
if ((K .LE. 4) .and. (DTT1 .gt. 0.)) DTT1 = 0.
DTT1=AMIN1(DTT1,8.0)
DTT1=AMAX1(DTT1,-10.0)
C
CCCCCC IMPORTANT, HERE THE LINES WERE CHANGED FROM THE ORIGINAL
CCCCCC SCHEME IN THE PENN STATE/NCAR MODEL
C
C
C
DTDT(I,NK) = DTT1/TIMEC
DQDT(I,NK) = (QG(K)-Q0(K))/TIMEC
C
610 CONTINUE
RAINCV(I) = .1* DELT *CPR*AGO
*
*...put the rainfall rate in ZCRR...
*
*
ZCRR(I) = 1000.*RAINCV(I)/(DELT*100.)
C
C WE RETURN THE PRIMARY RESULTS OF THE FCP
C WHEN THERE IS CONVECTIVE ADJUSTMENTS
C
650 IF (NCA(I).EQ.NCAPRE) NCA(I) = NCA(I) - 1
*
*
************************************************************
* END OF THE MAIN LOOP ON INDEX "I"
************************************************************
*
*
* INVERT VERTICALLY SOME FIELDS
* -----------------------------
*
kfin=kx/2
*
do k=1,kfin
*
nk = kx-k+1
*
*VDIR NODEP
do i=1,ix
*
tempo = areaup(i,k )
areaup(i,k ) = areaup(i,nk)
areaup(i,nk) = tempo
*
end do
*
end do
*
* CONVERT UPDRAFT AREAS INTO CLOUD FRACTIONS
* ------------------------------------------
*
do k=1,kx
do i=1,ix
clouds(i,k) = areaup(i,k)/dxdy(i)
end do
end do
*
*
*
RETURN
END