![]() |
Reference documentation for deal.II version Git 78a8940608 2021-04-17 09:24:19 -0400
|
#include <deal.II/grid/reference_cell.h>
Public Member Functions | |
constexpr | ReferenceCell () |
Querying information about the kind of reference cells | |
bool | is_hyper_cube () const |
bool | is_simplex () const |
unsigned int | get_dimension () const |
Shape functions, mappings, quadratures defined on a reference cell | |
template<int dim> | |
double | d_linear_shape_function (const Point< dim > &xi, const unsigned int i) const |
template<int dim> | |
Tensor< 1, dim > | d_linear_shape_function_gradient (const Point< dim > &xi, const unsigned int i) const |
template<int dim, int spacedim> | |
std::unique_ptr< Mapping< dim, spacedim > > | get_default_mapping (const unsigned int degree) const |
template<int dim, int spacedim> | |
const Mapping< dim, spacedim > & | get_default_linear_mapping () const |
template<int dim> | |
Quadrature< dim > | get_gauss_type_quadrature (const unsigned n_points_1D) const |
template<int dim> | |
const Quadrature< dim > & | get_nodal_type_quadrature () const |
Querying the number of building blocks of a reference cell | |
unsigned int | n_vertices () const |
std_cxx20::ranges::iota_view< unsigned int, unsigned int > | vertex_indices () const |
unsigned int | n_lines () const |
std_cxx20::ranges::iota_view< unsigned int, unsigned int > | line_indices () const |
unsigned int | n_faces () const |
std_cxx20::ranges::iota_view< unsigned int, unsigned int > | face_indices () const |
ReferenceCell | face_reference_cell (const unsigned int face_no) const |
template<int dim> | |
Tensor< 1, dim > | unit_tangential_vectors (const unsigned int face_no, const unsigned int i) const |
template<int dim> | |
Tensor< 1, dim > | unit_normal_vectors (const unsigned int face_no) const |
template<typename T , std::size_t N> | |
unsigned char | compute_orientation (const std::array< T, N > &vertices_0, const std::array< T, N > &vertices_1) const |
template<typename T , std::size_t N> | |
std::array< T, N > | permute_according_orientation (const std::array< T, N > &vertices, const unsigned int orientation) const |
ArrayView< const unsigned int > | faces_for_given_vertex (const unsigned int vertex_index) const |
Relationships between objects in the cell and on faces | |
unsigned int | child_cell_on_face (const unsigned int face_n, const unsigned int subface_n) const |
std::array< unsigned int, 2 > | standard_vertex_to_face_and_vertex_index (const unsigned int vertex) const |
std::array< unsigned int, 2 > | standard_line_to_face_and_line_index (const unsigned int line) const |
unsigned int | face_to_cell_lines (const unsigned int face, const unsigned int line, const unsigned char face_orientation) const |
unsigned int | face_to_cell_vertices (const unsigned int face, const unsigned int vertex, const unsigned char face_orientation) const |
unsigned int | standard_to_real_face_vertex (const unsigned int vertex, const unsigned int face, const unsigned char face_orientation) const |
unsigned int | standard_to_real_face_line (const unsigned int line, const unsigned int face, const unsigned char face_orientation) const |
bool | standard_vs_true_line_orientation (const unsigned int line, const unsigned char face_orientation, const unsigned char line_orientation) const |
Translating between deal.II indexing and formats used by other programs | |
unsigned int | exodusii_vertex_to_deal_vertex (const unsigned int vertex_n) const |
unsigned int | exodusii_face_to_deal_face (const unsigned int face_n) const |
unsigned int | unv_vertex_to_deal_vertex (const unsigned int vertex_n) const |
unsigned int | vtk_linear_type () const |
unsigned int | vtk_quadratic_type () const |
unsigned int | vtk_lagrange_type () const |
Other functions | |
std::string | to_string () const |
constexpr | operator std::uint8_t () const |
constexpr bool | operator== (const ReferenceCell &type) const |
constexpr bool | operator!= (const ReferenceCell &type) const |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int) |
Static Public Member Functions | |
static ReferenceCell | n_vertices_to_type (const int dim, const unsigned int n_vertices) |
Private Member Functions | |
constexpr | ReferenceCell (const std::uint8_t kind) |
Private Attributes | |
std::uint8_t | kind |
Friends | |
constexpr ReferenceCell | internal::ReferenceCell::make_reference_cell_from_int (const std::uint8_t) |
A type that describes the kinds of reference cells that can be used. This includes quadrilaterals and hexahedra (i.e., "hypercubes"), triangles and tetrahedra (simplices), and the pyramids and wedges necessary when using mixed 3d meshes.
Objects of this type should not be created in user code, and as a consequence the class does not have a user-accessible constructor other than the default constructor (which creates an invalid object). Rather, there is a finite number of specific reference cell objects defined in the ReferenceCells namespace that completely enumerate all of the possible values. User codes should therefore rely exclusively on assigning ReferenceCell objects from these special objects, and comparing against those special objects.
The purposes and intents of this class are described in the reference cell glossary entry.
Definition at line 87 of file reference_cell.h.
|
inline |
Default constructor. Initialize this object as an invalid object. The end result is that the current object equals ReferenceCells::Invalid.
Generally, ReferenceCell objects are created by assignment from the special objects in namespace ReferenceCells, which is the only way to obtain a valid object.
Definition at line 668 of file reference_cell.h.
|
inlineprivate |
Constructor. This is the constructor used to create the different static
member variables of this class. It is private
but can be called by a function in an internal namespace that is a friend
of this class.
Definition at line 567 of file reference_cell.h.
|
inlinestatic |
Return the correct ReferenceCell for a given structural dimension and number of vertices. For example, if dim==2
and n_vertices==4
, this function will return ReferenceCells::Quadrilateral. But if dim==3
and n_vertices==4
, it will return ReferenceCells::Tetrahedron.
Definition at line 1494 of file reference_cell.h.
|
inline |
Return true
if the object is a ReferenceCells::Vertex, ReferenceCells::Line, ReferenceCells::Quadrilateral, or ReferenceCells::Hexahedron.
Definition at line 750 of file reference_cell.h.
|
inline |
Return true if the object is a Vertex, Line, Triangle, or Tetrahedron.
Definition at line 760 of file reference_cell.h.
|
inline |
Return the dimension of the reference cell represented by the current object.
Definition at line 770 of file reference_cell.h.
|
inline |
Compute the value of the \(i\)-th linear shape function at location \(\xi\) for the current reference-cell type.
Definition at line 1536 of file reference_cell.h.
|
inline |
Compute the gradient of the \(i\)-th linear shape function at location \(\xi\) for the current reference-cell type.
Definition at line 1630 of file reference_cell.h.
std::unique_ptr< Mapping< dim, spacedim > > ReferenceCell::get_default_mapping | ( | const unsigned int | degree | ) | const |
Return a default mapping of degree degree
matching the current reference cell. If this reference cell is a hypercube, then the returned mapping is a MappingQGeneric; otherwise, it is an object of type MappingFE initialized with FE_SimplexP (if the reference cell is a triangle or tetrahedron), with FE_PyramidP (if the reference cell is a pyramid), or with FE_WedgeP (if the reference cell is a wedge).
Definition at line 110 of file reference_cell.cc.
const Mapping< dim, spacedim > & ReferenceCell::get_default_linear_mapping | ( | ) | const |
Return a default linear mapping matching the current reference cell. If this reference cell is a hypercube, then the returned mapping is a MappingQ1; otherwise, it is an object of type MappingFE initialized with FE_SimplexP (if the reference cell is a triangle or tetrahedron), with FE_PyramidP (if the reference cell is a pyramid), or with FE_WedgeP (if the reference cell is a wedge). In other words, the term "linear" in the name of the function has to be understood as \(d\)-linear (i.e., bilinear or trilinear) for some of the coordinate directions.
Definition at line 137 of file reference_cell.cc.
Quadrature< dim > ReferenceCell::get_gauss_type_quadrature | ( | const unsigned | n_points_1D | ) | const |
Return a Gauss-type quadrature matching the given reference cell (QGauss, QGaussSimplex, QGaussPyramid, QGaussWedge).
[in] | n_points_1D | The number of quadrature points in each direction (QGauss) or an indication of what polynomial degree needs to be integrated exactly for the other types. |
Definition at line 175 of file reference_cell.cc.
const Quadrature< dim > & ReferenceCell::get_nodal_type_quadrature | ( | ) | const |
Return a quadrature rule with the support points of the given reference cell.
Definition at line 197 of file reference_cell.cc.
|
inline |
Return the number of vertices that make up the reference cell in question. A vertex is a "corner" (a zero-dimensional object) of the reference cell.
Definition at line 792 of file reference_cell.h.
|
inline |
Return an object that can be thought of as an array containing all indices from zero to n_vertices().
Definition at line 870 of file reference_cell.h.
|
inline |
Return the number of lines that make up the reference cell in question. A line is an "edge" (a one-dimensional object) of the reference cell.
Definition at line 818 of file reference_cell.h.
|
inline |
Return an object that can be thought of as an array containing all indices from zero to n_lines().
Definition at line 878 of file reference_cell.h.
|
inline |
Return the number of faces that make up the reference cell in question. A face is a (dim-1)
-dimensional object bounding the reference cell.
Definition at line 844 of file reference_cell.h.
|
inline |
Return an object that can be thought of as an array containing all indices from zero to n_faces().
Definition at line 886 of file reference_cell.h.
|
inline |
Return the reference-cell type of face face_no
of the current object. For example, if the current object is ReferenceCells::Tetrahedron, then face_no
must be between in the interval \([0,4)\) and the function will always return ReferenceCells::Triangle. If the current object is ReferenceCells::Hexahedron, then face_no
must be between in the interval \([0,6)\) and the function will always return ReferenceCells::Quadrilateral. For wedges and pyramids, the returned object may be either ReferenceCells::Triangle or ReferenceCells::Quadrilateral, depending on the given index.
Definition at line 894 of file reference_cell.h.
|
inline |
Return which child cells are adjacent to a certain face of the mother cell.
For example, in 2D the layout of a quadrilateral cell is as follows:
* . 3 * . 2-->--3 * . | | * . 0 ^ ^ 1 * . | | * . 0-->--1 * . 2 *
Vertices and faces are indicated with their numbers, faces also with their directions.
Now, when refined, the layout is like this:
* *--*--* * | 2|3 | * *--*--* * | 0|1 | * *--*--* *
Thus, the child cells on face 0 are (ordered in the direction of the face) 0 and 2, on face 3 they are 2 and 3, etc.
For three spatial dimensions, the exact order of the children is laid down in the general documentation of this class.
Definition at line 932 of file reference_cell.h.
|
inline |
For a given vertex in a cell, return a pair of a face index and a vertex index within this face.
Definition at line 980 of file reference_cell.h.
|
inline |
For a given line in a cell, return a pair of a face index and a line index within this face.
Definition at line 1037 of file reference_cell.h.
|
inline |
Map face line number to cell line number.
Definition at line 1104 of file reference_cell.h.
|
inline |
Map face vertex number to cell vertex number.
Definition at line 1170 of file reference_cell.h.
|
inline |
Correct vertex index depending on face orientation.
Definition at line 1255 of file reference_cell.h.
|
inline |
Correct line index depending on face orientation.
Definition at line 1353 of file reference_cell.h.
|
inline |
Return whether the line with index line
is oriented in standard direction within a cell, given the face_orientation
of the face within the current cell, and line_orientation
flag for the line within that face. true
indicates that the line is oriented from vertex 0 to vertex 1, whereas it is the other way around otherwise. In 1d and 2d, this is always true
, but in 3d it may be different, see the respective discussion in the documentation of the GeometryInfo class.
Definition at line 1766 of file reference_cell.h.
|
inline |
Definition at line 1660 of file reference_cell.h.
|
inline |
Return the unit normal vector of a face of the reference cell.
Definition at line 1736 of file reference_cell.h.
|
inline |
Determine the orientation of the current entity described by its vertices var_1
relative to an entity described by var_0
.
Definition at line 1874 of file reference_cell.h.
|
inline |
Inverse function of compute_orientation().
Definition at line 1969 of file reference_cell.h.
|
inline |
Return a vector of faces a given vertex_index
belongs to.
Definition at line 684 of file reference_cell.h.
Map an ExodusII vertex number to a deal.II vertex number.
Definition at line 241 of file reference_cell.cc.
Map an ExodusII face number to a deal.II face number.
Definition at line 287 of file reference_cell.cc.
Map a UNV vertex number to a deal.II vertex number.
Definition at line 337 of file reference_cell.cc.
unsigned int ReferenceCell::vtk_linear_type | ( | ) | const |
Return a VTK linear shape constant that corresponds to the reference cell.
Definition at line 373 of file reference_cell.cc.
unsigned int ReferenceCell::vtk_quadratic_type | ( | ) | const |
Return a VTK quadratic shape constant that corresponds to the reference cell.
Definition at line 402 of file reference_cell.cc.
unsigned int ReferenceCell::vtk_lagrange_type | ( | ) | const |
Return a VTK Lagrange shape constant that corresponds to the reference cell.
Definition at line 431 of file reference_cell.cc.
std::string ReferenceCell::to_string | ( | ) | const |
Return a text representation of the reference cell represented by the current object.
Definition at line 80 of file reference_cell.cc.
|
inline |
Conversion operator to an integer.
Definition at line 573 of file reference_cell.h.
|
inline |
Operator for equality comparison.
Definition at line 581 of file reference_cell.h.
|
inline |
Operator for inequality comparison.
Definition at line 589 of file reference_cell.h.
|
inline |
Write and read the data of this object from a stream for the purpose of serialization using the BOOST serialization library.
Definition at line 676 of file reference_cell.h.
|
friend |
A kind of constructor – not quite private because it can be called by anyone, but at least hidden in an internal namespace.
|
private |
The variable that stores what this object actually corresponds to.
Definition at line 547 of file reference_cell.h.