*IF DEF,A13_1C                                                             DIFCTL1C.2      
C ******************************COPYRIGHT******************************    DIFCTL1C.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    DIFCTL1C.4      
C                                                                          DIFCTL1C.5      
C Use, duplication or disclosure of this code is subject to the            DIFCTL1C.6      
C restrictions as set forth in the contract.                               DIFCTL1C.7      
C                                                                          DIFCTL1C.8      
C                Meteorological Office                                     DIFCTL1C.9      
C                London Road                                               DIFCTL1C.10     
C                BRACKNELL                                                 DIFCTL1C.11     
C                Berkshire UK                                              DIFCTL1C.12     
C                RG12 2SZ                                                  DIFCTL1C.13     
C                                                                          DIFCTL1C.14     
C If no contract has been raised with this copy of the code, the use,      DIFCTL1C.15     
C duplication or disclosure of it is strictly prohibited.  Permission      DIFCTL1C.16     
C to do so must first be obtained in writing from the Head of Numerical    DIFCTL1C.17     
C Modelling at the above address.                                          DIFCTL1C.18     
C ******************************COPYRIGHT******************************    DIFCTL1C.19     
C                                                                          DIFCTL1C.20     
CLL   SUBROUTINE DIF_CTL ------------------------------------------        DIFCTL1C.21     
CLL                                                                        DIFCTL1C.22     
CLL   PURPOSE:   CALCULATES AND ADDS DIFFUSION INCREMENTS TO U,V, QT       DIFCTL1C.23     
CLL              AND THETAL USING EQUATIONS (47) AND (48). ONE MORE        DIFCTL1C.24     
CLL              PRESSURE THAN VELOCITY ROW IS UPDATED.                    DIFCTL1C.25     
CLL                                                                        DIFCTL1C.26     
CLL   NOT SUITABLE FOR SINGLE COLUMN USE.                                  DIFCTL1C.27     
CLL                                                                        DIFCTL1C.28     
CLL   WRITTEN  BY M.H MAWSON.                                              DIFCTL1C.29     
CLL                                                                        DIFCTL1C.30     
CLL  MODEL            MODIFICATION HISTORY:                                DIFCTL1C.31     
CLL VERSION  DATE                                                          DIFCTL1C.32     
CLL                                                                        DIFCTL1C.33     
!LL   4.4   11/08/97  New version optimised for T3E.                       DIFCTL1C.34     
!LL                   Not bit-reproducible with DIFCTL1A.                  DIFCTL1C.35     
CLL   4.4    25/07/97 Calling sequence changed for UV_DIF, TH_Q_DIF,       DIFCTL1C.36     
CLL                   COEFF_UV, COEF_TH_Q from once per diffusion          DIFCTL1C.37     
CLL                   sweep per level to once per dynamics                 DIFCTL1C.38     
CLL                   sweep, in order to improve MPP scalability.          DIFCTL1C.39     
CLL                   A. Dickinson                                         DIFCTL1C.40     
CLL                                                                        DIFCTL1C.41     
CLL                                                                        DIFCTL1C.42     
CLL   PROGRAMMING STANDARD:                                                DIFCTL1C.43     
CLL                                                                        DIFCTL1C.44     
CLL   SYSTEM COMPONENTS COVERED: P13                                       DIFCTL1C.45     
CLL                                                                        DIFCTL1C.46     
CLL   SYSTEM TASK: P1                                                      DIFCTL1C.47     
CLL                                                                        DIFCTL1C.48     
CLL   DOCUMENTATION:       THE EQUATIONS USED ARE (47) AND (48)            DIFCTL1C.49     
CLL                        IN UNIFIED MODEL DOCUMENTATION PAPER            DIFCTL1C.50     
CLL                        NO. 10 M.J.P. CULLEN,T.DAVIES AND M.H.MAWSON    DIFCTL1C.51     
CLLEND-------------------------------------------------------------        DIFCTL1C.52     
C                                                                          DIFCTL1C.53     
C*L   ARGUMENTS:---------------------------------------------------        DIFCTL1C.54     

      SUBROUTINE DIF_CTL                                                    1,31DIFCTL1C.55     
     1                  (PSTAR,U,V,THETAL,QT,RS_SQUARED_DELTAP,K1,K2,      DIFCTL1C.56     
     2                   KEXP_K1,KEXP_K2,                                  DIFCTL1C.57     
     &                   DELTA_AK,DELTA_BK,AK,BK,ADVECTION_TIMESTEP,       DIFCTL1C.58     
     3                   COS_U_LATITUDE,COS_P_LATITUDE,SEC_U_LATITUDE,     DIFCTL1C.59     
     4                   SEC_P_LATITUDE,LONGITUDE_STEP_INVERSE,P_FIELD,    DIFCTL1C.60     
     5                   LATITUDE_STEP_INVERSE,U_FIELD,ROW_LENGTH,         DIFCTL1C.61     
*CALL ARGFLDPT                                                             DIFCTL1C.62     
     6                   P_LEVELS,Q_LEVELS,                                DIFCTL1C.63     
     7                   COS_U_LONGITUDE,SIN_U_LONGITUDE,                  DIFCTL1C.64     
     8                   PRESSURE_ALTITUDE,L_TRACER_THETAL_QT)             DIFCTL1C.65     
                                                                           DIFCTL1C.66     
      IMPLICIT NONE                                                        DIFCTL1C.67     
                                                                           DIFCTL1C.68     
      INTEGER                                                              DIFCTL1C.69     
     *  U_FIELD            !IN DIMENSION OF FIELDS ON VELOCITY GRID        DIFCTL1C.70     
     *, P_FIELD            !IN DIMENSION OF FIELDS ON PRESSURE GRID        DIFCTL1C.71     
     *, P_LEVELS           !IN NUMBER OF MODEL LEVELS.                     DIFCTL1C.72     
     *, Q_LEVELS           !IN NUMBER OF MOIST MODEL LEVELS.               DIFCTL1C.73     
     *, ROW_LENGTH         !IN NUMBER OF POINTS PER ROW                    DIFCTL1C.74     
     &, KEXP_K1(P_LEVELS)  !IN. EXPONENT OF DIFFUSION SCHEME FOR U,V       DIFCTL1C.75     
     &                     !    AND THETAL FIELDS.                         DIFCTL1C.76     
     &, KEXP_K2(Q_LEVELS)  !IN. EXPONENT OF DIFFUSION SCHEME FOR           DIFCTL1C.77     
     &                     !    QT FIELD.                                  DIFCTL1C.78     
                                                                           DIFCTL1C.79     
