!-------------------------------------- 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/R CONSUN
C -------------------------------------------------------------------
*
#include "phy_macros_f.h"
SUBROUTINE CONSUN1 ( STT , SQT , SWT , SRR , SSR , SCF , 1,6
& CTT , CQT , CWT , CRR , CSR , CCF ,
& TP , TM , QP , QM , CWP , CWM ,
& PSP , PSM , ilab , DBDT , S , TAU ,
& PRFLX , SWFLX , F12 , FEVP , ICEFRAC,
& CLR , CLS ,
& ni , nlev )
*
#include "impnone.cdk"
*
Integer ni , nlev, modp
Real STT(ni,nlev) , SQT(ni,nlev) , SWT(ni,nlev) ,
& CTT(ni,nlev) , CQT(ni,nlev) , CWT(ni,nlev) ,
& SRR(ni) , SSR(ni) , SCF(ni,nlev) ,
& CRR(ni) , CSR(ni) , CCF(ni,nlev) ,
& PRFLX(ni,nlev+1), SWFLX(ni,nlev+1),
& TP
(ni,nlev) , TM(ni,nlev) ,
& QP(ni,nlev) , QM(ni,nlev) ,
& CWP(ni,nlev) , CWM(ni,nlev) ,
& PSP(ni) , PSM(ni) ,
& DBDT(ni) , S(ni,*) ,
& TAU , F12(ni,nlev) , FEVP(ni,nlev),
& ICEFRAC(ni,nlev) , CLR(ni,nlev) , CLS(ni,nlev)
*
Integer ilab(ni,nlev)
*
*Authors
* Claude Girard and Gerard Pellerin (1995)
*
*Revision
* 001 G.Pellerin (Fev 97) Modify onset of downdraft below 500mb
* 002 G.Pellerin (Nov 01) Remove negative specific humidity
* generation in the stratosphere
* 003 S. Menard and B. Bilodeau (Feb 2003) - Add diagnostics
* for AURAMS
* 004 L. Spacek (May 2003) version IBM
* - calls to vsexp routine (from massvp4 library)
* - calls to optimized routine MFOQST
* 005 R. McTaggart-Cowan (Jul 2006) - inline function FMROFT
* 006 B. Bilodeau (May 2007)
* - clip on xpradd to avoid the generation of
* infinitesimal precipitation
*
*Object
*
* This routine deals with parameterization of condensation
* and associated generation of precipitation from liquid water
*
* a) parameterization of stratiform condensation (SUNDQVIST flavour)
* b) convective temperature and humidity changes, along with a cloud
* fraction, are imported from a convection parameterization scheme.
* c) parameterization of precipitation generation (SUNDQVIST flavour)
*
*Arguments
*
* - Outputs -
* STT large scale (stable) temperature tendency
* SQT large scale (stable) specific humidity tendency
* SWT large scale (stable) cloud water tendency
* SRR large scale (stable) rain rate
* SSR large scale (stable) snow rate
* SCF large scale (stable) cloud fraction
* - Inputs/Outputs
* CTT convective temperature tendency
* CQT convective specific humidity tendency
* - Outputs -
* CWT convective cloud water tendency
* CRR convective rain rate
* CSR convective snow rate
* CCF convective cloud fraction
* - Inputs
* TP temperature at (t+dt) before condensation
* TM temperature at (t-dt)
* QP specific humidity at (t+dt) before condensation
* QM specific humidity at (t-dt)
* CWP cloud water content at (t+dt) before condensation
* CWM cloud water content at (t-dt)
* PSP surface pressure at (t+dt)
* PSM surface pressure at (t-dt)
* S sigma level values
* PRFLX flux of liquid precipitation
* SWFLX flux of solid precipitation
* FEVP evaporation of precipitation
* F12 cloud to rainwater collection tendency
* ICEFRAC ice fraction
* CLR not used
* CLS not used
* ilab label array from convective scheme
* ni number of grid points in the horizontal
* nlev number of levels
* TAU timestep
*
* Note
*
*
**
C-----------------------------------------------------------------------
C I) NAMES OF PARAMETERS AND OTHER QUANTITIES
C ------------------------------------------------------------
C
C CBFEFF INCREASES CONVERSION RATE DUE TO DUE TO PRESENCE
C OF ICE IN PRECIPITATION COMING IN FROM ABOVE
C CFREEZ INCREASES CONVERSION RATE BELOW TEMP CTFRZ1
C COALES INCREASES CONVERSION RATE DUE TO PRECIPITATION
C COMING IN FROM ABOVE
C CONAE FACTOR TO TUNE TABLE LOOK-UP FOR TETA-AE
C CTFRZ1 TEMP BELOW WHICH CONVERSION RATE IS INCREASED
C cumask SET = 0 IF CONVECTION, OTHERWISE = 1
C DPRG DELTA-P DIVIDED BY GRAVITY
C HDCWAD TENDENCY OF CLOUD WATER DUE TO EFFECTS OTHER
C THAN CONDENSATION
C HDQAD TENDENCY OF VAPOUR DUE TO EFFECTS OTHER THAN
C CONDENSATION
C HDTAD TENDENCY OF TEMPERATURE DUE TO EFFECTS OTHER THAN
C CONDENSATION
C HDPMX MAXIMUM PRECIPITATION CHANGE DUE TO EVAPORATION
C HPK = P AT SIGMA
C HQSAT SATURATION SPECIFIC HUMIDITY: Qs
C HSQ dQs/dT
C HSQ2 dQs/dlnP
C HU RELATIVE HUMIDITY OF THE ENVIRONMENT
C PRCPCU RATE OF CONVECTIVE PRECIPITATION AT LEVEL K
C PRCPST RATE OF STRATIFORM PRECIPITATION AT LEVEL K
C
C HCCU CONVERSION RATE FROM CLOUD TO PRECIP DROPS IN
C CONVECTIVE CLOUD
C HCST CONVERSION RATE FROM CLOUD TO PRECIP DROPS IN
C STRATIFORM CLOUD
C HE273 SATURATION VAPOUR PRESSURE AT T=273K
C HKMELT COEFFICIENT FOR MELTING OF ICE
C HMRCU CLOUD WATER MIXING RATIO AT WHICH CONVERSION BECOMES
C EFFICIENT IN CONVECTIVE CLOUD
C HMRST CLOUD WATER MIXING RATIO AT WHICH CONVERSION BECOMES
C EFFICIENT IN STRATIFORM CLOUD
C HPS TIME AVERAGED SURFACE PRESSURE
C HUZ00 MODIFIED HU00
C HU00 THRESHOLD RELATIVE HUMIDITY FOR STRATIFORM
C CONDENSATION
C HU0MAX MAXIMUN ALLOWABLE VALUE OF MODIFIED HU00
C HU0MIN MINIMUN ALLOWABLE VALUE OF MODIFIED HU00
C STPEVP EVAPORATION COEFFICIENT FOR STRATIFORM PRECIPITATION
C TABDE DIFFERENCE IN SATURATION VAPOUR PRESSURE OVER
C WATER AND ICE
C TABFBF BERGERON-FINDEISEN EFFECT FROM (DEWI*TABICE)
C TABICE PROBABILITY FOR ICE CRYSTALS AS A FUNCTION OF
C TEMPERATURE
C-----------------------------------------------------------------------
C II) DECLARATIONS
C ------------------------------------------------------------
C
REAL XCOND , XN , HDPAD , ELOFT , HSQ2 , HDQAD ,
& HDQSAD , PRMOD , HU0MIN , XDE , XPRB , BFMOD ,
& XK , HFCOX , XFT , HFREZX , HFRCOA , HFMRX ,
& XFIX , YM , YMMIN , XXP , XHJ , XF ,
& XFPRIM , ZCWP , XPRADD , DTMELT , DMELT , EVAPRI ,
& XEVACU , XP , QINCR , HP0 , HE273 , HEDR ,
& HDLDCP , HELDR , HEDLDR , CONAE , AECON , CFREEZ ,
& COALES , SIGMIN
REAL CBFEFF , CTFRZ1 , HCCU , HMRCU , HMRST , HCST ,
& HKPEVP , STPEVP , HKMELT , XDT , DSNMAX , XSNOW ,
& HU0MAX , rTAU , SNOW , PRCP , CONET ,
& COEF , COVER , HMR , ZDCW , XT ,
& SIGMAX , T0I , WEIGHT , x , y , z ,
& TCI , TSCALE , APRI , TOPEQ0 , TODPMX , temp1 ,
& temp2 , HBMRX , XB , XBB , XBHU , xo
integer il , jk,inr
real xxp_t,xhj_t,xf_t,xfprim_t,xjaa,hsq,huz00t,hu,hcondt
real xwrk,HACCES
C
c***
#include "dintern.cdk"
#include "consphy.cdk"
c****
************************************************************************
* AUTOMATIC ARRAYS
************************************************************************
*
AUTOMATIC ( CUMASK , INTEGER , (NI,NLEV))
AUTOMATIC ( HPS , REAL , (NI ))
AUTOMATIC ( COVBAR , REAL , (NI ))
AUTOMATIC ( DUSTAB , REAL , (NI ))
AUTOMATIC ( PRCPST , REAL , (NI ))
AUTOMATIC ( STSNOW , REAL , (NI ))
AUTOMATIC ( PRCPCU , REAL , (NI ))
AUTOMATIC ( CUSNOW , REAL , (NI ))
AUTOMATIC ( HSCT , REAL , (NI ))
AUTOMATIC ( SUBCLD , REAL , (NI,NLEV))
AUTOMATIC ( HDQMX , REAL , (NI ))
AUTOMATIC ( HDPMX , REAL , (NI ))
AUTOMATIC ( HCOND , REAL , (NI ))
AUTOMATIC ( HQSAT , REAL , (NI,NLEV))
AUTOMATIC ( HQSATP , REAL , (NI,NLEV))
AUTOMATIC ( HLDCP , REAL , (NI ))
AUTOMATIC ( HDCWAD , REAL , (NI ))
AUTOMATIC ( DPRG , REAL , (NI,NLEV))
AUTOMATIC ( HCIMP , REAL , (NI ))
AUTOMATIC ( HDTAD , REAL , (NI ))
AUTOMATIC ( HPK , REAL , (NI,NLEV))
AUTOMATIC ( PRESP , REAL , (NI,NLEV))
AUTOMATIC ( PRESM , REAL , (NI,NLEV))
AUTOMATIC ( XPRBT , REAL , (NI ))
AUTOMATIC ( XDET , REAL , (NI ))
AUTOMATIC ( XDET1 , REAL , (NI ))
AUTOMATIC ( CONETT , REAL , (NI ))
AUTOMATIC ( PRMODT , REAL , (NI ))
AUTOMATIC ( YMT , REAL , (NI ))
AUTOMATIC ( HBMRXT , REAL , (NI ))
AUTOMATIC ( COEFT , REAL , (NI ))
AUTOMATIC ( XFIXT , REAL , (NI ))
AUTOMATIC ( XTMP , REAL*8 , (NI ))
AUTOMATIC ( XTMP1 , REAL*8 , (NI ))
*
************************************************************************
C
C-----------------------------------------------------------------------
C III) STATEMENT FUNCTIONS
C -----------------------------------------------------------
C
*
REAL Z1, Z2, Z3, Z4, Z5
*
#include "fintern.cdk"
C
C
C TEMPERATURE FUNCTION TO MULTIPLY HMRCU AND HMRST FOT T<273
C
Z1(XT) = MIN(1.33*EXP(-(min(0.,(XT-TRPL))*.066)**2) , 1.0)
*
Z2(XT) = ABS (XT - 232.) / 18.
*
Z3(XT) = Z2(XT) * (1. + Z2(XT) * (1. + 1.333 * Z2(XT)))
*
Z4(XT) = Z3(XT) / (1. + Z3(XT)) * SIGN(1.0,XT-232.)
*
Z5(XT) = max(0.5*0.15*(1.07+Z4(XT)),0.03)
C
C
C-----------------------------------------------------------------------
C IV) VALUES OF CONSTANTS - IN SI UNITS - INCLUDING DERIVED ONES
C -----------------------------------------------------------
C
HE273 = 610.78
T0I = 1./TRPL
TCI = 232.
TOPEQ0 = 268.
TODPMX = 256.
TSCALE = (TODPMX - TCI)*SQRT(2.)
APRI = 1./(1.-EXP(-((TOPEQ0-TCI)/TSCALE)**2))
C
HP0 = 1.E5
HEDR = EPS1/RGASD
HEDLDR = EPS1*CHLF/RGASD
HDLDCP = CHLF/CPD
C
C-----------------------------------------------------------------------
C V) PARAMATER VALUES IN SI UNITS
C ------------------------------------------------------------
C
CONAE = 0.15
AECON = EXP(CONAE)
rTAU = 1. / TAU
C
C-----------------------------------------------------------------------
C VI) PREPARATIONS
C ------------------------------------------------------------
C
do il = 1, ni
HPS(il) = ( PSP(il) + PSM(il) ) * 0.5
end do
C
DO jk = 1, nlev
do il = 1, ni
HPK(il,jk) = S(il,jk) * HPS(il)
end do
END DO
C
do il = 1, ni
DPRG(il,1) = 0.5 * ( HPK(il,2) - HPK(il,1) ) / GRAV
end do
C
DO jk = 2, nlev-1
do il = 1, ni
DPRG(il,jk) = 0.5 * ( HPK(il,jk+1) - HPK(il,jk-1) ) / GRAV
end do
END DO
C
do il = 1, ni
DPRG(il,nlev) = ( 0.5 * ( HPK(il,nlev) - HPK(il,nlev-1) )
& + S(il,nlev+1) * HPS(il) - HPK(il,nlev) ) / GRAV
end do
C
C SUNQVIST stratiform condensation scheme
C ------------------------------------------------------------
C
C
C A) LINKAGE CONDITIONS
C
C FROM KUO ilab DEFINE cumask
C FROM cumask CALCULATE subcld
C
DO jk = 1, nlev
do il = 1, ni
cumask(il,jk) = 1
if( ilab(il,jk).eq.2 ) cumask(il,jk) = 0
end do
END DO
C
do il =1, ni
subcld(il,1) = 0.
end do
C
*VDIR NOLSTVAL
DO jk = 2, nlev
do il = 1, ni
subcld(il,jk) = subcld(il,jk-1)
if( cumask(il,jk).eq.0 .and. HPK(il,jk).le.40000. )
% subcld(il,1) = 1.
C cloud top above 400 mb
C to indicate a likely downdraft below 500 mb
if( subcld(il,1).gt.0. .and. HPK(il,jk).gt.50000. )
% subcld(il,jk)=min(1.,max(0.,2.5*(s(il,jk)-0.5)))
if( cumask(il,jk).eq.1 .and. cumask(il,jk-1).eq.0)
% subcld(il,jk) = 1.
end do
END DO
do il =1, ni
subcld(il,1) = 0.
end do
C
C
C B) PARAMATER VALUES IN SI UNITS
C
HU0MIN = 0.85
HU0MAX = 0.975
SIGMIN = 0.7
SIGMAX = 0.9
C
XBHU = ( HU0MAX - HU0MIN ) / ( SIGMAX - SIGMIN )
xo = 1.e-12
C
C***********************************************************************
C
C HERE BEGINS THE CALCULATION OF STRATIFORM CONDENSATION
C
C***********************************************************************
C
C SUNQVIST cloud water and precipitation scheme
C ------------------------------------------------------------
C
C
C A) LINKAGE CONDITIONS
C
C
C-----------------------------------------------------------------------
C
C B) PARAMATER VALUES IN SI UNITS
C
CFREEZ = 0.12
COALES = 300.
CBFEFF = 4.0
CTFRZ1 = 263.
HCST = 1.E-4
HCCU = 1.E-4
HMRCU = 5.E-4
HMRST = 3.E-4
HKPEVP = 4.15E-4
HKPEVP = 2.E-4
STPEVP = 2. * GRAV * HKPEVP
HKMELT = 3.E-5
xo = 1.E-16
C
C-----------------------------------------------------------------------
C
C C) INITIALIZATIONS
C
do il = 1, ni
PRCPST(il) = 0.
STSNOW(il) = 0.
PRCPCU(il) = 0.
CUSNOW(il) = 0.
COVBAR(il) = 0.
HSCT(il) = 0.
PRFLX(il,1) = 0.
SWFLX(il,1) = 0.
end do
C
DO jk = 1, nlev
do il = 1, ni
HSCT(il) = HSCT(il) + amin1( 0. , CTT(il,jk) ) * DPRG(il,jk)
end do
end do
DO jk = 1, nlev
do il = 1, ni
PRESP(il,jk)=S(il,jk)*PSP(il)
PRESM(il,jk)=S(il,jk)*PSM(il)
enddo
ENDDO
MODP=3
CALL MFOQST
(HQSAT, TM,S,PRESM,MODP,NI,NLEV,NI)
CALL MFOQST
(HQSATP,TP,S,PRESP,MODP,NI,NLEV,NI)
DO jk = 1, nlev
do il = 1, ni
temp1 = TM(il,jk)
HLDCP(il)=-(((max(temp1,tci)-tci)/tscale)**2)
enddo
C
call vsexp(HLDCP,HLDCP,ni)
C
do il = 1, ni
C
xwrk= max(((apri*(HLDCP(il)-1.0))+1.0),0.0)
HLDCP(il)=(CHLC + (CHLF * xwrk))/CPD
xprbt(il)=xwrk
temp1 = HQSAT(il,jk)
temp2 = TM(il,jk)
HSQ= FODQS
( temp1 , temp2 )
C
HSQ2 = - HQSAT(il,jk) * ( 1. + DELTA * HQSAT(il,jk) )
HU= QP(il,jk)/HQSATP(il,jk)
HU = amin1( HU, 1. )
HU = amax1( HU, 0. )
c
HUZ00t= HU0MIN + XBHU * ( S(il,jk) - SIGMIN )
HUZ00t= max( HU0MIN, min( HU0MAX, HUZ00t ) )
C
x = 1.+ 0.15 * max( 0., 238. - TM(il,jk) )
x = ( HU0MAX - HUZ00t ) * ( 1. - 1. / x )
HUZ00t= AMIN1( HUZ00t + x , HU0MAX )
c
SCF(il,jk) = 1. - SQRT( (1.-HU) / (1.-HUZ00t) )
SCF(il,jk) = amax1( SCF(il,jk)-CCF(il,jk) , 0. )
if( SCF(il,jk) .eq. 0. ) then
HCONDt = - CWP(il,jk) * rTAU * cumask(il,jk)
else
HCONDt = 0.
endif
XB = SCF(il,jk)
XN = 2. * HQSAT(il,jk) * (1.-HUZ00t) * XB * ( 1.-XB )
XK = ( XB * ( XN - xo ) + xo )
& / ( XB * ( XN + CWM(il,jk) ) + xo )
C
QM(il,jk) = amin1( QM(il,jk) , HQSAT(il,jk) )
C
HDTAD(il) = ( TP
(il,jk) - TM(il,jk) ) * rTAU
HDQAD= ( QP(il,jk) - QM(il,jk) ) * rTAU
HDCWAD(il) = ( CWP(il,jk) - CWM(il,jk) ) * rTAU
C
HDPAD = ( PSP(il) - PSM(il) ) / HPS(il) * rTAU
HDQSAD = HSQ * HDTAD(il) + HSQ2 * HDPAD
HDQSAD = max( HDQSAD, - HQSAT(il,jk) * rTAU )
HCIMP(il) = 1. / ( 1. + HLDCP(il) * HSQ )
HACCES= ( HDQAD- HU* HDQSAD )
& / ( 1. + HU * HLDCP(il)*HSQ )
HDQMX(il) = ( ( QM(il,jk) - HQSAT(il,jk) ) * rTAU
& + HDQAD- HDQSAD ) * HCIMP(il)
C
C ( n.b.important limits: if b=0, then k=1; if b=1, then k=0 )
C
XCOND = ( 1. - XK * ( 1. - XB ) ) * HACCES
XCOND = amax1( XCOND , - CWP(il,jk) * rTAU )
C
HCONDt = HCONDt + XCOND
C
C
C ------------------------------------------------------------
C CORRECT THE above CALCULATIONS OF NET CONDENSATION
C a) IN CASES OF RESIDUAL SUPER-SATURATION (because, in cloudy
C cases, moistening/cond. may have been over/under-estimated
C or super-saturation was present initially)
C b) FOR diagnosed (b=0) CLEAR SITUATION LEADING eventually
C TO SUPER-SATURATION
C ------------------------------------------------------------
C
QINCR = HDQMX(il) - HCONDt
C
XCOND = amax1( QINCR, 0.0 ) * cumask(il,jk)
C
HCOND(il) = HCONDt + XCOND
C
HDPMX(il) = amax1 ( 0. , - QINCR ) * DPRG(il,jk)
C
end do
C
C-----------------------------------------------------------------------
C
C D) CALCULATIONS
C
do il = 1, ni
temp1 = TM(il,jk)
HELDR = HEDR * CPD * HLDCP(il)
xdet(il)=HELDR*(T0I - 1./temp1)
xdet1(il)=HEDLDR*(T0I - 1./temp1)
enddo
C
call vsexp(xdet,xdet,ni)
call vsexp(xdet1,xdet1,ni)
C
do il = 1, ni
C
CONET = amax1( 0. , CTT(il,jk) + HSCT(il) / DPRG(il,jk) )
HSCT(il) = HSCT(il)+(amax1(0.,CTT(il,jk))-CONET)*DPRG(il,jk)
CONETt(il) = HCOND(il) + CONET/HLDCP(il)
PRCP = PRCPST(il)+PRCPCU(il)
SNOW = STSNOW(il)+CUSNOW(il)
COVER = SCF(il,jk) + CCF(il,jk) + 1.E-2
WEIGHT = ( SCF(il,jk) + 1.E-2 ) / COVER
HMR = HMRST * WEIGHT + HMRCU * (1-WEIGHT)
COEF = HCST * WEIGHT + HCCU * (1-WEIGHT)
C
C ------------------------------------------------------------
C Factors for coalescence HFCOX, freezing HFREZX.
C Reduction of HMR at low temperatures, HFMRX
C Modified probability of ICE
C resulting from ICE in PRECIP from above
C ------------------------------------------------------------
C
temp1 = TM(il,jk)
xde = max(0.0,MIN(((HE273/temp1*xdet(il)*
* (1. - xdet1(il)))*9.248487), 1.0))
XPRB = xprbt(il)
if (temp1 > 250.) then
XFT = Z1(temp1)
else
XFT = Z5(temp1)
endif
C
PRMODt(il) = XPRB + ( 1. - XPRB ) * SNOW / ( PRCP + 1.E-7 )
BFMOD = PRMODt(il) * ( 1. - XPRB ) * XDE
C
HFCOX = 1. + COALES * SQRT( PRCP )
C
HFREZX = 1. + CBFEFF * BFMOD
HFREZX = HFREZX * ( 1. + CFREEZ * ( 1. - XFT ) / XFT )
C
HFRCOA = HFCOX * HFREZX
HFMRX = HMR * XFT / HFCOX
HBMRXt(il) = COVER * HFMRX
C
C ------------------------------------------------------------
C Special treatment for T.LT.236K
C ------------------------------------------------------------
C
temp1 = amax1(0.,amin1(1.,0.25*(TM(il,jk)-232.)))
HFRCOA = temp1 * HFRCOA + ( 1.- temp1 ) * 5.
C ------------------------------------------------------------
C Fixed part of the equation normalized by 2.*b*Mr
C ------------------------------------------------------------
C
XFIXt(il) = ( 2. * CWM(il,jk) + TAU *
& (HDCWAD(il) + CONETt(il)))/( 2. * HBMRXt(il) )
C
C
C ------------------------------------------------------------
C Conversion rate times 2*dt
C ------------------------------------------------------------
C
COEFt(il) = 0.5 * COEF * HFRCOA * TAU
C
C ------------------------------------------------------------
C First guess YM is M(t-dt) normalized by b*Mr
C ------------------------------------------------------------
C
YMt(il) = CWM(il,jk) / HBMRXt(il)
C
C ------------------------------------------------------------
C To make M(t+dt).ge.0, YM has to be .ge. M(t-dt)/(2*b*Mr)
C ------------------------------------------------------------
C
xdet1(il)=0.5 * YMt(il)
enddo
C
C ------------------------------------------------------------
C 5 NEWTON - RAPHSON ITERATIONS
C ------------------------------------------------------------
do inr=1,5
do il=1,ni
xdet(il)=(-min(ymt(il)*ymt(il),25.0))
enddo
C
call vsexp(xdet,xdet,ni)
C
do il=1,ni
xxp_t = xdet(il)
xhj_t=1 + coeft(il)*(1-xxp_t)
xf_t = xhj_t*ymt(il) -xfixt(il)
xfprim_t = xhj_t + 2.*coeft(il)*ymt(il)*ymt(il)*xxp_t
ymt(il) = amax1 ( ymt(il) - xf_t/xfprim_t,xdet1(il))
enddo
enddo
C
C ------------------------------------------------------------
C Rate of change of cloud water content
C Generation of precipitation
C ------------------------------------------------------------
C
do il = 1, ni
temp1 = TP
(il,jk)
xdet(il)=-(((max(temp1,tci)-tci)/tscale)**2)
enddo
C
call vsexp(xdet,xdet,ni)
C
do il=1,ni
ZCWP = amax1( 2. * HBMRXt(il) * YMt(il) - CWM(il,jk) , 0. )
C
ZDCW = ( ZCWP - CWP(il,jk) ) * rTAU
C
XPRADD = DPRG(il,jk) * amax1( CONETt(il) - ZDCW , 0. )
!
! we make sure that no infinitesimal precipitation is generated
if (abs(conett(il)-zdcw).le.abs(spacing(zdcw))) xpradd = 0.
C
SWT(il,jk) = ZDCW * cumask(il,jk)
*
* Diagnostics for AURAMS
*
F12(il,jk) = amax1( CONETt(il) - ZDCW , 0. )
if (ZCWP.lt.1.0e-09) F12(il,jk)=0.0
ICEFRAC(il,jk) = max(((apri*(xdet(il)-1.0))+1.0),0.0)
PRCPST(il) = PRCPST(il) + XPRADD * cumask(il,jk)
STSNOW(il) = STSNOW(il) + PRMODt(il)*XPRADD * cumask(il,jk)
C
CWT(il,jk) = ZDCW * (1-cumask(il,jk))
PRCPCU(il) = PRCPCU(il) + XPRADD * (1-cumask(il,jk))
CUSNOW(il) = CUSNOW(il) + PRMODt(il)*XPRADD * (1-cumask(il,jk))
C
C ------------------------------------------------------------
C Melting of stratiform snow
C ------------------------------------------------------------
C
XB = SCF(il,jk)
XBB = COVBAR(il)
XDT = TM(il,jk) - TRPL
& + TAU * ( HDTAD(il) + HLDCP(il) * CONETt(il) )
XDT = amax1( XDT , 0. )
DSNMAX = XDT * DPRG(il,jk) / ( TAU * HDLDCP )
XN = HKMELT * ( TAU * HDLDCP )
z = SQRT ( amax1( xo , XBB ) )
C
SNOW = STSNOW(il)
x = amax1( SNOW , 1.E-16 )
x = SQRT( x )
y = 0.5 * XN * DSNMAX / x
y = XBB * y / ( z + 0.5 * XN * x )
y = amin1( y , 1. )
XSNOW = SNOW * ( 1. - y ) * * 2
C
DMELT = amin1( SNOW - XSNOW , XBB * DSNMAX )
DTMELT = HDLDCP * DMELT / DPRG(il,jk)
C
STSNOW(il) = amax1( 0. , STSNOW(il) - DMELT )
C
C ------------------------------------------------------------
C Melting of convective snow
C ------------------------------------------------------------
C
SNOW = CUSNOW(il)
x = amax1( SNOW , 1.E-16 )
x = SQRT( x )
y = 0.5 * XN * DSNMAX / x
y = y / ( 1. + 0.5 * XN * x )
y = amin1( y , 1. )
XSNOW = SNOW * ( 1. - y ) * * 2
C
DMELT = amin1( SNOW - XSNOW , DSNMAX )
C
CUSNOW(il) = amax1( 0. , CUSNOW(il) - DMELT )
C
C ------------------------------------------------------------
C Evaporation of stratiform precipitation
C ------------------------------------------------------------
C
PRCP = PRCPST(il)
XN = STPEVP * TAU / HCIMP(il)
x = amax1( PRCP , 1.E-16 )
x = SQRT ( x )
y = 0.5 * XN * HDPMX(il) / x
y = XBB * y / ( z + 0.5 * XN * x )
y = amin1( y , 1. )
XP = PRCP * ( XB + ( 1. - XB ) * ( 1. - y ) * * 2 )
C
EVAPRI = amin1( PRCP - XP , XBB * HDPMX(il) )
C
IF (PRCPST(il).GT.0.) FEVP(il,jk) = EVAPRI/(PRCPST(il)+1.0E-28)
C
PRCPST(il) = amax1( 0. , PRCPST(il) - EVAPRI )
STSNOW(il) = amax1( 0. , STSNOW(il) - EVAPRI )
HCOND(il) = HCOND(il) - EVAPRI / DPRG(il,jk)
C
COVBAR(il) = XBB * ( 1. - XB ) + XB
C
C ------------------------------------------------------------
C Evaporation of precipitation under the convective cloud
C ------------------------------------------------------------
C
EVAPRI = - DBDT(il) * TAU * HDQMX(il) * DPRG(il,jk)
EVAPRI = EVAPRI * subcld(il,jk)
EVAPRI = amin1( PRCPCU(il) , amax1( 0. , EVAPRI ) )
XEVACU = EVAPRI / DPRG(il,jk)
C
PRCPCU(il) = PRCPCU(il) - EVAPRI
CUSNOW(il) = amax1( 0., (CUSNOW(il) - EVAPRI) )
C
C ------------------------------------------------------------
C TEMPERATURE AND MOISTURE TENDENCIES, PRECIPITATION FLUXES
C ------------------------------------------------------------
C
STT(il,jk) = - DTMELT + HCOND(il) * HLDCP(il)
SQT(il,jk) = - HCOND(il)
C
CTT(il,jk) = CTT(il,jk) - XEVACU * HLDCP(il)
CQT(il,jk) = CQT(il,jk) + XEVACU
C
PRFLX(il,jk+1) = PRCPST(il) + PRCPCU(il)
SWFLX(il,jk+1) = STSNOW(il) + CUSNOW(il)
C
end do
END DO
C
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C
C 9) SAVE THE STRATIFORM AND CONVECTIVE PRECIPITATION RATES
C AND THE LIQUID AND SOLID PRECIPITATION FLUXES
C ------------------------------------------------------------
C
do il = 1, ni
SRR(il) = PRCPST(il) - STSNOW(il)
SSR(il) = STSNOW(il)
end do
C
do il = 1, ni
CRR(il) = PRCPCU(il) - CUSNOW(il)
CSR(il) = CUSNOW(il)
end do
C
DO jk = 1, nlev+1
do il = 1, ni
PRFLX(il,jk) = PRFLX(il,jk) - SWFLX(il,jk)
end do
END DO
RETURN
C
C-----------------------------------------------------------------------
C
C***********************************************************************
C
C HERE ENDS THE CALCULATION OF CLOUD WATER CONTENT
C AND PRECIPITATION
C
C***********************************************************************
C
CONTAINS
#include "fintern90.cdk"
END