*IF DEF,W08_1A                                                             GLW1F404.44     
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.15813  
C                                                                          GTS2F400.15814  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.15815  
C restrictions as set forth in the contract.                               GTS2F400.15816  
C                                                                          GTS2F400.15817  
C                Meteorological Office                                     GTS2F400.15818  
C                London Road                                               GTS2F400.15819  
C                BRACKNELL                                                 GTS2F400.15820  
C                Berkshire UK                                              GTS2F400.15821  
C                RG12 2SZ                                                  GTS2F400.15822  
C                                                                          GTS2F400.15823  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.15824  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.15825  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.15826  
C Modelling at the above address.                                          GTS2F400.15827  
C ******************************COPYRIGHT******************************    GTS2F400.15828  
C                                                                          GTS2F400.15829  
                                                                           MUBUF.3      

      SUBROUTINE MUBUF (IA1,                                                1MUBUF.4      
*CALL ARGWVAL                                                              MUBUF.5      
*CALL ARGWVGD                                                              MUBUF.6      
*CALL ARGWVMP                                                              MUBUF.7      
*CALL ARGWVKL                                                              MUBUF.8      
     & icode)                                                              MUBUF.9      
                                                                           MUBUF.10     
*CALL TYPWVGD                                                              MUBUF.11     
*CALL TYPWVMP                                                              MUBUF.12     
*CALL TYPWVKL                                                              MUBUF.13     
*CALL TYPWVAL                                                              MUBUF.14     
                                                                           MUBUF.15     
C ----------------------------------------------------------------------   MUBUF.16     
C                                                                          MUBUF.17     
ccmh                                                                       MUBUF.18     
cc revised for UKMO UMwave implementation to do all blocks.                MUBUF.19     
cc arrays klat klon given third dimension of nblo                          MUBUF.20     
ccmh                                                                       MUBUF.21     
C**** *MUBUF* - ROUTINE TO ARRANGE COMMON UBUF FOR ONE BLOCK.              MUBUF.22     
C                                                                          MUBUF.23     
C     H.GUNTHER            ECMWF       04/04/1990                          MUBUF.24     
C                                                                          MUBUF.25     
C*    PURPOSE.                                                             MUBUF.26     
C     -------                                                              MUBUF.27     
C                                                                          MUBUF.28     
C       TO ARRANGE NEIGHBOUR GRID POINT INDICES FOR A BLOCK                MUBUF.29     
C                                                                          MUBUF.30     
C**   INTERFACE.                                                           MUBUF.31     
C     ----------                                                           MUBUF.32     
C                                                                          MUBUF.33     
C       *CALL* *MUBUF (IA1, IG, IU08, IU18, IFORM)*                        MUBUF.34     
C          *IA1*     - TOPOGRAPHIC DATA.                                   MUBUF.35     
C          *IG*      - BLOCK NUMBER.                                       MUBUF.36     
C          *IU08*    - LOGICAL UNIT FOR OUTPUT OF GRID BLOCKING            MUBUF.37     
C                      COMMON UBUF (UNFORMATED)                            MUBUF.38     
C          *IU18*    - LOGICAL UNIT FOR OUTPUT OF GRID BLOCKING            MUBUF.39     
C                      COMMON UBUF (FORMATED)                              MUBUF.40     
C          *IFORM*   - OUTPUT FORMAT OPTION = 1 UNFORMATED                 MUBUF.41     
C                                           = 2 FORMATED                   MUBUF.42     
C                                           OTHERWISE BOTH                 MUBUF.43     
C                                                                          MUBUF.44     
C     METHOD.                                                              MUBUF.45     
C     -------                                                              MUBUF.46     
C                                                                          MUBUF.47     
C       THE INDICES OF THE NEXT POINTS ON LAT. AND LONG. ARE               MUBUF.48     
C       COMPUTED. ZERO INDICATES A LAND POINT IS NEIGHBOUR.                MUBUF.49     
C       THE FINAL COMMON UBUF IS WRITTEN OUT.                              MUBUF.50     
C                                                                          MUBUF.51     
C     EXTERNALS.                                                           MUBUF.52     
C     ----------                                                           MUBUF.53     
C                                                                          MUBUF.54     
C       *OUTUBUF*   - WRITE OUT COMMON UBUF.                               MUBUF.55     
C                                                                          MUBUF.56     
C     REFERENCE.                                                           MUBUF.57     
C     ----------                                                           MUBUF.58     
C                                                                          MUBUF.59     
C       NONE.                                                              MUBUF.60     
C                                                                          MUBUF.61     
C ----------------------------------------------------------------------   MUBUF.62     
C                                                                          MUBUF.63     
        logical ia1(ngx,ngy)   ! in land-sea mask land=T                   WVV0F401.30     
C                                                                          MUBUF.65     
C ----------------------------------------------------------------------   MUBUF.66     
C                                                                          MUBUF.67     
C*    1. INITIALISE ARRAYS.                                                MUBUF.68     
C        ------------------                                                MUBUF.69     
C                                                                          MUBUF.70     
 1000 CONTINUE                                                             MUBUF.71     
      do ig=1,igl                                                          MUBUF.72     
      DO 1001 IJ=1,NIBLO                                                   MUBUF.73     
         KLAT(IJ,1,ig) = 0                                                 MUBUF.74     
         KLAT(IJ,2,ig) = 0                                                 MUBUF.75     
         KLON(IJ,1,ig) = 0                                                 MUBUF.76     
         KLON(IJ,2,ig) = 0                                                 MUBUF.77     
 1001 CONTINUE                                                             MUBUF.78     
      enddo                                                                MUBUF.79     
