13 #define f(x) (pNode->FQ19[x]) 17 #define RHO (Vector4.rho) 18 #define DirectionVectorComponent_Cx(x) (m_LatticeParameters_Ptr->DirectionVectorComponent_Cx[x]) 19 #define DirectionVectorComponent_Cy(x) (m_LatticeParameters_Ptr->DirectionVectorComponent_Cy[x]) 20 #define DirectionVectorComponent_Cz(x) (m_LatticeParameters_Ptr->DirectionVectorComponent_Cz[x]) 21 #define DirectionWeight_W(x) (m_LatticeParameters_Ptr->DirectionWeight_W[x]) 24 for (
auto & Thread_Ptr : *ThreadArray_Ptr->m_ThreadsTable_Ptr) {
25 switch (Thread_Ptr->m_NodeType) {
28 Thread_Ptr->m_pColideFunc = MF::Solver_CPU::Collision::Coll_BounceBackForNode61;
29 Thread_Ptr.get()->m_DoCollision =
false;
37 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_MRT_Incompr;
38 Thread_Ptr.get()->m_DoCollision =
true;
41 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_MRT_Qcompr;
42 Thread_Ptr.get()->m_DoCollision =
true;
47 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_MRT2_Incompr;
48 Thread_Ptr.get()->m_DoCollision =
true;
51 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_MRT2_Qcompr;
52 Thread_Ptr.get()->m_DoCollision =
true;
58 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_FBGK_Incompr;
59 Thread_Ptr.get()->m_DoCollision =
true;
62 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_FBGK_Qcompr;
63 Thread_Ptr.get()->m_DoCollision =
true;
69 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_BGK_Incompr;
70 Thread_Ptr.get()->m_DoCollision =
true;
73 Thread_Ptr.get()->m_pColideFunc = MF::Solver_CPU::Collision::Coll_BGK_Qcompr;
74 Thread_Ptr.get()->m_DoCollision =
true;
93 const double cu=cx*
U+cy*
V+cz*
W;
94 const double U2=
U*
U+
V*
V+W*
W;
95 return (wg*
RHO*(1.0 + 1.0 / csq * cu + 1.0 / (2.0 * csq * csq) * cu * cu - 1.0 / (2.0 * csq) * U2));
104 const double cu=cx*
U+cy*
V+cz*
W;
105 const double U2=
U*
U+
V*
V+W*
W;
106 return (wg*(
RHO + 1.0 / csq * cu + 1.0 / (2.0 * csq * csq) * cu * cu - 1.0 / (2.0 * csq) * U2));
112 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
114 for(
unsigned char k=0; k <
MFQ19; k++) {
115 FEQ = Feq_Qcompr(Vector4, k);
116 f(k) =
f(k)-(
f(k) - FEQ) / TAU;
120 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
127 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
129 for(
unsigned char k=0; k <
MFQ19; k++) {
130 FEQ = Feq_Incompr(Vector4, k);
131 f(k) =
f(k)- (
f(k) - FEQ) / TAU;
135 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
146 const double ax = XYZForce_LB.
x /
RHO;
147 const double ay = XYZForce_LB.
y /
RHO;
148 const double az = XYZForce_LB.
z /
RHO;
154 const double cu=cx*
U+cy*
V+cz*
W;
155 const double U2=
U*
U+
V*
V+W*
W;
156 const double cvx = cx-
U;
157 const double cvy = cy-
V;
158 const double cvz = cz-
W;
159 const double cva = cvx*ax+cvy*ay+cvz*az;
160 const double part = 1.0/(2.0*its_csq)*cva;
161 const double feq = (wg*
RHO*(1.0+1.0/its_csq*cu+1.0/(2.0*its_csq*its_csq)*cu*cu-1.0/(2.0*its_csq)*U2)) * (1.0-part*(1.0-2.0*TAU));
168 const double ax = XYZForce_LB.
x;
169 const double ay = XYZForce_LB.
y;
170 const double az = XYZForce_LB.
z;
176 const double cu=cx*
U+cy*
V+cz*
W;
177 const double U2=
U*
U+
V*
V+W*
W;
178 const double cvx = cx-
U;
179 const double cvy = cy-
V;
180 const double cvz = cz-
W;
181 const double cva = cvx*ax+cvy*ay+cvz*az;
182 const double part = 1.0/(2.0*its_csq)*cva;
183 const double feq = (wg*(
RHO+1.0/its_csq*cu+1.0/(2.0*its_csq*its_csq)*cu*cu-1.0/(2.0*its_csq)*U2)) * (1.0-part*(1.0-2.0*TAU));
190 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
192 for(
unsigned char k=0; k <
MFQ19; k++) {
193 FEQ=Feq_Qcompr_F(Vector4, k, Thread_Ptr->m_XYZForce_LB);
194 f(k)=
f(k)-(
f(k)-FEQ)/TAU;
198 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
205 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
207 for(
unsigned char k=0; k <
MFQ19; k++) {
208 FEQ=Feq_Incompr_F(Vector4, k, Thread_Ptr->m_XYZForce_LB);
209 f(k)=
f(k)- (
f(k) - FEQ)/TAU;
213 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
225 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
229 const double s[
MFQ19] = {
253 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
254 {-30, -11, -11, -11, -11, -11, -11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
255 {12, -4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
256 {0, 1, 0, -1, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
257 {0, -4, 0, 4, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
258 {0, 0, 1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
259 {0, 0, -4, 0, 4, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
260 {0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
261 {0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
262 {0, 2, -1, 2, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
263 {0, -4, 2, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
264 {0, 0, 1, 0, 1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
265 {0, 0, -2, 0, -2, 2, 2, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
266 {0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0},
267 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1},
268 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0},
269 {0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, -1, 1, 1, 0, 0, 0, 0},
270 {0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 1, 1, -1, -1},
271 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1}
274 const double d[
MFQ19]={19.0, 2394.0, 252.0, 10.0, 40.0, 10.0, 40.0, 10.0, 40.0, 36.0, 72.0, 12.0, 24.0, 4.0, 4.0, 4.0, 8.0, 8.0, 8.0};
277 for(
unsigned char k=0; k <
MFQ19; k++) {
279 for(
unsigned char n=0; n <
MFQ19; n++)
283 for(
unsigned char k=0; k <
MFQ19; k++) {
285 MEQ=Meq_Qcompr(Vector4, k);
286 A[k]=A[k]-s[k]*(A[k]-MEQ);
291 for(
unsigned char k=0; k <
MFQ19; k++) {
293 for(
unsigned char n=0; n <
MFQ19; n++)
298 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
306 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
310 const double s[
MFQ19] = {
334 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
335 {-30, -11, -11, -11, -11, -11, -11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
336 {12, -4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
337 {0, 1, 0, -1, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
338 {0, -4, 0, 4, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
339 {0, 0, 1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
340 {0, 0, -4, 0, 4, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
341 {0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
342 {0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
343 {0, 2, -1, 2, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
344 {0, -4, 2, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
345 {0, 0, 1, 0, 1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
346 {0, 0, -2, 0, -2, 2, 2, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
347 {0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0},
348 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1},
349 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0},
350 {0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, -1, 1, 1, 0, 0, 0, 0},
351 {0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 1, 1, -1, -1},
352 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1}
355 const double d[
MFQ19]={19.0, 2394.0, 252.0, 10.0, 40.0, 10.0, 40.0, 10.0, 40.0, 36.0, 72.0, 12.0, 24.0, 4.0, 4.0, 4.0, 8.0, 8.0, 8.0};
358 for(
unsigned char k=0; k <
MFQ19; k++) {
360 for(
unsigned char n=0; n <
MFQ19; n++)
364 for(
unsigned char k=0; k <
MFQ19; k++) {
366 MEQ=Meq_Incompr(Vector4, k);
367 A[k]=A[k]-s[k]*(A[k]-MEQ);
372 for(
unsigned char k=0; k <
MFQ19; k++) {
374 for(
unsigned char n=0; n <
MFQ19; n++)
379 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
387 const double alpha = 3.0;
388 const double beta = -11.0/2.0;
389 const double gamma = -0.5;
398 case 0: {x=
RHO;
break;}
401 case 3: {x=
RHO*
U;
break;}
402 case 4: {x=-2.0/3.0*
RHO*
U;
break;}
403 case 5: {x=
RHO*
V;
break;}
404 case 6: {x=-2.0/3.0*
RHO*
V;
break;}
405 case 7: {x=
RHO*
W;
break;}
406 case 8: {x=-2.0/3.0*
RHO*
W;
break;}
407 case 9: {x=
RHO*(2.0*
U*
U-(
V*
V+
W*
W));
break;}
408 case 10: {x=gamma*
RHO*(2.0*
U*
U-(
V*
V+
W*
W));
break;}
409 case 11: {x=
RHO*(
V*
V-
W*
W);
break;}
410 case 12: {x=gamma*
RHO*(
V*
V-
W*
W);
break;}
411 case 13: {x=
RHO*(
U*
V);
break;}
412 case 14: {x=
RHO*(
V*
W);
break;}
413 case 15: {x=
RHO*(
U*
W);
break;}
414 case 16: {x=0.0;
break;}
415 case 17: {x=0.0;
break;}
416 case 18: {x=0.0;
break;}
417 default: {x=0.0;
break;}
428 const double alpha = 3.0;
429 const double beta = -11.0/2.0;
430 const double gamma = -0.5;
439 case 0: {x=
RHO;
break;}
442 case 3: {x=
RHO*
U;
break;}
443 case 4: {x=-2.0/3.0*
RHO*
U;
break;}
444 case 5: {x=
RHO*
V;
break;}
445 case 6: {x=-2.0/3.0*
RHO*
V;
break;}
446 case 7: {x=
RHO*
W;
break;}
447 case 8: {x=-2.0/3.0*
RHO*
W;
break;}
449 case 10: {x=gamma*
RHO*
RHO*(2.0*
U*
U-(
V*
V+
W*
W))/rho0_LB;
break;}
451 case 12: {x=gamma*
RHO*
RHO*(
V*
V-
W*
W)/rho0_LB;
break;}
452 case 13: {x=
RHO*
RHO*
U*
V/rho0_LB;
break;}
453 case 14: {x=
RHO*
RHO*
V*
W/rho0_LB;
break;}
454 case 15: {x=
RHO*
RHO*
U*
W/rho0_LB;
break;}
455 case 16: {x=0.0;
break;}
456 case 17: {x=0.0;
break;}
457 case 18: {x=0.0;
break;}
458 default: {x=0.0;
break;}
471 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
475 const double s[
MFQ19] = {
499 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
500 {-30, -11, -11, -11, -11, -11, -11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
501 {12, -4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
502 {0, 1, 0, -1, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
503 {0, -4, 0, 4, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
504 {0, 0, 1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
505 {0, 0, -4, 0, 4, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
506 {0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
507 {0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
508 {0, 2, -1, 2, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
509 {0, -4, 2, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
510 {0, 0, 1, 0, 1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
511 {0, 0, -2, 0, -2, 2, 2, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
512 {0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0},
513 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1},
514 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0},
515 {0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, -1, 1, 1, 0, 0, 0, 0},
516 {0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 1, 1, -1, -1},
517 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1}
520 const double d[
MFQ19]={19.0, 2394.0, 252.0, 10.0, 40.0, 10.0, 40.0, 10.0, 40.0, 36.0, 72.0, 12.0, 24.0, 4.0, 4.0, 4.0, 8.0, 8.0, 8.0};
523 for(
unsigned char k=0; k <
MFQ19; k++) {
525 for(
unsigned char n=0; n <
MFQ19; n++)
529 for(
unsigned char k=0; k <
MFQ19; k++) {
531 MEQ=Meq_Qcompr(Vector4, k);
532 A[k]=A[k]-s[k]*(A[k]-MEQ);
537 for(
unsigned char k=0; k <
MFQ19; k++) {
539 for(
unsigned char n=0; n <
MFQ19; n++)
544 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
552 const std::shared_ptr<MF::Database::Thread>& Thread_Ptr = *pNode->
pMyThread_Ptr;
556 const double s[
MFQ19] = {
581 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
582 {-30, -11, -11, -11, -11, -11, -11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
583 {12, -4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
584 {0, 1, 0, -1, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
585 {0, -4, 0, 4, 0, 0, 0, 1, -1, -1, 1, 1, 1, -1, -1, 0, 0, 0, 0},
586 {0, 0, 1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
587 {0, 0, -4, 0, 4, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1},
588 {0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
589 {0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1},
590 {0, 2, -1, 2, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
591 {0, -4, 2, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, -2, -2, -2, -2},
592 {0, 0, 1, 0, 1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
593 {0, 0, -2, 0, -2, 2, 2, 1, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0},
594 {0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0},
595 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1},
596 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, -1, 0, 0, 0, 0},
597 {0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, -1, 1, 1, 0, 0, 0, 0},
598 {0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 1, 1, -1, -1},
599 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1}
602 const double d[
MFQ19]={19.0, 2394.0, 252.0, 10.0, 40.0, 10.0, 40.0, 10.0, 40.0, 36.0, 72.0, 12.0, 24.0, 4.0, 4.0, 4.0, 8.0, 8.0, 8.0};
605 for(
unsigned char k=0; k <
MFQ19; k++) {
607 for(
unsigned char n=0; n <
MFQ19; n++)
611 for(
unsigned char k=0; k <
MFQ19; k++) {
613 MEQ=Meq_Incompr(Vector4, k);
614 A[k]=A[k]-s[k]*(A[k]-MEQ);
619 for(
unsigned char k=0; k <
MFQ19; k++) {
621 for(
unsigned char n=0; n <
MFQ19; n++)
626 std::swap(
f(LinkedDirection[0]),
f(LinkedDirection[1]));
631 return Feq_Qcompr(Vector4,k);
635 return Feq_Incompr(Vector4,k);
static std::shared_ptr< MF::Solver_CPU::CaseParameters > m_CaseParameters_Ptr
static double GetBGKFeq_Incompr(const MF::Database::Vec4< double > &Vector4, const unsigned char &k)
Gets FEQ from quasi incompressible BGK model.
#define MFQ19
Number of lattice directions D3Q19.
std::shared_ptr< MF::Database::Thread > * pMyThread_Ptr
Pointer to Shared pointer to node MFThread parameters.
Basic data structure for storing f(i) data for each computational grid node.
static std::shared_ptr< MF::GU::LatticeParametersD3Q19 > m_LatticeParameters_Ptr
#define DirectionWeight_W(x)
#define DirectionVectorComponent_Cx(x)
static double GetBGKFeq_Qcompr(const MF::Database::Vec4< double > &Vector4, const unsigned char &k)
Gets FEQ from quasi compressible BGK model.
static void SetCollisionPointerToFunc(const std::shared_ptr< MF::Database::ThreadArray > &ThreadArray_Ptr)
Sets pointers to proper collision functions in MFThreads.
#define DirectionVectorComponent_Cz(x)
#define DirectionVectorComponent_Cy(x)
static constexpr uint8_t SwapDirections[MFQ19_H][2]
Indexes of swap directions of f(i) in D3Q19.