File: N:\mfix\model\calc_gama.f
1
2
3
4
5
6
7
8 SUBROUTINE CALC_GAMA(M)
9
10
11
12 USE sendrecv, only: send_recv
13 USE energy, only: gama_gs
14 USE usr_prop, only: usr_gama, calc_usr_prop
15 USE usr_prop, only: gassolids_heattransfer
16 IMPLICIT NONE
17
18
19
20
21 INTEGER, INTENT(IN) :: M
22
23
24 IF (USR_GAMA(M)) THEN
25 CALL CALC_USR_PROP(GasSolids_HeatTransfer,lm=M)
26 ELSE
27 CALL CALC_DEFAULT_GAMA_GS(M)
28 ENDIF
29 call send_recv(GAMA_GS,2)
30
31 RETURN
32 END SUBROUTINE CALC_GAMA
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 SUBROUTINE CALC_DEFAULT_GAMA_GS(M)
51
52
53
54 USE compar, only: ijkstart3, ijkend3
55 USE energy, only: gama_gs
56 USE fldvar, only: u_g, v_g, w_g, u_s, v_s, w_s
57 USE fldvar, only: ep_g, ro_g, d_p, ep_s
58 Use fun_avg, only: avg_x_e, avg_y_n, avg_z_t
59 USE functions, only: fluidorp_flow_at
60 use functions, only: im_of, jm_of, km_of
61 use indices, only: i_of
62 USE param1, only: zero, half, one, small_number, large_number
63 USE physprop, only: mu_g, k_g, c_pg
64 USE rxns, only: r_phase
65 IMPLICIT NONE
66
67
68
69
70 INTEGER, INTENT(IN) :: M
71
72
73
74
75 INTEGER :: I, IJK, IMJK, IJMK, IJKM
76
77 DOUBLE PRECISION :: UGC, VGC, WGC
78
79 DOUBLE PRECISION :: USCM, VSCM, WSCM
80
81 DOUBLE PRECISION :: VREL
82
83 DOUBLE PRECISION :: Pr1o3
84
85 DOUBLE PRECISION :: Re
86
87 DOUBLE PRECISION :: EP_g2
88
89 DOUBLE PRECISION :: FAC
90
91
92 INTEGER :: LM
93
94
95 DO IJK = ijkstart3, ijkend3
96 IF (FLUIDorP_FLOW_AT(IJK)) THEN
97 I = I_OF(IJK)
98 IMJK = IM_OF(IJK)
99 IJMK = JM_OF(IJK)
100 IJKM = KM_OF(IJK)
101 EP_G2 = EP_G(IJK)*EP_G(IJK)
102
103
104 if(K_G(IJK) > ZERO) then
105 PR1O3 = (C_PG(IJK)*MU_G(IJK)/K_G(IJK))**(1.D0/3.D0)
106 else
107 PR1O3 = LARGE_NUMBER
108 endif
109
110
111 = AVG_X_E(U_G(IMJK),U_G(IJK),I)
112 VGC = AVG_Y_N(V_G(IJMK),V_G(IJK))
113 WGC = AVG_Z_T(W_G(IJKM),W_G(IJK))
114
115 USCM = AVG_X_E(U_S(IMJK,M),U_S(IJK,M),I)
116 VSCM = AVG_Y_N(V_S(IJMK,M),V_S(IJK,M))
117 WSCM = AVG_Z_T(W_S(IJKM,M),W_S(IJK,M))
118
119
120 =SQRT((UGC-USCM)**2+(VGC-VSCM)**2+(WGC-WSCM)**2)
121
122 if(MU_G(IJK) > ZERO)then
123 RE = EP_G(IJK)*D_P(IJK,M)*VREL*RO_G(IJK)/MU_G(IJK)
124 else
125 RE = LARGE_NUMBER
126 endif
127
128
129 (IJK,M) = ((7.D0 - 10.D0*EP_G(IJK)+5.D0*EP_G2)*&
130 (ONE+0.7D0*RE**0.2D0*PR1O3)+&
131 (1.33D0 - 2.4D0*EP_G(IJK)+1.2D0*EP_G2)*&
132 RE**0.7D0*PR1O3)*(K_G(IJK)/D_P(IJK,M))*&
133 (6.D0*EP_S(IJK,M)/D_P(IJK,M))
134
135
136
137 IF (GAMA_GS(IJK,M) > SMALL_NUMBER) THEN
138
139
140 = 1+ (M-1)*M/2
141 FAC = R_PHASE(IJK,LM)*C_PG(IJK)/GAMA_GS(IJK,M)
142 IF (ABS(FAC) < 0.1D0) THEN
143 GAMA_GS(IJK,M) = GAMA_GS(IJK,M)/&
144 (ONE+FAC/2.D0+FAC*FAC/6.D0)
145 ELSE
146 IF (R_PHASE(IJK,LM) > ZERO) THEN
147 GAMA_GS(IJK,M) = R_PHASE(IJK,LM)*C_PG(IJK)*&
148 EXP((-FAC))/(ONE - EXP((-FAC)))
149 ELSE
150 GAMA_GS(IJK,M) = R_PHASE(IJK,LM)*C_PG(IJK)/&
151 (EXP(FAC) - ONE)
152 ENDIF
153 ENDIF
154 ENDIF
155
156 ENDIF
157 ENDDO
158
159
160 RETURN
161 END SUBROUTINE CALC_DEFAULT_GAMA_GS
162