File: N:\mfix\model\usr_prop_mod.f
1
2
3 module usr_prop
4 use param, only: dim_m
5
6
7 LOGICAL :: USR_ROG
8 LOGICAL :: USR_CPG
9 LOGICAL :: USR_ROS(DIM_M)
10 LOGICAL :: USR_CPS(DIM_M)
11
12
13 LOGICAL :: USR_MUG
14 LOGICAL :: USR_KG
15 LOGICAL :: USR_DIFG
16 LOGICAL :: USR_MUS(DIM_M)
17 LOGICAL :: USR_KS(DIM_M)
18 LOGICAL :: USR_DIFS(DIM_M)
19
20
21 LOGICAL :: USR_FGS(DIM_M)
22 LOGICAL :: USR_FSS( (DIM_M*(DIM_M-1)/2)+1 )
23
24 LOGICAL :: USR_GAMA(DIM_M)
25
26 ENUM, BIND(C)
27 ENUMERATOR :: Gas_Density, Solids_Density
28 ENUMERATOR :: Gas_SpecificHeat, Solids_SpecificHeat
29 ENUMERATOR :: Gas_Viscosity, Solids_Viscosity
30 ENUMERATOR :: Gas_Conductivity, Solids_Conductivity
31 ENUMERATOR :: Gas_Diffusivity, Solids_Diffusivity
32 ENUMERATOR :: GasSolids_Drag, SolidsSolids_Drag
33 ENUMERATOR :: GasSolids_HeatTransfer
34 ENUMERATOR :: BLANK
35 ENUMERATOR :: DUMMY
36 END ENUM
37
38
39 CONTAINS
40
41
42
43
44
45
46
47
48 SUBROUTINE CALC_USR_PROP(lprop, lM, lL, lerr)
49
50
51
52 use compar, only: ijkstart3, ijkend3, myPE, numPEs
53 use functions, only: fluid_at, wall_at, fluidorp_flow_at
54 use output, only: REPORT_NEG_DENSITY
55 use output, only: REPORT_NEG_SPECIFICHEAT
56 use param1, only: undefined_i, zero
57 use physprop, only: nmax
58 use physprop, only: k_g, dif_g, c_pg, mu_g
59 use physprop, only: k_s, dif_s, c_ps
60 use fldvar, only: ro_g, rop_g, ep_g
61 use fldvar, only: ro_s, p_s
62 use visc_g, only: mu_gt, lambda_gt
63 use visc_s, only: mu_s, lambda_s
64 use utilities, only: mfix_isnan
65
66 use error_manager
67
68 IMPLICIT NONE
69
70
71
72
73
74
75
76
77
78
79 INTEGER, INTENT(IN) :: lprop
80
81
82 INTEGER, OPTIONAL, INTENT(IN) :: lM
83
84
85 INTEGER, OPTIONAL, INTENT(IN) :: lL
86
87
88
89
90
91
92 INTEGER, OPTIONAL, INTENT(INOUT) :: lerr(0:numPEs-1)
93
94
95
96
97 INTEGER :: IJK
98
99 INTEGER :: M, L, N
100
101 LOGICAL :: wHeader
102
103
104
105
106 IF (.NOT.present(lM)) THEN
107 M = UNDEFINED_I
108 ELSE
109 M = lM
110 ENDIF
111
112
113 IF (.NOT.present(lL)) THEN
114 L = UNDEFINED_I
115 ELSE
116 L = lL
117 ENDIF
118
119 N = UNDEFINED_I
120
121 SELECT CASE(lProp)
122
123
124 CASE(Gas_Density)
125 wHeader = .TRUE.
126 DO IJK=IJKSTART3,IJKEND3
127 IF (WALL_AT(IJK)) CYCLE
128
129 CALL USR_PROP_ROG(IJK)
130 ROP_G(IJK) = EP_G(IJK)*RO_G(IJK)
131
132 IF(RO_G(IJK) < ZERO .or. mfix_isnan(RO_G(IJK))) THEN
133 lErr(myPE) = 100
134 IF(REPORT_NEG_DENSITY) CALL ROgErr_LOG(IJK, wHeader)
135 ENDIF
136
137 ENDDO
138
139
140 CASE(Gas_SpecificHeat)
141 DO IJK=IJKSTART3,IJKEND3
142 IF (WALL_AT(IJK)) CYCLE
143
144 CALL USR_PROP_CPG(IJK)
145
146 IF(C_PG(IJK) <= ZERO) THEN
147
148 IF(REPORT_NEG_SPECIFICHEAT) CALL CPgErr_LOG(IJK, wHeader)
149 ENDIF
150 ENDDO
151
152
153 CASE(Gas_Viscosity)
154 DO IJK=IJKSTART3,IJKEND3
155 IF (FLUID_AT(IJK)) THEN
156
157 CALL USR_PROP_MUG(IJK)
158 MU_GT(IJK) = MU_G(IJK)
159 LAMBDA_GT(IJK) = -2./3.*MU_GT(IJK)
160 ELSE
161 (IJK) = zero
162 MU_GT(IJK) = ZERO
163 LAMBDA_GT(IJK) = ZERO
164 ENDIF
165 ENDDO
166
167
168 CASE(Gas_Conductivity)
169 DO IJK=IJKSTART3,IJKEND3
170 IF (FLUID_AT(IJK)) THEN
171
172 CALL USR_PROP_KG(IJK)
173 ELSE
174 (IJK) = ZERO
175 ENDIF
176 ENDDO
177
178
179 CASE(Gas_Diffusivity)
180 DO N=1,NMAX(0)
181 DO IJK=IJKSTART3,IJKEND3
182 IF (FLUID_AT(IJK)) THEN
183
184 CALL USR_PROP_DIFG(IJK,N)
185 ELSE
186 (IJK,N) = ZERO
187 ENDIF
188 ENDDO
189 ENDDO
190
191
192 CASE(Solids_Density)
193 wHeader = .TRUE.
194 DO IJK=IJKSTART3,IJKEND3
195 IF (WALL_AT(IJK)) CYCLE
196
197 CALL USR_PROP_ROS(IJK,M)
198
199 IF(RO_S(IJK,M) <= ZERO) THEN
200 lErr(myPE) = 101
201 IF(REPORT_NEG_DENSITY) CALL ROsErr_LOG(IJK, M, wHeader)
202 ENDIF
203
204 ENDDO
205
206
207 CASE(Solids_SpecificHeat)
208 DO IJK=IJKSTART3,IJKEND3
209 IF (WALL_AT(IJK)) CYCLE
210
211 CALL USR_PROP_CPS(IJK,M)
212
213 IF(C_PS(IJK,M) <= ZERO) THEN
214
215 IF(REPORT_NEG_SPECIFICHEAT) CALL CPsErr_LOG(IJK, M, wHeader)
216 ENDIF
217 ENDDO
218
219
220 CASE(Solids_Viscosity)
221 DO IJK=IJKSTART3,IJKEND3
222 IF (FLUID_AT(IJK)) THEN
223
224 CALL USR_PROP_MUS(IJK,M)
225 ELSE
226 (IJK,M) = ZERO
227 LAMBDA_S(IJK,M) = ZERO
228 ENDIF
229 ENDDO
230
231
232 CASE(Solids_Conductivity)
233 DO IJK=IJKSTART3,IJKEND3
234 IF (FLUID_AT(IJK)) THEN
235
236 CALL USR_PROP_KS(IJK,M)
237 ELSE
238 (IJK,M) = ZERO
239 ENDIF
240 ENDDO
241
242
243 CASE(Solids_Diffusivity)
244 DO N=1,NMAX(M)
245 DO IJK=IJKSTART3,IJKEND3
246 IF (FLUID_AT(IJK)) THEN
247
248 CALL USR_PROP_DIFS(IJK,M,N)
249 ELSE
250 (IJK,M,N) = ZERO
251 ENDIF
252 ENDDO
253 ENDDO
254
255
256 CASE(GasSolids_HeatTransfer)
257 DO IJK=IJKSTART3,IJKEND3
258 IF (FLUID_AT(IJK)) THEN
259
260 CALL USR_PROP_GAMA(IJK,M)
261 ENDIF
262 ENDDO
263
264
265 CASE(GasSolids_Drag)
266 DO IJK=IJKSTART3,IJKEND3
267 IF (FLUIDorP_FLOW_AT(IJK)) THEN
268 CALL USR_PROPERTIES(lprop, IJK, M, N)
269
270
271 ENDIF
272 ENDDO
273
274
275 CASE(SolidsSolids_Drag)
276 DO IJK=IJKSTART3,IJKEND3
277 IF (WALL_AT(IJK)) CYCLE
278
279 CALL USR_PROP_FSS(IJK,L,M)
280 ENDDO
281
282
283 CASE DEFAULT
284
285
286 CALL INIT_ERR_MSG("CALC_USR_PROP")
287 WRITE(ERR_MSG, 1001) ival(lprop)
288 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
289 1001 FORMAT('Error 1101: Unknown Property= ', A)
290 CALL FINL_ERR_MSG
291 END SELECT
292
293 RETURN
294 END SUBROUTINE CALC_USR_PROP
295
296 end module usr_prop
297
298