*IF DEF,CONTROL,AND,DEF,ATMOS                                              GWAV_CT1.2      
C ******************************COPYRIGHT******************************    GTS2F400.3565   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.3566   
C                                                                          GTS2F400.3567   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.3568   
C restrictions as set forth in the contract.                               GTS2F400.3569   
C                                                                          GTS2F400.3570   
C                Meteorological Office                                     GTS2F400.3571   
C                London Road                                               GTS2F400.3572   
C                BRACKNELL                                                 GTS2F400.3573   
C                Berkshire UK                                              GTS2F400.3574   
C                RG12 2SZ                                                  GTS2F400.3575   
C                                                                          GTS2F400.3576   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.3577   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.3578   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.3579   
C Modelling at the above address.                                          GTS2F400.3580   
C ******************************COPYRIGHT******************************    GTS2F400.3581   
C                                                                          GTS2F400.3582   
CLL Subroutine GWAV_CTL -----------------------------------------------    GWAV_CT1.3      
CLL                                                                        GWAV_CT1.4      
CLL Purpose: Calls GWAVE to add gravity wave drag increments.              GWAV_CT1.5      
CLL                                                                        GWAV_CT1.6      
CLL Level 2 control routine                                                GWAV_CT1.7      
CLL Version for CRAY YMP                                                   GWAV_CT1.8      
CLL                                                                        GWAV_CT1.9      
CLL  Model            Modification history from model version 3.0:         GWAV_CT1.10     
CLL version  Date                                                          GWAV_CT1.11     
CLL  3.1   8/02/93 : added comdeck CHSUNITS to define UNITS for            RS030293.203    
CLL                  comdeck CCONTROL                                      RS030293.204    
CLL        14/02/93  Add diagnostics for orographic gradients xx,xy,yy     CW140293.2      
CLL                        C Wilson                                        CW140293.3      
CLL  3.1   12/02/93  Correct offset for OROG_SD                            CW120293.1      
CLL                        C Wilson                                        CW120293.2      
CLL   3.2    13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for          TS150793.63     
CLL                   portability.  Author Tracey Smith.                   TS150793.64     
CLL  3.2  13/04/93  Dynamic allocation of main arrays. R T H Barnes.       @DYALLOC.1021   
CLL  3.3  25/10/93  Removal of DIAG06 directive. New arguments for         DR251093.1      
CLL                 G_WAVE to dimension diagnostic arrays. D. Robinson.    DR251093.2      
CLL  3.4  09/06/94  Arguments LFROUDE, LGWLINP passed to s/r G_WAVE        GSS1F304.50     
CLL                                                      S.J.Swarbrick     GSS1F304.51     
CLL  3.4  22/11/94  Implement interfacing routine to allow calls to        AMJ1F304.12     
CLL                 multiple versions with different argument lists.       AMJ1F304.13     
CLL                                                    R.T.H.Barnes.       AMJ1F304.14     
CLL  3.5  28/03/95  Sub model changes : Remove run time constants          ADR1F305.78     
CLL                 from Atmos dump headers. D. Robinson                   ADR1F305.79     
!     3.5    9/5/95   MPP code: Change updateable area. Added fix for      APB1F305.304    
!                               case where LAND_POINTS=0    P.Burton       APB1F305.305    
CLL  3.5  05/06/95  Chgs to SI & STINDEX arrays.  RTHBarnes                GRB4F305.141    
!    4.1  28/05/96  MPP Changes. D. Robinson.                              APBEF401.2      
!    4.2  18/10/96  Added swapbounds for U,V     P.Burton                  APB1F402.1      
!LL  4.3  13/02/97  Stop main code being called if no land points          GPB3F403.88     
!LL                                                 P.Burton               GPB3F403.89     
!LL   4.3  12/02/97  Added PPX arguments to EXTDIAG   P.Burton             GPB1F403.1500   
!    4.3   7/03/97  KAY_LEE passed in from namelist. S.Webster             ASW1F403.18     
CLL                                                                        GWAV_CT1.12     
CLL Programming standard : unified model documentation paper No 3          GWAV_CT1.13     
CLL                                                                        GWAV_CT1.14     
CLL System components covered : 22                                         GWAV_CT1.15     
CLL                                                                        GWAV_CT1.16     
CLL System task : P0                                                       GWAV_CT1.17     
CLL                                                                        GWAV_CT1.18     
CLL Documentation: Unified Model documentation paper P0                    GWAV_CT1.19     
CLL                Version 11 dated 26/11/90                               GWAV_CT1.20     
CLLEND -----------------------------------------------------------------   GWAV_CT1.21     
C*L Arguments                                                              GWAV_CT1.22     
                                                                           GWAV_CT1.23     

      SUBROUTINE GWAV_CTL(                                                  1,24@DYALLOC.1022   
     &                    P_FIELDDA,P_LEVELSDA,INT6,                       @DYALLOC.1023   
*CALL ARGSIZE                                                              @DYALLOC.1024   
*CALL ARGD1                                                                @DYALLOC.1025   
*CALL ARGDUMA                                                              @DYALLOC.1026   
*CALL ARGDUMO                                                              @DYALLOC.1027   
*CALL ARGDUMW                                                              GKR1F401.203    
*CALL ARGSTS                                                               @DYALLOC.1028   
*CALL ARGPTRA                                                              @DYALLOC.1029   
*CALL ARGPTRO                                                              @DYALLOC.1030   
*CALL ARGCONA                                                              @DYALLOC.1031   
*CALL ARGPPX                                                               GKR0F305.927    
*CALL ARGFLDPT                                                             APBEF401.3      
     &                    ICODE,CMESSAGE)                                  @DYALLOC.1032   
                                                                           GWAV_CT1.25     
      IMPLICIT NONE                                                        GWAV_CT1.26     
                                                                           @DYALLOC.1033   
