23 expand(
const std::vector<unsigned int> &dofs_per_object,
28 const unsigned int face_no = 0;
32 result.
object_index.resize(4, std::vector<unsigned int>(1));
36 const unsigned int dofs_per_vertex = dofs_per_object[0];
40 const unsigned int dofs_per_line = dofs_per_object[1];
44 const unsigned int dofs_per_quad = dim > 1 ? dofs_per_object[2] : 0;
48 const unsigned int dofs_per_hex = dim > 2 ? dofs_per_object[3] : 0;
53 const unsigned int first_line_index =
58 const unsigned int first_quad_index =
59 (first_line_index + cell_type.
n_lines() * dofs_per_line);
65 (dim == 2 ? 1 : (dim == 3 ? cell_type.
n_faces() : 0)) * dofs_per_quad);
82 (dim == 3 ? 1 : 0) * dofs_per_quad);
88 cell_type.
n_lines() * dofs_per_line +
89 (dim == 2 ? 1 : (dim == 3 ? cell_type.
n_faces() : 0)) * dofs_per_quad +
90 (dim == 3 ? 1 : 0) * dofs_per_hex);
148 const unsigned int n_components,
149 const unsigned int degree,
152 : reference_cell_kind(reference_cell)
153 , number_of_unique_2d_subobjects(
154 internal::number_unique_entries(
data.dofs_per_object_inclusive[2]))
155 , number_unique_faces(
156 internal::number_unique_entries(
data.dofs_per_object_inclusive[dim - 1]))
157 , dofs_per_vertex(
data.dofs_per_object_exclusive[0][0])
158 , dofs_per_line(
data.dofs_per_object_exclusive[1][0])
159 , n_dofs_on_quad(
data.dofs_per_object_exclusive[2])
160 , dofs_per_quad(n_dofs_on_quad[0])
162 *max_element(n_dofs_on_quad.
begin(), n_dofs_on_quad.
end()))
163 , dofs_per_hex(
data.dofs_per_object_exclusive[3][0])
164 , first_line_index(
data.object_index[1][0])
165 , first_index_of_quads(
data.object_index[2])
166 , first_quad_index(first_index_of_quads[0])
167 , first_hex_index(
data.object_index[3][0])
168 , first_line_index_of_faces(
data.first_object_index_on_face[1])
169 , first_face_line_index(first_line_index_of_faces[0])
170 , first_quad_index_of_faces(
data.first_object_index_on_face[2])
171 , first_face_quad_index(first_quad_index_of_faces[0])
172 , n_dofs_on_face(
data.dofs_per_object_inclusive[dim - 1])
173 , dofs_per_face(n_dofs_on_face[0])
175 *max_element(n_dofs_on_face.
begin(), n_dofs_on_face.
end()))
176 , dofs_per_cell(
data.dofs_per_object_inclusive[dim][0])
177 , components(n_components)
179 , conforming_space(conformity)
180 , block_indices_data(block_indices.
size() == 0 ?
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())