88 const unsigned int s)
const 90 libmesh_assert_less (s,
n_sides());
99 libmesh_assert_less(s,
n_sides());
104 const unsigned int e)
const 106 libmesh_assert_less (e,
n_edges());
142 libmesh_assert_less (i, this->
n_sides());
145 return libmesh_make_unique<Side<Quad4,Hex8>>(
this,i);
149 std::unique_ptr<Elem> face = libmesh_make_unique<Quad4>();
152 for (
unsigned n=0; n<face->n_nodes(); ++n)
153 face->set_node(n) = this->
node_ptr(Hex8::side_nodes_map[i][n]);
162 const unsigned int i)
164 this->simple_build_side_ptr<Hex8>(
side, i,
QUAD4);
171 libmesh_assert_less (i, this->
n_edges());
173 return libmesh_make_unique<SideEdge<Edge2,Hex8>>(
this,i);
180 std::vector<dof_id_type> & conn)
const 217 libmesh_error_msg(
"Unsupported IO package " << iop);
223 #ifdef LIBMESH_ENABLE_AMR 236 { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
237 { 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
238 { .25, .25, .25, .25, 0.0, 0.0, 0.0, 0.0},
239 { 0.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0},
240 { 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0},
241 { .25, .25, 0.0, 0.0, .25, .25, 0.0, 0.0},
242 {.125, .125, .125, .125, .125, .125, .125, .125},
243 { .25, 0.0, 0.0, .25, .25, 0.0, 0.0, .25}
249 { 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
250 { 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
251 { 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0},
252 { .25, .25, .25, .25, 0.0, 0.0, 0.0, 0.0},
253 { .25, .25, 0.0, 0.0, .25, .25, 0.0, 0.0},
254 { 0.0, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0},
255 { 0.0, .25, .25, 0.0, 0.0, .25, .25, 0.0},
256 {.125, .125, .125, .125, .125, .125, .125, .125}
262 { 0.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0},
263 { .25, .25, .25, .25, 0.0, 0.0, 0.0, 0.0},
264 { 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0},
265 { 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
266 { .25, 0.0, 0.0, .25, .25, 0.0, 0.0, .25},
267 {.125, .125, .125, .125, .125, .125, .125, .125},
268 { 0.0, 0.0, .25, .25, 0.0, 0.0, .25, .25},
269 { 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5}
275 { .25, .25, .25, .25, 0.0, 0.0, 0.0, 0.0},
276 { 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0},
277 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
278 { 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0},
279 {.125, .125, .125, .125, .125, .125, .125, .125},
280 { 0.0, .25, .25, 0.0, 0.0, .25, .25, 0.0},
281 { 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0},
282 { 0.0, 0.0, .25, .25, 0.0, 0.0, .25, .25}
288 { 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0},
289 { .25, .25, 0.0, 0.0, .25, .25, 0.0, 0.0},
290 {.125, .125, .125, .125, .125, .125, .125, .125},
291 { .25, 0.0, 0.0, .25, .25, 0.0, 0.0, .25},
292 { 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},
293 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0},
294 { 0.0, 0.0, 0.0, 0.0, .25, .25, .25, .25},
295 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5}
301 { .25, .25, 0.0, 0.0, .25, .25, 0.0, 0.0},
302 { 0.0, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0},
303 { 0.0, .25, .25, 0.0, 0.0, .25, .25, 0.0},
304 {.125, .125, .125, .125, .125, .125, .125, .125},
305 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0},
306 { 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
307 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0},
308 { 0.0, 0.0, 0.0, 0.0, .25, .25, .25, .25}
314 { .25, 0.0, 0.0, .25, .25, 0.0, 0.0, .25},
315 {.125, .125, .125, .125, .125, .125, .125, .125},
316 { 0.0, 0.0, .25, .25, 0.0, 0.0, .25, .25},
317 { 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5},
318 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5},
319 { 0.0, 0.0, 0.0, 0.0, .25, .25, .25, .25},
320 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5},
321 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}
327 {.125, .125, .125, .125, .125, .125, .125, .125},
328 { 0.0, .25, .25, 0.0, 0.0, .25, .25, 0.0},
329 { 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0},
330 { 0.0, 0.0, .25, .25, 0.0, 0.0, .25, .25},
331 { 0.0, 0.0, 0.0, 0.0, .25, .25, .25, .25},
332 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0},
333 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},
334 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5}
362 x0 - x1 + x2 - x3 + x4 - x5 + x6 - x7,
363 x0 - x1 - x2 + x3 - x4 + x5 + x6 - x7,
364 -x0 + x1 + x2 - x3 - x4 + x5 + x6 - x7,
365 x0 + x1 - x2 - x3 - x4 - x5 + x6 + x7,
366 -x0 - x1 + x2 + x3 - x4 - x5 + x6 + x7,
367 -x0 - x1 - x2 - x3 + x4 + x5 + x6 + x7
static const int num_nodes
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
static const int num_sides
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i) override
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i, bool proxy) override
virtual void connectivity(const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const override
static const int num_edges
virtual BoundingBox loose_bounding_box() const
virtual Real volume() const override
virtual unsigned int n_sub_elem() const override
static const unsigned int side_nodes_map[num_sides][nodes_per_side]
virtual Order default_order() const override
T triple_product(const TypeVector< T > &a, const TypeVector< T > &b, const TypeVector< T > &c)
static const unsigned int edge_nodes_map[num_edges][nodes_per_edge]
static const int nodes_per_edge
static const float _embedding_matrix[num_children][num_nodes][num_nodes]
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const override
virtual bool has_affine_map() const override
virtual unsigned int n_edges() const override final
virtual bool is_face(const unsigned int i) const override
static const int nodes_per_side
virtual bool is_edge(const unsigned int i) const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
subdomain_id_type subdomain_id() const
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const override
virtual unsigned int n_sides() const override final
const Node * node_ptr(const unsigned int i) const
virtual BoundingBox loose_bounding_box() const override
virtual bool is_vertex(const unsigned int i) const override
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
bool relative_fuzzy_equals(const TypeVector< T > &rhs, Real tol=TOLERANCE) const
std::unique_ptr< Elem > side(const unsigned int i) const
static const int num_children