*IF DEF,A19_2A                                                             VEGCB2A.2      
C *****************************COPYRIGHT******************************     VEGCB2A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    VEGCB2A.4      
C                                                                          VEGCB2A.5      
C Use, duplication or disclosure of this code is subject to the            VEGCB2A.6      
C restrictions as set forth in the contract.                               VEGCB2A.7      
C                                                                          VEGCB2A.8      
C                Meteorological Office                                     VEGCB2A.9      
C                London Road                                               VEGCB2A.10     
C                BRACKNELL                                                 VEGCB2A.11     
C                Berkshire UK                                              VEGCB2A.12     
C                RG12 2SZ                                                  VEGCB2A.13     
C                                                                          VEGCB2A.14     
C If no contract has been raised with this copy of the code, the use,      VEGCB2A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      VEGCB2A.16     
C to do so must first be obtained in writing from the Head of Numerical    VEGCB2A.17     
C Modelling at the above address.                                          VEGCB2A.18     
C ******************************COPYRIGHT******************************    VEGCB2A.19     
!!! Subroutine VEGCARB ------------------------------------------------    VEGCB2A.20     
!!!                                                                        VEGCB2A.21     
!!! Purpose : Updates carbon contents of the vegetation.                   VEGCB2A.22     
!!!                                                                        VEGCB2A.23     
!!!                                                                        VEGCB2A.24     
!!!  Model            Modification history:                                VEGCB2A.25     
!!! version  Date                                                          VEGCB2A.26     
!!!  4.4     10/97     New Deck. Peter Cox                                 VEGCB2A.27     
!!!  4.5   12/05/98    Operate only on points indexed with TRIF_INDEX.     ABX1F405.1556   
!!!                    Richard Betts                                       ABX1F405.1557   
!!!                                                                        VEGCB2A.28     
!!!END ----------------------------------------------------------------    VEGCB2A.29     

       SUBROUTINE VEGCARB (LAND_FIELD,TRIF_PTS,TRIF_INDEX                   1,1ABX1F405.1558   
     &,                    N,FORW,GAMMA,G_LEAF,NPP,RESP_W                  ABX1F405.1559   
     &,                    LEAF,ROOT,WOOD,DCVEG,PC_S)                      VEGCB2A.32     
                                                                           VEGCB2A.33     
      IMPLICIT NONE                                                        VEGCB2A.34     
                                                                           VEGCB2A.35     
      INTEGER                                                              VEGCB2A.36     
     & LAND_FIELD                 ! IN Total number of land points.        VEGCB2A.37     
     &,TRIF_PTS                   ! IN Number of points on which           ABX1F405.1560   
!                                 !    TRIFFID may operate                 ABX1F405.1561   
     &,TRIF_INDEX(LAND_FIELD)     ! IN Indices of land points on           ABX1F405.1562   
!                                 !    which TRIFFID may operate           ABX1F405.1563   
     &,N                          ! IN Plant functional type.              VEGCB2A.41     
     &,L,T                        ! WORK Loop counters                     ABX1F405.1564   
                                                                           VEGCB2A.43     
      REAL                                                                 VEGCB2A.44     
     & FORW                       ! IN Forward timestep weighting.         VEGCB2A.45     
     &,GAMMA                      ! IN Inverse timestep (/360days).        ABX1F405.1565   
     &,G_LEAF(LAND_FIELD)         ! IN Turnover rate for leaf and          VEGCB2A.47     
!                                 !    fine root biomass (/360days).       ABX1F405.1566   
     &,NPP(LAND_FIELD)            ! INOUT Net primary productivity         VEGCB2A.49     
!                                 !       (kg C/m2/360days).               ABX1F405.1567   
     &,RESP_W(LAND_FIELD)         ! INOUT Wood maintenance respiration     VEGCB2A.51     
!                                 !       (kg C/m2/360days).               ABX1F405.1568   
     &,LEAF(LAND_FIELD)           ! INOUT Leaf biomass (kg C/m2).          VEGCB2A.53     
     &,ROOT(LAND_FIELD)           ! INOUT Root biomass (kg C/m2).          VEGCB2A.54     
     &,WOOD(LAND_FIELD)           ! INOUT Woody biomass (kg C/m2).         VEGCB2A.55     
     &,DCVEG(LAND_FIELD)          ! OUT Change in vegetation carbon        VEGCB2A.56     
C                                 !     during the timestep                VEGCB2A.57     
C                                 !     (kg C/m2/timestep).                VEGCB2A.58     
     &,PC_S(LAND_FIELD)           ! OUT Net carbon flux available          VEGCB2A.59     
