orog_mask_tools 1.14.0
Loading...
Searching...
No Matches
nb.F90
Go to the documentation of this file.
1
7MODULE cs_nb
8 IMPLICIT NONE
9
12 INTEGER :: nb_tile_num
13 CHARACTER (1) :: nb_tile_bndry
14 END TYPE nb_tile_idx
15
18 INTEGER :: gp_type
19 INTEGER :: ijt(3,8)
20 END TYPE nb_gp_idx
21
22 TYPE(nb_tile_idx):: nb_tile(4,6)
23
24 INTEGER :: cres
25 integer :: xres
26 integer :: yres
27
28CONTAINS
29
48 SUBROUTINE idx_init(cres_in)
49 INTEGER :: cres_in
50
51 nb_tile(1,1)%nb_tile_num = 3; nb_tile(1,1)%nb_tile_bndry ='l'
52 nb_tile(2,1)%nb_tile_num = 6; nb_tile(2,1)%nb_tile_bndry ='t'
53 nb_tile(3,1)%nb_tile_num = 5; nb_tile(3,1)%nb_tile_bndry ='t'
54 nb_tile(4,1)%nb_tile_num = 2; nb_tile(4,1)%nb_tile_bndry ='l'
55
56 nb_tile(1,2)%nb_tile_num = 3; nb_tile(1,2)%nb_tile_bndry ='b'
57 nb_tile(2,2)%nb_tile_num = 6; nb_tile(2,2)%nb_tile_bndry ='r'
58 nb_tile(3,2)%nb_tile_num = 1; nb_tile(3,2)%nb_tile_bndry ='r'
59 nb_tile(4,2)%nb_tile_num = 4; nb_tile(4,2)%nb_tile_bndry ='b'
60
61 nb_tile(1,3)%nb_tile_num = 5; nb_tile(1,3)%nb_tile_bndry ='l'
62 nb_tile(2,3)%nb_tile_num = 2; nb_tile(2,3)%nb_tile_bndry ='t'
63 nb_tile(3,3)%nb_tile_num = 1; nb_tile(3,3)%nb_tile_bndry ='t'
64 nb_tile(4,3)%nb_tile_num = 4; nb_tile(4,3)%nb_tile_bndry ='l'
65
66 nb_tile(1,4)%nb_tile_num = 5; nb_tile(1,4)%nb_tile_bndry ='b'
67 nb_tile(2,4)%nb_tile_num = 2; nb_tile(2,4)%nb_tile_bndry ='r'
68 nb_tile(3,4)%nb_tile_num = 3; nb_tile(3,4)%nb_tile_bndry ='r'
69 nb_tile(4,4)%nb_tile_num = 6; nb_tile(4,4)%nb_tile_bndry ='b'
70
71 nb_tile(1,5)%nb_tile_num = 1; nb_tile(1,5)%nb_tile_bndry ='l'
72 nb_tile(2,5)%nb_tile_num = 4; nb_tile(2,5)%nb_tile_bndry ='t'
73 nb_tile(3,5)%nb_tile_num = 3; nb_tile(3,5)%nb_tile_bndry ='t'
74 nb_tile(4,5)%nb_tile_num = 6; nb_tile(4,5)%nb_tile_bndry ='l'
75
76 nb_tile(1,6)%nb_tile_num = 1; nb_tile(1,6)%nb_tile_bndry ='b'
77 nb_tile(2,6)%nb_tile_num = 4; nb_tile(2,6)%nb_tile_bndry ='r'
78 nb_tile(3,6)%nb_tile_num = 5; nb_tile(3,6)%nb_tile_bndry ='r'
79 nb_tile(4,6)%nb_tile_num = 2; nb_tile(4,6)%nb_tile_bndry ='b'
80
81 cres = cres_in
82
83 END SUBROUTINE idx_init
84
91 SUBROUTINE idx_init_reg(xres_in, yres_in)
92 INTEGER, INTENT(IN) :: xres_in, yres_in
93
94 xres = xres_in
95 yres = yres_in
96
97 END SUBROUTINE idx_init_reg
98
106 INTEGER FUNCTION bndry(i, j)
107 INTEGER :: i,j
108
109 bndry = 0 ! no boundary
110
111 IF (j == cres) THEN ! upper boundary
112 bndry = 1
113 IF (i == 1) THEN
114 bndry = 13
115 ELSE IF (i == cres) THEN
116 bndry = 14
117 ENDIF
118 ELSE IF (j == 1) THEN ! bottom boundary
119 bndry = 2
120 IF (i == 1) THEN
121 bndry = 23
122 ELSE IF (i == cres) THEN
123 bndry = 24
124 ENDIF
125 ELSE IF (i == 1) THEN ! left boundary
126 bndry = 3
127 ELSE IF (i == cres) THEN ! right boundary
128 bndry = 4
129 ENDIF
130
131 END FUNCTION bndry
132
140 INTEGER FUNCTION bndry_reg(i, j)
141 INTEGER :: i,j
142
143 bndry_reg = 0 ! no boundary
144
145 IF (j == yres) THEN ! upper boundary
146 bndry_reg = 1
147 IF (i == 1) THEN
148 bndry_reg = 13
149 ELSE IF (i == xres) THEN
150 bndry_reg = 14
151 ENDIF
152 ELSE IF (j == 1) THEN ! bottom boundary
153 bndry_reg = 2
154 IF (i == 1) THEN
155 bndry_reg = 23
156 ELSE IF (i == xres) THEN
157 bndry_reg = 24
158 ENDIF
159 ELSE IF (i == 1) THEN ! left boundary
160 bndry_reg = 3
161 ELSE IF (i == xres) THEN ! right boundary
162 bndry_reg = 4
163 ENDIF
164
165 END FUNCTION bndry_reg
166
192 SUBROUTINE neighbors(tile, i, j, nb)
193 INTEGER :: tile, i, j
194 TYPE(nb_gp_idx) :: nb
195
196 INTEGER :: bd, nb_t_num
197
198 nb%gp_type = bndry(i,j)
199 IF (nb%gp_type == 0) THEN ! interior (non-boundary) cell
200 ! top, bottom, left, and right
201 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
202 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
203 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
204 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
205 ! top left, top right, bottom left, and bottom right
206 nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
207 nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
208 nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
209 nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
210 ELSEIF (nb%gp_type == 1) THEN ! top boundary cell
211 bd = 1
212 nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
213 nb%ijt(3,1)=nb_t_num; nb%ijt(3,5)=nb_t_num; nb%ijt(3,6)=nb_t_num
214 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
215 nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i;
216 nb%ijt(1,5) = 1; nb%ijt(2,5) = cres+1-(i-1);
217 nb%ijt(1,6) = 1; nb%ijt(2,6) = cres+1-(i+1);
218 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
219 nb%ijt(1,1) = i; nb%ijt(2,1) = 1
220 nb%ijt(1,5) = i-1; nb%ijt(2,5) = 1
221 nb%ijt(1,6) = i+1; nb%ijt(2,6) = 1
222 ENDIF
223 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
224 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
225 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
226 nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
227 nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
228 ELSEIF (nb%gp_type == 2) THEN ! bottom boundary cell
229 bd = 2
230 nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
231 nb%ijt(3,4)=nb_t_num; nb%ijt(3,7)=nb_t_num; nb%ijt(3,8)=nb_t_num
232 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
233 nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i;
234 nb%ijt(1,7) = cres; nb%ijt(2,7) = cres+1-(i-1);
235 nb%ijt(1,8) = cres; nb%ijt(2,8) = cres+1-(i+1);
236 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
237 nb%ijt(1,4) = i; nb%ijt(2,4) = cres
238 nb%ijt(1,7) = i-1; nb%ijt(2,7) = cres
239 nb%ijt(1,8) = i+1; nb%ijt(2,8) = cres
240 ENDIF
241 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
242 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
243 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
244 nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
245 nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
246 ELSEIF (nb%gp_type == 3) THEN ! left boundary cell
247 bd = 3
248 nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
249 nb%ijt(3,2)=nb_t_num; nb%ijt(3,5)=nb_t_num; nb%ijt(3,7)=nb_t_num
250 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
251 nb%ijt(1,2) = cres; nb%ijt(2,2) = j;
252 nb%ijt(1,5) = cres; nb%ijt(2,5) = j+1;
253 nb%ijt(1,7) = cres; nb%ijt(2,7) = j-1;
254 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
255 nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
256 nb%ijt(1,5) = cres+1-(j+1); nb%ijt(2,5) = cres
257 nb%ijt(1,7) = cres+1-(j-1); nb%ijt(2,7) = cres
258 ENDIF
259 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
260 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
261 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
262 nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
263 nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
264 ELSEIF (nb%gp_type == 4) THEN ! right boundary cell
265 bd = 4
266 nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
267 nb%ijt(3,3)=nb_t_num; nb%ijt(3,6)=nb_t_num; nb%ijt(3,8)=nb_t_num
268 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
269 nb%ijt(1,3) = 1; nb%ijt(2,3) = j;
270 nb%ijt(1,6) = 1; nb%ijt(2,6) = j+1;
271 nb%ijt(1,8) = 1; nb%ijt(2,8) = j-1;
272 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
273 nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
274 nb%ijt(1,6) = cres+1-(j+1); nb%ijt(2,6) = 1
275 nb%ijt(1,8) = cres+1-(j-1); nb%ijt(2,8) = 1
276 ENDIF
277 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
278 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
279 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
280 nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
281 nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
282 ELSEIF (nb%gp_type == 13) THEN ! upper left coner
283 bd = 1
284 nb_t_num = nb_tile(bd,tile)%nb_tile_num
285 nb%ijt(3,1)=nb_t_num; nb%ijt(3,6)=nb_t_num
286 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
287 nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i
288 nb%ijt(1,6) = 1; nb%ijt(2,6) = cres+1-(i+1)
289 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
290 nb%ijt(1,1) = i; nb%ijt(2,1) = 1
291 nb%ijt(1,6) = i+1; nb%ijt(2,6) = 1
292 ENDIF
293 bd = 3
294 nb_t_num = nb_tile(bd,tile)%nb_tile_num
295 nb%ijt(3,2)=nb_t_num; nb%ijt(3,7)=nb_t_num
296 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
297 nb%ijt(1,2) = cres; nb%ijt(2,2) = j
298 nb%ijt(1,7) = cres; nb%ijt(2,7) = j-1
299 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
300 nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
301 nb%ijt(1,7) = cres+1-(j-1); nb%ijt(2,7) = cres
302 ENDIF
303 nb%ijt(3,5)=0
304 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
305 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
306 nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
307 ELSEIF (nb%gp_type == 14) THEN ! upper right coner
308 bd = 1
309 nb_t_num = nb_tile(bd,tile)%nb_tile_num
310 nb%ijt(3,1)=nb_t_num; nb%ijt(3,5)=nb_t_num
311 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
312 nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i
313 nb%ijt(1,5) = 1; nb%ijt(2,5) = cres+1-(i-1)
314 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
315 nb%ijt(1,1) = i; nb%ijt(2,1) = 1
316 nb%ijt(1,5) = i-1; nb%ijt(2,5) = 1
317 ENDIF
318 bd = 4
319 nb_t_num = nb_tile(bd,tile)%nb_tile_num
320 nb%ijt(3,3)=nb_t_num; nb%ijt(3,8)=nb_t_num
321 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
322 nb%ijt(1,3) = 1; nb%ijt(2,3) = j
323 nb%ijt(1,8) = 1; nb%ijt(2,8) = j-1
324 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
325 nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
326 nb%ijt(1,8) = cres+1-(j-1); nb%ijt(2,8) = 1
327 ENDIF
328 nb%ijt(3,6)=0
329 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
330 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
331 nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
332 ELSEIF (nb%gp_type == 23) THEN ! lower left coner
333 bd = 2
334 nb_t_num = nb_tile(bd,tile)%nb_tile_num
335 nb%ijt(3,4)=nb_t_num; nb%ijt(3,8)=nb_t_num
336 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
337 nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i
338 nb%ijt(1,8) = cres; nb%ijt(2,8) = cres+1-(i+1)
339 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
340 nb%ijt(1,4) = i; nb%ijt(2,4) = cres
341 nb%ijt(1,8) = i+1; nb%ijt(2,8) = cres
342 ENDIF
343 bd = 3
344 nb_t_num = nb_tile(bd,tile)%nb_tile_num
345 nb%ijt(3,2)=nb_t_num; nb%ijt(3,5)=nb_t_num
346 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
347 nb%ijt(1,2) = cres; nb%ijt(2,2) = j
348 nb%ijt(1,5) = cres; nb%ijt(2,5) = j+1
349 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
350 nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
351 nb%ijt(1,5) = cres+1-(j+1); nb%ijt(2,5) = cres
352 ENDIF
353 nb%ijt(3,7)=0
354 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
355 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
356 nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
357 ELSEIF (nb%gp_type == 24) THEN ! lower right coner
358 bd = 2
359 nb_t_num = nb_tile(bd,tile)%nb_tile_num
360 nb%ijt(3,4)=nb_t_num; nb%ijt(3,7)=nb_t_num
361 IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
362 nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i
363 nb%ijt(1,7) = cres; nb%ijt(2,7) = cres+1-(i-1)
364 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
365 nb%ijt(1,4) = i; nb%ijt(2,4) = cres
366 nb%ijt(1,7) = i-1; nb%ijt(2,7) = cres
367 ENDIF
368 bd = 4
369 nb_t_num = nb_tile(bd,tile)%nb_tile_num
370 nb%ijt(3,3)=nb_t_num; nb%ijt(3,6)=nb_t_num
371 IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
372 nb%ijt(1,3) = 1; nb%ijt(2,3) = j
373 nb%ijt(1,6) = 1; nb%ijt(2,6) = j+1
374 ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
375 nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
376 nb%ijt(1,6) = cres+1-(j+1); nb%ijt(2,6) = 1
377 ENDIF
378 nb%ijt(3,8)=0
379 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
380 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
381 nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
382
383 ENDIF
384 END SUBROUTINE neighbors
385
393 SUBROUTINE neighbors_reg(i, j, nb)
394 INTEGER :: i, j
395 TYPE(nb_gp_idx) :: nb
396
397! assign the standard interior cell neighbors as default values
398 ! top, bottom, left, and right
399 nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = 1
400 nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = 1
401 nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = 1
402 nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = 1
403 ! top left, top right, bottom left, and bottom right
404 nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = 1
405 nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = 1
406 nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = 1
407 nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = 1
408
409 nb%gp_type = bndry_reg(i,j)
410 IF (nb%gp_type == 1) THEN !top boundary cell
411 nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0
412 ELSEIF (nb%gp_type == 2) THEN !bottom boundary cell
413 nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
414 ELSEIF (nb%gp_type == 3) THEN !left boundary cell
415 nb%ijt(3,2) = 0; nb%ijt(3,5) = 0; nb%ijt(3,7) = 0
416 ELSEIF (nb%gp_type == 4) THEN !right boundary cell
417 nb%ijt(3,3) = 0; nb%ijt(3,6) = 0; nb%ijt(3,8) = 0
418 ELSEIF (nb%gp_type == 13) THEN ! upper left coner
419 nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0;
420 nb%ijt(3,2) = 0; nb%ijt(3,7) = 0
421 ELSEIF (nb%gp_type == 14) THEN ! upper right coner
422 nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0;
423 nb%ijt(3,3) = 0; nb%ijt(3,8) = 0
424 ELSEIF (nb%gp_type == 23) THEN ! lower left coner
425 nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
426 nb%ijt(3,2) = 0; nb%ijt(3,5) = 0;
427 ELSEIF (nb%gp_type == 24) THEN ! lower right coner
428 nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
429 nb%ijt(3,3) = 0; nb%ijt(3,6) = 0;
430 ENDIF
431
432 END SUBROUTINE neighbors_reg
433
434END MODULE cs_nb
435
436#ifdef TEST_CS_NB
437PROGRAM test_nb
438 USE cs_nb
439
440 INTEGER :: tile, i, j
441 TYPE(nb_gp_idx) :: nbs
442
443 INTEGER, PARAMETER :: res = 96
444
445 CALL idx_init(res)
446! tile = 1; i = 1; j = 5
447! tile = 1; i = 5; j = 1
448! tile = 1; i = 96; j = 10
449 tile = 2; i = 96; j = 96
450 CALL neighbors(tile, i, j, nbs)
451 print*, 'tile = ', tile, ' i = ',i, ' j = ', j
452 print*, 'nbs%type: ', nbs%gp_type
453 print*, 'nbs%ijt: '
454 print*, nbs%ijt
455END PROGRAM test_nb
456#endif
Neighboring cell descriptor.
Definition nb.F90:17
Neighboring tile descriptor.
Definition nb.F90:11