File: /nfs/home/0/users/jenkins/mfix.git/model/corner.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SUBROUTINE GET_CORNER_CELLS()
21
22
23
24
25
26
27
28
29 USE param
30 USE param1
31 USE geometry
32 USE physprop
33 USE indices
34 USE matrix
35 USE corner
36 USE funits
37 USE compar
38 USE functions
39 IMPLICIT NONE
40
41
42
43
44
45
46
47
48
49
50
51 INTEGER L
52
53
54
55 INTEGER IJK, IMJK, IJMK, IJKM, IPJK, IJPK, &
56 IJKP
57
58
59 INTEGER NUM
60
61
62 LOGICAL dir(-3:3), NotCorner
63
64
65
66 = 0
67
68 DO IJK = ijkstart3, ijkend3
69 IF (WALL_AT(IJK).AND..NOT.CYCLIC_AT(IJK)) THEN
70
71
72 = IM_OF(IJK)
73 IJMK = JM_OF(IJK)
74 IJKM = KM_OF(IJK)
75 IPJK = IP_OF(IJK)
76 IJPK = JP_OF(IJK)
77 IJKP = KP_OF(IJK)
78
79 = 0
80
81 IF (FLUID_AT(IMJK)) THEN
82 NUM = NUM + 1
83 DIR(W) = .TRUE.
84 ELSE
85 DIR(W) = .FALSE.
86 ENDIF
87
88 IF (FLUID_AT(IPJK)) THEN
89 NUM = NUM + 1
90 DIR(E) = .TRUE.
91 ELSE
92 DIR(E) = .FALSE.
93 ENDIF
94
95 IF (FLUID_AT(IJMK)) THEN
96 NUM = NUM + 1
97 DIR(S) = .TRUE.
98 ELSE
99 DIR(S) = .FALSE.
100 ENDIF
101
102 IF (FLUID_AT(IJPK)) THEN
103 NUM = NUM + 1
104 DIR(N) = .TRUE.
105 ELSE
106 DIR(N) = .FALSE.
107 ENDIF
108
109 IF (FLUID_AT(IJKM)) THEN
110 NUM = NUM + 1
111 DIR(B) = .TRUE.
112 ELSE
113 DIR(B) = .FALSE.
114 ENDIF
115
116 IF (FLUID_AT(IJKP)) THEN
117 NUM = NUM + 1
118 DIR(T) = .TRUE.
119 ELSE
120 DIR(T) = .FALSE.
121 ENDIF
122
123 IF (NUM > 1) THEN
124
125
126 = .TRUE.
127
128
129 IF (DIR(W) .AND. DIR(E) .OR. DIR(S) .AND. DIR(N) .OR. DIR(T)&
130 .AND. DIR(B)) THEN
131
132 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
133 ENDIF
134
135
136
137 IF (DIR(E)) THEN
138
139 IF (DIR(N)) THEN
140 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
141 ENDIF
142
143 IF (DIR(S)) THEN
144 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
145 ENDIF
146
147 IF (DO_K) THEN
148 IF (DIR(T)) THEN
149 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
150 ENDIF
151
152 IF (DIR(B)) THEN
153 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
154 ENDIF
155 ENDIF
156
157 ENDIF
158
159 IF (DIR(W)) THEN
160
161 IF (DIR(N)) THEN
162 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
163 ENDIF
164
165 IF (DIR(S)) THEN
166 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
167 ENDIF
168
169 IF (DO_K) THEN
170 IF (DIR(T)) THEN
171 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
172 ENDIF
173
174 IF (DIR(B)) THEN
175 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
176 ENDIF
177 ENDIF
178
179 ENDIF
180
181 IF (DIR(N)) THEN
182
183
184 IF (DO_K) THEN
185 IF (DIR(T)) THEN
186 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
187 ENDIF
188
189 IF (DIR(B)) THEN
190 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
191 ENDIF
192 ENDIF
193
194 ENDIF
195
196 IF (DIR(S)) THEN
197
198
199 IF (DO_K) THEN
200 IF (DIR(T)) THEN
201 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
202 ENDIF
203
204 IF (DIR(B)) THEN
205 IF (NOTCORNER) CALL ADDCORN (NOTCORNER, NCORN)
206 ENDIF
207 ENDIF
208
209 ENDIF
210
211 IF (.NOT.NOTCORNER) THEN
212 IJK_CORN(NCORN) = IJK
213
214 (IJK) = ZERO
215 AXZ(IJMK) = ZERO
216 AYZ(IJK) = ZERO
217 AYZ(IMJK) = ZERO
218 AXY(IJK) = ZERO
219 AXY(IJKM) = ZERO
220
221 (IM_OF(IJMK)) = ZERO
222 AXZ_U(IJMK) = ZERO
223 AXZ_U(IMJK) = ZERO
224 AXZ_U(IJK) = ZERO
225
226 (IM_OF(IJKM)) = ZERO
227 AXY_U(IJKM) = ZERO
228 AXY_U(IMJK) = ZERO
229 AXY_U(IJK) = ZERO
230
231 (JM_OF(IMJK)) = ZERO
232 AYZ_V(IMJK) = ZERO
233 AYZ_V(IJMK) = ZERO
234 AYZ_V(IJK) = ZERO
235
236 (JM_OF(IJKM)) = ZERO
237 AXY_V(IJKM) = ZERO
238 AXY_V(IJMK) = ZERO
239 AXY_V(IJK) = ZERO
240
241 (KM_OF(IMJK)) = ZERO
242 AYZ_W(IMJK) = ZERO
243 AYZ_W(IJKM) = ZERO
244 AYZ_W(IJK) = ZERO
245
246 (KM_OF(IJMK)) = ZERO
247 AXZ_W(IJMK) = ZERO
248 AXZ_W(IJKM) = ZERO
249 AXZ_W(IJK) = ZERO
250 ENDIF
251
252 ENDIF
253
254 ENDIF
255 END DO
256 IF (NCORN > 0) THEN
257 CALL START_LOG
258 IF(DMP_LOG)WRITE (UNIT_LOG, 1000)
259
260 DO L = 1, NCORN
261 IJK = IJK_CORN(L)
262 IF(DMP_LOG)WRITE (UNIT_LOG, 1100) IJK, I_OF(IJK), J_OF(IJK), K_OF(IJK)
263 END DO
264 IF(DMP_LOG)WRITE (UNIT_LOG, 1300)
265 CALL END_LOG
266 ENDIF
267
268 RETURN
269
270 FORMAT(/1X,70('*')//' From: Get_Corner_Cells',/&
271 ' Warning: The following wall-cells are adjacent to two or',/,&
272 ' more fluid-cells. Mass, momentum, and energy transfer ',/,&
273 ' to these wall-cells have been set to zero.',/,&
274 ' IJK I J K')
275 1100 FORMAT(3X,I6,2X,I4,2X,I4,2X,I4)
276
277 FORMAT(/1X,70('*')/)
278 END SUBROUTINE GET_CORNER_CELLS
279
280 SUBROUTINE ADDCORN(NOTCORNER, NCORN)
281
282
283
284
285
286
287
288
289 USE param
290 USE param1
291 USE compar
292 IMPLICIT NONE
293
294
295
296 INTEGER NCORN
297 LOGICAL NOTCORNER
298
299
300
301
302
303
304 CHARACTER(LEN=80) :: LINE
305
306
307
308
309 = NCORN + 1
310 IF (NCORN > MAX_NCORN) THEN
311 WRITE (LINE, '(A)') 'Error: Increase MAX_NCORN in param1.inc.'
312 CALL WRITE_ERROR ('AddCorn', LINE, 1)
313 CALL MFIX_EXIT(myPE)
314 ENDIF
315
316 = .FALSE.
317
318 RETURN
319 END SUBROUTINE ADDCORN
320
321
322
323
324
325