File: RELATIVE:/../../../mfix.git/model/qmomk/qmomk_fluxes_mod.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 MODULE qmomk_fluxes
24
25 USE qmomk_parameters
26 USE qmomk_collision
27
28 IMPLICIT NONE
29
30 PRIVATE
31
32
33 PUBLIC :: KINETIC_FLUX_X_TWENTY_EIGHT_NODES
34 PUBLIC :: KINETIC_FLUX_Y_TWENTY_EIGHT_NODES
35 PUBLIC :: KINETIC_FLUX_Z_TWENTY_EIGHT_NODES
36
37 CONTAINS
38
39
40 SUBROUTINE KINETIC_FLUX_X_TWENTY_EIGHT_NODES (Nl, Ul, Vl, Wl, Nr, Ur, Vr, Wr, f)
41
42 implicit none
43
44 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nl
45 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ul
46 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vl
47 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wl
48 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nr
49 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ur
50 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vr
51 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wr
52 DOUBLE PRECISION, INTENT(INOUT), DIMENSION(QMOMK_NMOM) :: f
53
54 INTEGER :: i
55
56 f = 0.D0
57
58 DO i = 1, QMOMK_NN
59 f(1) = f(1) + Nl(i)*MAX(Ul(i),0.D0) &
60 + Nr(i)*MIN(Ur(i),0.D0)
61
62 f(2) = f(2) + Nl(i)*Ul(i) *MAX(Ul(i),0.D0) &
63 + Nr(i)*Ur(i)*MIN(Ur(i),0.D0)
64
65 f(3) = f(3) + Nl(i)*Vl(i) *MAX(Ul(i),0.D0) &
66 + Nr(i)*Vr(i)*MIN(Ur(i),0.D0)
67
68 f(4) = f(4) + Nl(i)*Wl(i)*MAX(Ul(i),0.D0) &
69 + Nr(i)*Wr(i)*MIN(Ur(i),0.D0)
70
71 f(5) = f(5) + Nl(i)*(Ul(i)**2)*MAX(Ul(i),0.D0) &
72 + Nr(i)*(Ur(i)**2)*MIN(Ur(i),0.D0)
73
74 f(6) = f(6) + Nl(i)*Ul(i)*Vl(i)*MAX(Ul(i),0.D0) &
75 + Nr(i)*Ur(i)*Vr(i)*MIN(Ur(i),0.D0)
76
77 f(7) = f(7) + Nl(i)*Ul(i)*Wl(i)*MAX(Ul(i),0.D0) &
78 + Nr(i)*Ur(i)*Wr(i)*MIN(Ur(i),0.D0)
79
80 f(8) = f(8) + Nl(i)*(Vl(i)**2)*MAX(Ul(i),0.D0) &
81 + Nr(i)*(Vr(i)**2)*MIN(Ur(i),0.D0)
82
83 f(9) = f(9) + Nl(i)*Vl(i)*Wl(i)*MAX(Ul(i),0.D0) &
84 + Nr(i)*Vr(i)*Wr(i)*MIN(Ur(i),0.D0)
85
86 f(10)= f(10)+ Nl(i)*(Wl(i)**2) *MAX(Ul(i),0.D0) &
87 + Nr(i)*(Wr(i)**2)*MIN(Ur(i),0.D0)
88
89 f(11)= f(11)+ Nl(i)*(Ul(i)**3)*MAX(Ul(i),0.D0) &
90 + Nr(i)*(Ur(i)**3)*MIN(Ur(i),0.D0)
91
92 f(12)= f(12)+ Nl(i)*(Ul(i)**2)*Vl(i) *MAX(Ul(i),0.D0) &
93 + Nr(i)*(Ur(i)**2)*Vr(i) *MIN(Ur(i),0.D0)
94
95 f(13)= f(13)+ Nl(i)*(Ul(i)**2)*Wl(i) *MAX(Ul(i),0.D0) &
96 + Nr(i)*(Ur(i)**2)*Wr(i)*MIN(Ur(i),0.D0)
97
98 f(14)= f(14)+ Nl(i)*Ul(i)*(Vl(i)**2) *MAX(Ul(i),0.D0) &
99 + Nr(i)*Ur(i)*(Vr(i)**2)*MIN(Ur(i),0.D0)
100
101 f(15)= f(15)+ Nl(i)*Ul(i)*Vl(i)*Wl(i)*MAX(Ul(i),0.D0) &
102 + Nr(i)*Ur(i)*Vr(i)*Wr(i)*MIN(Ur(i),0.D0)
103
104 f(16)= f(14)+ Nl(i)*Ul(i)*(Wl(i)**2)*MAX(Ul(i),0.D0) &
105 + Nr(i)*Ur(i)*(Wr(i)**2)*MIN(Ur(i),0.D0)
106
107 f(17)= f(17)+ Nl(i)*(Vl(i)**3)*MAX(Ul(i),0.D0) &
108 + Nr(i)*(Vr(i)**3)*MIN(Ur(i),0.D0)
109
110 f(18)= f(18)+ Nl(i)*(Vl(i)**2)*Wl(i)*MAX(Ul(i),0.D0) &
111 + Nr(i)*(Vr(i)**2)*Wr(i)*MIN(Ur(i),0.D0)
112
113 f(19)= f(19)+ Nl(i)*Vl(i)*(Wl(i)**2)*MAX(Ul(i),0.D0) &
114 + Nr(i)*Vr(i)*(Wr(i)**2)*MIN(Ur(i),0.D0)
115
116 f(20)= f(20)+ Nl(i)*(Wl(i)**3)*MAX(Ul(i),0.D0) &
117 + Nr(i)*(Wr(i)**3)*MIN(Ur(i),0.D0)
118 END DO
119 END SUBROUTINE KINETIC_FLUX_X_TWENTY_EIGHT_NODES
120
121
122 SUBROUTINE KINETIC_FLUX_Y_TWENTY_EIGHT_NODES (Nl, Ul, Vl, Wl, Nr, Ur, Vr, Wr, f)
123
124 IMPLICIT NONE
125
126 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nl
127 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ul
128 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vl
129 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wl
130 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nr
131 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ur
132 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vr
133 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wr
134 DOUBLE PRECISION, INTENT(INOUT), DIMENSION(QMOMK_NMOM) :: f
135
136 INTEGER :: i
137
138 f = 0.D0
139
140 DO i = 1, QMOMK_NN
141 f(1) = f(1) + Nl(i)*MAX(Vl(i),0.D0) &
142 + Nr(i)*MIN(Vr(i),0.D0)
143
144 f(2) = f(2) + Nl(i)*Ul(i)*MAX(Vl(i),0.D0) &
145 + Nr(i)*Ur(i)*MIN(Vr(i),0.D0)
146
147 f(3) = f(3) + Nl(i)*Vl(i)*MAX(Vl(i),0.D0) &
148 + Nr(i)*Vr(i)*MIN(Vr(i),0.D0)
149
150 f(4) = f(4) + Nl(i)*Wl(i)*MAX(Vl(i),0.D0) &
151 + Nr(i)*Wr(i)*MIN(Vr(i),0.D0)
152
153 f(5) = f(5) + Nl(i)*(Ul(i)**2)*MAX(Vl(i),0.D0) &
154 + Nr(i)*(Ur(i)**2)*MIN(Vr(i),0.D0)
155
156 f(6) = f(6) + Nl(i)*Ul(i)*Vl(i)*MAX(Vl(i),0.D0) &
157 + Nr(i)*Ur(i)*Vr(i)*MIN(Vr(i),0.D0)
158
159 f(7) = f(7) + Nl(i)*Ul(i)*Wl(i)*MAX(Vl(i),0.D0) &
160 + Nr(i)*Ur(i)*Wr(i)*MIN(Vr(i),0.D0)
161
162 f(8) = f(8) + Nl(i)*(Vl(i)**2)*MAX(Vl(i),0.D0) &
163 + Nr(i)*(Vr(i)**2)*MIN(Vr(i),0.D0)
164
165 f(9) = f(9) + Nl(i)*Vl(i)*Wl(i)*MAX(Vl(i),0.D0) &
166 + Nr(i)*Vr(i)*Wr(i)*MIN(Vr(i),0.D0)
167
168 f(10)= f(10)+ Nl(i)*(Wl(i)**2)*MAX(Vl(i),0.D0) &
169 + Nr(i)*(Wr(i)**2)*MIN(Vr(i),0.D0)
170
171 f(11)= f(11)+ Nl(i)*(Ul(i)**3)*MAX(Vl(i),0.D0) &
172 + Nr(i)*(Ur(i)**3)*MIN(Vr(i),0.D0)
173
174 f(12)= f(12)+ Nl(i)*(Ul(i)**2)*Vl(i)*MAX(Vl(i),0.D0) &
175 + Nr(i)*(Ur(i)**2)*Vr(i)*MIN(Vr(i),0.D0)
176
177 f(13)= f(13)+ Nl(i)*(Ul(i)**2)*Wl(i)*MAX(Vl(i),0.D0) &
178 + Nr(i)*(Ur(i)**2)*Wr(i)*MIN(Vr(i),0.D0)
179
180 f(14)= f(14)+ Nl(i)*Ul(i)*(Vl(i)**2)*MAX(Vl(i),0.D0) &
181 + Nr(i)*Ur(i)*(Vr(i)**2)*MIN(Vr(i),0.D0)
182
183 f(15)= f(15)+ Nl(i)*Ul(i)*Vl(i)*Wl(i)*MAX(Vl(i),0.D0) &
184 + Nr(i)*Ur(i)*Vr(i)*Wr(i)*MIN(Vr(i),0.D0)
185
186 f(16)= f(14)+ Nl(i)*Ul(i)*(Wl(i)**2)*MAX(Vl(i),0.D0) &
187 + Nr(i)*Ur(i)*(Wr(i)**2)*MIN(Vr(i),0.D0)
188
189 f(17)= f(17)+ Nl(i)*(Vl(i)**3)*MAX(Vl(i),0.D0) &
190 + Nr(i)*(Vr(i)**3)*MIN(Vr(i),0.D0)
191
192 f(18)= f(18)+ Nl(i)*(Vl(i)**2)*Wl(i)*MAX(Vl(i),0.D0) &
193 + Nr(i)*(Vr(i)**2)*Wr(i)*MIN(Vr(i),0.D0)
194
195 f(19)= f(19)+ Nl(i)*Vl(i)*(Wl(i)**2)*MAX(Vl(i),0.D0) &
196 + Nr(i)*Vr(i)*(Wr(i)**2)*MIN(Vr(i),0.D0)
197
198 f(20)= f(20)+ Nl(i)*(Wl(i)**3)*MAX(Vl(i),0.D0) &
199 + Nr(i)*(Wr(i)**3)*MIN(Vr(i),0.D0)
200
201 END DO
202 END SUBROUTINE KINETIC_FLUX_Y_TWENTY_EIGHT_NODES
203
204
205 SUBROUTINE KINETIC_FLUX_Z_TWENTY_EIGHT_NODES (Nl, Ul, Vl, Wl, Nr, Ur, Vr, Wr, f)
206
207 IMPLICIT NONE
208
209 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nl
210 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ul
211 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vl
212 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wl
213 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Nr
214 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Ur
215 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Vr
216 DOUBLE PRECISION, INTENT(IN), DIMENSION(QMOMK_NN) :: Wr
217 DOUBLE PRECISION, INTENT(INOUT), DIMENSION(QMOMK_NMOM) :: f
218
219 INTEGER :: i
220
221 f = 0.D0
222
223 DO i = 1, QMOMK_NN
224 f(1) = f(1) + Nl(i)*MAX(Wl(i),0.D0) &
225 + Nr(i)*MIN(Wr(i),0.D0)
226
227 f(2) = f(2) + Nl(i)*Ul(i)*MAX(Wl(i),0.D0) &
228 + Nr(i)*Ur(i)*MIN(Wr(i),0.D0)
229
230 f(3) = f(3) + Nl(i)*Vl(i)*MAX(Wl(i),0.D0) &
231 + Nr(i)*Vr(i)*MIN(Wr(i),0.D0)
232
233 f(4) = f(4) + Nl(i)*Wl(i)*MAX(Wl(i),0.D0) &
234 + Nr(i)*Wr(i)*MIN(Wr(i),0.D0)
235
236 f(5) = f(5) + Nl(i)*(Ul(i)**2)*MAX(Wl(i),0.D0) &
237 + Nr(i)*(Ur(i)**2)*MIN(Wr(i),0.D0)
238
239 f(6) = f(6) + Nl(i)*Ul(i)*Vl(i)*MAX(Wl(i),0.D0) &
240 + Nr(i)*Ur(i)*Vr(i)*MIN(Wr(i),0.D0)
241
242 f(7) = f(7) + Nl(i)*Ul(i)*Wl(i)*MAX(Wl(i),0.D0) &
243 + Nr(i)*Ur(i)*Wr(i)*MIN(Wr(i),0.D0)
244
245 f(8) = f(8) + Nl(i)*(Vl(i)**2)*MAX(Wl(i),0.D0) &
246 + Nr(i)*(Vr(i)**2)*MIN(Wr(i),0.D0)
247
248 f(9) = f(9) + Nl(i)*Vl(i)*Wl(i)*MAX(Wl(i),0.D0) &
249 + Nr(i)*Vr(i)*Wr(i)*MIN(Wr(i),0.D0)
250
251 f(10)= f(10)+ Nl(i)*(Wl(i)**2)*MAX(Wl(i),0.D0) &
252 + Nr(i)*(Wr(i)**2)*MIN(Wr(i),0.D0)
253
254 f(11)= f(11)+ Nl(i)*(Ul(i)**3)*MAX(Wl(i),0.D0) &
255 + Nr(i)*(Ur(i)**3)*MIN(Wr(i),0.D0)
256
257 f(12)= f(12)+ Nl(i)*(Ul(i)**2)*Vl(i)*MAX(Wl(i),0.D0) &
258 + Nr(i)*(Ur(i)**2)*Vr(i)*MIN(Wr(i),0.D0)
259
260 f(13)= f(13)+ Nl(i)*(Ul(i)**2)*Wl(i)*MAX(Wl(i),0.D0) &
261 + Nr(i)*(Ur(i)**2)*Wr(i)*MIN(Wr(i),0.D0)
262
263 f(14)= f(14)+ Nl(i)*Ul(i)*(Vl(i)**2)*MAX(Wl(i),0.D0) &
264 + Nr(i)*Ur(i)*(Vr(i)**2)*MIN(Wr(i),0.D0)
265
266 f(15)= f(15)+ Nl(i)*Ul(i)*Vl(i)*Wl(i)*MAX(Wl(i),0.D0) &
267 + Nr(i)*Ur(i)*Vr(i)*Wr(i)*MIN(Wr(i),0.D0)
268
269 f(16)= f(14)+ Nl(i)*Ul(i)*(Wl(i)**2)*MAX(Wl(i),0.D0) &
270 + Nr(i)*Ur(i)*(Wr(i)**2)*MIN(Wr(i),0.D0)
271
272 f(17)= f(17)+ Nl(i)*(Vl(i)**3)*MAX(Wl(i),0.D0) &
273 + Nr(i)*(Vr(i)**3)*MIN(Wr(i),0.D0)
274
275 f(18)= f(18)+ Nl(i)*(Vl(i)**2)*Wl(i)*MAX(Wl(i),0.D0) &
276 + Nr(i)*(Vr(i)**2)*Wr(i)*MIN(Wr(i),0.D0)
277
278 f(19)= f(19)+ Nl(i)*Vl(i)*(Wl(i)**2)*MAX(Wl(i),0.D0) &
279 + Nr(i)*Vr(i)*(Wr(i)**2)*MIN(Wr(i),0.D0)
280
281 f(20)= f(20)+ Nl(i)*(Wl(i)**3)*MAX(Wl(i),0.D0) &
282 + Nr(i)*(Wr(i)**3)*MIN(Wr(i),0.D0)
283
284 END DO
285 END SUBROUTINE KINETIC_FLUX_Z_TWENTY_EIGHT_NODES
286
287 END MODULE qmomk_fluxes
288