File: N:\mfix\model\calc_k_cp.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 SUBROUTINE CALC_K_cp(Kcp)
26
27
28
29
30 USE compar
31 USE constant
32 USE fldvar
33 USE functions
34 USE geometry
35 USE indices
36 USE param
37 USE param1
38 USE physprop
39 USE pscor
40 USE rdf
41 USE run
42 USE sendrecv
43 USE solids_pressure
44 USE trace
45 USE visc_s
46 IMPLICIT NONE
47
48
49
50
51 DOUBLE PRECISION :: Kcp(DIMENSION_3)
52
53
54
55
56 INTEGER :: IJK, M
57
58 DOUBLE PRECISION :: Pc, DPcoDEPs, Mu, Mu_b, Mu_zeta, ZETA
59 DOUBLE PRECISION :: F2, DF2oDEPs, Pf, Pfmax, N_Pff
60
61 Double Precision :: blend
62
63
64
65 DOUBLE PRECISION :: DZETAoDEPs
66
67
68
69 (:) = ZERO
70
71 IF (MCP == UNDEFINED_I) THEN
72
73
74 RETURN
75 ELSE
76
77
78
79 = MCP
80 ENDIF
81
82
83
84 IF(CLOSE_PACKED(M)) THEN
85
86
87
88
89
90
91 DO IJK = ijkstart3, ijkend3
92 IF(.NOT.WALL_AT(IJK))THEN
93
94 IF (FRICTION) THEN
95
96 IF ((ONE-EP_G(IJK)).GT.EPS_f_min) THEN
97
98
99
100 IF ((ONE-EP_G(IJK)).GT.(ONE-ep_star_array(ijk))) THEN
101
102
103
104 = (to_SI*Fr)*((delta**5)*&
105 (2d0*(ONE-ep_star_array(IJK)-delta) - &
106 2d0*eps_f_min)+&
107 ((ONE-ep_star_array(ijk)-delta)-eps_f_min)*&
108 (5*delta**4))/(delta**10)
109
110 Pc = (to_SI*Fr)*&
111 ( ((ONE-ep_star_array(IJK)-delta)-&
112 EPS_f_min)**N_Pc )/(delta**D_Pc)
113 Pc = Pc + DPcoDEPS*( (ONE-EP_G(IJK))+delta-&
114 (ONE-ep_star_array(IJK)))
115
116
117
118
119
120 ELSE
121 Pc = Fr*(((ONE-EP_G(IJK)) - EPS_f_min)**N_Pc)/&
122 (((ONE-ep_star_array(ijk)) - (ONE-EP_G(IJK))&
123 + SMALL_NUMBER)**D_Pc)
124 DPcoDEPs =&
125 Fr*(((ONE-EP_G(IJK)) - EPS_f_min)**(N_Pc - ONE))&
126 *(N_Pc*((ONE-ep_star_array(ijk)) - (ONE-EP_G(IJK)))&
127 +D_Pc*((ONE-EP_G(IJK)) - EPS_f_min))&
128 / (((ONE-ep_star_array(ijk)) - (ONE-EP_G(IJK)) + &
129 SMALL_NUMBER)**(D_Pc + ONE))
130 ENDIF
131
132 Mu = (5d0*DSQRT(Pi*Theta_m(IJK,M))&
133
134 *D_p(IJK,M)*RO_S(IJK,M))/96d0
135
136 Mu_b = (256d0*Mu*EP_s(IJK,M)*EP_s(IJK,M)&
137 *G_0(IJK,M,M))/(5d0*Pi)
138
139 IF (SAVAGE.EQ.1) THEN
140 Mu_zeta =&
141 ((2d0+ALPHA)/3d0)*((Mu/(Eta*(2d0-Eta)*&
142 G_0(IJK,M,M)))*(1d0+1.6d0*Eta*EP_s(IJK,M)*&
143 G_0(IJK,M,M))*(1d0+1.6d0*Eta*(3d0*Eta-2d0)*&
144 EP_s(IJK,M)*G_0(IJK,M,M))+(0.6d0*Mu_b*Eta))
145
146 = ((48d0*Eta*(1d0-Eta)*RO_S(IJK,M)*EP_s(IJK,M)*&
147 EP_s(IJK,M)*G_0(IJK,M,M)*&
148 (Theta_m(IJK,M)**1.5d0))/&
149 (SQRT_Pi*D_p(IJK,M)*2d0*Mu_zeta))**0.5d0
150
151 ELSEIF (SAVAGE.EQ.0) THEN
152 ZETA = (SMALL_NUMBER +&
153 trD_s2(IJK,M) - ((trD_s_C(IJK,M)*&
154 trD_s_C(IJK,M))/3.d0))**0.5d0
155
156 ELSE
157 ZETA = ((Theta_m(IJK,M)/(D_p(IJK,M)*D_p(IJK,M))) +&
158 (trD_s2(IJK,M) - ((trD_s_C(IJK,M)*&
159 trD_s_C(IJK,M))/3.d0)))**0.5d0
160
161 ENDIF
162
163 IF (trD_s_C(IJK,M) .GE. ZERO) THEN
164 N_Pff = DSQRT(3d0)/(2d0*Sin_Phi)
165 ELSE
166 N_Pff = N_Pf
167 ENDIF
168
169 IF ((trD_s_C(IJK,M)/(ZETA*N_Pff*DSQRT(2d0)*&
170 Sin_Phi)) .GT. 1d0) THEN
171 F2 = 0d0
172 DF2oDEPs = ZERO
173 ELSEIF(trD_s_C(IJK,M) == ZERO) THEN
174 F2 = ONE
175 DF2oDEPs = ZERO
176 ELSE
177 F2 = (1d0 - (trD_s_C(IJK,M)/(ZETA*N_Pff*&
178 DSQRT(2d0)*Sin_Phi)))**(N_Pff-1d0)
179 IF (SAVAGE.EQ.1) THEN
180 DF2oDEPs = (N_Pff-1d0)*(F2**(N_Pff-2d0))*&
181 trD_s_C(IJK,M)&
182 *DZETAoDEPs(EP_s(IJK,M), IJK, M)&
183 / (ZETA*ZETA*&
184 N_Pff*DSQRT(2d0)*Sin_Phi)
185 ELSE
186 DF2oDEPs=ZERO
187 ENDIF
188
189 Pf = Pc*F2
190 Pfmax = Pc*((N_Pf/(N_Pf-1d0))**(N_Pf-1d0))
191
192 IF (Pf> Pfmax) THEN
193 F2 = (N_Pf/(N_Pf-1d0))**(N_Pf-1d0)
194 DF2oDEPS = ZERO
195 ENDIF
196 ENDIF
197
198
199
200
201 (IJK) = F2*DPcoDEPS + Pc*DF2oDEPS
202
203 ELSE
204
205 (IJK) = ZERO
206
207 ENDIF
208
209
210
211 ELSE
212
213
214 IF(EP_g(IJK) .LT. ep_g_blend_end(ijk)) THEN
215
216
217
218
219 (IJK) = dPodEP_s(EP_s(IJK, M),ep_g_blend_end(ijk))
220
221 IF(BLENDING_STRESS) THEN
222 blend = blend_function(IJK)
223 Kcp(IJK) = (1.0d0-blend) * Kcp(IJK)
224 ENDIF
225 ELSE
226
227
228 (IJK) = ZERO
229 ENDIF
230
231
232
233 ENDIF
234
235 ELSE
236 (IJK) = ZERO
237 ENDIF
238
239 ENDDO
240 ENDIF
241
242 CALL send_recv(Kcp, 2)
243
244 RETURN
245 END
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266 DOUBLE PRECISION FUNCTION DZETAoDEPs(EPs, IJK, M)
267
268
269
270
271 USE compar
272 USE constant
273 USE fldvar
274 USE functions
275 USE geometry
276 USE indices
277 USE param
278 USE param1
279 USE physprop
280 USE pscor
281 USE rdf
282 USE run
283 USE trace
284 USE visc_s
285 IMPLICIT NONE
286
287
288
289
290 DOUBLE PRECISION, INTENT(IN) :: EPs
291
292 INTEGER, INTENT(IN) :: IJK,M
293
294
295
296
297 DOUBLE PRECISION :: g0
298
299 DOUBLE PRECISION :: Mu, Mu_b, DEPs2G_0oDEPs, F1, DF1oDEPs
300
301
302 = G_0(IJK, M, M)
303
304 = (5d0*DSQRT(Pi*Theta_m(IJK,M))*D_p(IJK,M)*RO_S(IJK,M))/96d0
305
306 Mu_b = (256d0*Mu*EPs*EPs*g0/(5d0*Pi))
307
308 DEPs2G_0oDEPs = EPs*EPs*DG_0DNU(EPs) + 2d0*EPs*g0
309
310 F1 = ((2d0+ALPHA)/3d0)*((2*Mu/(Eta*(2d0-Eta)*&
311 g0))*(1d0+1.6d0*Eta*EPs*g0)*(1d0+1.6d0*Eta*(3d0*Eta-2d0)&
312 *EPs*g0)+(1.2d0*Mu_b*Eta))
313
314 DF1oDEPs = ((2d0+ALPHA)/3d0)*((2*Mu/(Eta*(2d0-Eta))*&
315 ((-DG_0DNU(EPs)/(g0*g0)) + (1.6d0*Eta*(3d0*Eta-1d0))&
316 + (64d0*Eta*Eta*(3d0*Eta-2d0)*DEPs2G_0oDEPs/25d0))) +&
317 3.2d0*Eta*RO_S(IJK,M)*D_p(IJK,M)*((Theta_m(IJK,M)/Pi)**0.5d0)&
318 *DEPs2G_0oDEPs)
319
320 DZETAoDEPs = 0.5d0*((48d0*Eta*(1d0-Eta)*RO_S(IJK,M)*F1*&
321 (Theta_m(IJK,M)**1.5d0)/&
322 (SQRT_Pi*D_p(IJK,M)*EPs*EPs*g0))**0.5d0)*&
323 (F1*DEPs2G_0oDEPs - EPs*Eps*g0*DF1oDEPs)/(F1*F1)
324
325
326 RETURN
327 END
328
329