*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.3SUBROUTINE 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