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

      SUBROUTINE LOTKA (LAND_FIELD,TRIF_PTS,TRIF_INDEX                      1,1ABX1F405.1643   
     &,                 C_VEG,FORW,FRAC_VS,GAMMA,G_ANTH,LAI,PC_S           ABX1F405.1644   
     &,                 FRAC,DFRAC)                                        LOTKA2A.34     
                                                                           LOTKA2A.35     
      IMPLICIT NONE                                                        LOTKA2A.36     
                                                                           LOTKA2A.37     
*CALL NSTYPES                                                              LOTKA2A.38     
                                                                           LOTKA2A.39     
      INTEGER                                                              LOTKA2A.40     
     & LAND_FIELD                 ! IN Total number of land points.        LOTKA2A.41     
     &,TRIF_PTS                   ! IN Number of points on which           ABX1F405.1645   
!                                 !    TRIFFID may operate                 ABX1F405.1646   
     &,TRIF_INDEX(LAND_FIELD)     ! IN Indices of land points on           ABX1F405.1647   
!                                 !    which TRIFFID may operate           ABX1F405.1648   
     &,K,L,M,N,T                  ! WORK Loop counters.                    ABX1F405.1649   
     &,DOM(LAND_FIELD,NPFT)       ! WORK Dominance hierachy.               LOTKA2A.46     
                                                                           LOTKA2A.47     
      REAL                                                                 LOTKA2A.48     
     & C_VEG(LAND_FIELD,NPFT)     ! IN Carbon content of vegetation        LOTKA2A.49     
                                  !    (kg C/m2).                          LOTKA2A.50     
     &,FORW                       ! IN Forward timestep weighting.         LOTKA2A.51     
     &,FRAC_VS(LAND_FIELD)        ! IN Total fractional cover of           ABX1F405.1654   
!                                 !    vegetation and soil.                ABX1F405.1655   
     &,GAMMA                      ! IN Inverse timestep (/360days).        ABX1F405.1650   
     &,G_ANTH(LAND_FIELD)         ! IN Anthropogenic disturbance rate      LOTKA2A.53     
C                                 !    (/360days).                         ABX1F405.1651   
     &,LAI(LAND_FIELD,NPFT)       ! IN Leaf area index.                    LOTKA2A.55     
     &,PC_S(LAND_FIELD,NPFT)      ! IN Net carbon flux available for       LOTKA2A.56     
                                  !    spreading (kg C/m2/360days).        ABX1F405.1652   
     &,FRAC(LAND_FIELD,NTYPE)     ! INOUT Fractional cover of each         LOTKA2A.58     
C                                 !       Functional Type.                 LOTKA2A.59     
     &,DFRAC(LAND_FIELD,NPFT)     ! OUT Increment to the areal fraction    LOTKA2A.60     
C                                 !     during the timestep (/timestep).   LOTKA2A.61     
     &,B(LAND_FIELD,NPFT)         ! WORK Mean rate of change of            LOTKA2A.62     
C                                 !      vegetation fraction over          LOTKA2A.63     
C                                 !      the timestep (kg C/m2/360days).   ABX1F405.1653   
     &,DB_DFRAC(LAND_FIELD,NPFT,NPFT)                                      LOTKA2A.65     
C                                 ! WORK Rate of change of B               LOTKA2A.66     
C                                 !      with vegetation fraction.         LOTKA2A.67     
     &,COM(LAND_FIELD,NPFT,NPFT)  ! WORK Coefficients representing         LOTKA2A.68     
C                                 !      the influence of one type         LOTKA2A.69     
C                                 !      (second argument) on another      LOTKA2A.70     
C                                 !      (first argument).                 LOTKA2A.71     
     &,DIFF_SUM                   ! WORK Difference divided by sum         LOTKA2A.72     
C                                 !      for competing canopy heights.     LOTKA2A.73     
     &,HC1,HC2,HC3,HC4            ! WORK Competing canopy heights (m).     LOTKA2A.74     
     &,NOSOIL(LAND_FIELD)         ! WORK Fractional area not available     LOTKA2A.75     
C                                 !      to vegetation.                    LOTKA2A.76     
     &,SPACE(LAND_FIELD,NPFT)     ! WORK Space available for invasion.     LOTKA2A.77     
                                                                           LOTKA2A.78     
