16 #ifndef dealii_fe_collection_h 17 #define dealii_fe_collection_h 19 #include <deal.II/base/config.h> 21 #include <deal.II/fe/component_mask.h> 22 #include <deal.II/fe/fe.h> 23 #include <deal.II/fe/fe_values_extractors.h> 27 DEAL_II_NAMESPACE_OPEN
53 template <
int dim,
int spacedim = dim>
75 template <
class... FETypes>
90 FECollection(
const FECollection<dim, spacedim> &) =
default;
95 FECollection(FECollection<dim, spacedim> &&) noexcept = default;
108 operator==(const
FECollection<dim, spacedim> &fe_collection) const;
115 operator!=(const
FECollection<dim, spacedim> &fe_collection) const;
136 operator[](const
unsigned int index) const;
486 template <
int dim,
int spacedim>
487 template <class... FETypes>
492 "Not all of the input arguments of this function " 493 "are derived from FiniteElement<dim,spacedim>!");
498 const auto fe_pointers = {&fes...};
499 for (
auto p : fe_pointers)
504 template <
int dim,
int spacedim>
512 template <
int dim,
int spacedim>
531 template <
int dim,
int spacedim>
536 const unsigned int n_elements =
size();
537 if (n_elements != fe_collection.size())
540 for (
unsigned int i = 0; i < n_elements; ++i)
549 template <
int dim,
int spacedim>
554 return !(*
this == fe_collection);
559 template <
int dim,
int spacedim>
570 template <
int dim,
int spacedim>
576 unsigned int max = 0;
586 template <
int dim,
int spacedim>
592 unsigned int max = 0;
602 template <
int dim,
int spacedim>
608 unsigned int max = 0;
618 template <
int dim,
int spacedim>
624 unsigned int max = 0;
634 template <
int dim,
int spacedim>
640 unsigned int max = 0;
650 template <
int dim,
int spacedim>
656 unsigned int max = 0;
665 template <
int dim,
int spacedim>
671 bool hp_constraints =
true;
676 return hp_constraints;
682 DEAL_II_NAMESPACE_CLOSE
ComponentMask component_mask(const FEValuesExtractors::Scalar &scalar) const
BlockMask block_mask(const FEValuesExtractors::Scalar &scalar) const
unsigned int max_dofs_per_cell() const
bool operator==(const FECollection< dim, spacedim > &fe_collection) const
unsigned int max_dofs_per_line() const
const FiniteElement< dim, spacedim > & operator[](const unsigned int index) const
unsigned int max_dofs_per_face() const
unsigned int size() const
static::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
unsigned int max_dofs_per_vertex() const
void push_back(const FiniteElement< dim, spacedim > &new_fe)
static::ExceptionBase & ExcNoFiniteElements()
#define Assert(cond, exc)
#define DeclException0(Exception0)
bool hp_constraints_are_implemented() const
unsigned int n_blocks() const
unsigned int max_dofs_per_hex() const
unsigned int n_components() const
bool operator!=(const FECollection< dim, spacedim > &fe_collection) const
unsigned int max_dofs_per_quad() const
std::vector< std::shared_ptr< const FiniteElement< dim, spacedim > > > finite_elements
unsigned int find_least_face_dominating_fe(const std::set< unsigned int > &fes) const
std::size_t memory_consumption() const