*IF DEF,A06_1A,OR,DEF,A06_2A                                               GWAVE1A.2      
C ******************************COPYRIGHT******************************    GTS2F400.3529   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.3530   
C                                                                          GTS2F400.3531   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.3532   
C restrictions as set forth in the contract.                               GTS2F400.3533   
C                                                                          GTS2F400.3534   
C                Meteorological Office                                     GTS2F400.3535   
C                London Road                                               GTS2F400.3536   
C                BRACKNELL                                                 GTS2F400.3537   
C                Berkshire UK                                              GTS2F400.3538   
C                RG12 2SZ                                                  GTS2F400.3539   
C                                                                          GTS2F400.3540   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.3541   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.3542   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.3543   
C Modelling at the above address.                                          GTS2F400.3544   
C ******************************COPYRIGHT******************************    GTS2F400.3545   
C                                                                          GTS2F400.3546   
CLL  SUBROUTINE G_WAVE-------------------------------------------          GWAVE1A.3      
CLL                                                                        GWAVE1A.4      
CLL  PURPOSE:   1) INTERPOLATE WINDS TO P/THETA POINTS                     GWAVE1A.5      
CLL             2) GATHER DATA FOR LAND POINTS ONLY                        GWAVE1A.6      
CLL             3) CALL SURFACE STRESS ROUTINE                             GWAVE1A.7      
CLL             4) CALL VERTICAL STRESS PROFILE ROUTINE TO CALCULATE       GWAVE1A.8      
CLL                DRAG AT EACH LEVEL                                      GWAVE1A.9      
CLL             5) INTERPOLATE ACCELERATION TO WIND POINTS AND UPDATE      GWAVE1A.10     
CLL                WINDS                                                   GWAVE1A.11     
CLL  SUITABLE FOR SINGLE COLUMN USE, WITH CALLS TO: UV_TO_P REMOVED        GWAVE1A.12     
CLL                                                 P_TO_UV REMOVED        GWAVE1A.13     
!                                                (SCMA on)                 AJC1F405.276    
CLL  SUITABLE FOR ROTATED GRIDS                                            GWAVE1A.14     
CLL                                                                        GWAVE1A.15     
CLL  ORIGINAL VERSION FOR CRAY Y-MP                                        GWAVE1A.16     
CLL  WRITTEN BY C. WILSON                                                  GWAVE1A.17     
CLL  FURTHER ALTERATIONS MAY BE REQUIRED FOR AUTOTASKING EFFICIENCY        GWAVE1A.18     
CLL                                                                        GWAVE1A.19     
CLL  MODEL            MODIFICATION HISTORY FROM MODEL VERSION 3.0:         GWAVE1A.20     
CLL VERSION  DATE                                                          GWAVE1A.21     
CLL   3.3   25/10/93  Removal of DIAG06 directive. New arguments to        DR251093.43     
CLL                   dimension diagnostic arrays. D. Robinson.            DR251093.44     
CLL   3.4   11/05/94  Argument LFROUDE added and passed to GW_SURF         GSS1F304.55     
CLL                   DEF GWLINP replaced by LOGICAL LGWLINP               GSS1F304.56     
CLL                                                S.J.Swarbrick           GSS1F304.57     
!LL   4.1   31/05/96  Added MPP code    P.Burton                           APBEF401.27     
CLL                                                                        GWAVE1A.22     
CLL   4.4   19/09/97  Remove *IF -DEF,CRAY compile options. S.Webster      ASW1F404.1      
CLL  4.5    Jul. 98  Kill the IBM specific lines.                          AJC1F405.274    
CLL                  Replace IBM with SCMA  (JCThil)                       AJC1F405.275    
CLL                                                                        ASW1F404.2      
CLL   4.5   17/03/97   Correct MPP GWD diagnostic bug. S.Webster           ASW1F405.1      
CLL                                                                        ASW1F405.2      
CLL  PROGRAMMING STANDARD: UNIFIED MODEL DOCUMENTATION PAPER NO. 4,        GWAVE1A.23     
CLL  VERSION 1, DATED 12/09/89                                             GWAVE1A.24     
CLL                                                                        GWAVE1A.25     
CLL  SYSTEM TASK: CONTROL PART OF P22                                      GWAVE1A.26     
CLL                                                                        GWAVE1A.27     
CLL  DOCUMENTATION:                                                        GWAVE1A.28     
CLL                                                                        GWAVE1A.29     
CLLEND-------------------------------------------------------------        GWAVE1A.30     
                                                                           GWAVE1A.31     
