*IF DEF,OCEAN                                                              ELEMENTS.2      
C ******************************COPYRIGHT******************************    ELEMENTS.3      
C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved.    ELEMENTS.4      
C                                                                          ELEMENTS.5      
C Use, duplication or disclosure of this code is subject to the            ELEMENTS.6      
C restrictions as set forth in the contract.                               ELEMENTS.7      
C                                                                          ELEMENTS.8      
C                Meteorological Office                                     ELEMENTS.9      
C                London Road                                               ELEMENTS.10     
C                BRACKNELL                                                 ELEMENTS.11     
C                Berkshire UK                                              ELEMENTS.12     
C                RG12 2SZ                                                  ELEMENTS.13     
C                                                                          ELEMENTS.14     
C If no contract has been raised with this copy of the code, the use,      ELEMENTS.15     
C duplication or disclosure of it is strictly prohibited.  Permission      ELEMENTS.16     
C to do so must first be obtained in writing from the Head of Numerical    ELEMENTS.17     
C Modelling at the above address.                                          ELEMENTS.18     
C ******************************COPYRIGHT******************************    ELEMENTS.19     
C                                                                          ELEMENTS.20     
CLL   Subroutine ELEMENTS                                                  ELEMENTS.21     
CLL                                                                        ELEMENTS.22     
CLL   Author: M J Roberts                                                  ELEMENTS.23     
CLL                                                                        ELEMENTS.24     
CLL   Description: Calculate temperature and salinity expansion            ELEMENTS.25     
CLL   coefficients (alpha and beta). Calculate gradients on sides of T     ELEMENTS.26     
CLL   cells for the the next row and update the current row.               ELEMENTS.27     
CLL                                                                        ELEMENTS.28     
CLL   External documentation:                                              ELEMENTS.29     
CLL       Modular Ocean Model 2 manual and code                            ELEMENTS.30     
CLL                                                                        ELEMENTS.31     
CLL   Implemented at UM vn 4.5 26 June 1998                                ELEMENTS.32     
CLL                                                                        ELEMENTS.33     
CLL   Modification History  :                                              ELEMENTS.34     
CLL   Version   Date     Comment & Name                                    ELEMENTS.35     
CLL   ------- --------  --------------------------------------------       ELEMENTS.36     
CLL                                                                        ELEMENTS.37     
CLL   Subroutine dependencies.                                             ELEMENTS.38     
CLL   Called by ISOPYC_M                                                   ELEMENTS.39     
CLL   Calls subroutines DRODT, DRODS, SETBCX                               ELEMENTS.40     
CLL                                                                        ELEMENTS.41     
CLLEND------------------------------------------------------------------   ELEMENTS.42     
C                                                                          ELEMENTS.43     

      SUBROUTINE ELEMENTS (                                                 1,26ELEMENTS.44     
*CALL ARGSIZE                                                              ELEMENTS.45     
*CALL COCAWRKA                                                             ELEMENTS.46     
     &  ,j,cstr,dyur,dxur,dz2r,dzz2r,dzw,dtxsqr,delta_iso,                 ELEMENTS.47     
     &  s_minus,s_plus,dzt2r,Ai_ez,Ai_nz,Ai_bx,Ai_by,K11,K22,K33,          ELEMENTS.48     
     &  slope_max,slmxr,adv_vetiso,adv_vbtiso,adv_fbiso,J_OFFSET)          ELEMENTS.49     
c                                                                          ELEMENTS.50     
c                                                                          ELEMENTS.51     
c-----------------------------------------------------------------------   ELEMENTS.52     
c     calculate temperature and salinity expansion coefficients (alpha     ELEMENTS.53     
c     and beta). calculate gradients on sides of T cells for the           ELEMENTS.54     
c     the next row and update the current row                              ELEMENTS.55     
c-----------------------------------------------------------------------   ELEMENTS.56     
c                                                                          ELEMENTS.57     
      IMPLICIT NONE                                                        ELEMENTS.58     
                                                                           ELEMENTS.59     
