419 using namespace amrex;
435 const bool print_F1 = print_initial &&
false;
436 const bool print_F2 = print_initial &&
false;
437 const bool print_F3 = print_initial &&
false;
438 const bool print_F4 = print_initial &&
false;
439 const bool print_F5 = print_initial &&
false;
440 const bool print_F6 = print_initial &&
false;
441 const bool print_F7 = print_initial &&
false;
444 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F1");
445 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F4");
446 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F5");
453 amrex::Array<bool,8> vertex_intersected{};
461 amrex::Array<path_data,3> p1, p2, p3;
462 path_data p4, p5, p6;
495 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
497 if (p1[0].intersected) {
498 if (p1[0].intersected_start) {
499 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F1");
500 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F4");
501 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F5");
502 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F7");
503 if (!vertex_intersected[0]) {
504 vertex_intersected[0] =
true;
507 }
else if (p1[0].intersected_end) {
508 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F1");
509 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F2");
510 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F5");
511 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F7");
512 if (!vertex_intersected[1]) {
513 vertex_intersected[1] =
true;
517 m_F1.
add_vertex(p1[0].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F1");
518 m_F5.
add_vertex(p1[0].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F5");
519 m_F7.
add_vertex(p1[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F7");
526 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v0--v1, cuts-mod-2==0: add v1 -> F1");
527 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v0--v1, cuts-mod-2==0: add v1 -> F2");
528 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v0--v1, cuts-mod-2==0: add v1 -> F5");
531 if (p1[1].intersected) {
532 if (p1[1].intersected_start) {
533 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F1");
534 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F2");
535 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F5");
536 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F7");
537 if (!vertex_intersected[1]) {
538 vertex_intersected[1] =
true;
541 }
else if (p1[1].intersected_end) {
542 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F2");
543 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F3");
544 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F5");
545 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F7");
546 if (!vertex_intersected[4]) {
547 vertex_intersected[4] =
true;
551 m_F2.
add_vertex(p1[1].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F2");
552 m_F5.
add_vertex(p1[1].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F5");
553 m_F7.
add_vertex(p1[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F7");
560 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v1--v4, cuts-mod-2==0: add v4 -> F2");
561 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v1--v4, cuts-mod-2==0: add v4 -> F3");
562 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v1--v4, cuts-mod-2==0: add v4 -> F5");
565 if (p1[2].intersected) {
566 if (p1[2].intersected_start) {
567 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F2");
568 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F3");
569 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F5");
570 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F7");
571 if (!vertex_intersected[4]) {
572 vertex_intersected[4] =
true;
575 }
else if (p1[2].intersected_end) {
576 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F2");
577 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F3");
578 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F6");
579 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F7");
580 if (!vertex_intersected[7]) {
581 vertex_intersected[7] =
true;
585 m_F2.
add_vertex(p1[2].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F2");
586 m_F3.
add_vertex(p1[2].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F3");
587 m_F7.
add_vertex(p1[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F7");
593 if (cuts == 2 && add_v7) {
595 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v4--v7, cuts == 2 && add_v7: add v7 -> F2");
596 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v4--v7, cuts == 2 && add_v7: add v7 -> F3");
597 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: after v4--v7, cuts == 2 && add_v7: add v7 -> F6");
604 if (p4.intersected) {
605 if (p4.intersected_start) {
606 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F1");
607 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F2");
608 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F5");
609 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F7");
610 }
else if (p4.intersected_end) {
611 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F1");
612 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F2");
613 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F6");
614 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F7");
616 m_F1.
add_vertex(p4.vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F1");
617 m_F2.
add_vertex(p4.vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F2");
618 m_F7.
add_vertex(p4.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F7");
624 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
626 if (p2[0].intersected) {
627 if (p2[0].intersected_start) {
628 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F1");
629 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F4");
630 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F5");
631 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F7");
632 if (!vertex_intersected[0]) {
633 vertex_intersected[0] =
true;
636 }
else if (p2[0].intersected_end) {
637 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F1");
638 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F4");
639 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F6");
640 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F7");
641 if (!vertex_intersected[2]) {
642 vertex_intersected[2] =
true;
646 m_F1.
add_vertex(p2[0].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F1");
647 m_F4.
add_vertex(p2[0].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F4");
648 m_F7.
add_vertex(p2[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F7");
655 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v0--v2, cuts-mod-2==0: add v2 -> F1");
656 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v0--v2, cuts-mod-2==0: add v2 -> F4");
657 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v0--v2, cuts-mod-2==0: add v2 -> F6");
660 if (p2[1].intersected) {
661 if (p2[1].intersected_start) {
662 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F1");
663 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F4");
664 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F6");
665 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F7");
666 if (!vertex_intersected[2]) {
667 vertex_intersected[2] =
true;
670 }
else if (p2[1].intersected_end) {
671 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F1");
672 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F2");
673 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F6");
674 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F7");
675 if (!vertex_intersected[5]) {
676 vertex_intersected[5] =
true;
680 m_F1.
add_vertex(p2[1].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F1");
681 m_F6.
add_vertex(p2[1].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F6");
682 m_F7.
add_vertex(p2[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F7");
688 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v2--v5, cuts-mod-2==0: add v5 -> F1");
689 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v2--v5, cuts-mod-2==0: add v5 -> F2");
690 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v2--v5, cuts-mod-2==0: add v5 -> F6");
693 if (p2[2].intersected) {
694 if (p2[2].intersected_start) {
695 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F1");
696 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F2");
697 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F6");
698 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F7");
699 if (!vertex_intersected[5]) {
700 vertex_intersected[5] =
true;
703 }
else if (p2[2].intersected_end) {
704 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F2");
705 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F3");
706 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F6");
707 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F7");
708 if (!vertex_intersected[7]) {
709 vertex_intersected[7] =
true;
713 m_F2.
add_vertex(p2[2].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F2");
714 m_F6.
add_vertex(p2[2].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F6");
715 m_F7.
add_vertex(p2[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F7");
720 if (cuts == 2 && add_v7) {
722 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v5--v7, cuts == 2 && add_v7: add v7 -> F2");
723 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v5--v7, cuts == 2 && add_v7: add v7 -> F3");
724 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: after v5--v7, cuts == 2 && add_v7: add v7 -> F6");
732 if (p5.intersected) {
733 if (p5.intersected_start) {
734 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F1");
735 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F4");
736 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F6");
737 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F7");
738 }
else if (p5.intersected_end) {
739 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F3");
740 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F4");
741 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F6");
742 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F7");
744 m_F4.
add_vertex(p5.vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F4");
745 m_F6.
add_vertex(p5.vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F6");
746 m_F7.
add_vertex(p5.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F7");
753 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
755 if (p3[0].intersected) {
756 if (p3[0].intersected_start) {
757 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F1");
758 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F4");
759 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F5");
760 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F7");
761 if (!vertex_intersected[0]) {
762 vertex_intersected[0] =
true;
765 }
else if (p3[0].intersected_end) {
766 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F3");
767 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F4");
768 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F5");
769 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F7");
770 if (!vertex_intersected[3]) {
771 vertex_intersected[3] =
true;
775 m_F4.
add_vertex(p3[0].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F4");
776 m_F5.
add_vertex(p3[0].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F5");
777 m_F7.
add_vertex(p3[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F7");
784 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v0--v3, cuts-mod-2 == 0: add v3 -> F3");
785 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v0--v3, cuts-mod-2 == 0: add v3 -> F4");
786 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v0--v3, cuts-mod-2 == 0: add v3 -> F5");
789 if (p3[1].intersected) {
790 if (p3[1].intersected_start) {
791 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F3");
792 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F4");
793 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F5");
794 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F7");
795 if (!vertex_intersected[3]) {
796 vertex_intersected[3] =
true;
799 }
else if (p3[1].intersected_end) {
800 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F3");
801 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F4");
802 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F6");
803 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F7");
804 if (!vertex_intersected[6]) {
805 vertex_intersected[6] =
true;
809 m_F3.
add_vertex(p3[1].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F3");
810 m_F4.
add_vertex(p3[1].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F4");
811 m_F7.
add_vertex(p3[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F7");
818 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v3--v6, cuts-mod-2 == 0: add v6 -> F3");
819 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v3--v6, cuts-mod-2 == 0: add v6 -> F4");
820 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v3--v6, cuts-mod-2 == 0: add v6 -> F6");
823 if (p3[2].intersected) {
824 if (p3[2].intersected_start) {
825 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F3");
826 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F4");
827 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F6");
828 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F7");
829 if (!vertex_intersected[6]) {
830 vertex_intersected[6] =
true;
833 }
else if (p3[2].intersected_end) {
834 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F2");
835 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F3");
836 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F6");
837 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F7");
838 if (!vertex_intersected[7]) {
839 vertex_intersected[7] =
true;
843 m_F3.
add_vertex(p3[2].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F3");
844 m_F6.
add_vertex(p3[2].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F6");
845 m_F7.
add_vertex(p3[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F7");
850 if (cuts == 2 && add_v7) {
852 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v6--v7, cuts == 2 && add_v7: add v7 -> F2");
853 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v6--v7, cuts == 2 && add_v7: add v7 -> F3");
854 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: after v6--v7, cuts == 2 && add_v7: add v7 -> F6");
862 if (p6.intersected) {
863 if (p6.intersected_start) {
864 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F3");
865 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F4");
866 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F5");
867 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F7");
868 }
else if (p6.intersected_end) {
869 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F2");
870 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F3\n");
871 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F5");
872 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F7");
874 m_F3.
add_vertex(p6.vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F3");
875 m_F5.
add_vertex(p6.vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F5");
876 m_F7.
add_vertex(p6.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F7");
880 if (print_F1 || print_F2 || print_F3 || print_F4 || print_F5 || print_F6 || print_F7) {
881 AMREX_DEVICE_PRINTF(
"%s \n",
" ");
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int intersect_plane_edge(amrex::RealVect const &a_plane_point, amrex::RealVect const &a_plane_normal, amrex::RealVect const &a_edge_point0, amrex::RealVect const &a_edge_point1, amrex::RealVect &a_intersection_point, amrex::Real &a_intersection_dist)
Definition: ERF_EBCutCell.H:16
AMREX_GPU_HOST_DEVICE void add_vertex(amrex::RealVect const &a_v)
Definition: ERF_EBPolygon.H:43