C                                                                          GWAVE1A.32     
C*L  ARGUMENTS:---------------------------------------------------         GWAVE1A.33     

      SUBROUTINE G_WAVE                                                     2,24GWAVE1A.34     
     1  (PSTAR,PEXNER,THETA,U,V,P_FIELD,U_FIELD,                           GWAVE1A.35     
     2   ROWS_P,ROW_LENGTH,START_LEVEL,LEVELS,                             GWAVE1A.36     
*CALL ARGFLDPT                                                             APBEF401.28     
     3   AK,BK,AKH,BKH,DELTA_AK,DELTA_BK,SD_OROG_LAND,                     GWAVE1A.37     
     4   LAND_INDEX,LAND_POINTS, TIMESTEP,KAY,                             GWAVE1A.38     
     5   STRESS_UD,LEN_STRESS_UD,STRESS_UD_ON,U_LIST,LAND_POINTS_UD,       DR251093.45     
     6   STRESS_VD,LEN_STRESS_VD,STRESS_VD_ON,V_LIST,LAND_POINTS_VD,       DR251093.46     
     7  IRET,LFROUDE,LGWLINP)                                              GSS1F304.58     
                                                                           GWAVE1A.48     
      IMPLICIT NONE                                                        GWAVE1A.49     
                                                                           GWAVE1A.50     
      INTEGER                                                              GWAVE1A.51     
     *  P_FIELD            !IN    1ST DIMENSION OF FIELD OF PSTAR          GWAVE1A.52     
     *, U_FIELD            !IN    1ST DIMENSION OF FIELD OF U,V            GWAVE1A.53     
     *, ROWS_P             !IN    NUMBER OF ROWS of P grid                 GWAVE1A.54     
     *, ROW_LENGTH         !IN    NUMBER OF POINTS PER ROW                 GWAVE1A.55     
     *, START_LEVEL        !IN    START OF WAVE-BREAKING TEST              GWAVE1A.56     
     *, LEVELS             !IN    NUMBER OF MODEL LEVELS                   GWAVE1A.57     
     *, LAND_POINTS        !IN    NUMBER OF LAND POINTS                    GWAVE1A.58     
     *, LAND_INDEX((ROWS_P)*ROW_LENGTH) ! INDEX FOR LAND POINTS            GWAVE1A.59     
     *, LEN_STRESS_UD      !IN    ) Dimension of diagnostic arrays         DR251093.47     
     *, LEN_STRESS_VD      !IN    ) for GW stress - u and v                DR251093.48     
     *, LAND_POINTS_UD     !IN    ) No of land points in diagnostic        DR251093.49     
     *, LAND_POINTS_VD     !IN    ) arrays for GW stress - u and v         DR251093.50     
     *, IRET               ! RETURN CODE      :    IRET=0   NORMAL EXIT    GWAVE1A.60     
C                          ! RETURN CODE      :    IRET=1   ?????          GWAVE1A.61     
                                                                           APBEF401.29     