*CALL CMAXSIZE                                                             @DYALLOC.1034   
*CALL CSUBMODL                                                             GSS1F305.927    
*CALL TYPSIZE                                                              @DYALLOC.1035   
*CALL TYPD1                                                                @DYALLOC.1036   
*CALL TYPDUMA                                                              @DYALLOC.1037   
*CALL TYPDUMO                                                              @DYALLOC.1038   
*CALL TYPDUMW                                                              GKR1F401.204    
*CALL TYPSTS                                                               @DYALLOC.1039   
*CALL TYPPTRA                                                              @DYALLOC.1040   
*CALL TYPPTRO                                                              @DYALLOC.1041   
*CALL TYPCONA                                                              @DYALLOC.1042   
*CALL PPXLOOK                                                              GKR0F305.928    
*CALL TYPFLDPT                                                             APBEF401.4      
                                                                           GWAV_CT1.27     
      INTEGER                                                              GWAV_CT1.28     
     &       INT6,        ! Dummy variable for STASH_MAXLEN(6)             GWAV_CT1.29     
     &       ICODE,       ! Return code : 0 Normal Exit                    GWAV_CT1.30     
C                         !             : >0 Error                         GWAV_CT1.31     
     &       P_FIELDDA,   ! Extra copy of P_FIELD for dynamic alloc        @DYALLOC.1043   
     &       P_LEVELSDA   ! and P_LEVELS                                   @DYALLOC.1044   
                                                                           GWAV_CT1.33     
      CHARACTER*80                                                         TS150793.65     
     &       CMESSAGE     ! Error message if return code >0                GWAV_CT1.35     
                                                                           GWAV_CT1.36     
*IF DEF,MPP                                                                APB1F305.306    
! Parameters and Common blocks                                             APB1F305.307    
*CALL PARVARS                                                              APB1F305.308    
*ENDIF                                                                     APB1F305.309    
*CALL CHSUNITS                                                             RS030293.205    
*CALL CCONTROL                                                             GWAV_CT1.38     
*CALL CRUNTIMC                                                             ADR1F305.80     
*CALL CTIME                                                                ADR1F305.81     
                                                                           @DYALLOC.1045   
CL Subroutines called                                                      GWAV_CT1.43     
                                                                           GWAV_CT1.44     
      EXTERNAL                                                             GWAV_CT1.45     
     &       GWAV_INTCTL,TIMER,STASH,                                      AMJ1F304.15     
     &       EXTDIAG,SET_LEVELS_LIST,                                      DR251093.3      
     &       FROM_LAND_POINTS                                              GWAV_CT1.54     
CL Dynamically allocated area for stash processing                         GWAV_CT1.56     
                                                                           GWAV_CT1.57     
      REAL                                                                 GWAV_CT1.58     
     &      STASHWORK(INT6)                                                GWAV_CT1.59     
                                                                           GWAV_CT1.60     