*CALL OARRYSIZ                                                             ELEMENTS.60     
*CALL TYPSIZE                                                              ELEMENTS.61     
*CALL CNTLOCN                                                              ELEMENTS.62     
*CALL COCTWRKA                                                             ELEMENTS.63     
*CALL COCSTATE                                                             ELEMENTS.64     
                                                                           ELEMENTS.65     
      INTEGER i,j,k,n,kp1,kr,ip,jq,m,J_OFFSET                              ELEMENTS.66     
      REAL c0,c1,p5,c2                                                     ELEMENTS.67     
      REAL cstr(jmt),dyur(jmt),dxur(imt),dzt2r(km)                         ELEMENTS.68     
      REAL dzwr(0:km),dzw(0:km),dz2r(km),dzz2r(km+1)                       ELEMENTS.69     
      REAL slmx,slopec,slmxr,dtxsqr(km),delta_iso,                         ELEMENTS.70     
     &     s_minus,s_plus,slope_max                                        ELEMENTS.71     
      REAL tprime,sprime                                                   ELEMENTS.72     
      REAL tq,sq                                                           ELEMENTS.73     
c      REAL tbpp(imt,km,nt),fmpp(imt,km)                                   ELEMENTS.74     
                                                                           ELEMENTS.75     
C Isopycnal diffusion variables (see ISOPYC_M)                             ELEMENTS.76     
      REAL Ai_ez(imt_iso,km_iso,0:1,0:1),Ai_bx(imt_iso,km_iso,0:1,0:1),    ELEMENTS.77     
     &     Ai_by(imt_iso,km_iso,0:1,0:1),Ai_nz(imt_iso,km_iso,0:1,0:1),    ELEMENTS.78     
     &     K11(imt_iso,km_iso),K22(imt_iso,km_iso),K33(imt_iso,km_iso)     ELEMENTS.79     
                                                                           ELEMENTS.80     
C GM variables                                                             ELEMENTS.81     
      REAL adv_vetiso(imt_gmm,km_gmm),                                     ELEMENTS.82     
     &     adv_vbtiso(imt_gmm,0:km_gmm),adv_fbiso(imt_gmm,0:km_gmm)        ELEMENTS.83     
                                                                           ELEMENTS.84     
C External subroutines                                                     ELEMENTS.85     
C        DRODT  ! calculate expansion coeff due to temperature             ELEMENTS.86     
C        DRODS  ! calculate expansion coeff due to salinity                ELEMENTS.87     
                                                                           ELEMENTS.88     
      c0=0.                                                                ELEMENTS.89     
      c1=1.                                                                ELEMENTS.90     
      c2=2.                                                                ELEMENTS.91     
      p5=0.5                                                               ELEMENTS.92     
                                                                           ELEMENTS.93     
c-----------------------------------------------------------------------   ELEMENTS.94     
c     initialize variables (all mixing units are cm**2/sec.)               ELEMENTS.95     
c-----------------------------------------------------------------------   ELEMENTS.96     
c                                                                          ELEMENTS.97     
c     maximum isopycnal slope                                              ELEMENTS.98     
c                                                                          ELEMENTS.99     
      slmx  = slope_max                                                    ELEMENTS.100    
c                                                                          ELEMENTS.101    
c     set reciprocal of maximum isopycnal slope                            ELEMENTS.102    
c                                                                          ELEMENTS.103    
      slmxr = c1/slmx                                                      ELEMENTS.104    
c                                                                          ELEMENTS.105    
c-----------------------------------------------------------------------   ELEMENTS.106    
c     store the square root of the tracer timestep acceleration values     ELEMENTS.107    
c     into variable "dtxsqr" for use in isopycnal mixing                   ELEMENTS.108    
c     this is a MOM variable related to distorted timestepping:            ELEMENTS.109    
c     set equal to 1                                                       ELEMENTS.110    
c-----------------------------------------------------------------------   ELEMENTS.111    
      do k=1,km                                                            ELEMENTS.112    
c       dtxsqr(k) = sqrt(dtxcel(k))                                        ELEMENTS.113    
       dtxsqr(k) = c1                                                      ELEMENTS.114    
      enddo                                                                ELEMENTS.115    
                                                                           ELEMENTS.116    
