16#ifndef dealii_fe_data_h
17#define dealii_fe_data_h
503 const unsigned int degree,
514 const unsigned int degree,
527 const unsigned int degree,
613 template <
int structdim>
701 expand(
const unsigned int dim,
702 const std::vector<unsigned int> &dofs_per_object,
703 const ::ReferenceCell reference_cell);
766 return reference_cell_kind;
775 return number_unique_quads;
784 return number_unique_faces;
793 return dofs_per_vertex;
802 return dofs_per_line;
811 return n_dofs_on_quad[n_dofs_on_quad.size() == 1 ? 0 : face_no];
820 return dofs_per_quad_max;
837 unsigned int child_no)
const
841 return n_dofs_on_face[n_dofs_on_face.size() == 1 ? 0 : face_no];
850 return dofs_per_face_max;
859 return dofs_per_cell;
865template <
int structdim>
872 return n_dofs_per_vertex();
874 return n_dofs_per_line();
876 return n_dofs_per_quad((structdim == 2 && dim == 3) ? i : 0);
878 return n_dofs_per_hex();
900 return block_indices_data;
909 return block_indices_data.
size();
926 return ((space & conforming_space) == space);
935 return first_line_index;
942 if (first_index_of_quads.size() == 1)
943 return first_index_of_quads[0] + quad_no * n_dofs_per_quad(0);
945 return first_index_of_quads[quad_no];
952 return first_hex_index;
958 const unsigned int face_no)
const
960 return first_line_index_of_faces[first_line_index_of_faces.size() == 1 ?
968 const unsigned int face_no)
const
970 return first_quad_index_of_faces[first_quad_index_of_faces.size() == 1 ?
987 unsigned int counter = 0;
991 const auto c = fe.template n_dofs_per_object<0>(v);
1003 const auto c = fe.template n_dofs_per_object<1>(l);
1007 c + 2 * fe.template n_dofs_per_object<0>());
1016 const auto c = fe.template n_dofs_per_object<2>(f);
1026 const auto c = fe.template n_dofs_per_object<dim>();
1035 for (
unsigned int d = dim + 1;
d <= 3; ++
d)
unsigned int size() const
const unsigned int dofs_per_quad
unsigned int get_first_line_index() const
unsigned int n_dofs_per_vertex() const
const unsigned int first_face_quad_index
const std::vector< unsigned int > first_index_of_quads
bool conforms(const Conformity) const
const std::vector< unsigned int > first_line_index_of_faces
const unsigned int components
const unsigned int degree
const std::vector< unsigned int > n_dofs_on_face
unsigned int n_dofs_per_cell() const
const unsigned int dofs_per_face
unsigned int n_dofs_per_line() const
unsigned int get_first_quad_index(const unsigned int quad_no=0) const
bool operator==(const FiniteElementData &) const
const unsigned int dofs_per_line
unsigned int n_dofs_per_face(unsigned int face_no=0, unsigned int child=0) const
unsigned int n_blocks() const
unsigned int max_dofs_per_face() const
unsigned int tensor_degree() const
unsigned int n_components() const
unsigned int n_unique_quads() const
ReferenceCell reference_cell() const
const unsigned int first_hex_index
unsigned int n_dofs_per_object(const unsigned int i=0) const
const unsigned int first_face_line_index
const unsigned int dofs_per_quad_max
unsigned int get_first_face_line_index(const unsigned int face_no=0) const
const unsigned int first_line_index
const unsigned int dofs_per_hex
const BlockIndices block_indices_data
unsigned int get_first_face_quad_index(const unsigned int face_no=0) const
const unsigned int number_unique_faces
unsigned int max_dofs_per_quad() const
const BlockIndices & block_indices() const
const std::vector< unsigned int > first_quad_index_of_faces
const ReferenceCell reference_cell_kind
const unsigned int number_unique_quads
const std::vector< unsigned int > n_dofs_on_quad
const Conformity conforming_space
const unsigned int first_quad_index
unsigned int n_unique_faces() const
unsigned int n_dofs_per_quad(unsigned int face_no=0) const
const unsigned int dofs_per_vertex
const unsigned int dofs_per_cell
static constexpr unsigned int dimension
unsigned int n_dofs_per_hex() const
const unsigned int dofs_per_face_max
unsigned int get_first_hex_index() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
@ either_element_can_dominate
@ other_element_dominates
@ neither_element_dominates
Domination operator&(const Domination d1, const Domination d2)
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell &reference_cell)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
internal::GenericDoFsPerObject expand(const unsigned int dim, const std::vector< unsigned int > &dofs_per_object, const ::ReferenceCell reference_cell)
static const unsigned int invalid_unsigned_int
std::vector< std::vector< unsigned int > > object_index
std::vector< std::vector< unsigned int > > first_object_index_on_face
std::vector< std::vector< unsigned int > > dofs_per_object_inclusive
std::vector< std::vector< unsigned int > > dofs_per_object_exclusive
static GenericDoFsPerObject generate(const FiniteElementData< dim > &fe)