CL Other work areas                                                        GWAV_CT1.61     
                                                                           GWAV_CT1.62     
      INTEGER                                                              GWAV_CT1.63     
     &       RELATIVE_LAND_LIST(P_FIELDDA)                                 @DYALLOC.1046   
                                                                           GWAV_CT1.65     
C Local variables                                                          GWAV_CT1.66     
                                                                           GWAV_CT1.67     
      INTEGER                                                              GWAV_CT1.68     
     &      ROWS                                                           AMJ1F304.16     
     &      ,I                                                             AMJ1F304.17     
     &      ,J                                                             AMJ1F304.18     
     &      ,JS                                                            AMJ1F304.19     
     &      ,JSL     ! offset for first point for land only                AMJ1F304.20     
     &      ,FIRST_POINT                                                   AMJ1F304.21     
     &      ,LAST_POINT                                                    AMJ1F304.22     
     &      ,LAND_POINTS                                                   AMJ1F304.23     
     &      ,POINTS_STRESS_UD  ! ) No of land points in diagnostic         AMJ1F304.24     
     &      ,POINTS_STRESS_VD  ! ) arrays for GW stress - u and v          AMJ1F304.25     
     &      ,POINTS_DU_DT_SATN ! ) No of land points in diagnostic         AMJ1F304.26     
     &      ,POINTS_DV_DT_SATN ! ) arrays for GW satn - du and dv          AMJ1F304.27     
     &      ,POINTS_DU_DT_JUMP ! ) No of land points in diagnostic         AMJ1F304.28     
     &      ,POINTS_DV_DT_JUMP ! ) arrays for GW jump - du and dv          AMJ1F304.29     
     &      ,POINTS_DU_DT_LEE  ! ) No of land points in diagnostic         AMJ1F304.30     
     &      ,POINTS_DV_DT_LEE  ! ) arrays for GW lee  - du and dv          AMJ1F304.31     
     &      ,POINTS_TRANS_D    ! ) No of land point for trans coeff        AMJ1F304.32     
     &      ,POINTS                                                        AMJ1F304.33     
     &      ,LEN_STRESS_UD    ! ) Dimensions of arrays in STASHWORK        DR251093.7      
     &      ,LEN_STRESS_VD    ! ) for GW stress - u and v                  DR251093.8      
     &      ,LEN_DU_DT_SATN   ! ) Dimensions of arrays in STASHWORK        AMJ1F304.34     
     &      ,LEN_DV_DT_SATN   ! ) for GW satn - du and dv                  AMJ1F304.35     
     &      ,LEN_DU_DT_JUMP   ! ) Dimensions of arrays in STASHWORK        AMJ1F304.36     
     &      ,LEN_DV_DT_JUMP   ! ) for GW satn - du and dv                  AMJ1F304.37     
     &      ,LEN_DU_DT_LEE    ! ) Dimensions of arrays in STASHWORK        AMJ1F304.38     
     &      ,LEN_DV_DT_LEE    ! ) for GW satn - du and dv                  AMJ1F304.39     
     &      ,LEN_TRANS_D      ! Dimension of trans array in STASHWORK      AMJ1F304.40     
     &      ,IM_IDENT   ! internal model identifier                        GRB4F305.142    
     &      ,IM_INDEX   ! internal model index for STASH arrays            GRB4F305.143    
                                                                           GWAV_CT1.77     
      LOGICAL                                                              GWAV_CT1.78     
     &       LIST1(P_LEVELSDA+1) ! Lists of levels required for            AMJ1F304.41     
     &      ,LIST2(P_LEVELSDA+1) ! diagnostic output STRESS                AMJ1F304.42     
     &      ,LIST3(P_LEVELSDA)   ! Lists of levels required for            AMJ1F304.43     
     &      ,LIST4(P_LEVELSDA)   ! diagnostic output DU_DT_SATN            AMJ1F304.44     
     &      ,LIST5(P_LEVELSDA)   ! Lists of levels required for            AMJ1F304.45     
     &      ,LIST6(P_LEVELSDA)   ! diagnostic output DU_DT_JUMP            AMJ1F304.46     
     &      ,LIST7(P_LEVELSDA)   ! Lists of levels required for            AMJ1F304.47     
     &      ,LIST8(P_LEVELSDA)   ! diagnostic output DU_DT_LEE             AMJ1F304.48     
                                                                           AMJ1F304.49     
C -----------------------------------------------------                    GWAV_CT1.81     
                                                                           GWAV_CT1.82     