C delta_iso is 'isopycnal diffusion grid factor'                           ELEMENTS.117    
C it affects the scaling when using the full tensor                        ELEMENTS.118    
C if (delta_iso < 0.5) then tensor is rescaled if slope between s_minus    ELEMENTS.119    
C                                              and s_plus                  ELEMENTS.120    
C otherwise it is not rescaled                                             ELEMENTS.121    
                                                                           ELEMENTS.122    
      delta_iso=0.6                                                        ELEMENTS.123    
      if (delta_iso .lt. p5) then                                          ELEMENTS.124    
        s_minus = (c1 - sqrt(c1 - 4.0*delta_iso**2))/(c2*delta_iso)        ELEMENTS.125    
        s_plus  = c1/s_minus                                               ELEMENTS.126    
      else                                                                 ELEMENTS.127    
        s_minus = c0                                                       ELEMENTS.128    
        s_plus  = c0                                                       ELEMENTS.129    
      endif                                                                ELEMENTS.130    
                                                                           ELEMENTS.131    
c-----------------------------------------------------------------------   ELEMENTS.132    
c     initialize arrays                                                    ELEMENTS.133    
c-----------------------------------------------------------------------   ELEMENTS.134    
c                                                                          ELEMENTS.135    
       if (J+J_OFFSET.EQ.2) then                                           ELEMENTS.136    
c                                                                          ELEMENTS.137    
c=======================================================================   ELEMENTS.138    
c     Estimate alpha, beta, and normal gradients on faces of T cells       ELEMENTS.139    
c     for first row. Also initialise any variables which will be updated   ELEMENTS.140    
c     row by row                                                           ELEMENTS.141    
c=======================================================================   ELEMENTS.142    
c                                                                          ELEMENTS.143    
       CALL DRODT(TB,TB(1,1,2),alphai(1,1,1),imt,km)                       ELEMENTS.144    
       CALL DRODS(TB,TB(1,1,2),betai(1,1,1),imt,km)                        ELEMENTS.145    
       call SETBCX (alphai(1,1,1), imt, km)                                ELEMENTS.146    
       call SETBCX (betai(1,1,1),  imt, km)                                ELEMENTS.147    
                                                                           ELEMENTS.148    
       IF (L_OBIHARMGM) THEN                                               ELEMENTS.149    
         CALL DRODT(TBP,TBP(1,1,2),alphai(1,1,2),imt,km)                   ELEMENTS.150    
         CALL DRODS(TBP,TBP(1,1,2),betai(1,1,2),imt,km)                    ELEMENTS.151    
         call SETBCX (alphai(1,1,2), imt, km)                              ELEMENTS.152    
         call SETBCX (betai(1,1,2),  imt, km)                              ELEMENTS.153    
       ENDIF                                                               ELEMENTS.154    
c                                                                          ELEMENTS.155    
        do n=1,2                                                           ELEMENTS.156    
          do k=1,km                                                        ELEMENTS.157    
            do i=1,imt-1                                                   ELEMENTS.158    
               ddxt(i,k,n,1) = (((fm(i,k)*fm(i+1,k))*cstr(j))*             ELEMENTS.159    
     &                   dxur(i))*(tb(i+1,k,n) - tb(i,k,n))                ELEMENTS.160    
            enddo                                                          ELEMENTS.161    
          enddo                                                            ELEMENTS.162    
          call SETBCX (ddxt(1,1,n,1), imt, km)                             ELEMENTS.163    
        enddo                                                              ELEMENTS.164    
c                                                                          ELEMENTS.165    
        do n=1,2                                                           ELEMENTS.166    
          do k=1,km                                                        ELEMENTS.167    
            do i=1,imt                                                     ELEMENTS.168    
               ddyt(i,k,n,1) = c0                                          ELEMENTS.169    
            enddo                                                          ELEMENTS.170    
          enddo                                                            ELEMENTS.171    
          call SETBCX (ddyt(1,1,n,1), imt, km)                             ELEMENTS.172    
        enddo                                                              ELEMENTS.173    
