*IF DEF,A19_2A                                                             VEG_IC2A.2      
C *****************************COPYRIGHT******************************     VEG_IC2A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    VEG_IC2A.4      
C                                                                          VEG_IC2A.5      
C Use, duplication or disclosure of this code is subject to the            VEG_IC2A.6      
C restrictions as set forth in the contract.                               VEG_IC2A.7      
C                                                                          VEG_IC2A.8      
C                Meteorological Office                                     VEG_IC2A.9      
C                London Road                                               VEG_IC2A.10     
C                BRACKNELL                                                 VEG_IC2A.11     
C                Berkshire UK                                              VEG_IC2A.12     
C                RG12 2SZ                                                  VEG_IC2A.13     
C                                                                          VEG_IC2A.14     
C If no contract has been raised with this copy of the code, the use,      VEG_IC2A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      VEG_IC2A.16     
C to do so must first be obtained in writing from the Head of Numerical    VEG_IC2A.17     
C Modelling at the above address.                                          VEG_IC2A.18     
C ******************************COPYRIGHT******************************    VEG_IC2A.19     
! Version 2A of vegetation section: models leaf phenology and vegetation   VEG_IC2A.20     
! competition                                                              VEG_IC2A.21     
!                                                                          VEG_IC2A.22     
! Subroutine Interface:                                                    VEG_IC2A.23     

      SUBROUTINE VEG_IC(P_FIELD,FIRST_POINT,LAST_POINT,LAND_FIELD           1,2VEG_IC2A.24     
     &,                 LAND1,LAND_PTS,LAND_INDEX,P_ROWS,ROW_LENGTH        ABX3F405.58     
*IF DEF,MPP                                                                ABX3F405.59     
     &,                 EW_Halo,NS_Halo                                    ABX3F405.60     
*ENDIF                                                                     ABX3F405.61     
     &,                 A_STEP,ASTEPS_SINCE_TRIFFID                        VEG_IC2A.26     
     &,                 PHENOL_PERIOD,TRIFFID_PERIOD                       VEG_IC2A.27     
     &,                 L_PHENOL,L_TRIFFID,L_TRIF_EQ                       VEG_IC2A.28     
     &,                 ALB_SOIL,ATIMESTEP,FRAC_DISTURB                    VEG_IC2A.29     
     &,                 G_LEAF_AC,G_LEAF_PHEN_AC,NPP_AC                    VEG_IC2A.30     
     &,                 RESP_S_AC,RESP_W_AC                                VEG_IC2A.31     
     &,                 CS,FRAC,LAI,HT                                     VEG_IC2A.32     
     &,                 ALBSNC,ALBSNF,CATCH_T,Z0_P,Z0_T                    VEG_IC2A.33     
     &,                 C_VEG,CV,LIT_C,LIT_C_MN,G_LEAF_DAY,G_LEAF_PHEN     ABX1F405.1369   
     &,                 LAI_PHEN,G_LEAF_DR_OUT,NPP_DR_OUT,RESP_W_DR_OUT    ABX1F405.1370   
     &,                 RESP_S_DR_OUT                                      ABX1F405.1371   
     &                  )                                                  ABX1F405.1372   
                                                                           VEG_IC2A.35     
                                                                           VEG_IC2A.36     
      IMPLICIT NONE                                                        VEG_IC2A.37     