! All TYPFLDPT variables are intent IN                                     APBEF401.30     
*CALL TYPFLDPT                                                             APBEF401.31     
                                                                           GWAVE1A.64     
      REAL                                                                 GWAVE1A.65     
     * PSTAR(P_FIELD)         !IN    PRIMARY MODEL ARRAY FOR PSTAR FIELD   GWAVE1A.66     
     *,PEXNER(P_FIELD,LEVELS+1) !IN    ARRAY FOR EXNER PRESSURE FIELD      GWAVE1A.67     
     *,THETA(P_FIELD,LEVELS)  !IN    PRIMARY MODEL ARRAY FOR THETA FIELD   GWAVE1A.68     
     *,U(U_FIELD,LEVELS)      !INOUT PRIMARY MODEL ARRAY FOR U FIELD       GWAVE1A.69     
     *,V(U_FIELD,LEVELS)      !INOUT PRIMARY MODEL ARRAY FOR V FIELD       GWAVE1A.70     
C            AK,BK  DEFINE HYBRID VERTICAL COORDINATES P=A+BP*,            GWAVE1A.71     
C       DELTA_AK,DELTA_BK  DEFINE LAYER PRESSURE THICKNESS PD=AD+BDP*,     GWAVE1A.72     
                                                                           GWAVE1A.73     
      REAL                                                                 GWAVE1A.74     
     * DELTA_AK(LEVELS)       !IN    LAYER THICKNESS                       GWAVE1A.75     
     *,DELTA_BK(LEVELS)       !IN    LAYER THICKNESS                       GWAVE1A.76     
     *,AK (LEVELS)            !IN    VALUE AT LAYER CENTRE                 GWAVE1A.77     
     *,BK (LEVELS)            !IN    VALUE AT LAYER CENTRE                 GWAVE1A.78     
     *,AKH(LEVELS+1)          !IN    VALUE AT LAYER BOUNDARY               GWAVE1A.79     
     *,BKH(LEVELS+1)          !IN    VALUE AT LAYER BOUNDARY               GWAVE1A.80     
     *,SD_OROG_LAND(LAND_POINTS),  !IN STANDARD DEVIATION OF OROGRAPHY     GWAVE1A.81     
     * TIMESTEP               !IN    TIMESTEP                              GWAVE1A.82     
     *,KAY                    !IN    surface stress constant ( m-1)        GWAVE1A.83     
     *,STRESS_UD(LEN_STRESS_UD,*) !U STRESS DIAGNOSTIC                     DR251093.51     
     *,STRESS_VD(LEN_STRESS_VD,*) !V STRESS DIAGNOSTIC                     DR251093.52     
                                                                           GWAVE1A.89     
C WARNING: Storage will only be assigned by the calling routine for        GWAVE1A.90     
C          for the number of levels required.                              GWAVE1A.91     
                                                                           GWAVE1A.92     
      LOGICAL                                                              GWAVE1A.93     
     * STRESS_UD_ON           !U stress diagnostic switch                  GWAVE1A.94     
     *,STRESS_VD_ON           !V stress diagnostic switch                  GWAVE1A.95     
     *,U_LIST(LEVELS+1),      ! Lists of levels for which stresses         GWAVE1A.96     
     * V_LIST(LEVELS+1)       ! required.                                  GWAVE1A.97     
     *,LFROUDE,LGWLINP        ! Logical switches                           GSS1F304.59     
C*---------------------------------------------------------------------    GWAVE1A.101    
                                                                           GWAVE1A.102    
C*L  WORKSPACE USAGE:-------------------------------------------------     GWAVE1A.103    
C   DEFINE LOCAL WORKSPACE ARRAYS:                                         GWAVE1A.104    
C   4 REAL ARRAYS AT FULL FIELD LENGTH REQUIRED                            GWAVE1A.105    
C   6*LEVELS+5 REAL ARRAYS OF LAND_POINTS LENGTH REQUIRED                  GWAVE1A.106    
                                                                           GWAVE1A.107    
