*IF DEF,OCEAN                                                              ORH1F305.459    
C ******************************COPYRIGHT******************************    GTS2F400.5041   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.5042   
C                                                                          GTS2F400.5043   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.5044   
C restrictions as set forth in the contract.                               GTS2F400.5045   
C                                                                          GTS2F400.5046   
C                Meteorological Office                                     GTS2F400.5047   
C                London Road                                               GTS2F400.5048   
C                BRACKNELL                                                 GTS2F400.5049   
C                Berkshire UK                                              GTS2F400.5050   
C                RG12 2SZ                                                  GTS2F400.5051   
C                                                                          GTS2F400.5052   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.5053   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.5054   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.5055   
C Modelling at the above address.                                          GTS2F400.5056   
C ******************************COPYRIGHT******************************    GTS2F400.5057   
C                                                                          GTS2F400.5058   
C*LL  Subroutine IPDFLXCL                                                  IPDFLXCL.3      
CLL                                                                        IPDFLXCL.4      
CLL   Can run on any compiler accepting lower case variables.              IPDFLXCL.5      
CLL                                                                        IPDFLXCL.6      
CLL   The code must be precompiled by the UPDOC system.                    IPDFLXCL.7      
CLL   Option L selects the code for Isopycnal Diffusion.                   IPDFLXCL.8      
CLL                                                                        IPDFLXCL.9      
CLL   Author:  D.J.Carrington                                              IPDFLXCL.10     
CLL   Date:  12 December 1990                                              IPDFLXCL.11     
CLL   Reviewer:  R.A.Wood                                                  IPDFLXCL.12     
CLL   Date:  19 December 1990                                              IPDFLXCL.13     
CLL   Version 1.0                                                          IPDFLXCL.14     
CLL                                                                        IPDFLXCL.15     
!     Modification History:                                                ORH1F305.4841   
!   Version    Date     Details                                            ORH1F305.4842   
!   -------  -------    ------------------------------------------         ORH1F305.4843   
!     3.5    16.01.95   Remove *IF dependency. R.Hill                      ORH1F305.4844   
CLL   External documentation:                                              IPDFLXCL.16     
CLL     Unified Model Documentation Paper No. 51.                          IPDFLXCL.17     
CLL                                                                        IPDFLXCL.18     
CLL   Naming convention of variables: Cox naming convention is used,       IPDFLXCL.19     
CLL     with the addition that lower-case variables are                    IPDFLXCL.20     
CLL     introduced by the Isopycnal Diffusion scheme.                      IPDFLXCL.21     
CLL                                                                        IPDFLXCL.22     
CLL   Purpose of Subroutine:                                               IPDFLXCL.23     
CLL     Calculates the various components of isopycnal diffusion           IPDFLXCL.24     
CLL     and updates the tracers. However, it omits the d-2/d-z-2           IPDFLXCL.25     
CLL     term, which is dealt with in the implicit scheme in                IPDFLXCL.26     
CLL     subroutine VDIFCALT.                                               IPDFLXCL.27     
CLL                                                                        IPDFLXCL.28     
CLL   List of subroutines required for implementation of Isopycnal         IPDFLXCL.29     
CLL     Diffusion Scheme (in order of being called):                       IPDFLXCL.30     
CLL        VERTCOFC *                                                      IPDFLXCL.31     
CLL        VDIFCALC                                                        IPDFLXCL.32     
CLL        VERTCOFT *                                                      IPDFLXCL.33     
CLL        IPDCOFCL                                                        IPDFLXCL.34     
CLL        IPDFLXCL                                                        IPDFLXCL.35     
CLL        VDIFCALT            *  K-theory mixing scheme                   IPDFLXCL.36     
CLL                                                                        IPDFLXCL.37     
CLLEND------------------------------------------------------------------   IPDFLXCL.38     
C*                                                                         IPDFLXCL.39     
C*L---- Arguments ------------------------------------------------------   IPDFLXCL.40     
C                                                                          IPDFLXCL.41     

      SUBROUTINE IPDFLXCL                                                   2IPDFLXCL.42     
     &  ( M,J,JMT,IMT,IMTM1,KM,KMP1,KMM1,NT,                               IPDFLXCL.43     
     &  TB,TBP,TBM,TA,                                                     IPDFLXCL.44     
     &  DXU2RQ,DXT4RQ,DYUR,DYTR,DYT4R,DZ2RQ,                               IPDFLXCL.45     
     &  CS,CSR,CSTR,FM,FMP,FMM,                                            IPDFLXCL.46     
     &  esav,fk1,fk2,fk3,tempx,tempa,tempb)                                JG170893.1      
