38template <
int dim,
int spacedim>
45template <
int dim,
int spacedim>
54template <
int dim,
int spacedim>
57 const std::vector<bool> &r_i_a_f,
58 const std::vector<ComponentMask> &nonzero_c)
63 std::make_pair(
std::make_pair(0
U, 0
U), 0
U))
73 nonzero_c.
size() == 1 ?
80 return n_components != 1U;
81 }) == n_nonzero_components_table.end())
83 Assert(restriction_is_additive_flags.size() == this->n_dofs_per_cell(),
85 this->n_dofs_per_cell()));
87 for (
unsigned int i = 0; i < nonzero_components.size(); ++i)
89 Assert(nonzero_components[i].
size() == this->n_components(),
91 Assert(nonzero_components[i].n_selected_components() >= 1,
94 Assert(n_nonzero_components_table[i] <= this->n_components(),
101 if (this->is_primitive())
103 system_to_component_table.resize(this->n_dofs_per_cell());
104 for (
unsigned int j = 0; j < this->n_dofs_per_cell(); ++j)
105 system_to_component_table[j] = std::pair<unsigned, unsigned>(0, j);
107 face_system_to_component_table.resize(this->n_unique_faces());
108 for (
unsigned int f = 0; f < this->n_unique_faces(); ++f)
110 face_system_to_component_table[f].resize(this->n_dofs_per_face(f));
111 for (
unsigned int j = 0; j < this->n_dofs_per_face(f); ++j)
112 face_system_to_component_table[f][j] =
113 std::pair<unsigned, unsigned>(0, j);
117 for (
unsigned int j = 0; j < this->n_dofs_per_cell(); ++j)
118 system_to_base_table[j] = std::make_pair(std::make_pair(0U, 0U), j);
120 face_system_to_base_table.resize(this->n_unique_faces());
121 for (
unsigned int f = 0; f < this->n_unique_faces(); ++f)
123 face_system_to_base_table[f].resize(this->n_dofs_per_face(f));
124 for (
unsigned int j = 0; j < this->n_dofs_per_face(f); ++j)
125 face_system_to_base_table[f][j] =
126 std::make_pair(std::make_pair(0U, 0U), j);
130 base_to_block_indices.reinit(1, 1);
136 for (
const unsigned int ref_case :
140 prolongation[ref_case - 1].resize(this->
reference_cell().n_children(
143 restriction[ref_case - 1].resize(this->
reference_cell().n_children(
151 adjust_quad_dof_index_for_face_orientation_table.resize(
152 this->n_unique_2d_subobjects());
154 for (
unsigned int f = 0; f < this->n_unique_2d_subobjects(); ++f)
156 adjust_quad_dof_index_for_face_orientation_table[f] =
159 adjust_quad_dof_index_for_face_orientation_table[f].fill(0);
163 unit_face_support_points.resize(this->n_unique_faces());
164 generalized_face_support_points.resize(this->n_unique_faces());
169template <
int dim,
int spacedim>
170std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
unsigned int>
173 return {this->clone(), multiplicity};
178template <
int dim,
int spacedim>
183 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
189template <
int dim,
int spacedim>
193 const unsigned int)
const
195 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
201template <
int dim,
int spacedim>
206 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
212template <
int dim,
int spacedim>
216 const unsigned int)
const
218 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
224template <
int dim,
int spacedim>
229 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
235template <
int dim,
int spacedim>
240 const unsigned int)
const
242 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
248template <
int dim,
int spacedim>
253 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
259template <
int dim,
int spacedim>
264 const unsigned int)
const
266 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
272template <
int dim,
int spacedim>
277 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
283template <
int dim,
int spacedim>
288 const unsigned int)
const
290 AssertThrow(
false, ExcUnitShapeValuesDoNotExist());
295template <
int dim,
int spacedim>
298 const bool isotropic_restriction_only,
299 const bool isotropic_prolongation_only)
301 for (
const unsigned int ref_case :
305 const unsigned int nc =
308 for (
unsigned int i = 0; i < nc; ++i)
310 if (this->restriction[ref_case - 1][i].m() !=
311 this->n_dofs_per_cell() &&
312 (!isotropic_restriction_only ||
314 this->restriction[ref_case - 1][i].reinit(
315 this->n_dofs_per_cell(), this->n_dofs_per_cell());
316 if (this->prolongation[ref_case - 1][i].m() !=
317 this->n_dofs_per_cell() &&
318 (!isotropic_prolongation_only ||
320 this->prolongation[ref_case - 1][i].reinit(
321 this->n_dofs_per_cell(), this->n_dofs_per_cell());
327template <
int dim,
int spacedim>
330 const unsigned int child,
337 "Restriction matrices are only available for refined cells!"));
344 Assert(restriction[refinement_case - 1][child].n() == this->n_dofs_per_cell(),
345 ExcProjectionVoid());
346 return restriction[refinement_case - 1][child];
351template <
int dim,
int spacedim>
354 const unsigned int child,
361 "Prolongation matrices are only available for refined cells!"));
370 Assert(prolongation[refinement_case - 1][child].n() ==
371 this->n_dofs_per_cell(),
373 return prolongation[refinement_case - 1][child];
378template <
int dim,
int spacedim>
381 const unsigned int index)
const
385 return first_block_of_base(component_to_base_table[index].
first.first) +
386 component_to_base_table[
index].second;
390template <
int dim,
int spacedim>
402 std::vector<bool>
mask(this->n_components(),
false);
408template <
int dim,
int spacedim>
414 this->n_components());
421 std::vector<bool>
mask(this->n_components(),
false);
430template <
int dim,
int spacedim>
437 this->n_components());
444 std::vector<bool>
mask(this->n_components(),
false);
455template <
int dim,
int spacedim>
466 std::vector<bool> component_mask(this->n_components(),
false);
467 for (
unsigned int c = 0; c < this->n_components(); ++c)
468 if (block_mask[component_to_block_index(c)] ==
true)
469 component_mask[c] =
true;
476template <
int dim,
int spacedim>
483 return block_mask(component_mask(scalar));
487template <
int dim,
int spacedim>
494 return block_mask(component_mask(vector));
498template <
int dim,
int spacedim>
505 return block_mask(component_mask(sym_tensor));
510template <
int dim,
int spacedim>
531 std::vector<bool> block_mask(this->
n_blocks(),
false);
532 for (
unsigned int c = 0; c < this->n_components();)
534 const unsigned int block = component_to_block_index(c);
535 if (component_mask[c] ==
true)
536 block_mask[block] =
true;
542 while ((c < this->n_components()) &&
543 (component_to_block_index(c) == block))
545 Assert(component_mask[c] == block_mask[block],
547 "The component mask argument given to this function "
548 "is not a mask where the individual components belonging "
549 "to one block of the finite element are either all "
550 "selected or not selected. You can't call this function "
551 "with a component mask that splits blocks."));
562template <
int dim,
int spacedim>
565 const unsigned int face_index,
566 const unsigned int face,
577 Assert((this->n_dofs_per_line() <= 1) && (this->n_dofs_per_quad(face) <= 1),
579 "The function in this base class can not handle this case. "
580 "Rather, the derived class you are using must provide "
581 "an overloaded version but apparently hasn't done so. See "
582 "the documentation of this function for more information."));
586 if (face_index < this->get_first_face_line_index(face))
591 const unsigned int face_vertex = face_index / this->n_dofs_per_vertex();
592 const unsigned int dof_index_on_vertex =
593 face_index % this->n_dofs_per_vertex();
598 face, face_vertex, combined_orientation) *
599 this->n_dofs_per_vertex() +
600 dof_index_on_vertex);
602 else if (face_index < this->get_first_face_quad_index(face))
607 const unsigned int index =
608 face_index - this->get_first_face_line_index(face);
610 const unsigned int face_line =
index / this->n_dofs_per_line();
611 const unsigned int dof_index_on_line =
index % this->n_dofs_per_line();
613 return (this->get_first_line_index() +
616 combined_orientation) *
617 this->n_dofs_per_line() +
626 const unsigned int index =
627 face_index - this->get_first_face_quad_index(face);
629 return (this->get_first_quad_index(face) + index);
635template <
int dim,
int spacedim>
639 for (
const unsigned int ref_case :
648 Assert((prolongation[ref_case - 1][c].m() ==
649 this->n_dofs_per_cell()) ||
650 (prolongation[ref_case - 1][c].m() == 0),
652 Assert((prolongation[ref_case - 1][c].n() ==
653 this->n_dofs_per_cell()) ||
654 (prolongation[ref_case - 1][c].n() == 0),
656 if ((prolongation[ref_case - 1][c].m() == 0) ||
657 (prolongation[ref_case - 1][c].n() == 0))
665template <
int dim,
int spacedim>
669 for (
const unsigned int ref_case :
678 Assert((restriction[ref_case - 1][c].m() ==
679 this->n_dofs_per_cell()) ||
680 (restriction[ref_case - 1][c].m() == 0),
682 Assert((restriction[ref_case - 1][c].n() ==
683 this->n_dofs_per_cell()) ||
684 (restriction[ref_case - 1][c].n() == 0),
686 if ((restriction[ref_case - 1][c].m() == 0) ||
687 (restriction[ref_case - 1][c].n() == 0))
695template <
int dim,
int spacedim>
702 for (
unsigned int c = 0;
708 Assert((prolongation[ref_case - 1][c].m() == this->n_dofs_per_cell()) ||
709 (prolongation[ref_case - 1][c].m() == 0),
711 Assert((prolongation[ref_case - 1][c].n() == this->n_dofs_per_cell()) ||
712 (prolongation[ref_case - 1][c].n() == 0),
714 if ((prolongation[ref_case - 1][c].m() == 0) ||
715 (prolongation[ref_case - 1][c].n() == 0))
723template <
int dim,
int spacedim>
730 for (
unsigned int c = 0;
736 Assert((restriction[ref_case - 1][c].m() == this->n_dofs_per_cell()) ||
737 (restriction[ref_case - 1][c].m() == 0),
739 Assert((restriction[ref_case - 1][c].n() == this->n_dofs_per_cell()) ||
740 (restriction[ref_case - 1][c].n() == 0),
742 if ((restriction[ref_case - 1][c].m() == 0) ||
743 (restriction[ref_case - 1][c].n() == 0))
751template <
int dim,
int spacedim>
758 unsigned int n_dofs_on_faces = 0;
761 n_dofs_on_faces += this->n_dofs_per_face(face_no);
763 return (n_dofs_on_faces == 0) || (interface_constraints.m() != 0);
771template <
int dim,
int spacedim>
780template <
int dim,
int spacedim>
788 const unsigned int face_no = 0;
791 ExcMessage(
"Constraints for this element are only implemented "
792 "for the case that faces are refined isotropically "
793 "(which is always the case in 2d, and in 3d requires "
794 "that the neighboring cell of a coarse cell presents "
795 "exactly four children on the common face)."));
796 Assert((this->n_dofs_per_face(face_no) == 0) ||
797 (interface_constraints.m() != 0),
798 ExcMessage(
"The finite element for which you try to obtain "
799 "hanging node constraints does not appear to "
803 Assert((interface_constraints.m() == 0) && (interface_constraints.n() == 0),
804 ExcWrongInterfaceMatrixSize(interface_constraints.m(),
805 interface_constraints.n()));
807 return interface_constraints;
812template <
int dim,
int spacedim>
819 const unsigned int face_no = 0;
830 return {this->n_dofs_per_vertex() + 2 * this->n_dofs_per_line(),
831 this->n_dofs_per_face(face_no)};
840 5 * this->n_dofs_per_vertex() +
842 12 * this->n_dofs_per_line() +
844 4 * this->n_dofs_per_quad(face_no),
845 this->n_dofs_per_face(face_no)};
849 3 * this->n_dofs_per_vertex() +
850 9 * this->n_dofs_per_line() +
852 4 * this->n_dofs_per_quad(face_no),
853 this->n_dofs_per_face(face_no)};
865template <
int dim,
int spacedim>
881template <
int dim,
int spacedim>
886 const unsigned int)
const
898template <
int dim,
int spacedim>
904 const unsigned int)
const
916template <
int dim,
int spacedim>
917std::vector<std::pair<unsigned int, unsigned int>>
922 return std::vector<std::pair<unsigned int, unsigned int>>();
927template <
int dim,
int spacedim>
928std::vector<std::pair<unsigned int, unsigned int>>
933 return std::vector<std::pair<unsigned int, unsigned int>>();
938template <
int dim,
int spacedim>
939std::vector<std::pair<unsigned int, unsigned int>>
942 const unsigned int)
const
945 return std::vector<std::pair<unsigned int, unsigned int>>();
950template <
int dim,
int spacedim>
954 const unsigned int)
const
962template <
int dim,
int spacedim>
969 return ((
typeid(*
this) ==
typeid(f)) && (this->get_name() == f.
get_name()) &&
977template <
int dim,
int spacedim>
982 return !(*
this == f);
987template <
int dim,
int spacedim>
988const std::vector<Point<dim>> &
1003template <
int dim,
int spacedim>
1007 if (this->dofs_per_cell > 0)
1023template <
int dim,
int spacedim>
1024const std::vector<Point<dim>> &
1029 return ((generalized_support_points.empty()) ? unit_support_points :
1030 generalized_support_points);
1035template <
int dim,
int spacedim>
1039 if (this->dofs_per_cell > 0)
1040 return (get_generalized_support_points().
size() != 0);
1054template <
int dim,
int spacedim>
1060 ExcFEHasNoSupportPoints());
1066template <
int dim,
int spacedim>
1067const std::vector<
Point<dim - 1>> &
1069 const unsigned int face_no)
const
1075 Assert((unit_face_support_points[this->n_unique_faces() == 1 ? 0 : face_no]
1077 (unit_face_support_points[this->n_unique_faces() == 1 ? 0 : face_no]
1078 .
size() == this->n_dofs_per_face(face_no)),
1080 return unit_face_support_points[this->n_unique_faces() == 1 ? 0 : face_no];
1085template <
int dim,
int spacedim>
1088 const unsigned int face_no)
const
1090 const unsigned int face_index = this->n_unique_faces() == 1 ? 0 : face_no;
1091 if (this->n_dofs_per_face(face_index) > 0)
1092 return (unit_face_support_points[face_index].
size() != 0);
1106template <
int dim,
int spacedim>
1109 const unsigned int index,
1110 const unsigned int face_no)
const
1113 Assert(unit_face_support_points[this->n_unique_faces() == 1 ? 0 : face_no]
1114 .
size() == this->n_dofs_per_face(face_no),
1115 ExcFEHasNoSupportPoints());
1116 return unit_face_support_points[this->n_unique_faces() == 1 ? 0 : face_no]
1122template <
int dim,
int spacedim>
1125 const unsigned int)
const
1132template <
int dim,
int spacedim>
1138 const unsigned int n_total_components = this->n_components();
1139 Assert((n_total_components ==
mask.size()) || (
mask.size() == 0),
1140 ExcMessage(
"The given ComponentMask has the wrong size."));
1142 const unsigned int n_selected =
1143 mask.n_selected_components(n_total_components);
1145 ExcMessage(
"You need at least one selected component."));
1147 const unsigned int first_selected =
1148 mask.first_selected_component(n_total_components);
1153 for (
unsigned int c = 0; c < n_total_components; ++c)
1154 Assert((c < first_selected && (!mask[c])) ||
1155 (c >= first_selected && c < first_selected + n_selected &&
1157 (c >= first_selected + n_selected && !mask[c]),
1159 "The given ComponentMask is not contiguous, but "
1160 "any sub-element of the current element must "
1161 "necessarily occupy a contiguous set of components."));
1164 return get_sub_fe(first_selected, n_selected);
1169template <
int dim,
int spacedim>
1172 const unsigned int first_component,
1173 const unsigned int n_selected_components)
const
1177 Assert(first_component == 0 && n_selected_components == this->n_components(),
1179 "You can only select a whole FiniteElement, not a part of one."));
1186template <
int dim,
int spacedim>
1187std::pair<Table<2, bool>, std::vector<unsigned int>>
1191 return std::pair<Table<2, bool>, std::vector<unsigned int>>(
1193 std::vector<unsigned int>(this->n_components()));
1198template <
int dim,
int spacedim>
1203 std::vector<double> &)
const
1205 Assert(has_generalized_support_points(),
1206 ExcMessage(
"The element for which you are calling the current "
1207 "function does not have generalized support points (see "
1208 "the glossary for a definition of generalized support "
1209 "points). Consequently, the current function can not "
1210 "be defined and is not implemented by the element."));
1216template <
int dim,
int spacedim>
1237template <
int dim,
int spacedim>
1238std::vector<unsigned int>
1240 const std::vector<ComponentMask> &nonzero_components)
1242 std::vector<unsigned int> retval(nonzero_components.size());
1243 for (
unsigned int i = 0; i < nonzero_components.size(); ++i)
1244 retval[i] = nonzero_components[i].n_selected_components();
1253template <
int dim,
int spacedim>
1254std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>
1263 return get_data(flags,
1272template <
int dim,
int spacedim>
1273std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>
1282 return get_data(flags,
1291template <
int dim,
int spacedim>
1295 const unsigned int face_no,
1308 fill_fe_face_values(cell,
1320template <
int dim,
int spacedim>
1324 const unsigned int ,
1338 ExcMessage(
"Use of a deprecated interface, please implement "
1339 "fill_fe_face_values taking a hp::QCollection argument"));
1345template <
int dim,
int spacedim>
1346std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>
1355 return get_data(flags,
1364template <
int dim,
int spacedim>
1378#include "fe/fe.inst"
* * for(const auto &cell :triangulation.active_cell_iterators())
bool represents_the_all_selected_mask() const
unsigned int size() const
bool represents_the_all_selected_mask() const
unsigned int size() const
const unsigned int components
unsigned int n_dofs_per_cell() const
unsigned int n_dofs_per_line() const
unsigned int n_components() const
virtual std::size_t memory_consumption() const
bool constraints_are_implemented(const ::internal::SubfaceCase< dim > &subface_case=::internal::SubfaceCase< dim >::case_isotropic) const
bool isotropic_prolongation_is_implemented() const
virtual std::string get_name() const =0
virtual Point< dim > unit_support_point(const unsigned int index) const
virtual FiniteElementDomination::Domination compare_for_domination(const FiniteElement< dim, spacedim > &fe_other, const unsigned int codim=0) const
const std::vector< unsigned int > n_nonzero_components_table
virtual const FullMatrix< double > & get_restriction_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const
bool prolongation_is_implemented() const
virtual std::pair< Table< 2, bool >, std::vector< unsigned int > > get_constant_modes() const
virtual const FiniteElement< dim, spacedim > & base_element(const unsigned int index) const
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const
virtual std::unique_ptr< InternalDataBase > get_face_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const hp::QCollection< dim - 1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
virtual Point< dim - 1 > unit_face_support_point(const unsigned int index, const unsigned int face_no=0) const
static std::vector< unsigned int > compute_n_nonzero_components(const std::vector< ComponentMask > &nonzero_components)
virtual std::unique_ptr< InternalDataBase > get_subface_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim - 1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
bool has_face_support_points(const unsigned int face_no=0) const
const bool cached_primitivity
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_quad_dof_identities(const FiniteElement< dim, spacedim > &fe_other, const unsigned int face_no=0) const
ComponentMask component_mask(const FEValuesExtractors::Scalar &scalar) const
bool operator!=(const FiniteElement< dim, spacedim > &) const
bool has_support_points() const
bool has_generalized_support_points() const
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const
virtual bool operator==(const FiniteElement< dim, spacedim > &fe) const
const std::vector< Point< dim > > & get_unit_support_points() const
virtual void fill_fe_face_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const hp::QCollection< dim - 1 > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
void reinit_restriction_and_prolongation_matrices(const bool isotropic_restriction_only=false, const bool isotropic_prolongation_only=false)
const std::vector< Point< dim - 1 > > & get_unit_face_support_points(const unsigned int face_no=0) const
bool isotropic_restriction_is_implemented() const
std::vector< int > adjust_line_dof_index_for_line_orientation_table
virtual bool has_support_on_face(const unsigned int shape_index, const unsigned int face_index) const
const FiniteElement< dim, spacedim > & get_sub_fe(const ComponentMask &mask) const
virtual Tensor< 4, dim > shape_4th_derivative_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual double shape_value_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual void get_subface_interpolation_matrix(const FiniteElement< dim, spacedim > &source, const unsigned int subface, FullMatrix< double > &matrix, const unsigned int face_no=0) const
unsigned int component_to_block_index(const unsigned int component) const
BlockMask block_mask(const FEValuesExtractors::Scalar &scalar) const
virtual void get_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) const
virtual Tensor< 3, dim > shape_3rd_derivative(const unsigned int i, const Point< dim > &p) const
std::vector< std::pair< std::pair< unsigned int, unsigned int >, unsigned int > > system_to_base_table
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_line_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
virtual void convert_generalized_support_point_values_to_dof_values(const std::vector< Vector< double > > &support_point_values, std::vector< double > &nodal_values) const
FiniteElement(const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< ComponentMask > &nonzero_components)
virtual Tensor< 3, dim > shape_3rd_derivative_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
const FullMatrix< double > & constraints(const ::internal::SubfaceCase< dim > &subface_case=::internal::SubfaceCase< dim >::case_isotropic) const
std::pair< std::unique_ptr< FiniteElement< dim, spacedim > >, unsigned int > operator^(const unsigned int multiplicity) const
const std::vector< bool > restriction_is_additive_flags
virtual unsigned int face_to_cell_index(const unsigned int face_dof_index, const unsigned int face, const types::geometric_orientation combined_orientation=numbers::default_geometric_orientation) const
std::vector< std::pair< std::pair< unsigned int, unsigned int >, unsigned int > > component_to_base_table
TableIndices< 2 > interface_constraints_size() const
virtual Tensor< 1, dim > shape_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
bool restriction_is_implemented() const
FullMatrix< double > interface_constraints
const std::vector< Point< dim > > & get_generalized_support_points() const
virtual Tensor< 2, dim > shape_grad_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual const FullMatrix< double > & get_prolongation_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const
virtual double shape_value(const unsigned int i, const Point< dim > &p) const
virtual void get_face_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix, const unsigned int face_no=0) const
virtual std::size_t memory_consumption() const
virtual Tensor< 4, dim > shape_4th_derivative(const unsigned int i, const Point< dim > &p) const
const std::vector< ComponentMask > nonzero_components
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_vertex_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
virtual bool hp_constraints_are_implemented() const
Abstract base class for mapping classes.
Class which transforms dim - 1-dimensional quadrature rules to dim-dimensional face quadratures.
unsigned int size() const
#define DEAL_II_NAMESPACE_OPEN
constexpr bool running_in_debug_mode()
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_ASSERT_UNREACHABLE()
#define DEAL_II_NOT_IMPLEMENTED()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
@ update_default
No update.
@ neither_element_dominates
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell< dim > &reference_cell)
std::enable_if_t< IsBlockVector< VectorType >::value, unsigned int > n_blocks(const VectorType &vector)
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)
* * if(update_pressure &update_flags) * compute_pressure(constitutive_request
* * * * std::vector< Number > ThermoPlasticMaterial< dim, ViscoplasticYieldLaw, Number >::get_state_parameters const
constexpr ReferenceCell< 2 > Quadrilateral
constexpr ReferenceCell< 2 > Triangle
std::vector< Point< dim > > unit_support_points(const std::vector< Point< 1 > > &line_support_points, const std::vector< unsigned int > &renumbering)
constexpr unsigned int invalid_unsigned_int
constexpr types::geometric_orientation default_geometric_orientation
std::uint8_t geometric_orientation