C   2*LEVELS REAL ARRAYS OF LAND_POINTS LENGTH REQUIRED FOR DIAGNOSTICS    DR251093.53     
                                                                           GWAVE1A.113    
                                                                           GWAVE1A.128    
      REAL                                                                 GWAVE1A.129    
     * WORK(P_FIELD,4)               ! GENERAL PURPOSE WORK                GWAVE1A.130    
     *,UP_LAND(LAND_POINTS,LEVELS)   ! INTERPOLATED U COMPONENT ON PGRID   GWAVE1A.131    
     *,VP_LAND(LAND_POINTS,LEVELS)   ! INTERPOLATED U COMPONENT ON PGRID   GWAVE1A.132    
     *,THETA_LAND(LAND_POINTS,LEVELS)! THETA LAND POINTS                   GWAVE1A.133    
     *,S_STRESS(LAND_POINTS)         ! 'SURFACE' STRESS LAND POINTS        GWAVE1A.134    
     *,SIN_A(LAND_POINTS)        ! SIN ('SURFACE' WIND ANGLE FROM NORTH)   GWAVE1A.135    
     *,COS_A(LAND_POINTS)        ! COS ('SURFACE' WIND ANGLE FROM NORTH)   GWAVE1A.136    
     *,PSTAR_LAND(LAND_POINTS)       ! PSTAR LAND POINTS                   GWAVE1A.137    
     *,PEXNER_LAND(LAND_POINTS,LEVELS+1)  ! PEXNER LAND POINTS             GWAVE1A.138    
     *,DU_DT(LAND_POINTS,LEVELS)     ! U-ACCELERATION                      GWAVE1A.139    
     *,DV_DT(LAND_POINTS,LEVELS)     ! V-ACCELERATION                      GWAVE1A.140    
                                                                           GWAVE1A.141    
      REAL                                                                 GWAVE1A.146    
     * STRESS_UD_LAND(LAND_POINTS_UD,LEVELS+1) !U STRESS DIAGNOSTIC        DR251093.55     
     *,STRESS_VD_LAND(LAND_POINTS_VD,LEVELS+1) !V STRESS DIAGNOSTIC        DR251093.56     
                                                                           WI200893.18     
                                                                           GWAVE1A.151    
C*---------------------------------------------------------------------    GWAVE1A.152    
C*L EXTERNAL SUBROUTINES CALLED---------------------------------------     GWAVE1A.153    
      EXTERNAL GW_SURF,GW_LIN_P,GW_RICH                                    AJC1F405.277    
*IF -DEF,SCMA                                                              AJC1F405.278    
     &,P_TO_UV,UV_TO_P                                                     AJC1F405.279    
*ENDIF                                                                     AJC1F405.280    
C*------------------------------------------------------------------       GWAVE1A.159    
CL  MAXIMUM VECTOR LENGTH ASSUMED IS (ROWS_P+1) * ROWLENGTH                GWAVE1A.160    
CL---------------------------------------------------------------------    GWAVE1A.161    
C----------------------------------------------------------------------    GWAVE1A.162    
C    DEFINE LOCAL VARIABLES                                                GWAVE1A.163    
      INTEGER                                                              GWAVE1A.164    
     *  P_POINTS      !     NUMBER OF P POINTS NEEDED                      GWAVE1A.165    
     *, U_POINTS_1    !     No. U points used to interpolate to P-grid     GWAVE1A.166    
     *, U_POINTS      !     NUMBER OF U POINTS UPDATED                     GWAVE1A.167    
     *, START_U       !     Start position of U points updated             GWAVE1A.168    
     *, START_U1      !     Start position of diagnostics updated          ASW1F405.3      
C                                                                          GWAVE1A.169    
      INTEGER   I,IW,K,     ! LOOP COUNTERS IN ROUTINE                     GWAVE1A.170    
     *          KOUT_U,KOUT_V                                              GWAVE1A.171    
                                                                           GWAVE1A.175    