! All TYPFLDPT arguments are intent IN                                     DIFCTL1C.80     
*CALL TYPFLDPT                                                             DIFCTL1C.81     
                                                                           DIFCTL1C.82     
      REAL                                                                 DIFCTL1C.83     
     * U(U_FIELD,P_LEVELS)       !INOUT U VELOCITY FIELD.                  DIFCTL1C.84     
     *,V(U_FIELD,P_LEVELS)       !INOUT V VELOCITY FIELD.                  DIFCTL1C.85     
     *,THETAL(P_FIELD,P_LEVELS)  !INOUT THETAL FIELD.                      DIFCTL1C.86     
     *,QT(P_FIELD,Q_LEVELS)      !INOUT QT FIELD.                          DIFCTL1C.87     
                                                                           DIFCTL1C.88     
      REAL                                                                 DIFCTL1C.89     
     * PSTAR(P_FIELD)            !IN PSTAR FIELD.                          DIFCTL1C.90     
     *,RS_SQUARED_DELTAP(P_FIELD,P_LEVELS) !IN RS*RS*DELTA P               DIFCTL1C.91     
     *,COS_U_LATITUDE(U_FIELD)   !IN COS(LAT) AT U POINTS.                 DIFCTL1C.92     
     *,COS_P_LATITUDE(P_FIELD)   !IN COS(LAT) AT P POINTS.                 DIFCTL1C.93     
     *,SEC_U_LATITUDE(U_FIELD)   !IN 1/COS(LAT) AT U POINTS.               DIFCTL1C.94     
     *,SEC_P_LATITUDE(P_FIELD)   !IN 1/COS(LAT) AT P POINTS.               DIFCTL1C.95     
     *,COS_U_LONGITUDE(ROW_LENGTH) !IN COS(LONGITUDE) AT U POINTS.         DIFCTL1C.96     
     *,SIN_U_LONGITUDE(ROW_LENGTH) !IN SIN(LONGITUDE) AT U POINTS.         DIFCTL1C.97     
                                                                           DIFCTL1C.98     
      REAL                                                                 DIFCTL1C.99     
     * DELTA_AK(P_LEVELS)       !IN LAYER THICKNESS                        DIFCTL1C.100    
     *,DELTA_BK(P_LEVELS)       !IN LAYER THICKNESS                        DIFCTL1C.101    
     *,AK(P_LEVELS)             !LAYER AK'S                                DIFCTL1C.102    
     *,BK(P_LEVELS)             !LAYER BK'S                                DIFCTL1C.103    
     *,K1(P_LEVELS)             !IN DIFFUSION COEFF SEE EQ. (45)           DIFCTL1C.104    
     *,K2(P_LEVELS)             !IN DIFFUSION COEFF SEE EQ. (45)           DIFCTL1C.105    
     *,LONGITUDE_STEP_INVERSE   !IN 1/(DELTA LAMDA)                        DIFCTL1C.106    
     *,LATITUDE_STEP_INVERSE    !IN 1/(DELTA PHI)                          DIFCTL1C.107    
     *,ADVECTION_TIMESTEP       !IN                                        DIFCTL1C.108    
     *, PRESSURE_ALTITUDE       ! ALTITUDE FOR HIGHEST SLOPE TEST          DIFCTL1C.109    
                                                                           DIFCTL1C.110    
      LOGICAL                                                              DIFCTL1C.111    
     * L_TRACER_THETAL_QT       ! T if tracer advn. for thetal,qt          DIFCTL1C.112    
