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