C                                                                          IPDFLXCL.48     
C                                                                          IPDFLXCL.49     
      IMPLICIT NONE                                                        IPDFLXCL.50     
!                                                                          ORH1F305.4845   
*CALL CNTLOCN                                                              ORH1F305.4846   
*CALL OARRYSIZ                                                             ORH1F305.4847   
C                                                                          IPDFLXCL.51     
      INTEGER                                                              IPDFLXCL.52     
     &  I,J,K,M,                                                           IPDFLXCL.53     
     &  JMT,IMT,IMTM1,KM,KMP1,KMM1,NT,ITT,NERGY                            IPDFLXCL.54     
C                                                                          IPDFLXCL.55     
      REAL                                                                 IPDFLXCL.56     
     &  TB(IMT,KM,NT),TBP(IMT,KM,NT),TBM(IMT,KM,NT),TA(IMT,KM,NT),         IPDFLXCL.57     
     &  DXU2RQ(IMT,KM),DXT4RQ(IMT,KM),                                     IPDFLXCL.58     
     &  DYUR(JMT),DYTR(JMT),DYT4R(JMT),DZ2RQ(IMT,KM),                      IPDFLXCL.59     
     &  CS(JMT),CSR(JMT),CSTR(JMT),FM(IMT,KM),FMP(IMT,KM),FMM(IMT,KM),     IPDFLXCL.60     
     &  fk1(IMT,KM,3),    ! IN  } 1st/2nd/3rd rows of diffusion            IPDFLXCL.61     
     &  fk2(IMT,KM,3),    ! IN  } matrix for point (I,J,K),                IPDFLXCL.62     
     &  fk3(IMT,KM,3),    ! IN  } Eq.1.8                                   IPDFLXCL.63     
     &  esav(IMT,KM,NT),  ! INOUT used to save e(I,K,2)                    JG170893.2      
     &  tempx(imt,km),tempa(imt,km),tempb(imt,km)                          JG170893.3      
C                           workspace, and OUT temperature changes         JG170893.4      
C                                                                          IPDFLXCL.65     
C                                                                          IPDFLXCL.66     
C        Declare local variables and arrays                                IPDFLXCL.67     
C                                                                          IPDFLXCL.68     
      REAL                                                                 IPDFLXCL.69     
     &  e(IMT,KMP1,3),    !     K.grad-T in isopycnal coordinates,         IPDFLXCL.70     
C                                 Eq.1.9                                   IPDFLXCL.71     
     &  tempxa(IMT,KMP1), !     workspace                                  JG170893.5      
     &  fxa,              !     } local csts.                              IPDFLXCL.74     
     &  fxb               !     }                                          IPDFLXCL.75     
C*                                                                         IPDFLXCL.76     
*IF DEF,OISOPYC                                                            ORH1F305.460    
C                                                                          IPDFLXCL.77     
C --------------------------------------------------------------           IPDFLXCL.78     
CL  (K.grad-T) is calculated (contained in e),                             IPDFLXCL.79     
CL    K being the diffusion matrix.                                        IPDFLXCL.80     
C --------------------------------------------------------------           IPDFLXCL.81     
C                                                                          IPDFLXCL.82     
      fxa=.5                                                               IPDFLXCL.83     
      fxb=2.                                                               IPDFLXCL.84     
      DO 810 K=1,KM                                                        IPDFLXCL.85     
      DO 810 I=1,IMT                                                       IPDFLXCL.86     
        tempa(I,K)=FMM(I,K)*(TB (I,K,M)-TBM(I,K,M))                        IPDFLXCL.87     
        tempb(I,K)=FMP(I,K)*(TBP(I,K,M)-TB (I,K,M))                        IPDFLXCL.88     
 810  CONTINUE                                                             IPDFLXCL.89     
