*IF DEF,A12_1B                                                             ARB2F400.7      
C ******************************COPYRIGHT******************************    GTS2F400.7903   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.7904   
C                                                                          GTS2F400.7905   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.7906   
C restrictions as set forth in the contract.                               GTS2F400.7907   
C                                                                          GTS2F400.7908   
C                Meteorological Office                                     GTS2F400.7909   
C                London Road                                               GTS2F400.7910   
C                BRACKNELL                                                 GTS2F400.7911   
C                Berkshire UK                                              GTS2F400.7912   
C                RG12 2SZ                                                  GTS2F400.7913   
C                                                                          GTS2F400.7914   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.7915   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.7916   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.7917   
C Modelling at the above address.                                          GTS2F400.7918   
C ******************************COPYRIGHT******************************    GTS2F400.7919   
C                                                                          GTS2F400.7920   
CLL   SUBROUTINE QT_ADV -------------------------------------------        QTADV1A.3      
CLL                                                                        QTADV1A.4      
CLL   PURPOSE:  CALCULATES MASS-WEIGHTED INCREMENTS TO QT                  QTADV1A.5      
CLL             DUE TO ADVECTION  BY USING EQUATION (36)                   QTADV1A.6      
CLL             TO CALCULATE PROVISIONAL VALUES OF QT AT                   QTADV1A.7      
CLL             THE NEW TIME-LEVEL, AND THEN RECALCULATING THE             QTADV1A.8      
CLL             ADVECTION TERMS ON THE RIGHT-HAND SIDE OF  (36)            QTADV1A.9      
CLL             USING THESE PROVISIONAL VALUES. THE FINAL INCREMENTS ARE   QTADV1A.10     
CLL             CALCULATED AS IN EQUATION (40). THOSE REQUIRING            QTADV1A.11     
CLL             FILTERING ARE FILTERED, THE INCREMENTS                     QTADV1A.12     
CLL             ARE ADDED ONTO THE FIELDS USING (40).                      QTADV1A.13     
CLL             IF RUNNING A GLOBAL MODEL POLAR IS CALLED                  QTADV1A.14     
CLL             TO UPDATE POLAR VALUES.                                    QTADV1A.15     
CLL   NOT SUITABLE FOR SINGLE COLUMN USE.                                  QTADV1A.16     
CLL   VERSION FOR CRAY Y-MP                                                QTADV1A.17     
CLL                                                                        QTADV1A.18     
CLL   WRITTEN BY M.H MAWSON.                                               QTADV1A.19     
CLL                                                                        QTADV1A.20     
CLL  MODEL            MODIFICATION HISTORY FROM MODEL VERSION 3.0:         QTADV1A.21     
CLL VERSION  DATE                                                          QTADV1A.22     
CLL                                                                        QTADV1A.23     
CLL   3.4    06/08/94 Code restructured to improve parallel efficiency     AAD2F304.126    
CLL                   on C90.                                              AAD2F304.127    
CLL                   Authors: A. Dickinson, D. Salmond                    AAD2F304.128    
CLL                   Reviewer: M. Mawson                                  AAD2F304.129    
CLL                                                                        AAD2F304.130    
CLL   3.4   22/06/94  Argument LWHITBROM added and passed to ADV_P_GD      GSS1F304.886    
CLL                                                  S.J.Swarbrick         GSS1F304.887    
!     3.5    28/03/95 MPP code: Change updateable area and                 APB0F305.764    
!                     add boundary swaps.  P.Burton                        APB0F305.765    
CLL                                                                        GSS1F304.888    
CLL   4.0   14/02/95  Option to run with half_timestep at top level        ATD1F400.955    
CLL                   removed.  Author: T Davies,  Reviewer: M Mawson      ATD1F400.956    
!     4.1    29/04/96 Remove MPP code (new QTADV1C version for MPP)        APB0F401.1103   
!                     and add TYPFLDPT arguments       P.Burton            APB0F401.1104   
!LL   4.2    16/08/96  Add TYPFLDPT arguments to FILTER subroutine         APB0F402.15     
!LL                    and make the FILTER_WAVE_NUMBER arrays              APB0F402.16     
!LL                    globally sized                    P.Burton          APB0F402.17     
!LL   4.2    30/10/96  Move declaration of TYPFLDPT variables to top of    APB1F402.46     
!LL                    declarations.  P.Burton                             APB1F402.47     
!LL 4.3      24/04/97 Fix to 4th order calculations -                      GPB5F403.3      
!LL                   Calculation of NUY via ISMIN   P.Burton              GPB5F403.4      
!LL  4.5  05/05/98  Recode -DEF,CRAY loops to find minimum of NUX/NUY      GRB0F405.104    
!LL                 to vectorize on Fujitsu VPP700. RBarnes@ecmwf.int      GRB0F405.105    
!LL  4.5  22/06/98  Fujitsu vectorization directives. R.Barnes.            GRB0F405.106    
!LL                                                                        GRB0F405.107    
CLL   PROGRAMMING STANDARD: UNIFIED MODEL DOCUMENTATION PAPER NO. 4,       QTADV1A.24     
CLL                         STANDARD B.                                    QTADV1A.25     
CLL                                                                        QTADV1A.26     
CLL   SYSTEM COMPONENTS COVERED: P121                                      QTADV1A.27     
CLL                                                                        QTADV1A.28     
CLL   SYSTEM TASK: P1                                                      QTADV1A.29     
CLL                                                                        QTADV1A.30     
CLL   DOCUMENTATION:       THE EQUATIONS USED ARE (36) AND (40)            QTADV1A.31     
CLL                        IN UNIFIED MODEL DOCUMENTATION PAPER NO. 10     QTADV1A.32     
CLL                        M.J.P. CULLEN,T.DAVIES AND M.H.MAWSON           QTADV1A.33     
CLLEND-------------------------------------------------------------        QTADV1A.34     
                                                                           QTADV1A.35     