!                                 !     for spreading (kg C/m2/360days).   ABX1F405.1569   
     &,DFPAR_DLAI                 ! WORK Rate of change of FPAR            VEGCB2A.61     
C                                 !      with leaf area index.             VEGCB2A.62     
     &,DLAI                       ! WORK Increment to the leaf area        VEGCB2A.63     
C                                 !      index.                            VEGCB2A.64     
     &,DLAMG_DLAI,DLIT_DLAI       ! WORK Required for calculation          VEGCB2A.65     
C                                 !      of the equilibrium increments.    VEGCB2A.66     
     &,DNPP_DLAI(LAND_FIELD)      ! WORK Rate of change of NPP             VEGCB2A.67     
C                                 !      with leaf area index              VEGCB2A.68     
!                                 !      (kg C/m2/360days/LAI).            ABX1F405.1570   
     &,DPC_DLAI(LAND_FIELD)       ! WORK Rate of change of PC              VEGCB2A.70     
C                                 !      with leaf area index              VEGCB2A.71     
!                                 !      (kg C/m2/360days/LAI).            ABX1F405.1571   
     &,DPCG_DLAI(LAND_FIELD)      ! WORK Rate of change of PC_G            VEGCB2A.73     
C                                 !      with leaf area index              VEGCB2A.74     
!                                 !      (kg C/m2/360days/LAI).            ABX1F405.1572   
     &,DRESPW_DLAI                ! WORK Rate of change of RESP_W          VEGCB2A.76     
C                                 !      with leaf area index              VEGCB2A.77     
     &,FPAR                       ! WORK PAR interception factor.          VEGCB2A.78     
     &,LAI(LAND_FIELD)            ! WORK Leaf area index.                  VEGCB2A.79     
     &,LAMBDA_G                   ! WORK Fraction of NPP available         VEGCB2A.80     
C                                 !      for spreading.                    VEGCB2A.81     
     &,LIT_C_L(LAND_FIELD)        ! WORK Local rate of Carbon Litter       VEGCB2A.82     
!                                 !      production (kg C/m2/360days).     ABX1F405.1573   
     &,PC(LAND_FIELD)             ! WORK Net carbon flux available         VEGCB2A.84     
!                                 !      to vegetation (kg C/m2/360days)   ABX1F405.1574   
     &,PC_G(LAND_FIELD)           ! WORK Net carbon flux available         VEGCB2A.86     
!                                 !      for growth (kg C/m2/360days).     ABX1F405.1575   
                                                                           VEGCB2A.88     
*CALL NSTYPES                                                              VEGCB2A.89     
*CALL TRIF                                                                 VEGCB2A.90     
                                                                           VEGCB2A.91     
                                                                           VEGCB2A.92     
      DO T=1,TRIF_PTS                                                      ABX1F405.1576   
        L=TRIF_INDEX(T)                                                    ABX1F405.1577   
                                                                           VEGCB2A.94     
        LAI(L) = LEAF(L)/SIGL(N)                                           VEGCB2A.95     
C----------------------------------------------------------------------    VEGCB2A.96     
C Calculate the local production rate for carbon litter                    VEGCB2A.97     
C----------------------------------------------------------------------    VEGCB2A.98     
        LIT_C_L(L) = G_LEAF(L)*LEAF(L)+G_ROOT(N)*ROOT(L)                   VEGCB2A.99     
     &               + G_WOOD(N)*WOOD(L)                                   VEGCB2A.100    
                                                                           VEGCB2A.101    
C----------------------------------------------------------------------    VEGCB2A.102    
C Diagnose the net local carbon flux into the vegetation                   VEGCB2A.103    
C----------------------------------------------------------------------    VEGCB2A.104    
        PC(L) = NPP(L) - LIT_C_L(L)                                        VEGCB2A.105    
                                                                           VEGCB2A.106    
