26 const std::vector<unsigned int> &dofs_per_object,
27 const ::ReferenceCell cell_type)
31 const unsigned int face_no = 0;
35 result.
object_index.resize(4, std::vector<unsigned int>(1));
39 const unsigned int dofs_per_vertex = dofs_per_object[0];
43 const unsigned int dofs_per_line = dofs_per_object[1];
47 const unsigned int dofs_per_quad = dim > 1 ? dofs_per_object[2] : 0;
51 const unsigned int dofs_per_hex = dim > 2 ? dofs_per_object[3] : 0;
56 const unsigned int first_line_index =
57 (cell_type.n_vertices() * dofs_per_vertex);
61 const unsigned int first_quad_index =
62 (first_line_index + cell_type.n_lines() * dofs_per_line);
68 (dim == 2 ? 1 : (dim == 3 ? cell_type.n_faces() : 0)) * dofs_per_quad);
72 (cell_type.face_reference_cell(face_no).n_vertices() * dofs_per_vertex);
76 ((dim == 3 ? cell_type.face_reference_cell(face_no).n_vertices() *
78 cell_type.n_vertices() * dofs_per_vertex) +
79 cell_type.face_reference_cell(face_no).n_lines() * dofs_per_line);
83 (cell_type.face_reference_cell(face_no).n_vertices() * dofs_per_vertex +
84 cell_type.face_reference_cell(face_no).n_lines() * dofs_per_line +
85 (dim == 3 ? 1 : 0) * dofs_per_quad);
90 (cell_type.n_vertices() * dofs_per_vertex +
91 cell_type.n_lines() * dofs_per_line +
92 (dim == 2 ? 1 : (dim == 3 ? cell_type.n_faces() : 0)) * dofs_per_quad +
93 (dim == 3 ? 1 : 0) * dofs_per_hex);
103 const std::vector<unsigned int> &dofs_per_object,
104 const unsigned int n_components,
105 const unsigned int degree,
122 const std::vector<unsigned int> &dofs_per_object,
124 const unsigned int n_components,
125 const unsigned int degree,
140 const unsigned int n_components,
141 const unsigned int degree,
145 , number_unique_quads(data.dofs_per_object_inclusive[2].size())
146 , number_unique_faces(data.dofs_per_object_inclusive[dim - 1].size())
147 , dofs_per_vertex(data.dofs_per_object_exclusive[0][0])
148 , dofs_per_line(data.dofs_per_object_exclusive[1][0])
149 , n_dofs_on_quad(dim > 1 ? data.dofs_per_object_exclusive[2] :
150 std::vector<unsigned
int>{0})
151 , dofs_per_quad(n_dofs_on_quad[0])
153 *max_element(n_dofs_on_quad.begin(), n_dofs_on_quad.end()))
154 , dofs_per_hex(dim > 2 ? data.dofs_per_object_exclusive[3][0] : 0)
155 , first_line_index(data.object_index[1][0])
156 , first_index_of_quads(data.object_index[2])
157 , first_quad_index(first_index_of_quads[0])
158 , first_hex_index(data.object_index[3][0])
159 , first_line_index_of_faces(data.first_object_index_on_face[1])
160 , first_face_line_index(first_line_index_of_faces[0])
161 , first_quad_index_of_faces(data.first_object_index_on_face[2])
162 , first_face_quad_index(first_quad_index_of_faces[0])
163 , n_dofs_on_face(data.dofs_per_object_inclusive[dim - 1])
164 , dofs_per_face(n_dofs_on_face[0])
166 *max_element(n_dofs_on_face.begin(), n_dofs_on_face.end()))
167 , dofs_per_cell(data.dofs_per_object_inclusive[dim][0])
168 , components(n_components)
170 , conforming_space(conformity)
171 , block_indices_data(block_indices.size() == 0 ?
const unsigned int dofs_per_quad
const unsigned int components
const unsigned int degree
bool operator==(const FiniteElementData &) const
const unsigned int dofs_per_line
const unsigned int dofs_per_hex
const Conformity conforming_space
const unsigned int dofs_per_vertex
FiniteElementData(const std::vector< unsigned int > &dofs_per_object, const unsigned int n_components, const unsigned int degree, const Conformity conformity=unknown, const BlockIndices &block_indices=BlockIndices())
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
graph_traits< Graph >::vertex_descriptor Vertex
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell &reference_cell)
constexpr const ReferenceCell Quadrilateral
constexpr const ReferenceCell Hexahedron
constexpr const ReferenceCell Line
internal::GenericDoFsPerObject expand(const unsigned int dim, const std::vector< unsigned int > &dofs_per_object, const ::ReferenceCell reference_cell)
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