C*L   ARGUMENTS:---------------------------------------------------        QTADV1A.36     

      SUBROUTINE QT_ADV                                                     1,33QTADV1A.37     
     1              (QT,PSTAR_OLD,PSTAR,U_MEAN,V_MEAN,                     QTADV1A.38     
     2              SEC_P_LATITUDE,ETADOT_MEAN,RS,DELTA_AK,DELTA_BK,       QTADV1A.39     
     3              LATITUDE_STEP_INVERSE,ADVECTION_TIMESTEP,NU_BASIC,     QTADV1A.40     
     4              LONGITUDE_STEP_INVERSE,NORTHERN_FILTERED_P_ROW,        QTADV1A.41     
     5              SOUTHERN_FILTERED_P_ROW,Q_LEVELS,P_LEVELS,             QTADV1A.42     
     6              U_FIELD,P_FIELD,ROW_LENGTH,                            APB0F401.1105   
*CALL ARGFLDPT                                                             APB0F401.1106   
     6              TRIGS,                                                 APB0F401.1107   
     7              IFAX,FILTER_WAVE_NUMBER_P_ROWS,SEC_U_LATITUDE,         QTADV1A.44     
     8              AKH,BKH,L_SECOND,LWHITBROM)                            ATD1F400.957    
                                                                           QTADV1A.46     
      IMPLICIT NONE                                                        QTADV1A.47     
                                                                           QTADV1A.48     
! All TYPFLDPT arguments are intent IN                                     APB1F402.48     
*CALL TYPFLDPT                                                             APB1F402.49     
      INTEGER                                                              QTADV1A.49     
     *  P_FIELD            !IN DIMENSION OF FIELDS ON PRESSSURE GRID.      QTADV1A.50     
     *, U_FIELD            !IN DIMENSION OF FIELDS ON VELOCITY GRID        QTADV1A.51     
     *, P_LEVELS           !IN NUMBER OF PRESSURE LEVELS.                  QTADV1A.53     
     *, Q_LEVELS           !IN NUMBER OF MOIST LEVELS.                     QTADV1A.54     
     *, ROW_LENGTH         !IN NUMBER OF POINTS PER ROW                    QTADV1A.56     
     *, NORTHERN_FILTERED_P_ROW !IN ROW ON WHICH FILTERING STOPS           QTADV1A.57     
     *                          ! MOVING TOWARDS EQUATOR                   QTADV1A.58     
     *, SOUTHERN_FILTERED_P_ROW !IN ROW ON WHICH FILTERING STARTS AGAIN    QTADV1A.59     
     *                          ! MOVING TOWARDS SOUTH POLE                QTADV1A.60     
     &, FILTER_WAVE_NUMBER_P_ROWS(GLOBAL_P_FIELD/GLOBAL_ROW_LENGTH)        APB0F402.18     
     &       ! LAST WAVE NUMBER NOT TO BE CHOPPED                          APB0F402.19     
     *, IFAX(10)           !IN HOLDS FACTORS OF ROW_LENGTH USED BY         QTADV1A.63     
     *                     ! FILTERING.                                    QTADV1A.64     
                                                                           APB0F401.1108   
                                                                           QTADV1A.65     
C LOGICAL VARIABLE                                                         QTADV1A.66     
      LOGICAL                                                              QTADV1A.67     
     *  L_SECOND     ! SET TO TRUE IF NU_BASIC IS ZERO.                    QTADV1A.68     
     & ,LWHITBROM    ! LOGICAL SWITCH FOR WHITE & BROMLEY                  GSS1F304.890    
                                                                           QTADV1A.71     
      REAL                                                                 QTADV1A.72     
     * U_MEAN(U_FIELD,P_LEVELS) !IN AVERAGED MASS-WEIGHTED U VELOCITY      QTADV1A.73     
     *                          !   FROM ADJUSTMENT STEP                   QTADV1A.74     
     *,V_MEAN(U_FIELD,P_LEVELS) !IN AVERAGED MASS-WEIGHTED V VELOCITY      QTADV1A.75     
     *                          !   * COS(LAT) FROM ADJUSTMENT STEP        QTADV1A.76     
     *,ETADOT_MEAN(P_FIELD,P_LEVELS)  !IN AVERAGED MASS-WEIGHTED           QTADV1A.77     
     *                          !VERTICAL VELOCITY FROM ADJUSTMENT STEP    QTADV1A.78     
     *,PSTAR(P_FIELD)           !IN PSTAR FIELD AT NEW TIME-LEVEL          QTADV1A.79     
     *,PSTAR_OLD(P_FIELD)       !IN PSTAR AT PREVIOUS TIME-LEVEL           QTADV1A.80     
     *,RS(P_FIELD,P_LEVELS)     !IN RS FIELD                               QTADV1A.81     
                                                                           QTADV1A.82     
      REAL                                                                 QTADV1A.83     
     * DELTA_AK(P_LEVELS)      !IN    LAYER THICKNESS                      QTADV1A.84     
     *,DELTA_BK(P_LEVELS)      !IN    LAYER THICKNESS                      QTADV1A.85     
     *,AKH(P_LEVELS+1)         !IN HYBRID CO-ORDINATE AT HALF LEVELS       QTADV1A.86     
     *,BKH(P_LEVELS+1)         !IN HYBRID CO-ORDINATE AT HALF LEVELS       QTADV1A.87     
     *,SEC_P_LATITUDE(P_FIELD) !IN  1/COS(LAT) AT P POINTS (2-D ARRAY)     QTADV1A.88     
     *,SEC_U_LATITUDE(U_FIELD) !IN  1/COS(LAT) AT U POINTS (2-D ARRAY)     QTADV1A.89     
     *,LONGITUDE_STEP_INVERSE  !IN 1/(DELTA LAMDA)                         QTADV1A.90     
     *,LATITUDE_STEP_INVERSE   !IN 1/(DELTA PHI)                           QTADV1A.91     
     *,ADVECTION_TIMESTEP      !IN                                         QTADV1A.92     
     *,NU_BASIC                !IN STANDARD NU TERM FOR MODEL RUN.         QTADV1A.93     
     *,TRIGS(ROW_LENGTH)       !IN HOLDS TRIGONOMETRIC FUNCTIONS USED      QTADV1A.94     
     *                         ! IN FILTERING.                             QTADV1A.95     
                                                                           QTADV1A.96     
      REAL                                                                 QTADV1A.97     
     * QT(P_FIELD,Q_LEVELS)    !INOUT QT FIELD.                            QTADV1A.98     
     *                         ! MASS-WEIGHTED ON OUTPUT.                  QTADV1A.99     
                                                                           QTADV1A.100    
C*---------------------------------------------------------------------    QTADV1A.101    
                                                                           QTADV1A.102    
