SUBROUTINE CLASSA(FC,     FG,     FCS,    FGS,    ALVSCN, ALIRCN, 1,4
     1                  ALVSG,  ALIRG,  ALVSCS, ALIRCS, ALVSSN, ALIRSN,           
     2                  TRVSCN, TRIRCN, TRVSCS, TRIRCS, AILCAN, AILCNS, 
     3                  FSVF,   FSVFS,  RAICAN, RAICNS, SNOCAN, SNOCNS, 
     4                  FRAINC, FSNOWC, DISP,   DISPS,  ZOMLNC, ZOMLCS, 
     5                  ZOELNC, ZOELCS, ZOMLNG, ZOMLNS, ZOELNG, ZOELNS, 
     6                  CHCAP,  CHCAPS, CMASSC, CMASCS, CWCAP,  CWCAPS, 
     7                  RC,     RCS,    DLEAF,  FROOT,  ZPLIMC, ZPLIMG, 
     8                  ZPLMCS, ZPLMGS, TRSNOW, ZSNOW,  
     9                  ALVS,   ALIR,   HTCC,   HTCS,   HTC,    
     A                  WTRC,   WTRS,   WTRG,   CMAI,   
     B                  FCANMX, ZOLN,   ALVSC,  ALIRC,  AILMAX, AILMIN, 
     C                  CWGTMX, ZRTMAX, RSMIN,  QA50,   VPDA,   VPDB,
     D                  PSIGA,  PSIGB,  AILDAT, HGTDAT, ACVDAT, ACIDAT, 
     E                  ASVDAT, ASIDAT, AGVDAT, AGIDAT, ALGWET, ALGDRY, 
     F                  THLIQ,  THICE,  TBAR,   RCAN,   SCAN,   TCAN,   
     G                  GROWTH, SNO,    TSNOW,  RHOSNO, ALBSNO, ZBLEND,
     H                  FCLOUD, TA,     VPD,    RHOAIR, COSZS,  QSWINV,
     I                  RADJ,   ILAND,  DLON,   DELZW,  ZBOTW,  Z0ORO,
     J                  THPOR,  THLMIN, PSISAT, BI,     PSIWLT, HCPS,   
     K                  ISAND,  IDAY,   ILG,    IL1,    IL2,    JL,
     L                  IC,     ICP1,   IG,     IDISP,  IZREF,
     M                  ILAI,   IHGT,   IALC,   IALS,   IALG)