C*---------------------------------------------------------------------    DIFCTL1C.113    
                                                                           DIFCTL1C.114    
C*L   DEFINE ARRAYS AND VARIABLES USED IN THIS ROUTINE-----------------    DIFCTL1C.115    
C DEFINE LOCAL ARRAYS: 13 ARE REQUIRED                                     DIFCTL1C.116    
      REAL                                                                 DIFCTL1C.117    
                                                                           DIFCTL1C.118    
     * RECIP_RS_SQUARED_DELTAP(P_FIELD,P_LEVELS)  ! 1./RS*RS*DELTA P       DIFCTL1C.119    
     *,PSTAR_UV(U_FIELD)                 ! HOLDS PRESSURE AT U POINTS.     DIFCTL1C.120    
     *, PRESSURE(P_FIELD,P_LEVELS)    !3-D PRESSURE ARRAY FOR TESTING      DIFCTL1C.121    
     *     ! SLOPE. LEVEL_P=1 IS SURFACE, LEVEL_P=K IS LEVEL K-1           DIFCTL1C.122    
     *     ! FOR UV POINTS PRESSURE RE-CALCULATED TO UV POINTS             DIFCTL1C.123    
     *, DIFFUSION_EW(P_FIELD,P_LEVELS)                                     DIFCTL1C.124    
!HOLDS EFFECTIVE EAST-WEST DIFFUSION                                       DIFCTL1C.125    
     *                                   ! COEFFICIENT                     DIFCTL1C.126    
     *, DIFFUSION_NS(P_FIELD,P_LEVELS)                                     DIFCTL1C.127    
!HOLDS EFFECTIVE NORTH-SOUTH DIFFUSION                                     DIFCTL1C.128    
     *                                   ! COEFFICIENT                     DIFCTL1C.129    
     *,COS_FUNCTION_U(U_FIELD)                                             DIFCTL1C.130    
     *,COS_FUNCTION_P(P_FIELD)                                             DIFCTL1C.131    
                                                                           DIFCTL1C.132    
C*---------------------------------------------------------------------    DIFCTL1C.133    
C DEFINE LOCAL VARIABLES                                                   DIFCTL1C.134    
      INTEGER                                                              DIFCTL1C.135    
     &  START_U_UPDATE   ! First U point to be updated                     DIFCTL1C.136    
     &, END_U_UPDATE     ! Last U point to be updated                      DIFCTL1C.137    
                                                                           DIFCTL1C.138    
      REAL                                                                 DIFCTL1C.139    
     * SCALAR,PRESSURE_TEST                                                DIFCTL1C.140    