C-------------------------------------------------------------------       GWAVE1A.176    
CL    INTERNAL STRUCTURE INCLUDING SUBROUTINE CALLS:                       GWAVE1A.177    
CL    1.     INITIALISATION                                                GWAVE1A.178    
C--------------------------                                                GWAVE1A.179    
                                                                           GWAVE1A.180    
C------------------------------------------------------------------        GWAVE1A.181    
CL    1.1  SET UP DIMENSIONS                                               GWAVE1A.182    
C------------------------------------------------------------------        GWAVE1A.183    
                                                                           GWAVE1A.184    
        U_POINTS_1    = (ROWS_P+1)*ROW_LENGTH                              GWAVE1A.185    
        U_POINTS      = (ROWS_P-1)*ROW_LENGTH                              GWAVE1A.186    
        P_POINTS      =  ROWS_P*ROW_LENGTH                                 GWAVE1A.187    
        START_U       =  ROW_LENGTH                                        GWAVE1A.188    
C                                                                          ASW1F405.4      
C  Three separate cases for START_U1. These arise because of different     ASW1F405.5      
C  row offsets in the call to uv_to_p  (GWAVE3A.253,256)                   ASW1F405.6      
C                                                                          ASW1F405.7      
*IF DEF,MPP                                                                ASW1F405.8      
        IF ( at_top_of_lpg ) THEN                                          ASW1F405.9      
          START_U1       = 2*ROW_LENGTH                                    ASW1F405.10     
        ELSE                                                               ASW1F405.11     
          START_U1       = 0                                               ASW1F405.12     
        ENDIF                                                              ASW1F405.13     
*ELSE                                                                      ASW1F405.14     
          START_U1       = ROW_LENGTH                                      ASW1F405.15     
*ENDIF                                                                     ASW1F405.16     
                                                                           GWAVE1A.189    
C------------------------------------------------------------------        GWAVE1A.190    
CL    1.2 INTERPOLATE WINDS TO P/THETA-GRID                                GWAVE1A.191    
C------------------------------------------------------------------        GWAVE1A.192    
      DO K=1,LEVELS                                                        GWAVE1A.193    
                                                                           GWAVE1A.194    
*IF DEF,SCMA                                                               AJC1F405.281    
      DO I=1,LAND_POINTS                                                   AJC1F405.282    
        UP_LAND(I,K) =U(LAND_INDEX(I),K)                                   AJC1F405.283    
        VP_LAND(I,K) =V(LAND_INDEX(I),K)                                   AJC1F405.284    
      ENDDO                                                                AJC1F405.285    
*ELSE                                                                      GWAVE1A.202    
                                                                           GWAVE1A.203    
        CALL UV_TO_P(U(1,K),WORK(1,1),U_POINTS_1,P_POINTS,                 GWAVE1A.205    
     *   ROW_LENGTH,ROWS_P+1)                                              GWAVE1A.206    
        CALL UV_TO_P(V(1,K),WORK(1,2),U_POINTS_1,P_POINTS,                 GWAVE1A.207    
     *   ROW_LENGTH,ROWS_P+1)                                              GWAVE1A.208    
                                                                           GWAVE1A.209    
*IF DEF,MPP                                                                APBEF401.32     
! Correct halos of interpolated U/V                                        APBEF401.33     
!        CALL SWAPBOUNDS(WORK(1,1),LOCAL_ROW_LENGTH,ROWS_P+1,              APBEF401.34     
!     &                  EW_Halo,NS_Halo,1) ! U field                      APBEF401.35     
!        CALL SWAPBOUNDS(WORK(1,2),LOCAL_ROW_LENGTH,ROWS_P+1,              APBEF401.36     
!     &                  EW_Halo,NS_Halo,1) ! V field                      APBEF401.37     
*ENDIF                                                                     APBEF401.38     
                                                                           APBEF401.39     