C                                                                          IPDFLXCL.90     
      DO 820 K=1,KM                                                        IPDFLXCL.91     
        DO 815 I=2,IMTM1                                                   IPDFLXCL.92     
          e(I,K,1)=                                                        IPDFLXCL.93     
     &      fk1(I,K,1)*((TB(I+1,K,M)-TB(I,K,M))                            IPDFLXCL.94     
     &                *(fxb*CSTR(J)))*DXU2RQ(I,K)                          IPDFLXCL.95     
     &     +fk1(I,K,2)*(( tempa(I,K)+tempa(I+1,K)                          IPDFLXCL.96     
     &                   +tempb(I,K)+tempb(I+1,K))*DYT4R(J))               IPDFLXCL.97     
          e(I,K,2)=                                                        IPDFLXCL.98     
     &      fk2(I,K,1)*(( FM (I-1,K)*(TB (I  ,K,M)-TB (I-1,K,M))           IPDFLXCL.99     
     &                   +FM (I+1,K)*(TB (I+1,K,M)-TB (I  ,K,M))           IPDFLXCL.100    
     &                   +FMP(I-1,K)*(TBP(I  ,K,M)-TBP(I-1,K,M))           IPDFLXCL.101    
     &                   +FMP(I+1,K)*(TBP(I+1,K,M)-TBP(I  ,K,M)))          IPDFLXCL.102    
     &                   *(DXT4RQ(I,K)*CSR(J)))                            IPDFLXCL.103    
     &     +fk2(I,K,2)*((TBP(I,K,M)-TB(I,K,M))*DYUR(J))                    IPDFLXCL.104    
 815    CONTINUE                                                           IPDFLXCL.105    
        I=1                                                                IPDFLXCL.106    
          e(I,K,1)=                                                        IPDFLXCL.107    
     &      fk1(I,K,1)*((TB(I+1,K,M)-TB(I,K,M))                            IPDFLXCL.108    
     &                *(fxb*CSTR(J)))*DXU2RQ(I,K)                          IPDFLXCL.109    
     &     +fk1(I,K,2)*(( tempa(I,K)+tempa(I+1,K)                          IPDFLXCL.110    
     &                   +tempb(I,K)+tempb(I+1,K))*DYT4R(J))               IPDFLXCL.111    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4848   
          e(I,K,2)=                                                        IPDFLXCL.114    
     &      fk2(I,K,1)*(( FM (IMT-2,K)*(TB (I  ,K,M)-TB (IMT-2,K,M))       IPDFLXCL.115    
     &                   +FM (I+1,K)*(TB (I+1,K,M)-TB (I  ,K,M))           IPDFLXCL.116    
     &                   +FMP(IMT-2,K)*(TBP(I  ,K,M)-TBP(IMT-2,K,M))       IPDFLXCL.117    
     &                   +FMP(I+1,K)*(TBP(I+1,K,M)-TBP(I  ,K,M)))          IPDFLXCL.118    
     &                   *(DXT4RQ(I,K)*CSR(J)))                            IPDFLXCL.119    
     &     +fk2(I,K,2)*((TBP(I,K,M)-TB(I,K,M))*DYUR(J))                    IPDFLXCL.120    
        ELSE                                                               ORH1F305.4849   
          e(I,K,2)=                                                        IPDFLXCL.123    
     &      fk2(I,K,1)*(( FM (I+1,K)*(TB (I+1,K,M)-TB (I  ,K,M))           IPDFLXCL.124    
     &                   +FMP(I+1,K)*(TBP(I+1,K,M)-TBP(I  ,K,M)))          IPDFLXCL.125    
     &                   *(DXT4RQ(I,K)*CSR(J)))                            IPDFLXCL.126    
     &     +fk2(I,K,2)*((TBP(I,K,M)-TB(I,K,M))*DYUR(J))                    IPDFLXCL.127    
        ENDIF                                                              ORH1F305.4850   
        I=IMT                                                              IPDFLXCL.130    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4851   
          e(I,K,1)=                                                        IPDFLXCL.133    
     &      fk1(I,K,1)*((TB(3,K,M)-TB(I,K,M))                              IPDFLXCL.134    
     &                *(fxb*CSTR(J)))*DXU2RQ(I,K)                          IPDFLXCL.135    
     &     +fk1(I,K,2)*(( tempa(I,K)+tempa(3,K)                            IPDFLXCL.136    
     &                   +tempb(I,K)+tempb(3,K))*DYT4R(J))                 IPDFLXCL.137    
        ELSE                                                               ORH1F305.4852   
          e(I,K,1)=                                                        IPDFLXCL.140    
     &      fk1(I,K,1)*(0.                                                 IPDFLXCL.141    
     &                *(fxb*CSTR(J)))*DXU2RQ(I,K)                          IPDFLXCL.142    
     &     +fk1(I,K,2)*((tempa(I,K)+tempb(I,K))                            IPDFLXCL.143    
     &                   *fxb*DYT4R(J))                                    IPDFLXCL.144    
        ENDIF                                                              ORH1F305.4853   
        IF (L_OCYCLIC) THEN                                                ORH1F305.4854   
          e(I,K,2)=                                                        IPDFLXCL.147    
     &      fk2(I,K,1)*(( FM (I-1,K)*(TB (I  ,K,M)-TB (I-1,K,M))           IPDFLXCL.148    
     &                   +FM (3,K)*(TB (3,K,M)-TB (I  ,K,M))               IPDFLXCL.149    
     &                   +FMP(I-1,K)*(TBP(I  ,K,M)-TBP(I-1,K,M))           IPDFLXCL.150    
     &                   +FMP(3,K)*(TBP(3,K,M)-TBP(I  ,K,M)))              IPDFLXCL.151    
     &                   *(DXT4RQ(I,K)*CSR(J)))                            IPDFLXCL.152    
     &     +fk2(I,K,2)*((TBP(I,K,M)-TB(I,K,M))*DYUR(J))                    IPDFLXCL.153    
        ELSE                                                               ORH1F305.4855   
          e(I,K,2)=                                                        IPDFLXCL.156    
     &      fk2(I,K,1)*(( FM (I-1,K)*(TB (I  ,K,M)-TB (I-1,K,M))           IPDFLXCL.157    
     &                   +FMP(I-1,K)*(TBP(I  ,K,M)-TBP(I-1,K,M)))          IPDFLXCL.158    
     &                   *(DXT4RQ(I,K)*CSR(J)))                            IPDFLXCL.159    
     &     +fk2(I,K,2)*((TBP(I,K,M)-TB(I,K,M))*DYUR(J))                    IPDFLXCL.160    
        ENDIF                                                              ORH1F305.4856   
