13 #include "libmesh/elem.h" 21 std::unique_ptr<const libMesh::Elem>
24 mooseAssert(
atEdge(),
"Did not intersect edge");
25 mooseAssert(first < elem->n_vertices(),
"Invalid first vertex for given element");
26 mooseAssert(second < elem->n_vertices(),
"Invalid second vertex for given element");
32 mooseError(
"Element does not contain vertices in ElemExtrema");
38 std::stringstream oss;
40 oss <<
"at vertex " <<
vertex();
42 oss <<
"at edge with vertices " << first <<
" and " << second;
44 oss <<
"not at extrema";
52 "Invalid first vertex for given element");
54 "Invalid second vertex for given element");
57 return vertexPoint(elem).absolute_fuzzy_equals(point);
58 if (elem->dim() == 3 &&
atEdge())
59 return buildEdge(elem)->contains_point(point);
unsigned short vertex() const
static const unsigned short invalid_vertex
Identifier for an invalid vertex index.
void mooseError(Args &&... args)
std::string print() const
Prints the current state (at edge, at vertex, not at either)
Helper for defining if at an element's edge, vertex, or neither.
std::unique_ptr< const libMesh::Elem > buildEdge(const Elem *elem) const
std::basic_ostream< charT, traits > * os
bool isValid(const Elem *const elem, const Point &point) const
IntRange< unsigned short > edge_index_range() const
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const=0
std::ostream & operator<<(std::ostream &os, const ElemExtrema &elem_extrema)
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i)=0
const Point & point(const unsigned int i) const
const Point & vertexPoint(const libMesh::Elem *elem) const