CL--- SECTION 6 --- GRAVITY WAVE DRAG -----------------                    GWAV_CT1.83     
CL 6.0 Initialisation                                                      GWAV_CT1.84     
                                                                           GRB4F305.144    
C  Set up internal model identifier and STASH index                        GRB4F305.145    
      im_ident = atmos_im                                                  GRB4F305.146    
      im_index = internal_model_index(im_ident)                            GRB4F305.147    
                                                                           GWAV_CT1.85     
!  Set grid pointers                                                       APBEF401.5      
      FIRST_POINT = START_POINT_INC_HALO                                   APBEF401.6      
      LAST_POINT  = END_P_POINT_INC_HALO                                   APBEF401.7      
      POINTS      = LAST_POINT-FIRST_POINT+1                               APBEF401.8      
      ROWS        = POINTS/ROW_LENGTH                                      APBEF401.9      
      JS          = FIRST_POINT-1                                          APBEF401.10     
                                                                           APBEF401.11     
*IF DEF,MPP                                                                APBEF401.12     
      CALL SWAPBOUNDS(D1(JTHETA(1)),ROW_LENGTH,tot_P_ROWS,                 APBEF401.13     
     &                EW_Halo,NS_Halo,P_LEVELS)                            APBEF401.14     
      CALL SWAPBOUNDS(D1(JQ(1)),ROW_LENGTH,tot_P_ROWS,                     APBEF401.15     
     &                EW_Halo,NS_Halo,Q_LEVELS)                            APBEF401.16     
*ENDIF                                                                     APBEF401.17     
                                                                           GWAV_CT1.91     
CL        Set list of land points relative to first point processed        GWAV_CT1.92     
CL        and omit points after last point requested.                      GWAV_CT1.93     
                                                                           GWAV_CT1.94     
      JSL=1  ! incase LAND_FIELD=0                                         GPB3F403.90     
      DO I=1,LAND_FIELD                                                    GWAV_CT1.95     
        JSL=I                                                              CW120293.4      
        IF(LAND_LIST(I).GE.FIRST_POINT) GO TO 601                          GWAV_CT1.97     
      ENDDO                                                                GWAV_CT1.98     
                                                                           GWAV_CT1.99     
  601 LAND_POINTS=LAND_FIELD-JSL+1                                         CW120293.5      
C set JSL as offset for first point in LAND_LIST being processed           CW120293.6      
      JSL=JSL-1                                                            CW120293.7      
      J=1    ! incase LAND_POINTS=0                                        APB1F305.328    
      DO I=1,LAND_POINTS                                                   GWAV_CT1.101    
        J=I                                                                GWAV_CT1.102    
        RELATIVE_LAND_LIST(I)=LAND_LIST(I+JSL)-JS                          CW120293.8      
        IF(RELATIVE_LAND_LIST(I).GT.POINTS) GO TO 602                      GWAV_CT1.104    
        J=I+1                                                              GWAV_CT1.105    
      ENDDO                                                                GWAV_CT1.106    
  602 LAND_POINTS=J-1                                                      GWAV_CT1.107    
                                                                           GWAV_CT1.108    
C     Set diagnostic array dimensions to 1.                                DR251093.9      
      POINTS_STRESS_UD = 1                                                 AMJ1F304.50     
      POINTS_STRESS_VD = 1                                                 AMJ1F304.51     
      LEN_STRESS_UD  = 1                                                   DR251093.12     
      LEN_STRESS_VD  = 1                                                   DR251093.13     
      POINTS_DU_DT_SATN = 1                                                AMJ1F304.52     
      POINTS_DV_DT_SATN = 1                                                AMJ1F304.53     
      LEN_DU_DT_SATN  = 1                                                  AMJ1F304.54     
      LEN_DV_DT_SATN  = 1                                                  AMJ1F304.55     
      POINTS_DU_DT_JUMP = 1                                                AMJ1F304.56     
      POINTS_DV_DT_JUMP = 1                                                AMJ1F304.57     
      LEN_DU_DT_JUMP  = 1                                                  AMJ1F304.58     
      LEN_DV_DT_JUMP  = 1                                                  AMJ1F304.59     
      POINTS_DU_DT_LEE  = 1                                                AMJ1F304.60     
      POINTS_DV_DT_LEE  = 1                                                AMJ1F304.61     
      LEN_DU_DT_LEE   = 1                                                  AMJ1F304.62     
      LEN_DV_DT_LEE   = 1                                                  AMJ1F304.63     
      POINTS_TRANS_D  = 1                                                  AMJ1F304.64     
      LEN_TRANS_D     = 1                                                  AMJ1F304.65     
                                                                           DR251093.14     
      IF (SF(0,6)) THEN  !  Any diagnostics from section 6                 DR251093.15     
                                                                           GWAV_CT1.110    