C                                                                          IPDFLXCL.163    
 820  CONTINUE                                                             IPDFLXCL.164    
      DO 840 K=2,KMM1                                                      IPDFLXCL.165    
      DO 840 I=1,IMT                                                       IPDFLXCL.166    
        tempa(I,K)=FM(I,K)*(TB(I,K-1,M)-TB(I,K  ,M))                       IPDFLXCL.167    
        tempb(I,K)=FM(I,K+1)*(TB(I,K  ,M)-TB(I,K+1,M))                     IPDFLXCL.168    
 840  CONTINUE                                                             IPDFLXCL.169    
      DO 850 K=2,KMM1                                                      IPDFLXCL.170    
        DO 845 I=1,IMTM1                                                   IPDFLXCL.171    
          e(I,K,1)=e(I,K,1)                                                IPDFLXCL.172    
     &     +fk1(I,K,3)*(( tempa(I,K)+tempa(I+1,K)                          IPDFLXCL.173    
     &                   +tempb(I,K)+tempb(I+1,K))*fxa)*DZ2RQ(I,K)         IPDFLXCL.174    
          e(I,K,2)=e(I,K,2)                                                IPDFLXCL.175    
     &      +fk2(I,K,3)*((FM (I,K-1)*(TB (I,K-1,M)-TB (I,K  ,M))           IPDFLXCL.176    
     &                   +FM (I,K+1)*(TB (I,K  ,M)-TB (I,K+1,M))           IPDFLXCL.177    
     &                   +FMP(I,K-1)*(TBP(I,K-1,M)-TBP(I,K  ,M))           IPDFLXCL.178    
     &                   +FMP(I,K+1)*(TBP(I,K  ,M)-TBP(I,K+1,M)))          IPDFLXCL.179    
     &                   *fxa)*DZ2RQ(I,K)                                  IPDFLXCL.180    
 845    CONTINUE                                                           IPDFLXCL.181    
        I=IMT                                                              IPDFLXCL.182    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4857   
          e(I,K,1)=e(I,K,1)                                                IPDFLXCL.185    
     &     +fk1(I,K,3)*(( tempa(I,K)+tempa(3,K)                            IPDFLXCL.186    
     &                   +tempb(I,K)+tempb(3,K))*fxa)*DZ2RQ(I,K)           IPDFLXCL.187    
        ELSE                                                               ORH1F305.4858   
          e(I,K,1)=e(I,K,1)                                                IPDFLXCL.190    
     &      +fk1(I,K,3)*(tempa(I,K)+tempb(I,K))                            IPDFLXCL.191    
     &                   *DZ2RQ(I,K)                                       IPDFLXCL.192    
        ENDIF                                                              ORH1F305.4859   
          e(I,K,2)=e(I,K,2)                                                IPDFLXCL.195    
     &      +fk2(I,K,3)*((FM (I,K-1)*(TB (I,K-1,M)-TB (I,K  ,M))           IPDFLXCL.196    
     &                   +FM (I,K+1)*(TB (I,K  ,M)-TB (I,K+1,M))           IPDFLXCL.197    
     &                   +FMP(I,K-1)*(TBP(I,K-1,M)-TBP(I,K  ,M))           IPDFLXCL.198    
     &                   +FMP(I,K+1)*(TBP(I,K  ,M)-TBP(I,K+1,M)))          IPDFLXCL.199    
     &                   *fxa)*DZ2RQ(I,K)                                  IPDFLXCL.200    
 850  CONTINUE                                                             IPDFLXCL.201    