C------------------------------------------------------------------        GWAVE1A.210    
CL    1.3  GATHER WINDS AT LAND POINTS                                     GWAVE1A.211    
C------------------------------------------------------------------        GWAVE1A.212    
                                                                           GWAVE1A.213    
        DO I=1,LAND_POINTS                                                 GWAVE1A.214    
         UP_LAND(I,K) =WORK(LAND_INDEX(I),1)                               GWAVE1A.215    
         VP_LAND(I,K) =WORK(LAND_INDEX(I),2)                               GWAVE1A.216    
        END DO                                                             GWAVE1A.217    
                                                                           WI200893.20     
*ENDIF                                                                     WI200893.21     
                                                                           WI200893.22     
      END DO                                                               GWAVE1A.218    
                                                                           GWAVE1A.221    
C------------------------------------------------------------------        GWAVE1A.222    
CL    1.4  GATHER PSTAR,PEXNER,THETA,SD_OROG AT LAND POINTS                GWAVE1A.223    
C------------------------------------------------------------------        GWAVE1A.224    
                                                                           GWAVE1A.225    
      DO I=1,LAND_POINTS                                                   GWAVE1A.226    
        PSTAR_LAND(I) = PSTAR(LAND_INDEX(I))                               GWAVE1A.227    
      END DO                                                               GWAVE1A.228    
                                                                           GWAVE1A.229    
CL *** Following loop labelled to workaround fmp mistranslation            GWAVE1A.230    
                                                                           GWAVE1A.231    
CFPP$ SELECT(CONCUR)                                                       GWAVE1A.232    
      DO 140 K=1,LEVELS                                                    GWAVE1A.233    
        DO I=1,LAND_POINTS                                                 GWAVE1A.234    
          PEXNER_LAND(I,K) = PEXNER(LAND_INDEX(I),K)                       GWAVE1A.235    
          THETA_LAND(I,K) = THETA(LAND_INDEX(I),K)                         GWAVE1A.236    
        END DO                                                             GWAVE1A.237    
 140  CONTINUE                                                             GWAVE1A.238    
                                                                           GWAVE1A.239    
      DO I=1,LAND_POINTS                                                   GWAVE1A.240    
        PEXNER_LAND(I,LEVELS+1) =PEXNER(LAND_INDEX(I),LEVELS+1)            GWAVE1A.241    
      END DO                                                               GWAVE1A.242    
                                                                           GWAVE1A.243    
C------------------------------------------------------------------        GWAVE1A.244    
CL    2. CALCULATE 'SURFACE' STRESS,CALL GW_SURF                           GWAVE1A.245    
C------------------------------------------------------------------        GWAVE1A.246    
                                                                           GWAVE1A.247    
      CALL GW_SURF(PSTAR_LAND,PEXNER_LAND,THETA_LAND,UP_LAND,VP_LAND,      GWAVE1A.248    
     *             SD_OROG_LAND,S_STRESS,LEVELS,LAND_POINTS,               GWAVE1A.249    
     *             AK,BK,AKH,BKH,KAY,SIN_A,COS_A,LFROUDE)                  GSS1F304.61     
                                                                           GWAVE1A.251    
