1 #ifndef ERF_EB_CUT_CELL_H_
2 #define ERF_EB_CUT_CELL_H_
4 #include <AMReX_REAL.H>
5 #include <AMReX_Array.H>
6 #include <AMReX_RealBox.H>
7 #include <AMReX_RealVect.H>
8 #include <AMReX_Algorithm.H>
9 #include <AMReX_EBCellFlag.H>
20 amrex::RealBox
const& a_rbox,
21 amrex::RealVect
const& a_point,
22 amrex::RealVect
const& a_normal );
24 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
27 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
30 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
33 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
38 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
56 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
59 if (
m_flag.isCovered() ) {
return 0.; }
64 amrex::Real
const* lo =
m_rbox.lo();
65 amrex::RealVect v0(lo[0], lo[1], lo[2]);
77 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
78 amrex::Real
areaLo (
int const a_idim )
const noexcept {
79 AMREX_ASSERT( a_idim >=0 && a_idim < AMREX_SPACEDIM );
80 if (
m_flag.isCovered() ) {
return 0.; }
82 amrex::Real
const area(
m_lo_faces[a_idim]->area());
86 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
87 amrex::Real
areaHi (
int const a_idim )
const noexcept {
88 AMREX_ASSERT( a_idim >= 0 && a_idim < AMREX_SPACEDIM );
89 if (
m_flag.isCovered() ) {
return 0.; }
91 amrex::Real
const area(
m_hi_faces[a_idim]->area());
95 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
100 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
101 amrex::RealVect
centLo (
int const a_idim )
const noexcept {
102 AMREX_ASSERT( a_idim >=0 && a_idim < AMREX_SPACEDIM );
107 amrex::Real
const area_R =
m_lo_faces[a_idim]->area();
108 if (amrex::almostEqual(area_R,0.0) || amrex::almostEqual(area_R,
m_rbox_area[a_idim]) ){
111 amrex::RealVect cent_O = cent;
112 amrex::RealVect cent_R =
m_lo_faces[a_idim]->get_centroid();
113 amrex::Real
const area_C =
m_rbox_area[a_idim] - area_R;
114 cent =
m_invert * cent_R + (1.-
m_invert) * ((1.+area_R/area_C)*cent_O - area_R/area_C*cent_R);
120 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
121 amrex::RealVect
centHi (
int const a_idim )
const noexcept {
122 AMREX_ASSERT( a_idim >=0 && a_idim < AMREX_SPACEDIM );
127 amrex::Real
const area_R =
m_hi_faces[a_idim]->area();
128 if (amrex::almostEqual(area_R,0.0) || amrex::almostEqual(area_R,
m_rbox_area[a_idim]) ){
131 amrex::RealVect cent_O = cent;
132 amrex::RealVect cent_R =
m_hi_faces[a_idim]->get_centroid();
133 amrex::Real
const area_C =
m_rbox_area[a_idim] - area_R;
134 cent =
m_invert * cent_R + (1.-
m_invert) * ((1.+area_R/area_C)*cent_O - area_R/area_C*cent_R);
140 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
142 amrex::RealVect cent{0.,0.,0.};
143 if (
m_flag.isSingleValued()) {
149 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
151 amrex::RealVect normal{0.,0.,0.};
152 if (
m_flag.isSingleValued()) {
158 [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
161 if (
m_flag.isSingleValued()) {
162 amrex::Real xm =
m_rbox.lo(0);
163 amrex::Real xp =
m_rbox.hi(0);
164 amrex::Real ym =
m_rbox.lo(1);
165 amrex::Real yp =
m_rbox.hi(1);
166 amrex::Real zm =
m_rbox.lo(2);
167 amrex::Real zp =
m_rbox.hi(2);
169 amrex::Real axm =
areaLo(0);
170 amrex::Real axp =
areaHi(0);
171 amrex::Real aym =
areaLo(1);
172 amrex::Real ayp =
areaHi(1);
173 amrex::Real azm =
areaLo(2);
174 amrex::Real azp =
areaHi(2);
179 amrex::Real vol =
volume();
181 vcent[0] = 0.5 * ( - xm * xm * axm + xp * xp * axp + bcent[0] * bcent[0] *
m_eb_normal[0] * barea ) / vol;
182 vcent[1] = 0.5 * ( - ym * ym * aym + yp * yp * ayp + bcent[1] * bcent[1] *
m_eb_normal[1] * barea ) / vol;
183 vcent[2] = 0.5 * ( - zm * zm * azm + zp * zp * azp + bcent[2] * bcent[2] *
m_eb_normal[2] * barea ) / vol;
188 void debug (
int const a_face = -1 );
225 AMREX_GPU_HOST_DEVICE
228 AMREX_GPU_HOST_DEVICE
233 AMREX_GPU_HOST_DEVICE
237 amrex::RealBox
const& a_rbox,
238 amrex::RealVect
const& a_point,
239 amrex::RealVect
const& a_normal )
241 , m_eb_point(a_point)
242 , m_eb_normal(a_normal)
244 , m_F1(a_point, a_normal)
245 , m_F2(a_point, a_normal)
246 , m_F3(a_point, a_normal)
247 , m_F4(a_point, a_normal)
248 , m_F5(a_point, a_normal)
249 , m_F6(a_point, a_normal)
250 , m_cellface_cent({amrex::RealVect(0.), amrex::RealVect(0.), amrex::RealVect(0.),
251 amrex::RealVect(0.), amrex::RealVect(0.), amrex::RealVect(0.)})
253 using namespace amrex;
255 m_rbox_area[0] = m_rbox.length(1)*m_rbox.length(2);
256 m_rbox_area[1] = m_rbox.length(0)*m_rbox.length(2);
257 m_rbox_area[2] = m_rbox.length(0)*m_rbox.length(1);
259 RealVect v0(m_rbox.lo(0), m_rbox.lo(1), m_rbox.lo(2));
260 RealVect v1(m_rbox.hi(0), m_rbox.lo(1), m_rbox.lo(2));
261 RealVect v2(m_rbox.lo(0), m_rbox.hi(1), m_rbox.lo(2));
262 RealVect v3(m_rbox.lo(0), m_rbox.lo(1), m_rbox.hi(2));
263 RealVect v4(m_rbox.hi(0), m_rbox.lo(1), m_rbox.hi(2));
264 RealVect v5(m_rbox.hi(0), m_rbox.hi(1), m_rbox.lo(2));
265 RealVect v6(m_rbox.lo(0), m_rbox.hi(1), m_rbox.hi(2));
266 RealVect v7(m_rbox.hi(0), m_rbox.hi(1), m_rbox.hi(2));
270 m_cellface_cent[0] = 0.25 * ( v0 + v2 + v5 + v1 );
271 m_cellface_cent[1] = 0.25 * ( v1 + v5 + v7 + v4 );
272 m_cellface_cent[2] = 0.25 * ( v3 + v4 + v7 + v6 );
273 m_cellface_cent[3] = 0.25 * ( v0 + v3 + v6 + v2 );
274 m_cellface_cent[4] = 0.25 * ( v0 + v1 + v4 + v3 );
275 m_cellface_cent[5] = 0.25 * ( v2 + v5 + v7 + v6 );
279 m_cell_cent[0] = 0.5 * ( m_rbox.lo(0) + m_rbox.hi(0) );
280 m_cell_cent[1] = 0.5 * ( m_rbox.lo(1) + m_rbox.hi(1) );
281 m_cell_cent[2] = 0.5 * ( m_rbox.lo(2) + m_rbox.hi(2) );
285 m_dx[0] = m_rbox.hi(0) - m_rbox.lo(0);
286 m_dx[1] = m_rbox.hi(1) - m_rbox.lo(1);
287 m_dx[2] = m_rbox.hi(2) - m_rbox.lo(2);
289 if (a_flag.isCovered() ) {
293 }
else if (a_flag.isRegular() ) {
299 RealVect c = 0.5*(v0 + v7);
302 Real r = e[0]*amrex::Math::abs(a_normal[0]) +
303 e[1]*amrex::Math::abs(a_normal[1]) +
304 e[2]*amrex::Math::abs(a_normal[2]);
306 Real s = amrex::Math::abs(c.dotProduct(a_normal)
307 - a_point.dotProduct(a_normal));
310 if (a_normal.dotProduct(v0 - a_point) > 0.)
311 { set_covered(); }
else { set_regular(); }
312 }
else { m_flag.setSingleValued(); }
315 if ( m_flag.isSingleValued() ) {
317 m_invert = ((m_eb_normal.dotProduct(v0 - m_eb_point)) > 0.) ? 0.0 : 1.0;
319 calc_edge_intersections();
332 if ( !m_flag.isSingleValued() ) {
333 set_covered_regular_cell_vertices();
338 AMREX_GPU_HOST_DEVICE
344 using namespace amrex;
372 #ifndef AMREX_USE_GPU
373 if (a_dry_run) { Print() <<
"P1: v0--v1: add vIP to F1, F5 and F7 :: " << vIP[0] <<
"\n"; }
382 if ( almostEqual(distIP, 0.0) ) {
383 #ifndef AMREX_USE_GPU
384 if (a_dry_run) { Print() <<
"P1: v0--v1: intersection ~ 0 :: add vIP to F4\n"; }
389 }
else if ( almostEqual(distIP, 1.0) ) {
390 #ifndef AMREX_USE_GPU
391 if (a_dry_run) { Print() <<
"P1: v0--v1: intersection ~ 1 :: add vIP to F2\n"; }
401 #ifndef AMREX_USE_GPU
402 if (a_dry_run) { Print() <<
"P1: Add v1 to F1, F2 and F5\n"; }
416 #ifndef AMREX_USE_GPU
417 if (a_dry_run) { Print() <<
"P1: v1--v4: add vIP to F2, F5 and F7 :: " << vIP[2] <<
"\n"; }
426 if ( almostEqual(distIP, 0.0) ) {
427 #ifndef AMREX_USE_GPU
428 if (a_dry_run) { Print() <<
"P1: v1--v4: intersection ~ 0 :: add vIP to F1\n"; }
433 }
else if ( almostEqual(distIP, 1.0) ) {
434 #ifndef AMREX_USE_GPU
435 if (a_dry_run) { Print() <<
"P1: v1--v4: intersection ~ 1 :: add vIP to F3\n"; }
445 #ifndef AMREX_USE_GPU
446 if (a_dry_run) { Print() <<
"P1: Add v4 to F2, F3 and F5\n"; }
460 #ifndef AMREX_USE_GPU
461 if (a_dry_run) { Print() <<
"P1: v4--v7: add vIP to F2, F3 and F7 :: " << vIP[1] <<
"\n"; }
470 if ( almostEqual(distIP, 0.0)) {
471 #ifndef AMREX_USE_GPU
472 if (a_dry_run) { Print() <<
"P1: v4--v7: intersection ~ 0 :: add vIP to F5\n"; }
477 }
else if ( almostEqual(distIP, 1.0)) {
478 #ifndef AMREX_USE_GPU
479 if (a_dry_run) { Print() <<
"P1: v4--v7: intersection ~ 1 :: add vIP to F6\n"; }
486 if (cuts == 2 && add_v7) {
488 #ifndef AMREX_USE_GPU
489 if (a_dry_run) { Print() <<
"P1: Add v7 to F2, F3 and F6\n"; }
505 #ifndef AMREX_USE_GPU
506 if (a_dry_run) { Print() <<
"P4: v1--v5: add vIP to F1, F2 and F7 :: " << vIP[1] <<
"\n"; }
515 if ( almostEqual(distIP, 0.0)) {
516 #ifndef AMREX_USE_GPU
517 if (a_dry_run) { Print() <<
"P1: v1--v5: intersection ~ 0 :: add vIP to F5\n"; }
522 }
else if ( almostEqual(distIP, 1.0)) {
523 #ifndef AMREX_USE_GPU
524 if (a_dry_run) { Print() <<
"P1: v1--v5: intersection ~ 1 :: add vIP to F6\n"; }
539 #ifndef AMREX_USE_GPU
540 if (a_dry_run) { Print() <<
"P2: v0--v2: add vIP to F1, F4 and F7 :: " << vIP[1] <<
"\n"; }
549 if ( almostEqual(distIP, 0.0)) {
550 #ifndef AMREX_USE_GPU
551 if (a_dry_run) { Print() <<
"P2: v0--v2: intersection ~ 0 :: add vIP to F5\n"; }
556 }
else if ( almostEqual(distIP, 1.0)) {
557 #ifndef AMREX_USE_GPU
558 if (a_dry_run) { Print() <<
"P2: v0--v2: intersection ~ 1 :: add vIP to F6\n"; }
568 #ifndef AMREX_USE_GPU
569 if (a_dry_run) { Print() <<
"P2: Add v2 to F1, F4, F6\n"; }
583 #ifndef AMREX_USE_GPU
584 if (a_dry_run) { Print() <<
"P2: v2--v5: add vIP to F1, F6 and F7 :: " << vIP[0] <<
"\n"; }
593 if ( almostEqual(distIP, 0.0)) {
594 #ifndef AMREX_USE_GPU
595 if (a_dry_run) { Print() <<
"P2: v2--v5: intersection ~ 0 :: add vIP to F4\n"; }
600 }
else if ( almostEqual(distIP, 1.0)) {
601 #ifndef AMREX_USE_GPU
602 if (a_dry_run) { Print() <<
"P2: v2--v5: intersection ~ 1 :: add vIP to F2\n"; }
611 #ifndef AMREX_USE_GPU
612 if (a_dry_run) { Print() <<
"P2: Add v5 to F1, F2 and F6\n"; }
626 #ifndef AMREX_USE_GPU
627 if (a_dry_run) { Print() <<
"P2: v5--v7: add vIP to F2, F6 and F7 :: " << vIP[2] <<
"\n"; }
636 if ( almostEqual(distIP, 0.0)) {
637 #ifndef AMREX_USE_GPU
638 if (a_dry_run) { Print() <<
"P2: v5--v7: intersection ~ 0 :: add vIP to F1\n"; }
643 }
else if ( almostEqual(distIP, 1.0)) {
644 #ifndef AMREX_USE_GPU
645 if (a_dry_run) { Print() <<
"P2: v5--v7: intersection ~ 1 :: add vIP to F3\n"; }
652 if (cuts == 2 && add_v7) {
654 #ifndef AMREX_USE_GPU
655 if (a_dry_run) { Print() <<
"P2: Add v7 to F2, F3 and F6\n"; }
672 #ifndef AMREX_USE_GPU
673 if (a_dry_run) { Print() <<
"P5: v2--v6: add vIP to F4, F6 and F7 :: " << vIP[2] <<
"\n"; }
682 if ( almostEqual(distIP, 0.0)) {
683 #ifndef AMREX_USE_GPU
684 if (a_dry_run) { Print() <<
"P5: v2--v6: intersection ~ 0 :: add vIP to F1\n"; }
689 }
else if ( almostEqual(distIP, 1.0)) {
690 #ifndef AMREX_USE_GPU
691 if (a_dry_run) { Print() <<
"P5: v2--v6: intersection ~ 1 :: add vIP to F3\n"; }
706 #ifndef AMREX_USE_GPU
707 if (a_dry_run) { Print() <<
"P3: v0--v3: add vIP to F4, F5 and F7 :: " << vIP[2] <<
"\n"; }
716 if ( almostEqual(distIP, 0.0)) {
717 #ifndef AMREX_USE_GPU
718 if (a_dry_run) { Print() <<
"P3: v0--v3: intersection ~ 0 :: add vIP to F1\n"; }
723 }
else if ( almostEqual(distIP, 1.0)) {
724 #ifndef AMREX_USE_GPU
725 if (a_dry_run) { Print() <<
"P3: v0--v3: intersection ~ 1 :: add vIP to F3\n"; }
735 #ifndef AMREX_USE_GPU
736 if (a_dry_run) { Print() <<
"P3: Add v3 to F3, F4 and F5\n"; }
750 #ifndef AMREX_USE_GPU
751 if (a_dry_run) { Print() <<
"P3: v3--v6: add vIP to F3, F4 and F7 :: " << vIP[1] <<
"\n"; }
760 if ( almostEqual(distIP, 0.0)) {
761 #ifndef AMREX_USE_GPU
762 if (a_dry_run) { Print() <<
"P3: v3--v6: intersection ~ 0 :: add vIP to F5\n"; }
767 }
else if ( almostEqual(distIP, 1.0)) {
768 #ifndef AMREX_USE_GPU
769 if (a_dry_run) { Print() <<
"P3: v3--v6: intersection ~ 1 :: add vIP to F6\n"; }
779 #ifndef AMREX_USE_GPU
780 if (a_dry_run) { Print() <<
"P3: Add v6 to F3, F4 and F6\n"; }
794 #ifndef AMREX_USE_GPU
795 if (a_dry_run) { Print() <<
"P3: v6--v7: add vIP to F3, F6 and F7 :: " << vIP[0] <<
"\n"; }
804 if ( almostEqual(distIP, 0.0)) {
805 #ifndef AMREX_USE_GPU
806 if (a_dry_run) { Print() <<
"P3: v6--v7: intersection ~ 0 :: add vIP to F4\n"; }
811 }
else if ( almostEqual(distIP, 1.0)) {
812 #ifndef AMREX_USE_GPU
813 if (a_dry_run) { Print() <<
"P3: v6--v7: intersection ~ 1 :: add vIP to F2\n"; }
820 if (cuts == 2 && add_v7) {
822 #ifndef AMREX_USE_GPU
823 if (a_dry_run) { Print() <<
"P1: Add v7 to F2, F3 and F6\n"; }
838 #ifndef AMREX_USE_GPU
839 if (a_dry_run) { Print() <<
"P6: v3--v4: add vIP to F3, F5 and F7 :: " << vIP[0] <<
"\n"; }
848 if ( almostEqual(distIP, 0.0)) {
849 #ifndef AMREX_USE_GPU
850 if (a_dry_run) { Print() <<
"P6: v3--v4: intersection ~ 0 :: add vIP to F4\n"; }
855 }
else if ( almostEqual(distIP, 1.0)) {
856 #ifndef AMREX_USE_GPU
857 if (a_dry_run) { Print() <<
"P6: v3--v4: intersection ~ 1 :: add vIP to F2\n"; }
867 AMREX_GPU_HOST_DEVICE
873 using namespace amrex;
Definition: ERF_EBCutCell.H:14
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real volume() const
Definition: ERF_EBCutCell.H:57
polygon_ m_F6
Definition: ERF_EBCutCell.H:209
amrex::Array< polygon_ const *const, 3 > m_lo_faces
Definition: ERF_EBCutCell.H:219
amrex::RealVect m_rbox_area
Definition: ERF_EBCutCell.H:198
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool isRegular() const noexcept
Definition: ERF_EBCutCell.H:28
amrex::RealVect m_cell_cent
Definition: ERF_EBCutCell.H:213
amrex::RealVect m_dx
Definition: ERF_EBCutCell.H:214
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real areaHi(int const a_idim) const noexcept
Definition: ERF_EBCutCell.H:87
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real areaLo(int const a_idim) const noexcept
Definition: ERF_EBCutCell.H:78
amrex::RealVect const m_eb_point
Definition: ERF_EBCutCell.H:193
amrex::Real m_invert
Definition: ERF_EBCutCell.H:196
amrex::RealBox const m_rbox
Definition: ERF_EBCutCell.H:192
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect centBoun() const noexcept
Definition: ERF_EBCutCell.H:141
AMREX_GPU_HOST_DEVICE void set_covered_regular_cell_vertices()
Definition: ERF_EBCutCell.H:871
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void set_regular()
Definition: ERF_EBCutCell.H:39
polygon_ m_F1
Definition: ERF_EBCutCell.H:204
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real areaBoun() const noexcept
Definition: ERF_EBCutCell.H:96
polygon_ m_F3
Definition: ERF_EBCutCell.H:206
amrex::EBCellFlag m_flag
Definition: ERF_EBCutCell.H:200
AMREX_GPU_HOST_DEVICE void calc_edge_intersections(int const a_dry_run=0)
Definition: ERF_EBCutCell.H:342
polygon_ m_F5
Definition: ERF_EBCutCell.H:208
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect centLo(int const a_idim) const noexcept
Definition: ERF_EBCutCell.H:101
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect centVol() const noexcept
Definition: ERF_EBCutCell.H:159
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void set_covered()
Definition: ERF_EBCutCell.H:34
polygon_ m_F7
Definition: ERF_EBCutCell.H:217
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect normBoun() const noexcept
Definition: ERF_EBCutCell.H:150
amrex::Array< int const, 3 > m_hi_faces_id
Definition: ERF_EBCutCell.H:223
AMREX_GPU_HOST_DEVICE eb_cut_cell_(amrex::EBCellFlag const &a_flag, amrex::RealBox const &a_rbox, amrex::RealVect const &a_point, amrex::RealVect const &a_normal)
Definition: ERF_EBCutCell.H:236
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool isSingleValued() const noexcept
Definition: ERF_EBCutCell.H:31
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool isCovered() const noexcept
Definition: ERF_EBCutCell.H:25
void debug(int const a_face=-1)
Definition: ERF_EBCutCell.cpp:9
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect centHi(int const a_idim) const noexcept
Definition: ERF_EBCutCell.H:121
static constexpr int m_max_faces
Definition: ERF_EBCutCell.H:211
amrex::RealVect const m_eb_normal
Definition: ERF_EBCutCell.H:194
amrex::Array< int const, 3 > m_lo_faces_id
Definition: ERF_EBCutCell.H:222
polygon_ m_F2
Definition: ERF_EBCutCell.H:205
amrex::Array< polygon_ const *const, 3 > m_hi_faces
Definition: ERF_EBCutCell.H:220
polygon_ m_F4
Definition: ERF_EBCutCell.H:207
amrex::Array< amrex::RealVect, m_max_faces > m_cellface_cent
Definition: ERF_EBCutCell.H:212
Definition: ERF_EBPolygon.H:9
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::RealVect get_centroid() const noexcept
Definition: ERF_EBPolygon.H:138
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int ok() const noexcept
Definition: ERF_EBPolygon.H:119
AMREX_GPU_HOST_DEVICE void add_vertex(amrex::RealVect const &a_v)
Definition: ERF_EBPolygon.H:43
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real distance(amrex::RealVect const &a_point) const noexcept
Definition: ERF_EBPolygon.H:130
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real area() const noexcept
Definition: ERF_EBPolygon.H:123
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void set_area(amrex::Real const &a_area)
Definition: ERF_EBPolygon.H:50
Definition: ERF_ConsoleIO.cpp:12
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_EBUtils.H:30