C
C     * AUG 19/04 - Y.DELAGE.   REMOVE WORK ARRAYS FROM ARGUMENT LIST
C                               REGROUP COMMON BLOCKS
C                               MAKE EXPLICIT DECLARATIONS
C     * DEC 05/02 - D.VERSEGHY. NEW PARAMETERS FOR APREP.
C     * JUL 31/02 - D.VERSEGHY. MODIFICATIONS ASSOCIATED WITH NEW
C     *                         CALCULATION OF STOMATAL RESISTANCE.
C     *                         SHORTENED CLASS3 COMMON BLOCK.
C     * JUL 23/02 - D.VERSEGHY. MODIFICATIONS TO MOVE ADDITION OF AIR
C     *                         TO CANOPY MASS INTO APREP; SHORTENED
C     *                         CLASS4 COMMON BLOCK.
C     * MAR 18/02 - D.VERSEGHY. NEW CALLS TO ALL SUBROUTINES TO ENABLE
C     *                         ASSIGNMENT OF USER-SPECIFIED VALUES TO
C     *                         ALBEDOS AND VEGETATION PROPERTIES; NEW
C     *                         "CLASS8" COMMON BLOCK; MOVE CALCULATION 
C     *                         OF "FCLOUD" INTO CLASS DRIVER.
C     * SEP 19/00 - D.VERSEGHY. PASS ADDITIONAL ARRAYS TO APREP IN COMMON 
C     *                         BLOCK CLASS7, FOR CALCULATION OF NEW 
C     *                         STOMATAL RESISTANCE COEFFICIENTS USED
C     *                         IN TPREP.
C     * APR 12/00 - D.VERSEGHY. RCMIN NOW VARIES WITH VEGETATION TYPE:
C     *                         PASS IN BACKGROUND ARRAY "RCMINX".
C     * DEC 16/99 - D.VERSEGHY. ADD "XLEAF" ARRAY TO CLASS7 COMMON BLOCK
C     *                         AND CALCULATION OF LEAF DIMENSION PARAMETER
C     *                         "DLEAF" IN APREP.
C     * NOV 16/98 - M.LAZARE.   "DLON" NOW PASSED IN AND USED DIRECTLY
C     *                         (INSTEAD OF INFERRING FROM "LONSL" AND 
C     *                         "ILSL" WHICH USED TO BE PASSED) TO PASS
C     *                         TO APREP TO CALCULATE GROWTH INDEX. THIS
C     *                         IS DONE TO MAKE THE PHYSICS PLUG COMPATIBLE
C     *                         FOR USE WITH THE RCM WHICH DOES NOT HAVE
C     *                         EQUALLY-SPACED LONGITUDES.
C     * JUN 20/97 - D.VERSEGHY. CLASS - VERSION 2.7.
C     *                         MODIFICATIONS TO ALLOW FOR VARIABLE
C     *                         SOIL PERMEABLE DEPTH.
C     * SEP 27/96 - D.VERSEGHY. CLASS - VERSION 2.6.
C     *                         FIX BUG TO CALCULATE GROUND ALBEDO
C     *                         UNDER CANOPIES AS WELL AS OVER BARE
C     *                         SOIL.
C     * JAN 02/96 - D.VERSEGHY. CLASS - VERSION 2.5.
C     *                         COMPLETION OF ENERGY BALANCE
C     *                         DIAGNOSTICS.
C     *                         ALSO, PASS IDISP TO SUBROUTINE APREP.
C     * AUG 30/95 - D.VERSEGHY. CLASS - VERSION 2.4.
C     *                         VARIABLE SURFACE DETENTION CAPACITY
C     *                         IMPLEMENTED.
C     * AUG 16/95 - D.VERSEGHY. THREE NEW ARRAYS TO COMPLETE WATER
C     *                         BALANCE DIAGNOSTICS.
C     * OCT 14/94 - D.VERSEGHY. CLASS - VERSION 2.3.
C     *                         REVISE CALCULATION OF FCLOUD TO
C     *                         HANDLE CASES WHERE INCOMING SOLAR
C     *                         RADIATION IS ZERO AT LOW SUN ANGLES.
C     * NOV 24/92 - M.LAZARE.   CLASS - VERSION 2.1.
C     *                         MODIFIED FOR MULTIPLE LATITUDES.
C     * OCT 13/92 - D.VERSEGHY/M.LAZARE. REVISED AND VECTORIZED CODE
C     *                                  FOR MODEL VERSION GCM7.
C     * AUG 12/91 - D.VERSEGHY. CODE FOR MODEL VERSION GCM7U -
C     *                         CLASS VERSION 2.0 (WITH CANOPY).
C     * APR 11/89 - D.VERSEGHY. VISIBLE AND NEAR-IR ALBEDOS AND 
C     *                         TRANSMISSIVITIES FOR COMPONENTS OF
C     *                         LAND SURFACE.
C
      IMPLICIT NONE
C     * OUTPUT ARRAYS.
C
      REAL FC    (ILG),   FG    (ILG),   FCS   (ILG),   FGS   (ILG),    
     1     ALVSCN(ILG),   ALIRCN(ILG),   ALVSG (ILG),   ALIRG (ILG),     
     2     ALVSCS(ILG),   ALIRCS(ILG),   ALVSSN(ILG),   ALIRSN(ILG),   
     3     TRVSCN(ILG),   TRIRCN(ILG),   TRVSCS(ILG),   TRIRCS(ILG),  
     4     AILCAN(ILG),   AILCNS(ILG),   FSVF  (ILG),   FSVFS (ILG),   
     5     RAICAN(ILG),   RAICNS(ILG),   SNOCAN(ILG),   SNOCNS(ILG),   
     6     FRAINC(ILG),   FSNOWC(ILG),   DISP  (ILG),   DISPS (ILG),   
     7     ZOMLNC(ILG),   ZOMLCS(ILG),   ZOELNC(ILG),   ZOELCS(ILG),   
     8     ZOMLNG(ILG),   ZOMLNS(ILG),   ZOELNG(ILG),   ZOELNS(ILG),   
     9     CHCAP (ILG),   CHCAPS(ILG),   CMASSC(ILG),   CMASCS(ILG),   
     A     CWCAP (ILG),   CWCAPS(ILG),   RC    (ILG),   RCS   (ILG),
     B     ZPLIMC(ILG),   ZPLIMG(ILG),   ZPLMCS(ILG),   ZPLMGS(ILG),   
     C     DLEAF (ILG),   TRSNOW(ILG),   ZSNOW (ILG),   
     D     ALVS  (ILG),   ALIR  (ILG),   HTCC  (ILG),   HTCS  (ILG),   
     E     WTRC  (ILG),   WTRS  (ILG),   WTRG  (ILG),   CMAI  (ILG)     