C COUNT VARIABLES FOR DO LOOPS ETC.                                        DIFCTL1C.141    
      INTEGER                                                              DIFCTL1C.142    
     *  I,J,K,LEVEL_BASE                                                   DIFCTL1C.143    
                                                                           DIFCTL1C.144    
C*L   EXTERNAL SUBROUTINE CALLS:---------------------------------------    DIFCTL1C.145    
      EXTERNAL                                                             DIFCTL1C.146    
     *  TH_Q_DIF,UV_DIF,P_TO_UV,COEFF_TH_Q,COEFF_UV                        DIFCTL1C.147    
C*---------------------------------------------------------------------    DIFCTL1C.148    
CL    MAXIMUM VECTOR LENGTH ASSUMED IS P_FIELD                             DIFCTL1C.149    
CL---------------------------------------------------------------------    DIFCTL1C.150    
CL    INTERNAL STRUCTURE.                                                  DIFCTL1C.151    
CL---------------------------------------------------------------------    DIFCTL1C.152    
CL                                                                         DIFCTL1C.153    
CL---------------------------------------------------------------------    DIFCTL1C.154    
CL    SECTION 1.     INITIALISE LOCAL VARIABLES AND INTERPOLATE PSTAR      DIFCTL1C.155    
CL                   ONTO U-GRID.                                          DIFCTL1C.156    
CL---------------------------------------------------------------------    DIFCTL1C.157    
                                                                           DIFCTL1C.158    
C****************************************************************          DIFCTL1C.159    
C     SET PRESSURE_TEST TO PRESSURE_ALTITUDE ABOVE WHICH HEIGHT            DIFCTL1C.160    
C     NO SLOPE TESTING FOR EFFECTIVE DIFFUSION                             DIFCTL1C.161    
C***************************************************************           DIFCTL1C.162    
      PRESSURE_TEST=PRESSURE_ALTITUDE                                      DIFCTL1C.163    
                                                                           DIFCTL1C.164    
! Diffusion is a bit different from the other dynamics routines.           DIFCTL1C.165    
! START_U_UPDATE and END_U_UPDATE are different for global and LAM         DIFCTL1C.166    
! models - for the global model they include the polar rows,               DIFCTL1C.167    
! but for the LAM they miss the Northern and Southern rows. So             DIFCTL1C.168    
! for this section of code only, we will keep the START_U_UPDATE           DIFCTL1C.169    
! and END_U_UPDATE, rather than using TYPFLDPT equivalents.                DIFCTL1C.170    
                                                                           DIFCTL1C.171    
*IF DEF,GLOBAL                                                             DIFCTL1C.172    
! Update U field over entire field, including poles                        DIFCTL1C.173    
      START_U_UPDATE=FIRST_FLD_PT                                          DIFCTL1C.174    
      END_U_UPDATE=LAST_U_FLD_PT                                           DIFCTL1C.175    
*ELSE                                                                      DIFCTL1C.176    
! Update U field, missing top and bottom rows                              DIFCTL1C.177    
      START_U_UPDATE=START_POINT_NO_HALO                                   DIFCTL1C.178    
      END_U_UPDATE=END_U_POINT_NO_HALO                                     DIFCTL1C.179    
*ENDIF                                                                     DIFCTL1C.180    
      SCALAR = LATITUDE_STEP_INVERSE*LATITUDE_STEP_INVERSE/                DIFCTL1C.181    
     1           (LONGITUDE_STEP_INVERSE*LONGITUDE_STEP_INVERSE)           DIFCTL1C.182    
      DO I=FIRST_VALID_PT,LAST_U_VALID_PT                                  DIFCTL1C.183    
        COS_FUNCTION_U(I) = COS_U_LATITUDE(I)*COS_U_LATITUDE(I)*SCALAR     DIFCTL1C.184    
        COS_FUNCTION_P(I) = COS_P_LATITUDE(I)*COS_P_LATITUDE(I)*SCALAR     DIFCTL1C.185    
      END DO                                                               DIFCTL1C.186    
                                                                           DIFCTL1C.187    
      DO I=LAST_U_VALID_PT+1,LAST_P_VALID_PT                               DIFCTL1C.188    
        COS_FUNCTION_P(I) = COS_P_LATITUDE(I)*COS_P_LATITUDE(I)*SCALAR     DIFCTL1C.189    
      END DO                                                               DIFCTL1C.190    
                                                                           DIFCTL1C.191    
