File: N:\mfix\model\bc_theta.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
26
27
28
29
30 SUBROUTINE BC_THETA(M, A_m, B_m)
31
32
33
34
35 USE param
36 USE param1
37 USE parallel
38 USE scales
39 USE constant
40 USE toleranc
41 USE run
42 USE physprop
43 USE fldvar
44 USE visc_s
45 USE geometry
46 USE output
47 USE indices
48 USE bc
49 USE compar
50 USE mpi_utility
51 USE fun_avg
52 USE functions
53 IMPLICIT NONE
54
55
56
57
58 INTEGER :: M
59
60 DOUBLE PRECISION A_m(DIMENSION_3, -3:3, 0:DIMENSION_M)
61
62 DOUBLE PRECISION B_m(DIMENSION_3, 0:DIMENSION_M)
63
64
65
66
67 INTEGER :: L
68
69 INTEGER :: I, J, K, I1, I2, J1, J2, K1, K2, IJK,&
70 IM, JM, KM
71
72 DOUBLE PRECISION :: Gw, Hw, Cw
73
74
75
76 DO L = 1, DIMENSION_BC
77 IF( BC_DEFINED(L) ) THEN
78 IF(BC_TYPE_ENUM(L) .EQ. NO_SLIP_WALL .OR.&
79 BC_TYPE_ENUM(L) .EQ. FREE_SLIP_WALL .OR.&
80 BC_TYPE_ENUM(L) .EQ. PAR_SLIP_WALL ) THEN
81 I1 = BC_I_w(L)
82 I2 = BC_I_e(L)
83 J1 = BC_J_s(L)
84 J2 = BC_J_n(L)
85 K1 = BC_K_b(L)
86 K2 = BC_K_t(L)
87
88 IF(BC_JJ_PS(L).GT.0) THEN
89 DO K = K1, K2
90 DO J = J1, J2
91 DO I = I1, I2
92
93 IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
94 IF (DEAD_CELL_AT(I,J,K)) CYCLE
95 = FUNIJK(I, J, K)
96 IF (FLOW_AT(IJK)) CYCLE
97 = Im1(I)
98 JM = Jm1(J)
99 KM = Km1(K)
100
101
102
103 (IJK, east, M) = ZERO
104 A_m(IJK, west, M) = ZERO
105 A_m(IJK, north, M) = ZERO
106 A_m(IJK, south, M) = ZERO
107 A_m(IJK, top, M) = ZERO
108 A_m(IJK, bottom, M) = ZERO
109 A_m(IJK, 0, M) = -ONE
110 b_m(IJK, M) = ZERO
111
112
113 IF(FLUID_AT(EAST_OF(IJK)))THEN
114 IF(EP_s(EAST_OF(IJK),M).LE.DIL_EP_s)THEN
115 A_m(IJK, east, M) = ONE
116 ELSE
117 IF (BC_JJ_PS(L).EQ.3) THEN
118
119
120 = 1d0
121 Hw = 0d0
122 Cw = 0d0
123 ELSE
124
125
126 CALL CALC_THETA_BC(IJK,EAST_OF(IJK),'E',&
127 M,L,gw,hw,cw)
128
129 IF (BC_JJ_PS(L).EQ.2) cw=0d0
130 ENDIF
131
132 A_m(IJK, east, M) = -(HALF*hw - oDX_E(I)*gw)
133 A_m(IJK, 0, M) = -(HALF*hw + oDX_E(I)*gw)
134
135 IF (BC_JJ_PS(L) .EQ. 1) THEN
136 b_m(IJK, M) = -cw
137 ELSE
138 b_m(IJK,M) = ZERO
139 ENDIF
140 ENDIF
141
142 ELSEIF(FLUID_AT(WEST_OF(IJK)))THEN
143 IF(EP_s(WEST_OF(IJK),M).LE.DIL_EP_s)THEN
144 A_m(IJK, west, M) = ONE
145 ELSE
146 IF (BC_JJ_PS(L).EQ.3) THEN
147 Gw = 1d0
148 Hw = 0d0
149 Cw = 0d0
150 ELSE
151 CALL CALC_THETA_BC(IJK,WEST_OF(IJK),'W',&
152 M,L,gw,hw,cw)
153 IF (BC_JJ_PS(L).EQ.2) cw=0d0
154 ENDIF
155
156 A_m(IJK, west, M) = -(HALF*hw - oDX_E(IM)*gw)
157 A_m(IJK, 0, M) = -(HALF*hw + oDX_E(IM)*gw)
158
159 IF (BC_JJ_PS(L) .EQ. 1) THEN
160 b_m(IJK, M) = -cw
161 ELSE
162 b_m(IJK,M) = ZERO
163 ENDIF
164 ENDIF
165
166 ELSEIF(FLUID_AT(NORTH_OF(IJK)))THEN
167 IF(EP_s(NORTH_OF(IJK),M).LE.DIL_EP_s)THEN
168 A_m(IJK, north, M) = ONE
169 ELSE
170 IF (BC_JJ_PS(L).EQ.3) THEN
171 Gw = 1d0
172 Hw = 0d0
173 Cw = 0d0
174 ELSE
175 CALL CALC_THETA_BC(IJK,NORTH_OF(IJK),'N',&
176 M,L,gw,hw,cw)
177 IF (BC_JJ_PS(L).EQ.2) cw=0d0
178 ENDIF
179
180 A_m(IJK, north, M) = -(HALF*hw - oDY_N(J)*gw)
181 A_m(IJK, 0, M) = -(HALF*hw + oDY_N(J)*gw)
182
183 IF (BC_JJ_PS(L) .EQ. 1) THEN
184 b_m(IJK, M) = -cw
185 ELSE
186 b_m(IJK,M) = ZERO
187 ENDIF
188 ENDIF
189
190 ELSEIF(FLUID_AT(SOUTH_OF(IJK)))THEN
191 IF(EP_s(SOUTH_OF(IJK),M).LE.DIL_EP_s)THEN
192 A_m(IJK, south, M) = ONE
193 ELSE
194 IF (BC_JJ_PS(L).EQ.3) THEN
195 Gw = 1d0
196 Hw = 0d0
197 Cw = 0d0
198 ELSE
199 CALL CALC_THETA_BC(IJK,SOUTH_OF(IJK),'S',&
200 M,L,gw,hw,cw)
201 IF (BC_JJ_PS(L).EQ.2) cw=0d0
202 ENDIF
203
204 A_m(IJK, south, M) = -(HALF*hw - oDY_N(JM)*gw)
205 A_m(IJK, 0, M) = -(HALF*hw + oDY_N(JM)*gw)
206
207 IF (BC_JJ_PS(L) .EQ. 1) THEN
208 b_m(IJK, M) = -cw
209 ELSE
210 b_m(IJK,M) = ZERO
211 ENDIF
212 ENDIF
213
214 ELSEIF(FLUID_AT(TOP_OF(IJK)))THEN
215 IF(EP_s(TOP_OF(IJK),M).LE.DIL_EP_s)THEN
216 A_m(IJK, top, M) = ONE
217 ELSE
218 IF (BC_JJ_PS(L).EQ.3) THEN
219 Gw = 1d0
220 Hw = 0d0
221 Cw = 0d0
222 ELSE
223 CALL CALC_THETA_BC(IJK,TOP_OF(IJK),'T',&
224 M,L,gw,hw,cw)
225 IF (BC_JJ_PS(L).EQ.2) cw=0d0
226 ENDIF
227
228 A_m(IJK, top, M) = -(HALF*hw - oX(I)*oDZ_T(K)*gw)
229 A_m(IJK, 0, M) = -(HALF*hw + oX(I)*oDZ_T(K)*gw)
230
231 IF (BC_JJ_PS(L) .EQ. 1) THEN
232 b_m(IJK, M) = -cw
233 ELSE
234 b_m(IJK,M) = ZERO
235 ENDIF
236 ENDIF
237
238 ELSEIF(FLUID_AT(BOTTOM_OF(IJK)))THEN
239 IF(EP_s(BOTTOM_OF(IJK),M).LE.DIL_EP_s)THEN
240 A_m(IJK, bottom, M) = ONE
241 ELSE
242 IF (BC_JJ_PS(L).EQ.3) THEN
243 Gw = 1d0
244 Hw = 0d0
245 Cw = 0d0
246 ELSE
247 CALL CALC_THETA_BC(IJK,BOTTOM_OF(IJK),'B',&
248 M,L,gw,hw,cw)
249 IF (BC_JJ_PS(L).EQ.2) cw=0d0
250 ENDIF
251
252 A_m(IJK, bottom, M) = -(HALF*hw - oX(I)*oDZ_T(KM)*gw)
253 A_m(IJK, 0, M) = -(HALF*hw + oX(I)*oDZ_T(KM)*gw)
254
255 IF (BC_JJ_PS(L) .EQ. 1) THEN
256 b_m(IJK, M) = -cw
257 ELSE
258 b_m(IJK,M) = ZERO
259 ENDIF
260 ENDIF
261 ENDIF
262
263 ENDDO
264 ENDDO
265 ENDDO
266
267 ENDIF
268 ENDIF
269 ENDIF
270 ENDDO
271
272 RETURN
273 END SUBROUTINE BC_THETA
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291 SUBROUTINE CALC_THETA_BC(IJK1,IJK2,FCELL,M,L,Gw,Hw,Cw)
292
293
294
295
296 USE bc
297 USE compar
298 USE constant
299 USE fldvar
300 USE fun_avg
301 USE functions
302 USE geometry
303 USE indices
304 USE mpi_utility
305 USE param
306 USE param1
307 USE physprop
308 USE rdf
309 USE run
310 USE rxns
311 USE toleranc
312 USE turb
313 USE visc_s
314 IMPLICIT NONE
315
316
317
318
319 INTEGER, INTENT(IN) :: IJK1, IJK2
320
321 CHARACTER, INTENT(IN) :: FCELL
322
323 INTEGER, INTENT(IN) :: M
324
325 INTEGER, INTENT(IN) :: L
326
327 DOUBLE PRECISION, INTENT(INOUT) :: Gw, Hw, Cw
328
329
330
331
332 INTEGER :: IJK3
333
334 INTEGER :: MM
335
336 DOUBLE PRECISION :: EPg_avg, Mu_g_avg, RO_g_avg, smallTheta
337
338 DOUBLE PRECISION :: ep_star_avg
339
340 DOUBLE PRECISION :: EPs_avg(DIMENSION_M), DP_avg(DIMENSION_M), &
341 TH_avg(DIMENSION_M)
342
343 DOUBLE PRECISION ROs_avg(DIMENSION_M)
344
345 DOUBLE PRECISION :: K_12_avg, Tau_12_avg
346
347 DOUBLE PRECISION :: USCM, VSCM, WSCM
348
349 DOUBLE PRECISION :: UGC, VGC, WGC
350
351 DOUBLE PRECISION :: VREL
352
353 DOUBLE PRECISION :: VSLIPSQ
354
355 DOUBLE PRECISION :: VWDOTN (DIMENSION_M)
356
357
358 DOUBLE PRECISION :: GNUWDOTN (DIMENSION_M)
359
360
361 DOUBLE PRECISION :: GTWDOTN (DIMENSION_M)
362
363 CHARACTER(LEN=80) LINE(1)
364
365 DOUBLE PRECISION :: g0(DIMENSION_M)
366
367 DOUBLE PRECISION :: g0EPs_avg
368
369
370
371
372 DOUBLE PRECISION :: PHIP_JJ
373
374
375
376
377
378 = (to_SI)**4 * ZERO_EP_S
379
380
381 = EP_g(IJK2)
382 ep_star_avg = EP_star_array(IJK2)
383 Mu_g_avg = Mu_g(IJK2)
384 RO_g_avg = RO_g(IJK2)
385 g0EPs_avg = ZERO
386
387
388 IF(KT_TYPE_ENUM == SIMONIN_1996) THEN
389 K_12_avg = K_12(IJK2)
390 Tau_12_avg = Tau_12(IJK2)
391 ELSE
392 K_12_avg = ZERO
393 Tau_12_avg = ZERO
394 ENDIF
395
396 DO MM = 1, SMAX
397 g0(MM) = G_0(IJK2, M, MM)
398 EPs_avg(MM) = EP_s(IJK2,MM)
399 DP_avg(MM) = D_P(IJK2,MM)
400 g0EPs_avg = g0EPs_avg + G_0(IJK2, M, MM)*EP_s(IJK2,MM)
401 ROs_avg(MM) = RO_S(IJK2,MM)
402 ENDDO
403
404
405 IF(FCELL .EQ. 'N')THEN
406 DO MM = 1, SMAX
407 TH_avg(MM) = AVG_Y(Theta_m(IJK1,MM),Theta_m(IJK2,MM),J_OF(IJK1))
408 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
409
410
411
412
413
414 (MM) = -1.d0*V_S(IJK1,MM)
415
416
417
418
419
420 = NORTH_OF(IJK2)
421 GNUWDOTN(MM) = -1.d0*(6.d0/(PI*DP_avg(MM)))*&
422 (EP_s(IJK3,MM)-EP_s(IJK2,MM))*oDY_N(J_OF(IJK2))
423
424
425
426 (MM) = -1.d0*(Theta_m(IJK3,MM)-Theta_m(IJK2,MM))*&
427 oDY_N(J_OF(IJK2))
428 ENDDO
429
430
431 = AVG_Y(AVG_X_E(U_g(IM_OF(IJK1)),U_g(IJK1),I_OF(IJK1)),&
432 AVG_X_E(U_g(IM_OF(IJK2)),U_g(IJK2),I_OF(IJK2)),&
433 J_OF(IJK1))
434 VGC = V_g(IJK1)
435 WGC = AVG_Y(AVG_Z_T(W_g(KM_OF(IJK1)), W_g(IJK1)),&
436 AVG_Z_T(W_g(KM_OF(IJK2)), W_g(IJK2)),&
437 J_OF(IJK1))
438 USCM = AVG_Y(AVG_X_E(U_s(IM_OF(IJK1),M),U_s(IJK1,M),I_OF(IJK1)),&
439 AVG_X_E(U_s(IM_OF(IJK2),M),U_s(IJK2,M),I_OF(IJK2)),&
440 J_OF(IJK1))
441 VSCM = V_s(IJK1,M)
442 WSCM = AVG_Y(AVG_Z_T(W_s(KM_OF(IJK1),M), W_s(IJK1,M)),&
443 AVG_Z_T(W_s(KM_OF(IJK2),M), W_s(IJK2,M)),&
444 J_OF(IJK1))
445
446
447 =(WSCM-BC_Ww_s(L, M))**2 + (USCM-BC_Uw_s(L, M))**2
448
449
450 ELSEIF(FCELL .EQ. 'S')THEN
451 DO MM = 1, SMAX
452 TH_avg(MM) = AVG_Y(Theta_m(IJK2, MM),Theta_m(IJK1, MM),J_OF(IJK2))
453 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
454
455
456
457
458
459 (MM) = 1.d0*V_S(IJK2,MM)
460
461
462
463
464
465 = SOUTH_OF(IJK2)
466 GNUWDOTN(MM) = 1.d0*(6.d0/(PI*DP_avg(MM)))*&
467 (EP_s(IJK2,MM)-EP_s(IJK3,MM))*oDY_N(J_OF(IJK3))
468
469
470
471 (MM) = 1.d0*(Theta_m(IJK2,MM)-Theta_m(IJK3,MM))*&
472 oDY_N(J_OF(IJK3))
473 ENDDO
474
475
476 = AVG_Y(AVG_X_E(U_g(IM_OF(IJK2)),U_g(IJK2),I_OF(IJK2)),&
477 AVG_X_E(U_g(IM_OF(IJK1)),U_g(IJK1),I_OF(IJK1)),&
478 J_OF(IJK2))
479 VGC = V_g(IJK2)
480 WGC = AVG_Y(AVG_Z_T(W_g(KM_OF(IJK2)), W_g(IJK2)),&
481 AVG_Z_T(W_g(KM_OF(IJK1)), W_g(IJK1)),&
482 J_OF(IJK2))
483 USCM = AVG_Y(AVG_X_E(U_s(IM_OF(IJK2),M),U_s(IJK2,M),I_OF(IJK2)),&
484 AVG_X_E(U_s(IM_OF(IJK1),M),U_s(IJK1,M),I_OF(IJK1)),&
485 J_OF(IJK2))
486 VSCM = V_s(IJK2,M)
487 WSCM = AVG_Y(AVG_Z_T(W_s(KM_OF(IJK2),M), W_s(IJK2,M)),&
488 AVG_Z_T(W_s(KM_OF(IJK1),M), W_s(IJK1,M)),&
489 J_OF(IJK2))
490
491
492 =(WSCM-BC_Ww_s(L, M))**2 + (USCM-BC_Uw_s(L, M))**2
493
494
495 ELSEIF(FCELL== 'E')THEN
496 DO MM = 1, SMAX
497 TH_avg(MM) = AVG_X(Theta_m(IJK1,MM),Theta_m(IJK2,MM),I_OF(IJK1))
498 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
499
500
501
502
503
504 (MM) = -1.d0*U_S(IJK1,MM)
505
506
507
508
509
510 = EAST_OF(IJK2)
511 GNUWDOTN(MM) = -1.d0*(6.d0/(PI*DP_avg(MM)))*&
512 (EP_s(IJK3,MM)-EP_s(IJK2,MM))*oDX_E(I_OF(IJK2))
513
514
515
516 (MM) = -1.d0*(Theta_m(IJK3,MM)-Theta_m(IJK2,MM))*&
517 oDX_E(I_OF(IJK2))
518 ENDDO
519
520
521 = U_g(IJK1)
522 VGC = AVG_X(AVG_Y_N(V_g(JM_OF(IJK1)), V_g(IJK1)),&
523 AVG_Y_N(V_g(JM_OF(IJK2)), V_g(IJK2)),&
524 I_OF(IJK1))
525 WGC = AVG_X(AVG_Z_T(W_g(KM_OF(IJK1)), W_g(IJK1)),&
526 AVG_Z_T(W_g(KM_OF(IJK2)), W_g(IJK2)),&
527 I_OF(IJK1))
528 USCM = U_s(IJK1,M)
529 VSCM = AVG_X(AVG_Y_N(V_s(JM_OF(IJK1),M), V_s(IJK1,M)),&
530 AVG_Y_N(V_s(JM_OF(IJK2),M), V_s(IJK2,M)),&
531 I_OF(IJK1))
532 WSCM = AVG_X(AVG_Z_T(W_s(KM_OF(IJK1),M), W_s(IJK1,M)),&
533 AVG_Z_T(W_s(KM_OF(IJK2),M), W_s(IJK2,M)),&
534 I_OF(IJK1))
535
536
537 =(WSCM-BC_Ww_s(L, M))**2 + (VSCM-BC_Vw_s(L, M))**2
538
539
540 ELSEIF(FCELL== 'W')THEN
541 DO MM = 1, SMAX
542 TH_avg(MM) = AVG_X(Theta_m(IJK2,MM),Theta_m(IJK1,MM),I_OF(IJK2))
543 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
544
545
546
547
548
549 (MM) = 1.d0*U_S(IJK2,MM)
550
551
552
553
554
555 = WEST_OF(IJK2)
556 GNUWDOTN(MM) = 1.d0*(6.d0/(PI*DP_avg(MM)))*&
557 (EP_s(IJK2,MM)-EP_s(IJK3,MM))*oDX_E(I_OF(IJK3))
558
559
560
561 (MM) = 1.d0*(Theta_m(IJK2,MM)-Theta_m(IJK3,MM))*&
562 oDX_E(I_OF(IJK3))
563 ENDDO
564
565
566 = U_g(IJK2)
567 VGC = AVG_X(AVG_Y_N(V_g(JM_OF(IJK2)), V_g(IJK2)),&
568 AVG_Y_N(V_g(JM_OF(IJK1)), V_g(IJK1)),&
569 I_OF(IJK2))
570 WGC = AVG_X(AVG_Z_T(W_g(KM_OF(IJK2)), W_g(IJK2)),&
571 AVG_Z_T(W_g(KM_OF(IJK1)), W_g(IJK1)),&
572 I_OF(IJK2))
573 USCM = U_s(IJK2,M)
574 VSCM = AVG_X(AVG_Y_N(V_s(JM_OF(IJK2),M), V_s(IJK2,M)),&
575 AVG_Y_N(V_s(JM_OF(IJK1),M), V_s(IJK1,M)),&
576 I_OF(IJK2))
577 WSCM = AVG_X(AVG_Z_T(W_s(KM_OF(IJK2),M), W_s(IJK2,M)),&
578 AVG_Z_T(W_s(KM_OF(IJK1),M), W_s(IJK1,M)),&
579 I_OF(IJK2))
580
581
582 =(WSCM-BC_Ww_s(L, M))**2 + (VSCM-BC_Vw_s(L, M))**2
583
584
585 ELSEIF(FCELL== 'T')THEN
586 DO MM = 1, SMAX
587 TH_avg(MM) = AVG_Z(Theta_m(IJK1,MM),Theta_m(IJK2,MM),K_OF(IJK1))
588 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
589
590
591
592
593
594 (MM) = -1.d0*W_S(IJK1,MM)
595
596
597
598
599
600 = TOP_OF(IJK2)
601 GNUWDOTN(MM) = -1.d0*(6.d0/(PI*DP_avg(MM)))*&
602 (EP_s(IJK3,MM)-EP_s(IJK2,MM))*oX(I_of(IJK2))*oDZ_T(K_OF(IJK2))
603
604
605
606 (MM) = -1.d0*(Theta_m(IJK3,MM)-Theta_m(IJK2,MM))*&
607 oX(I_of(IJK2))*oDZ_T(K_OF(IJK2))
608 ENDDO
609
610
611 = AVG_Z(AVG_X_E(U_g(IM_OF(IJK1)),U_g(IJK1),I_OF(IJK1)),&
612 AVG_X_E(U_g(IM_OF(IJK2)),U_g(IJK2),I_OF(IJK2)),&
613 K_OF(IJK1))
614 VGC = AVG_Z(AVG_Y_N(V_g(JM_OF(IJK1)), V_g(IJK1)),&
615 AVG_Y_N(V_g(JM_OF(IJK2)), V_g(IJK2)),&
616 K_OF(IJK1))
617 WGC = W_g(IJK1)
618 USCM = AVG_Z(AVG_X_E(U_s(IM_OF(IJK1),M),U_s(IJK1,M),I_OF(IJK1)),&
619 AVG_X_E(U_s(IM_OF(IJK2),M),U_s(IJK2,M),I_OF(IJK2)),&
620 K_OF(IJK1))
621 VSCM = AVG_Z(AVG_Y_N(V_s(JM_OF(IJK1),M), V_s(IJK1,M)),&
622 AVG_Y_N(V_s(JM_OF(IJK2),M), V_s(IJK2,M)),&
623 K_OF(IJK1))
624 WSCM = W_s(IJK1,M)
625
626
627 =(VSCM-BC_Vw_s(L, M))**2 + (USCM-BC_Uw_s(L, M))**2
628
629
630 ELSEIF(FCELL== 'B')THEN
631 DO MM = 1, SMAX
632 TH_avg(MM) = AVG_Z(Theta_m(IJK2,MM),Theta_m(IJK1,MM),K_OF(IJK2))
633 IF(TH_avg(MM) < ZERO) TH_avg(MM) = smallTheta
634
635
636
637
638
639 (MM) = 1.d0*W_S(IJK2,MM)
640
641
642
643
644
645 = BOTTOM_OF(IJK2)
646 GNUWDOTN(MM) = 1.d0*(6.d0/(PI*DP_avg(MM)))*&
647 (EP_s(IJK2,MM)-EP_s(IJK3,MM))*oX(I_of(IJK3))*oDZ_T(K_OF(IJK3))
648
649
650
651 (MM) = 1.d0*(Theta_m(IJK2,MM)-Theta_m(IJK3,MM))*&
652 oX(I_of(IJK3))*oDZ_T(K_OF(IJK3))
653 ENDDO
654
655
656 = AVG_Z(AVG_X_E(U_g(IM_OF(IJK2)),U_g(IJK2),I_OF(IJK2)),&
657 AVG_X_E(U_g(IM_OF(IJK1)),U_g(IJK1),I_OF(IJK1)),&
658 K_OF(IJK2))
659 VGC = AVG_Z(AVG_Y_N(V_g(JM_OF(IJK2)), V_g(IJK2)),&
660 AVG_Y_N(V_g(JM_OF(IJK1)), V_g(IJK1)),&
661 K_OF(IJK2))
662 WGC = W_g(IJK2)
663 USCM = AVG_Z(AVG_X_E(U_s(IM_OF(IJK2),M),U_s(IJK2,M),I_OF(IJK2)),&
664 AVG_X_E(U_s(IM_OF(IJK1),M),U_s(IJK1,M),I_OF(IJK1)),&
665 K_OF(IJK2))
666 VSCM = AVG_Z(AVG_Y_N(V_s(JM_OF(IJK2),M), V_s(IJK2,M)),&
667 AVG_Y_N(V_s(JM_OF(IJK1),M), V_s(IJK1,M)),&
668 K_OF(IJK2))
669 WSCM = W_s(IJK2,M)
670
671
672 =(VSCM-BC_Vw_s(L, M))**2 + (USCM-BC_Uw_s(L, M))**2
673
674 ELSE
675 WRITE(LINE,'(A, A)') 'Error: Unknown FCELL'
676 CALL WRITE_ERROR('CALC_THETA_BC', LINE, 1)
677 call exitMPI(myPE)
678 ENDIF
679
680
681 = DSQRT( (UGC-USCM)**2 + (VGC-VSCM)**2 + (WGC-WSCM)**2 )
682
683 CALL THETA_Hw_Cw(g0, EPs_avg, EPg_avg, ep_star_avg, &
684 g0EPs_avg, TH_avg,Mu_g_avg,RO_g_avg, ROs_avg, &
685 DP_avg, K_12_avg,Tau_12_avg,VREL,VSLIPSQ,VWDOTN,&
686 GNUWDOTN,GTWDOTN,M,Gw,Hw,Cw,L)
687
688
689
690 IF(BC_JJ_M .and. PHIP_OUT_JJ) THEN
691 IF(PHIP_OUT_ITER.eq.1) THEN
692 ReactionRates(IJK1,1)= PHIP_JJ(dsqrt(VSLIPSQ),TH_avg(1))
693 ENDIF
694 ENDIF
695
696 RETURN
697 END SUBROUTINE CALC_THETA_BC
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741 SUBROUTINE THETA_HW_CW(g0,EPS,EPG, ep_star_avg, &
742 g0EPs_avg,TH,Mu_g_avg,RO_g_avg, ROs_avg, DP_avg, &
743 K_12_avg,Tau_12_avg,VREL,VSLIPSQ,VWDOTN,&
744 GNUWDOTN,GTWDOTN,M,GW,HW,CW,L)
745
746
747
748
749 USE bc
750 USE compar
751 USE constant
752 USE exit, only: mfix_exit
753 USE fldvar
754 USE kintheory
755 USE param
756 USE param1
757 USE physprop
758 USE run
759 USE toleranc
760 IMPLICIT NONE
761
762
763
764
765
766 DOUBLE PRECISION, INTENT(IN) :: g0(DIMENSION_M)
767
768 DOUBLE PRECISION, INTENT(IN) :: EPS(DIMENSION_M)
769
770 DOUBLE PRECISION, INTENT(IN) :: EPG, ep_star_avg
771
772 DOUBLE PRECISION, INTENT(INOUT) :: g0EPs_avg
773
774 DOUBLE PRECISION, INTENT(INOUT) :: TH (DIMENSION_M)
775
776 DOUBLE PRECISION, INTENT(IN) :: Mu_g_avg
777
778 DOUBLE PRECISION, INTENT(IN) :: RO_g_avg
779
780 DOUBLE PRECISION, INTENT(IN) :: ROS_avg(DIMENSION_M)
781
782 DOUBLE PRECISION, INTENT(IN) :: DP_avg(DIMENSION_M)
783
784 DOUBLE PRECISION, INTENT(IN) :: K_12_avg, Tau_12_avg
785
786 DOUBLE PRECISION, INTENT(IN) :: VREL
787
788 DOUBLE PRECISION, INTENT(IN) :: VSLIPSQ
789
790 DOUBLE PRECISION, INTENT(IN) :: VWDOTN (DIMENSION_M)
791
792
793 DOUBLE PRECISION, INTENT(IN) :: GNUWDOTN (DIMENSION_M)
794
795
796 DOUBLE PRECISION, INTENT(IN) :: GTWDOTN (DIMENSION_M)
797
798 INTEGER, INTENT(IN) :: M
799
800
801
802
803 DOUBLE PRECISION, INTENT(INOUT) :: GW, HW, CW
804
805 INTEGER, INTENT(IN) :: L
806
807
808
809
810 INTEGER :: LL
811
812 DOUBLE PRECISION :: K_1
813
814 DOUBLE PRECISION :: Kgran
815
816 DOUBLE PRECISION :: Kgran_star
817
818 DOUBLE PRECISION :: Beta, DgA
819
820 DOUBLE PRECISION :: Re_g
821
822 DOUBLE PRECISION :: C_d
823
824 DOUBLE PRECISION :: D_PM, M_PM, NU_PM
825
826 DOUBLE PRECISION :: D_PL, M_PL, NU_PL, MPSUM, DPSUMo2
827 DOUBLE PRECISION :: Ap_lm, Dp_lm, R0p_lm, R1p_lm, R8p_lm, R9p_lm, &
828 Bp_lm, R5p_lm, R6p_lm, R7p_lm
829 DOUBLE PRECISION :: K_s_sum, K_s_MM, K_sM_LM
830 DOUBLE PRECISION :: Kvel_s_sum, Kth_s_sum
831 DOUBLE PRECISION :: Knu_s_sum, K_common_term
832
833 DOUBLE PRECISION :: c_star, zeta0_star, press_star, eta0, &
834 kappa0, nu_kappa_star, kappa_k_star, &
835 kappa_star
836
837 DOUBLE PRECISION :: Re_T, Chi, vfrac, mu2_0, mu4_0, mu4_1, &
838 A2_gtshW, zeta_star, nu0, NuK, Kth0, KthK, EDT_s
839
840 DOUBLE PRECISION :: Zeta_c, Omega_c, Tau_2_c, Kappa_kin, &
841 Kappa_Col, Tau_12_st
842
843 DOUBLE PRECISION :: Ps, PsoTheta
844
845
846
847
848 DOUBLE PRECISION :: PHIP_JJ
849
850
851 IF(TH(M) .LE. ZERO)THEN
852 TH(M) = 1D-8
853 IF (myPE.eq.PE_IO) THEN
854 WRITE(*,*) &
855 'Warning: Negative granular temp at wall set to 1e-8'
856
857 ENDIF
858 ENDIF
859
860
861 = DP_avg(M)
862 M_PM = (PI/6.d0)*(D_PM**3.)*ROS_avg(M)
863 NU_PM = (EPS(M)*ROS_avg(M))/M_PM
864
865
866 = EPG*RO_g_avg*D_PM*VREL/Mu_g_avg
867 IF (Re_g .lt. 1000.d0) THEN
868 C_d = (24.d0/(Re_g+SMALL_NUMBER))*(ONE + 0.15d0 * Re_g**0.687d0)
869 ELSE
870 C_d = 0.44d0
871 ENDIF
872 DgA = 0.75d0*C_d*Ro_g_avg*EPG*VREL/(DP_avg(M)*EPG**(2.65d0))
873 IF(VREL == ZERO) DgA = LARGE_NUMBER
874 Beta = EPS(M)*DgA
875
876
877
878
879
880 SELECT CASE (KT_TYPE_ENUM)
881
882 CASE (LUN_1984)
883 Kgran = 75d0*ROs_avg(M)*DP_avg(M)*DSQRT(Pi*TH(M))/&
884 (48*Eta*(41d0-33d0*Eta))
885
886 IF(SWITCH == ZERO .OR. Ro_g_avg == ZERO)THEN
887 Kgran_star = Kgran
888 ELSEIF(TH(M) .LT. SMALL_NUMBER)THEN
889 Kgran_star = ZERO
890 ELSE
891 Kgran_star = ROs_avg(M)*EPS(M)* g0(M)*TH(M)* Kgran/ &
892 (ROs_avg(M)*g0EPs_avg*TH(M) + &
893 1.2d0*DgA/ROs_avg(M)* Kgran)
894 ENDIF
895
896
897 = Kgran_star/g0(M)*( &
898 ( ONE + (12d0/5.d0)*Eta*g0EPs_avg ) * &
899 ( ONE + (12d0/5.d0)*Eta*Eta*(4d0*Eta-3d0) *g0EPs_avg ) + &
900 (64d0/(25d0*Pi)) * (41d0-33d0*Eta) *(Eta*g0EPs_avg)**2 )
901
902
903 = ROs_avg(M)*EPS(M)*(ONE+4.D0*Eta*g0EPs_avg)
904 Ps = ROs_avg(M)*EPS(M)*TH(M)*(ONE+4.D0*Eta*g0EPs_avg)
905
906
907 CASE (SIMONIN_1996)
908
909 = ROs_avg(M)/(DgA+small_number)
910 Zeta_c = (ONE+ C_e)*(49.d0-33.d0*C_e)/100.d0
911 Omega_c = 3.d0*(ONE+ C_e)**2 *(2.d0*C_e-ONE)/5.d0
912 Tau_2_c = DP_avg(M)/(6.d0*EPS(M)*g0(M) &
913 *DSQRT(16.d0*(TH(M)+Small_number)/PI))
914
915
916 = (9.d0/10.d0*K_12_avg*(Tau_12_avg/Tau_12_st) &
917 + 3.0D0/2.0D0 * TH(M)*(ONE+ Omega_c*EPS(M)*g0(M)))/ &
918 (9.d0/(5.d0*Tau_12_st) + zeta_c/Tau_2_c)
919
920 Kappa_Col = 18.d0/5.d0*EPS(M)*g0(M)*Eta* (Kappa_kin+ &
921 5.d0/9.d0*DP_avg(M)*DSQRT(TH(M)/PI))
922
923
924 = EPS(M)*ROs_avg(M)*(Kappa_kin + Kappa_Col)
925
926
927 = ROs_avg(M)*EPS(M)*(ONE+4.D0*Eta*g0EPs_avg)
928 Ps = ROs_avg(M)*EPS(M)*TH(M)*(ONE+4.D0*Eta*g0EPs_avg)
929
930
931 CASE (AHMADI_1995)
932
933 = 0.1306D0*ROs_avg(M)*DP_avg(M)*(ONE+C_e**2)* ( &
934 ONE/g0(M)+4.8D0*EPS(M)+12.1184D0 *EPS(M)*EPS(M)*g0(M) )*&
935 DSQRT(TH(M))
936
937
938 = ROs_avg(M)*EPS(M)* &
939 ((ONE + 4.0D0*g0EPs_avg)+HALF*(ONE -C_e*C_e))
940 Ps = ROs_avg(M)*EPS(M)*TH(M)*&
941 ((ONE + 4.0D0*g0EPs_avg)+HALF*(ONE -C_e*C_e))
942
943
944 CASE (IA_2005)
945
946 IF(.NOT. SWITCH_IA) g0EPs_avg = EPS(M)*ROS_avg(M)
947
948 K_s_sum = ZERO
949 Kvel_s_sum = ZERO
950 Knu_s_sum = ZERO
951 Kth_s_sum = ZERO
952
953 Kgran = (75.d0/384.d0)*ROs_avg(M)*D_PM*DSQRT(Pi*TH(M)/M_PM)
954
955 IF(SWITCH == ZERO .OR. RO_g_avg == ZERO)THEN
956 Kgran_star = Kgran
957 ELSEIF(TH(M)/M_PM .LT. SMALL_NUMBER)THEN
958 Kgran_star = ZERO
959 ELSE
960 Kgran_star = Kgran*g0(M)*EPS(M)/ &
961 (g0EPs_avg+ 1.2d0*DgA*Kgran / (ROS_avg(M)**2 *(TH(M)/M_PM)))
962 ENDIF
963
964 K_s_MM = (Kgran_star/(M_PM*g0(M)))*&
965 (1.d0+(3.d0/5.d0)*(1.d0+C_E)*(1.d0+C_E)*g0EPs_avg)**2
966
967 DO LL = 1, SMAX
968 D_PL = DP_avg(LL)
969 M_PL = (PI/6.d0)*(D_PL**3.)*ROS_avg(LL)
970 MPSUM = M_PM + M_PL
971 DPSUMo2 = (D_PM+D_PL)/2.d0
972 NU_PL = (EPS(LL)*ROS_avg(LL))/M_PL
973
974 IF ( LL .eq. M) THEN
975 K_s_sum = K_s_sum + K_s_MM
976
977
978
979 ELSE
980 Ap_lm = (M_PM*TH(LL)+M_PL*TH(M))/(2.d0)
981 Bp_lm = (M_PM*M_PL*(TH(LL)-TH(M) ))/(2.d0*MPSUM)
982 Dp_lm = (M_PL*M_PM*(M_PM*TH(M)+M_PL*TH(LL) ))/&
983 (2.d0*MPSUM*MPSUM)
984 R0p_lm = ( 1.d0/( Ap_lm**1.5 * Dp_lm**2.5 ) )+ &
985 ( (15.d0*Bp_lm*Bp_lm)/( 2.d0* Ap_lm**2.5 * Dp_lm**3.5 ) )+&
986 ( (175.d0*(Bp_lm**4))/( 8.d0*Ap_lm**3.5 * Dp_lm**4.5 ) )
987 R1p_lm = ( 1.d0/( (Ap_lm**1.5)*(Dp_lm**3) ) )+ &
988 ( (9.d0*Bp_lm*Bp_lm)/( Ap_lm**2.5 * Dp_lm**4 ) )+&
989 ( (30.d0*Bp_lm**4) /( 2.d0*Ap_lm**3.5 * Dp_lm**5 ) )
990 R5p_lm = ( 1.d0/( Ap_lm**2.5 * Dp_lm**3 ) )+ &
991 ( (5.d0*Bp_lm*Bp_lm)/( Ap_lm**3.5 * Dp_lm**4 ) )+&
992 ( (14.d0*Bp_lm**4)/( Ap_lm**4.5 * Dp_lm**5 ) )
993 R6p_lm = ( 1.d0/( Ap_lm**3.5 * Dp_lm**3 ) )+ &
994 ( (7.d0*Bp_lm*Bp_lm)/( Ap_lm**4.5 * Dp_lm**4 ) )+&
995 ( (126.d0*Bp_lm**4)/( 5.d0*Ap_lm**5.5 * Dp_lm**5 ) )
996 R7p_lm = ( 3.d0/( 2.d0*Ap_lm**2.5 * Dp_lm**4 ) )+ &
997 ( (10.d0*Bp_lm*Bp_lm)/( Ap_lm**3.5 * Dp_lm**5 ) )+&
998 ( (35.d0*Bp_lm**4)/( Ap_lm**4.5 * Dp_lm**6 ) )
999 R8p_lm = ( 1.d0/( 2.d0*Ap_lm**1.5 * Dp_lm**4 ) )+ &
1000 ( (6.d0*Bp_lm*Bp_lm)/( Ap_lm**2.5 * Dp_lm**5 ) )+&
1001 ( (25.d0*Bp_lm**4)/( Ap_lm**3.5 * Dp_lm**6 ) )
1002 R9p_lm = ( 1.d0/( Ap_lm**2.5 * Dp_lm**3 ) )+ &
1003 ( (15.d0*Bp_lm*Bp_lm)/( Ap_lm**3.5 * Dp_lm**4 ) )+&
1004 ( (70.d0*Bp_lm**4)/( Ap_lm**4.5 * Dp_lm**5 ) )
1005 K_common_term = DPSUMo2**3 * M_PL*M_PM/(2.d0*MPSUM)*&
1006 (1.d0+C_E)*g0(LL) * (M_PM*M_PL)**1.5
1007
1008
1009
1010 = - K_common_term*NU_PM*NU_PL*(&
1011 ((DPSUMo2*DSQRT(PI)/16.d0)*(3.d0/2.d0)*Bp_lm*R5p_lm)+&
1012 ((M_PL/(8.d0*MPSUM))*(1.d0-C_E)*(DPSUMo2*PI/6.d0)*&
1013 (3.d0/2.d0)*R1p_lm)-(&
1014 ((DPSUMo2*DSQRT(PI)/16.d0)*(M_PM/8.d0)*Bp_lm*R6p_lm)+&
1015 ((M_PL/(8.d0*MPSUM))*(1.d0-C_E)*(DPSUMo2*DSQRT(PI)/&
1016 8.d0)*M_PM*R9p_lm)+&
1017 ((DPSUMo2*DSQRT(PI)/16.d0)*(M_PL*M_PM/(MPSUM*MPSUM))*&
1018 M_PL*Bp_lm*R7p_lm)+&
1019 ((M_PL/(8.d0*MPSUM))*(1.d0-C_E)*(DPSUMo2*DSQRT(PI)/&
1020 2.d0)*(M_PM/MPSUM)**2 * M_PL*R8p_lm)+&
1021 ((DPSUMo2*DSQRT(PI)/16.d0)*(M_PM*M_PL/(2.d0*MPSUM))*&
1022 R9p_lm)-&
1023 ((M_PL/(8.d0*MPSUM))*(1.d0-C_E)*DPSUMo2*DSQRT(PI)*&
1024 (M_PM*M_PL/MPSUM)*Bp_lm*R7p_lm) )*TH(LL) )*&
1025 (TH(M)**2 * TH(LL)**3)
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061 = K_s_sum + K_sM_LM
1062
1063
1064
1065
1066 ENDIF
1067 ENDDO
1068
1069
1070 = K_s_sum
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088 CASE (GD_1999)
1089
1090 = DP_avg(M)
1091 M_PM = (PI/6.d0)*(D_PM**3.)*ROS_avg(M)
1092 NU_PM = (EPS(M)*ROS_avg(M))/M_PM
1093
1094
1095 = ONE + 2.d0*(1.d0+C_E)*EPS(M)*G0(M)
1096
1097
1098 = 5.0d0*M_PM*DSQRT(TH(M)/PI) / (16.d0*D_PM*D_PM)
1099
1100 c_star = 32.0d0*(1.0d0 - C_E)*(1.d0 - 2.0d0*C_E*C_E) &
1101 / (81.d0 - 17.d0*C_E + 30.d0*C_E*C_E*(1.0d0-C_E))
1102
1103 zeta0_star = (5.d0/12.d0)*G0(M)*(1.d0 - C_E*C_E) &
1104 * (1.d0 + (3.d0/32.d0)*c_star)
1105
1106 kappa0 = (15.d0/4.d0)*eta0
1107
1108 nu_kappa_star = (G0(M)/3.d0)*(1.d0+C_E) * ( 1.d0 + &
1109 (33.d0/16.d0)*(1.d0-C_E) + ((19.d0-3.d0*C_E)/1024.d0)*c_star)
1110
1111
1112 = (2.d0/3.d0)*(1.d0 + 0.5d0*(1.d0+press_star)*c_star + &
1113 (3.d0/5.d0)*EPS(M)*G0(M)*(1.d0+C_E)*(1.d0+C_E) * &
1114 (2.d0*C_E - 1.d0 + ( 0.5d0*(1.d0+C_E) - 5.d0/(3*(1.d0+C_E))) * &
1115 c_star ) ) / (nu_kappa_star - 2.d0*zeta0_star)
1116
1117 kappa_star = kappa_k_star * (1.d0 + (6.d0/5.d0)*EPS(M)* &
1118 G0(M)*(1.d0+C_E) ) + (256.d0/25.d0)*(EPS(M)* &
1119 EPS(M)/PI)*G0(M)*(1.d0+C_E)*(1.d0+(7.d0/32.d0)* &
1120 c_star)
1121
1122 IF(SWITCH == ZERO .OR. Ro_g_avg == ZERO)THEN
1123 Kgran_star = kappa0
1124 ELSEIF(TH(M) .LT. SMALL_NUMBER)THEN
1125 Kgran_star = ZERO
1126 ELSE
1127 Kgran_star = ROS_avg(M)*EPS(M)* G0(M)*TH(M)* kappa0/ &
1128 (ROS_avg(M)*G0(M)*EPS(M)*TH(M) + &
1129 1.2d0*DgA*kappa0/ROs_avg(M))
1130 ENDIF
1131
1132
1133
1134 = Kgran_star * kappa_star
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150 = ROs_avg(M)*EPS(M)*(ONE+2.d0*(ONE+C_E)*g0EPs_avg)
1151
1152 = ROs_avg(M)*EPS(M)*TH(M)*(ONE+2.d0*(ONE+C_E)*g0EPs_avg)
1153
1154
1155 CASE (GTSH_2012)
1156 D_PM = DP_avg(M)
1157 M_PM = (PI/6.d0)*(D_PM**3.)*ROS_avg(M)
1158 NU_PM = (EPS(M)*ROS_avg(M))/M_PM
1159 Chi = g0(M)
1160 vfrac = EPS(M)
1161
1162 Re_g = EPG*RO_g_avg*D_PM*VREL/Mu_g_avg
1163 Re_T = RO_g_avg*D_PM*dsqrt(TH(M)) / Mu_g_avg
1164 mu2_0 = dsqrt(2d0*pi) * Chi * (one-C_E**2)
1165 = (4.5d0+C_E**2) * mu2_0
1166 = (6.46875d0+0.9375d0*C_E**2)*mu2_0 + 2d0*dsqrt(2d0*pi)* &
1167 Chi*(one+C_E)
1168 = zero
1169 if((vfrac> small_number) .and. (TH(M) > small_number)) then
1170 zeta_star = 4.5d0*dsqrt(2d0*Pi)*(RO_g_avg/ROs_avg(M))**2*Re_g**2 * &
1171 S_star(vfrac,Chi) / (vfrac*(one-vfrac)**2 * Re_T**4)
1172 A2_gtshW = (5d0*mu2_0 - mu4_0) / (mu4_1 - 5d0* &
1173 (19d0/16d0*mu2_0 - 1.5d0*zeta_star))
1174 endif
1175 eta0 = 0.3125d0/(dsqrt(pi)*D_PM**2)*M_pm*dsqrt(TH(M))
1176 nu0 = (96.d0/5.d0)*(vfrac/D_PM)*DSQRT(TH(M)/PI)
1177 NuK = nu0*(one+C_E)/3d0*Chi*( one+2.0625d0*(one-C_E)+ &
1178 ((947d0-579*C_E)/256d0*A2_gtshW) )
1179 Kth0 = 3.75d0*eta0/M_pm
1180 EDT_s = 4d0/3d0*dsqrt(pi)*(one-C_E**2)*Chi* &
1181 (one+0.1875d0*A2_gtshW)*NU_PM*D_PM**2*dsqrt(TH(M))
1182 KthK = zero
1183 if(vfrac > small_number) KthK = 2d0/3d0*Kth0*nu0/(NuK - 2d0*EDT_s) * &
1184 (one+2d0*A2_gtshW+0.6d0*vfrac*Chi* &
1185 (one+C_E)**2*(2*C_E-one+A2_gtshW*(one+C_E)))
1186
1187
1188
1189 = KthK*(one+1.2d0*vfrac*Chi*(one+C_E)) + (10.24d0/pi* &
1190 vfrac**2*Chi*(one+C_E)*(one+0.4375d0*A2_gtshW)*Kth0)
1191
1192
1193 = ROs_avg(M)*EPS(M)*(ONE+2.d0*(ONE+C_E)*g0EPs_avg)
1194 Ps = ROs_avg(M)*EPS(M)*TH(M)*(ONE+2.d0*(ONE+C_E)*g0EPs_avg)
1195
1196
1197 CASE DEFAULT
1198
1199 WRITE (*, '(A)') 'BC_THETA => THETA_HW_CW'
1200 WRITE (*, '(A,A)') 'Unknown KT_TYPE: ', KT_TYPE
1201 call mfix_exit(myPE)
1202 END SELECT
1203
1204
1205
1206
1207
1208
1209
1210 SELECT CASE (KT_TYPE_ENUM)
1211 CASE (LUN_1984, SIMONIN_1996, AHMADI_1995, GD_1999)
1212
1213
1214
1215 = K_1
1216
1217
1218 IF(JENKINS) THEN
1219 HW = 3.D0/8.D0*DSQRT(3.D0*TH(M))*((1d0-e_w))*&
1220 PsoTheta
1221
1222
1223
1224
1225 = tan_Phi_w*tan_Phi_w*(ONE+e_w)*21.d0/16.d0*&
1226 DSQRT(3.D0*TH(M)) * Ps
1227
1228 ELSE
1229 HW = (Pi*DSQRT(3d0)/(4.D0*(ONE-ep_star_avg)))*&
1230 (1d0-e_w*e_w)*&
1231 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M))
1232
1233 IF(.NOT. BC_JJ_M) THEN
1234 CW = (Pi*DSQRT(3d0)/(6.D0*(ONE-ep_star_avg)))*PHIP*&
1235 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M))*VSLIPSQ
1236 ELSE
1237 CW = (Pi*DSQRT(3d0)/(6.D0*(ONE-ep_star_avg)))*&
1238 PHIP_JJ(DSQRT(vslipsq),TH(M))*ROs_avg(M)*&
1239 EPS(M)*g0(M)*DSQRT(TH(M))*VSLIPSQ
1240 ENDIF
1241 ENDIF
1242
1243
1244 CASE (GTSH_2012)
1245
1246
1247
1248 = M_PM * K_1
1249
1250 HW = (Pi*DSQRT(3d0)/(4.D0*(ONE-ep_star_avg)))*&
1251 (1d0-e_w*e_w)*&
1252 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M))
1253
1254 IF(.NOT. BC_JJ_M) THEN
1255 CW = (Pi*DSQRT(3d0)/(6.D0*(ONE-ep_star_avg)))*PHIP*&
1256 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M))*VSLIPSQ
1257 ELSE
1258 CW = (Pi*DSQRT(3d0)/(6.D0*(ONE-ep_star_avg)))*&
1259 PHIP_JJ(DSQRT(vslipsq),TH(M))*ROs_avg(M)*&
1260 EPS(M)*g0(M)*DSQRT(TH(M))*VSLIPSQ
1261 ENDIF
1262
1263
1264 CASE (IA_2005)
1265
1266
1267
1268 = M_PM * K_1
1269
1270 HW = (PI*DSQRT(3.d0)/(4.d0*(ONE-ep_star_avg)))*&
1271 (1.d0-e_w*e_w)*&
1272 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M)/M_PM)
1273
1274 IF(.NOT. BC_JJ_M) THEN
1275 CW = (PI*DSQRT(3.d0)/(6.d0*(ONE-ep_star_avg)))*PHIP*&
1276 ROs_avg(M)*EPS(M)*g0(M)*DSQRT(TH(M)*M_PM)*VSLIPSQ
1277 ELSE
1278 CW = (PI*DSQRT(3.d0)/(6.d0*(ONE-ep_star_avg)))*&
1279 PHIP_JJ(DSQRT(vslipsq),TH(M))*ROs_avg(M)*&
1280 EPS(M)*g0(M)*DSQRT(TH(M)*M_PM)*VSLIPSQ
1281 ENDIF
1282
1283 CASE DEFAULT
1284
1285 WRITE (*, '(A)') 'BC_THETA => THETA_HW_CW'
1286 WRITE (*, '(A,A)') 'Unknown KT_TYPE: ', KT_TYPE
1287 call mfix_exit(myPE)
1288 END SELECT
1289
1290 RETURN
1291 END SUBROUTINE THETA_HW_CW
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309 DOUBLE PRECISION FUNCTION phip_jj(uslip,g_theta)
1310
1311
1312
1313 use constant, only : PI, k4phi, phip0
1314 implicit none
1315
1316
1317
1318 double precision, INTENT(IN) :: uslip
1319 double precision, INTENT(IN) :: g_theta
1320
1321
1322
1323 double precision :: r4phi
1324
1325
1326
1327 =uslip/dsqrt(3.d0*g_theta)
1328
1329 IF(r4phi .le. 4.d0*k4phi/7.d0/dsqrt(6.d0*PI)/phip0) THEN
1330 phip_jj=-7.d0*dsqrt(6.d0*PI)*phip0**2/8.d0/k4phi*r4phi+phip0
1331 ELSE
1332 phip_jj=2.d0/7.d0*k4phi/r4phi/dsqrt(6.d0*PI)
1333 ENDIF
1334
1335 RETURN
1336
1337 END FUNCTION PHIP_JJ
1338