File: N:\mfix\model\kintheory_mod.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 MODULE kintheory
17
18
19
20
21
22
23
24
25 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: MU_sM_ip
26
27 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: MU_sL_ip
28
29 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: XI_sM_ip
30
31 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: XI_sL_ip
32
33
34
35
36
37
38 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: Fnu_s_ip
39
40
41 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: FT_sM_ip
42
43 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: FT_sL_ip
44
45
46
47
48
49
50 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: Kth_sL_ip
51
52 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: Knu_sM_ip
53
54 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: Knu_sL_ip
55
56 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: Kvel_s_ip
57
58
59
60
61
62 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: ED_ss_ip
63
64 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: EDT_s_ip
65
66 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: EDvel_sM_ip
67
68 DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: EDvel_sL_ip
69
70 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: A2_gtsh
71 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: xsi_gtsh
72
73
74
75 DOUBLE PRECISION, DIMENSION(:, :), ALLOCATABLE :: KTMOM_U_s
76 DOUBLE PRECISION, DIMENSION(:, :), ALLOCATABLE :: KTMOM_V_s
77 DOUBLE PRECISION, DIMENSION(:, :), ALLOCATABLE :: KTMOM_W_s
78
79
80
81 DOUBLE PRECISION, PARAMETER :: EpM = 0.01d0
82
83
84
85 CONTAINS
86
87
88
89
90
91
92
93 DOUBLE PRECISION FUNCTION KT_RVEL(IJK, m)
94
95
96
97 use fldvar, only: u_s, v_s, w_s
98 use fldvar, only: u_g, v_g, w_g
99 use run, only: shear
100 use vshear, only: vsh
101 use indices, only: i_of
102 use functions, only: im_of, jm_of, km_of
103 use functions, only: fluid_at
104 use fun_avg, only: avg_x_e, avg_y_n, avg_z_t
105 IMPLICIT NONE
106
107
108
109
110 INTEGER, INTENT(IN) :: ijk
111
112 INTEGER, INTENT(IN) :: M
113
114
115
116
117 INTEGER :: I, IMJK, IJMK, IJKM
118
119 DOUBLE PRECISION :: USCM, VSCM, WSCM, &
120 UGC, VGC, WGC
121
122 DOUBLE PRECISION :: vs_j, vs_jm
123
124 = I_OF(IJK)
125 IMJK = IM_OF(IJK)
126 IJMK = JM_OF(IJK)
127 IJKM = KM_OF(IJK)
128
129
130
131
132 = V_S(IJK,M)
133 vs_jm = V_S(IJMK,M)
134 IF (SHEAR) THEN
135 vs_j = V_S(IJK,M)+VSH(IJK)
136 IF(FLUID_AT(IJMK)) THEN
137 vs_jm = V_S(IJMK,M)+VSH(IJMK)
138 ELSE
139 vs_jm = v_s(IJMK,M)
140 ENDIF
141 ENDIF
142
143
144
145 = AVG_X_E(U_G(IMJK),U_G(IJK),I)
146 VGC = AVG_Y_N(V_G(IJMK),V_G(IJK))
147 WGC = AVG_Z_T(W_G(IJKM),W_G(IJK))
148
149 USCM = AVG_X_E(U_S(IMJK,M),U_S(IJK,M),I)
150 VSCM = AVG_Y_N(vs_jm, vs_j)
151 WSCM = AVG_Z_T(W_S(IJKM,M),W_S(IJK,M))
152
153
154 = SQRT((UGC - USCM)**2 + (VGC - VSCM)**2 + &
155 (WGC - WSCM)**2)
156
157 RETURN
158 END FUNCTION KT_RVEL
159
160
161
162
163 DOUBLE PRECISION FUNCTION KT_COS_THETA(ijk, M)
164
165
166
167 USE param1, only: zero, small_number
168 USE fldvar, only: u_g, v_g, w_g
169 USE fldvar, only: u_s, v_s, w_s
170 USE fldvar, only: ep_s
171 USE run, only: shear
172 USE vshear, only: vsh
173 USE toleranc, only: zero_ep_s
174 USE indices, only: i_of
175 USE functions, only: im_of, jm_of, km_of
176 USE functions, only: fluid_at
177 USE fun_avg, only: avg_x_e, avg_y_n, avg_z_t
178 IMPLICIT NONE
179
180
181
182
183 INTEGER, INTENT(IN) :: ijk
184
185 INTEGER, INTENT(IN) :: M
186
187
188
189
190 INTEGER :: I, IMJK, IJMK, IJKM
191
192 DOUBLE PRECISION :: USCM, VSCM, WSCM, &
193 UGC, VGC, WGC
194 DOUBLE PRECISION :: vs_j, vs_jm, speed, rvel
195
196
197 = I_OF(IJK)
198 IMJK = IM_OF(IJK)
199 IJMK = JM_OF(IJK)
200 IJKM = KM_OF(IJK)
201
202
203
204
205 = V_S(IJK,M)
206 vs_jm = V_S(IJMK,M)
207 IF (SHEAR) THEN
208 vs_j = V_S(IJK,M)+VSH(IJK)
209 IF(FLUID_AT(IJMK)) THEN
210 vs_jm = V_S(IJMK,M)+VSH(IJMK)
211 ELSE
212 vs_jm = v_s(IJMK,M)
213 ENDIF
214 ENDIF
215
216 UGC = AVG_X_E(U_G(IMJK),U_G(IJK),I)
217 VGC = AVG_Y_N(V_G(IJMK),V_G(IJK))
218 WGC = AVG_Z_T(W_G(IJKM),W_G(IJK))
219
220 USCM = AVG_X_E(U_S(IMJK,M),U_S(IJK,M),I)
221 VSCM = AVG_Y_N(vs_jm, vs_j)
222 WSCM = AVG_Z_T(W_S(IJKM,M),W_S(IJK,M))
223
224 RVEL = SQRT((UGC - USCM)**2 + (VGC - VSCM)**2 + &
225 (WGC - WSCM)**2)
226
227 SPEED = SQRT(USCM**2+VSCM**2+WSCM**2)
228
229
230 IF(SPEED > Small_Number .AND. RVEL > Small_Number .AND. &
231 EP_S(IJK,M) > ZERO_EP_S) THEN
232 KT_Cos_Theta = ( (UGC-USCM)*USCM + (VGC-VSCM)*VSCM + &
233 (WGC-WSCM)*WSCM )/(RVEL*SPEED)
234 ELSE
235 KT_Cos_Theta = ZERO
236 ENDIF
237
238 RETURN
239 END FUNCTION KT_COS_THETA
240
241
242
243
244
245
246
247
248
249
250
251
252
253 DOUBLE PRECISION FUNCTION KT_DGA(IJK, m)
254
255
256
257 use param1, only: zero, one, small_number, large_number
258 use fldvar, only: rop_g
259 use fldvar, only: d_p
260 use physprop, only: mu_g
261 IMPLICIT NONE
262
263
264
265
266 INTEGER, INTENT(IN) :: IJK
267
268 INTEGER, INTENT(IN) :: M
269
270
271
272
273 DOUBLE PRECISION :: C_d, Re
274
275 DOUBLE PRECISION :: rvel
276
277
278
279 = zero
280 rvel = zero
281 RVEL = KT_RVEL(IJK, M)
282
283
284
285 = D_p(IJK,M)*RVEL*ROP_G(IJK)/(MU_G(IJK) + SMALL_NUMBER)
286 IF(RE .LE. 1000.d0)THEN
287 C_d = (24.d0/(Re+SMALL_NUMBER)) * &
288 (ONE + 0.15d0 * Re**0.687D0)
289 ELSE
290 C_d = 0.44d0
291 ENDIF
292
293
294 = 0.75d0 * C_d * RVEL * ROP_g(IJK) / D_p(IJK,M)
295
296
297 IF(RVEL == ZERO) kt_dga = LARGE_NUMBER
298
299 RETURN
300 END FUNCTION KT_DGA
301
302
303
304
305
306
307
308
309
310
311
312 SUBROUTINE CALC_IA_ENERGY_DISSIPATION_SS(M)
313
314
315
316 USE constant, only: pi
317 USE constant, only: C_e
318 USE fldvar, only: ro_s, rop_s, d_p
319 USE fldvar, only: theta_m
320 USE physprop, only: mmax
321 USE rdf, only: g_0
322 USE param1, only: zero
323
324 USE functions, only: fluid_at, funlm
325 USE compar, only: ijkstart3, ijkend3
326 IMPLICIT NONE
327
328
329
330
331 INTEGER, INTENT(IN) :: M
332
333
334
335
336 INTEGER :: IJK
337
338 INTEGER :: L
339
340
341 INTEGER :: LM
342
343 DOUBLE PRECISION :: ED_common_term
344 DOUBLE PRECISION :: EDvel_sL, EDvel_sM
345 DOUBLE PRECISION :: M_PM, M_PL, MPSUM, NU_PL, NU_PM, D_PM, &
346 D_PL, DPSUMo2
347 DOUBLE PRECISION :: Ap_lm, Dp_lm, R1p_lm, R10p_lm, R3p_lm, &
348 R4p_lm, R5p_lm, Bp_lm
349
350
351 DO IJK = ijkstart3, ijkend3
352 IF ( FLUID_AT(IJK) ) THEN
353
354 D_PM = D_P(IJK,M)
355 M_PM = (PI/6.d0)*(D_PM**3)*RO_S(IJK,M)
356 NU_PM = ROP_S(IJK,M)/M_PM
357
358 DO L = 1, MMAX
359 LM = FUNLM(L,M)
360 D_PL = D_P(IJK,L)
361 M_PL = (PI/6.d0)*(D_PL**3)*RO_S(IJK,L)
362
363 MPSUM = M_PM + M_PL
364 DPSUMo2 = (D_PM+D_PL)/2.d0
365 NU_PL = ROP_S(IJK,L)/M_PL
366
367 ED_common_term = (3.d0/4.d0)*(DPSUMo2*DPSUMo2)*&
368 (1.d0+C_E)*G_0(IJK,M,L)*NU_PM*NU_PL*(M_PM*&
369 M_PL/MPSUM)*((M_PM*M_PL)**1.5)
370
371 IF (M .eq. L) THEN
372 Ap_lm = MPSUM/(2.d0)
373 Dp_lm = M_PL*M_PM/(2.d0*MPSUM)
374 R1p_lm = 1.d0/( (Ap_lm**1.5)*(Dp_lm**3) )
375 R3p_lm = 1.d0/( (Ap_lm**1.5)*(Dp_lm**3.5) )
376
377
378
379
380
381 (IJK,LM) = ZERO
382
383
384 (IJK,M,L) = -ED_common_term* (1.d0-C_E)*&
385 (M_PL/MPSUM)*(DSQRT(PI)/6.d0)*R1p_lm*&
386 (Theta_m(IJK,M)**1.5)
387
388
389
390
391 = ED_common_term*((1.d0-C_E)*(M_PL/MPSUM)*&
392 (DPSUMo2*PI/48.d0)*(M_PM*M_PL/MPSUM)*R3p_lm)
393 EDvel_sL_ip(IJK,M,L) = EDvel_sL*(Theta_m(IJK,L))
394
395
396
397
398
399
400
401
402
403 (IJK,M,L) = EDvel_sL_ip(IJK,M,L)
404
405 ELSE
406
407 Ap_lm = (M_PM*Theta_m(IJK,L)+M_PL*Theta_m(IJK,M))/&
408 2.d0
409 Bp_lm = (M_PM*M_PL*(Theta_m(IJK,L)-&
410 Theta_m(IJK,M) ))/(2.d0*MPSUM)
411 Dp_lm = (M_PL*M_PM*(M_PM*Theta_m(IJK,M)+M_PL*&
412 Theta_m(IJK,L) ))/(2.d0*MPSUM*MPSUM)
413
414 R1p_lm = (1.d0/((Ap_lm**1.5)*(Dp_lm**3)))+ &
415 ((9.d0*Bp_lm*Bp_lm)/(Ap_lm**2.5 * Dp_lm**4))+&
416 ((30.d0*Bp_lm**4)/(2.d0*Ap_lm**3.5 * Dp_lm**5))
417
418 R3p_lm = (1.d0/((Ap_lm**1.5)*(Dp_lm**3.5)))+&
419 ((21.d0*Bp_lm*Bp_lm)/(2.d0 * Ap_lm**2.5 * Dp_lm**4.5))+&
420 ((315.d0*Bp_lm**4)/(8.d0 * Ap_lm**3.5 *Dp_lm**5.5))
421
422 R4p_lm = (3.d0/( Ap_lm**2.5 * Dp_lm**3.5))+&
423 ((35.d0*Bp_lm*Bp_lm)/(2.d0 * Ap_lm**3.5 * Dp_lm**4.5))+&
424 ((441.d0*Bp_lm**4)/(8.d0 * Ap_lm**4.5 * Dp_lm**5.5))
425
426 R5p_lm = (1.d0/(Ap_lm**2.5 * Dp_lm**3))+ &
427 ((5.d0*Bp_lm*Bp_lm)/(Ap_lm**3.5 * Dp_lm**4))+&
428 ((14.d0*Bp_lm**4)/( Ap_lm**4.5 * Dp_lm**5))
429
430 R10p_lm = (1.d0/(Ap_lm**2.5 * Dp_lm**2.5))+&
431 ((25.d0*Bp_lm*Bp_lm)/(2.d0* Ap_lm**3.5 * Dp_lm**3.5))+&
432 ((1225.d0*Bp_lm**4)/(24.d0* Ap_lm**4.5 * Dp_lm**4.5))
433
434
435
436 (IJK,LM) = ED_common_term*DSQRT(PI)*(M_PM*M_PL/&
437 (2.d0*MPSUM))*R5p_lm*( (Theta_M(IJK,M)*Theta_M(IJK,L))**3 )
438
439
440 (IJK,M,L) = -ED_common_term* (1.d0-C_E)*(M_PL/MPSUM)*&
441 (DSQRT(PI)/6.d0)*R1p_lm*( (Theta_m(IJK,M)*Theta_m(IJK,L))**3 )
442
443
444
445 = ED_common_term*( ((3.d0*DPSUMo2*PI/40.d0)*M_PL*&
446 R10p_lm)+( (DPSUMo2*PI/4.d0)*(M_PM*M_PL/MPSUM)*Bp_lm*&
447 R4p_lm)-( (1.d0-C_E)*(M_PL/MPSUM)*(DPSUMo2*PI/16.d0)*&
448 M_PL*Bp_lm*R4p_lm)+( (1.d0-C_E)*(M_PL/MPSUM)*&
449 (DPSUMo2*PI/48.d0)*(M_PM*M_PL/MPSUM)*R3p_lm))
450
451 EDvel_sL_ip(IJK,M,L) = EDvel_sL*( Theta_m(IJK,M)**3.5 *&
452 Theta_m(IJK,L)**2.5 )
453
454
455
456 = ED_common_term*( (-(3.d0*DPSUMo2*PI/40.d0)*M_PM*&
457 R10p_lm)+( (DPSUMo2*PI/4.d0)*(M_PM*M_PL/MPSUM)*Bp_lm*&
458 R4p_lm)+( (1.d0-C_E)*(M_PL/MPSUM)*(DPSUMo2*PI/16.d0)*&
459 M_PM*Bp_lm*R4p_lm)+( (1.d0-C_E)*(M_PL/MPSUM)*&
460 (DPSUMo2*PI/48.d0)*(M_PM*M_PL/MPSUM)*R3p_lm))
461
462 EDvel_sM_ip(IJK,M,L) = EDvel_sM*( Theta_m(IJK,M)**2.5 *&
463 Theta_m(IJK,L)**3.5 )
464
465 ENDIF
466
467 ENDDO
468
469 ENDIF
470 ENDDO
471
472 RETURN
473 END SUBROUTINE CALC_IA_ENERGY_DISSIPATION_SS
474
475
476
477
478
479
480
481
482
483
484
485
486
487 SUBROUTINE CALC_GD_99_ENERGY_DISSIPATION_SS(M)
488
489
490
491 USE constant, only: pi
492 USE constant, only: C_e
493 USE fldvar, only: rop_s, d_p
494 USE fldvar, only: theta_m, ep_s
495 USE rdf, only: g_0
496
497 USE functions, only: fluid_at
498 USE compar, only: ijkstart3, ijkend3
499 IMPLICIT NONE
500
501
502
503
504 INTEGER, INTENT(IN) :: M
505
506
507
508
509 INTEGER :: IJK
510
511 DOUBLE PRECISION :: press_star, c_star, zeta0_star, &
512 nu_gamma_star, &
513 lambda_num, cd_num, zeta1
514 DOUBLE PRECISION :: D_PM, EP_SM
515 DOUBLE PRECISION :: nu0, Chi
516
517
518 DO IJK = ijkstart3, ijkend3
519 IF ( FLUID_AT(IJK) ) THEN
520
521
522
523
524 = G_0(IJK,M,M)
525 EP_SM = EP_s(IJK,M)
526 D_PM = D_P(IJK,M)
527
528
529 = (96.d0/5.d0)*(EP_SM/D_PM)*DSQRT(Theta_m(IJK,M)/PI)
530
531 press_star = 1.d0 + 2.d0*(1.d0+C_E)*EP_SM*Chi
532
533 c_star = 32.0d0*(1.0d0 - C_E)*(1.d0 - 2.0d0*C_E*C_E) &
534 / (81.d0 - 17.d0*C_E + 30.d0*C_E*C_E*(1.0d0-C_E))
535
536 zeta0_star = (5.d0/12.d0)*Chi*(1.d0 - C_E*C_E) &
537 * (1.d0 + (3.d0/32.d0)*c_star)
538
539 nu_gamma_star = ((1.d0+C_E)/48.d0)*Chi*(128.d0-96.d0*C_E + &
540 15.d0*C_E*C_E-15.d0*C_E*C_E*C_E+ (c_star/64.d0) * (15.d0* &
541 C_E*C_E*C_E-15.d0*C_E*C_E+498.d0*C_E-434.d0))
542
543 lambda_num = (3.d0/8.d0)*( (1.d0-C_E)*(5.d0*C_E*C_E+4.d0*C_E-1.d0)+ &
544 (c_star/12.d0)*(159.d0*C_E+3.d0*C_E*C_E-19.d0*C_E- &
545 15.d0*C_E*C_E*C_E) ) * (1.d0+C_E)
546
547
548
549 = ( (4.d0/15.d0)*lambda_num*EP_SM*Chi + &
550 (press_star-1.d0)*(2.d0/3.d0-C_E)*c_star ) / &
551 ( 0.5d0*zeta0_star+nu_gamma_star + (5.d0*c_star/64.d0) * &
552 (1.d0+(3.d0*c_star/64.d0))*Chi*(1.d0-C_E*C_E))
553
554
555
556
557 = -(1.d0-C_E)*(press_star-1.d0) + (5.d0/32.d0) * &
558 (1.d0-C_E*C_E)*(1.d0+(3.d0*c_star/64.d0))*Chi*cd_num
559
560
561
562 (IJK,M,M) = (3.d0/2.d0)*ROP_s(IJK,M)*zeta1
563
564
565
566 (IJK,M,M) = (3.d0/2.d0)*ROP_s(IJK,M)*nu0*zeta0_star
567
568 ENDIF
569 ENDDO
570
571 RETURN
572 END SUBROUTINE CALC_GD_99_ENERGY_DISSIPATION_SS
573
574
575
576
577
578
579
580
581
582
583
584
585
586 SUBROUTINE CALC_GTSH_ENERGY_DISSIPATION_SS(M)
587
588
589
590 USE constant, only: pi
591 USE constant, only: C_e
592 USE fldvar, only: ep_s
593 USE fldvar, only: ro_g, rop_g
594 USE fldvar, only: ro_s, d_p
595 USE fldvar, only: theta_m
596 USE physprop, only: mu_g
597 USE rdf, only: g_0
598 USE param1, only: zero, one, small_number
599
600 USE functions, only: fluid_at
601 USE compar, only: ijkstart3, ijkend3
602 IMPLICIT NONE
603
604
605
606
607 INTEGER, INTENT(IN) :: M
608
609
610
611
612 INTEGER :: IJK
613
614 DOUBLE PRECISION :: D_PM, EP_SM, V_p, N_p, M_p
615 DOUBLE PRECISION :: nu0, Chi
616 DOUBLE PRECISION :: VREL
617 DOUBLE PRECISION :: Re_m, Re_T
618 DOUBLE PRECISION :: zeta_star, mu2_0, mu4_0, mu4_1
619 DOUBLE PRECISION :: omega, nu_j, rho_10, rho_11
620
621
622
623 DO IJK = ijkstart3, ijkend3
624 IF ( FLUID_AT(IJK) ) THEN
625
626
627 = G_0(IJK,M,M)
628 EP_SM = EP_s(IJK,M)
629 D_PM = D_P(IJK,M)
630 V_p = pi*D_PM**3/6d0
631 n_p = EP_SM/V_p
632 M_p = V_p * ro_s(ijk,m)
633
634 nu0 = (96.d0/5.d0)*(EP_SM/D_PM)*DSQRT(Theta_m(IJK,M)/PI)
635
636
637 = KT_RVEL(IJK, M)
638
639 = D_PM*VREL*ROP_g(ijk)/Mu_g(ijk)
640 Re_T = ro_g(ijk)*D_PM*dsqrt(theta_m(ijk,m)) / mu_g(ijk)
641
642
643
644 (ijk) = one/6d0*D_PM*VREL**2*(3d0*pi*mu_g(ijk)*&
645 D_PM/M_p)**2 / dsqrt(pi*theta_m(ijk,m)) * &
646 S_star(EP_SM, Chi)
647
648
649 = dsqrt(2d0*pi) * Chi * (one-C_E**2)
650
651
652 = (4.5d0+C_E**2) * mu2_0
653
654
655
656
657 = (6.46875d0+0.9375d0*C_E**2)*mu2_0 + &
658 2d0*dsqrt(2d0*pi)* Chi*(one+C_E)
659
660 A2_gtsh(ijk) = zero
661 if(EP_SM> small_number) then
662
663 = 4.5d0*dsqrt(2d0*Pi)*&
664 (ro_g(ijk)/ro_s(ijk,m))**2*Re_m**2 * &
665 S_star(EP_SM,Chi) / (EP_SM*(one-EP_SM)**2 * Re_T**4)
666
667
668
669
670 (ijk) = (5d0*mu2_0 - mu4_0) / (mu4_1 - 5d0* &
671 (19d0/16d0*mu2_0 - 1.5d0*zeta_star))
672 endif
673
674
675
676
677
678
679 (ijk,M,M) = 4d0/3d0*dsqrt(pi)*(one-C_E**2)*Chi* &
680 (one+0.1875d0*A2_gtsh(ijk))*n_p*D_PM**2*dsqrt(theta_m(ijk,m))
681
682
683
684 = (one+C_E)*nu0*((one-C_E**2)*(5d0*C_E-one) - &
685 A2_gtsh(ijk)/ 6d0 * (15d0*C_E**3-3d0*C_E**2+81d0*C_E-61d0))
686 nu_j = (one+C_E)/192d0*Chi*nu0* &
687 (241d0-177d0*C_E+30d0*C_E**2-30d0*C_E**3)
688
689
690 = 2d0*Chi*EP_SM*(C_E**2-one)
691 rho_11 = 25d0/1024d0*EP_SM*Chi**2*(one-C_E**2)* &
692 (one+3d0/128d0*A2_gtsh(ijk)) * (omega/10d0 - &
693 (one+C_E)*nu0*(one/3d0-C_E)*A2_gtsh(ijk)/2d0) / &
694 (nu_j + G_gtsh(EP_SM, Chi, IJK, M)/m_p + 1.5d0* &
695 xsi_gtsh(ijk)/theta_m(ijk,m) -1.5d0*EDT_s_ip(ijk,M,M))
696
697
698 (IJK,M,M) = rho_10 + rho_11
699
700 ENDIF
701 ENDDO
702
703 RETURN
704 END SUBROUTINE CALC_GTSH_ENERGY_DISSIPATION_SS
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722 DOUBLE PRECISION FUNCTION G_gtsh (EP_SM, Chi, IJK, M)
723
724
725
726 USE constant, only: pi
727 USE param1, only: one
728 USE physprop, only: mu_g
729 USE fldvar, only: ro_g
730 USE fldvar, only: d_p, theta_m
731 IMPLICIT NONE
732
733
734
735
736 DOUBLE PRECISION, INTENT(IN) :: EP_SM
737
738 DOUBLE PRECISION, INTENT(IN) :: Chi
739
740 INTEGER, INTENT(IN) :: IJK
741
742
743 INTEGER, INTENT(IN) :: M
744
745
746
747 DOUBLE PRECISION :: Re_T
748 DOUBLE PRECISION :: Rdiss, RdissP
749
750
751
752 if(EP_SM <= 0.1d0) then
753 RdissP = one+3d0*dsqrt(EP_SM/2d0)
754 else
755 RdissP = &
756 one + 3d0*dsqrt(EP_SM/2d0) + 135d0/64d0*EP_SM*dlog(EP_SM) + &
757 11.26d0*EP_SM*(one-5.1d0*EP_SM+16.57d0*EP_SM**2-21.77d0* &
758 EP_SM**3) - EP_SM*Chi*dlog(epM)
759 endif
760
761 Re_T = ro_g(ijk)*d_p(ijk,m)*dsqrt(theta_m(ijk,m)) / mu_g(ijk)
762
763 Rdiss = RdissP + Re_T * K_phi(EP_SM)
764
765 G_gtsh = 3d0*Pi*mu_g(ijk)*d_p(ijk,m)*Rdiss
766
767 RETURN
768 END FUNCTION G_gtsh
769
770
771
772
773
774
775
776 DOUBLE PRECISION FUNCTION K_phi (phi)
777 IMPLICIT NONE
778
779
780
781
782 DOUBLE PRECISION, INTENT(IN) :: phi
783
784
785 = (0.096d0 + 0.142d0*phi**0.212d0) / (1d0-phi)**4.454d0
786 K_phi = 0.0d0
787 RETURN
788 END FUNCTION K_phi
789
790
791
792
793
794
795
796 DOUBLE PRECISION FUNCTION R_d (phi)
797 IMPLICIT NONE
798
799
800
801
802 DOUBLE PRECISION, INTENT(IN) :: phi
803
804
805 = 1.0d0
806 if((phi > 1d-15) .and. (phi <= 0.4d0)) then
807 R_d = (1d0+3d0*dsqrt(phi/2d0)+135d0/64d0*phi*dlog(phi)+17.14d0*phi) / &
808 (1d0+0.681d0*phi-8.48*phi**2+8.16d0*phi**3)
809 elseif(phi > 0.4d0) then
810 R_d = 10d0*phi/(1d0-phi)**3 + 0.7d0
811 endif
812 RETURN
813 END FUNCTION R_d
814
815
816
817
818
819
820
821 DOUBLE PRECISION FUNCTION S_star (phi, Chi)
822 IMPLICIT NONE
823
824
825
826
827 DOUBLE PRECISION, INTENT(IN) :: phi
828
829 DOUBLE PRECISION, INTENT(IN) :: Chi
830
831
832
833 = 1.0d0
834 if(phi >= 0.1d0) &
835 S_star = R_d(phi)**2/(Chi*(1d0+3.5d0*dsqrt(phi)+5.9*phi))
836 RETURN
837 END FUNCTION S_Star
838
839 END MODULE kintheory
840