C*L   DEFINE ARRAYS AND VARIABLES USED IN THIS ROUTINE-----------------    QTADV1A.103    
C DEFINE LOCAL ARRAYS: 23 ARE REQUIRED                                     QTADV1A.104    
                                                                           QTADV1A.105    
      REAL                                                                 QTADV1A.106    
     * QT_FIRST_INC(P_FIELD,Q_LEVELS) ! HOLDS QT INCREMENT                 AAD2F304.131    
     *                       ! RETURNED BY FIRST CALL TO ADV_P_GD          QTADV1A.108    
     *,QT_SECOND_INC(P_FIELD)! HOLDS QT INCREMENT                          QTADV1A.109    
     *                       !RETURNED BY SECOND CALL TO ADV_P_GD          QTADV1A.110    
     *,QT_PROV(P_FIELD,Q_LEVELS)      ! HOLDS PROVISIONAL VALUE OF QT      AAD2F304.132    
                                                                           QTADV1A.123    
                                                                           QTADV1A.124    
      REAL                                                                 QTADV1A.125    
     * NUX(P_FIELD,Q_LEVELS)     ! COURANT NUMBER DEPENDENT NU AT P PTS    AAD2F304.133    
     *                   ! IN EAST-WEST ADVECTION.                         QTADV1A.127    
     *,NUY(P_FIELD,Q_LEVELS)     ! COURANT NUMBER DEPENDENT NU AT P PTS    AAD2F304.134    
     *                   ! IN NORTH-SOUTH ADVECTION.                       QTADV1A.129    
                                                                           QTADV1A.134    
      REAL                                                                 QTADV1A.135    
     & ZERO(P_FIELD)              ! ARRAY OF ZEROES.                       QTADV1A.136    
     *,QT_INCREMENT(P_FIELD,Q_LEVELS)                                      QTADV1A.137    
                                                                           QTADV1A.138    
      REAL                                                                 QTADV1A.139    
     * BRSP(P_FIELD,Q_LEVELS) !MASS TERM AT LEVEL K                        AAD2F304.135    
C*---------------------------------------------------------------------    QTADV1A.144    
C DEFINE LOCAL VARIABLES                                                   QTADV1A.145    
      INTEGER                                                              QTADV1A.146    
     *  P_POINTS_UPDATE    ! NUMBER OF P POINTS TO BE UPDATED.             QTADV1A.147    
     *                     !  = ROWS*ROWLENGTH                             QTADV1A.148    
     *, U_POINTS_UPDATE    ! NUMBER OF U POINTS TO BE UPDATED.             QTADV1A.149    
     *                     !  = (ROWS-1)*ROWLENGTH                         QTADV1A.150    
     *, P_POINTS_REQUIRED  ! NUMBER OF P POINTS AT WHICH VALUES ARE        QTADV1A.155    
     *                     ! NEEDED TO UPDATE AT P_POINTS_UPDATE           QTADV1A.156    
     *, U_POINTS_REQUIRED  ! NUMBER OF U POINTS AT WHICH VALUES ARE        QTADV1A.157    
     *                     ! NEEDED TO UPDATE AT U_POINTS_UPDATE           QTADV1A.158    
     *, START_U_REQUIRED   ! FIRST U POINT OF VALUES REQUIRED TO UPDATE    QTADV1A.159    
     *                     ! AT P POINTS UPDATE.                           QTADV1A.160    
     *, END_U_REQUIRED     ! LAST U POINT OF REQUIRED VALUES.              QTADV1A.161    
                                                                           QTADV1A.162    
C REAL SCALARS                                                             QTADV1A.163    
      REAL                                                                 QTADV1A.164    
     & SCALAR1,SCALAR2,TIMESTEP                                            QTADV1A.165    
                                                                           QTADV1A.166    
C COUNT VARIABLES FOR DO LOOPS ETC.                                        QTADV1A.167    
      INTEGER                                                              QTADV1A.168    
     &  I,I1,J,K1,IK,K                                                     ATD1F400.958    
     *, FILTER_SPACE ! HORIZONTAL DIMENSION OF SPACE NEEDED IN FILTERING   QTADV1A.170    
     *               ! ROUTINE.                                            QTADV1A.171    
                                                                           QTADV1A.172    
                                                                           QTADV1A.173    
C*L   EXTERNAL SUBROUTINE CALLS:---------------------------------------    QTADV1A.174    
      EXTERNAL ADV_P_GD,POLAR,UV_TO_P,FILTER                               QTADV1A.175    
*IF DEF,CRAY                                                               QTADV1A.176    
      INTEGER ISMIN                                                        QTADV1A.177    
      EXTERNAL ISMIN                                                       QTADV1A.178    
*ENDIF                                                                     QTADV1A.179    
C*---------------------------------------------------------------------    QTADV1A.180    
                                                                           QTADV1A.181    
CL    MAXIMUM VECTOR LENGTH ASSUMED IS P_FIELD.                            QTADV1A.182    
CL---------------------------------------------------------------------    QTADV1A.183    
CL    INTERNAL STRUCTURE INCLUDING SUBROUTINE CALLS:                       QTADV1A.184    
CL---------------------------------------------------------------------    QTADV1A.185    
CL                                                                         QTADV1A.186    
CL---------------------------------------------------------------------    QTADV1A.187    
CL    SECTION 1.     INITIALISATION                                        QTADV1A.188    
CL---------------------------------------------------------------------    QTADV1A.189    
C INCLUDE LOCAL CONSTANTS FROM GENERAL CONSTANTS BLOCK                     QTADV1A.190    
                                                                           QTADV1A.191    
      P_POINTS_UPDATE   = upd_P_ROWS*ROW_LENGTH                            APB0F401.1111   
      U_POINTS_UPDATE   = upd_U_ROWS*ROW_LENGTH                            APB0F401.1112   
      P_POINTS_REQUIRED = (upd_P_ROWS+2)*ROW_LENGTH                        APB0F401.1113   
      U_POINTS_REQUIRED = (upd_U_ROWS+2)*ROW_LENGTH                        APB0F401.1114   
      START_U_REQUIRED  = START_POINT_NO_HALO-ROW_LENGTH                   APB0F401.1115   
      END_U_REQUIRED    = END_U_POINT_NO_HALO+ROW_LENGTH                   APB0F401.1116   
                                                                           AAD2F304.136    
C *IF -DEF,NOWHBR replaced by LWHITBROM logical                            AAD2F304.137    
      IF (LWHITBROM) THEN                                                  AAD2F304.138    
CL    CALCULATE BRSP TERM AT LEVEL K                                       AAD2F304.139    
                                                                           AAD2F304.140    
      K=1                                                                  AAD2F304.141    
