*IF DEF,A19_2A                                                             TRIFD2A.2      
C *****************************COPYRIGHT******************************     TRIFD2A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    TRIFD2A.4      
C                                                                          TRIFD2A.5      
C Use, duplication or disclosure of this code is subject to the            TRIFD2A.6      
C restrictions as set forth in the contract.                               TRIFD2A.7      
C                                                                          TRIFD2A.8      
C                Meteorological Office                                     TRIFD2A.9      
C                London Road                                               TRIFD2A.10     
C                BRACKNELL                                                 TRIFD2A.11     
C                Berkshire UK                                              TRIFD2A.12     
C                RG12 2SZ                                                  TRIFD2A.13     
C                                                                          TRIFD2A.14     
C If no contract has been raised with this copy of the code, the use,      TRIFD2A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      TRIFD2A.16     
C to do so must first be obtained in writing from the Head of Numerical    TRIFD2A.17     
C Modelling at the above address.                                          TRIFD2A.18     
C ******************************COPYRIGHT******************************    TRIFD2A.19     
!!! Subroutine TRIFFID ------------------------------------------------    TRIFD2A.20     
!!!                                                                        TRIFD2A.21     
!!!                     Top-down                                           TRIFD2A.22     
!!!                     Representation of                                  TRIFD2A.23     
!!!                     Interactive                                        TRIFD2A.24     
!!!                     Foliage and                                        TRIFD2A.25     
!!!                     Flora                                              TRIFD2A.26     
!!!                     Including                                          TRIFD2A.27     
!!!                     Dynamics                                           TRIFD2A.28     
!!!                                                                        TRIFD2A.29     
!!! Purpose : Simulates changes in vegetation structure, areal             TRIFD2A.30     
!!!           coverage and the carbon contents of vegetation and soil.     TRIFD2A.31     
!!!           can be used to advance these variables dynamically           TRIFD2A.32     
!!!           (GAMMA=1/TIMESTEP) or to iterate towards  equilibrium        TRIFD2A.33     
!!!           (GAMMA --> 0.0, FORW=1.0).                                   ABX1F405.1587   
!!!                                                                        TRIFD2A.35     
!!!                                                                        TRIFD2A.36     
!!!  Model            Modification history:                                TRIFD2A.37     
!!! version  Date                                                          TRIFD2A.38     
!!!  4.4     10/97     New Deck. Peter Cox                                 TRIFD2A.39     
!!!  4.5   12/05/98    Operate only on points indexed with TRIF_INDEX.     ABX1F405.1588   
!!!                    Richard Betts                                       ABX1F405.1589   
!!!                                                                        TRIFD2A.40     
!!!END ----------------------------------------------------------------    TRIFD2A.41     

      SUBROUTINE TRIFFID (LAND_FIELD,TRIF_PTS,TRIF_INDEX,FORW,GAMMA         1,3ABX1F405.1590   
     &,                   FRAC_VS,G_ANTH,G_LEAF,NPP,RESP_S,RESP_W          ABX1F405.1591   
     &,                   CS,FRAC,HT,LAI,C_VEG,CV,LIT_C,LIT_C_T)           TRIFD2A.44     
                                                                           TRIFD2A.45     
                                                                           TRIFD2A.46     
      IMPLICIT NONE                                                        TRIFD2A.47     
                                                                           TRIFD2A.48     
*CALL NSTYPES                                                              TRIFD2A.49     
                                                                           TRIFD2A.50     
      INTEGER                                                              TRIFD2A.51     
     & LAND_FIELD                 ! IN Total number of land points.        TRIFD2A.52     
     &,TRIF_PTS                   ! IN Number of points on which           ABX1F405.1592   
!                                 !    TRIFFID may operate                 ABX1F405.1593   
     &,TRIF_INDEX(LAND_FIELD)     ! IN Indices of land points on           ABX1F405.1594   