C                                                                          IPDFLXCL.202    
CL  Calculate surface and bottom values                                    IPDFLXCL.203    
C                                                                          IPDFLXCL.204    
      DO 860 I=1,IMTM1                                                     IPDFLXCL.205    
       e(I,1,1)=e(I,1,1)                                                   IPDFLXCL.206    
     &    +fk1(I,1,3)*( FM(I  ,2)*(TB (I  ,1,M)-TB (I  ,2,M))              IPDFLXCL.207    
     &                 +FM(I+1,2)*(TB (I+1,1,M)-TB (I+1,2,M)))             IPDFLXCL.208    
     &                 *DZ2RQ(I,1)*0.5                                     IPDFLXCL.209    
        e(I,KM,1)=e(I,KM,1)                                                IPDFLXCL.210    
     &    +fk1(I,KM,3)*( FM(I  ,KM)*(TB(I  ,KMM1,M)-TB(I  ,KM,M))          IPDFLXCL.211    
     &                  +FM(I+1,KM)*(TB(I+1,KMM1,M)-TB(I+1,KM,M)))         IPDFLXCL.212    
     &                   *DZ2RQ(I,KM)*0.5                                  IPDFLXCL.213    
        e(I, 1,2)=e(I, 1,2)                                                IPDFLXCL.214    
     &    +fk2(I,1,3)*(  FM (I,2)*(TB (I,1,M)-TB (I,2,M))                  IPDFLXCL.215    
     &                  +FMP(I,2)*(TBP(I,1,M)-TBP(I,2,M)))                 IPDFLXCL.216    
     &                  *DZ2RQ(I,1)*0.5                                    IPDFLXCL.217    
        e(I,KM,2)=e(I,KM,2)                                                IPDFLXCL.218    
     &    +fk2(I,KM,3)*(  FM (I,KM)*(TB (I,KMM1,M)-TB (I,KM,M))            IPDFLXCL.219    
     &                   +FMP(I,KM)*(TBP(I,KMM1,M)-TBP(I,KM,M)))           IPDFLXCL.220    
     &                   *DZ2RQ(I,KM)*0.5                                  IPDFLXCL.221    