CL Set STASHWORK array to zero at all points                               GWAV_CT1.111    
                                                                           GWAV_CT1.112    
      DO I= 1,INT6                                                         GWAV_CT1.113    
        STASHWORK(I)=0                                                     GWAV_CT1.114    
      END DO                                                               GWAV_CT1.115    
                                                                           GWAV_CT1.116    
CL Set levels lists for diagnostics                                        GWAV_CT1.117    
                                                                           GWAV_CT1.118    
      IF(SF(201,6)) THEN                                                   AMJ1F304.66     
        POINTS_STRESS_UD = LAND_POINTS                                     AMJ1F304.67     
        LEN_STRESS_UD  = U_FIELD                                           AMJ1F304.68     
        CALL SET_LEVELS_LIST(P_LEVELS+1,LEN_STLIST,STLIST(1,STINDEX        GWAV_CT1.120    
     &       (1,201,6,im_index)),LIST1,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.148    
     &       ICODE,CMESSAGE)                                               GRB4F305.149    
        IF( ICODE.GT.0) RETURN                                             GWAV_CT1.123    
      END IF                                                               GWAV_CT1.124    
                                                                           GWAV_CT1.125    
      IF(SF(202,6)) THEN                                                   AMJ1F304.69     
        POINTS_STRESS_VD = LAND_POINTS                                     AMJ1F304.70     
        LEN_STRESS_VD  = U_FIELD                                           AMJ1F304.71     
        CALL SET_LEVELS_LIST(P_LEVELS+1,LEN_STLIST,STLIST(1,STINDEX        GWAV_CT1.127    
     &       (1,202,6,im_index)),LIST2,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.150    
     &       ICODE,CMESSAGE)                                               GRB4F305.151    
        IF( ICODE.GT.0) RETURN                                             GWAV_CT1.130    
      END IF                                                               GWAV_CT1.131    
                                                                           GWAV_CT1.132    
      IF(SF(207,6)) THEN                                                   AMJ1F304.72     
        POINTS_DU_DT_SATN = LAND_POINTS                                    AMJ1F304.73     
        LEN_DU_DT_SATN  = U_FIELD                                          AMJ1F304.74     
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.75     
     &       (1,207,6,im_index)),LIST3,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.152    
     &       ICODE,CMESSAGE)                                               GRB4F305.153    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.78     
      END IF                                                               AMJ1F304.79     
                                                                           AMJ1F304.80     
      IF(SF(208,6)) THEN                                                   AMJ1F304.81     
        POINTS_DV_DT_SATN = LAND_POINTS                                    AMJ1F304.82     
        LEN_DV_DT_SATN  = U_FIELD                                          AMJ1F304.83     
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.84     
     &       (1,208,6,im_index)),LIST4,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.154    
     &       ICODE,CMESSAGE)                                               GRB4F305.155    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.87     
      END IF                                                               AMJ1F304.88     
                                                                           AMJ1F304.89     
      IF(SF(209,6)) THEN                                                   AMJ1F304.90     
        POINTS_DU_DT_JUMP = LAND_POINTS                                    AMJ1F304.91     
        LEN_DU_DT_JUMP  = U_FIELD                                          AMJ1F304.92     
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.93     
     &       (1,209,6,im_index)),LIST5,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.156    
     &       ICODE,CMESSAGE)                                               GRB4F305.157    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.96     
      END IF                                                               AMJ1F304.97     
                                                                           AMJ1F304.98     
      IF(SF(210,6)) THEN                                                   AMJ1F304.99     
        POINTS_DV_DT_JUMP = LAND_POINTS                                    AMJ1F304.100    
        LEN_DV_DT_JUMP  = U_FIELD                                          AMJ1F304.101    
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.102    
     &       (1,210,6,im_index)),LIST6,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.158    
     &       ICODE,CMESSAGE)                                               GRB4F305.159    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.105    
      END IF                                                               AMJ1F304.106    
                                                                           AMJ1F304.107    
      IF(SF(211,6)) THEN                                                   AMJ1F304.108    
        POINTS_DU_DT_LEE  = LAND_POINTS                                    AMJ1F304.109    
        LEN_DU_DT_LEE   = U_FIELD                                          AMJ1F304.110    
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.111    
     &       (1,211,6,im_index)),LIST7,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.160    
     &       ICODE,CMESSAGE)                                               GRB4F305.161    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.114    
      END IF                                                               AMJ1F304.115    
                                                                           AMJ1F304.116    
      IF(SF(212,6)) THEN                                                   AMJ1F304.117    
        POINTS_DV_DT_LEE  = LAND_POINTS                                    AMJ1F304.118    
        LEN_DV_DT_LEE   = U_FIELD                                          AMJ1F304.119    
        CALL SET_LEVELS_LIST(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX          AMJ1F304.120    
     &       (1,212,6,im_index)),LIST8,STASH_LEVELS,NUM_STASH_LEVELS+1,    GRB4F305.162    
     &       ICODE,CMESSAGE)                                               GRB4F305.163    
        IF( ICODE.GT.0) RETURN                                             AMJ1F304.123    
      END IF                                                               AMJ1F304.124    
                                                                           AMJ1F304.125    
      IF(SF(213,6)) THEN                                                   AMJ1F304.126    
        POINTS_TRANS_D  = LAND_POINTS                                      AMJ1F304.127    
        LEN_TRANS_D   = U_FIELD                                            AMJ1F304.128    
      END IF                                                               AMJ1F304.129    
                                                                           AMJ1F304.130    
                                                                           AMJ1F304.131    
      ENDIF     ! Any Diagnostics                                          AMJ1F304.132    
                                                                           GWAV_CT1.134    