!                                 !    which TRIFFID may operate           ABX1F405.1595   
     &,L,N,T                      ! WORK Loop counters                     ABX1F405.1596   
                                                                           TRIFD2A.57     
      REAL                                                                 TRIFD2A.58     
     & FORW                       ! IN Forward timestep weighting.         TRIFD2A.59     
     &,FRAC_VS(LAND_FIELD)        ! IN Total fraction of gridbox           ABX1F405.1597   
!                                 !    covered by veg or soil.             ABX1F405.1598   
     &,GAMMA                      ! IN Inverse timestep (/360days).        ABX1F405.1599   
     &,G_ANTH(LAND_FIELD)         ! IN Anthropogenic disturbance rate      TRIFD2A.61     
C                                 !    (/360days).                         ABX1F405.1600   
     &,G_LEAF(LAND_FIELD,NPFT)    ! IN Turnover rate for leaf and          TRIFD2A.63     
C                                 !    fine root biomass (/360days).       ABX1F405.1601   
     &,NPP(LAND_FIELD,NPFT)       ! INOUT Net primary productivity         TRIFD2A.65     
C                                 !       (kg C/m2/360days).               ABX1F405.1602   
     &,RESP_S(LAND_FIELD)         ! INOUT Soil respiration                 ABX1F405.1603   
C                                 !       (kg C/m2/360days).               ABX1F405.1604   
     &,RESP_W(LAND_FIELD,NPFT)    ! INOUT Wood maintenance respiration     TRIFD2A.68     
C                                 !       (kg C/m2/360days).               ABX1F405.1605   
     &,CS(LAND_FIELD)             ! INOUT Soil carbon (kg C/m2).           TRIFD2A.70     
     &,FRAC(LAND_FIELD,NTYPE)     ! INOUT Fractional cover of each         TRIFD2A.71     
C                                 !       Functional Type.                 TRIFD2A.72     
     &,HT(LAND_FIELD,NPFT)        ! INOUT Vegetation height (m).           TRIFD2A.73     
     &,LAI(LAND_FIELD,NPFT)       ! INOUT Leaf area index.                 TRIFD2A.74     
     &,C_VEG(LAND_FIELD,NPFT)     ! OUT Total carbon content of            TRIFD2A.75     
C                                 !     the vegetation (kg C/m2).          TRIFD2A.76     
     &,CV(LAND_FIELD)             ! OUT Gridbox mean vegetation            TRIFD2A.77     
C                                 !     carbon (kg C/m2).                  TRIFD2A.78     
     &,LIT_C(LAND_FIELD,NPFT)     ! OUT Carbon Litter (kg C/m2/360days).   ABX1F405.1606   
     &,LIT_C_T(LAND_FIELD)        ! OUT Gridbox mean carbon litter         TRIFD2A.80     
C                                 !     (kg C/m2/360days).                 ABX1F405.1607   
                                                                           TRIFD2A.82     
      REAL                                                                 TRIFD2A.83     
     & DCVEG(LAND_FIELD,NPFT)     ! WORK Change in vegetation carbon       TRIFD2A.84     
C                                 !      during the timestep               TRIFD2A.85     
C                                 !      (kg C/m2/timestep).               TRIFD2A.86     
     &,DFRAC(LAND_FIELD,NPFT)     ! WORK Change in areal fraction          TRIFD2A.87     
C                                 !      during the timestep               TRIFD2A.88     
C                                 !      (/timestep).                      TRIFD2A.89     
     &,LAI_BAL(LAND_FIELD,NPFT)   ! WORK Leaf area index in balanced       TRIFD2A.90     
C                                 !      growth state.                     TRIFD2A.91     
     &,LEAF(LAND_FIELD,NPFT)      ! WORK Leaf biomass (kg C/m2).           TRIFD2A.92     
     &,PC_S(LAND_FIELD,NPFT)      ! WORK Net carbon flux available         TRIFD2A.93     
