File: /nfs/home/0/users/jenkins/mfix.git/model/cartesian_grid/get_master.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SUBROUTINE GET_U_MASTER_CELLS
15
16 USE param
17 USE param1
18 USE parallel
19 USE constant
20 USE run
21 USE toleranc
22 USE geometry
23 USE indices
24 USE compar
25 USE sendrecv
26 USE bc
27 USE quadric
28 USE cutcell
29 USE functions
30
31 IMPLICIT NONE
32 INTEGER :: IJK,I,J,K,IJKC,D,DIR(18),DMAX
33 LOGICAL :: U_NODE,V_NODE,W_NODE,VEL_NODE,MASTER_FOUND
34 INTEGER :: NC,L,BCV
35
36 IF(MyPE == PE_IO) THEN
37 WRITE(*,*)'FINDING MASTER CELLS FOR U-MOMENTUM CELLS...'
38 ENDIF
39 10 FORMAT(1X,A)
40
41
42
43
44
45 DO L = 1, DIMENSION_BC
46 IF (.NOT.BC_DEFINED(L).AND.BC_TYPE(L)(1:2)/='CG') THEN
47 BC_TYPE(L)='CG_NSW'
48 NSW_GHOST_BC_ID = L
49 EXIT
50 ENDIF
51 ENDDO
52
53
54
55
56
57
58
59 = 0
60
61 DO IJK = IJKSTART3, IJKEND3
62
63 IF(WALL_U_AT(IJK)) THEN
64
65 MASTER_FOUND = .FALSE.
66 NC = NC + 1
67
68 I = I_OF(IJK)
69 J = J_OF(IJK)
70 K = K_OF(IJK)
71
72 DIR(1) = EAST_OF(IJK)
73 DIR(2) = WEST_OF(IJK)
74
75 DIR(3) = NORTH_OF(IJK)
76 DIR(4) = SOUTH_OF(IJK)
77
78
79 DIR(5) = EAST_OF(DIR(3))
80 (6) = EAST_OF(DIR(4))
81
82 (7) = WEST_OF(DIR(3))
83 (8) = WEST_OF(DIR(4))
84
85 (9) = TOP_OF(IJK)
86 DIR(10) = BOTTOM_OF(IJK)
87
88 DIR(11) = NORTH_OF(DIR(9))
89 (12) = SOUTH_OF(DIR(9))
90
91 (13) = NORTH_OF(DIR(10))
92 (14) = SOUTH_OF(DIR(10))
93
94 (15) = EAST_OF(DIR(9))
95 (16) = WEST_OF(DIR(9))
96
97 (17) = EAST_OF(DIR(10))
98 (18) = WEST_OF(DIR(10))
99
100 IF(NO_K) THEN
101 DMAX = 4
102 ELSE
103 DMAX = 18
104 ENDIF
105
106 DO D = 1,DMAX
107
108 IJKC = DIR(D)
109
110 U_NODE = ((.NOT.BLOCKED_U_CELL_AT(IJKC)).AND.(.NOT.WALL_U_AT(IJKC)))
111 V_NODE = ((.NOT.BLOCKED_V_CELL_AT(IJKC)).AND.(.NOT.WALL_V_AT(IJKC)))
112
113 IF(NO_K) THEN
114 VEL_NODE = ((U_NODE).AND.(V_NODE))
115 ELSE
116 W_NODE = ((.NOT.BLOCKED_W_CELL_AT(IJKC)).AND.(.NOT.WALL_W_AT(IJKC)))
117 VEL_NODE = ((U_NODE).AND.(V_NODE).AND.(W_NODE))
118 ENDIF
119
120 IF(U_NODE) THEN
121 U_MASTER_OF(IJK) = IJKC
122 MASTER_FOUND = .TRUE.
123 EXIT
124 ENDIF
125 ENDDO
126
127 IF(.NOT.MASTER_FOUND) THEN
128 BCV = BC_U_ID(IJK)
129 IF(BCV>0) THEN
130 IF(BC_TYPE(BCV) == 'CG_FSW') THEN
131 WRITE(*,*) ' WARNING IN SUBROUTINE: GET_U_MASTER_CELLS:'
132 WRITE(*,*) ' NO MASTER CELL FOUND FOR U_MOMENTUM WALL CELL:', IJK,I,J,K
133 WRITE(*,*) ' REVERTING TO NO SLIP WALL BOUNDARY CONDITION IN THIS CELL'
134 BC_U_ID(IJK) = NSW_GHOST_BC_ID
135 WRITE(*,*) ' BC_U_ID(IJK) = ', BC_U_ID(IJK)
136 ENDIF
137
138
139
140
141
142 ENDIF
143 ENDIF
144 ENDIF
145
146 END DO
147
148
149
150 RETURN
151
152 END SUBROUTINE GET_U_MASTER_CELLS
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 SUBROUTINE GET_V_MASTER_CELLS
170
171 USE param
172 USE param1
173 USE parallel
174 USE constant
175 USE run
176 USE toleranc
177 USE geometry
178 USE indices
179 USE compar
180 USE sendrecv
181 USE bc
182 USE quadric
183 USE cutcell
184 USE functions
185
186 IMPLICIT NONE
187 INTEGER :: IJK,I,J,K,IJKC,D,DIR(18),DMAX
188 LOGICAL :: U_NODE,V_NODE,W_NODE,VEL_NODE,MASTER_FOUND
189 INTEGER :: NC,BCV
190
191 IF(MyPE == PE_IO) THEN
192 WRITE(*,10)'FINDING MASTER CELLS FOR V-MOMENTUM CELLS...'
193 ENDIF
194 10 FORMAT(1X,A)
195
196
197
198
199
200
201
202 = 0
203
204 DO IJK = IJKSTART3, IJKEND3
205
206 IF(WALL_V_AT(IJK)) THEN
207
208 MASTER_FOUND = .FALSE.
209 NC = NC + 1
210
211 I = I_OF(IJK)
212 J = J_OF(IJK)
213 K = K_OF(IJK)
214
215
216 DIR(1) = EAST_OF(IJK)
217 DIR(2) = WEST_OF(IJK)
218
219 DIR(3) = NORTH_OF(IJK)
220 DIR(4) = SOUTH_OF(IJK)
221
222
223 DIR(5) = EAST_OF(DIR(3))
224 (6) = EAST_OF(DIR(4))
225
226 (7) = WEST_OF(DIR(3))
227 (8) = WEST_OF(DIR(4))
228
229 (9) = TOP_OF(IJK)
230 DIR(10) = BOTTOM_OF(IJK)
231
232 DIR(11) = NORTH_OF(DIR(9))
233 (12) = SOUTH_OF(DIR(9))
234
235 (13) = NORTH_OF(DIR(10))
236 (14) = SOUTH_OF(DIR(10))
237
238 (15) = EAST_OF(DIR(9))
239 (16) = WEST_OF(DIR(9))
240
241 (17) = EAST_OF(DIR(10))
242 (18) = WEST_OF(DIR(10))
243
244 IF(NO_K) THEN
245 DMAX = 4
246 ELSE
247 DMAX = 18
248 ENDIF
249
250 DO D = 1,DMAX
251
252 IJKC = DIR(D)
253
254 U_NODE = ((.NOT.BLOCKED_U_CELL_AT(IJKC)).AND.(.NOT.WALL_U_AT(IJKC)))
255 V_NODE = ((.NOT.BLOCKED_V_CELL_AT(IJKC)).AND.(.NOT.WALL_V_AT(IJKC)))
256
257
258 IF(NO_K) THEN
259 VEL_NODE = ((U_NODE).AND.(V_NODE))
260 ELSE
261 W_NODE = ((.NOT.BLOCKED_W_CELL_AT(IJKC)).AND.(.NOT.WALL_W_AT(IJKC)))
262 VEL_NODE = ((U_NODE).AND.(V_NODE).AND.(W_NODE))
263 ENDIF
264
265 IF(V_NODE) THEN
266 V_MASTER_OF(IJK) = IJKC
267 MASTER_FOUND = .TRUE.
268 EXIT
269 ENDIF
270 ENDDO
271
272 IF(.NOT.MASTER_FOUND) THEN
273 BCV = BC_V_ID(IJK)
274 IF(BCV>0) THEN
275 IF(BC_TYPE(BCV) == 'CG_FSW') THEN
276 WRITE(*,*) ' WARNING IN SUBROUTINE: GET_V_MASTER_CELLS:'
277 WRITE(*,*) ' NO MASTER CELL FOUND FOR V_MOMENTUM WALL CELL:', IJK,I,J,K
278 WRITE(*,*) ' REVERTING TO NO SLIP WALL BOUNDARY CONDITION IN THIS CELL'
279 BC_V_ID(IJK) = NSW_GHOST_BC_ID
280 WRITE(*,*) ' BC_V_ID(IJK) = ', BC_V_ID(IJK)
281 ENDIF
282
283
284
285
286 ENDIF
287 ENDIF
288 ENDIF
289
290 END DO
291
292
293
294 RETURN
295
296 END SUBROUTINE GET_V_MASTER_CELLS
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312 SUBROUTINE GET_W_MASTER_CELLS
313
314 USE param
315 USE param1
316 USE parallel
317 USE constant
318 USE run
319 USE toleranc
320 USE geometry
321 USE indices
322 USE compar
323 USE sendrecv
324 USE bc
325 USE quadric
326 USE cutcell
327 USE functions
328
329 IMPLICIT NONE
330 INTEGER :: IJK,I,J,K,IJKC,D,DIR(18),DMAX
331 LOGICAL :: U_NODE,V_NODE,W_NODE,VEL_NODE,MASTER_FOUND
332 INTEGER :: NC,BCV
333
334 IF(MyPE == PE_IO) THEN
335 WRITE(*,10)'FINDING MASTER CELLS FOR W-MOMENTUM CELLS...'
336 ENDIF
337 10 FORMAT(1X,A)
338
339
340
341
342
343
344
345 = 0
346
347 DO IJK = IJKSTART3, IJKEND3
348
349 IF(WALL_W_AT(IJK)) THEN
350
351 MASTER_FOUND = .FALSE.
352 NC = NC + 1
353
354 I = I_OF(IJK)
355 J = J_OF(IJK)
356 K = K_OF(IJK)
357
358
359 DIR(1) = EAST_OF(IJK)
360 DIR(2) = WEST_OF(IJK)
361
362 DIR(3) = NORTH_OF(IJK)
363 DIR(4) = SOUTH_OF(IJK)
364
365
366 DIR(5) = EAST_OF(DIR(3))
367 (6) = EAST_OF(DIR(4))
368
369 (7) = WEST_OF(DIR(3))
370 (8) = WEST_OF(DIR(4))
371
372 (9) = TOP_OF(IJK)
373 DIR(10) = BOTTOM_OF(IJK)
374
375 DIR(11) = NORTH_OF(DIR(9))
376 (12) = SOUTH_OF(DIR(9))
377
378 (13) = NORTH_OF(DIR(10))
379 (14) = SOUTH_OF(DIR(10))
380
381 (15) = EAST_OF(DIR(9))
382 (16) = WEST_OF(DIR(9))
383
384 (17) = EAST_OF(DIR(10))
385 (18) = WEST_OF(DIR(10))
386
387 IF(NO_K) THEN
388 DMAX = 8
389 ELSE
390 DMAX = 18
391 ENDIF
392
393 DO D = 1,DMAX
394
395 IJKC = DIR(D)
396
397 U_NODE = ((.NOT.BLOCKED_U_CELL_AT(IJKC)).AND.(.NOT.WALL_U_AT(IJKC)))
398 V_NODE = ((.NOT.BLOCKED_V_CELL_AT(IJKC)).AND.(.NOT.WALL_V_AT(IJKC)))
399
400
401 IF(NO_K) THEN
402 VEL_NODE = ((U_NODE).AND.(V_NODE))
403 ELSE
404 W_NODE = ((.NOT.BLOCKED_W_CELL_AT(IJKC)).AND.(.NOT.WALL_W_AT(IJKC)))
405 VEL_NODE = ((U_NODE).AND.(V_NODE).AND.(W_NODE))
406 ENDIF
407
408 IF(W_NODE) THEN
409 W_MASTER_OF(IJK) = IJKC
410 MASTER_FOUND = .TRUE.
411 EXIT
412 ENDIF
413 ENDDO
414
415 IF(.NOT.MASTER_FOUND) THEN
416 BCV = BC_W_ID(IJK)
417 IF(BCV>0) THEN
418 IF(BC_TYPE(BCV) == 'CG_FSW') THEN
419 WRITE(*,*) ' WARNING IN SUBROUTINE: GET_W_MASTER_CELLS:'
420 WRITE(*,*) ' NO MASTER CELL FOUND FOR W_MOMENTUM WALL CELL:', IJK,I,J,K
421 WRITE(*,*) ' REVERTING TO NO SLIP WALL BOUNDARY CONDITION IN THIS CELL'
422 BC_W_ID(IJK) = NSW_GHOST_BC_ID
423 WRITE(*,*) ' BC_W_ID(IJK) = ', BC_W_ID(IJK)
424 ENDIF
425
426
427
428
429 ENDIF
430
431 ENDIF
432 ENDIF
433 END DO
434
435
436 RETURN
437
438 END SUBROUTINE GET_W_MASTER_CELLS
439