CL 6.2 Call G_WAVE to add and calculate gravity wave  drag increments      GWAV_CT1.135    
                                                                           GWAV_CT1.136    
      IF(LTIMER) THEN                                                      GWAV_CT1.137    
        CALL TIMER('GWAVE   ',3)                                           GWAV_CT1.138    
      END IF                                                               GWAV_CT1.139    
                                                                           GWAV_CT1.140    
*IF DEF,MPP                                                                APB1F402.2      
      CALL SWAPBOUNDS(D1(JU(1)),ROW_LENGTH,tot_U_ROWS,                     APB1F402.3      
     &                EW_Halo,NS_Halo,P_LEVELS)                            APB1F402.4      
      CALL SWAPBOUNDS(D1(JV(1)),ROW_LENGTH,tot_U_ROWS,                     APB1F402.5      
     &                EW_Halo,NS_Halo,P_LEVELS)                            APB1F402.6      
*ENDIF                                                                     APB1F402.7      
      CALL GWAV_INTCTL(                                                    AMJ1F304.133    
C Primary data                                                             GWAV_CT1.142    
     &    D1(JPSTAR+JS),D1(JP_EXNER(1)+JS),D1(JTHETA(1)+JS),               GWAV_CT1.143    
     &    D1(JQ(1)+JS),D1(JU(1)+JS-ROW_LENGTH),                            AMJ1F304.134    
     &    D1(JV(1)+JS-ROW_LENGTH),                                         AMJ1F304.135    
C Size and control variables                                               GWAV_CT1.145    
     &    P_FIELD,U_FIELD,ROWS,ROW_LENGTH,                                 GWAV_CT1.146    
     &    START_LEVEL_GWDRAG,P_LEVELS,Q_LEVELS,                            ADR1F305.82     
*CALL ARGFLDPT                                                             APBEF401.18     
C Other data                                                               GWAV_CT1.148    
     &    A_LEVDEPC(JAK),A_LEVDEPC(JBK),                                   GWAV_CT1.149    
     &    AKH,BKH,A_LEVDEPC(JDELTA_AK),                                    GWAV_CT1.150    
     &    A_LEVDEPC(JDELTA_BK),D1(JOROG_SD+JSL),                           CW120293.9      
     &    D1(JOROG_GRAD_XX+JSL),D1(JOROG_GRAD_XY+JSL),                     AMJ1F304.137    
     &    D1(JOROG_GRAD_YY+JSL),                                           AMJ1F304.138    
     &    RELATIVE_LAND_LIST,LAND_POINTS,SECS_PER_STEPim(atmos_im),        ADR1F305.83     
     &    KAY_GWAVE,KAY_LEE_GWAVE                                          ASW1F403.19     
C Diagnostics                                                              DR251093.28     
     &   ,STASHWORK(SI(201,6,im_index)),LEN_STRESS_UD,SF(201,6)            GRB4F305.164    
     &   ,LIST1,POINTS_STRESS_UD                                           AMJ1F304.140    
     &   ,STASHWORK(SI(202,6,im_index)),LEN_STRESS_VD,SF(202,6)            GRB4F305.165    
     &   ,LIST2,POINTS_STRESS_VD                                           AMJ1F304.141    
     &   ,STASHWORK(SI(207,6,im_index)),LEN_DU_DT_SATN,SF(207,6)           GRB4F305.166    
     &   ,LIST3,POINTS_DU_DT_SATN                                          AMJ1F304.143    
     &   ,STASHWORK(SI(208,6,im_index)),LEN_DV_DT_SATN,SF(208,6)           GRB4F305.167    
     &   ,LIST4,POINTS_DV_DT_SATN                                          AMJ1F304.145    
     &   ,STASHWORK(SI(209,6,im_index)),LEN_DU_DT_JUMP,SF(209,6)           GRB4F305.168    
     &   ,LIST5,POINTS_DU_DT_JUMP                                          AMJ1F304.147    
     &   ,STASHWORK(SI(210,6,im_index)),LEN_DV_DT_JUMP,SF(210,6)           GRB4F305.169    
     &   ,LIST6,POINTS_DV_DT_JUMP                                          AMJ1F304.149    
     &   ,STASHWORK(SI(211,6,im_index)),LEN_DU_DT_LEE ,SF(211,6)           GRB4F305.170    
     &   ,LIST7,POINTS_DU_DT_LEE                                           AMJ1F304.151    
     &   ,STASHWORK(SI(212,6,im_index)),LEN_DV_DT_LEE ,SF(212,6)           GRB4F305.171    
     &   ,LIST8,POINTS_DV_DT_LEE                                           AMJ1F304.153    
     &   ,STASHWORK(SI(213,6,im_index)),LEN_TRANS_D ,SF(213,6)             GRB4F305.172    
     &   ,POINTS_TRANS_D                                                   AMJ1F304.155    
     &   ,ICODE                                                            GSS1F304.52     
C Logical switches                                                         GSS1F304.53     
     &   ,LFROUDE,LGWLINP)                                                 GSS1F304.54     
                                                                           GWAV_CT1.163    
      IF(LTIMER) THEN                                                      GWAV_CT1.164    
        CALL TIMER('GWAVE   ',4)                                           GWAV_CT1.165    
      END IF                                                               GWAV_CT1.166    
                                                                           GWAV_CT1.167    
      IF(ICODE.GT.0) THEN                                                  GWAV_CT1.168    
        CMESSAGE='GWAV_CTL:Error in G_WAVE'                                GWAV_CT1.169    
        RETURN                                                             GWAV_CT1.170    
      END IF                                                               GWAV_CT1.171    
                                                                           GWAV_CT1.172    
      IF (SF(0,6)) THEN                                                    DR251093.33     
                                                                           GWAV_CT1.174    