! Loop over entire field                                                   APB0F401.1117   
      DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                  APB0F401.1118   
        BRSP(I,K)=(3.*RS(I,K)+RS(I,K+1))*(RS(I,K)-RS(I,K+1))               AAD2F304.143    
     *                *BKH(K+1)*.25*(PSTAR(I)-PSTAR_OLD(I))                AAD2F304.144    
      ENDDO                                                                AAD2F304.145    
      K=Q_LEVELS                                                           AAD2F304.146    
! Loop over entire field                                                   APB0F401.1119   
      DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                  APB0F401.1120   
        BRSP(I,K)=-(3.*RS(I,K)+RS(I,K-1))*(RS(I,K)-RS(I,K-1))              AAD2F304.148    
     *                *BKH(K)*.25*(PSTAR(I)-PSTAR_OLD(I))                  AAD2F304.149    
      ENDDO                                                                AAD2F304.150    
                                                                           AAD2F304.151    
      DO K=2,Q_LEVELS -1                                                   AAD2F304.152    
! Loop over entire field                                                   APB0F401.1121   
        DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                APB0F401.1122   
          BRSP(I,K)=((3.*RS(I,K)+RS(I,K+1))*(RS(I,K)-RS(I,K+1))*BKH(K+1)   AAD2F304.154    
     *              *.25*(PSTAR(I)-PSTAR_OLD(I)))                          AAD2F304.155    
     *              -((3.*RS(I,K)+RS(I,K-1))*(RS(I,K)-RS(I,K-1))*BKH(K)    AAD2F304.156    
     *              *.25*(PSTAR(I)-PSTAR_OLD(I)))                          AAD2F304.157    
        ENDDO                                                              AAD2F304.158    
                                                                           AAD2F304.159    
      ENDDO                                                                AAD2F304.160    
      END IF                                                               AAD2F304.161    
C *ENDIF                                                                   AAD2F304.162    
                                                                           AAD2F304.163    
! Loop over entire field                                                   APB0F401.1123   
      DO I=FIRST_VALID_PT,LAST_P_VALID_PT                                  APB0F401.1124   
        ZERO(I) = 0.                                                       QTADV1A.218    
      END DO                                                               ATD1F400.960    
                                                                           QTADV1A.220    
CL LOOP OVER Q_LEVELS+1.                                                   QTADV1A.221    
CL    ON 1 TO Q_LEVELS PROVISIONAL VALUES OF THE FIELD ARE CALCULATED.     QTADV1A.222    
CL    ON 2 TO Q_LEVELS+1 THE FINAL INCREMENTS ARE CALCULATED AND ADDED     QTADV1A.223    
CL    ON. THE REASON FOR THIS LOGIC IS THAT THE PROVISIONAL VALUE AT       QTADV1A.224    
CL    LEVEL K+1 IS NEEDED BEFORE THE FINAL INCREMENT AT LEVEL K CAN BE     QTADV1A.225    
CL    CALCULATED.                                                          QTADV1A.226    
                                                                           QTADV1A.227    
      DO K=1,Q_LEVELS+1                                                    ATD1F400.961    
                                                                           QTADV1A.230    
        TIMESTEP = ADVECTION_TIMESTEP                                      QTADV1A.231    
                                                                           QTADV1A.250    
CL IF NOT AT Q_LEVELS+1 THEN                                               QTADV1A.251    
        IF(K.LE.Q_LEVELS) THEN                                             QTADV1A.252    
                                                                           QTADV1A.253    
CL---------------------------------------------------------------------    QTADV1A.254    
CL    SECTION 2.     CALCULATE COURANT NUMBER DEPENDENT NU IF IN           QTADV1A.255    
CL                   FORECAST MODE. CALCULATE PROVISIONAL VALUES OF        QTADV1A.256    
CL                   QT AT NEW TIME-LEVEL.                                 QTADV1A.257    
CL---------------------------------------------------------------------    QTADV1A.258    
                                                                           QTADV1A.259    
C ---------------------------------------------------------------------    QTADV1A.260    
CL    SECTION 2.1    SET NU TO NU_BASIC DEPENDENT ON MAX COURANT           QTADV1A.261    
CL                   NUMBER.                                               QTADV1A.262    
C ---------------------------------------------------------------------    QTADV1A.263    
CL    IF NU_BASIC NOT SET TO ZERO                                          QTADV1A.264    
          IF(.NOT.L_SECOND) THEN                                           QTADV1A.265    
CL    THEN SET NU DEPENDING ON NU_BASIC AND MAX                            QTADV1A.266    
CL    COURANT NUMBER.                                                      QTADV1A.267    
CL    CALCULATE COURANT NUMBER                                             QTADV1A.268    
C NOTE: RS AND TRIG TERMS WILL BE INCLUDED AFTER INTERPOLATION TO P        QTADV1A.269    
C       GRID.                                                              QTADV1A.270    
CL    CALL UV_TO_P TO MOVE MEAN VELOCITIES ONTO P GRID                     QTADV1A.271    
                                                                           QTADV1A.272    
          CALL UV_TO_P(U_MEAN(START_U_REQUIRED,K),                         QTADV1A.273    
     *                 NUX(START_POINT_NO_HALO,K),U_POINTS_REQUIRED,       APB0F401.1125   
     *                 P_POINTS_UPDATE,ROW_LENGTH,upd_P_ROWS+1)            APB0F401.1126   
                                                                           QTADV1A.276    
          CALL UV_TO_P(V_MEAN(START_U_REQUIRED,K),                         QTADV1A.277    
     *                 NUY(START_POINT_NO_HALO,K),U_POINTS_REQUIRED,       APB0F401.1127   
     *                 P_POINTS_UPDATE,ROW_LENGTH,upd_P_ROWS+1)            APB0F401.1128   
                                                                           QTADV1A.280    
CL    CALCULATE NU FROM COURANT NUMBER INCLUDING TRIG AND RS TERMS.        QTADV1A.281    
! Loop over field missing top and bottom rows                              APB0F401.1129   
          DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO                     APB0F401.1130   
            NUX(I,K) = NUX(I,K)*LONGITUDE_STEP_INVERSE                     AAD2F304.190    
            NUY(I,K) = NUY(I,K)*LATITUDE_STEP_INVERSE                      AAD2F304.191    
            SCALAR1 = TIMESTEP/(RS(I,K)*                                   QTADV1A.285    
     *                RS(I,K)*(DELTA_AK(K)+DELTA_BK(K)*PSTAR_OLD(I)))      QTADV1A.286    
            SCALAR2 = SEC_P_LATITUDE(I)*SCALAR1                            QTADV1A.287    
            SCALAR1 = SCALAR1*SCALAR1                                      QTADV1A.288    
            SCALAR2 = SCALAR2*SCALAR2                                      QTADV1A.289    
            NUX(I,K) = (1. - NUX(I,K)*NUX(I,K)*SCALAR2)*NU_BASIC           AAD2F304.192    
            NUY(I,K) = (1. - NUY(I,K)*NUY(I,K)*SCALAR1)*NU_BASIC           AAD2F304.193    
          END DO                                                           ATD1F400.963    
                                                                           QTADV1A.293    
