!copyright (C) 2001  MSC-RPN COMM  %%%RPNPHY%%%
***S/R LIQWC
*

      SUBROUTINE LIQWC(LWC, SIG, T, PSOL, LMX, LEV, MM, SATUCO) 1,2
#include "impnone.cdk"
*
      INTEGER LMX,LEV,MM,J,K,MODP
      REAL CLWC,GAMSAT,GAMW,GB
      REAL RHO,WC,WCCON,WCFAC,WCOBS,WCSTA
          REAL LWC(LMX,LEV), SIG(lmx,LEV), T(MM ,LEV), REC_T(MM ,LEV)
      REAL P(LMX,LEV),GA(LMX,LEV),EXP1_CAPPA(LMX,LEV),EXP2_CAPPA(LMX,LEV)
      REAL PSOL(LMX)   ,HT(LMX,LEV)
      LOGICAL LHIG(LMX,LEV), SATUCO
      REAL P0, REC_CAPPA, REC_RGASD
*
*Author
*          L.Garand (1989)
*
*Revision
* 001      G.Pellerin(Mar90)Standard documentation
* 002      N. Brunet  (May91)
*                New version of thermodynamic functions
*                and file of constants
* 003      B. Bilodeau  (August 1991)- Adaptation to UNIX
* 004      R. Benoit (Aug 93) Local Sigma
* 005      L. Garand (Apr 1995) Output in kg/kg to input cldoptx
* 006      M. Lepine (March 2003) -  CVMG... Replacements
* 007      D. Talbot (June 2003) - IBM conversion
*                - calls to exponen4 (to calculate power function '**')
*                - calls to optimized routine MFOQST
*                - divisions replaced by reciprocals
* 008      B. Bilodeau (Aug 2003) - exponen4 replaces vspown1
*
*Object
*          to calculate the liquid water content (kg/kg) as a
*          function of temperature and the input parameters for
*          calulating solar radiation (Refer to Betts et
*          Harshvardan JGR 1987)
*
*Arguments
*
*          - Output -
* LWC      liquid water content (kg water per kg air)
*
*          - Input -
* SIG      sigma levels
* T        temperature in Kelvins
* PSOL     surface pressure (N/m**2)
* LMX      number of points to process
* LEV      number of layers
* MM       1st dimension of the temperature field
* SATUCO   .TRUE. if water/ice phase for saturation
*          .FALSE. if water phase only for saturation
*
**
*
*
#include "consphy.cdk"
#include "dintern.cdk"
#include "fintern.cdk"
      P0=101325.
      REC_CAPPA=1./CAPPA
      REC_RGASD=1./RGASD
C   MULTIPLICATEUR POUR NUAGES CONVECTIFS
      WCFAC=1.
      MODP=3
      DO J=1,LEV
      DO K=1,LMX
C . . . . MID LAYER PRESSURE IN [PASCAL].
              P(K,J) = PSOL(K) * SIG(k,J)
C . . . . LOCATE UPPER TROPOSPHERE ABOVE CONVECTIVE REGIONS.
              LHIG(k,j) = (SIG(k,J).GT.0.6)
C . . . . EVALUATE L.W.C. FROM PAPER BY BETTS AND HARSVARDAN (1987).
C         ASSUMING THAT ADIABATIC LIFTING OCCURE OVER HALF OF THE LAYER.
C         GAM SAT IS FROM CONVEC ROUTINE = T * (1 - GAM S/GAM D)
              HT(K,J) = 3.1364E+3 - 2.3682 * T(K,J)
C         On calcule la reciproque de T car T est souvent au denominateur plus bas
              REC_T(K,J)=1./T(K,J)
      ENDDO
      ENDDO

      IF(SATUCO)THEN
         CALL MFOQST (GA,T,SIG,P,MODP,LMX,LEV,LMX)
      ELSE
         CALL MFOQSA (GA,T,SIG,P,MODP,LMX,LEV,LMX)
      END IF
*
      CALL VSPOWN1  (EXP1_CAPPA,P0/P,CAPPA,LEV*LMX)
      CALL VSPOWN1  (EXP2_CAPPA,P/P0,CAPPA,LEV*LMX)
*
      DO J=1,LEV
      DO K=1,LMX
              GA(K,J) = HT(K,J)*GA(K,J)/(CAPPA*T(K,J))
              GB = GA(K,J) * EPS1 * HT(K,J) * REC_T(K,J)
              GAMSAT = T(K,J) * (GB - GA(K,J)) / (1. + GB)
C . . . . GAMMA W = (D THETA/DP) ON THETA ES CONST (BETTS EQ(4))
              GAMW = EXP1_CAPPA(K,J)*CAPPA/P(K,J)*GAMSAT
C . . . . AIR DENSITY [KG/M3].
              RHO = P(K,J)*REC_RGASD*REC_T(K,J)
C . . . . LWC = (CP*1000[G/KG]/L)*(T/THETA)*GAMSAT*RHO*DP*MIXING.
      CLWC=1000./HT(K,J)
      WCOBS = CLWC*EXP2_CAPPA(K,J)*GAMW*RHO*1693.
C             UNITS [G/M3]. (DP = 30 MB AND MIXING = 0.56433)
C . . . . FIT OF MEAN WC FROM OBSERVATIONS (FEIGELSON, 1977)
C             WC OBS = (4.35E-5 * T(K,J) - 0.0174) * T(K,J) + 1.734
C             WC OBS = AMAX1 (WC OBS, 0.01)
C . . . . FIT OF MINIMUM LIQUID WATER CONTENT (HEYMSFIELD, 1977)
C             WC LOW = 8.64E-18 * EXP (0.1462 * T(K,J))
C . . . . SET LIQUID WATER CONTENT IN STRATIFORM CLOUDS.
C             WC STA = AMIN1 (WC OBS, WC LOW)
              WCSTA = WCOBS
C . . . . SET LIQUID WATER CONTENT IN CONVECTIVE REGIONS.
C             WC CON = AMIN1 (WC OBS, WC LOW * WC FAC)
              WCCON = WCOBS * WCFAC
C . . . . SELECT STRATIFORM OR CONVECTIVE VALUES OF LWC
              if ( LHIG(k,j) ) then
                 WC = WCCON
              else
                 WC = WCSTA
              endif
C  MULT PAR 0.5 ASSUMANT DEMI-EFFICACITE
      LWC(K,J)=WC  * 0.001 *.5 / RHO
      ENDDO
      ENDDO
      RETURN
      END