C                                                                          IPDFLXCL.222    
CL  e(I,1,3)=0 as the surface fluxes are included in the                   IPDFLXCL.223    
CL  implicit section of the code.                                          IPDFLXCL.224    
CL  e(I,KMP1,3)=0 as the bottom fluxes are zero.                           IPDFLXCL.225    
C                                                                          IPDFLXCL.226    
        e(I,1,3)=0.0                                                       IPDFLXCL.227    
        e(I,KMP1,3)=0.                                                     IPDFLXCL.228    
 860  CONTINUE                                                             IPDFLXCL.229    
      I=IMT                                                                IPDFLXCL.230    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4860   
       e(I,1,1)=e(I,1,1)                                                   IPDFLXCL.233    
     &    +fk1(I,1,3)*( FM(I  ,2)*(TB (I  ,1,M)-TB (I  ,2,M))              IPDFLXCL.234    
     &                 +FM(3,2)*(TB (3,1,M)-TB (3,2,M)))                   IPDFLXCL.235    
     &                 *DZ2RQ(I,1)*0.5                                     IPDFLXCL.236    
        ELSE                                                               ORH1F305.4861   
       e(I,1,1)=e(I,1,1)                                                   IPDFLXCL.239    
     &    +fk1(I, 1,3)*(FM(I,2)*(TB (I,1,M)-TB(I,2,M)))                    IPDFLXCL.240    
     &                 *DZ2RQ(I,1)*0.5                                     IPDFLXCL.241    
        ENDIF                                                              ORH1F305.4862   
        IF (L_OCYCLIC) THEN                                                ORH1F305.4863   
        e(I,KM,1)=e(I,KM,1)                                                IPDFLXCL.244    
     &    +fk1(I,KM,3)*( FM(I  ,KM)*(TB(I  ,KMM1,M)-TB(I  ,KM,M))          IPDFLXCL.245    
     &                  +FM(3,KM)*(TB(3,KMM1,M)-TB(3,KM,M)))               IPDFLXCL.246    
     &                   *DZ2RQ(I,KM)*0.5                                  IPDFLXCL.247    
        ELSE                                                               ORH1F305.4864   
        e(I,KM,1)=e(I,KM,1)                                                IPDFLXCL.250    
     &    +fk1(I,KM,3)*(FM(I,KM)*(TB(I,KMM1,M)-TB(I,KM,M)))                IPDFLXCL.251    
     &                   *DZ2RQ(I,KM)*0.5                                  IPDFLXCL.252    
        ENDIF                                                              ORH1F305.4865   
        e(I, 1,2)=e(I, 1,2)                                                IPDFLXCL.255    
     &    +fk2(I, 1,3)*( FM (I,2)*(TB(I,1,M)-TB(I,2,M))                    IPDFLXCL.256    
     &                  +FMP(I,2)*(TBP(I,1,M)-TBP(I,2,M)))                 IPDFLXCL.257    
     &                  *DZ2RQ(I,1)*0.5                                    IPDFLXCL.258    
        e(I,KM,2)=e(I,KM,2)                                                IPDFLXCL.259    
     &    +fk2(I,KM,3)*(  FM (I,KM)*(TB (I,KMM1,M)-TB (I,KM,M))            IPDFLXCL.260    
     &                   +FMP(I,KM)*(TBP(I,KMM1,M)-TBP(I,KM,M)))           IPDFLXCL.261    
     &                   *DZ2RQ(I,KM)*0.5                                  IPDFLXCL.262    
        e(I,1,3)=0.0                                                       IPDFLXCL.263    
        e(I,KMP1,3)=0.                                                     IPDFLXCL.264    