!                                                                          VEG_IC2A.38     
! Description:                                                             VEG_IC2A.39     
!   Updates Leaf Area Index for Plant Functional Types (PFTs) and uses     VEG_IC2A.40     
!   this to derive new vegetation parameters for PFTs along with gridbox   VEG_IC2A.41     
!   mean values where appropriate.                                         VEG_IC2A.42     
!                                                                          VEG_IC2A.43     
! Method:                                                                  VEG_IC2A.44     
!   Calls PHENOL which models phenology and updates Leaf Area Index        VEG_IC2A.45     
!   (LAI), then passes new LAI into SPARM along with canopy height         VEG_IC2A.46     
!   and fractional cover of Plant Functional Types.  SPARM uses this to    VEG_IC2A.47     
!   derive the vegetation parameters for each PFT, and also derives        VEG_IC2A.48     
!   gridbox means where this is required.                                  VEG_IC2A.49     
!                                                                          VEG_IC2A.50     
! Current Code Owner:  Richard Betts                                       VEG_IC2A.51     
!                                                                          VEG_IC2A.52     
! History:                                                                 VEG_IC2A.53     
! Version   Date     Comment                                               VEG_IC2A.54     
! -------   ----     -------                                               VEG_IC2A.55     
!   4.4    8/10/97   Original code.  Richard Betts                         VEG_IC2A.56     
!   4.5    5/8/98    Pass info on grid and halo dimensions into VEG.       ABX3F405.62     
!                    Richard Betts                                         ABX3F405.63     
!   4.5   23/11/98   Output G_LEAF_DAY, G_LEAF_PHEN, LAI_PHEN,             ABX1F405.1373   
!                    G_LEAF_DR_OUT, NPP_DR_OUT, RESP_W_DR_OUT and          ABX1F405.1374   
!                    RESP_S_DR_OUT as diagnostics.  Richard Betts          ABX1F405.1375   
!                                                                          VEG_IC2A.57     
! Code Description:                                                        VEG_IC2A.58     
!   Language: FORTRAN 77 + common extensions.                              VEG_IC2A.59     
!   This code is written to UMDP3 v6 programming standards.                VEG_IC2A.60     
                                                                           VEG_IC2A.61     
      INTEGER                                                              VEG_IC2A.62     
     & P_FIELD                      ! IN Number of P-points.               VEG_IC2A.63     
     &,FIRST_POINT                  ! IN First P-point to be processed.    VEG_IC2A.64     
     &,LAST_POINT                   ! IN Last P-point to be processed.     VEG_IC2A.65     
     &,LAND_FIELD                   ! IN Number of land points.            VEG_IC2A.66     
     &,LAND1                        ! IN First land point to be processe   VEG_IC2A.67     
     &,LAND_PTS                     ! IN Number of land points.            VEG_IC2A.68     
     &,P_ROWS                       ! IN Number of rows on P grid.         ABX3F405.64     
     &,ROW_LENGTH                   ! IN Number of P points in a row.      ABX3F405.65     
*IF DEF,MPP                                                                ABX3F405.66     
     &,EW_Halo                      ! IN Halo size in the EW direction.    ABX3F405.67     
     &,NS_Halo                      ! IN Halo size in the NS direction.    ABX3F405.68     
*ENDIF                                                                     ABX3F405.69     
     &,A_STEP                       ! IN Atmospheric timestep number.      VEG_IC2A.69     
     &,ASTEPS_SINCE_TRIFFID         ! INOUT Number of atmospheric          VEG_IC2A.70     
!                                   !       timesteps since last call      VEG_IC2A.71     
!                                   !       to TRIFFID.                    VEG_IC2A.72     
     &,PHENOL_PERIOD                ! IN Phenology period (days).          VEG_IC2A.73     
     &,TRIFFID_PERIOD               ! IN TRIFFID period (days).            VEG_IC2A.74     
                                                                           VEG_IC2A.75     
*CALL NSTYPES                                                              VEG_IC2A.76     
                                                                           VEG_IC2A.77     
      INTEGER                                                              VEG_IC2A.78     
     & LAND_INDEX(LAND_FIELD)       ! IN I=LAND_INDEX(L) => the Ith        VEG_IC2A.79     
C                                   !    point in P_FIELD is the Lth       VEG_IC2A.80     
C                                   !    land point.                       VEG_IC2A.81     
      LOGICAL                                                              VEG_IC2A.82     
     & L_PHENOL                     ! IN .T. for interactive leaf          VEG_IC2A.83     
