File: N:\mfix\model\des\calc_des_2fluid.f
1
2
3
4
5
6
7
8
9 SUBROUTINE CALC_DES_2FLUID
10
11 use discretelement, only: DES_CONTINUUM_COUPLED
12 use discretelement, only: DES_CONTINUUM_HYBRID
13 use discretelement, only: DES_EXPLICITLY_COUPLED
14
15 use particle_filter, only: DES_INTERP_SCHEME_ENUM
16 use particle_filter, only: DES_INTERP_GARG
17
18 use discretelement, only: DES_CONTINUUM_COUPLED
19 use particle_filter, only: DES_DIFFUSE_MEAN_FIELDS
20
21
22 use discretelement, only: DRAG_BM
23
24 use discretelement, only: F_GDS
25
26 use geometry, only: DO_K
27 use run, only: ANY_SPECIES_EQ
28
29 use des_thermo, only: CALC_CONV_DES
30 use rxns, only: RRATE
31
32 IMPLICIT NONE
33
34 IF(.NOT.DES_CONTINUUM_COUPLED) RETURN
35
36 IF(DES_EXPLICITLY_COUPLED) THEN
37
38 CALL PARTICLES_IN_CELL
39
40 CALL CALC_INTERP_WEIGHTS
41
42 CALL COMP_MEAN_FIELDS
43
44
45 IF(CALC_CONV_DES) CALL CONV_GS_GAS1
46
47 IF(RRATE) CALL RXNS_GS_GAS1
48 ENDIF
49
50
51 SELECT CASE(DES_INTERP_SCHEME_ENUM)
52 CASE(DES_INTERP_GARG) ; CALL DRAG_GS_GAS0
53 CASE DEFAULT; CALL DRAG_GS_GAS1
54 END SELECT
55
56
57 IF(DES_CONTINUUM_HYBRID) THEN
58 SELECT CASE(DES_INTERP_SCHEME_ENUM)
59 CASE DEFAULT; CALL DRAG_SS_TFM_NONINTERP
60 END SELECT
61 ENDIF
62
63
64 IF(DES_DIFFUSE_MEAN_FIELDS) THEN
65 CALL DIFFUSE_MEAN_FIELD(F_GDS,'F_GDS')
66 CALL DIFFUSE_MEAN_FIELD(DRAG_BM(:,1),'DRAG_BM(1)')
67 CALL DIFFUSE_MEAN_FIELD(DRAG_BM(:,2),'DRAG_BM(2)')
68 IF(DO_K) CALL DIFFUSE_MEAN_FIELD(DRAG_BM(:,3),'DRAG_BM(3)')
69
70
71
72
73 ENDIF
74
75 RETURN
76 END SUBROUTINE CALC_DES_2FLUID
77
78
79
80
81
82
83
84
85
86
87 SUBROUTINE DES_2FLUID_CONV(S_P, S_C)
88
89 Use discretelement, only: DES_EXPLICITLY_COUPLED
90 Use des_thermo, only: CONV_Sp, CONV_Sc
91 USE geometry, only: FLAG
92 Use param, only: DIMENSION_3
93
94 use run, only: ODT
95
96 use discretelement, only: DES_ONEWAY_COUPLED
97
98 IMPLICIT NONE
99
100
101
102
103 DOUBLE PRECISION, INTENT(INOUT) :: S_P(DIMENSION_3)
104
105 DOUBLE PRECISION, INTENT(INOUT) :: S_C(DIMENSION_3)
106
107
108
109 IF(DES_ONEWAY_COUPLED) RETURN
110
111 IF(DES_EXPLICITLY_COUPLED) THEN
112 WHERE(FLAG==1)
113 S_P = S_P + CONV_Sp
114 = S_C + CONV_Sc
115 END WHERE
116
117
118
119
120
121 ELSE
122 WHERE(FLAG==1) &
123 S_C = S_C + oDT*CONV_Sc
124 ENDIF
125
126 RETURN
127 END SUBROUTINE DES_2FLUID_CONV
128
129
130
131
132
133
134
135
136
137
138 SUBROUTINE DES_2FLUID_RXNS
139
140 Use discretelement, only: DES_EXPLICITLY_COUPLED
141 Use des_thermo, only: CONV_Sp, CONV_Sc
142 USE geometry, only: FLAG
143 Use param, only: DIMENSION_3
144 USE rxns, only : RRATE
145 USE rxns
146 USE des_rxns
147 USE energy, only: HOR_g
148 use fldvar, only: X_g
149 use run, only: DT
150 use param1, only: ZERO, SMALL_NUMBER, ONE
151 use stiff_chem, only: STIFF_CHEMISTRY
152 use compar, only: IJKSTART3, IJKEND3
153 use geometry, only: VOL
154 use functions, only: FLUID_AT
155 use toleranc, only: ZERO_X_gs
156
157 use discretelement, only: DES_ONEWAY_COUPLED
158
159 use stiff_chem, only: stiff_chemistry
160
161 IMPLICIT NONE
162
163
164
165
166
167
168
169
170
171
172 INTEGER :: IJK
173 DOUBLE PRECISION :: toTFM, lDT
174
175 IF(DES_ONEWAY_COUPLED) RETURN
176 IF(STIFF_CHEMISTRY) RETURN
177
178
179
180 IF(.NOT.RRATE .OR. STIFF_CHEMISTRY) THEN
181 SUM_R_G = ZERO
182 HOR_G = ZERO
183 R_GP = ZERO
184 ROX_GC = ZERO
185 R_PHASE = ZERO
186 ENDIF
187
188
189
190
191
192 = merge(ONE, DT, DES_EXPLICITLY_COUPLED)
193
194 DO IJK=IJKSTART3,IJKEND3
195 IF(.NOT.FLUID_AT(IJK)) CYCLE
196 toTFM = ONE/(lDT * VOL(IJK))
197 R_gp(IJK,:) = R_gp(IJK,:) + DES_R_gp(IJK,:)*toTFM
198 R_PHASE(IJK,:) = R_PHASE(IJK,:) + DES_R_PHASE(IJK,:)*toTFM
199 SUM_R_g(IJK) = SUM_R_g(IJK) + DES_SUM_R_g(IJK)*toTFM
200 HOR_g(IJK) = HOR_g(IJK) + DES_HOR_g(IJK)*toTFM
201 WHERE(X_g(IJK,:) > ZERO_X_gs) RoX_gc(IJK,:) = &
202 RoX_gc(IJK,:)+DES_R_gc(IJK,:)*toTFM/X_g(IJK,:)
203 ENDDO
204
205 RETURN
206 END SUBROUTINE DES_2FLUID_RXNS
207