56 VTK_QUADRATIC_EDGE = 21,
57 VTK_QUADRATIC_TRIANGLE = 22,
58 VTK_QUADRATIC_QUAD = 23,
59 VTK_QUADRATIC_TETRA = 24,
60 VTK_QUADRATIC_HEXAHEDRON = 25,
61 VTK_QUADRATIC_WEDGE = 26,
62 VTK_QUADRATIC_PYRAMID = 27,
64 VTK_LAGRANGE_CURVE = 68,
65 VTK_LAGRANGE_TRIANGLE = 69,
66 VTK_LAGRANGE_QUADRILATERAL = 70,
67 VTK_LAGRANGE_TETRAHEDRON = 71,
68 VTK_LAGRANGE_HEXAHEDRON = 72,
69 VTK_LAGRANGE_WEDGE = 73,
70 VTK_LAGRANGE_PYRAMID = 74,
72 VTK_INVALID =
static_cast<unsigned int>(-1)
109template <
int dim,
int spacedim>
110std::unique_ptr<Mapping<dim, spacedim>>
116 return std::make_unique<MappingQ<dim, spacedim>>(degree);
121 return std::make_unique<MappingFE<dim, spacedim>>(
124 return std::make_unique<MappingFE<dim, spacedim>>(
131 return std::make_unique<MappingQ<dim, spacedim>>(degree);
136template <
int dim,
int spacedim>
205 const auto create_quadrature = [](
const ReferenceCell &reference_cell) {
206 std::vector<Point<dim>>
vertices(reference_cell.n_vertices());
207 for (
const unsigned int v : reference_cell.vertex_indices())
208 vertices[v] = reference_cell.vertex<dim>(v);
257 constexpr std::array<unsigned int, 4> exodus_to_deal{{0, 1, 3, 2}};
258 return exodus_to_deal[vertex_n];
266 constexpr std::array<unsigned int, 8> exodus_to_deal{
267 {0, 1, 3, 2, 4, 5, 7, 6}};
268 return exodus_to_deal[vertex_n];
272 constexpr std::array<unsigned int, 6> exodus_to_deal{{2, 1, 0, 5, 4, 3}};
273 return exodus_to_deal[vertex_n];
277 constexpr std::array<unsigned int, 5> exodus_to_deal{{0, 1, 3, 2, 4}};
278 return exodus_to_deal[vertex_n];
307 constexpr std::array<unsigned int, 4> exodus_to_deal{{2, 1, 3, 0}};
308 return exodus_to_deal[face_n];
312 constexpr std::array<unsigned int, 4> exodus_to_deal{{1, 3, 2, 0}};
313 return exodus_to_deal[face_n];
317 constexpr std::array<unsigned int, 6> exodus_to_deal{{2, 1, 3, 0, 4, 5}};
318 return exodus_to_deal[face_n];
322 constexpr std::array<unsigned int, 6> exodus_to_deal{{3, 4, 2, 0, 1}};
323 return exodus_to_deal[face_n];
327 constexpr std::array<unsigned int, 5> exodus_to_deal{{3, 2, 4, 1, 0}};
328 return exodus_to_deal[face_n];
357 constexpr std::array<unsigned int, 4> unv_to_deal{{1, 0, 2, 3}};
358 return unv_to_deal[vertex_n];
362 constexpr std::array<unsigned int, 8> unv_to_deal{
363 {6, 7, 5, 4, 2, 3, 1, 0}};
364 return unv_to_deal[vertex_n];
378 return VTKCellType::VTK_VERTEX;
380 return VTKCellType::VTK_LINE;
382 return VTKCellType::VTK_TRIANGLE;
384 return VTKCellType::VTK_QUAD;
386 return VTKCellType::VTK_TETRA;
388 return VTKCellType::VTK_PYRAMID;
390 return VTKCellType::VTK_WEDGE;
392 return VTKCellType::VTK_HEXAHEDRON;
394 return VTKCellType::VTK_INVALID;
398 return VTKCellType::VTK_INVALID;
407 return VTKCellType::VTK_VERTEX;
409 return VTKCellType::VTK_QUADRATIC_EDGE;
411 return VTKCellType::VTK_QUADRATIC_TRIANGLE;
413 return VTKCellType::VTK_QUADRATIC_QUAD;
415 return VTKCellType::VTK_QUADRATIC_TETRA;
417 return VTKCellType::VTK_QUADRATIC_PYRAMID;
419 return VTKCellType::VTK_QUADRATIC_WEDGE;
421 return VTKCellType::VTK_QUADRATIC_HEXAHEDRON;
423 return VTKCellType::VTK_INVALID;
427 return VTKCellType::VTK_INVALID;
436 return VTKCellType::VTK_VERTEX;
438 return VTKCellType::VTK_LAGRANGE_CURVE;
440 return VTKCellType::VTK_LAGRANGE_TRIANGLE;
442 return VTKCellType::VTK_LAGRANGE_QUADRILATERAL;
444 return VTKCellType::VTK_LAGRANGE_TETRAHEDRON;
446 return VTKCellType::VTK_LAGRANGE_PYRAMID;
448 return VTKCellType::VTK_LAGRANGE_WEDGE;
450 return VTKCellType::VTK_LAGRANGE_HEXAHEDRON;
452 return VTKCellType::VTK_INVALID;
456 return VTKCellType::VTK_INVALID;
553 out << static_cast<unsigned int>(reference_cell.kind);
567 reference_cell.kind =
static_cast<decltype(reference_cell.kind)
>(value);
581 "The reference cell kind just read does not correspond to one of the valid choices. There must be an error."));
588#include "reference_cell.inst"
Abstract base class for mapping classes.
unsigned int n_vertices() const
bool is_hyper_cube() const
unsigned int vtk_linear_type() const
Quadrature< dim > get_gauss_type_quadrature(const unsigned n_points_1D) const
unsigned int gmsh_element_type() const
unsigned int n_faces() const
unsigned int exodusii_vertex_to_deal_vertex(const unsigned int vertex_n) const
unsigned int unv_vertex_to_deal_vertex(const unsigned int vertex_n) const
std::unique_ptr< Mapping< dim, spacedim > > get_default_mapping(const unsigned int degree) const
unsigned int vtk_quadratic_type() const
unsigned int vtk_lagrange_type() const
unsigned int get_dimension() const
unsigned int exodusii_face_to_deal_face(const unsigned int face_n) const
const Mapping< dim, spacedim > & get_default_linear_mapping() const
std::string to_string() const
const Quadrature< dim > & get_nodal_type_quadrature() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcIO()
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
constexpr const ReferenceCell Tetrahedron
constexpr const ReferenceCell Quadrilateral
constexpr const ReferenceCell Wedge
constexpr const ReferenceCell Pyramid
constexpr const ReferenceCell Invalid
constexpr const ReferenceCell Triangle
constexpr const ReferenceCell Hexahedron
constexpr const ReferenceCell Vertex
constexpr const ReferenceCell Line
static const unsigned int invalid_unsigned_int
std::istream & operator>>(std::istream &in, ReferenceCell &reference_cell)
std::ostream & operator<<(std::ostream &out, const ReferenceCell &reference_cell)