C
      REAL FROOT (ILG,IG),  HTC   (ILG,IG)
C
C     * INPUT ARRAYS DEPENDENT ON LONGITUDE.
C  
      REAL FCANMX(ILG,ICP1),   ZOLN  (ILG,ICP1),
     1     ALVSC (ILG,ICP1),   ALIRC (ILG,ICP1),
     2     AILMAX(ILG,IC),     AILMIN(ILG,IC),     CWGTMX(ILG,IC),                     
     3     ZRTMAX(ILG,IC),     RSMIN (ILG,IC),     QA50  (ILG,IC),
     4     VPDA  (ILG,IC),     VPDB  (ILG,IC),     PSIGA (ILG,IC),
     5     PSIGB (ILG,IC),     AILDAT(ILG,IC),     HGTDAT(ILG,IC),     
     4     ACVDAT(ILG,IC),     ACIDAT(ILG,IC),
     5     THLIQ (ILG,IG),     THICE (ILG,IG),     TBAR  (ILG,IG)  
C
      REAL ASVDAT(ILG),   ASIDAT(ILG),   AGVDAT(ILG),   AGIDAT(ILG),
     1     ALGWET(ILG),   ALGDRY(ILG),   Z0ORO (ILG),
     2     RCAN  (ILG),   SCAN  (ILG),   TCAN  (ILG),   GROWTH(ILG),      
     3     SNO   (ILG),   TSNOW (ILG),   RHOSNO(ILG),   ALBSNO(ILG),
     4     FCLOUD(ILG),   TA    (ILG),   VPD   (ILG),   RHOAIR(ILG),
     5     COSZS (ILG),   QSWINV(ILG),   DLON  (ILG),   ZBLEND(ILG)

      REAL RADJ(ILG) 
C
      INTEGER ILAND (ILG)
C
C    * SOIL PROPERTY ARRAYS.
C
      REAL DELZW (ILG,IG),  ZBOTW (ILG,IG),  THPOR (ILG,IG),  
     1     THLMIN(ILG,IG),  PSISAT(ILG,IG),  BI    (ILG,IG),
     2     PSIWLT(ILG,IG),  HCPS  (ILG,IG)
C
      INTEGER   ISAND (ILG,IG)
      INTEGER           IDAY,   ILG,    IL1,    IL2,    JL,
     1                  IC,     ICP1,   IG,     IDISP,  IZREF,
     2                  ILAI,   IHGT,   IALC,   IALS,   IALG
      INTEGER I
C
C                                                                                 
C     * INTERNAL WORK ARRAYS FOR THIS AND ASSOCIATED SUBROUTINES.
C
      REAL RMAT (ILG,IC,IG),H     (ILG,IC),  HS    (ILG,IC),
     1     AIL   (ILG,IC),  AILS  (ILG,IC),  FCAN  (ILG,IC),  
     2     FCANS (ILG,IC),  CXTEFF(ILG,IC),  RCACC (ILG,IC),
     3     RCG   (ILG,IC),  RCV   (ILG,IC)
C
      REAL PSIGND(ILG),     FSNOW (ILG),     CWCPAV(ILG),     
     1     GROWA (ILG),     GROWN (ILG),     GROWB (ILG),     
     2     RRESID(ILG),     SRESID(ILG),     FRTOT (ILG),
     3     RCT   (ILG),     GC    (ILG) 
C
      integer j
#include "class_com.cdk"
                                                                      
      REAL SNOLIM
      DATA SNOLIM/0.10/                                                           
C------------------------------------------------------------------
C     * CALCULATION OF SNOW DEPTH ZSNOW AND FRACTIONAL SNOW COVER
C     * FSNOW; INITIALIZATION OF COMPUTATIONAL ARRAYS. 
C                                                                           
      DO 100 I=IL1,IL2                                                            
          IF(SNO(I).GT.0.0) THEN                                              
              ZSNOW(I)=SNO(I)/RHOSNO(I)                                       
              IF(ZSNOW(I).GE.SNOLIM) THEN                                     
                  FSNOW(I)=1.0                                                   
              ELSE                                                            
c                 FSNOW(I)=MAX(ZSNOW(I)/SNOLIM,1.E-4)                              
                  FSNOW(I)=ZSNOW(I)/SNOLIM
                  ZSNOW(I)=SNOLIM                                             
              ENDIF                                                           
              if(FSNOW(I).gt..999) FSNOW(I)=1.0
              if(FSNOW(I).lt.1.e-3) FSNOW(I)=0.
          ELSE                                                                
              ZSNOW(I)=0.0                                                    
              FSNOW(I)=0.0                                                       
          ENDIF
