File: /nfs/home/0/users/jenkins/mfix.git/model/conv_rop.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SUBROUTINE CONV_ROP(IER)
21
22
23
24
25 USE param
26 USE param1
27 USE fldvar
28 USE mflux
29 USE physprop
30 USE run
31 IMPLICIT NONE
32
33
34
35
36
37
38
39
40
41
42 INTEGER IER
43
44
45 INTEGER M
46
47
48
49
50 IF (DISCRETIZE(1) == 0) THEN
51 CALL CONV_ROP0 (ROP_g, U_g, V_g, W_g, ROP_gE, ROP_gN, ROP_gT, IER)
52 ELSE
53 CALL CONV_ROP1 (DISCRETIZE(1), ROP_g, U_g, V_g, W_g, ROP_gE, ROP_gN, ROP_gT, IER)
54 ENDIF
55
56 IF (DISCRETIZE(2) == 0) THEN
57 DO M = 1, MMAX
58 CALL CONV_ROP0 (ROP_s(1, M), U_s(1, M), V_s(1, M), W_s(1, M), &
59 ROP_sE(1, M), ROP_sN(1, M), ROP_sT(1, M), IER)
60 ENDDO
61 ELSE
62 DO M = 1, MMAX
63 CALL CONV_ROP1 (DISCRETIZE(2), ROP_s(1, M), U_s(1, M), V_s(1, M), W_s(1, M), &
64 ROP_sE(1, M), ROP_sN(1, M), ROP_sT(1, M), IER)
65 ENDDO
66 ENDIF
67
68 RETURN
69 END SUBROUTINE CONV_ROP
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 SUBROUTINE CONV_ROP0(ROP, U, V, W, ROP_E, ROP_N, ROP_T, IER)
93
94
95
96
97 USE param
98 USE param1
99 USE run
100 USE parallel
101 USE physprop
102 USE geometry
103 USE indices
104 USE compar
105 USE functions
106 IMPLICIT NONE
107
108
109
110
111
112
113
114
115
116
117 DOUBLE PRECISION ROP(DIMENSION_3)
118
119
120 DOUBLE PRECISION U(DIMENSION_3), V(DIMENSION_3), W(DIMENSION_3)
121
122
123 DOUBLE PRECISION ROP_E(DIMENSION_3), ROP_N(DIMENSION_3), ROP_T(DIMENSION_3)
124
125
126 INTEGER IER
127
128
129 INTEGER IJK, IJKE, IJKN, IJKT
130 INTEGER IJKW, IJKS, IJKB, IMJK, IJMK, IJKM
131
132
133
134
135
136
137 DO IJK = ijkstart3, ijkend3
138
139 IF (FLUID_AT(IJK)) THEN
140 IJKE = EAST_OF(IJK)
141 IJKN = NORTH_OF(IJK)
142 IJKT = TOP_OF(IJK)
143
144
145 IF (U(IJK) >= ZERO) THEN
146 ROP_E(IJK) = ROP(IJK)
147 ELSE
148 ROP_E(IJK) = ROP(IJKE)
149 ENDIF
150
151
152 IF (V(IJK) >= ZERO) THEN
153 ROP_N(IJK) = ROP(IJK)
154 ELSE
155 ROP_N(IJK) = ROP(IJKN)
156 ENDIF
157
158
159 IF (DO_K) THEN
160 IF (W(IJK) >= ZERO) THEN
161 ROP_T(IJK) = ROP(IJK)
162 ELSE
163 ROP_T(IJK) = ROP(IJKT)
164 ENDIF
165 ENDIF
166
167
168 = IM_OF(IJK)
169 IF (.NOT.FLUID_AT(IMJK)) THEN
170 IJKW = WEST_OF(IJK)
171 IF (U(IMJK) >= ZERO) THEN
172 ROP_E(IMJK) = ROP(IJKW)
173 ELSE
174 ROP_E(IMJK) = ROP(IJK)
175 ENDIF
176 ENDIF
177
178
179 = JM_OF(IJK)
180 IF (.NOT.FLUID_AT(IJMK)) THEN
181 IJKS = SOUTH_OF(IJK)
182 IF (V(IJMK) >= ZERO) THEN
183 ROP_N(IJMK) = ROP(IJKS)
184 ELSE
185 ROP_N(IJMK) = ROP(IJK)
186 ENDIF
187 ENDIF
188
189
190 IF (DO_K) THEN
191 IJKM = KM_OF(IJK)
192 IF (.NOT.FLUID_AT(IJKM)) THEN
193 IJKB = BOTTOM_OF(IJK)
194 IF (W(IJKM) >= ZERO) THEN
195 ROP_T(IJKM) = ROP(IJKB)
196 ELSE
197 ROP_T(IJKM) = ROP(IJK)
198 ENDIF
199 ENDIF
200 ENDIF
201 ENDIF
202 END DO
203
204 RETURN
205 END SUBROUTINE CONV_ROP0
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229 SUBROUTINE CONV_ROP1(DISC, ROP, U, V, W, ROP_E, ROP_N, ROP_T, IER)
230
231
232
233
234
235 USE param
236 USE param1
237 USE run
238 USE parallel
239 USE physprop
240 USE geometry
241 USE indices
242 USE xsi
243 USE xsi_array
244 USE compar
245 USE functions
246 IMPLICIT NONE
247
248
249
250
251
252
253
254
255
256
257
258 INTEGER DISC
259
260
261 DOUBLE PRECISION ROP(DIMENSION_3)
262
263
264 DOUBLE PRECISION U(DIMENSION_3), V(DIMENSION_3), W(DIMENSION_3)
265
266
267 DOUBLE PRECISION ROP_E(DIMENSION_3), ROP_N(DIMENSION_3), ROP_T(DIMENSION_3)
268
269
270 INTEGER IER
271
272
273 INTEGER IJK, IJKE, IJKN, IJKT
274 INTEGER IJKW, IJKS, IJKB, IMJK, IJMK, IJKM
275
276 Integer incr
277
278
279 call lock_xsi_array
280
281
282
283
284 =0
285 CALL CALC_XSI (DISC, ROP, U, V, W, XSI_E, XSI_N, XSI_T,incr)
286
287
288
289
290
291
292 DO IJK = ijkstart3, ijkend3
293
294 IF (FLUID_AT(IJK)) THEN
295 IJKE = EAST_OF(IJK)
296 IJKN = NORTH_OF(IJK)
297 IJKT = TOP_OF(IJK)
298
299
300 (IJK) = ((ONE-XSI_E(IJK))*ROP(IJK)+XSI_E(IJK)*ROP(IJKE))
301
302
303 (IJK) = ((ONE-XSI_N(IJK))*ROP(IJK)+XSI_N(IJK)*ROP(IJKN))
304
305
306 IF (DO_K) THEN
307 ROP_T(IJK) = ((ONE - XSI_T(IJK))*ROP(IJK)+XSI_T(IJK)*ROP(IJKT))
308 ENDIF
309
310
311 = IM_OF(IJK)
312 IF (.NOT.FLUID_AT(IMJK)) THEN
313 IJKW = WEST_OF(IJK)
314 ROP_E(IMJK) = ((ONE - XSI_E(IMJK))*ROP(IJKW)+XSI_E(IMJK)*ROP(IJK))
315 ENDIF
316
317
318 = JM_OF(IJK)
319 IF (.NOT.FLUID_AT(IJMK)) THEN
320 IJKS = SOUTH_OF(IJK)
321 ROP_N(IJMK) = ((ONE - XSI_N(IJMK))*ROP(IJKS)+XSI_N(IJMK)*ROP(IJK))
322 ENDIF
323
324
325 IF (DO_K) THEN
326 IJKM = KM_OF(IJK)
327 IF (.NOT.FLUID_AT(IJKM)) THEN
328 IJKB = BOTTOM_OF(IJK)
329 ROP_T(IJKM) = ((ONE - XSI_T(IJKM))*ROP(IJKB)+XSI_T(IJKM)*ROP(IJK))
330 ENDIF
331 ENDIF
332 ENDIF
333 END DO
334
335 call unlock_xsi_array
336
337
338 RETURN
339 END SUBROUTINE CONV_ROP1
340