c                                                                          ELEMENTS.174    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.175    
        do n=1,2                                                           ELEMENTS.176    
          do k=1,km                                                        ELEMENTS.177    
            do i=1,imt                                                     ELEMENTS.178    
               ddyt(i,k,n,2) = ((fmp(i,k)*fmpp(i,k))*dyur(j+1))*           ELEMENTS.179    
     &                 (tbpp(i,k,n) - tbp(i,k,n))                          ELEMENTS.180    
            enddo                                                          ELEMENTS.181    
          enddo                                                            ELEMENTS.182    
          call SETBCX (ddyt(1,1,n,2), imt, km)                             ELEMENTS.183    
        enddo                                                              ELEMENTS.184    
        ENDIF                                                              ELEMENTS.185    
c                                                                          ELEMENTS.186    
        do n=1,2                                                           ELEMENTS.187    
          do k=1,km                                                        ELEMENTS.188    
            kp1 = min(k+1,km)                                              ELEMENTS.189    
            do i=1,imt                                                     ELEMENTS.190    
               ddzt(i,k,n,1) = ((2.*fm(i,kp1))*dzz2r(k+1))*                ELEMENTS.191    
     &                        (tb(i,k,n) - tb(i,kp1,n))                    ELEMENTS.192    
            enddo                                                          ELEMENTS.193    
          enddo                                                            ELEMENTS.194    
          do i=1,imt                                                       ELEMENTS.195    
             ddzt(i,0,n,1) = c0                                            ELEMENTS.196    
          enddo                                                            ELEMENTS.197    
          call SETBCX (ddzt(1,0,n,1), imt, km+1)                           ELEMENTS.198    
        enddo                                                              ELEMENTS.199    
c                                                                          ELEMENTS.200    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.201    
        do n=1,2                                                           ELEMENTS.202    
          do k=1,km                                                        ELEMENTS.203    
            kp1 = min(k+1,km)                                              ELEMENTS.204    
            do i=1,imt                                                     ELEMENTS.205    
              ddzt(i,k,n,2) = ((2.*fmp(i,kp1))*dzz2r(k+1))*                ELEMENTS.206    
     &                        (tbp(i,k,n) - tbp(i,kp1,n))                  ELEMENTS.207    
            enddo                                                          ELEMENTS.208    
          enddo                                                            ELEMENTS.209    
          do i=1,imt                                                       ELEMENTS.210    
             ddzt(i,0,n,2) = c0                                            ELEMENTS.211    
          enddo                                                            ELEMENTS.212    
          call SETBCX (ddzt(1,0,n,2), imt, km+1)                           ELEMENTS.213    
        enddo                                                              ELEMENTS.214    
        ENDIF                                                              ELEMENTS.215    
c                                                                          ELEMENTS.216    
        do n=1,nt                                                          ELEMENTS.217    
          do k=1,km                                                        ELEMENTS.218    
            do i=1,imt                                                     ELEMENTS.219    
              diff_fn(i,k,n,0)=c0                                          ELEMENTS.220    
            enddo                                                          ELEMENTS.221    
          enddo                                                            ELEMENTS.222    
        enddo                                                              ELEMENTS.223    
                                                                           ELEMENTS.224    
      IF (L_OISOGM) THEN                                                   ELEMENTS.225    
        do k=1,km                                                          ELEMENTS.226    
          do i=1,imt                                                       ELEMENTS.227    
            adv_vetiso(i,k) = c0                                           ELEMENTS.228    
            adv_vntiso(i,k,0) = c0                                         ELEMENTS.229    
            adv_vntiso(i,k,1) = c0                                         ELEMENTS.230    
          enddo                                                            ELEMENTS.231    
        enddo                                                              ELEMENTS.232    
      ENDIF                                                                ELEMENTS.233    
