21 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 77 libmesh_assert_less (s, this->
n_sides());
90 unsigned int side_node)
const 93 libmesh_assert_less (side_node, 4);
102 libmesh_assert_less (i, this->
n_sides());
105 std::unique_ptr<Elem> face;
123 face = libmesh_make_unique<Quad4>();
133 face = libmesh_make_unique<InfQuad4>();
138 libmesh_error_msg(
"Invalid side i = " << i);
142 for (
unsigned n=0; n<face->n_nodes(); ++n)
151 const unsigned int i)
153 libmesh_assert_less (i, this->
n_sides());
184 libmesh_error_msg(
"Invalid side i = " << i);
190 for (
auto n :
side->node_index_range())
197 const unsigned int s)
const 200 libmesh_assert_less (s, this->
n_sides());
202 return (s == 0 || c+1 == s || c == s%4);
208 const unsigned int s)
const 210 libmesh_assert_less (e, this->
n_edges());
211 libmesh_assert_less (s, this->
n_sides());
246 libmesh_assert_not_equal_to (
max, 0.0);
271 std::vector<Real> edge_ratios(2);
277 return *(std::min_element(edge_ratios.begin(), edge_ratios.end())) ;
295 const Real sqrt3 = 1.73205080756888;
304 libmesh_assert_not_equal_to ( max_diag, 0.0 );
309 std::vector<Real> edges(4);
310 edges[0] = this->
length(0,1);
311 edges[1] = this->
length(1,2);
312 edges[2] = this->
length(2,3);
313 edges[3] = this->
length(0,3);
315 const Real min_edge = *(std::min_element(edges.begin(), edges.end()));
316 return sqrt3 * min_edge / max_diag ;
333 libmesh_not_implemented();
335 std::pair<Real, Real> bounds;
423 99,99,99,99,99,99,99,99,
433 99,99,99,99,99,99,99,99,
468 const Real conservative_p_dist_sq = 1.01 * (
Point(p - my_origin).
norm_sq());
472 if (conservative_p_dist_sq < min_distance_sq)
480 Point p_o(p - my_origin);
481 pt0_o /= pt0_o.
norm();
482 pt1_o /= pt1_o.
norm();
483 pt2_o /= pt2_o.
norm();
484 pt3_o /= pt3_o.
norm();
491 (pt1_o - pt2_o).
norm_sq())*1.01;
493 if ((p_o - pt0_o).
norm_sq() > max_h ||
494 (p_o - pt1_o).
norm_sq() > max_h ||
495 (p_o - pt2_o).
norm_sq() > max_h ||
496 (p_o - pt3_o).
norm_sq() > max_h )
521 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS Manages the family, order, etc. parameters for a given FE.
virtual dof_id_type key() const
virtual std::pair< Real, Real > qual_bounds(const ElemQuality q) const override
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const =0
virtual bool is_edge_on_side(const unsigned int e, const unsigned int s) const override final
long double max(long double a, double b)
static const unsigned short int _second_order_adjacent_vertices[8][2]
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final
static const Real _master_points[18][3]
Real length(const unsigned int n1, const unsigned int n2) const
static Point inverse_map(const unsigned int dim, const FEType &fe_t, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true)
virtual unsigned int n_children() const override final
static bool on_reference_element(const Point &p, const ElemType t, const Real eps=TOLERANCE)
virtual Point origin() const override
static const unsigned int side_nodes_map[num_sides][nodes_per_side]
virtual unsigned int which_node_am_i(unsigned int side, unsigned int side_node) const override
static const unsigned short int _second_order_vertex_child_index[18]
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
subdomain_id_type subdomain_id() const
const Node * node_ptr(const unsigned int i) const
virtual bool contains_point(const Point &p, Real tol=TOLERANCE) const override
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override final
virtual Real quality(const ElemQuality q) const
virtual unsigned short dim() const override
virtual Real quality(const ElemQuality q) const override
static const unsigned int edge_nodes_map[num_edges][nodes_per_edge]
virtual unsigned int n_edges() const override final
static dof_id_type compute_key(dof_id_type n0)
virtual Order default_order() const =0
virtual ElemType type() const =0
long double min(long double a, double b)
A geometric point in (x,y,z) space.
dof_id_type node_id(const unsigned int i) const
const Point & point(const unsigned int i) const
static const unsigned short int _second_order_vertex_child_number[18]
std::unique_ptr< Elem > side(const unsigned int i) const
virtual unsigned int n_sides() const override final