*CALL TRIF                                                                 LOTKA2A.79     
*CALL SEED                                                                 LOTKA2A.80     
*CALL SIGM                                                                 LOTKA2A.81     
                                                                           LOTKA2A.82     
C----------------------------------------------------------------------    LOTKA2A.83     
C Define competition coefficients and the dominance hierachy               LOTKA2A.84     
C----------------------------------------------------------------------    LOTKA2A.85     
                                                                           LOTKA2A.86     
      DO N=1,NPFT                                                          LOTKA2A.87     
        DO M=1,NPFT                                                        LOTKA2A.88     
          DO T=1,TRIF_PTS                                                  ABX1F405.1656   
            L=TRIF_INDEX(T)                                                ABX1F405.1657   
            COM(L,N,M) = 1.0                                               LOTKA2A.90     
          ENDDO                                                            LOTKA2A.91     
        ENDDO                                                              LOTKA2A.92     
      ENDDO                                                                LOTKA2A.93     
                                                                           LOTKA2A.94     
      DO T=1,TRIF_PTS                                                      ABX1F405.1658   
        L=TRIF_INDEX(T)                                                    ABX1F405.1659   
                                                                           LOTKA2A.96     
        HC1 = A_WL(1)/(A_WS(1)*ETA_SL(1))*(LAI(L,1)**(B_WL(1)-1))          LOTKA2A.97     
        HC2 = A_WL(2)/(A_WS(2)*ETA_SL(2))*(LAI(L,2)**(B_WL(2)-1))          LOTKA2A.98     
        DIFF_SUM = (HC1-HC2)/(HC1+HC2)                                     LOTKA2A.99     
                                                                           LOTKA2A.100    
        COM(L,1,2) = 1.0/(1+EXP(POW*DIFF_SUM))    ! BT vs NT               LOTKA2A.101    
        COM(L,1,3) = 0.0                          ! BT vs C3G              LOTKA2A.102    
        COM(L,1,4) = 0.0                          ! BT vs C4G              LOTKA2A.103    
        COM(L,1,5) = 0.0                          ! BT vs S                LOTKA2A.104    
                                                                           LOTKA2A.105    
        COM(L,2,1) = 1.0-COM(L,1,2)               ! NT vs BT               LOTKA2A.106    
        COM(L,2,3) = 0.0                          ! NT vs C3G              LOTKA2A.107    
        COM(L,2,4) = 0.0                          ! NT vs C4G              LOTKA2A.108    
        COM(L,2,5) = 0.0                          ! NT vs S                LOTKA2A.109    
                                                                           LOTKA2A.110    
        HC3 = A_WL(3)/(A_WS(3)*ETA_SL(3))*(LAI(L,3)**(B_WL(3)-1))          LOTKA2A.111    
        HC4 = A_WL(4)/(A_WS(4)*ETA_SL(4))*(LAI(L,4)**(B_WL(4)-1))          LOTKA2A.112    
        DIFF_SUM = (HC3-HC4)/(HC3+HC4)                                     LOTKA2A.113    
                                                                           LOTKA2A.114    
        COM(L,3,4) = 1.0/(1+EXP(POW*DIFF_SUM))    ! C3G vs C4G             LOTKA2A.115    
        COM(L,4,3) = 1.0-COM(L,3,4)               ! C4G vs C3G             LOTKA2A.116    
                                                                           LOTKA2A.117    
        COM(L,5,3) = 0.0                          ! S vs C3G               LOTKA2A.118    
        COM(L,5,4) = 0.0                          ! S vs C4G               LOTKA2A.119    
                                                                           LOTKA2A.120    
        IF (HC1 .GE. HC2) THEN                                             LOTKA2A.121    
          DOM(L,1) = 1                                                     LOTKA2A.122    
          DOM(L,2) = 2                                                     LOTKA2A.123    
        ELSEIF (HC1 .LT. HC2) THEN                                         LOTKA2A.124    
          DOM(L,1) = 2                                                     LOTKA2A.125    
          DOM(L,2) = 1                                                     LOTKA2A.126    
        ENDIF                                                              LOTKA2A.127    
                                                                           LOTKA2A.128    
        DOM(L,3) = 5                                                       LOTKA2A.129    
                                                                           LOTKA2A.130    
        IF (HC3 .GE. HC4) THEN                                             LOTKA2A.131    
          DOM(L,4) = 3                                                     LOTKA2A.132    
          DOM(L,5) = 4                                                     LOTKA2A.133    
        ELSEIF (HC3 .LT. HC4) THEN                                         LOTKA2A.134    
          DOM(L,4) = 4                                                     LOTKA2A.135    
          DOM(L,5) = 3                                                     LOTKA2A.136    
        ENDIF                                                              LOTKA2A.137    
                                                                           LOTKA2A.138    
      ENDDO                                                                LOTKA2A.139    
                                                                           LOTKA2A.140    