c                                                                          ELEMENTS.234    
      IF (L_OISOGM) THEN                                                   ELEMENTS.235    
        do k=0,km                                                          ELEMENTS.236    
          do i=1,imt                                                       ELEMENTS.237    
            adv_vbtiso(i,k) = c0                                           ELEMENTS.238    
            adv_fbiso(i,k)  = c0                                           ELEMENTS.239    
          enddo                                                            ELEMENTS.240    
        enddo                                                              ELEMENTS.241    
      ENDIF ! GM scheme                                                    ELEMENTS.242    
                                                                           ELEMENTS.243    
      endif  ! j+joffset=2                                                 ELEMENTS.244    
                                                                           ELEMENTS.245    
            do k=1,km                                                      ELEMENTS.246    
              do i=1,imt                                                   ELEMENTS.247    
                Ai_ez(i,k,0,0) = c0                                        ELEMENTS.248    
                Ai_ez(i,k,0,1) = c0                                        ELEMENTS.249    
                Ai_ez(i,k,1,0) = c0                                        ELEMENTS.250    
                Ai_ez(i,k,1,1) = c0                                        ELEMENTS.251    
                Ai_bx(i,k,0,0) = c0                                        ELEMENTS.252    
                Ai_bx(i,k,0,1) = c0                                        ELEMENTS.253    
                Ai_bx(i,k,1,0) = c0                                        ELEMENTS.254    
                Ai_bx(i,k,1,1) = c0                                        ELEMENTS.255    
                Ai_by(i,k,0,0) = c0                                        ELEMENTS.256    
                Ai_by(i,k,0,1) = c0                                        ELEMENTS.257    
                Ai_by(i,k,1,0) = c0                                        ELEMENTS.258    
                Ai_by(i,k,1,1) = c0                                        ELEMENTS.259    
                Ai_nz(i,k,0,0) = c0                                        ELEMENTS.260    
                Ai_nz(i,k,0,1) = c0                                        ELEMENTS.261    
                Ai_nz(i,k,1,0) = c0                                        ELEMENTS.262    
                Ai_nz(i,k,1,1) = c0                                        ELEMENTS.263    
                K11(i,k) = c0                                              ELEMENTS.264    
                K22(i,k) = c0                                              ELEMENTS.265    
                K33(i,k) = c0                                              ELEMENTS.266    
              enddo                                                        ELEMENTS.267    
            enddo                                                          ELEMENTS.268    
                                                                           ELEMENTS.269    
                                                                           ELEMENTS.270    
c                                                                          ELEMENTS.271    
C update old values of expansion coeffs and gradients with new values      ELEMENTS.272    
c                                                                          ELEMENTS.273    
        do k=1,km                                                          ELEMENTS.274    
          do i=1,imt                                                       ELEMENTS.275    
           alphai(i,k,0)=alphai(i,k,1)                                     ELEMENTS.276    
           betai(i,k,0)=betai(i,k,1)                                       ELEMENTS.277    
          enddo                                                            ELEMENTS.278    
        enddo                                                              ELEMENTS.279    
                                                                           ELEMENTS.280    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.281    
        do k=1,km                                                          ELEMENTS.282    
          do i=1,imt                                                       ELEMENTS.283    
           alphai(i,k,1)=alphai(i,k,2)                                     ELEMENTS.284    
           betai(i,k,1)=betai(i,k,2)                                       ELEMENTS.285    
          enddo                                                            ELEMENTS.286    
        enddo                                                              ELEMENTS.287    
        ENDIF                                                              ELEMENTS.288    
                                                                           ELEMENTS.289    
        do n=1,2                                                           ELEMENTS.290    
          do k=0,km                                                        ELEMENTS.291    
            do i=1,imt                                                     ELEMENTS.292    
               ddzt(i,k,n,0) = ddzt(i,k,n,1)                               ELEMENTS.293    
            enddo                                                          ELEMENTS.294    
          enddo                                                            ELEMENTS.295    
        enddo                                                              ELEMENTS.296    
                                                                           ELEMENTS.297    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.298    
        do n=1,2                                                           ELEMENTS.299    
          do k=0,km                                                        ELEMENTS.300    
            do i=1,imt                                                     ELEMENTS.301    
               ddzt(i,k,n,1) = ddzt(i,k,n,2)                               ELEMENTS.302    
            enddo                                                          ELEMENTS.303    
          enddo                                                            ELEMENTS.304    
        enddo                                                              ELEMENTS.305    
        ENDIF                                                              ELEMENTS.306    
                                                                           ELEMENTS.307    
        do n=1,2                                                           ELEMENTS.308    
          do k=1,km                                                        ELEMENTS.309    
            do i=1,imt                                                     ELEMENTS.310    
               ddxt(i,k,n,0) = ddxt(i,k,n,1)                               ELEMENTS.311    
               ddyt(i,k,n,0) = ddyt(i,k,n,1)                               ELEMENTS.312    
            enddo                                                          ELEMENTS.313    
          enddo                                                            ELEMENTS.314    
        enddo                                                              ELEMENTS.315    
                                                                           ELEMENTS.316    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.317    
        do n=1,2                                                           ELEMENTS.318    
          do k=1,km                                                        ELEMENTS.319    
            do i=1,imt                                                     ELEMENTS.320    
            ddyt(i,k,n,1) = ddyt(i,k,n,2)                                  ELEMENTS.321    
            enddo                                                          ELEMENTS.322    
          enddo                                                            ELEMENTS.323    
        enddo                                                              ELEMENTS.324    
        ENDIF                                                              ELEMENTS.325    
                                                                           ELEMENTS.326    