C                                 !      for spreading                     ABX1F405.1608   
C                                 !      (kg C/m2/yr).                     ABX1F405.1609   
     &,PHEN(LAND_FIELD,NPFT)      ! WORK Phenological state.               TRIFD2A.95     
     &,ROOT(LAND_FIELD,NPFT)      ! WORK Root biomass (kg C/m2).           TRIFD2A.96     
     &,WOOD(LAND_FIELD,NPFT)      ! WORK Woody biomass (kg C/m2).          TRIFD2A.97     
                                                                           TRIFD2A.98     
*CALL TRIF                                                                 TRIFD2A.99     
                                                                           TRIFD2A.100    
C----------------------------------------------------------------------    TRIFD2A.101    
C Loop through Functional Types                                            TRIFD2A.102    
C----------------------------------------------------------------------    TRIFD2A.103    
      DO N=1,NPFT                                                          TRIFD2A.104    
                                                                           TRIFD2A.105    
C----------------------------------------------------------------------    TRIFD2A.106    
C Loop through TRIFFID points                                              ABX1F405.1610   
C----------------------------------------------------------------------    TRIFD2A.108    
        DO T=1,TRIF_PTS                                                    ABX1F405.1611   
          L=TRIF_INDEX(T)                                                  ABX1F405.1612   
                                                                           TRIFD2A.110    
C----------------------------------------------------------------------    TRIFD2A.111    
C Diagnose the balanced-growth leaf area index and the associated leaf,    TRIFD2A.112    
C wood, root and total vegetation carbon                                   TRIFD2A.113    
C----------------------------------------------------------------------    TRIFD2A.114    
          LAI_BAL(L,N) = (A_WS(N)*ETA_SL(N)*HT(L,N)                        TRIFD2A.115    
     &              /A_WL(N))**(1.0/(B_WL(N)-1))                           TRIFD2A.116    
          LEAF(L,N) = SIGL(N)*LAI_BAL(L,N)                                 TRIFD2A.117    
          ROOT(L,N) = LEAF(L,N)                                            TRIFD2A.118    
          WOOD(L,N) = A_WL(N)*(LAI_BAL(L,N)**B_WL(N))                      TRIFD2A.119    
          C_VEG(L,N) = LEAF(L,N) + ROOT(L,N) + WOOD(L,N)                   TRIFD2A.120    
C----------------------------------------------------------------------    TRIFD2A.121    
C Diagnose the phenological state                                          TRIFD2A.122    
C----------------------------------------------------------------------    TRIFD2A.123    
          PHEN(L,N) = LAI(L,N)/LAI_BAL(L,N)                                TRIFD2A.124    
                                                                           TRIFD2A.125    
        ENDDO                                                              TRIFD2A.126    
                                                                           TRIFD2A.127    
C----------------------------------------------------------------------    TRIFD2A.128    
C Update vegetation carbon contents                                        TRIFD2A.129    
C----------------------------------------------------------------------    TRIFD2A.130    
        CALL VEGCARB (LAND_FIELD,TRIF_PTS,TRIF_INDEX,N,FORW                ABX1F405.1613   
     &,               GAMMA,G_LEAF(1,N),NPP(1,N),RESP_W(1,N)               ABX1F405.1614   
     &,               LEAF(1,N),ROOT(1,N),WOOD(1,N)                        TRIFD2A.133    
     &,               DCVEG(1,N),PC_S(1,N))                                TRIFD2A.134    
                                                                           TRIFD2A.135    
      ENDDO                                                                TRIFD2A.136    
                                                                           TRIFD2A.137    