C----------------------------------------------------------------------    LOTKA2A.141    
C Calculate the space available for the expansion of each FT               LOTKA2A.142    
C----------------------------------------------------------------------    LOTKA2A.143    
      DO T=1,TRIF_PTS                                                      ABX1F405.1660   
        L=TRIF_INDEX(T)                                                    ABX1F405.1661   
        NOSOIL(L) = 1 - FRAC_VS(L)                                         ABX1F405.1662   
      ENDDO                                                                ABX1F405.1663   
                                                                           LOTKA2A.153    
      DO K=1,NPFT                                                          LOTKA2A.154    
        DO T=1,TRIF_PTS                                                    ABX1F405.1664   
          L=TRIF_INDEX(T)                                                  ABX1F405.1665   
          N=DOM(L,K)                                                       LOTKA2A.156    
          SPACE(L,N)=1.0-NOSOIL(L)-FRAC_MIN*(NPFT-K)                       LOTKA2A.157    
        ENDDO                                                              LOTKA2A.158    
      ENDDO                                                                LOTKA2A.159    
                                                                           LOTKA2A.160    
      DO N=1,NPFT                                                          LOTKA2A.161    
        DO M=1,NPFT                                                        LOTKA2A.162    
        DO T=1,TRIF_PTS                                                    ABX1F405.1666   
          L=TRIF_INDEX(T)                                                  ABX1F405.1667   
            SPACE(L,N)=SPACE(L,N)-COM(L,N,M)*FRAC(L,M)                     LOTKA2A.164    
          ENDDO                                                            LOTKA2A.165    
        ENDDO                                                              LOTKA2A.166    
      ENDDO                                                                LOTKA2A.167    
                                                                           LOTKA2A.168    
C----------------------------------------------------------------------    LOTKA2A.169    
C Calculate the variables required for the implicit calculation.           LOTKA2A.170    
C Divide the update equation by FRAC to eliminate the (unstable)           LOTKA2A.171    
C bare soil solution.                                                      LOTKA2A.172    
C----------------------------------------------------------------------    LOTKA2A.173    
      DO N=1,NPFT                                                          LOTKA2A.174    
        DO T=1,TRIF_PTS                                                    ABX1F405.1668   
          L=TRIF_INDEX(T)                                                  ABX1F405.1669   
          B(L,N) = (PC_S(L,N)*SPACE(L,N)/C_VEG(L,N)                        LOTKA2A.176    
     &                       -G_AREA(N)-G_ANTH(L))                         LOTKA2A.177    
                                                                           LOTKA2A.178    
                                                                           LOTKA2A.179    
          DO M=1,NPFT                                                      LOTKA2A.180    
            DB_DFRAC(L,N,M) = -COM(L,N,M)*PC_S(L,N)/C_VEG(L,N)             LOTKA2A.181    
          ENDDO                                                            LOTKA2A.182    
        ENDDO                                                              LOTKA2A.183    
      ENDDO                                                                LOTKA2A.184    
                                                                           LOTKA2A.185    
C----------------------------------------------------------------------    LOTKA2A.186    
C Update the areal fractions                                               LOTKA2A.187    
C----------------------------------------------------------------------    LOTKA2A.188    
      CALL COMPETE (DOM,LAND_FIELD,TRIF_PTS,TRIF_INDEX                     ABX1F405.1670   
     &,             B,DB_DFRAC,FORW,GAMMA,NOSOIL                           LOTKA2A.190    
     &,             FRAC,DFRAC)                                            LOTKA2A.191    
                                                                           LOTKA2A.192    
      RETURN                                                               LOTKA2A.193    
      END                                                                  LOTKA2A.194    
*ENDIF                                                                     LOTKA2A.195