c-----------------------------------------------------------------------   ELEMENTS.327    
c     alpha and beta at centers of T cells                                 ELEMENTS.328    
c-----------------------------------------------------------------------   ELEMENTS.329    
c                                                                          ELEMENTS.330    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.331    
          CALL DRODT(TBPP,TBPP(1,1,2),alphai(1,1,2),imt,km)                ELEMENTS.332    
          CALL DRODS(TBPP,TBPP(1,1,2),betai(1,1,2),imt,km)                 ELEMENTS.333    
          call SETBCX (alphai(1,1,2), imt, km)                             ELEMENTS.334    
          call SETBCX (betai(1,1,2),  imt, km)                             ELEMENTS.335    
        ELSE                                                               ELEMENTS.336    
          CALL DRODT(TBP,TBP(1,1,2),alphai(1,1,1),imt,km)                  ELEMENTS.337    
          CALL DRODS(TBP,TBP(1,1,2),betai(1,1,1),imt,km)                   ELEMENTS.338    
          call SETBCX (alphai(1,1,1), imt, km)                             ELEMENTS.339    
          call SETBCX (betai(1,1,1),  imt, km)                             ELEMENTS.340    
        ENDIF                                                              ELEMENTS.341    
                                                                           ELEMENTS.342    
c                                                                          ELEMENTS.343    
c-----------------------------------------------------------------------   ELEMENTS.344    
c     gradients at eastern face of T cells                                 ELEMENTS.345    
c-----------------------------------------------------------------------   ELEMENTS.346    
c                                                                          ELEMENTS.347    
        do n=1,2                                                           ELEMENTS.348    
          do k=1,km                                                        ELEMENTS.349    
            do i=1,imt-1                                                   ELEMENTS.350    
             ddxt(i,k,n,1) = (((fmp(i,k)*fmp(i+1,k))*cstr(j+1))*           ELEMENTS.351    
     &                   dxur(i))*(tbp(i+1,k,n) - tbp(i,k,n))              ELEMENTS.352    
            enddo                                                          ELEMENTS.353    
          enddo                                                            ELEMENTS.354    
          call SETBCX (ddxt(1,1,n,1), imt, km)                             ELEMENTS.355    
        enddo                                                              ELEMENTS.356    