C
          ALVSCN(I)=0.0                                                   
          ALIRCN(I)=0.0                                                   
          ALVSCS(I)=0.0  
          ALIRCS(I)=0.0    
          TRVSCN(I)=0.0                                                   
          TRIRCN(I)=0.0                                                   
          TRVSCS(I)=0.0                                                   
          TRIRCS(I)=0.0
          ALVSSN(I)=0.0                                                   
          ALIRSN(I)=0.0                                                   
          ALVSG (I)=0.0
          ALIRG (I)=0.0
          TRSNOW(I)=0.0                                                       
  100 CONTINUE
C
C     * PREPARATION.
C
      CALL APREP (FC,FG,FCS,FGS,AILCAN,AILCNS,FSVF,FSVFS, 
     1            FRAINC,FSNOWC,RAICAN,RAICNS,SNOCAN,SNOCNS,DISP,
     2            DISPS,ZOMLNC,ZOMLCS,ZOELNC,ZOELCS,ZOMLNG,ZOMLNS, 
     3            ZOELNG,ZOELNS,CHCAP,CHCAPS,CMASSC,CMASCS,CWCAP,
     4            CWCAPS,DLEAF,FROOT,ZPLIMC,ZPLIMG,ZPLMCS,ZPLMGS,
     5            HTCC,HTCS,HTC,WTRC,WTRS,WTRG,CMAI,
     6            AIL,AILS,FCAN,FCANS,PSIGND,
     7            FCANMX,ZOLN,AILMAX,AILMIN,CWGTMX,ZRTMAX,
     8            AILDAT,HGTDAT,THLIQ,THICE,TBAR,RCAN,SCAN,
     9            TCAN,GROWTH,ZSNOW,TSNOW,FSNOW,RHOSNO,SNO,Z0ORO,
     A            ZBLEND,TA,RHOAIR,RADJ,ILAND,DLON,DELZW,ZBOTW,
     B            THPOR,THLMIN,PSISAT,BI,PSIWLT,HCPS,ISAND,
     C            ILG,IL1,IL2,IC,ICP1,IG,IDAY,IDISP,IZREF,ILAI,IHGT,
     D            RMAT,H,HS,CWCPAV,GROWA,GROWN,GROWB,
     E            RRESID,SRESID,FRTOT,jl )
C
C     * CANOPY ALBEDOS AND TRANSMISSIVITIES, AND VEGETATION
C     * STOMATAL RESISTANCE.
C
      CALL CANALB(ALVSCN,ALIRCN,ALVSCS,ALIRCS,TRVSCN,TRIRCN,
     1            TRVSCS,TRIRCS,RC,RCS,
     2            ALVSC,ALIRC,RSMIN,QA50,VPDA,VPDB,PSIGA,PSIGB,
     3            FC,FCS,FSNOW,FSNOWC,FCAN,FCANS,AIL,AILS,PSIGND,
     4            FROOT,FCLOUD,COSZS,QSWINV,VPD,TA,ACVDAT,ACIDAT,
     5            ILG,IL1,IL2,JL,IC,ICP1,IG,IALC,
     6            CXTEFF,RCACC,RCG,RCV,RCT,GC) 
C
C     * SNOW ALBEDOS AND TRANSMISSIVITY.
C 
      CALL SNOALBA(ALVSSN,ALIRSN,ALBSNO,TRSNOW,
     1             ZSNOW,FSNOW,ASVDAT,ASIDAT,
     2             ILG,IG,IL1,IL2,JL,IALS)
C
C     * BARE SOIL ALBEDOS.
C
       CALL GRALB(ALVSG,ALIRG,
     1            ALGWET,ALGDRY,THLIQ,FSNOW,ALVSC(1,5),ALIRC(1,5),
     2            FCANMX(1,5),AGVDAT,AGIDAT,ISAND,
     3            ILG,IG,IL1,IL2,JL,IALG) 
C
C     * EFFECTIVE WHOLE-SURFACE VISIBLE AND NEAR-IR ALBEDOS.
C
      DO 500 I=IL1,IL2
          ALVS(I)=FC(I)*ALVSCN(I)+FG(I)*ALVSG(I)+FCS(I)*ALVSCS(I)+
     1            FGS(I)*ALVSSN(I)                                                
          ALIR(I)=FC(I)*ALIRCN(I)+FG(I)*ALIRG(I)+FCS(I)*ALIRCS(I)+            
     1            FGS(I)*ALIRSN(I)                                                
  500 CONTINUE
C
      RETURN                                                                      
      END