384inline float get(stencil::Direction
const direction,
386 float rho =
float{1}) {
391 return rho * -0.33333333333333331f * (
u[0] *
u[0]) +
392 rho * -0.33333333333333331f * (
u[1] *
u[1]) +
393 rho * -0.33333333333333331f * (
u[2] *
u[2]) +
394 rho * 0.33333333333333331f;
396 return rho * -0.16666666666666666f * (
u[0] *
u[0]) +
397 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
398 rho * 0.055555555555555552f +
rho * 0.16666666666666666f *
u[1] +
399 rho * 0.16666666666666666f * (
u[1] *
u[1]);
401 return rho * -0.16666666666666666f *
u[1] +
402 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
403 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
404 rho * 0.055555555555555552f +
405 rho * 0.16666666666666666f * (
u[1] *
u[1]);
407 return rho * -0.16666666666666666f *
u[0] +
408 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
409 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
410 rho * 0.055555555555555552f +
411 rho * 0.16666666666666666f * (
u[0] *
u[0]);
413 return rho * -0.16666666666666666f * (
u[1] *
u[1]) +
414 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
415 rho * 0.055555555555555552f +
rho * 0.16666666666666666f *
u[0] +
416 rho * 0.16666666666666666f * (
u[0] *
u[0]);
418 return rho * -0.16666666666666666f * (
u[0] *
u[0]) +
419 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
420 rho * 0.055555555555555552f +
rho * 0.16666666666666666f *
u[2] +
421 rho * 0.16666666666666666f * (
u[2] *
u[2]);
423 return rho * -0.16666666666666666f *
u[2] +
424 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
425 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
426 rho * 0.055555555555555552f +
427 rho * 0.16666666666666666f * (
u[2] *
u[2]);
429 return rho * -0.083333333333333329f *
u[0] +
rho * -0.25f *
u[0] *
u[1] +
430 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[1] +
431 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
432 rho * 0.083333333333333329f * (
u[1] *
u[1]);
434 return rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
435 rho * 0.083333333333333329f *
u[1] +
436 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
437 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
438 rho * 0.25f *
u[0] *
u[1];
440 return rho * -0.083333333333333329f *
u[0] +
441 rho * -0.083333333333333329f *
u[1] +
rho * 0.027777777777777776f +
442 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
443 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
444 rho * 0.25f *
u[0] *
u[1];
446 return rho * -0.083333333333333329f *
u[1] +
rho * -0.25f *
u[0] *
u[1] +
447 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
448 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
449 rho * 0.083333333333333329f * (
u[1] *
u[1]);
451 return rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[1] +
452 rho * 0.083333333333333329f *
u[2] +
453 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
454 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
455 rho * 0.25f *
u[1] *
u[2];
457 return rho * -0.083333333333333329f *
u[1] +
rho * -0.25f *
u[1] *
u[2] +
458 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[2] +
459 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
460 rho * 0.083333333333333329f * (
u[2] *
u[2]);
462 return rho * -0.083333333333333329f *
u[0] +
rho * -0.25f *
u[0] *
u[2] +
463 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[2] +
464 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
465 rho * 0.083333333333333329f * (
u[2] *
u[2]);
467 return rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
468 rho * 0.083333333333333329f *
u[2] +
469 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
470 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
471 rho * 0.25f *
u[0] *
u[2];
473 return rho * -0.083333333333333329f *
u[2] +
rho * -0.25f *
u[1] *
u[2] +
474 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[1] +
475 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
476 rho * 0.083333333333333329f * (
u[2] *
u[2]);
478 return rho * -0.083333333333333329f *
u[1] +
479 rho * -0.083333333333333329f *
u[2] +
rho * 0.027777777777777776f +
480 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
481 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
482 rho * 0.25f *
u[1] *
u[2];
484 return rho * -0.083333333333333329f *
u[0] +
485 rho * -0.083333333333333329f *
u[2] +
rho * 0.027777777777777776f +
486 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
487 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
488 rho * 0.25f *
u[0] *
u[2];
490 return rho * -0.083333333333333329f *
u[2] +
rho * -0.25f *
u[0] *
u[2] +
491 rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
492 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
493 rho * 0.083333333333333329f * (
u[2] *
u[2]);
509 rho * -0.33333333333333331f * (
u[0] *
u[0]) +
510 rho * -0.33333333333333331f * (
u[1] *
u[1]) +
511 rho * -0.33333333333333331f * (
u[2] *
u[2]);
514 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
515 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
516 rho * 0.16666666666666666f *
u[1] +
517 rho * 0.16666666666666666f * (
u[1] *
u[1]);
519 delta_rho * 0.055555555555555552f +
rho * -0.16666666666666666f *
u[1] +
520 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
521 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
522 rho * 0.16666666666666666f * (
u[1] *
u[1]);
524 delta_rho * 0.055555555555555552f +
rho * -0.16666666666666666f *
u[0] +
525 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
526 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
527 rho * 0.16666666666666666f * (
u[0] *
u[0]);
530 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
531 rho * -0.16666666666666666f * (
u[2] *
u[2]) +
532 rho * 0.16666666666666666f *
u[0] +
533 rho * 0.16666666666666666f * (
u[0] *
u[0]);
536 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
537 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
538 rho * 0.16666666666666666f *
u[2] +
539 rho * 0.16666666666666666f * (
u[2] *
u[2]);
541 delta_rho * 0.055555555555555552f +
rho * -0.16666666666666666f *
u[2] +
542 rho * -0.16666666666666666f * (
u[0] *
u[0]) +
543 rho * -0.16666666666666666f * (
u[1] *
u[1]) +
544 rho * 0.16666666666666666f * (
u[2] *
u[2]);
546 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[0] +
547 rho * -0.25f *
u[0] *
u[1] +
rho * 0.083333333333333329f *
u[1] +
548 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
549 rho * 0.083333333333333329f * (
u[1] *
u[1]);
551 delta_rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
552 rho * 0.083333333333333329f *
u[1] +
553 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
554 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
rho * 0.25f *
u[0] *
u[1];
556 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[0] +
557 rho * -0.083333333333333329f *
u[1] +
558 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
559 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
rho * 0.25f *
u[0] *
u[1];
561 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[1] +
562 rho * -0.25f *
u[0] *
u[1] +
rho * 0.083333333333333329f *
u[0] +
563 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
564 rho * 0.083333333333333329f * (
u[1] *
u[1]);
566 delta_rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[1] +
567 rho * 0.083333333333333329f *
u[2] +
568 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
569 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
rho * 0.25f *
u[1] *
u[2];
571 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[1] +
572 rho * -0.25f *
u[1] *
u[2] +
rho * 0.083333333333333329f *
u[2] +
573 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
574 rho * 0.083333333333333329f * (
u[2] *
u[2]);
576 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[0] +
577 rho * -0.25f *
u[0] *
u[2] +
rho * 0.083333333333333329f *
u[2] +
578 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
579 rho * 0.083333333333333329f * (
u[2] *
u[2]);
581 delta_rho * 0.027777777777777776f +
rho * 0.083333333333333329f *
u[0] +
582 rho * 0.083333333333333329f *
u[2] +
583 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
584 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
rho * 0.25f *
u[0] *
u[2];
586 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[2] +
587 rho * -0.25f *
u[1] *
u[2] +
rho * 0.083333333333333329f *
u[1] +
588 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
589 rho * 0.083333333333333329f * (
u[2] *
u[2]);
591 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[1] +
592 rho * -0.083333333333333329f *
u[2] +
593 rho * 0.083333333333333329f * (
u[1] *
u[1]) +
594 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
rho * 0.25f *
u[1] *
u[2];
596 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[0] +
597 rho * -0.083333333333333329f *
u[2] +
598 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
599 rho * 0.083333333333333329f * (
u[2] *
u[2]) +
rho * 0.25f *
u[0] *
u[2];
601 delta_rho * 0.027777777777777776f +
rho * -0.083333333333333329f *
u[2] +
602 rho * -0.25f *
u[0] *
u[2] +
rho * 0.083333333333333329f *
u[0] +
603 rho * 0.083333333333333329f * (
u[0] *
u[0]) +
604 rho * 0.083333333333333329f * (
u[2] *
u[2]);
1162 const int x = cell[0];
1163 const int y = cell[1];
1164 const int z = cell[2];
1184 f_9 + 0.33333333333333333f;
1189 f_9 + 0.33333333333333333f;
1194 f_5 +
f_6 + 0.33333333333333333f;
1213 float const density, CellInterval
const &
ci) {
1214 std::vector<float>
out;
1216 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
1217 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
1218 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
1238 f_8 +
f_9 + 0.33333333333333333f;
1243 f_8 +
f_9 + 0.33333333333333333f;
1270 for (
auto z = 0; z <
pdf_field->zSize(); ++z) {
1271 for (
auto y = 0; y <
pdf_field->ySize(); ++y) {
1272 for (
auto x = 0; x <
pdf_field->xSize(); ++x) {
1292 f_8 +
f_9 + 0.33333333333333333f;
1297 f_8 +
f_9 + 0.33333333333333333f;