*IF DEF,W08_1A GLW1F404.38 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.15762 C GTS2F400.15763 C Use, duplication or disclosure of this code is subject to the GTS2F400.15764 C restrictions as set forth in the contract. GTS2F400.15765 C GTS2F400.15766 C Meteorological Office GTS2F400.15767 C London Road GTS2F400.15768 C BRACKNELL GTS2F400.15769 C Berkshire UK GTS2F400.15770 C RG12 2SZ GTS2F400.15771 C GTS2F400.15772 C If no contract has been raised with this copy of the code, the use, GTS2F400.15773 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.15774 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.15775 C Modelling at the above address. GTS2F400.15776 C ******************************COPYRIGHT****************************** GTS2F400.15777 C GTS2F400.15778 MBLOCK.3SUBROUTINE MBLOCK (ka,ke,ipp,ia1, 2,3MBLOCK.4 *CALL ARGWVAL
MBLOCK.5 *CALL ARGWVMP
MBLOCK.6 *CALL ARGWVGD
MBLOCK.7 & icode) MBLOCK.8 MBLOCK.9 *CALL PARCONS
MBLOCK.10 MBLOCK.11 integer ka ! in MBLOCK.12 integer ke ! in MBLOCK.13 MBLOCK.14 integer ipp(ngy) ! in MBLOCK.15 logical ia1(ngx,ngy) ! in land-sea mask WVV0F401.26 MBLOCK.17 *CALL TYPWVMP
MBLOCK.18 *CALL TYPWVGD
MBLOCK.19 *CALL TYPWVAL
MBLOCK.20 MBLOCK.21 C ---------------------------------------------------------------------- MBLOCK.22 C MBLOCK.23 C**** *MBLOCK* - ROUTINE TO ARRANGE WAMODEL GRID FOR ONE BLOCK. MBLOCK.24 C MBLOCK.25 C H.GUNTHER ECMWF 04/04/1990 MBLOCK.26 C MBLOCK.27 C* PURPOSE. MBLOCK.28 C ------- MBLOCK.29 C MBLOCK.30 C *MBLOCK* ARRANGES WAMODEL GRID FOR A BLOCK AND MBLOCK.31 C COMPUTES VARIOUS MODEL CONSTANTS MBLOCK.32 C MBLOCK.33 C** INTERFACE. MBLOCK.34 C ---------- MBLOCK.35 C MBLOCK.36 C *CALL* *MBLOCK (IA1, KA, KE, IPP)* MBLOCK.37 C *IA1* - TOPOGRAPHIC DATA. MBLOCK.38 C *KA* - NUMBER OF FIRST LAT IN BLOCK. MBLOCK.39 C *KE* - NUMBER OF LAST LAT IN BLOCK. MBLOCK.40 C *IPP* - NUMBER OF SEA POINTS PER LAT. MBLOCK.41 C MBLOCK.42 C METHOD. MBLOCK.43 C ------- MBLOCK.44 C MBLOCK.45 C THE LAND POINTS ARE REMOVED. ALL MODEL CONSTANTS WHICH ARE MBLOCK.46 C GRID DEPENDENT ARE COMPUTED AND STORED IN THE COMMON BLOCKS. MBLOCK.47 C MBLOCK.48 C EXTERNALS. MBLOCK.49 C ---------- MBLOCK.50 C MBLOCK.51 C REFERENCE. MBLOCK.52 C ---------- MBLOCK.53 C MBLOCK.54 C NONE. MBLOCK.55 C MBLOCK.56 C ---------------------------------------------------------------------- MBLOCK.57 C* 1. UPDATE BLOCK NUMBER AND INITIALIZES ARRAYS. MBLOCK.58 C ------------------------------------------- MBLOCK.59 C MBLOCK.60 iu06=6 MBLOCK.61 MBLOCK.62 1000 CONTINUE MBLOCK.63 IGL = IGL + 1 MBLOCK.64 IF (IGL.GT.NBLO) THEN MBLOCK.65 WRITE (IU06,*) '**********************************************' MBLOCK.66 WRITE (IU06,*) '* *' MBLOCK.67 WRITE (IU06,*) '* FATAL ERROR IN SUB. MBLOCK *' MBLOCK.68 WRITE (IU06,*) '* ========================== *' MBLOCK.69 WRITE (IU06,*) '* *' MBLOCK.70 WRITE (IU06,*) '* MORE BLOCKS THAN DIMENSION ALLOWS. *' MBLOCK.71 WRITE (IU06,*) '* BLOCK NUMBER IS IGL = ', IGL MBLOCK.72 WRITE (IU06,*) '* DIMENSION IS NBLO = ', NBLO MBLOCK.73 WRITE (IU06,*) '* NUMBER OF FIRST LATITUDE IS KA = ', KA MBLOCK.74 WRITE (IU06,*) '* NUMBER OF LAST LATITUDE IS KE = ', KE MBLOCK.75 WRITE (IU06,*) '* *' MBLOCK.76 WRITE (IU06,*) '* PROGRAM WILL BE ABORTED *' MBLOCK.77 WRITE (IU06,*) '* *' MBLOCK.78 WRITE (IU06,*) '**********************************************' MBLOCK.79 icode=-1 MBLOCK.80 call abort
MBLOCK.81 ENDIF MBLOCK.82 DO 1001 IJ=1,NIBLO MBLOCK.83 IXLG(IJ,IGL) = 0 MBLOCK.84 KXLT(IJ,IGL) = 0 MBLOCK.85 1001 CONTINUE MBLOCK.86 MBLOCK.87 C ---------------------------------------------------------------------- MBLOCK.88 C MBLOCK.89 C* 2. THE FIRST AND LAST BLOCK MUST CONTAIN MORE THAN 2 MBLOCK.90 C* ALL OTHER BLOCKS MORE THAN 3 LATITUDES. MBLOCK.91 C ------------------------------------------------- MBLOCK.92 C MBLOCK.93 2000 CONTINUE MBLOCK.94 cc MBLOCK.95 cc MBLOCK.96 ccUM the if test below was originally : MBLOCK.97 ccUM 1 ((KA.NE.1) .AND. (KE.EQ.NY) .AND. (KE-KA.LT.2))) THEN MBLOCK.98 ccUM ~~~~ MBLOCK.99 ccUM corrected to .NE. after UM Review MBLOCK.100 ccUM S Kelsall / M Holt 26/7/95 MBLOCK.101 cc MBLOCK.102 cc this now matches what is described in the comment block above MBLOCK.103 cc MBLOCK.104 IF ((KE.EQ.1) .OR. (KA.EQ.NY) .OR. MBLOCK.105 1 ((KA.NE.1) .AND. (KE.NE.NY) .AND. (KE-KA.LT.2))) THEN MBLOCK.106 WRITE (IU06,*) '**********************************************' MBLOCK.107 WRITE (IU06,*) '* *' MBLOCK.108 WRITE (IU06,*) '* FATAL ERROR IN SUB. MBLOCK *' MBLOCK.109 WRITE (IU06,*) '* ========================== *' MBLOCK.110 WRITE (IU06,*) '* *' MBLOCK.111 WRITE (IU06,*) '* BLOCK LENGTH IS TO SHORT. *' MBLOCK.112 WRITE (IU06,*) '* LESS THAN 2 LATITUDES IN FIRST OR LAST, OR *' MBLOCK.113 WRITE (IU06,*) '* LESS THAN 3 LATITUDES IN OTHER BLOCKS. *' MBLOCK.114 WRITE (IU06,*) '* BLOCK NUMBER IS IGL = ', IGL MBLOCK.115 WRITE (IU06,*) '* BLOCK LENGTH IS NIBLO = ', NIBLO MBLOCK.116 WRITE (IU06,*) '* NUMBER OF FIRST LATITUDE IS KA = ', KA MBLOCK.117 WRITE (IU06,*) '* NUMBER OF LAST LATITUDE IS KE = ', KE MBLOCK.118 WRITE (IU06,*) '* *' MBLOCK.119 WRITE (IU06,*) '* PROGRAM WILL BE ABORTED *' MBLOCK.120 WRITE (IU06,*) '* *' MBLOCK.121 WRITE (IU06,*) '**********************************************' MBLOCK.122 icode=-1 MBLOCK.123 call abort
MBLOCK.124 ENDIF MBLOCK.125 C MBLOCK.126 C ---------------------------------------------------------------------- MBLOCK.127 C MBLOCK.128 C* 3. COMPUTE INDICES OF FIRST, SECOND, BEFORE LAST, AND LAST LAT. MBLOCK.129 C ----------------------------------------------------------- MBLOCK.130 C MBLOCK.131 3000 CONTINUE MBLOCK.132 IF (KA.EQ.1) THEN MBLOCK.133 IJS (IGL) = 1 MBLOCK.134 IJL2(IGL) = IPP(1) MBLOCK.135 ELSE MBLOCK.136 IJS (IGL) = IPP(KA)+1 MBLOCK.137 IJL2(IGL) = IPP(KA)+IPP(KA+1) MBLOCK.138 ENDIF MBLOCK.139 IJLT(IGL) = 0 MBLOCK.140 DO 3001 K=KA,KE MBLOCK.141 IJLT(IGL) = IJLT(IGL)+IPP(K) MBLOCK.142 3001 CONTINUE MBLOCK.143 IF (KE.EQ.NY) THEN MBLOCK.144 IJL (IGL) = IJLT(IGL) MBLOCK.145 ELSE MBLOCK.146 IJL (IGL) = IJLT(IGL)-IPP(KE) MBLOCK.147 ENDIF MBLOCK.148 IJLS(IGL) = IJL(IGL)-IPP(KE-1)+1 MBLOCK.149 C MBLOCK.150 C ---------------------------------------------------------------------- MBLOCK.151 C MBLOCK.152 C* 4. REMOVE LAND POINTS AND STORE COS AND SIN OF LAT. MBLOCK.153 C ------------------------------------------------ MBLOCK.154 C MBLOCK.155 4000 CONTINUE MBLOCK.156 IP = 0 MBLOCK.157 DO 4001 K=KA,KE MBLOCK.158 DO 4002 I=1,NX MBLOCK.159 IF (.not.IA1(I,K)) THEN ! a sea point WVV0F401.27 IP = IP+1 MBLOCK.161 IXLG(IP,IGL) = I MBLOCK.162 KXLT(IP,IGL) = K MBLOCK.163 ENDIF MBLOCK.164 4002 CONTINUE MBLOCK.165 4001 CONTINUE MBLOCK.166 IF (IP.NE.IJLT(IGL)) THEN MBLOCK.167 WRITE (IU06,*) '**********************************************' MBLOCK.168 WRITE (IU06,*) '* *' MBLOCK.169 WRITE (IU06,*) '* FATAL ERROR IN SUB. MBLOCK *' MBLOCK.170 WRITE (IU06,*) '* ========================== *' MBLOCK.171 WRITE (IU06,*) '* *' MBLOCK.172 WRITE (IU06,*) '* TOTAL NUMBER OF SEAPOINTS DO NOT MATCH. *' MBLOCK.173 WRITE (IU06,*) '* BLOCK NUMBER IGL = ', IGL MBLOCK.174 WRITE (IU06,*) '* NO. OF SEAPOINTS COUNTED IP = ', IP MBLOCK.175 WRITE (IU06,*) '* NO. OF SEAPOINTS EXPECTED IJLT(IGL) = ', MBLOCK.176 1 IJLT(IGL) MBLOCK.177 WRITE (IU06,*) '* *' MBLOCK.178 WRITE (IU06,*) '* PROGRAM WILL BE ABORTED *' MBLOCK.179 WRITE (IU06,*) '* *' MBLOCK.180 WRITE (IU06,*) '**********************************************' MBLOCK.181 icode=-1 MBLOCK.182 call abort
MBLOCK.183 ENDIF MBLOCK.184 C MBLOCK.185 C ---------------------------------------------------------------------- MBLOCK.186 C MBLOCK.187 C* 5. PRINTER PROTOCOL OF BLOCK. MBLOCK.188 C -------------------------- MBLOCK.189 C MBLOCK.190 5000 CONTINUE MBLOCK.191 IF (IGL.EQ.1) THEN MBLOCK.192 WRITE (IU06,'(1H0,'' BLOCKING INFORMATION:'')') MBLOCK.193 WRITE (IU06,'(1H ,'' LATITUDES '', MBLOCK.194 1 '' SECOND LAT. INDEX '', MBLOCK.195 2 '' SECOND TO LAST LAT '', MBLOCK.196 3 '' TOTAL'')') MBLOCK.197 WRITE (IU06,'(1H ,'' NO SOUTH NORTH'', MBLOCK.198 1 '' START END'', MBLOCK.199 2 '' START END'', MBLOCK.200 3 '' POINTS'')') MBLOCK.201 ENDIF MBLOCK.202 WRITE (IU06,'(1X,I4,2F10.2,5I10)') MBLOCK.203 1 IGL, AMOSOP+(KA-1)*XDELLA, AMOSOP+(KE-1)*XDELLA, MBLOCK.204 2 IJS(IGL), IJL2(IGL), IJLS(IGL), IJL(IGL), IJLT(IGL) MBLOCK.205 MBLOCK.206 RETURN MBLOCK.207 END MBLOCK.208 *ENDIF MBLOCK.209