!copyright (C) 2001 MSC-RPN COMM %%%RPNKUO%%%
***S/P KUOSTD
*
#include "phy_macros_f.h"
SUBROUTINE KUOSTD ( CTT,CQT,ilab,CCF,DBDT, 1,7
+ TP,TM,QP,QM,GZM,PSP,PSM,
+ SIGMA, TAU, NI, NK )
#include "impnone.cdk"
*
C
INTEGER NI,NK
REAL CTT(NI,NK),CQT(NI,NK)
INTEGER ilab(NI,NK)
REAL CCF(NI,NK),DBDT(NI)
REAL TP
(NI,NK),TM(NI,NK),QP(NI,NK),QM(NI,NK),GZM(NI,NK)
REAL PSP(NI),PSM(NI),SIGMA(NI,NK)
REAL TAU
*
*Authors
* Claude Girard and Gerard Pellerin 1995
*Revisions
*001 G. Pellerin (Mai 03) - CVMG... Replacements
*002 G. Pellerin (Mai 03) - Conversion IBM
* - calls to vexp routine (from massvp4 library)
* - calls to optimized routine MFOQST
*
*Object
* To calculate the convective tendencies of T and Q
* according to the assumptions of Kuo (1974).
* Geleyn's method is used to obtain the cloud profiles.
*
*Arguments
*
* - Outputs -
* CTT convective temperature tendency
* CQT convective specific humidity tendency
* ilab flag array: an indication of convective activity
* CCF estimated cumulus cloud fraction
* DBDT estimated averaged cloud fraction growth rate
*
* - Inputs -
* TP temperature at (t+dt)
* TM temperature at (t-dt)
* QP specific humidity at (t+dt)
* QM specific humidity at (t-dt)
* GZM geopotential
* PSP surface pressure at (t+dt)
* PSM surface pressure at (t-dt)
* SIGMA sigma levels
* TAU effective timestep (2*dt)
* NI horizontal dimension
* NK vertical dimension
*
*Notes
* The routine is divided into 5 parts:
* 1)allocation and position for work space
* 2)preliminary computations
* 3)cloud ascent and flagging
* 4)total moisture convergence and mean beta-parameter
* calculations
* 5)cloud heating and moistening (drying) calculations
*
**
LOGICAL LO
INTEGER IS,IKA,IKB,jk,jl,MODP
REAL ZQCD,ZK,temp1,temp2
REAL ZTVC
REAL ENTRM,TAUCU,CHLS,DELTA2
REAL ZCOR,ZEPSDP,ZKQ
real rCPD,rCPDv,rGRAV3
*
************************************************************************
* AUTOMATIC ARRAYS
************************************************************************
*
AUTOMATIC ( LO1 , LOGICAL , (NI ))
*
AUTOMATIC ( ZCP , REAL , (NI ))
AUTOMATIC ( ZLDCP0, REAL , (NI ))
AUTOMATIC ( ZQSC , REAL , (NI ))
AUTOMATIC ( CPR , REAL , (NI ))
*
AUTOMATIC ( ZPP , REAL , (NI,NK))
AUTOMATIC ( ZDSG , REAL , (NI,NK))
AUTOMATIC ( ZDP , REAL , (NI,NK))
AUTOMATIC ( ZSDP , REAL , (NI,NK))
AUTOMATIC ( ZQAC , REAL , (NI,NK))
AUTOMATIC ( ZLDCP , REAL , (NI,NK))
AUTOMATIC ( ZTAC , REAL , (NI,NK))
AUTOMATIC ( ZSTAC , REAL , (NI,NK))
AUTOMATIC ( ZQSE , REAL , (NI,NK))
AUTOMATIC ( ZTC , REAL , (NI,NK))
AUTOMATIC ( ZQC , REAL , (NI,NK))
AUTOMATIC ( ZTE , REAL , (NI,NK))
AUTOMATIC ( ZQE , REAL , (NI,NK))
AUTOMATIC ( ZTVE , REAL , (NI,NK))
AUTOMATIC ( ZDQ , REAL , (NI,NK))
AUTOMATIC ( ZDT , REAL , (NI,NK))
AUTOMATIC ( ZSQAC , REAL , (NI,NK))
AUTOMATIC ( ZBETA , REAL , (NI,NK))
AUTOMATIC ( ZSDQ , REAL , (NI,NK))
AUTOMATIC ( ZSDT , REAL , (NI,NK))
*
************************************************************************
C
C* PHYSICAL CONSTANTS.
C -------- ----------
C
#include "consphy.cdk"
#include "dintern.cdk"
#include "fintern.cdk"
C
ENTRM = 5.E-6
TAUCU = 1800.
DELTA2 = CPV/CPD - 1.
CHLS = CHLC + CHLF
rCPD = 1./CPD
rgrav3 = 1./(GRAV*1.E3)
C
C* SECURITY PARAMETER.
C --------------------
C
C *ZEPSDP* AVOIDS DIVIDING BY ZERO IN THE ABSENCE OF CLOUD
C
ZEPSDP=1.E-12
C
C ------------------------------------------------------------------
C
C* 1. ALLOCATION AND POSITION FOR WORK SPACE.
C ---------- --- -------- --- ---- ------
C
C***
C
C METHOD.
C -------
C
C IN (3) A NEARLY ADIABATIC ASCENT IS ATTEMPTED FOR A CLOUD
C PARCEL STARTING FROM THE LOWEST MODEL LAYER. THIS CLOUD ASCENT
C IS COMPUTED IN TERMS OF TEMPERATURE AND SPECIFIC HUMIDITY.
C ENTRAINMENT IS SIMULATED VIA AN ENTRAINMENT PARAMETER.
C THE LAYERS ARE FLAGGED ACCORDING TO THE FOLLOWING CODE:
C 0 = STABLE OR INACTIVE LAYER,
C 1 = PART OF THE WELL MIXED BOUNDARY LAYER OR DRY UNSTABLE LAYER,
C 2 = MOIST UNSTABLE OR ACTIVE OR CLOUD LAYER.
C 3 = LIFTING LEVEL IF DIFFERENT FROM THE GROUND.
C IN (4) THE TOTAL MOISTURE CONVERGENCE FOR EACH SLAB OF
C NON-0-FLAGS IS STORED INTO ALL THE CORRESPONDING LAYERS IF IT IS
C POSITIVE AND THE SAME IS DONE FOR THE MEAN OF 1-RELATIVE HUMIDITY
C FOR EACH CORRESPONDING SLAB OF 2-FLAGS.
C IN (5) THE ACTUAL MODIFICATIONS OF TEMPERATURE AND SPECIFIC
C HUMIDITY ARE COMPUTED. FIRST THE ENVIRONMENTAL MOISTENING IS
C TAKEN PROPORTIONAL TO THE MOISTURE CONVERGENCE WEIGHTED BY "BETA"
C AND TO THE SATURATION DEFICIT OF SPECIFIC HUMIDITY.
C SECOND THE FORMATION OF PRECIPITATION IS TAKEN PROPORTIONAL TO THE
C MOISTURE CONVERGENCE WEIGHTED BY "1 - BETA" AND TO THE
C TEMPERATURE DIFFERENCE BETWEEN THE CLOUD AND THE ENVIRONMENT.
C "BETA" , THE MOISTENING PARAMETER, IS A FUNCTION OF MEAN REL. HUM.
C A CLOUD-COVER VALUE IS OBTAINED BY COMPARING THE TIME AT WHICH THE
C ENVIRONMENT WOULD REACH EQUILIBRIUM WITH THE CLOUD TO A PRESCRIBED
C LIFE-TIME VALUE FOR THE CLOUD ITSELF.
C
C ------------------------------------------------------------------
C
C* 2. PRELIMINARY COMPUTATIONS.
C ----------- -------------
C
C* 2.1 ENVIRONMENTAL PROFILES AND PARAMETERS,
C* TEMPERATURE (times L/cp) AND MOISTURE ACCESSIONS
C* AND INITIALIZATIONS.
C
DO jl=1,NI
DBDT(jl) = 0.
LO = TP
(jl,NK).LT.TRPL
if (LO) then
ZLDCP0(jl) = CHLS * rCPD
else
ZLDCP0(jl) = CHLC * rCPD
endif
ZDSG(jl,1)=0.5*(SIGMA(jl,2)-SIGMA(jl,1))
ZDSG(jl,NK)=0.5*(1.-SIGMA(jl,NK-1))+0.5*(1.-SIGMA(jl,NK))
END DO
C
DO jk=2,NK-1
DO jl=1,NI
ZDSG(jl,jk)=0.5*(SIGMA(jl,jk+1)-SIGMA(jl,jk-1))
END DO
END DO
C
DO jk=1,NK
DO jl=1,NI
ZPP(jl,jk)=SIGMA(jl,jk)*PSP(jl)
ZDP(jl,jk)=ZDSG(jl,jk)*PSP(jl)
ZTE(jl,jk)=TP
(jl,jk)
END DO
END DO
C
MODP=3
CALL MFOQST
(ZQSE,ZTE,SIGMA,ZPP,MODP,NI,NK,NI)
DO jk=1,NK
DO jl=1,NI
! ZQSE(jl,jk)=FOQST( ZTE(jl,jk), ZPP(jl,jk) )
ZQE(jl,jk)=QM(jl,jk)
ZTVE(jl,jk) = FOTVT( ZTE(jl,jk), ZQE(jl,jk) )
LO = ZTE(jl,jk).LT.TRPL
C rCPDv=1./( CPD*(1.+DELTA2*ZQE(jl,jk)) )
if (LO) then
ZLDCP(jl,jk) = CHLS / ( CPD*(1.+DELTA2*ZQE(jl,jk)) )
else
ZLDCP(jl,jk) = CHLC / ( CPD*(1.+DELTA2*ZQE(jl,jk)) )
endif
C
ZTAC(jl,jk)=(TP
(jl,jk)-TM(jl,jk))*ZDP(jl,jk)/TAU
ZQAC(jl,jk)=(QP(jl,jk)-ZQE(jl,jk))*ZDP(jl,jk)/TAU
C
ZQAC(jl,jk)= ZQAC(jl,jk)*ilab(jl,jk)
C
ilab(jl,jk) = 0
CTT(jl,jk) = 0.0
CQT(jl,jk) = 0.0
CCF(jl,jk) = 0.0
END DO
END DO
C
C* 2.2 SPECIFY TC AND QC AT THE LOWEST LAYER TO START THE
C* CLOUD ASCENT. CHECK FOR POSITIVE MOISTURE ACCESSION
C* BETWEEN SURFACE AND CLOUD BASE.
C* ZQC=0 INDICATES STABLE CONDITIONS.
C
DO jl=1,NI
CPR(jl) = 0.
ZTC(jl,NK)=ZTE(jl,NK)
ZQC(jl,NK)=0.
IF (ZQAC(jl,NK).GT.0.) THEN
ZQC(jl,NK)=ZQE(jl,NK)
ilab(jl,NK) = 1
ENDIF
END DO
C
C ------------------------------------------------------------------
C
C* 3. CLOUD ASCENT AND FLAGGING.
C ----- ------ --- ---------
C
C* 3.1 CALCULATE TC AND QC AT UPPER LEVELS BY DRY ADIABATIC
C* LIFTING FOLLOWED BY LATENT HEAT RELEASE WHEN REQUIRED.
C* CONDENSATION CALCULATIONS ARE DONE WITH TWO ITERATIONS.
C***
DO jk=NK-1,1,-1
C***
DO jl=1,NI
ZCP(jl)=CPD*(1.+DELTA2*ZQC(jl,jk+1))
ZTC(jl,jk)=ZTC(jl,jk+1)+(GZM(jl,jk+1)-GZM(jl,jk))*
* (1./ZCP(jl)+ENTRM*MAX(0.,ZTC(jl,jk+1)-ZTE(jl,jk+1)))
ZQC(jl,jk)=ZQC(jl,jk+1)+(GZM(jl,jk+1)-GZM(jl,jk))*
* ( ENTRM*MAX(0.,ZQC(jl,jk+1)-ZQE(jl,jk+1)))
ZTVC = FOTVT( ZTC(jl,jk), ZQC(jl,jk) )
LO= ZTVC.GT.ZTVE(jl,jk) .AND. ZQC(jl,jk).NE.0.
IF (LO) ilab(jl,jk) = 1
END DO
C
CALL MFOQST
(ZQSC,ZTC(1,jk),SIGMA,ZPP(1,jk),MODP,NI,1,NI)
DO jl=1,NI
! ZQSC=FOQST( ZTC(jl,jk), ZPP(jl,jk) )
ZCOR=ZLDCP(jl,jk)*FODQS( ZQSC(jl), ZTC(jl,jk) )
ZQCD=AMAX1(0.,(ZQC(jl,jk)-ZQSC(jl))/(1.+ZCOR))
ZQC(jl,jk)=ZQC(jl,jk)-ZQCD
ZTC(jl,jk)=ZTC(jl,jk)+ZQCD*ZLDCP(jl,jk)
LO1(jl)=ZQCD.NE.0.
END DO
C
LO=.FALSE.
DO jl=1,NI
LO=LO.OR.LO1(jl)
END DO
C
IF (LO) THEN
CALL MFOQST
(ZQSC,ZTC(1,jk),SIGMA,ZPP(1,jk),MODP,NI,1,NI)
DO jl=1,NI
! ZQSC=FOQST( ZTC(jl,jk), ZPP(jl,jk) )
ZCOR=ZLDCP(jl,jk)*FODQS( ZQSC(jl), ZTC(jl,jk) )
ZQCD=(ZQC(jl,jk)-ZQSC(jl))/(1.+ZCOR)
IF(.not.LO1(jl)) ZQCD = 0.
ZQC(jl,jk)=ZQC(jl,jk)-ZQCD
ZTC(jl,jk)=ZTC(jl,jk)+ZQCD*ZLDCP(jl,jk)
END DO
ENDIF
C
DO jl=1,NI
ZTVC = FOTVT( ZTC(jl,jk), ZQC(jl,jk) )
LO= ZTVC.GT.ZTVE(jl,jk) .AND. LO1(jl)
IF (LO) ilab(jl,jk) = 2
LO1(jl)=ilab(jl,jk).EQ.0
if (LO1(jl)) THEN
ZTC(jl,jk) = ZTE(jl,jk)
ZQC(jl,jk) = 0.
endif
END DO
C
C* 3.2 IF NOT AT THE TOP CHECK FOR NEW LIFTING LEVEL, I.E.
C* MOISTURE CONVERGENCE IN A STABLE LAYER.
C***
IF (jk.NE.1) THEN
DO jl=1,NI
LO=LO1(jl).AND.(ZQAC(jl,jk).GT.0.)
if (LO) then
ZTC(jl,jk) = ZTE(jl,jk)
ZQC(jl,jk) = ZQE(jl,jk)
endif
END DO
ENDIF
C***
END DO
C***
C* 3.3 ilab=0 FOR DRY UNSTABLE LAYERS IF NO CLOUD IS ABOVE
C* ilab=3 FOR LIFTING LEVEL IF LAYER ABOVE IS UNSTABLE.
C* IKA INDICATES THE HIGHEST TOP OF A CLOUD
C* (TO AVOID UNNECESSARY COMPUTATIONS LATER).
C
IKA=NK+1
DO jl=1,NI
LO=ilab(jl,1).EQ.1
IF (LO) ilab(jl,1) = 0
END DO
C
IS=0
DO jl=1,NI
IS=IS+ilab(jl,1)
END DO
IF (IS.NE.0) IKA=1
C
DO jk=2,NK
C
DO jl=1,NI
LO=(ilab(jl,jk).EQ.1).AND.(ilab(jl,jk-1).EQ.0)
IF (LO) ilab(jl,jk) = 0
END DO
C
IF (IKA.EQ.NK+1) THEN
IS=0
DO jl=1,NI
IS=IS+ilab(jl,jk)
END DO
IF (IS.NE.0) IKA=jk
ENDIF
C
END DO
C***
IF (IKA.EQ.NK+1) GO TO 600
C***
DO jk=NK,IKA+1,-1
DO jl=1,NI
LO=(ilab(jl,jk).EQ.0).AND.(ilab(jl,jk-1).NE.0)
IF (LO) ilab(jl,jk) = 3
END DO
END DO
C
C ------------------------------------------------------------------
C
C* 4. TOTAL MOISTURE CONVERGENCE AND MEAN BETA-PARAMETER.
C ----- -------- ----------- --- ---- ---------------
C
C* 4.1 CALCULATE TOTAL MOISTURE ACCESSION FOR UNSTABLE
C* LAYERS AND THE PARTITION PARAMETER BETA
C* AVERAGED OVER CLOUD LAYERS.
C* IKB IS AN UPDATE OF IKA.
C
DO jl=1,NI
LO=ilab(jl,NK).NE.0
if (LO) then
ZSQAC(jl,NK) = ZQAC(jl,NK)
else
ZSQAC(jl,NK) = 0.
endif
ZSTAC(jl,NK) = 0.0
ZQSE(jl,NK) = AMAX1(ZQSE(jl,NK),ZQE(jl,NK))
ZBETA(jl,NK) = 0.0
ZSDP(jl,NK) = 0.0
END DO
C
DO jk=NK-1,IKA,-1
DO jl=1,NI
LO=ilab(jl,jk).NE.0
if (LO) then
ZSQAC(jl,jk) = ZQAC(jl,jk)
else
ZSQAC(jl,jk) = 0.
endif
LO=LO.AND.(ilab(jl,jk).NE.3)
if (LO) then
ZSQAC(jl,jk) = ZSQAC(jl,jk+1)+ZSQAC(jl,jk)
endif
LO=ilab(jl,jk).eq.2
if (LO) then
ZSTAC(jl,jk) = ZSTAC(jl,jk+1)+ZTAC(jl,jk)
ZSDP(jl,jk) = ZSDP(jl,jk+1)+ZDP(jl,jk)
else
ZSTAC(jl,jk) = 0.
ZSDP(jl,jk) = 0.
endif
ZQSE(jl,jk) = AMAX1(ZQSE(jl,jk),ZQE(jl,jk))
ZBETA(jl,jk) = ZQE(jl,jk) / ZQSE(jl,jk)
if (LO) then
ZBETA(jl,jk) = (ZSDP(jl,jk+1)*ZBETA(jl,jk+1)+ZDP(jl,jk)
% *ZBETA(jl,jk))/AMAX1(ZSDP(jl,jk),ZEPSDP)
else
ZBETA(jl,jk) = 0.
endif
END DO
END DO
C
DO jl=1,NI
*gp ZBETA(jl,IKA) = MIN( 1.0, 4.0*(1-ZBETA(jl,IKA))**3 )
temp1=(1-ZBETA(JL,IKA))*(1-ZBETA(JL,IKA))
temp1=temp1*(1-ZBETA(JL,IKA))
ZBETA(JL,IKA) = MIN( 1.0, 4.0*temp1 )
LO = ( ZSQAC(jl,IKA).LE.0. .AND. ilab(jl,IKA).EQ.2 )
+ .or. ( ZSTAC(jl,IKA).GT.0. .AND. ilab(jl,IKA).EQ.2 )
+ .or. ( ilab(jl,IKA).NE.2 )
IF (LO) ilab(jl,IKA) = 0
END DO
C
IKB=IKA
IS=0
DO jl=1,NI
if (LO) then
ZSTAC(jl,jk) = ZSTAC(jl,jk+1)+ZTAC(jl,jk)
ZSDP(jl,jk) = ZSDP(jl,jk+1)+ZDP(jl,jk)
else
ZSTAC(jl,jk) = 0.
ZSDP(jl,jk) = 0.
endif
IS=IS+ilab(jl,IKA)
END DO
IF (IS.EQ.0) IKB=NK+1
C
DO jk=IKA+1,NK
C
DO jl=1,NI
ZBETA(jl,jk) = MIN( 1.0, 4.0*(1-ZBETA(jl,jk))**3 )
LO=(ilab(jl,jk).EQ.2).AND.(ilab(jl,jk-1).EQ.2)
if (LO) then
ZSQAC(jl,jk) = ZSQAC(jl,jk-1)
ZSTAC(jl,jk) = ZSTAC(jl,jk-1)
ZBETA(jl,jk) = ZBETA(jl,jk-1)
endif
LO = ( ZSQAC(jl,jk).LE.0. .AND. ilab(jl,jk).EQ.2 )
+ .or. ( ZSTAC(jl,jk).GT.0. .AND. ilab(jl,jk).EQ.2 )
+ .or. ( ilab(jl,jk).NE.2 .AND. ilab(jl,jk-1).EQ.0 )
IF (LO) ilab(jl,jk) = 0
END DO
C
IF (IKB.EQ.NK+1) THEN
IS=0
DO jl=1,NI
IS=IS+ilab(jl,jk)
END DO
IF (IS.NE.0) IKB=jk
ENDIF
C
END DO
C***
IF (IKB.EQ.NK+1) GO TO 600
C***
C ------------------------------------------------------------------
C
C* 5. HEATING AND MOISTENING
C ----------------------
C
C* 5.1 COMPUTE THE TOTAL CLOUD-ENVIRONMENT
C* MOISTURE AND TEMPERATURE DIFFERENCES.
C
DO jl=1,NI
ZTC(jl,NK)=ZTE(jl,NK)
ZQC(jl,NK)=ZQE(jl,NK)
ZDQ(jl,NK)=0.
ZDT(jl,NK)=0.
ZSDQ(jl,NK)=0.
ZSDT(jl,NK)=0.
END DO
C
DO jk=NK-1,IKB,-1
DO jl=1,NI
LO=ilab(jl,jk).EQ.2
if (.not.LO) then
ZTC(jl,jk) = ZTE(jl,jk)
ZQC(jl,jk) = ZQE(jl,jk)
endif
ZTVC = FOTVT( ZTC(jl,jk), ZQC(jl,jk) )
ZDQ(jl,jk) = (ZQSE(jl,jk)-ZQE(jl,jk))*ZDP(jl,jk)
ZDT(jl,jk) = (ZTVC-ZTVE(jl,jk))*ZDP(jl,jk)
if (LO) then
ZSDQ(jl,jk) = ZSDQ(jl,jk+1)+ZDQ(jl,jk)
ZSDT(jl,jk) = ZSDT(jl,jk+1)+ZDT(jl,jk)
else
ZSDQ(jl,jk) = 0.
ZSDT(jl,jk) = 0.
endif
END DO
END DO
C
DO jk=IKB+1,NK
DO jl=1,NI
LO=(ilab(jl,jk).EQ.2).AND.(ilab(jl,jk-1).EQ.2)
if (LO) then
ZSDQ(jl,jk) = ZSDQ(jl,jk-1)
ZSDT(jl,jk) = ZSDT(jl,jk-1)
endif
END DO
END DO
C
C* 5.2 COMPUTE CONVECTIVE HEATING AND MOISTENING.
C* ESTIMATE CONVECTIVE CLOUD FRACTION.
C
DO jk=IKB,NK
DO jl=1,NI
C
LO=ilab(jl,jk).eq.0
if (LO) ZQAC(jl,jk) = 0.
LO=ilab(jl,jk).ne.2
if (LO) ZSQAC(jl,jk) = 0.
LO=ZSDQ(jl,jk).GT.0.
if (.not. LO) ZSDQ(jl,jk) = -1.
LO=ZSDT(jl,jk).GT.0.
if (.not. LO) ZSDT(jl,jk) = -1.
C
ZKQ = ZBETA(jl,jk)*ZSQAC(jl,jk)/ZSDQ(jl,jk)
ZK = ZLDCP0(jl)*(1.-ZBETA(jl,jk))*ZSQAC(jl,jk)/ZSDT(jl,jk)
C
CQT(jl,jk) = (ZKQ*ZDQ(jl,jk)-ZQAC(jl,jk))/ZDP(jl,jk)
CTT(jl,jk) = ZK*ZDT(jl,jk)/ZDP(jl,jk)
C
CPR(jl) = CPR(jl) + CTT(jl,jk)/ZLDCP0(jl)*ZDP(jl,jk)
C
DBDT(jl) = AMAX1(DBDT(jl),ZKQ)
C
END DO
END DO
C
! DO jl=1,NI
! CPR(jl) = CPR(jl) / ( GRAV * 1.E3 )
! CPR(jl) = 2.5 + .125 * alog( max( 1.E-12, CPR(jl) ) )
! CPR(jl) = min( max( DBDT(jl) * TAU , CPR(jl) ) , 0.8 )
! END DO
C
DO jl=1,NI
cpr(jl) = max( 1.E-12, CPR(jl)*rGRAV3 )
END DO
call vslog (cpr,cpr,ni)
DO jl=1,NI
CPR(jl) = 2.5 + .125 * CPR(jl)
CPR(jl) = min( max( DBDT(jl) * TAU , CPR(jl) ) , 0.8 )
END DO
C
DO jk=IKB,NK-1
DO jl=1,NI
LO=ilab(jl,jk).ne.2
if (LO) then
CCF(jl,jk) = 0.
else
CCF(jl,jk) = CPR(jl)
endif
temp1=(SIGMA(jl,jk)*1.25)*(SIGMA(jl,jk)*1.25)
CCF(jl,jk) = CCF(jl,jk)* min(temp1, 1.0 )
END DO
END DO
C***
C ------------------------------------------------------------------
C
C* 6. RETURN WORKSPACE.
C ------ ----------
600 CONTINUE
C
*
RETURN
END