C     SET NUX EQUAL TO MINIMUM VALUE ALONG EACH ROW                        QTADV1A.294    
          DO J=1,upd_P_ROWS                                                APB0F401.1131   
          I1 = START_POINT_NO_HALO+(J-1)*ROW_LENGTH                        APB0F401.1132   
*IF DEF,CRAY                                                               QTADV1A.301    
          IK=ISMIN(ROW_LENGTH,NUX(I1,K),1)                                 AAD2F304.194    
          SCALAR1 = NUX(IK+I1-1,K)                                         AAD2F304.195    
*ELSE                                                                      QTADV1A.304    
          SCALAR1 = NUX(I1,K)                                              GRB0F405.108    
          DO I=I1+1,I1+ROW_LENGTH-1                                        GRB0F405.109    
            IF(NUX(I,K).LT.SCALAR1) THEN                                   GRB0F405.110    
              SCALAR1 = NUX(I,K)                                           GRB0F405.111    
            END IF                                                         GRB0F405.112    
          END DO                                                           GRB0F405.113    
*ENDIF                                                                     QTADV1A.310    
          IF(SCALAR1.LT.0.) SCALAR1=0.                                     QTADV1A.311    
          DO I=I1,I1+ROW_LENGTH-1                                          ATD1F400.966    
            NUX(I,K) = SCALAR1                                             AAD2F304.198    
          END DO                                                           ATD1F400.967    
          END DO                                                           QTADV1A.315    
                                                                           QTADV1A.316    
C     SET NUY EQUAL TO MINIMUM VALUE ALONG EACH COLUMN                     QTADV1A.317    
          DO J=1,ROW_LENGTH                                                QTADV1A.322    
          I1 = START_POINT_NO_HALO+J-1                                     APB0F401.1133   
*IF DEF,CRAY                                                               QTADV1A.324    
          IK=ISMIN(upd_P_ROWS,NUY(I1,K),ROW_LENGTH)                        APB0F401.1134   
          SCALAR1 = NUY((IK-1)*ROW_LENGTH+I1,K)                            GPB5F403.5      
*ELSE                                                                      QTADV1A.327    
          SCALAR1 = NUY(I1,K)                                              GRB0F405.114    
          DO I=I1+ROW_LENGTH,END_P_POINT_NO_HALO,ROW_LENGTH                GRB0F405.115    
            IF(NUY(I,K).LT.SCALAR1) THEN                                   GRB0F405.116    
              SCALAR1 = NUY(I,K)                                           GRB0F405.117    
            END IF                                                         GRB0F405.118    
          END DO                                                           GRB0F405.119    
*ENDIF                                                                     QTADV1A.333    
          IF(SCALAR1.LT.0.) SCALAR1=0.                                     QTADV1A.334    
            DO I=I1,END_P_POINT_NO_HALO,ROW_LENGTH                         APB0F401.1136   
              NUY(I,K) = SCALAR1                                           AAD2F304.203    
            END DO                                                         QTADV1A.337    
          END DO                                                           QTADV1A.338    
          END IF                                                           QTADV1A.339    
                                                                           QTADV1A.340    
CL                                                                         QTADV1A.371    
C ---------------------------------------------------------------------    QTADV1A.372    
CL    SECTION 2.3    CALL ADV_P_GD TO OBTAIN FIRST INCREMENT DUE TO        QTADV1A.373    
CL                   ADVECTION.                                            QTADV1A.374    
C ---------------------------------------------------------------------    QTADV1A.375    
                                                                           QTADV1A.376    
CL    CALL ADV_P_GD FOR QT.                                                QTADV1A.377    
          K1=K+1                                                           QTADV1A.378    
                                                                           QTADV1A.379    
          IF(K.EQ.Q_LEVELS) THEN                                           AAD2F304.204    
          K1=K-1                                                           AAD2F304.205    
          CALL ADV_P_GD(QT(1,K1),QT(1,K),QT(1,K1),                         AAD2F304.206    
     *                  U_MEAN(1,K),V_MEAN(1,K),ETADOT_MEAN(1,K),ZERO,     AAD2F304.207    
     *                  SEC_P_LATITUDE,                                    AAD2F304.208    
     *                  QT_FIRST_INC(1,K),NUX(1,K),NUY(1,K),P_FIELD,       AAD2F304.209    
     *                  U_FIELD,ROW_LENGTH,                                APB0F401.1137   
*CALL ARGFLDPT                                                             APB0F401.1138   
     &                  TIMESTEP,LATITUDE_STEP_INVERSE,                    QTADV1A.385    
     *                  LONGITUDE_STEP_INVERSE,SEC_U_LATITUDE,             QTADV1A.386    
     *                  BRSP(1,K),L_SECOND,LWHITBROM)                      AAD2F304.210    
          ELSE IF(K.EQ.1)THEN                                              AAD2F304.211    
                                                                           QTADV1A.389    
C PASS ANY QT VALUES FOR LEVEL K-1 AS ETADOT AT LEVEL 1                    AAD2F304.212    
C IS SET TO ZERO BY USING ARRAY ZERO.                                      AAD2F304.213    
                                                                           QTADV1A.395    
          CALL ADV_P_GD(QT(1,K1),QT(1,K),QT(1,K1),                         AAD2F304.214    
     *                  U_MEAN(1,K),V_MEAN(1,K),ZERO,                      QTADV1A.397    
     *                  ETADOT_MEAN(1,K1),                                 AAD2F304.215    
     *                  SEC_P_LATITUDE,QT_FIRST_INC(1,K),                  AAD2F304.216    
     *                  NUX(1,K),NUY(1,K),                                 AAD2F304.217    
     *                  P_FIELD,U_FIELD,ROW_LENGTH,                        APB0F401.1139   
*CALL ARGFLDPT                                                             APB0F401.1140   
     &                  TIMESTEP,                                          APB0F401.1141   
     *                  LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,      AAD2F304.220    
     *                  SEC_U_LATITUDE,BRSP(1,K),L_SECOND,LWHITBROM)       AAD2F304.221    
          ELSE                                                             AAD2F304.222    
          CALL ADV_P_GD(QT(1,K-1),QT(1,K),QT(1,K1),                        AAD2F304.223    
     *                  U_MEAN(1,K),V_MEAN(1,K),ETADOT_MEAN(1,K),          AAD2F304.224    
     *                  ETADOT_MEAN(1,K1),                                 AAD2F304.225    
     *                  SEC_P_LATITUDE,QT_FIRST_INC(1,K),                  AAD2F304.226    
     *                  NUX(1,K),NUY(1,K),                                 AAD2F304.227    
     *                  P_FIELD,U_FIELD,ROW_LENGTH,                        APB0F401.1142   
*CALL ARGFLDPT                                                             APB0F401.1143   
     &                  TIMESTEP,                                          APB0F401.1144   
     *                  LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,      AAD2F304.230    
     *                  SEC_U_LATITUDE,BRSP(1,K),L_SECOND,LWHITBROM)       AAD2F304.231    
          END IF                                                           QTADV1A.403    
                                                                           QTADV1A.404    
