File: N:\mfix\model\bc_mod.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 MODULE bc
24
25 Use param, only: dimension_bc, dim_scalar, dim_m, dim_n_g, dim_n_s
26
27
28
29
30 DOUBLE PRECISION BC_X_w (DIMENSION_BC)
31
32
33
34 DOUBLE PRECISION BC_X_e (DIMENSION_BC)
35
36
37
38 DOUBLE PRECISION BC_Y_s (DIMENSION_BC)
39
40
41
42 DOUBLE PRECISION BC_Y_n (DIMENSION_BC)
43
44
45
46 DOUBLE PRECISION BC_Z_b (DIMENSION_BC)
47
48
49
50 DOUBLE PRECISION BC_Z_t (DIMENSION_BC)
51
52
53
54 INTEGER BC_I_w (DIMENSION_BC)
55
56
57
58 INTEGER BC_I_e (DIMENSION_BC)
59
60
61
62 INTEGER BC_J_s (DIMENSION_BC)
63
64
65
66 INTEGER BC_J_n (DIMENSION_BC)
67
68
69
70 INTEGER BC_K_b (DIMENSION_BC)
71
72
73
74 INTEGER BC_K_t (DIMENSION_BC)
75
76
77 DOUBLE PRECISION BC_EP_g (DIMENSION_BC)
78
79
80 DOUBLE PRECISION BC_P_g (DIMENSION_BC)
81
82
83
84 DOUBLE PRECISION BC_RO_g (DIMENSION_BC)
85
86
87
88 DOUBLE PRECISION BC_ROP_g (DIMENSION_BC)
89
90
91
92 DOUBLE PRECISION BC_ROP_s (DIMENSION_BC, DIM_M)
93 DOUBLE PRECISION BC_EP_s (DIMENSION_BC, DIM_M)
94
95
96
97 DOUBLE PRECISION BC_T_g (DIMENSION_BC)
98
99
100
101 DOUBLE PRECISION BC_T_s (DIMENSION_BC, DIM_M)
102
103
104
105 DOUBLE PRECISION BC_Theta_m (DIMENSION_BC, DIM_M)
106
107
108
109 DOUBLE PRECISION BC_U_g (DIMENSION_BC)
110
111
112
113 DOUBLE PRECISION BC_U_s (DIMENSION_BC, DIM_M)
114
115
116
117 DOUBLE PRECISION BC_V_g (DIMENSION_BC)
118
119
120
121 DOUBLE PRECISION BC_V_s (DIMENSION_BC, DIM_M)
122
123
124
125 DOUBLE PRECISION BC_W_g (DIMENSION_BC)
126
127
128
129 DOUBLE PRECISION BC_W_s (DIMENSION_BC, DIM_M)
130
131
132
133
134
135
136 DOUBLE PRECISION BC_VELMAG_g (DIMENSION_BC)
137
138
139
140 DOUBLE PRECISION BC_VELMAG_s (DIMENSION_BC, DIM_M)
141
142
143
144
145 CHARACTER(LEN=16) :: BC_TYPE (DIMENSION_BC)
146 INTEGER :: BC_TYPE_ENUM (DIMENSION_BC)
147
148 ENUM, BIND(C)
149 ENUMERATOR :: CG_NSW, CG_FSW, CG_PSW, CG_MI, NONE
150 ENUMERATOR :: NO_SLIP_WALL, FREE_SLIP_WALL, PAR_SLIP_WALL, NSW, FSW, PSW
151 ENUMERATOR :: P_OUTFLOW, MASS_OUTFLOW, OUTFLOW
152 ENUMERATOR :: P_INFLOW, MASS_INFLOW
153 ENUMERATOR :: CG_PO, CG_MO
154 ENUMERATOR :: BLANK
155 ENUMERATOR :: DUMMY
156 END ENUM
157
158
159 INTEGER, PARAMETER :: DIM_BCTYPE = 21
160
161 CHARACTER(LEN=16), DIMENSION(1:DIM_BCTYPE) ::VALID_BC_TYPE = (/&
162 'MASS_INFLOW ', 'MI ',&
163 'MASS_OUTFLOW ', 'MO ',&
164 'P_INFLOW ', 'PI ',&
165 'P_OUTFLOW ', 'PO ',&
166 'FREE_SLIP_WALL ', 'FSW ',&
167 'NO_SLIP_WALL ', 'NSW ',&
168 'PAR_SLIP_WALL ', 'PSW ',&
169 'OUTFLOW ', 'OF ',&
170 'CG_NSW ', 'CG_FSW ',&
171 'CG_PSW ', 'CG_MI ',&
172 'CG_PO '/)
173
174 INTEGER, DIMENSION(1:DIM_BCTYPE) ::VALID_BC_TYPE_ENUM = (/&
175 MASS_INFLOW , MASS_INFLOW ,&
176 MASS_OUTFLOW , MASS_OUTFLOW ,&
177 P_INFLOW , P_INFLOW ,&
178 P_OUTFLOW , P_OUTFLOW ,&
179 FREE_SLIP_WALL , FSW ,&
180 NO_SLIP_WALL , NSW ,&
181 PAR_SLIP_WALL , PSW ,&
182 OUTFLOW , OUTFLOW ,&
183 CG_NSW , CG_FSW ,&
184 CG_PSW , CG_MI ,&
185 CG_PO /)
186
187
188
189
190
191
192 LOGICAL BC_PO_APPLY_TO_DES (DIMENSION_BC)
193
194
195 DOUBLE PRECISION BC_VOLFLOW_g (DIMENSION_BC)
196
197
198 DOUBLE PRECISION BC_VOLFLOW_s (DIMENSION_BC, DIM_M)
199
200
201 DOUBLE PRECISION BC_MASSFLOW_g (DIMENSION_BC)
202
203
204 DOUBLE PRECISION BC_MASSFLOW_s (DIMENSION_BC, DIM_M)
205
206
207 LOGICAL BC_DEFINED (DIMENSION_BC)
208
209
210
211
212 INTEGER BC_JJ_PS (DIMENSION_BC)
213
214
215
216
217 CHARACTER BC_PLANE (DIMENSION_BC)
218
219
220
221 DOUBLE PRECISION BC_DT_0 (DIMENSION_BC)
222
223
224 DOUBLE PRECISION BC_Jet_g (DIMENSION_BC)
225
226
227 DOUBLE PRECISION BC_Jet_g0 (DIMENSION_BC)
228
229
230 DOUBLE PRECISION BC_DT_h (DIMENSION_BC)
231
232
233 DOUBLE PRECISION BC_Jet_gh (DIMENSION_BC)
234
235
236 DOUBLE PRECISION BC_DT_l (DIMENSION_BC)
237
238
239 DOUBLE PRECISION BC_Jet_gl (DIMENSION_BC)
240
241
242 DOUBLE PRECISION BC_TIME (DIMENSION_BC)
243
244
245 DOUBLE PRECISION BC_AREA (DIMENSION_BC)
246
247
248 DOUBLE PRECISION BC_VOL (DIMENSION_BC)
249
250
251 DOUBLE PRECISION BC_X_g (DIMENSION_BC, DIM_N_g)
252
253
254 DOUBLE PRECISION BC_X_s (DIMENSION_BC, DIM_M, DIM_N_s)
255
256
257 DOUBLE PRECISION BC_MOUT_g(DIMENSION_BC)
258
259
260 DOUBLE PRECISION BC_MOUT_s(DIMENSION_BC, DIM_M)
261
262
263 DOUBLE PRECISION BC_VOUT_g(DIMENSION_BC)
264
265
266 DOUBLE PRECISION BC_VOUT_s(DIMENSION_BC, DIM_M)
267
268
269 INTEGER BC_OUT_N (DIMENSION_BC)
270
271
272 DOUBLE PRECISION DELP_X
273
274
275 DOUBLE PRECISION DELP_Y
276
277
278 DOUBLE PRECISION DELP_Z
279
280
281
282
283 DOUBLE PRECISION Flux_g
284
285
286 DOUBLE PRECISION U_g0
287
288
289 DOUBLE PRECISION V_g0
290
291
292 DOUBLE PRECISION W_g0
293
294
295 DOUBLE PRECISION U_s0 (DIM_M)
296
297
298 DOUBLE PRECISION V_s0 (DIM_M)
299
300
301 DOUBLE PRECISION W_s0 (DIM_M)
302
303
304 INTEGER IJK_P_g
305
306
307 DOUBLE PRECISION BC_hw_g (DIMENSION_BC)
308
309
310 DOUBLE PRECISION BC_hw_s (DIMENSION_BC, DIM_M)
311
312
313 DOUBLE PRECISION BC_Uw_g (DIMENSION_BC)
314
315
316 DOUBLE PRECISION BC_Vw_g (DIMENSION_BC)
317
318
319 DOUBLE PRECISION BC_Ww_g (DIMENSION_BC)
320
321
322 DOUBLE PRECISION BC_Uw_s (DIMENSION_BC, DIM_M)
323
324
325 DOUBLE PRECISION BC_Vw_s (DIMENSION_BC, DIM_M)
326
327
328 DOUBLE PRECISION BC_Ww_s (DIMENSION_BC, DIM_M)
329
330
331
332 DOUBLE PRECISION BC_hw_T_g (DIMENSION_BC)
333
334
335 DOUBLE PRECISION BC_hw_T_s (DIMENSION_BC, DIM_M)
336
337
338 DOUBLE PRECISION BC_Tw_g (DIMENSION_BC)
339
340
341 DOUBLE PRECISION BC_Tw_s (DIMENSION_BC, DIM_M)
342
343
344 DOUBLE PRECISION BC_C_T_g (DIMENSION_BC)
345
346
347 DOUBLE PRECISION BC_C_T_s (DIMENSION_BC, DIM_M)
348
349
350
351
352 DOUBLE PRECISION BC_hw_Theta_m (DIMENSION_BC, DIM_M)
353
354
355 DOUBLE PRECISION BC_Thetaw_m (DIMENSION_BC, DIM_M)
356
357
358 DOUBLE PRECISION BC_C_Theta_m (DIMENSION_BC, DIM_M)
359
360
361
362 DOUBLE PRECISION BC_hw_X_g (DIMENSION_BC, DIM_N_g)
363
364
365 DOUBLE PRECISION BC_hw_X_s (DIMENSION_BC, DIM_M, DIM_N_s)
366
367
368 DOUBLE PRECISION BC_Xw_g (DIMENSION_BC, DIM_N_g)
369
370
371 DOUBLE PRECISION BC_Xw_s (DIMENSION_BC, DIM_M, DIM_N_s)
372
373
374 DOUBLE PRECISION BC_C_X_g (DIMENSION_BC, DIM_N_g)
375
376
377 DOUBLE PRECISION BC_C_X_s (DIMENSION_BC, DIM_M, DIM_N_s)
378
379
380
381
382
383
384 DOUBLE PRECISION BC_Scalar (DIMENSION_BC, DIM_scalar)
385
386
387
388 DOUBLE PRECISION BC_hw_Scalar (DIMENSION_BC, DIM_scalar)
389
390
391
392 DOUBLE PRECISION BC_C_Scalar (DIMENSION_BC, DIM_scalar)
393
394
395
396 DOUBLE PRECISION BC_ScalarW (DIMENSION_BC, DIM_scalar)
397
398
399
400
401
402
403 DOUBLE PRECISION BC_K_Turb_G (DIMENSION_BC)
404 DOUBLE PRECISION BC_E_Turb_G (DIMENSION_BC)
405
406 LOGICAL:: CG_MI_CONVERTED_TO_PS(DIMENSION_BC)
407
408
409
410
411
412 INTEGER :: BC_PIC_MI_CONST_NPC(DIMENSION_BC, DIM_M)
413
414
415
416
417 DOUBLE PRECISION :: BC_PIC_MI_CONST_STATWT(DIMENSION_BC, DIM_M)
418
419 CONTAINS
420
421 LOGICAL FUNCTION IS_CG(boundary_condition)
422 implicit none
423 INTEGER, intent(in) :: boundary_condition
424 IS_CG = ((boundary_condition .eq. CG_PO) &
425 .or. (boundary_condition .eq. CG_MO) &
426 .or. (boundary_condition .eq. CG_NSW) &
427 .or. (boundary_condition .eq. CG_FSW) &
428 .or. (boundary_condition .eq. CG_PSW) &
429 .or. (boundary_condition .eq. CG_MI) &
430 )
431 END FUNCTION IS_CG
432
433 LOGICAL FUNCTION IS_NSW(boundary_condition)
434 implicit none
435 INTEGER, intent(in) :: boundary_condition
436 IS_NSW = ((boundary_condition .eq. CG_NSW) &
437 )
438 END FUNCTION IS_NSW
439
440 LOGICAL FUNCTION IS_FSW(boundary_condition)
441 implicit none
442 INTEGER, intent(in) :: boundary_condition
443 IS_FSW = ((boundary_condition .eq. CG_FSW) &
444 )
445 END FUNCTION IS_FSW
446
447 LOGICAL FUNCTION IS_PSW(boundary_condition)
448 implicit none
449 INTEGER, intent(in) :: boundary_condition
450 IS_PSW = ((boundary_condition .eq. CG_PSW) &
451 )
452 END FUNCTION IS_PSW
453
454 END MODULE bc
455