Compute all edge-plane intersections and populate polygon vertices.
501 using namespace amrex;
517 const bool print_F1 = print_initial &&
false;
518 const bool print_F2 = print_initial &&
false;
519 const bool print_F3 = print_initial &&
false;
520 const bool print_F4 = print_initial &&
false;
521 const bool print_F5 = print_initial &&
false;
522 const bool print_F6 = print_initial &&
false;
523 const bool print_F7 = print_initial &&
false;
526 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F1");
527 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F4");
528 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Initial: add v0 -> F5");
535 amrex::Array<bool,8> vertex_intersected{};
543 amrex::Array<path_data,3> p1, p2, p3;
544 path_data p4, p5, p6;
577 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
579 if (p1[0].intersected) {
580 if (p1[0].intersected_start) {
581 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F1");
582 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F4");
583 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F5");
584 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v0 -> F7");
585 if (!vertex_intersected[0]) {
586 vertex_intersected[0] =
true;
589 }
else if (p1[0].intersected_end) {
590 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F1");
591 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F2");
592 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F5");
593 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add v1 -> F7");
594 if (!vertex_intersected[1]) {
595 vertex_intersected[1] =
true;
599 m_F1.
add_vertex(p1[0].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F1");
600 m_F5.
add_vertex(p1[0].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F5");
601 m_F7.
add_vertex(p1[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v0--v1: add vIP -> F7");
608 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");
609 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");
610 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");
613 if (p1[1].intersected) {
614 if (p1[1].intersected_start) {
615 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F1");
616 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F2");
617 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F5");
618 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v1 -> F7");
619 if (!vertex_intersected[1]) {
620 vertex_intersected[1] =
true;
623 }
else if (p1[1].intersected_end) {
624 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F2");
625 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F3");
626 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F5");
627 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add v4 -> F7");
628 if (!vertex_intersected[4]) {
629 vertex_intersected[4] =
true;
633 m_F2.
add_vertex(p1[1].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F2");
634 m_F5.
add_vertex(p1[1].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F5");
635 m_F7.
add_vertex(p1[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v1--v4: add vIP -> F7");
642 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");
643 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");
644 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");
647 if (p1[2].intersected) {
648 if (p1[2].intersected_start) {
649 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F2");
650 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F3");
651 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F5");
652 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v4 -> F7");
653 if (!vertex_intersected[4]) {
654 vertex_intersected[4] =
true;
657 }
else if (p1[2].intersected_end) {
658 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F2");
659 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F3");
660 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F6");
661 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add v7 -> F7");
662 if (!vertex_intersected[7]) {
663 vertex_intersected[7] =
true;
667 m_F2.
add_vertex(p1[2].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F2");
668 m_F3.
add_vertex(p1[2].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F3");
669 m_F7.
add_vertex(p1[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 1: v4--v7: add vIP -> F7");
675 if (cuts == 2 && add_v7) {
677 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");
678 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");
679 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");
686 if (p4.intersected) {
687 if (p4.intersected_start) {
688 m_F1.
add_vertex(v1);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F1");
689 m_F2.
add_vertex(v1);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F2");
690 m_F5.
add_vertex(v1);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F5");
691 m_F7.
add_vertex(v1);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v1 -> F7");
692 }
else if (p4.intersected_end) {
693 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F1");
694 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F2");
695 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F6");
696 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add v5 -> F7");
698 m_F1.
add_vertex(p4.vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F1");
699 m_F2.
add_vertex(p4.vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F2");
700 m_F7.
add_vertex(p4.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 4: v1--v5: add vIP -> F7");
706 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
708 if (p2[0].intersected) {
709 if (p2[0].intersected_start) {
710 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F1");
711 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F4");
712 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F5");
713 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v0 -> F7");
714 if (!vertex_intersected[0]) {
715 vertex_intersected[0] =
true;
718 }
else if (p2[0].intersected_end) {
719 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F1");
720 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F4");
721 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F6");
722 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add v2 -> F7");
723 if (!vertex_intersected[2]) {
724 vertex_intersected[2] =
true;
728 m_F1.
add_vertex(p2[0].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F1");
729 m_F4.
add_vertex(p2[0].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F4");
730 m_F7.
add_vertex(p2[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v0--v2: add vIP -> F7");
737 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");
738 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");
739 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");
742 if (p2[1].intersected) {
743 if (p2[1].intersected_start) {
744 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F1");
745 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F4");
746 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F6");
747 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v2 -> F7");
748 if (!vertex_intersected[2]) {
749 vertex_intersected[2] =
true;
752 }
else if (p2[1].intersected_end) {
753 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F1");
754 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F2");
755 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F6");
756 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add v5 -> F7");
757 if (!vertex_intersected[5]) {
758 vertex_intersected[5] =
true;
762 m_F1.
add_vertex(p2[1].vIP);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F1");
763 m_F6.
add_vertex(p2[1].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F6");
764 m_F7.
add_vertex(p2[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v2--v5: add vIP -> F7");
770 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");
771 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");
772 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");
775 if (p2[2].intersected) {
776 if (p2[2].intersected_start) {
777 m_F1.
add_vertex(v5);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F1");
778 m_F2.
add_vertex(v5);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F2");
779 m_F6.
add_vertex(v5);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F6");
780 m_F7.
add_vertex(v5);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v5 -> F7");
781 if (!vertex_intersected[5]) {
782 vertex_intersected[5] =
true;
785 }
else if (p2[2].intersected_end) {
786 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F2");
787 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F3");
788 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F6");
789 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add v7 -> F7");
790 if (!vertex_intersected[7]) {
791 vertex_intersected[7] =
true;
795 m_F2.
add_vertex(p2[2].vIP);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F2");
796 m_F6.
add_vertex(p2[2].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F6");
797 m_F7.
add_vertex(p2[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 2: v5--v7: add vIP -> F7");
802 if (cuts == 2 && add_v7) {
804 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");
805 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");
806 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");
814 if (p5.intersected) {
815 if (p5.intersected_start) {
816 m_F1.
add_vertex(v2);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F1");
817 m_F4.
add_vertex(v2);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F4");
818 m_F6.
add_vertex(v2);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F6");
819 m_F7.
add_vertex(v2);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v2 -> F7");
820 }
else if (p5.intersected_end) {
821 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F3");
822 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F4");
823 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F6");
824 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add v6 -> F7");
826 m_F4.
add_vertex(p5.vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F4");
827 m_F6.
add_vertex(p5.vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F6");
828 m_F7.
add_vertex(p5.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 5: v2--v6: add vIP -> F7");
835 for (
int i = 0; i < 8; ++i) vertex_intersected[i] =
false;
837 if (p3[0].intersected) {
838 if (p3[0].intersected_start) {
839 m_F1.
add_vertex(v0);
if(print_F1) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F1");
840 m_F4.
add_vertex(v0);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F4");
841 m_F5.
add_vertex(v0);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F5");
842 m_F7.
add_vertex(v0);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v0 -> F7");
843 if (!vertex_intersected[0]) {
844 vertex_intersected[0] =
true;
847 }
else if (p3[0].intersected_end) {
848 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F3");
849 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F4");
850 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F5");
851 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add v3 -> F7");
852 if (!vertex_intersected[3]) {
853 vertex_intersected[3] =
true;
857 m_F4.
add_vertex(p3[0].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F4");
858 m_F5.
add_vertex(p3[0].vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F5");
859 m_F7.
add_vertex(p3[0].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v0--v3: add vIP -> F7");
866 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");
867 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");
868 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");
871 if (p3[1].intersected) {
872 if (p3[1].intersected_start) {
873 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F3");
874 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F4");
875 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F5");
876 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v3 -> F7");
877 if (!vertex_intersected[3]) {
878 vertex_intersected[3] =
true;
881 }
else if (p3[1].intersected_end) {
882 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F3");
883 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F4");
884 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F6");
885 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add v6 -> F7");
886 if (!vertex_intersected[6]) {
887 vertex_intersected[6] =
true;
891 m_F3.
add_vertex(p3[1].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F3");
892 m_F4.
add_vertex(p3[1].vIP);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F4");
893 m_F7.
add_vertex(p3[1].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v3--v6: add vIP -> F7");
900 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");
901 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");
902 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");
905 if (p3[2].intersected) {
906 if (p3[2].intersected_start) {
907 m_F3.
add_vertex(v6);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F3");
908 m_F4.
add_vertex(v6);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F4");
909 m_F6.
add_vertex(v6);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F6");
910 m_F7.
add_vertex(v6);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v6 -> F7");
911 if (!vertex_intersected[6]) {
912 vertex_intersected[6] =
true;
915 }
else if (p3[2].intersected_end) {
916 m_F2.
add_vertex(v7);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F2");
917 m_F3.
add_vertex(v7);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F3");
918 m_F6.
add_vertex(v7);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F6");
919 m_F7.
add_vertex(v7);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add v7 -> F7");
920 if (!vertex_intersected[7]) {
921 vertex_intersected[7] =
true;
925 m_F3.
add_vertex(p3[2].vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F3");
926 m_F6.
add_vertex(p3[2].vIP);
if(print_F6) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F6");
927 m_F7.
add_vertex(p3[2].vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 3: v6--v7: add vIP -> F7");
932 if (cuts == 2 && add_v7) {
934 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");
935 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");
936 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");
944 if (p6.intersected) {
945 if (p6.intersected_start) {
946 m_F3.
add_vertex(v3);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F3");
947 m_F4.
add_vertex(v3);
if(print_F4) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F4");
948 m_F5.
add_vertex(v3);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F5");
949 m_F7.
add_vertex(v3);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v3 -> F7");
950 }
else if (p6.intersected_end) {
951 m_F2.
add_vertex(v4);
if(print_F2) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F2");
952 m_F3.
add_vertex(v4);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F3\n");
953 m_F5.
add_vertex(v4);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F5");
954 m_F7.
add_vertex(v4);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add v4 -> F7");
956 m_F3.
add_vertex(p6.vIP);
if(print_F3) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F3");
957 m_F5.
add_vertex(p6.vIP);
if(print_F5) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F5");
958 m_F7.
add_vertex(p6.vIP);
if(print_F7) AMREX_DEVICE_PRINTF(
"%s \n",
"Path 6: v3--v4: add vIP -> F7");
962 if (print_F1 || print_F2 || print_F3 || print_F4 || print_F5 || print_F6 || print_F7) {
963 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)
Intersect a plane with a line segment.
Definition: ERF_EBCutCell.H:31
AMREX_GPU_HOST_DEVICE void add_vertex(amrex::RealVect const &a_v)
Add a unique vertex to the polygon.
Definition: ERF_EBPolygon.H:64