C                                   !    phenology.                        VEG_IC2A.84     
     &,L_TRIFFID                    ! IN .T. for interactive vegetation.   VEG_IC2A.85     
     &,L_TRIF_EQ                    ! IN .T. for vegetation equilibrium.   VEG_IC2A.86     
                                                                           VEG_IC2A.87     
      REAL                                                                 VEG_IC2A.88     
     & ALB_SOIL(LAND_FIELD)         ! IN snow-free albedo of soil.         VEG_IC2A.89     
     &,ATIMESTEP                    ! IN Atmospheric timestep (s).         VEG_IC2A.90     
     &,FRAC_DISTURB(LAND_FIELD)     ! IN Fraction of gridbox in which      VEG_IC2A.91     
!                                   !    vegetation is disturbed.          VEG_IC2A.92     
     &,G_LEAF_AC(LAND_FIELD,NPFT)   ! INOUT Accumulated leaf turnover      VEG_IC2A.93     
!                                   !       rate.                          VEG_IC2A.94     
     &,G_LEAF_PHEN_AC(LAND_FIELD,NPFT)! INOUT Accumulated leaf turnover    VEG_IC2A.95     
C                                   !       rate including phenology.      VEG_IC2A.96     
     &,NPP_AC(LAND_FIELD,NPFT)      ! INOUT Accumulated NPP (kg C/m2).     VEG_IC2A.97     
     &,RESP_W_AC(LAND_FIELD,NPFT)   ! INOUT Accumulated wood respiration   VEG_IC2A.98     
C                                   !       (kg C/m2).                     VEG_IC2A.99     
     &,RESP_S_AC(LAND_FIELD)        ! INOUT Accumulated soil respiration   VEG_IC2A.100    
C                                   !       (kg C/m2).                     VEG_IC2A.101    
     &,CS(LAND_FIELD)               ! INOUT Soil carbon content            VEG_IC2A.102    
!                                   !       (kg C/m2).                     VEG_IC2A.103    
     &,FRAC(LAND_FIELD,NTYPE)       ! INOUT Fractions of surface types.    VEG_IC2A.104    
     &,LAI(LAND_FIELD,NPFT)         ! INOUT LAI of plant functional        VEG_IC2A.105    
!                                   !       types.                         VEG_IC2A.106    
     &,HT(LAND_FIELD,NPFT)          ! INOUT Height of plant functional     VEG_IC2A.107    
C                                   !       types (m).                     VEG_IC2A.108    
     &,ALBSNC(LAND_FIELD)           ! OUT Snow-covered albedo.             VEG_IC2A.109    
     &,ALBSNF(LAND_FIELD)           ! OUT Snow-free albedo.                VEG_IC2A.110    
     &,CATCH_T(LAND_FIELD,NTYPE-1)  ! OUT Canopy capacity for each type    VEG_IC2A.111    
C                                   !     aside from ice (kg/m2).          VEG_IC2A.112    
     &,G_LEAF_DAY(LAND_FIELD,NPFT)  ! OUT Mean leaf turnover rate for      ABX1F405.1376   
!                                   !     input to PHENOL (/360days).      ABX1F405.1377   
     &,G_LEAF_PHEN(LAND_FIELD,NPFT) ! OUT Mean leaf turnover rate over     ABX1F405.1378   
!                                   !     phenology period (/360days).     ABX1F405.1379   
     &,G_LEAF_DR_OUT(LAND_FIELD,NPFT) ! OUT Mean leaf turnover rate for    ABX1F405.1380   
!                                   !       driving TRIFFID (/360days).    ABX1F405.1381   
     &,LAI_PHEN(LAND_FIELD,NPFT)    ! OUT LAI of PFTs after phenology.     ABX1F405.1382   
     &,NPP_DR_OUT(LAND_FIELD,NPFT)  ! OUT Mean NPP for driving TRIFFID     ABX1F405.1383   
