*IF DEF,W08_1A                                                             GLW1F404.39     
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.15779  
C                                                                          GTS2F400.15780  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.15781  
C restrictions as set forth in the contract.                               GTS2F400.15782  
C                                                                          GTS2F400.15783  
C                Meteorological Office                                     GTS2F400.15784  
C                London Road                                               GTS2F400.15785  
C                BRACKNELL                                                 GTS2F400.15786  
C                Berkshire UK                                              GTS2F400.15787  
C                RG12 2SZ                                                  GTS2F400.15788  
C                                                                          GTS2F400.15789  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.15790  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.15791  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.15792  
C Modelling at the above address.                                          GTS2F400.15793  
C ******************************COPYRIGHT******************************    GTS2F400.15794  
C                                                                          GTS2F400.15795  
                                                                           MGRID.3      

      SUBROUTINE MGRID (IA1,                                                1,4MGRID.4      
*CALL ARGWVAL                                                              MGRID.5      
*CALL ARGWVMP                                                              MGRID.6      
*CALL ARGWVGD                                                              MGRID.7      
     & icode)                                                              MGRID.8      
                                                                           MGRID.9      
*CALL TYPWVMP                                                              MGRID.10     
*CALL TYPWVGD                                                              MGRID.11     
*CALL TYPWVAL                                                              MGRID.12     
                                                                           MGRID.13     
C ----------------------------------------------------------------------   MGRID.14     
C                                                                          MGRID.15     
C**** *MGRID* - ROUTINE TO ARRANGE WAMODEL GRID.                           MGRID.16     
C                                                                          MGRID.17     
C     H.GUNTHER            ECMWF       04/04/1990                          MGRID.18     
C                                                                          MGRID.19     
C*    PURPOSE.                                                             MGRID.20     
C     -------                                                              MGRID.21     
C                                                                          MGRID.22     
C       TO ARRANGE WAMODEL GRID FOR A GIVEN AREA AND COMPUTE VARIOUS       MGRID.23     
C       MODEL CONSTANTS.                                                   MGRID.24     
C                                                                          MGRID.25     
C**   INTERFACE.                                                           MGRID.26     
C     ----------                                                           MGRID.27     
C                                                                          MGRID.28     
C       *CALL* *MGRID (IA1)*                                               MGRID.29     
C          *IA1*     - TOPOGRAPHIC DATA OF PART                            MGRID.30     
C                                                                          MGRID.31     
C     METHOD.                                                              MGRID.32     
C     -------                                                              MGRID.33     
C                                                                          MGRID.34     
C       THE NUMBER OF SEA POINTS PER LATITUDE IS COUNTED AND MODEL         MGRID.35     
C       BLOCKS OF MAXIMUM LENGTH OF NIBLO ARE CONSTRUCTED.                 MGRID.36     
C                                                                          MGRID.37     
C     EXTERNALS.                                                           MGRID.38     
C     ----------                                                           MGRID.39     
C                                                                          MGRID.40     
C       *MBLOCK*    - SUB. TO GENERATE A BLOCK.                            MGRID.41     
C                                                                          MGRID.42     
C     REFERENCE.                                                           MGRID.43     
C     ----------                                                           MGRID.44     
C                                                                          MGRID.45     
C       NONE.                                                              MGRID.46     
C                                                                          MGRID.47     
C ----------------------------------------------------------------------   MGRID.48     
C                                                                          MGRID.49     
       logical ia1(ngx,ngy)   ! in land-sea mask land=T                    WVV0F401.28     
C                                                                          MGRID.51     
C ----------------------------------------------------------------------   MGRID.52     
C                                                                          MGRID.53     
      integer   IPP(NGY)                                                   MGRID.54     
C                                                                          MGRID.55     
C          *IPP*   INTEGER   NUMBER OF SEA POINTS PER LATITUDE.            MGRID.56     
C                                                                          MGRID.57     
C ----------------------------------------------------------------------   MGRID.58     
C                                                                          MGRID.59     
C*    1. COUNT NUMBER OF SEA POINTS PER LATITUDE.                          MGRID.60     
C        ----------------------------------------                          MGRID.61     
C                                                                          MGRID.62     
 1000 CONTINUE                                                             MGRID.63     
                                                                           MGRID.64     
      DO 1001 K=1,NY                                                       MGRID.65     
         IPP(K) = 0                                                        MGRID.66     
         DO 1002 I=1,NX                                                    MGRID.67     
            IF (.not.IA1(I,K)) THEN  ! a sea point                         WVV0F401.29     
              IPP(K) = IPP(K) + 1                                          MGRID.69     
            ENDIF                                                          MGRID.70     
 1002    CONTINUE                                                          MGRID.71     
 1001 CONTINUE                                                             MGRID.72     
                                                                           MGRID.73     
C ----------------------------------------------------------------------   MGRID.74     
C                                                                          MGRID.75     
C*    2. MAKE BLOCKS.                                                      MGRID.76     
C        ------------                                                      MGRID.77     
C                                                                          MGRID.78     
      IGL=0                                                                MGRID.79     
 2000 CONTINUE                                                             MGRID.80     
      IL = 0                                                               MGRID.81     
      KA = 1                                                               MGRID.82     
                                                                           MGRID.83     
      DO 2001 K = 1,NY                                                     MGRID.84     
         IL = IL + IPP(K)                                                  MGRID.85     
         IF (IL.GT.NIBLO) THEN                                             MGRID.86     
            KE = K-1                                                       MGRID.87     
                                                                           MGRID.88     
            CALL MBLOCK (KA, KE, IPP, ia1,                                 MGRID.89     
*CALL ARGWVAL                                                              MGRID.90     
*CALL ARGWVMP                                                              MGRID.91     
*CALL ARGWVGD                                                              MGRID.92     
     & icode)                                                              MGRID.93     
                                                                           MGRID.94     
         if(icode.ne.0) then                                               MGRID.95     
          WRITE(6,*)'calling abort in setupwv : mgrid'                     GIE0F403.408    
          WRITE(6,*)'icode ',icode,' returned from mblock'                 GIE0F403.409    
          call abort                                                       MGRID.98     
         endif                                                             MGRID.99     
                                                                           MGRID.100    
            KA = KE-1                                                      MGRID.101    
ccmh     the line following starts counting from line ke-1                 MGRID.102    
ccmh                                             (=ka for next block)      MGRID.103    
ccmh     line ke+1 is the current line k in the loop                       MGRID.104    
                                                                           MGRID.105    
            IL = IPP(KA)+IPP(KE)+IPP(KE+1)                                 MGRID.106    
         ENDIF                                                             MGRID.107    
 2001 CONTINUE                                                             MGRID.108    
                                                                           MGRID.109    
      CALL MBLOCK (KA, NY, IPP, ia1,                                       MGRID.110    
*CALL ARGWVAL                                                              MGRID.111    
*CALL ARGWVMP                                                              MGRID.112    
*CALL ARGWVGD                                                              MGRID.113    
     &icode)                                                               MGRID.114    
                                                                           MGRID.115    
      if(icode.ne.0) then                                                  MGRID.116    
       WRITE(6,*)'calling abort in setupwv : mgrid'                        GIE0F403.410    
       WRITE(6,*)'icode ',icode,' returned from mblock'                    GIE0F403.411    
       call abort                                                          MGRID.119    
      endif                                                                MGRID.120    
                                                                           MGRID.121    
      RETURN                                                               MGRID.122    
      END                                                                  MGRID.123    
*ENDIF                                                                     MGRID.124