CL    CALL P_TO_UV                                                         DIFCTL1C.192    
C STORE PSTAR ON U GRID IN PSTAR_UV.                                       DIFCTL1C.193    
                                                                           DIFCTL1C.194    
      CALL P_TO_UV(PSTAR,PSTAR_UV,P_FIELD,U_FIELD,ROW_LENGTH,tot_P_ROWS)   DIFCTL1C.195    
*IF DEF,MPP                                                                DIFCTL1C.196    
! Get correct values in halos                                              DIFCTL1C.197    
      CALL SWAPBOUNDS(PSTAR_UV,ROW_LENGTH,tot_U_ROWS,EW_Halo,NS_Halo,1)    DIFCTL1C.198    
*ENDIF                                                                     DIFCTL1C.199    
                                                                           DIFCTL1C.200    
CL    MAKE 3-D PRESSURE ARRAY AT P POINTS                                  DIFCTL1C.201    
CL    LEVEL_P=1 SURFACE, LEVEL_P=K IS LEVEL K-1                            DIFCTL1C.202    
CL    ONLY NEED P_LEVELS AS SURFACES SHOULD BE PRESSURE SURFACES           DIFCTL1C.203    
CL    NEAR TOP OF MODEL SO TESTING UNNECESSARY                             DIFCTL1C.204    
C****************************************************************          DIFCTL1C.205    
C    IF USING TRACER ADVECTION OF THETAL AND QT THEN DIFFUSION IS          DIFCTL1C.206    
C    CALLED FOR TOP LEVEL THETAL AND FOR ALL U'S AND V'S ONLY              DIFCTL1C.207    
C     NOTE STEEP SLOPE TEST SHOULD BE DISABLED BY APPROPRIATE              DIFCTL1C.208    
C     SETTING OF PRESSURE ALTITUDE WHICH MEANS THAT PRESSURES              DIFCTL1C.209    
C    DO NOT NEED CALCULATING FOR PRESSURE ARRAY                            DIFCTL1C.210    
C***************************************************************           DIFCTL1C.211    
                                                                           DIFCTL1C.212    
      IF(.NOT.L_TRACER_THETAL_QT)THEN                                      DIFCTL1C.213    
                                                                           DIFCTL1C.214    
CL    FIRST LEVEL                                                          DIFCTL1C.215    
      DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                  DIFCTL1C.216    
        RECIP_RS_SQUARED_DELTAP(I,1)=1./RS_SQUARED_DELTAP(I,1)             DIFCTL1C.217    
        PRESSURE(I,1)=PSTAR(I)                                             DIFCTL1C.218    
       END DO                                                              DIFCTL1C.219    
CL OTHER LEVELS                                                            DIFCTL1C.220    
      DO K=2,P_LEVELS                                                      DIFCTL1C.221    
       DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                 DIFCTL1C.222    
        RECIP_RS_SQUARED_DELTAP(I,K)=1./RS_SQUARED_DELTAP(I,K)             DIFCTL1C.223    
        PRESSURE(I,K)=AK(K-1)+BK(K-1)*PSTAR(I)                             DIFCTL1C.224    
       END DO                                                              DIFCTL1C.225    
      END DO                                                               DIFCTL1C.226    
                                                                           DIFCTL1C.227    
C  POINTER FOR DIFFUSION LEVEL START                                       DIFCTL1C.228    
       LEVEL_BASE=1                                                        DIFCTL1C.229    
                                                                           DIFCTL1C.230    
      ELSE                                                                 DIFCTL1C.231    