C ---------------------------------------------------------------------    QTADV1A.405    
CL    SECTION 2.4    REMOVE MASS-WEIGHTING FROM INCREMENT AND ADD ONTO     QTADV1A.406    
CL                   FIELD TO OBTAIN PROVISIONAL VALUE.                    QTADV1A.407    
C ---------------------------------------------------------------------    QTADV1A.408    
                                                                           QTADV1A.409    
! Loop over field, missing top and bottom rows                             APB0F401.1145   
          DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO                     APB0F401.1146   
            SCALAR1 = RS(I,K)*RS(I,K)                                      QTADV1A.411    
     *                      *(DELTA_AK(K)+DELTA_BK(K)*PSTAR_OLD(I))        QTADV1A.412    
            QT_FIRST_INC(I,K) = QT_FIRST_INC(I,K)/SCALAR1                  AAD2F304.232    
            QT_PROV(I,K) = QT(I,K)-QT_FIRST_INC(I,K)                       AAD2F304.233    
          END DO                                                           ATD1F400.969    
*IF DEF,GLOBAL                                                             QTADV1A.416    
CL    GLOBAL MODEL THEN CALCULATE PROVISIONAL POLAR VALUE.                 QTADV1A.417    
! Fujitsu vectorization directive                                          GRB0F405.120    
!OCL NOVREC                                                                GRB0F405.121    
          DO I=1,ROW_LENGTH                                                ATD1F400.970    
C NORTH POLE.                                                              QTADV1A.419    
            IK = P_FIELD - ROW_LENGTH + I                                  QTADV1A.420    
            QT_PROV(I,K) = QT(I,K)                                         AAD2F304.234    
            QT_FIRST_INC(I,K) = -QT_FIRST_INC(I,K)/(RS(I,K)*RS(I,K)        AAD2F304.235    
     *                       *(DELTA_AK(K)+DELTA_BK(K)*PSTAR_OLD(I)))      QTADV1A.423    
C SOUTH POLE.                                                              QTADV1A.424    
            QT_PROV(IK,K) = QT(IK,K)                                       AAD2F304.236    
            QT_FIRST_INC(IK,K) = -QT_FIRST_INC(IK,K)/(RS(IK,K)*RS(IK,K)    AAD2F304.237    
     *                       *(DELTA_AK(K)+DELTA_BK(K)*PSTAR_OLD(IK)))     QTADV1A.427    
          END DO                                                           ATD1F400.971    
                                                                           QTADV1A.429    
CL    CALL POLAR TO OBTAIN PROVISIONAL VALUE.                              QTADV1A.430    
                                                                           QTADV1A.431    
                                                                           QTADV1A.434    
                                                                           QTADV1A.435    
*ELSE                                                                      QTADV1A.436    
CL    LIMITED AREA MODEL THEN SET PROVISIONAL VALUES ON BOUNDARIES         QTADV1A.437    
CL    EQUAL TO QT AT OLD TIME LEVEL.                                       QTADV1A.438    
          DO I=1,ROW_LENGTH                                                ATD1F400.972    
            IK = P_FIELD - ROW_LENGTH + I                                  QTADV1A.440    
            QT_PROV(I,K) = QT(I,K)                                         AAD2F304.240    
            QT_PROV(IK,K) = QT(IK,K)                                       AAD2F304.241    
          END DO                                                           ATD1F400.973    
*ENDIF                                                                     QTADV1A.444    
                                                                           QTADV1A.445    
        END IF                                                             QTADV1A.446    
CL END CONDITIONAL ON LEVEL BEING LESS THAN Q_LEVELS+1                     QTADV1A.447    
      enddo                                                                AAD2F304.242    
*IF DEF,GLOBAL                                                             APB2F401.1      
      CALL POLAR(QT_PROV,QT_FIRST_INC,QT_FIRST_INC,                        APB2F401.2      
*CALL ARGFLDPT                                                             APB2F401.3      
     &           P_FIELD,P_FIELD,P_FIELD,                                  APB2F401.4      
     &           TOP_ROW_START,P_BOT_ROW_START,                            APB2F401.5      
     &           ROW_LENGTH,Q_LEVELS)                                      APB2F401.6      
*ENDIF                                                                     APB2F401.7      
CL BEGIN CONDITIONAL ON LEVEL BEING GREATER THAN 1                         QTADV1A.448    
      DO K=1,Q_LEVELS+1                                                    ATD1F400.974    
        IF(K.GT.1) THEN                                                    ATD1F400.975    
CL---------------------------------------------------------------------    QTADV1A.450    
CL    SECTION 3.     ALL WORK IN THIS SECTION PERFORMED AT LEVEL-1.        QTADV1A.451    
CL                   CALCULATE SECOND INCREMENT DUE TO ADVECTION.          QTADV1A.452    
CL                   CALCULATE TOTAL INCREMENT TO FIELD AND FILTER         QTADV1A.453    
CL                   WHERE NECESSARY THEN UPDATE FIELD.                    QTADV1A.454    
CL                   THE POLAR INCREMENTS ARE THEN CALCULATED AND ADDED    QTADV1A.455    
CL                   ON BY CALLING POLAR.                                  QTADV1A.456    
CL---------------------------------------------------------------------    QTADV1A.457    
                                                                           QTADV1A.459    
          TIMESTEP = ADVECTION_TIMESTEP                                    QTADV1A.460    
                                                                           QTADV1A.464    