Cl 6.3 Diagnostics processing                                              GWAV_CT1.175    
CL Extend orographic standard deviation to full field.                     GWAV_CT1.176    
                                                                           GWAV_CT1.177    
       IF (SF(203,6)) THEN    !   Orographic Standard Deviation            DR251093.34     
         CALL FROM_LAND_POINTS(STASHWORK(SI(203,6,im_index))               GRB4F305.173    
     &       ,D1(JOROG_SD),D1(JLAND),                                      @DYALLOC.1049   
     &        P_FIELD,LAND_FIELD)                                          CW140293.4      
       END IF                                                              DR251093.35     
                                                                           CW140293.6      
CL Extend orographic gradients xx,xy,yy                                    CW140293.7      
                                                                           CW140293.8      
       IF (SF(204,6)) THEN    !    Orographic gradient XX                  DR251093.36     
         CALL FROM_LAND_POINTS(STASHWORK(SI(204,6,im_index))               GRB4F305.174    
     &       ,D1(JOROG_GRAD_XX),D1(JLAND),                                 @DYALLOC.1050   
     &        P_FIELD,LAND_FIELD)                                          CW140293.12     
       END IF                                                              DR251093.37     
                                                                           CW140293.14     
       IF (SF(205,6)) THEN    !    Orographic gradient XY                  DR251093.38     
         CALL FROM_LAND_POINTS(STASHWORK(SI(205,6,im_index))               GRB4F305.175    
     &       ,D1(JOROG_GRAD_XY),D1(JLAND),                                 @DYALLOC.1051   
     &        P_FIELD,LAND_FIELD)                                          CW140293.18     
       END IF                                                              DR251093.39     
                                                                           CW140293.20     
       IF (SF(206,6)) THEN    !    Orographic gradient YY                  DR251093.40     
         CALL FROM_LAND_POINTS(STASHWORK(SI(206,6,im_index))               GRB4F305.176    
     &       ,D1(JOROG_GRAD_YY),D1(JLAND),                                 @DYALLOC.1052   
     &        P_FIELD,LAND_FIELD)                                          GWAV_CT1.181    
       END IF                                                              DR251093.41     
                                                                           GWAV_CT1.183    