!                                   !     (kg C/m2/360days).               ABX1F405.1384   
     &,RESP_W_DR_OUT(LAND_FIELD,NPFT) ! OUT Mean wood respiration for      ABX1F405.1385   
!                                   !       driving TRIFFID                ABX1F405.1386   
!                                   !       (kg C/m2/360days).             ABX1F405.1387   
     &,RESP_S_DR_OUT(LAND_FIELD)    ! OUT Mean soil respiration for        ABX1F405.1388   
!                                   !     driving TRIFFID                  ABX1F405.1389   
!                                   !     (kg C/m2/360days).               ABX1F405.1390   
     &,Z0_P(P_FIELD)                ! OUT Effective roughness length       VEG_IC2A.113    
C                                   !     on full grid (m).                VEG_IC2A.114    
     &,Z0_T(LAND_FIELD,NTYPE)       ! OUT Roughness length for each type   VEG_IC2A.115    
C                                   !     (m).                             VEG_IC2A.116    
     &,C_VEG(LAND_FIELD,NPFT)       ! OUT Total carbon content of          VEG_IC2A.117    
C                                   !     the vegetation (kg C/m2).        VEG_IC2A.118    
     &,CV(LAND_FIELD)               ! OUT Gridbox mean vegetation          VEG_IC2A.119    
C                                   !     carbon (kg C/m2).                VEG_IC2A.120    
     &,LIT_C(LAND_FIELD,NPFT)       ! OUT Carbon Litter                    ABX1F405.1391   
!                                   !     (kg C/m2/360days).               ABX1F405.1392   
     &,LIT_C_MN(LAND_FIELD)         ! OUT Gridbox mean carbon litter       VEG_IC2A.122    
!                                   !     (kg C/m2/360days).               ABX1F405.1393   
                                                                           VEG_IC2A.124    
                                                                           VEG_IC2A.125    
      CALL VEG(P_FIELD,FIRST_POINT,LAST_POINT,LAND_FIELD                   VEG_IC2A.126    
     &,        LAND1,LAND_PTS,LAND_INDEX,P_ROWS,ROW_LENGTH                 ABX3F405.70     
*IF DEF,MPP                                                                ABX3F405.71     
     &,        EW_Halo,NS_Halo                                             ABX3F405.72     
*ENDIF                                                                     ABX3F405.73     
     &,        A_STEP,ASTEPS_SINCE_TRIFFID                                 VEG_IC2A.128    
     &,        PHENOL_PERIOD,TRIFFID_PERIOD                                VEG_IC2A.129    
     &,        L_PHENOL,L_TRIFFID,L_TRIF_EQ                                VEG_IC2A.130    
     &,        ALB_SOIL,ATIMESTEP,FRAC_DISTURB                             VEG_IC2A.131    
     &,        G_LEAF_AC,G_LEAF_PHEN_AC,NPP_AC                             VEG_IC2A.132    
     &,        RESP_S_AC,RESP_W_AC                                         VEG_IC2A.133    
     &,        CS,FRAC,LAI,HT                                              VEG_IC2A.134    
     &,        ALBSNC,ALBSNF,CATCH_T,Z0_P,Z0_T                             VEG_IC2A.135    
     &,        C_VEG,CV,LIT_C,LIT_C_MN,G_LEAF_DAY,G_LEAF_PHEN              ABX1F405.1394   
     &,        LAI_PHEN,G_LEAF_DR_OUT,NPP_DR_OUT,RESP_W_DR_OUT             ABX1F405.1395   
     &,        RESP_S_DR_OUT                                               ABX1F405.1396   
     &         )                                                           ABX1F405.1397   
                                                                           VEG_IC2A.137    
      RETURN                                                               VEG_IC2A.138    
      END                                                                  VEG_IC2A.139    
*ENDIF                                                                     VEG_IC2A.140