C ---------------------------------------------------------------------    QTADV1A.465    
CL    SECTION 3.1    CALL ADV_P_GD TO OBTAIN SECOND INCREMENT DUE TO       QTADV1A.466    
CL                   ADVECTION.                                            QTADV1A.467    
C ---------------------------------------------------------------------    QTADV1A.468    
                                                                           QTADV1A.469    
          K1=K-1                                                           QTADV1A.470    
C K1 HOLDS K-1.                                                            QTADV1A.471    
                                                                           QTADV1A.472    
          IF(K.GT.Q_LEVELS) THEN                                           AAD2F304.245    
C THE ZERO VERTICAL FLUX AT THE TOP IS ENSURED BY PASSING ETADOT AS        AAD2F304.246    
C ZERO.                                                                    AAD2F304.247    
                                                                           AAD2F304.248    
          CALL ADV_P_GD(QT_PROV(1,K-2),QT_PROV(1,K-1),                     AAD2F304.249    
     *                  QT_PROV(1,K-2),                                    AAD2F304.250    
     *                  U_MEAN(1,K1),V_MEAN(1,K1),ETADOT_MEAN(1,K-1),      AAD2F304.251    
     *                  ZERO,SEC_P_LATITUDE,                               AAD2F304.252    
     *                  QT_SECOND_INC,NUX(1,K-1),NUY(1,K-1),P_FIELD,       AAD2F304.253    
     *                  U_FIELD,ROW_LENGTH,                                APB0F401.1147   
*CALL ARGFLDPT                                                             APB0F401.1148   
     &                  TIMESTEP,LATITUDE_STEP_INVERSE,                    AAD2F304.255    
     *                  LONGITUDE_STEP_INVERSE,SEC_U_LATITUDE,             QTADV1A.480    
     *                  BRSP(1,K-1),L_SECOND,LWHITBROM)                    AAD2F304.256    
                                                                           QTADV1A.483    
          ELSE IF(K.EQ.2) THEN                                             AAD2F304.257    
                                                                           QTADV1A.489    
C THE ZERO VERTICAL FLUX AT THE BOTTOM IS ENSURED BY PASSING ETADOT AS     AAD2F304.258    
C ZERO.                                                                    AAD2F304.259    
                                                                           QTADV1A.490    
          CALL ADV_P_GD(QT_PROV(1,K),QT_PROV(1,K-1),                       AAD2F304.260    
     *                  QT_PROV(1,K),                                      AAD2F304.261    
     *                  U_MEAN(1,K1),V_MEAN(1,K1),ZERO,                    QTADV1A.492    
     *                  ETADOT_MEAN(1,K),                                  AAD2F304.262    
     *                 SEC_P_LATITUDE,QT_SECOND_INC,                       AAD2F304.263    
     *                 NUX(1,K-1),NUY(1,K-1),                              AAD2F304.264    
     *                  P_FIELD,U_FIELD,ROW_LENGTH,                        AAD2F304.265    
*CALL ARGFLDPT                                                             APB0F401.1149   
     &                  TIMESTEP,                                          APB0F401.1150   
     *                  LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,      AAD2F304.267    
     *                  SEC_U_LATITUDE,                                    AAD2F304.268    
     *                  BRSP(1,K-1),L_SECOND,LWHITBROM)                    AAD2F304.269    
          ELSE                                                             AAD2F304.270    
                                                                           AAD2F304.271    
          CALL ADV_P_GD(QT_PROV(1,K-2),QT_PROV(1,K-1),                     AAD2F304.272    
     *                  QT_PROV(1,K),                                      AAD2F304.273    
     *                  U_MEAN(1,K1),V_MEAN(1,K1),ETADOT_MEAN(1,K-1),      AAD2F304.274    
     *                  ETADOT_MEAN(1,K),                                  AAD2F304.275    
     *                 SEC_P_LATITUDE,QT_SECOND_INC,                       AAD2F304.276    
     *                 NUX(1,K-1),NUY(1,K-1),                              AAD2F304.277    
     *                  P_FIELD,U_FIELD,ROW_LENGTH,                        AAD2F304.278    
*CALL ARGFLDPT                                                             APB0F401.1151   
     &                  TIMESTEP,                                          APB0F401.1152   
     *                  LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE,      AAD2F304.280    
     *                  SEC_U_LATITUDE,                                    AAD2F304.281    
     *                  BRSP(1,K-1),L_SECOND,LWHITBROM)                    AAD2F304.282    
                                                                           AAD2F304.283    
          END IF                                                           QTADV1A.498    
                                                                           QTADV1A.499    
C ---------------------------------------------------------------------    QTADV1A.500    
CL    SECTION 3.2    CALCULATE TOTAL MASS-WEIGHTED INCREMENT TO FIELD.     QTADV1A.501    
C ---------------------------------------------------------------------    QTADV1A.502    
                                                                           QTADV1A.503    
C TOTAL MASS-WEIGHTED INCREMENT IS CALCULATED AND THEN STORED IN           QTADV1A.504    
C QT_INCREMENT.                                                            QTADV1A.505    
                                                                           QTADV1A.506    
! Loop over field, missing top and bottom rows                             APB0F401.1153   
          DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO                     APB0F401.1154   
            QT_INCREMENT(I,K1) = .5*(QT_SECOND_INC(I) +                    QTADV1A.508    
     *                      QT_FIRST_INC(I,K-1)*RS(I,K1)*RS(I,K1)          AAD2F304.284    
     *                      *(DELTA_AK(K1)+DELTA_BK(K1)*PSTAR(I)))         QTADV1A.510    
          END DO                                                           ATD1F400.977    
                                                                           QTADV1A.512    
C ---------------------------------------------------------------------    QTADV1A.513    
CL    SECTION 3.3    IF GLOBAL MODEL CALCULATE POLAR INCREMENTS.           QTADV1A.514    
CL                   IF LIMITED AREA MASS-WEIGHT BOUNDARY VALUES.          QTADV1A.515    
C ---------------------------------------------------------------------    QTADV1A.516    
                                                                           QTADV1A.517    
CL    GLOBAL MODEL SO CALCULATE POLAR INCREMENT.                           QTADV1A.518    
CL    CALCULATE MERIDIONAL FLUX AROUND POLES BY ADDING THE TWO             QTADV1A.519    
CL    INCREMENTS AND ALSO MASS-WEIGHTING POLAR FIELDS.                     QTADV1A.520    
C NEGATIVE SIGN BEFORE FIRST INCS IS DUE TO THEIR SIGN BEING CHANGED       QTADV1A.521    
C PRIOR TO THE INTERMEDIATE VALUE BEING CALCULATED.                        QTADV1A.522    
                                                                           QTADV1A.523    