C-----------------------------------------------------------------------   TRIFD2A.138    
C Diagnose the new value of Canopy Height, Leaf Area Index and Total       TRIFD2A.139    
C Vegetation Carbon                                                        TRIFD2A.140    
C-----------------------------------------------------------------------   TRIFD2A.141    
      DO N=1,NPFT                                                          TRIFD2A.142    
                                                                           TRIFD2A.143    
        DO T=1,TRIF_PTS                                                    ABX1F405.1615   
          L=TRIF_INDEX(T)                                                  ABX1F405.1616   
                                                                           TRIFD2A.145    
          HT(L,N) = WOOD(L,N) / (A_WS(N) * ETA_SL(N))                      TRIFD2A.146    
     &            * (A_WL(N)/WOOD(L,N))**(1.0/B_WL(N))                     TRIFD2A.147    
          LAI_BAL(L,N) = LEAF(L,N) / SIGL(N)                               TRIFD2A.148    
          LAI(L,N) = PHEN(L,N) * LAI_BAL(L,N)                              TRIFD2A.149    
          C_VEG(L,N) = LEAF(L,N) + ROOT(L,N) + WOOD(L,N)                   TRIFD2A.150    
                                                                           TRIFD2A.151    
        ENDDO                                                              TRIFD2A.152    
                                                                           TRIFD2A.153    
      ENDDO                                                                TRIFD2A.154    
                                                                           TRIFD2A.155    
C----------------------------------------------------------------------    TRIFD2A.156    
C Update the areal coverage of each functional type                        TRIFD2A.157    
C----------------------------------------------------------------------    TRIFD2A.158    
      CALL LOTKA (LAND_FIELD,TRIF_PTS,TRIF_INDEX                           ABX1F405.1617   
     &,           C_VEG,FORW,FRAC_VS,GAMMA,G_ANTH,LAI_BAL,PC_S             ABX1F405.1618   
     &,           FRAC,DFRAC)                                              TRIFD2A.161    
                                                                           TRIFD2A.162    
C----------------------------------------------------------------------    TRIFD2A.163    
C Diagnose the litterfall from the carbon balance of each vegetation       TRIFD2A.164    
C type (assumes explicit update).                                          TRIFD2A.165    
C----------------------------------------------------------------------    TRIFD2A.166    
      DO T=1,TRIF_PTS                                                      ABX1F405.1619   
        L=TRIF_INDEX(T)                                                    ABX1F405.1620   
                                                                           TRIFD2A.168    
        LIT_C_T(L) = 0.0                                                   TRIFD2A.169    
                                                                           TRIFD2A.170    
        DO N=1,NPFT                                                        TRIFD2A.171    
          LIT_C(L,N) = NPP(L,N)-GAMMA*(C_VEG(L,N)*FRAC(L,N)                TRIFD2A.172    
     &     -(C_VEG(L,N)-DCVEG(L,N))*(FRAC(L,N)-DFRAC(L,N)))/FRAC(L,N)      TRIFD2A.173    
          LIT_C_T(L) = LIT_C_T(L)+FRAC(L,N)*LIT_C(L,N)                     TRIFD2A.174    
        ENDDO                                                              TRIFD2A.175    
      ENDDO                                                                TRIFD2A.176    
                                                                           TRIFD2A.177    
C----------------------------------------------------------------------    TRIFD2A.178    
C Call SOIL_C to update the soil carbon content                            TRIFD2A.179    
C----------------------------------------------------------------------    TRIFD2A.180    
      CALL SOILCARB (LAND_FIELD,TRIF_PTS,TRIF_INDEX                        ABX1F405.1621   
     &,              FORW,GAMMA,LIT_C_T,RESP_S,CS)                         ABX1F405.1622   
                                                                           TRIFD2A.183    
C----------------------------------------------------------------------    TRIFD2A.184    
C Diagnose the gridbox mean vegetation carbon                              TRIFD2A.185    
C----------------------------------------------------------------------    TRIFD2A.186    
      DO T=1,TRIF_PTS                                                      ABX1F405.1623   
        L=TRIF_INDEX(T)                                                    ABX1F405.1624   
        CV(L) = 0.0                                                        TRIFD2A.188    
        DO N=1,NPFT                                                        TRIFD2A.189    
          CV(L) = CV(L)+FRAC(L,N)*C_VEG(L,N)                               TRIFD2A.190    
        ENDDO                                                              TRIFD2A.191    
      ENDDO                                                                TRIFD2A.192    
                                                                           TRIFD2A.193    
      RETURN                                                               TRIFD2A.194    
      END                                                                  TRIFD2A.195    
*ENDIF                                                                     TRIFD2A.196