CLL                                                                        DIFCTL1C.232    
C    IF USING TRACER ADVECTION OF THETAL AND QT THEN DIFFUSION IS          DIFCTL1C.233    
C    CALLED FOR TOP LEVEL THETAL AND FOR ALL U'S AND V'S ONLY              DIFCTL1C.234    
C     LEVEL_BASE IS THEN SET TO P_LEVELS OTHERWISE SET TO 1                DIFCTL1C.235    
C    IF NECESSARY THE TEST COULD BE MADE ON THE VALUE OF THE               DIFCTL1C.236    
C    DIFFUSION COEFFICIENT K1 FOR EACH LEVEL                               DIFCTL1C.237    
C     NOTE STEEP SLOPE TEST SHOULD BE DISABLED BY APPROPRIATE              DIFCTL1C.238    
C     SETTING OF PRESSURE ALTITUDE WHICH MEANS THAT PRESSURES              DIFCTL1C.239    
C    DO NOT NEED CALCULATING FOR PRESSURE ARRAY                            DIFCTL1C.240    
CLL                                                                        DIFCTL1C.241    
       LEVEL_BASE=P_LEVELS                                                 DIFCTL1C.242    
                                                                           DIFCTL1C.243    
      END IF                                                               DIFCTL1C.244    
                                                                           DIFCTL1C.245    
                                                                           DIFCTL1C.246    
CL                                                                         DIFCTL1C.247    
CL---------------------------------------------------------------------    DIFCTL1C.248    
CL    SECTION 2.     CALCULATE DIFFUSION OF THETAL.                        DIFCTL1C.249    
CL                   ADD ON INCREMENT TO ALL POINTS EXCEPT POLES           DIFCTL1C.250    
CL                   WHICH WOULD HAVE BEEN DONE INSIDE TH_Q_DIF.           DIFCTL1C.251    
CL---------------------------------------------------------------------    DIFCTL1C.252    
                                                                           DIFCTL1C.253    
                                                                           DIFCTL1C.254    
C CALL COEFF_TH_Q FOR EFFECTIVE DIFFUSION COEFFICIENT FOR THETAL           DIFCTL1C.255    
C AVERAGING IS DONE AS REQUIRED IN EQUATION(48).                           DIFCTL1C.256    
C COEFFICIENTS ARE SET TO ZERO FOR STEEP SLOPES                            DIFCTL1C.257    
C VALUES ARE IN DIFFUSION_EW AND DIFFUSION_NS                              DIFCTL1C.258    
                                                                           DIFCTL1C.259    
       CALL COEFF_TH_Q                                                     DIFCTL1C.260    
     1                  (DIFFUSION_EW,DIFFUSION_NS,                        DIFCTL1C.261    
     2                   PRESSURE,LEVEL_BASE,PRESSURE_TEST,AK,BK,          DIFCTL1C.262    
     3                   COS_U_LATITUDE,ROW_LENGTH,                        DIFCTL1C.263    
*CALL ARGFLDPT                                                             DIFCTL1C.264    
     5                   LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,     DIFCTL1C.265    
     6                   P_FIELD,U_FIELD,P_LEVELS,                         DIFCTL1C.266    
     7                   K1,DELTA_AK,DELTA_BK,PSTAR_UV,COS_FUNCTION_U)     DIFCTL1C.267    
                                                                           DIFCTL1C.268    
                                                                           DIFCTL1C.269    
CL---------------------------------------------------------------------    DIFCTL1C.270    
CL      CALL TH_Q_DIF                                                      DIFCTL1C.271    
CL                                                                         DIFCTL1C.272    
CL---------------------------------------------------------------------    DIFCTL1C.273    
CL    NEW VERSION INCLUDES PRESSURE TEST ON SLOPES                         DIFCTL1C.274    
                                                                           DIFCTL1C.275    
          CALL TH_Q_DIF(THETAL,RECIP_RS_SQUARED_DELTAP,                    DIFCTL1C.276    
     &                  SEC_P_LATITUDE,ROW_LENGTH,                         DIFCTL1C.277    
*CALL ARGFLDPT                                                             DIFCTL1C.278    
     &                  LEVEL_BASE,P_LEVELS,                               DIFCTL1C.279    
     &                  KEXP_K1,ADVECTION_TIMESTEP,                        DIFCTL1C.280    
     &                  P_FIELD,U_FIELD,                                   DIFCTL1C.281    
     &                  DIFFUSION_EW,DIFFUSION_NS)                         DIFCTL1C.282    
                                                                           DIFCTL1C.283    
                                                                           DIFCTL1C.284    