! Fujitsu vectorization directive                                          GRB0F405.122    
!OCL NOVREC                                                                GRB0F405.123    
          DO I=1,ROW_LENGTH                                                ATD1F400.978    
C NORTH POLE OR NORTHERN BOUNDARY.                                         QTADV1A.525    
            IK = P_FIELD - ROW_LENGTH + I                                  QTADV1A.526    
            SCALAR1 = RS(I,K1)*RS(I,K1)                                    QTADV1A.527    
     *                       *(DELTA_AK(K1)+DELTA_BK(K1)*PSTAR(I))         QTADV1A.528    
*IF DEF,GLOBAL                                                             QTADV1A.529    
            QT_INCREMENT(I,K1) = -.5*(QT_SECOND_INC(I)                     QTADV1A.530    
     *                       - QT_FIRST_INC(I,K-1)*SCALAR1)                AAD2F304.285    
*ENDIF                                                                     QTADV1A.532    
            QT(I,K1)     = QT(I,K1)*SCALAR1                                QTADV1A.533    
C SOUTH POLE OR SOUTHERN BOUNDARY.                                         QTADV1A.534    
            SCALAR2 = RS(IK,K1)*RS(IK,K1)                                  QTADV1A.535    
     *                      *(DELTA_AK(K1)+DELTA_BK(K1)*PSTAR(IK))         QTADV1A.536    
*IF DEF,GLOBAL                                                             QTADV1A.537    
            QT_INCREMENT(IK,K1) = -.5*(QT_SECOND_INC(IK)                   QTADV1A.538    
     *                      - QT_FIRST_INC(IK,K-1)*SCALAR2)                AAD2F304.286    
*ENDIF                                                                     QTADV1A.540    
            QT(IK,K1)     = QT(IK,K1)*SCALAR2                              QTADV1A.541    
          END DO                                                           ATD1F400.979    
                                                                           QTADV1A.543    
CL END CONDITIONAL LEVEL GREATER THAN ONE                                  QTADV1A.544    
        END IF                                                             QTADV1A.545    
                                                                           QTADV1A.546    
CL END LOOP OVER Q_LEVELS+1                                                QTADV1A.547    
      enddo                                                                AAD2F304.287    
                                                                           QTADV1A.549    
CL---------------------------------------------------------------------    QTADV1A.550    
CL    SECTION 4      IF GLOBAL MODEL THEN FILTER INCREMENTS AND            QTADV1A.551    
CL                   UPDATE POLAR VALUES BY CALLING POLAR.                 QTADV1A.552    
CL                   UPDATE ALL OTHER VALUES.                              QTADV1A.553    
CL---------------------------------------------------------------------    QTADV1A.554    
                                                                           QTADV1A.555    
*IF DEF,GLOBAL                                                             QTADV1A.556    
C ---------------------------------------------------------------------    QTADV1A.557    
CL    SECTION 4.1    CALL FILTER TO DO FILTERING.                          QTADV1A.558    
C ---------------------------------------------------------------------    QTADV1A.559    
                                                                           QTADV1A.560    
C SET FILTER_SPACE WHICH IS ROW_LENGTH+2 TIMES THE NUMBER OF ROWS TO       QTADV1A.561    
C BE FILTERED.                                                             QTADV1A.562    
                                                                           QTADV1A.563    
      FILTER_SPACE = (ROW_LENGTH+2)*(NORTHERN_FILTERED_P_ROW-1+            QTADV1A.564    
     *                P_FIELD/ROW_LENGTH-SOUTHERN_FILTERED_P_ROW)          QTADV1A.565    
CL    CALL FILTER FOR QT INCREMENTS                                        QTADV1A.566    
                                                                           QTADV1A.567    
      CALL FILTER(QT_INCREMENT,P_FIELD,Q_LEVELS,                           APB0F402.20     
     &            FILTER_SPACE,ROW_LENGTH,                                 APB0F402.21     
*CALL ARGFLDPT                                                             APB0F402.22     
     &            FILTER_WAVE_NUMBER_P_ROWS,TRIGS,IFAX,                    APB0F402.23     
     *            NORTHERN_FILTERED_P_ROW,SOUTHERN_FILTERED_P_ROW)         QTADV1A.571    
                                                                           QTADV1A.572    
C ---------------------------------------------------------------------    QTADV1A.573    
CL    SECTION 4.2    CALL POLAR TO UPDATE POLAR VALUES                     QTADV1A.574    
C ---------------------------------------------------------------------    QTADV1A.575    
                                                                           QTADV1A.576    
      CALL POLAR(QT,QT_INCREMENT,QT_INCREMENT,                             APB2F401.8      
*CALL ARGFLDPT                                                             APB2F401.9      
     &           P_FIELD,P_FIELD,P_FIELD,                                  APB2F401.10     
     &           TOP_ROW_START,P_BOT_ROW_START,                            APB2F401.11     
     &           ROW_LENGTH,Q_LEVELS)                                      APB2F401.12     
                                                                           QTADV1A.582    
*ENDIF                                                                     QTADV1A.583    
C ---------------------------------------------------------------------    QTADV1A.584    
CL    SECTION 4.3    UPDATE ALL OTHER POINTS.                              QTADV1A.585    
C ---------------------------------------------------------------------    QTADV1A.586    
                                                                           QTADV1A.587    
      DO K=1,Q_LEVELS                                                      ATD1F400.983    
C UPDATE QT.                                                               QTADV1A.589    
CFPP$ SELECT(CONCUR)                                                       QTADV1A.590    
! Loop over field, missing top and bottom rows                             APB0F401.1155   
        DO I= START_POINT_NO_HALO,END_P_POINT_NO_HALO                      APB0F401.1156   
      QT(I,K)=QT(I,K)*RS(I,K)*RS(I,K)*                                     ATD1F400.985    
     &        (DELTA_AK(K)+DELTA_BK(K)*PSTAR(I))-QT_INCREMENT(I,K)         ATD1F400.986    
        END DO                                                             ATD1F400.987    
      END DO                                                               QTADV1A.614    
CL    END OF ROUTINE QT_ADV                                                QTADV1A.615    
                                                                           QTADV1A.616    
      RETURN                                                               QTADV1A.617    
      END                                                                  QTADV1A.618    
*ENDIF                                                                     QTADV1A.619