C----------------------------------------------------------------------    VEGCB2A.107    
C Variables required for the implicit and equilibrium calculations         VEGCB2A.108    
C----------------------------------------------------------------------    VEGCB2A.109    
        DLIT_DLAI = (G_LEAF(L)*LEAF(L)+G_ROOT(N)*ROOT(L))/LAI(L)           VEGCB2A.110    
     &            + B_WL(N)*G_WOOD(N)*WOOD(L)/LAI(L)                       VEGCB2A.111    
                                                                           VEGCB2A.112    
        FPAR = (1 - EXP(-KPAR(N)*LAI(L)))/KPAR(N)                          VEGCB2A.113    
        DFPAR_DLAI = EXP(-KPAR(N)*LAI(L))                                  VEGCB2A.114    
                                                                           VEGCB2A.115    
        DNPP_DLAI(L) = NPP(L)*DFPAR_DLAI/FPAR                              VEGCB2A.116    
     &               + (1-R_GROW(N))*RESP_W(L)                             VEGCB2A.117    
     &               *(DFPAR_DLAI/FPAR-B_WL(N)/LAI(L))                     VEGCB2A.118    
                                                                           VEGCB2A.119    
        LAMBDA_G = 1 - (LAI(L) - LAI_MIN(N))                               VEGCB2A.120    
     &                /(LAI_MAX(N) - LAI_MIN(N))                           VEGCB2A.121    
        DLAMG_DLAI = -1.0/(LAI_MAX(N) - LAI_MIN(N))                        VEGCB2A.122    
                                                                           VEGCB2A.123    
        PC_G(L) = LAMBDA_G * NPP(L) - LIT_C_L(L)                           VEGCB2A.124    
        DPCG_DLAI(L) = LAMBDA_G*DNPP_DLAI(L)                               VEGCB2A.125    
     &               + DLAMG_DLAI*NPP(L)                                   VEGCB2A.126    
     &               - DLIT_DLAI                                           VEGCB2A.127    
        DPC_DLAI(L) = DNPP_DLAI(L) - DLIT_DLAI                             VEGCB2A.128    
                                                                           VEGCB2A.129    
      ENDDO                                                                VEGCB2A.130    
                                                                           VEGCB2A.131    
C----------------------------------------------------------------------    VEGCB2A.132    
C Update vegetation carbon contents                                        VEGCB2A.133    
C----------------------------------------------------------------------    VEGCB2A.134    
      DO T=1,TRIF_PTS                                                      ABX1F405.1578   
        L=TRIF_INDEX(T)                                                    ABX1F405.1579   
        DCVEG(L) = LEAF(L)+ROOT(L)+WOOD(L)                                 VEGCB2A.136    
      ENDDO                                                                VEGCB2A.137    
                                                                           VEGCB2A.138    
      CALL GROWTH (LAND_FIELD,TRIF_PTS,TRIF_INDEX                          ABX1F405.1580   
     &,            N,DPCG_DLAI,FORW,GAMMA,PC_G,LEAF,ROOT,WOOD)             ABX1F405.1581   
                                                                           VEGCB2A.141    
      DO T=1,TRIF_PTS                                                      ABX1F405.1582   
        L=TRIF_INDEX(T)                                                    ABX1F405.1583   
        DCVEG(L) = LEAF(L)+ROOT(L)+WOOD(L)-DCVEG(L)                        VEGCB2A.143    
      ENDDO                                                                VEGCB2A.144    
                                                                           VEGCB2A.145    
C----------------------------------------------------------------------    VEGCB2A.146    
C Diagnose the carbon available for spreading and apply implicit           VEGCB2A.147    
C corrections to the driving fluxes.                                       VEGCB2A.148    
C----------------------------------------------------------------------    VEGCB2A.149    
      DO T=1,TRIF_PTS                                                      ABX1F405.1584   
        L=TRIF_INDEX(T)                                                    ABX1F405.1585   
        DLAI = LEAF(L)/SIGL(N) - LAI(L)                                    VEGCB2A.151    
        PC_S(L) = PC(L) + FORW*DPC_DLAI(L)*DLAI - DCVEG(L)*GAMMA           VEGCB2A.152    
                                                                           VEGCB2A.153    
        FPAR = (1 - EXP(-KPAR(N)*LAI(L)))/KPAR(N)                          VEGCB2A.154    
        DFPAR_DLAI = EXP(-KPAR(N)*LAI(L))                                  VEGCB2A.155    
        DRESPW_DLAI = RESP_W(L)*B_WL(N)/LAI(L)                             VEGCB2A.156    
                                                                           VEGCB2A.157    
        NPP(L) = NPP(L) + FORW*DNPP_DLAI(L)*DLAI                           VEGCB2A.158    
        RESP_W(L) = RESP_W(L) + FORW*DRESPW_DLAI*DLAI                      VEGCB2A.159    
      ENDDO                                                                VEGCB2A.160    
                                                                           VEGCB2A.161    
      RETURN                                                               VEGCB2A.162    
      END                                                                  VEGCB2A.163    
*ENDIF                                                                     VEGCB2A.164