C                                                                          IPDFLXCL.265    
      DO 870 K=1,KM                                                        IPDFLXCL.266    
      DO 871 I=2,IMT                                                       IPDFLXCL.267    
          tempa(I,K)=FM(I-1,K)*(TB(I  ,K,M)-TB(I-1,K,M))                   IPDFLXCL.268    
 871  CONTINUE                                                             IPDFLXCL.269    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4866   
      tempa(1,K)=tempa(IMTM1,K)                                            IPDFLXCL.272    
        ELSE                                                               ORH1F305.4867   
      tempa(1,K)=0.0                                                       IPDFLXCL.275    
        ENDIF                                                              ORH1F305.4868   
      DO 872 I=1,IMTM1                                                     IPDFLXCL.278    
          tempb(I,K)=FM(I+1,K)*(TB(I+1,K,M)-TB(I  ,K,M))                   IPDFLXCL.279    
 872  CONTINUE                                                             IPDFLXCL.280    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4869   
      tempb(IMT,K)=tempb(2,K)                                              IPDFLXCL.283    
        ELSE                                                               ORH1F305.4870   
      tempb(IMT,K)=0.0                                                     IPDFLXCL.286    
        ENDIF                                                              ORH1F305.4871   
 870  CONTINUE                                                             IPDFLXCL.289    
C                                                                          IPDFLXCL.290    
      DO 880 K=2,KM                                                        IPDFLXCL.291    
      DO 880 I=1,IMT                                                       IPDFLXCL.292    
        e(I,K,3)=                                                          IPDFLXCL.293    
     &    fk3(I,K,1)*(( tempa(I,K)+tempa(I,K-1)                            IPDFLXCL.294    
     &                 +tempb(I,K)+tempb(I,K-1))*CSTR(J))*DXT4RQ(I,K)      IPDFLXCL.295    
 880  CONTINUE                                                             IPDFLXCL.296    
      DO 890 K=1,KM                                                        IPDFLXCL.297    
      DO 890 I=1,IMT                                                       IPDFLXCL.298    
        tempa(I,K)=FMM(I,K)*(TB (I,K,M)-TBM(I,K,M))                        IPDFLXCL.299    
        tempb(I,K)=FMP(I,K)*(TBP(I,K,M)-TB (I,K,M))                        IPDFLXCL.300    
 890  CONTINUE                                                             IPDFLXCL.301    
      DO 900 K=2,KM                                                        IPDFLXCL.302    
      DO 900 I=1,IMT                                                       IPDFLXCL.303    
        e(I,K,3)=e(I,K,3)                                                  IPDFLXCL.304    
     &   +fk3(I,K,2)*(( tempa(I,K)+tempa(I,K-1)                            IPDFLXCL.305    
     &                 +tempb(I,K)+tempb(I,K-1))*DYT4R(J))                 IPDFLXCL.306    
C                                                                          IPDFLXCL.307    
CL  Only fk3(I,K,1) & fk3(I,K,2) are used, since fk3(I,K,3) is             IPDFLXCL.308    
CL  dealt with in the implicit code in VDIFCALT.                           IPDFLXCL.309    
C                                                                          IPDFLXCL.310    
 900  CONTINUE                                                             IPDFLXCL.311    