C                                                                          MUBUF.80     
C ----------------------------------------------------------------------   MUBUF.81     
C                                                                          MUBUF.82     
C*    2. COMPUTE INDICES OF NEIGHBOUR SEA POINTS.                          MUBUF.83     
C        ----------------------------------------                          MUBUF.84     
C                                                                          MUBUF.85     
 2000 CONTINUE                                                             MUBUF.86     
C                                                                          MUBUF.87     
C*    2.1 LONGITUDE NEIGHBOURS.                                            MUBUF.88     
C         ---------------------                                            MUBUF.89     
C                                                                          MUBUF.90     
      do ig=1,igl                                                          MUBUF.91     
      DO 2100 IP = 1,IJLT(IG)                                              MUBUF.92     
         I = IXLG(IP,IG)                                                   MUBUF.93     
         K = KXLT(IP,IG)                                                   MUBUF.94     
c                                                                          MUBUF.95     
C       * now using the UM logical landsea mask with land=T                WVV0F401.31     
c                                                                          MUBUF.98     
         IF (I.GT.1) THEN                                                  MUBUF.99     
           IF (.not.IA1(I-1,K)) KLON(IP,1,ig) = IP-1                       WVV0F401.32     
         ELSE                                                              MUBUF.101    
            IF (IPER.EQ.1 .AND. .not.IA1(NX,K)) THEN                       WVV0F401.33     
               KLON(IP,1,ig) = IP                                          MUBUF.103    
               DO 2101 IH=2,NX                                             MUBUF.104    
                IF (.not.IA1(IH,K)) KLON(IP,1,ig) = KLON(IP,1,ig)+1        WVV0F401.34     
 2101          CONTINUE                                                    MUBUF.106    
            ENDIF                                                          MUBUF.107    
         ENDIF                                                             MUBUF.108    
         IF (I.LT.NX) THEN                                                 MUBUF.109    
          IF (.not. IA1(I+1,K) ) KLON(IP,2,ig) = IP+1                      WVV0F401.35     
         ELSE                                                              MUBUF.111    
           IF (IPER.EQ.1 .AND. .not. IA1(1,K)) THEN                        WVV0F401.36     
              KLON(IP,2,ig) = IP                                           MUBUF.113    
              DO 2102 IH=NX-1,1,-1                                         MUBUF.114    
               IF (.not. IA1(IH,K)) KLON(IP,2,ig) = KLON(IP,2,ig)-1        WVV0F401.37     
 2102         CONTINUE                                                     MUBUF.116    
            ENDIF                                                          MUBUF.117    
         ENDIF                                                             MUBUF.118    
 2100 CONTINUE                                                             MUBUF.119    
C                                                                          MUBUF.120    
C*    2.2 LATITUDE NEIGHBOURS.                                             MUBUF.121    
C         --------------------                                             MUBUF.122    
C                                                                          MUBUF.123    
      DO 2200 IP = 1,IJLT(IG)                                              MUBUF.124    
         I = IXLG(IP,IG)                                                   MUBUF.125    
         K = KXLT(IP,IG)                                                   MUBUF.126    
         IF (K.GT.1) THEN                                                  MUBUF.127    
            IF (.not. IA1(I,K-1)) THEN                                     WVV0F401.38     
               DO 2201 IH = IP,1,-1                                        MUBUF.129    
                  IF (IXLG(IH,IG).EQ.I .AND.                               MUBUF.130    
     1                KXLT(IH,IG).EQ.K-1) GOTO 2202                        MUBUF.131    
 2201          CONTINUE                                                    MUBUF.132    
 2202          CONTINUE                                                    MUBUF.133    
               KLAT(IP,1,ig) = IH                                          MUBUF.134    
            ENDIF                                                          MUBUF.135    
         ENDIF                                                             MUBUF.136    
         IF (K.LT.NY) THEN                                                 MUBUF.137    
            IF (.not. IA1(I,K+1)) THEN                                     WVV0F401.39     
               DO 2203 IH = IP,IJLT(IG)                                    MUBUF.139    
                  IF (IXLG(IH,IG).EQ.I .AND.                               MUBUF.140    
     1                KXLT(IH,IG).EQ.K+1) GOTO 2204                        MUBUF.141    
 2203          CONTINUE                                                    MUBUF.142    
 2204          CONTINUE                                                    MUBUF.143    
               KLAT(IP,2,ig) = IH                                          MUBUF.144    
           ENDIF                                                           MUBUF.145    
         ENDIF                                                             MUBUF.146    
 2200 CONTINUE                                                             MUBUF.147    
      enddo                                                                MUBUF.148    
C                                                                          MUBUF.149    
      RETURN                                                               MUBUF.150    
      END                                                                  MUBUF.151    
*ENDIF                                                                     MUBUF.152