C------------------------------------------------------------------        GWAVE1A.252    
CL    3. CALCULATE STRESS PROFILE AND ACCELERATIONS,                       GWAVE1A.253    
CL       CALL GW_RICH  OR GW_LIN_P                                         GSS1F304.62     
C------------------------------------------------------------------        GWAVE1A.255    
                                                                           GWAVE1A.256    
      IF (LGWLINP) THEN                                                    GSS1F304.63     
      CALL GW_LIN_P(PSTAR_LAND,PEXNER_LAND,THETA_LAND,UP_LAND,VP_LAND,     GWAVE1A.258    
     1             S_STRESS,START_LEVEL,LEVELS,LAND_POINTS,                GWAVE1A.259    
     2             AKH,BKH,DELTA_AK,DELTA_BK,SIN_A,COS_A,                  GWAVE1A.260    
     3             DU_DT,DV_DT,                                            GSS1F304.64     
     4             STRESS_UD_LAND,LAND_POINTS_UD,STRESS_UD_ON,             GSS1F304.65     
     5             STRESS_VD_LAND,LAND_POINTS_VD,STRESS_VD_ON)             GSS1F304.66     
      ELSE                                                                 GSS1F304.67     
      CALL GW_RICH(PSTAR_LAND,PEXNER_LAND,THETA_LAND,UP_LAND,VP_LAND,      GWAVE1A.262    
     1             S_STRESS,START_LEVEL,LEVELS,LAND_POINTS,                GWAVE1A.263    
     2             AKH,BKH,DELTA_AK,DELTA_BK,KAY,SIN_A,COS_A,              GWAVE1A.264    
     3             DU_DT,DV_DT,                                            DR251093.57     
     4             STRESS_UD_LAND,LAND_POINTS_UD,STRESS_UD_ON,             DR251093.58     
     5             STRESS_VD_LAND,LAND_POINTS_VD,STRESS_VD_ON)             DR251093.59     
      END IF                                                               GSS1F304.68     
                                                                           GWAVE1A.276    
C------------------------------------------------------------------        GWAVE1A.277    
CL    4. SCATTER ACCELERATIONS TO FULL AREA, INTERPOLATE TO UV-GRID        GWAVE1A.278    
CL       AND UPDATE WINDS                                                  GWAVE1A.279    
C------------------------------------------------------------------        GWAVE1A.280    
                                                                           GWAVE1A.281    
      DO I=1,P_FIELD                                                       GWAVE1A.282    
       DO IW=1,4                                                           GWAVE1A.283    
        WORK(I,IW) = 0.0                                                   GWAVE1A.284    
       END DO                                                              GWAVE1A.285    
      END DO                                                               GWAVE1A.286    
                                                                           GWAVE1A.287    
      DO K=1,LEVELS                                                        GWAVE1A.288    
                                                                           GWAVE1A.289    
! Fujitsu vectorization directive                                          GRB0F405.317    
!OCL NOVREC                                                                GRB0F405.318    
CDIR$ IVDEP                                                                GWAVE1A.290    
*IF -DEF,SCMA                                                              AJC1F405.286    
        DO I=1,LAND_POINTS                                                 GWAVE1A.291    
          WORK(LAND_INDEX(I),1)= DU_DT(I,K)                                GWAVE1A.292    
          WORK(LAND_INDEX(I),2)= DV_DT(I,K)                                GWAVE1A.293    
        END DO                                                             GWAVE1A.294    
                                                                           GWAVE1A.295    
        CALL P_TO_UV(WORK(1,1),WORK(1,3),P_POINTS,U_POINTS,                GWAVE1A.296    
     *               ROW_LENGTH,ROWS_P)                                    GWAVE1A.297    
        CALL P_TO_UV(WORK(1,2),WORK(1,4),P_POINTS,U_POINTS,                GWAVE1A.298    
     *               ROW_LENGTH,ROWS_P)                                    GWAVE1A.299    
                                                                           GWAVE1A.300    
        DO I=1,U_POINTS                                                    GWAVE1A.301    
          U(START_U+I,K) = U(START_U+I,K) + TIMESTEP*WORK(I,3)             GWAVE1A.302    
          V(START_U+I,K) = V(START_U+I,K) + TIMESTEP*WORK(I,4)             GWAVE1A.303    
        END DO                                                             GWAVE1A.304    
                                                                           GWAVE1A.305    
*ELSE                                                                      AJC1F405.287    
        DO I=1,U_POINTS                                                    AJC1F405.288    
          U(START_U+I,K) = U(START_U+I,K) + TIMESTEP*DU_DT(I,K)            AJC1F405.289    
          V(START_U+I,K) = V(START_U+I,K) + TIMESTEP*DV_DT(I,K)            AJC1F405.290    
        END DO                                                             AJC1F405.291    