C                                                                          IPDFLXCL.312    
C --------------------------------------------------------------           IPDFLXCL.313    
CL  Land points are masked out of the array                                IPDFLXCL.314    
C --------------------------------------------------------------           IPDFLXCL.315    
C                                                                          IPDFLXCL.316    
      DO 910 K=1,KM                                                        IPDFLXCL.317    
        DO 905 I=1,IMTM1                                                   IPDFLXCL.318    
          e(I,K,1)=FM (I+1,K)*FM(I,K)*e(I,K,1)                             IPDFLXCL.319    
          e(I,K,2)=FMP(I  ,K)*FM(I,K)*e(I,K,2)*CS(J)                       IPDFLXCL.320    
 905    CONTINUE                                                           IPDFLXCL.321    
        I=IMT                                                              IPDFLXCL.322    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4872   
          e(I,K,1)=FM (3,K)*FM(I,K)*e(I,K,1)                               IPDFLXCL.325    
        ELSE                                                               ORH1F305.4873   
          e(I,K,1)=0.                                                      IPDFLXCL.328    
        ENDIF                                                              ORH1F305.4874   
          e(I,K,2)=FMP(I  ,K)*FM(I,K)*e(I,K,2)*CS(J)                       IPDFLXCL.331    
 910  CONTINUE                                                             IPDFLXCL.332    
      DO 920 K=2,KM                                                        IPDFLXCL.333    
      DO 920 I=1,IMT                                                       IPDFLXCL.334    
          e(I,K,3)=FM(I,K-1)*FM(I,K)*e(I,K,3)                              IPDFLXCL.335    
 920  CONTINUE                                                             IPDFLXCL.336    
C                                                                          IPDFLXCL.337    
 930  CONTINUE                                                             IPDFLXCL.338    
C                                                                          IPDFLXCL.339    
C --------------------------------------------------------------           IPDFLXCL.340    
CL  The tracers are updated here                                           IPDFLXCL.341    
C --------------------------------------------------------------           IPDFLXCL.342    
C                                                                          IPDFLXCL.343    
      DO 940 K=1,KM                                                        IPDFLXCL.344    
      DO 941 I=2,IMT                                                       IPDFLXCL.345    
        tempx(I,K)=(e(I,K,1)-e(I-1,K,1))*4.*DXT4RQ(I,K)                    JG170893.6      
        tempa(i,k)=(e(I,K,2)-esav(I,K,M))*DYTR(J)                          JG170893.7      
        tempxa(i,k)=((e(i,k,1)-e(i-1,k,1))*4.*DXT4RQ(i,k)                  JG170893.8      
     &              +(e(i,k,2)-esav(i,k,m))*DYTR(J))*CSTR(J)               JG170893.9      
        tempx(i,k)=tempx(i,k)*cstr(j)                                      JG170893.10     
        tempa(i,k)=tempa(i,k)*cstr(j)                                      JG170893.11     
 941  CONTINUE                                                             IPDFLXCL.348    
        IF (L_OCYCLIC) THEN                                                ORH1F305.4875   
      tempx(1,K)=tempx(IMTM1,K)                                            JG170893.12     
      tempxa(1,K)=tempxa(IMTM1,K)                                          JG170893.13     
      tempa(1,K)=tempa(IMTM1,K)                                            IPDFLXCL.351    
        ELSE                                                               ORH1F305.4876   
      tempx(1,K)=0.0                                                       JG170893.14     
      tempxa(1,K)=0.0                                                      JG170893.15     
      tempa(1,K)=0.0                                                       IPDFLXCL.354    
        ENDIF                                                              ORH1F305.4877   
!                                                                          ORH1F305.4878   
      DO 942 I=1,IMT                                                       IPDFLXCL.357    
        tempb(I,K)= ((e(I,K,3)-e(I,K+1,3))*fxb)*DZ2RQ(I,K)                 IPDFLXCL.358    
        TA(I,K,M)=TA(I,K,M)+tempxa(i,k)+tempb(I,K)                         JG170893.16     
C                                                                          IPDFLXCL.360    
CL  esav is needed since ( K * d-T/d-y ) for the present row               IPDFLXCL.361    
CL  is used in the calc. of ( d/d-y * ( K * d-T/d-y ) )                    IPDFLXCL.362    
CL  for the next slab                                                      IPDFLXCL.363    
C                                                                          IPDFLXCL.364    
        esav(I,K,M)=e(I,K,2)                                               IPDFLXCL.365    
 942  CONTINUE                                                             IPDFLXCL.366    
 940  CONTINUE                                                             IPDFLXCL.367    
C                                                                          IPDFLXCL.368    
*ENDIF                                                                     ORH1F305.461    
      RETURN                                                               IPDFLXCL.369    
      END                                                                  IPDFLXCL.370    
*ENDIF                                                                     IPDFLXCL.371