c                                                                          ELEMENTS.357    
c-----------------------------------------------------------------------   ELEMENTS.358    
c     gradients at northern face of T cells                                ELEMENTS.359    
c-----------------------------------------------------------------------   ELEMENTS.360    
c                                                                          ELEMENTS.361    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.362    
        do n=1,2                                                           ELEMENTS.363    
          do k=1,km                                                        ELEMENTS.364    
            kp1 = min(k+1,km)                                              ELEMENTS.365    
            do i=1,imt                                                     ELEMENTS.366    
             ddyt(i,k,n,2) = ((fmp(i,k)*fmpp(i,k))*dyur(j+1))*             ELEMENTS.367    
     &                 (tbpp(i,k,n) - tbp(i,k,n))                          ELEMENTS.368    
            enddo                                                          ELEMENTS.369    
          enddo                                                            ELEMENTS.370    
          call SETBCX (ddyt(1,1,n,2), imt, km)                             ELEMENTS.371    
        enddo                                                              ELEMENTS.372    
                                                                           ELEMENTS.373    
        ELSE                                                               ELEMENTS.374    
                                                                           ELEMENTS.375    
        do n=1,2                                                           ELEMENTS.376    
          do k=1,km                                                        ELEMENTS.377    
            kp1 = min(k+1,km)                                              ELEMENTS.378    
            do i=1,imt                                                     ELEMENTS.379    
               ddyt(i,k,n,1) = ((fm(i,k)*fmp(i,k))*dyur(j))*               ELEMENTS.380    
     &                 (tbp(i,k,n) - tb(i,k,n))                            ELEMENTS.381    
            enddo                                                          ELEMENTS.382    
          enddo                                                            ELEMENTS.383    
          call SETBCX (ddyt(1,1,n,1), imt, km)                             ELEMENTS.384    
        enddo                                                              ELEMENTS.385    
        ENDIF                                                              ELEMENTS.386    
c                                                                          ELEMENTS.387    
c-----------------------------------------------------------------------   ELEMENTS.388    
c     gradients at bottom face of T cells                                  ELEMENTS.389    
c-----------------------------------------------------------------------   ELEMENTS.390    
c                                                                          ELEMENTS.391    
        IF (L_OBIHARMGM) THEN                                              ELEMENTS.392    
        do n=1,2                                                           ELEMENTS.393    
          do k=1,km                                                        ELEMENTS.394    
            kp1 = min(k+1,km)                                              ELEMENTS.395    
            do i=1,imt                                                     ELEMENTS.396    
               ddzt(i,k,n,2) = ((2.*fmpp(i,kp1))*dzz2r(k+1))*              ELEMENTS.397    
     &                        (tbpp(i,k,n) - tbpp(i,kp1,n))                ELEMENTS.398    
            enddo                                                          ELEMENTS.399    
          enddo                                                            ELEMENTS.400    
          do i=1,imt                                                       ELEMENTS.401    
             ddzt(i,0,n,2) = c0                                            ELEMENTS.402    
          enddo                                                            ELEMENTS.403    
          call SETBCX (ddzt(1,0,n,2), imt, km+1)                           ELEMENTS.404    
        enddo                                                              ELEMENTS.405    
                                                                           ELEMENTS.406    
        ELSE                                                               ELEMENTS.407    
                                                                           ELEMENTS.408    
        do n=1,2                                                           ELEMENTS.409    
          do k=1,km                                                        ELEMENTS.410    
            kp1 = min(k+1,km)                                              ELEMENTS.411    
            do i=1,imt                                                     ELEMENTS.412    
               ddzt(i,k,n,1) = ((2.*fmp(i,kp1))*dzz2r(k+1))*               ELEMENTS.413    
     &                        (tbp(i,k,n) - tbp(i,kp1,n))                  ELEMENTS.414    
            enddo                                                          ELEMENTS.415    
          enddo                                                            ELEMENTS.416    
          do i=1,imt                                                       ELEMENTS.417    
             ddzt(i,0,n,1) = c0                                            ELEMENTS.418    
          enddo                                                            ELEMENTS.419    
          call SETBCX (ddzt(1,0,n,1), imt, km+1)                           ELEMENTS.420    
        enddo                                                              ELEMENTS.421    
        ENDIF                                                              ELEMENTS.422    
                                                                           ELEMENTS.423    
      RETURN                                                               ELEMENTS.424    
      END                                                                  ELEMENTS.425    
*ENDIF                                                                     ELEMENTS.426