*ENDIF                                                                     AJC1F405.292    
      END DO                                                               GWAVE1A.306    
                                                                           GWAVE1A.307    
      IF (STRESS_UD_ON .OR. STRESS_VD_ON) THEN                             DR251093.60     
                                                                           GWAVE1A.309    
        KOUT_U=0                                                           DR251093.61     
        KOUT_V=0                                                           DR251093.62     
                                                                           GWAVE1A.313    
        DO K=START_LEVEL,LEVELS+1                                          DR251093.63     
                                                                           DR251093.64     
           IF (STRESS_UD_ON) THEN                                          DR251093.65     
             IF (U_LIST(K)) THEN                                           DR251093.66     
               KOUT_U=KOUT_U+1                                             DR251093.67     
! Fujitsu vectorization directive                                          GRB0F405.319    
!OCL NOVREC                                                                GRB0F405.320    
CDIR$ IVDEP                                                                GWAVE1A.317    
*IF -DEF,SCMA                                                              AJC1F405.293    
               DO I=1,LAND_POINTS                                          DR251093.68     
                 WORK(LAND_INDEX(I),1)=STRESS_UD_LAND(I,K)                 DR251093.69     
               END DO                                                      DR251093.70     
               CALL P_TO_UV (WORK(1,1),STRESS_UD(START_U1+1,KOUT_U),       ASW1F405.17     
     *                       P_POINTS,U_POINTS,ROW_LENGTH,ROWS_P)          DR251093.72     
*ELSE                                                                      AJC1F405.294    
               DO I=1,LAND_POINTS                                          AJC1F405.295    
                 STRESS_UD(START_U+LAND_INDEX(I),KOUT_U)=                  AJC1F405.296    
     &             STRESS_UD_LAND(I,K)                                     AJC1F405.297    
               END DO                                                      AJC1F405.298    
*ENDIF                                                                     AJC1F405.299    
             ENDIF                                                         DR251093.73     
           ENDIF                                                           DR251093.74     
                                                                           DR251093.75     
           IF (STRESS_VD_ON) THEN                                          DR251093.76     
             IF (V_LIST(K)) THEN                                           DR251093.77     
               KOUT_V=KOUT_V+1                                             DR251093.78     
! Fujitsu vectorization directive                                          GRB0F405.321    
!OCL NOVREC                                                                GRB0F405.322    
CDIR$ IVDEP                                                                GWAVE1A.328    
*IF -DEF,SCMA                                                              AJC1F405.300    
               DO I=1,LAND_POINTS                                          DR251093.79     
                 WORK(LAND_INDEX(I),2)=STRESS_VD_LAND(I,K)                 DR251093.80     
               END DO                                                      DR251093.81     
               CALL P_TO_UV (WORK(1,2),STRESS_VD(START_U1+1,KOUT_V),       ASW1F405.18     
     *                       P_POINTS,U_POINTS,ROW_LENGTH,ROWS_P)          DR251093.83     
*ELSE                                                                      AJC1F405.301    
               DO I=1,LAND_POINTS                                          AJC1F405.302    
                 STRESS_VD(START_U+LAND_INDEX(I),KOUT_V)=                  AJC1F405.303    
     &             STRESS_VD_LAND(I,K)                                     AJC1F405.304    
               END DO                                                      AJC1F405.305    
*ENDIF                                                                     AJC1F405.306    
             ENDIF                                                         DR251093.84     
           ENDIF                                                           DR251093.85     
                                                                           GWAVE1A.337    
        ENDDO                                                              DR251093.86     
                                                                           DR251093.87     
      ENDIF                                                                DR251093.88     
                                                                           GWAVE1A.339    
      IRET=0                                                               GWAVE1A.340    
                                                                           GWAVE1A.341    
      RETURN                                                               GWAVE1A.342    
      END                                                                  GWAVE1A.343    
                                                                           GWAVE1A.344    
*ENDIF                                                                     GWAVE1A.345