15#ifndef dealii_fe_data_h
16#define dealii_fe_data_h
506 const unsigned int degree,
517 const unsigned int degree,
530 const unsigned int degree,
626 template <
int structdim>
714 expand(
const unsigned int dim,
715 const std::vector<unsigned int> &dofs_per_object,
779 return reference_cell_kind;
788 return number_of_unique_2d_subobjects;
797 return number_unique_faces;
806 return dofs_per_vertex;
815 return dofs_per_line;
824 return n_dofs_on_quad[n_dofs_on_quad.size() == 1 ? 0 : face_no];
833 return dofs_per_quad_max;
850 unsigned int child_no)
const
854 return n_dofs_on_face[n_dofs_on_face.size() == 1 ? 0 : face_no];
863 return dofs_per_face_max;
872 return dofs_per_cell;
878template <
int structdim>
885 return n_dofs_per_vertex();
887 return n_dofs_per_line();
889 return n_dofs_per_quad((structdim == 2 && dim == 3) ? i : 0);
891 return n_dofs_per_hex();
913 return block_indices_data;
922 return block_indices_data.
size();
939 return ((space & conforming_space) == space);
948 return first_line_index;
955 if (first_index_of_quads.size() == 1)
956 return first_index_of_quads[0] + quad_no * n_dofs_per_quad(0);
958 return first_index_of_quads[quad_no];
965 return first_hex_index;
971 const unsigned int face_no)
const
973 return first_line_index_of_faces[first_line_index_of_faces.size() == 1 ?
981 const unsigned int face_no)
const
983 return first_quad_index_of_faces[first_quad_index_of_faces.size() == 1 ?
1000 unsigned int counter = 0;
1004 const auto c = fe.template n_dofs_per_object<0>(v);
1016 const auto c = fe.template n_dofs_per_object<1>(l);
1020 c + 2 * fe.template n_dofs_per_object<0>());
1029 const auto c = fe.template n_dofs_per_object<2>(f);
1039 const auto c = fe.template n_dofs_per_object<dim>();
1048 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
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 n_unique_2d_subobjects() const
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_of_unique_2d_subobjects
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 DEAL_II_ASSERT_UNREACHABLE()
@ 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)