CL                                                                         DIFCTL1C.285    
CL---------------------------------------------------------------------    DIFCTL1C.286    
CL    SECTION 4.     CALCULATE DIFFUSION OF QT AND                         DIFCTL1C.287    
CL                   ADD ON INCREMENT TO ALL POINTS EXCEPT POLES           DIFCTL1C.288    
CL                   WHICH WOULD HAVE BEEN DONE INSIDE TH_Q_DIF.           DIFCTL1C.289    
CL---------------------------------------------------------------------    DIFCTL1C.290    
                                                                           DIFCTL1C.291    
      IF(.NOT.L_TRACER_THETAL_QT)THEN                                      DIFCTL1C.292    
                                                                           DIFCTL1C.293    
C CALL COEFF_TH_Q FOR EFFECTIVE DIFFUSION COEFFICIENT FOR QT               DIFCTL1C.294    
C AVERAGING IS DONE AS REQUIRED IN EQUATION(48).                           DIFCTL1C.295    
C COEFFICIENTS ARE SET TO ZERO FOR STEEP SLOPES                            DIFCTL1C.296    
C VALUES ARE IN DIFFUSION_EW AND DIFFUSION_NS                              DIFCTL1C.297    
       CALL COEFF_TH_Q                                                     DIFCTL1C.298    
     1                  (DIFFUSION_EW,DIFFUSION_NS,                        DIFCTL1C.299    
     2                   PRESSURE,1,PRESSURE_TEST,AK,BK,                   DIFCTL1C.300    
     3                   COS_U_LATITUDE,ROW_LENGTH,                        DIFCTL1C.301    
*CALL ARGFLDPT                                                             DIFCTL1C.302    
     5                   LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,     DIFCTL1C.303    
     6                   P_FIELD,U_FIELD,Q_LEVELS,                         DIFCTL1C.304    
     7                   K2,DELTA_AK,DELTA_BK,PSTAR_UV,COS_FUNCTION_U)     DIFCTL1C.305    
                                                                           DIFCTL1C.306    
CL---------------------------------------------------------------------    DIFCTL1C.307    
CL      CALL TH_Q_DIF AT A MOIST LEVEL.                                    DIFCTL1C.308    
CL                                                                         DIFCTL1C.309    
CL---------------------------------------------------------------------    DIFCTL1C.310    
CL    NEW VERSION INCLUDES PRESSURE TEST ON SLOPES                         DIFCTL1C.311    
                                                                           DIFCTL1C.312    
            CALL TH_Q_DIF(QT,RECIP_RS_SQUARED_DELTAP,                      DIFCTL1C.313    
     &                    SEC_P_LATITUDE,ROW_LENGTH,                       DIFCTL1C.314    
*CALL ARGFLDPT                                                             DIFCTL1C.315    
     &                    1,Q_LEVELS,                                      DIFCTL1C.316    
     &                    KEXP_K2,ADVECTION_TIMESTEP,                      DIFCTL1C.317    
     &                    P_FIELD,U_FIELD,                                 DIFCTL1C.318    
     &                    DIFFUSION_EW,DIFFUSION_NS)                       DIFCTL1C.319    
C                                                                          DIFCTL1C.320    
CL END IF TEST FOR NO DIFFUSION WITH TRACER ADVECTION                      DIFCTL1C.321    
      END IF                                                               DIFCTL1C.322    
                                                                           DIFCTL1C.323    