CL Extend diagnostics to full area for STASH processing                    GWAV_CT1.184    
                                                                           GWAV_CT1.185    
      CALL EXTDIAG(STASHWORK,SI(1,6,im_index),SF(1,6),201,202,             GRB4F305.177    
     &     INT6,ROW_LENGTH,                                                AMJ1F304.156    
     &     STLIST,LEN_STLIST,STINDEX(1,1,6,im_index),2,STASH_LEVELS,       GRB4F305.178    
     &     NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS,                        AMJ1F304.158    
     &     NUM_STASH_PSEUDO,                                               GPB1F403.1501   
     &     im_ident,6,                                                     GPB1F403.1502   
*CALL ARGPPX                                                               GPB1F403.1503   
     &     ICODE, CMESSAGE)                                                GPB1F403.1504   
                                                                           AMJ1F304.160    
      IF(ICODE.GT.0) RETURN                                                AMJ1F304.161    
                                                                           AMJ1F304.162    
      CALL EXTDIAG(STASHWORK,SI(1,6,im_index),SF(1,6),207,213,             GRB4F305.179    
     &     INT6,ROW_LENGTH,                                                GWAV_CT1.187    
     &     STLIST,LEN_STLIST,STINDEX(1,1,6,im_index),2,STASH_LEVELS,       GRB4F305.180    
     &     NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS,                        GWAV_CT1.189    
     &     NUM_STASH_PSEUDO,                                               GPB1F403.1505   
     &     im_ident,6,                                                     GPB1F403.1506   
*CALL ARGPPX                                                               GPB1F403.1507   
     &     ICODE, CMESSAGE)                                                GPB1F403.1508   
                                                                           GWAV_CT1.191    
      IF(ICODE.GT.0) RETURN                                                GWAV_CT1.192    
                                                                           GWAV_CT1.193    
CL Call STASH to process output                                            GWAV_CT1.196    
                                                                           GWAV_CT1.197    
      IF(LTIMER) THEN                                                      GWAV_CT1.198    
        CALL TIMER('STASH   ',3)                                           GWAV_CT1.199    
      END IF                                                               GWAV_CT1.200    
                                                                           GWAV_CT1.201    
      CALL STASH(a_sm,a_im,6,STASHWORK,                                    GKR0F305.929    
*CALL ARGSIZE                                                              @DYALLOC.1054   
*CALL ARGD1                                                                @DYALLOC.1055   
*CALL ARGDUMA                                                              @DYALLOC.1056   
*CALL ARGDUMO                                                              @DYALLOC.1057   
*CALL ARGDUMW                                                              GKR1F401.205    
*CALL ARGSTS                                                               @DYALLOC.1058   
*CALL ARGPPX                                                               GKR0F305.930    
     &           ICODE,CMESSAGE)                                           @DYALLOC.1062   
                                                                           GWAV_CT1.203    
      IF(LTIMER) THEN                                                      GWAV_CT1.204    
        CALL TIMER('STASH   ',4)                                           GWAV_CT1.205    
      END IF                                                               GWAV_CT1.206    
                                                                           GWAV_CT1.207    
      IF(ICODE.GT.0) RETURN                                                GWAV_CT1.208    
                                                                           GWAV_CT1.209    
      ENDIF  !  If any diagnostics this timestep                           DR251093.42     
                                                                           GWAV_CT1.210    
C -----------------------------------------------------                    GWAV_CT1.211    
      RETURN                                                               GWAV_CT1.212    
      END                                                                  GWAV_CT1.213    
*ENDIF                                                                     GWAV_CT1.214