17 #include "version.inc" 50 DOUBLE PRECISION,
INTENT(INOUT),
DIMENSION(QMOMK_NMOM) :: M
51 DOUBLE PRECISION,
INTENT(IN) :: dp
53 DOUBLE PRECISION :: m0, m1, m2, m3, m11, m22, m33
55 DOUBLE PRECISION :: up1, up2, up3
56 DOUBLE PRECISION :: sig1, sig2, sig3, seq
58 DOUBLE PRECISION :: d11, d12, d13, d22, d23, d33
59 DOUBLE PRECISION :: d111, d112, d113, d122, d123, d133, d222, d223, d233, d333
72 sig1 = max(0.d0, m11/m0 - up1**2)
73 sig2 = max(0.d0, m22/m0 - up2**2)
74 sig3 = max(0.d0, m33/m0 - up3**2)
75 seq = ( sig1 + sig2 + sig3 )/3.d0
77 d11 = m0*(seq + up1**2)
80 d22 = m0*(seq + up2**2)
82 d33 = m0*(seq + up3**2)
83 d111 = m1*(3.d0*seq + up1**2)
84 d112 = m2*(seq + up1**2)
85 d113 = m3*(seq + up1**2)
86 d122 = m1*(seq + up2**2)
88 d133 = m1*(seq + up3**2)
89 d222 = m2*(3.d0*seq + up2**2)
90 d223 = m3*(seq + up2**2)
91 d233 = m2*(seq + up3**2)
92 d333 = m3*(3.d0*seq + up3**2)
127 DOUBLE PRECISION,
INTENT(INOUT),
DIMENSION(QMOMK_NMOM) :: M
128 DOUBLE PRECISION,
INTENT(IN) :: Dt, tcol, dp, e
130 DOUBLE PRECISION :: m0, m1, m2, m3, m11, m12, m13, m22, m23, m33
131 DOUBLE PRECISION :: m111, m112, m113, m122, m123, m133, m222
132 DOUBLE PRECISION :: m223, m233, m333
134 DOUBLE PRECISION :: up1, up2, up3, b, a1, b1, gamma, om
135 DOUBLE PRECISION :: sig1, sig2, sig3, sig11, sig12, sig13, sig22, sig23
136 DOUBLE PRECISION :: sig33, seq, T
138 DOUBLE PRECISION :: d11, d12, d13, d22, d23, d33
139 DOUBLE PRECISION :: d111, d112, d113, d122, d123, d133, d222, d223, d233, d333
141 DOUBLE PRECISION :: kap, ALPHA_MAX
167 sig1 = max(0.d0, m11/m0 - up1**2)
168 sig2 = max(0.d0, m22/m0 - up2**2)
169 sig3 = max(0.d0, m33/m0 - up3**2)
170 t = ( sig1 + sig2 + sig3 )/3.d0
179 b1 = a1 - 2.d0*gamma*om + 1.d0
181 sig11 = a1*t + b1*sig1
182 sig22 = a1*t + b1*sig2
183 sig33 = a1*t + b1*sig3
185 sig12 = b1*(m12/m0 - up1*up2)
186 sig13 = b1*(m13/m0 - up1*up3)
187 sig23 = b1*(m23/m0 - up2*up3)
189 seq = ( sig11 + sig22 + sig33 )/3.d0
191 d11 = m0*(sig11 + up1**2)
192 d12 = m0*(sig12 + up1*up2)
193 d13 = m0*(sig13 + up1*up3)
194 d22 = m0*(sig22 + up2**2)
195 d23 = m0*(sig23 + up2*up3)
196 d33 = m0*(sig33 + up3**2)
198 d111 = -(-3.d0*d11 + 2.d0*m0*up1**2)*up1
199 d112 = -(-d11*up2 - (-2.d0*d12 + 2.d0*up1*up2*m0)*up1)
201 d113 = -(-d11*up3+(-2.d0*d13+2.d0*up1*up3*m0)*up1)
202 d122 = -(-2.d0*d12*up2+(2.d0*(up2**2)*m0-d22)*up1)
203 d123 = -(-d12*up3-d13*up2+(2.d0*up2*up3*m0-d23)*up1)
204 d133 = -(-2.d0*d12*up3+(2.d0*(up3**2)*m0-d33)*up1)
205 d222 = -(-3.d0*d22+2.d0*(up2**2)*m0)*up2
206 d223 = -(-d22*up2+(-2.d0*d23+2.d0*up2*up3*m0)*up2)
207 d233 = -(-2.d0*d23*up3+(2.d0*(up3**2)*m0-d33)*up2)
208 d333 = -(-3.d0*d33+2.d0*(up3**2)*m0)*up3
217 kap = exp(-12.0*
radial_g0(m0)*m0*dt*sqrt(t/
pi)/(dp*gamma))
220 m(5) = d11 - kap*( d11 - m11 )
221 m(6) = d12 - kap*( d12 - m12 )
222 m(7) = d13 - kap*( d13 - m13 )
223 m(8) = d22 - kap*( d22 - m22 )
224 m(9) = d23 - kap*( d23 - m23 )
225 m(10) = d33 - kap*( d33 - m33 )
226 m(11) = d111 - kap*( d111 - m111 )
227 m(12) = d112 - kap*( d112 - m112 )
228 m(13) = d113 - kap*( d113 - m113 )
229 m(14) = d122 - kap*( d122 - m122 )
230 m(15) = d123 - kap*( d123 - m123 )
231 m(16) = d133 - kap*( d133 - m133 )
232 m(17) = d222 - kap*( d222 - m222 )
233 m(18) = d223 - kap*( d223 - m223 )
234 m(19) = d233 - kap*( d233 - m233 )
235 m(20) = d333 - kap*( d333 - m333 )
253 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NMOM) :: M
254 DOUBLE PRECISION,
INTENT(IN) :: theta, dp, dt
255 DOUBLE PRECISION,
INTENT(OUT) :: tcol
257 DOUBLE PRECISION :: ALPHA_MAX
301 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NN) :: N, U, V, W
302 DOUBLE PRECISION,
INTENT(IN) :: dp, e
303 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(QMOMK_NMOM) :: Coll
305 DOUBLE PRECISION,
DIMENSION(3) :: a1, a, vr, v1r, v2r, g1, g2
307 DOUBLE PRECISION :: C200, C110, C101, C020, C011, C002, C300, C210, C201
308 DOUBLE PRECISION :: C120, C111, C102, C030, C021, C012, C003
309 DOUBLE PRECISION :: d, g, gsqr, o, ni, ui, vi, wi, nj, uj, vj, wj, cross
310 DOUBLE PRECISION :: denom, L11, L12, L13, L21, L22, L23, L31, L32, L33
314 a1 = (/0.0462,0.0971,0.8235/)
315 a = 1/((a1(1))**2 + (a1(2))**2 + (a1(3))**2) * a1;
356 vr(1) = v1r(1) - v2r(1)
357 vr(2) = v1r(2) - v2r(2)
358 vr(3) = v1r(3) - v2r(3)
360 g = sqrt( vr(1)**2 + vr(2)**2 + vr(3)**2 )
366 cross = a(1)*g1(1) + a(2)*g1(2) + a(3)*g1(3)
368 g2(1) = a(1) - cross*g1(1)
369 g2(2) = a(2) - cross*g1(2)
370 g2(3) = a(3) - cross*g1(3)
372 denom = sqrt( g2(1)**2 + g2(2)**2 + g2(3)**2 )
377 l21 = ( g1(3)*a(2)-g1(2)*a(3) )/denom
378 l22 = ( g1(1)*a(3)-g1(3)*a(1) )/denom
379 l23 = ( g1(2)*a(1)-g1(1)*a(2) )/denom
386 c200 = c200 + ni*nj*(
pi*gsqr*o*(4*g*o*(l31**2)+6*uj*l31-6*ui*l31+g*o*(l21**2)+g*o*(l11**2)))/6
388 c110 = c110 + ni*nj*(
pi*gsqr*o*(4*g*o*l31*l32+3*uj*l32-3*ui*l32+3*vj*l31-3*vi*l31+g*o*l21*l22 + &
391 c101 = c101 + ni*nj*(
pi*gsqr*o*(4*g*o*l31*l33+3*uj*l33-3*ui*l33+3*wj*l31-3*wi*l31+g*o*l21*l23 + &
394 c020 = c020 + ni*nj*(
pi*gsqr*o*(4*g*o*(l32**2)+6*vj*l32-6*vi*l32+g*o*(l22**2)+g*o*(l12**2)))/6
396 c011 = c011 + ni*nj*(
pi*gsqr*o*(4*g*o*l32*l33+3*vj*l33-3*vi*l33+3*wj*l32-3*wi*l32+g*o*l22*l23 + &
399 c002 = c002 + ni*nj*(
pi*gsqr*o*(4*g*o*(l33**2)+6*wj*l33-6*wi*l33+g*o*(l23**2)+g*o*(l13**2)))/6
401 c300 = c300 + ni*nj*(
pi*gsqr*o*(uj+ui)*(4*g*o*(l31**2)+6*uj*l31-6*ui*l31+g*o*(l21**2)+g*o*(l11**2)))/4
403 c210 = c210 + ni*nj*(
pi*gsqr*o*(8*g*o*uj*l31*l32+8*g*o*ui*l31*l32+6*(uj**2)*l32-6*(ui**2)*l32 + &
404 4*g*o*vj*(l31**2)+4*g*o*vi*(l31**2)+12*uj*vj*l31-12*ui*vi*l31+2*g*o*uj*l21*l22 + &
405 2*g*o*ui*l21*l22+g*o*vj*(l21**2)+g*o*vi*(l21**2)+2*g*o*uj*l11*l12+2*g*o*ui*l11*l12 + &
406 g*o*vj*(l11**2)+g*o*vi*(l11**2)))/12
408 c201 = c201 + ni*nj*(((8*
pi*(g**3)*(o**2)*uj+8*
pi*(g**3)*(o**2)*ui)*l31+6*
pi*gsqr*o*(uj**2)-6*
pi*gsqr*o*(ui**2))*l33 + &
409 (4*
pi*(g**3)*(o**2)*wj+4*
pi*(g**3)*(o**2)*wi)*(l31**2)+(12*
pi*(g**2)*o*uj*wj-12*
pi*(g**2)*o*ui*wi)*l31 + &
410 (2*
pi*(g**3)*(o**2)*uj+2*
pi*(g**3)*(o**2)*ui)*l21*l23+(
pi*(g**3)*(o**2)*wj+
pi*(g**3)*(o**2)*wi)*(l21**2) + &
411 (2*
pi*(g**3)*(o**2)*uj+2*
pi*(g**3)*(o**2)*ui)*l11*l13+(
pi*(g**3)*(o**2)*wj+
pi*(g**3)*(o**2)*wi)*(l11**2))/12
413 c120 = c120 + ni*nj*(
pi*gsqr*o*(4*g*o*uj*(l32**2)+4*g*o*ui*(l32**2)+8*g*o*vj*l31*l32+8*g*o*vi*l31*l32 + &
414 12*uj*vj*l32-12*ui*vi*l32+6*(vj**2)*l31-6*(vi**2)*l31+g*o*uj*(l22**2)+g*o*ui*(l22**2) + &
415 2*g*o*vj*l21*l22+2*g*o*vi*l21*l22+g*o*uj*(l12**2)+g*o*ui*(l12**2)+2*g*o*vj*l11*l12 + &
416 2*g*o*vi*l11*l12))/12
418 c111 = c111 + ni*nj*(
pi*gsqr*o*(4*g*o*uj*l32*l33+4*g*o*ui*l32*l33+4*g*o*vj*l31*l33+4*g*o*vi*l31*l33 + &
419 6*uj*vj*l33-6*ui*vi*l33+4*g*o*wj*l31*l32+4*g*o*wi*l31*l32+6*uj*wj*l32-6*ui*wi*l32 + &
420 6*vj*wj*l31-6*vi*wi*l31+g*o*uj*l22*l23+g*o*ui*l22*l23+g*o*vj*l21*l23+g*o*vi*l21*l23 + &
421 g*o*wj*l21*l22+g*o*wi*l21*l22+g*o*uj*l12*l13+g*o*ui*l12*l13+g*o*vj*l11*l13+g*o*vi*l11*l13 + &
422 g*o*wj*l11*l12+g*o*wi*l11*l12))/12
424 c102 = c102 + ni*nj*(gsqr*o*
pi*(4*g*o*vj*(l33**2)+4*g*o*vi*(l33**2)+8*g*o*wj*l32*l33+8*g*o*wi*l32*l33 + &
425 12*vj*wj*l33-12*vi*wi*l33+6*(wj**2)*l32-6*(wi**2)*l32+g*o*vj*(l23**2)+g*o*vi*(l23**2)+2*g*o*wj*l22*l23 + &
426 2*g*o*wi*l22*l23+g*o*vj*(l13**2)+g*o*vi*(l13**2)+2*g*o*wj*l12*l13+2*g*o*wi*l12*l13))/12
428 c030 = c030 + ni*nj*(
pi*gsqr*o*(vj+vi)*(4*g*o*(l32**2)+6*vj*l32-6*vi*l32+g*o*(l22**2)+g*o*(l12**2)))/4
430 c021 = c021 + ni*nj*(
pi*gsqr*o*(8*g*o*vj*l32*l33+8*g*o*vi*l32*l33+6*(vj**2)*l33-6*(vi**2)*l33 + &
431 4*g*o*wj*(l32**2)+4*g*o*wi*(l32**2)+12*vj*wj*l32-12*vi*wi*l32+2*g*o*vj*l22*l23+2*g*o*vi*l22*l23 + &
432 g*o*wj*(l22**2)+g*o*wi*(l22**2)+2*g*o*vj*l12*l13+2*g*o*vi*l12*l13+g*o*wj*(l12**2)+g*o*wi*(l12**2)))/12
434 c012 = c012 + ni*nj*(gsqr*o*
pi*(4*g*o*vj*(l33**2)+4*g*o*vi*(l33**2)+8*g*o*wj*l32*l33+8*g*o*wi*l32*l33 + &
435 12*vj*wj*l33-12*vi*wi*l33+6*(wj**2)*l32-6*(wi**2)*l32+g*o*vj*(l23**2)+g*o*vi*(l23**2)+2*g*o*wj*l22*l23 + &
436 2*g*o*wi*l22*l23+g*o*vj*(l13**2)+g*o*vi*(l13**2)+2*g*o*wj*l12*l13+2*g*o*wi*l12*l13))/12
438 c003 = c003 + ni*nj*(
pi*gsqr*o*(wj+wi)*(4*g*o*(l33**2)+6*wj*l33-6*wi*l33+g*o*(l23**2)+g*o*(l13**2)))/4
473 SUBROUTINE collisions_boltzmann_two_species (N1, U1, V1, W1, N2, U2, V2, W2, m1, m2, dp1, dp2, e, Coll)
479 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NN) :: N1, U1, V1, W1, N2, U2, V2, W2
480 DOUBLE PRECISION,
INTENT(IN) :: m1, m2, dp1, dp2, e
481 DOUBLE PRECISION,
INTENT(OUT),
DIMENSION(QMOMK_NMOM) :: Coll
483 DOUBLE PRECISION,
DIMENSION(3) :: a1, a, vr, v1r, v2r, g1, g2
485 DOUBLE PRECISION :: C100, C010, C001, C200, C110, C101, C020, C011
486 DOUBLE PRECISION :: C002, C300, C210, C201, C120, C111, C102, C030, C021, C012, C003
488 DOUBLE PRECISION :: dp, d, g, gsqr, o, mu, ni, ui, vi, wi, nj, uj, vj, wj
489 DOUBLE PRECISION :: cross, denom, L11, L12, L13, L21, L22, L23, L31, L32, L33
493 a1 = (/0.0462,0.0971,0.8235/)
494 a = 1/((a1(1))**2 + (a1(2))**2 + (a1(3))**2) * a1;
548 vr(1) = v1r(1) - v2r(1)
549 vr(2) = v1r(2) - v2r(2)
550 vr(3) = v1r(3) - v2r(3)
552 g = sqrt(vr(1)*vr(1) + vr(2)*vr(2) + vr(3)*vr(3))
562 cross = a(1)*g1(1) + a(2)*g1(2) + a(3)*g1(3)
564 g2(1) = a(1) - cross*g1(1)
565 g2(2) = a(2) - cross*g1(2)
566 g2(3) = a(3) - cross*g1(3)
568 denom = sqrt( g2(1)*g2(1) + g2(2)*g2(2) + g2(3)*g2(3))
573 l21 = ( g1(3)*a(2)-g1(2)*a(3) )/denom
574 l22 = ( g1(1)*a(3)-g1(3)*a(1) )/denom
575 l23 = ( g1(2)*a(1)-g1(1)*a(2) )/denom
582 c100 = c100 + ni*nj*(
pi*gsqr*o*l31)/2
583 c010 = c010 + ni*nj*(
pi*gsqr*o*l32)/2
584 c001 = c001 + ni*nj*(
pi*gsqr*o*l33)/2
586 c200 = c200 + ni*nj*(4*
pi*(g**3)*(o**2)*(l31**2)+12*
pi*gsqr*o*ui*l31 &
587 +
pi*(g**3)*(o**2)*(l21**2)+
pi*(g**3)*(o**2)*(l11**2))/12
588 c110 = c110 + ni*nj*((4*
pi*(g**3)*(o**2)*l31+6*
pi*gsqr*o*ui)*l32+6*
pi*gsqr*o*vi*l31+
pi*(g**3)*(o**2)*l21*l22 + &
589 pi*(g**3)*(o**2)*l11*l12)/12
591 c101 = c101 + ni*nj*((4*
pi*(g**3)*(o**2)*l31+6*
pi*gsqr*o*ui)*l33+6*
pi*gsqr*o*wi*l31+
pi*(g**3)*(o**2)*l21*l23 + &
592 pi*(g**3)*(o**2)*l11*l13)/12
594 c020 = c020 + ni*nj*(4*
pi*(g**3)*(o**2)*(l32**2)+12*
pi*gsqr*o*vi*l32 &
595 +
pi*(g**3)*(o**2)*(l22**2)+
pi*(g**3)*(o**2)*(l12**2))/12
597 c011 = c011 + ni*nj*((4*
pi*(g**3)*(o**2)*l32+6*
pi*gsqr*o*vi)*l33+6*
pi*gsqr*o*wi*l32+
pi*(g**3)*(o**2)*l22*l23 + &
598 pi*(g**3)*(o**2)*l12*l13)/12
600 c002 = c002 + ni*nj*(4*
pi*(g**3)*(o**2)*(l33**2)+12*
pi*gsqr*o*wi*l33 &
601 +
pi*(g**3)*(o**2)*(l23**2)+
pi*(g**3)*(o**2)*(l13**2))/12
603 c300 = c300 + ni*nj*(2*
pi*(g**4)*(o**3)*(l31**3)+8*
pi*(g**3)*(o**2)*ui*(l31**2) &
604 + (
pi*(g**4)*(o**3)*(l21**2)+
pi*(g**4)*(o**3)*(l11**2) + 12*
pi*gsqr*o*(ui**2))*l31 &
605 + 2*
pi*(g**3)*(o**2)*ui*(l21**2)+2*
pi*(g**3)*(o**2)*ui*(l11**2))/8
607 c210 = c210 + ni*nj*((6*
pi*(g**4)*(o**3)*(l31**2)+16*
pi*(g**3)*(o**2)*ui*l31 &
608 +
pi*(g**4)*(o**3)*(l21**2)+
pi*(g**4)*(o**3)*(l11**2) + 12*
pi*gsqr*o*(ui**2))*l32 &
609 + 8*
pi*(g**3)*(o**2)*vi*(l31**2)+(2*
pi*(g**4)*(o**3)*l21*l22+2*
pi*(g**4)*(o**3)*l11*l12 &
610 + 24*
pi*(g**2)*o*ui*vi)*l31+4*
pi*(g**3)*(o**2)*ui*l21*l22+2*
pi*(g**3)*(o**2)*vi*(l21**2) &
611 + 4*
pi*(g**3)*(o**2)*ui*l11*l12+2*
pi*(g**3)*(o**2)*vi*(l11**2))/(24)
613 c201 = c201 + ni*nj*((6*
pi*(g**4)*(o**3)*(l31**2)+16*
pi*(g**3)*(o**2)*ui*l31 &
614 +
pi*(g**4)*(o**3)*(l21**2)+
pi*(g**4)*(o**3)*(l11**2) + 12*
pi*gsqr*o*(ui**2))*l33 &
615 + 8*
pi*(g**3)*(o**2)*wi*(l31**2)+(2*
pi*(g**4)*(o**3)*l21*l23+2*
pi*(g**4)*(o**3)*l11*l13 &
616 + 24*
pi*gsqr*o*ui*wi)*l31+4*
pi*(g**3)*(o**2)*ui*l21*l23+2*
pi*(g**3)*(o**2)*wi*(l21**2) &
617 + 4*
pi*(g**3)*(o**2)*ui*l11*l13+2*
pi*(g**3)*(o**2)*wi*(l11**2))/(24)
619 c120 = c120 + ni*nj*((6*
pi*(g**4)*(o**3)*l31+8*
pi*(g**3)*(o**2)*ui)*(l32**2)+(16*
pi*(g**3)*(o**2)*vi*l31 + &
620 2*
pi*(g**4)*(o**3)*l21*l22+2*
pi*(g**4)*(o**3)*l11*l12+24*
pi*gsqr*o*ui*vi)*l32+(
pi*(g**4)*(o**3)*(l22**2) + &
621 pi*(g**4)*(o**3)*(l12**2)+12*
pi*gsqr*o*(vi**2))*l31+2*
pi*(g**3)*(o**2)*ui*(l22**2)+4*
pi*(g**3)*(o**2)*vi*l21*l22 + &
622 2*
pi*(g**3)*(o**2)*ui*(l12**2)+4*
pi*(g**3)*(o**2)*vi*l11*l12)/(24)
624 c111 = c111 + ni*nj*(((6*
pi*(g**4)*(o**3)*l31+8*
pi*(g**3)*(o**2)*ui)*l32 &
625 + 8*
pi*(g**3)*(o**2)*vi*l31+
pi*(g**4)*(o**3)*l21*l22 +
pi*(g**4)*(o**3)*l11*l12 &
626 + 12*
pi*gsqr*o*ui*vi)*l33+(8*
pi*(g**3)*(o**2)*wi*l31+
pi*(g**4)*(o**3)*l21*l23 + &
627 pi*(g**4)*(o**3)*l11*l13+12*
pi*gsqr*o*ui*wi)*l32+(
pi*(g**4)*(o**3)*l22*l23+
pi*(g**4)*(o**3)*l12*l13+ &
628 12*
pi*gsqr*o*vi*wi)*l31+(2*
pi*(g**3)*(o**2)*ui*l22+2*
pi*(g**3)*(o**2)*vi*l21)*l23 + &
629 2*
pi*(g**3)*(o**2)*wi*l21*l22+(2*
pi*(g**3)*(o**2)*ui*l12+2*
pi*(g**3)*(o**2)*vi*l11)*l13 + &
630 2*
pi*(g**3)*(o**2)*wi*l11*l12)/(24)
632 c102 = c102 + ni*nj*((6*
pi*(g**4)*(o**3)*l31+8*
pi*(g**3)*(o**2)*ui)*(l33**2)+(16*
pi*(g**3)*(o**2)*wi*l31 + &
633 2*
pi*(g**4)*(o**3)*l21*l23+2*
pi*(g**4)*(o**3)*l11*l13+24*
pi*(g**2)*o*ui*wi)*l33 + &
634 (
pi*(g**4)*(o**3)*(l23**2)+
pi*(g**4)*(o**3)*(l13**2)+12*
pi*(g**2)*o*(wi**2))*l31+2*
pi*(g**3)*(o**2)*ui*(l23**2)+ &
635 4*
pi*(g**3)*(o**2)*wi*l21*l23+2*
pi*(g**3)*(o**2)*ui*(l13**2)+4*
pi*(g**3)*(o**2)*wi*l11*l13)/(24)
637 c030 = c030 + ni*nj*(2*
pi*(g**4)*(o**3)*(l32**3)+8*
pi*(g**3)*(o**2)*vi*(l32**2) &
638 + (
pi*(g**4)*(o**3)*(l22**2)+
pi*(g**4)*(o**3)*(l12**2) + 12*
pi*(g**2)*o*(vi**2))*l32 &
639 + 2*
pi*(g**3)*(o**2)*vi*(l22**2)+2*
pi*(g**3)*(o**2)*vi*(l12**2))/8
641 c021 = c021 + ni*nj*((6*
pi*(g**4)*(o**3)*(l32**2)+16*
pi*(g**3)*(o**2)*vi*l32 &
642 +
pi*(g**4)*(o**3)*(l22**2)+
pi*(g**4)*(o**3)*(l12**2) + 12*
pi*gsqr*o*(vi**2))*l33 &
643 + 8*
pi*(g**3)*(o**2)*wi*(l32**2)+(2*
pi*(g**4)*(o**3)*l22*l23+2*
pi*(g**4)*(o**3)*l12*l13 &
644 + 24*
pi*(g**2)*o*vi*wi)*l32+4*
pi*(g**3)*(o**2)*vi*l22*l23+2*
pi*(g**3)*(o**2)*wi*(l22**2) &
645 + 4*
pi*(g**3)*(o**2)*vi*l12*l13+2*
pi*(g**3)*(o**2)*wi*(l12**2))/(24)
647 c012 = c012 + ni*nj*((6*
pi*(g**4)*(o**3)*l32+8*
pi*(g**3)*(o**2)*vi)*(l33**2)+(16*
pi*(g**3)*(o**2)*wi*l32 + &
648 2*
pi*(g**4)*(o**3)*l22*l23+2*
pi*(g**4)*(o**3)*l12*l13+24*
pi*gsqr*o*vi*wi)*l33+(
pi*(g**4)*(o**3)*(l23**2) + &
649 pi*(g**4)*(o**3)*(l13**2)+12*
pi*gsqr*o*(wi**2))*l32+2*
pi*(g**3)*(o**2)*vi*(l23**2)+4*
pi*(g**3)*(o**2)*wi*l22*l23 + &
650 2*
pi*(g**3)*(o**2)*vi*(l13**2)+4*
pi*(g**3)*(o**2)*wi*l12*l13)/(24)
652 c003 = c003 + ni*nj*(2*
pi*(g**4)*(o**3)*(l33**3)+8*
pi*(g**3)*(o**2)*wi*(l33**2) &
653 + (
pi*(g**4)*(o**3)*(l23**2)+
pi*(g**4)*(o**3)*(l13**2) + 12*
pi*gsqr*o*(wi**2))*l33 &
654 + 2*
pi*(g**3)*(o**2)*wi*(l23**2)+2*
pi*(g**3)*(o**2)*wi*(l13**2))/8;
695 DOUBLE PRECISION,
INTENT(INOUT),
DIMENSION(QMOMK_NMOM) :: M
696 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NN) :: N, U, V, W
697 DOUBLE PRECISION,
INTENT(IN) :: dt, e, dp
698 INTEGER,
INTENT(IN) :: order
700 DOUBLE PRECISION,
DIMENSION(QMOMK_NMOM) :: Coll, Mtmp
701 DOUBLE PRECISION,
DIMENSION(QMOMK_NN) :: Ntmp, Utmp, Vtmp, Wtmp
702 DOUBLE PRECISION :: h
709 ELSE IF (order == 1)
THEN 712 mtmp = m + 0.5*h*coll
717 print *,
'QMOMK: Wrong order in Boltzmann collisions' 732 w1, m2, n2, u2, v2, w2, dt, m_1, m_2, dp1, dp2, e11, e12, order)
736 DOUBLE PRECISION,
INTENT(INOUT),
DIMENSION(QMOMK_NMOM) :: M1
737 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NMOM) :: M2
738 DOUBLE PRECISION,
INTENT(IN),
DIMENSION(QMOMK_NN) :: N1, U1, V1, W1, N2, U2, V2, W2
739 DOUBLE PRECISION,
INTENT(IN) :: dt, dp1, dp2, m_1, m_2, e11, e12
740 INTEGER,
INTENT(IN) :: order
742 DOUBLE PRECISION,
DIMENSION(QMOMK_NMOM) :: Coll, Colltmp, M1tmp
743 DOUBLE PRECISION,
DIMENSION(QMOMK_NN) :: N1tmp, U1tmp, V1tmp, W1tmp
744 DOUBLE PRECISION :: h
749 CALL collisions_boltzmann_two_species (n1, u1, v1, w1, n1, u1, v1, w1, m_1, m_1, dp1, dp1, e11, colltmp)
752 CALL collisions_boltzmann_two_species (n1, u1, v1, w1, n2, u2, v2, w2, m_1, m_2, dp1, dp2, e12, colltmp)
753 coll = coll + colltmp
755 ELSE IF (order == 1)
THEN 758 CALL collisions_boltzmann_two_species (n1, u1, v1, w1, n1, u1, v1, w1, m_1, m_1, dp1, dp1, e11, colltmp)
761 CALL collisions_boltzmann_two_species (n1, u1, v1, w1, n2, u2, v2, w2, m_1, m_2, dp1, dp2, e12, colltmp)
762 coll = coll + colltmp
763 m1tmp = m1 + 0.5*h*coll ;
768 n1tmp, u1tmp, v1tmp, w1tmp, m_1, m_1, dp1, dp1, e11, colltmp)
772 CALL collisions_boltzmann_two_species (n1tmp, u1tmp, v1tmp, w1tmp, n2, u2, v2, w2, m_1, m_2, dp1, dp2, e12, colltmp)
773 coll = coll + colltmp
776 print *,
'QMOMK: Wrong order in Boltzmann collisions' 789 DOUBLE PRECISION FUNCTION radial_g0(ALPHA)
796 DOUBLE PRECISION,
INTENT(IN) :: ALPHA
798 DOUBLE PRECISION ALPHA_MAX
804 radial_g0 = 1./(1.0-alpha) + 3.0*alpha/(2.*(1.-alpha)**2) + (alpha**2)/(2*(1.0-alpha)**3)
subroutine, public solve_boltzmann_collisions_one_specie(M, N, U, V, W, dt, e, dp, order)
subroutine collisions_boltzmann_one_specie(N, U, V, W, dp, e, Coll)
subroutine, public collisions_bgk(M, Dt, tcol, dp, e)
subroutine, public collisions_istantaneous(M, dp)
subroutine, public eight_node_3d(mom, n, u, v, w)
double precision, parameter small_number
subroutine, public compute_collision_time(M, dp, theta, tcol, dt)
double precision function, public radial_g0(ALPHA)
double precision, parameter large_number
subroutine collisions_boltzmann_two_species(N1, U1, V1, W1, N2, U2, V2, W2, m1, m2, dp1, dp2, e, Coll)
double precision, parameter pi
integer, parameter qmomk_nn
subroutine, public solve_boltzmann_collisions_two_species(M1, N1, U1, V1, W1, M2, N2, U2, V2, W2, dt, m_1, m_2, dp1, dp2, e11, e12, order)