CL   MAKE 3-D PRESSURE ARRAY AT UV POINTS                                  DIFCTL1C.324    
CL   LEVEL_P=1 SURFACE, LEVEL_P=K IS LEVEL K-1                             DIFCTL1C.325    
CL    ONLY NEED P_LEVELS AS SURFACES SHOULD BE PRESSURE SURFACES           DIFCTL1C.326    
CL    NEAR TOP OF MODEL SO TESTING UNNECESSARY                             DIFCTL1C.327    
CL   FIRST LEVEL                                                           DIFCTL1C.328    
      DO I=FIRST_VALID_PT,LAST_U_VALID_PT                                  DIFCTL1C.329    
        PRESSURE(I,1)=PSTAR_UV(I)                                          DIFCTL1C.330    
       END DO                                                              DIFCTL1C.331    
CL OTHER LEVELS                                                            DIFCTL1C.332    
      DO K=2,P_LEVELS                                                      DIFCTL1C.333    
       DO I=FIRST_VALID_PT,LAST_U_VALID_PT                                 DIFCTL1C.334    
        PRESSURE(I,K)=AK(K-1)+BK(K-1)*PSTAR_UV(I)                          DIFCTL1C.335    
       END DO                                                              DIFCTL1C.336    
      END DO                                                               DIFCTL1C.337    
                                                                           DIFCTL1C.338    
                                                                           DIFCTL1C.339    
CL                                                                         DIFCTL1C.340    
CL---------------------------------------------------------------------    DIFCTL1C.341    
CL    SECTION 5.     SET DIFFUSION_COEFFICIENTS ON P GRID.                 DIFCTL1C.342    
CL                   THEN CALCULATE DIFFUSION OF U AND V.                  DIFCTL1C.343    
CL---------------------------------------------------------------------    DIFCTL1C.344    
                                                                           DIFCTL1C.345    
C CALL COEFF_UV FOR EFFECTIVE DIFFUSION COEFFICIENT FOR U AND V            DIFCTL1C.346    
C AVERAGING IS DONE AS REQUIRED IN EQUATION(48).                           DIFCTL1C.347    
C COEFFICIENTS ARE SET TO ZERO FOR STEEP SLOPES                            DIFCTL1C.348    
C VALUES ARE RETURNED IN DIFFUSION_EW AND DIFFUSION_NS                     DIFCTL1C.349    
      CALL COEFF_UV                                                        DIFCTL1C.350    
     1                 (DIFFUSION_EW,DIFFUSION_NS,                         DIFCTL1C.351    
     2                 PRESSURE,PRESSURE_TEST,AK,BK,                       DIFCTL1C.352    
     3                 COS_P_LATITUDE,START_U_UPDATE,END_U_UPDATE,         DIFCTL1C.353    
     &                 ROW_LENGTH,                                         DIFCTL1C.354    
*CALL ARGFLDPT                                                             DIFCTL1C.355    
     4                 LATITUDE_STEP_INVERSE,                              DIFCTL1C.356    
     5                 LONGITUDE_STEP_INVERSE,P_FIELD,U_FIELD,P_LEVELS,    DIFCTL1C.357    
     6                 K1,DELTA_AK,DELTA_BK,PSTAR,COS_FUNCTION_P)          DIFCTL1C.358    
                                                                           DIFCTL1C.359    
                                                                           DIFCTL1C.360    
CL    CALL UV_DIF FOR U &V                                                 DIFCTL1C.361    
                                                                           DIFCTL1C.362    
        CALL UV_DIF(U,V,RS_SQUARED_DELTAP,                                 DIFCTL1C.363    
     *              SEC_U_LATITUDE,START_U_UPDATE,END_U_UPDATE,            DIFCTL1C.364    
     &              ROW_LENGTH,                                            DIFCTL1C.365    
*CALL ARGFLDPT                                                             DIFCTL1C.366    
     &              P_LEVELS,KEXP_K1,ADVECTION_TIMESTEP,                   DIFCTL1C.367    
     *              P_FIELD,U_FIELD,                                       DIFCTL1C.368    
     *              DIFFUSION_EW,DIFFUSION_NS)                             DIFCTL1C.369    
                                                                           DIFCTL1C.370    
CL    END OF ROUTINE DIF_CTL                                               DIFCTL1C.371    
                                                                           DIFCTL1C.372    
      RETURN                                                               DIFCTL1C.373    
      END                                                                  DIFCTL1C.374    
*ENDIF                                                                     DIFCTL1C.375