File: RELATIVE:/../../../mfix.git/model/des/drag_gp_des.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SUBROUTINE DES_DRAG_GP(NP, PARTICLE_VEL, FLUID_VEL, EPg)
21
22
23
24
25 USE compar
26 USE constant
27 USE discretelement
28 USE drag
29 USE fldvar
30 USE functions
31 USE geometry
32 USE indices
33 USE machine, only: start_log, end_log
34 USE param
35 USE param1
36 USE physprop
37 USE run
38 USE sendrecv
39 USE ur_facs
40
41 IMPLICIT NONE
42
43
44
45
46 INTEGER , INTENT(IN) :: NP
47
48 DOUBLE PRECISION, INTENT(IN) :: PARTICLE_VEL(3)
49
50 DOUBLE PRECISION, INTENT(IN) :: FLUID_VEL(3)
51
52 DOUBLE PREcISION, INTENT(IN) :: EPg
53
54
55
56
57
58 INTEGER :: IJK
59
60 INTEGER :: M
61
62 DOUBLE PRECISION :: VSLP(3), VREL
63
64
65 DOUBLE PRECISION :: Mu
66
67 DOUBLE PRECISION :: DgA
68
69 DOUBLE PRECISION F_gstmp
70
71 INTEGER :: lM
72
73
74 DOUBLE PRECISION :: F_cor, tSUM
75
76 DOUBLE PRECISION :: DPA
77
78 DOUBLE PRECISION :: Y_i
79
80 DOUBLE PRECISION :: PHIS
81
82
83 DOUBLE PRECISION :: ROg, ROPg, DPM
84
85
86
87 = PIJK(NP,4)
88
89 = PIJK(NP,5)
90
91 = RO_G(IJK)
92 ROPg = RO_G(IJK) * EPg
93
94 = MU_G(IJK)
95
96 = FLUID_VEL - PARTICLE_VEL
97 VREL = SQRT(dot_product(VSLP, VSLP))
98
99 = 2.0d0*DES_RADIUS(NP)
100
101 = ONE - EPg
102
103
104 SELECT CASE(DRAG_TYPE_ENUM)
105
106 CASE (SYAM_OBRIEN)
107 CALL DRAG_SYAM_OBRIEN(DgA,EPG,Mu,ROg,VREL,DPM)
108
109 CASE (GIDASPOW)
110 CALL DRAG_GIDASPOW(DgA,EPg,Mu,ROg,ROPg,VREL,DPM)
111
112 CASE (GIDASPOW_BLEND)
113 CALL DRAG_GIDASPOW_BLEND(DgA,EPg,Mu,ROg,ROPg,VREL,DPM)
114
115 CASE (WEN_YU)
116 CALL DRAG_WEN_YU(DgA,EPg,Mu,ROPg,VREL,DPM)
117
118 CASE (KOCH_HILL)
119 CALL DRAG_KOCH_HILL(DgA,EPg,Mu,ROPg,VREL,DPM,DPM,phis)
120
121 CASE (USER_DRAG)
122 CALL DRAG_USR(IJK,NP,DgA,EPg,Mu,ROg,VREL,DPM,DES_RO_S(M), &
123 FLUID_VEL(1), FLUID_VEL(2), FLUID_VEL(3))
124
125 CASE DEFAULT
126
127
128 = ZERO
129 DO lM = 1,DES_MMAX
130 IF(PHIS > ZERO) THEN
131 tSUM = tSUM + DES_ROP_S(IJK,lM) / &
132 (PHIS*DES_RO_S(lM)*DES_D_p0(lM))
133 ELSE
134 tSUM = tSUM + ONE/DES_D_p0(lM)
135 ENDIF
136 ENDDO
137 IF(DES_CONTINUUM_HYBRID) THEN
138 DO lM = 1,SMAX
139 IF (phis .GT. ZERO) THEN
140 tSUM = tSUM + EP_S(IJK,lM)/(PHIS*D_P(IJK,lM))
141 ELSE
142 tSUM = tSUM + ONE/D_P(IJK,lM)
143 ENDIF
144 ENDDO
145 ENDIF
146
147 DPA = ONE / tSUM
148 Y_i = DPM * tSUM
149
150 SELECT CASE(DRAG_TYPE_ENUM)
151
152
153 CASE (GIDASPOW_PCF)
154 CALL DRAG_GIDASPOW(DgA,EPg,Mu,ROg,ROPg,VREL,DPA)
155 CASE (GIDASPOW_BLEND_PCF)
156 CALL DRAG_GIDASPOW_BLEND(DgA,EPg,Mu,ROg,ROPg,VREL,DPA)
157 CASE (WEN_YU_PCF)
158 CALL DRAG_WEN_YU(DgA,EPg,Mu,ROPg,VREL,DPA)
159 CASE (KOCH_HILL_PCF)
160 CALL DRAG_KOCH_HILL(DgA,EPg,Mu,ROPg,VREL,DPM,DPA,phis)
161 CASE (BVK)
162 CALL DRAG_BVK(DgA,EPg,Mu,ROPg,VREL,DPM,DPA,phis)
163
164 CASE DEFAULT
165 CALL START_LOG
166 IF(DMP_LOG) WRITE (*, '(A,A)') &
167 'Unknown DRAG_TYPE: ', DRAG_TYPE
168 WRITE (UNIT_LOG, '(A,A)') 'Unknown DRAG_TYPE: ', DRAG_TYPE
169 CALL END_LOG
170 CALL mfix_exit(myPE)
171 END SELECT
172
173
174
175 IF(Model_B) THEN
176 IF (M == 1) THEN
177 F_cor = (EPg*Y_i + PHIS*Y_i**2)
178 ELSE
179 F_cor = (EPg*Y_i + PHIS*Y_i**2 + &
180 0.064d0*EPg*Y_i**3)
181 ENDIF
182 ELSE
183 F_cor = Y_i
184 ENDIF
185 DgA = ONE/(Y_i*Y_i) * DgA * F_cor
186
187 END SELECT
188
189
190
191
192 IF(MODEL_B) THEN
193 F_gstmp = DgA * PVOL(NP)/EP_G(IJK)
194 ELSE
195 F_gstmp = DgA * PVOL(NP)
196 ENDIF
197
198
199
200 (NP) = (ONE - UR_F_gs) * F_gp(NP) + UR_F_gs * F_gstmp
201
202 RETURN
203 END SUBROUTINE DES_DRAG_GP
204