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>
76 const unsigned int fe_index)
78 return ((fe_index + 1) < fe_collection.
size()) ? fe_index + 1 :
91 const unsigned int fe_index)
94 return (fe_index > 0) ? fe_index - 1 : fe_index;
119 template <
class... FETypes>
146 std::is_nothrow_move_constructible<
148 &&
std::is_nothrow_move_constructible<
std::function<
150 const
unsigned int)>>::value) = default;
163 operator==(const
FECollection<dim, spacedim> &fe_collection) const;
170 operator!=(const
FECollection<dim, spacedim> &fe_collection) const;
191 operator[](const
unsigned int index) const;
346 DEAL_II_DEPRECATED
unsigned int 372 const
unsigned int codim = 0) const;
397 const
unsigned int codim = 0) const;
433 const
unsigned int codim = 0) const;
469 const
unsigned int codim = 0) const;
496 const
unsigned int codim = 0) const;
522 const
unsigned int codim = 0) const;
539 const
unsigned int)> &next,
540 const
std::function<
unsigned int(
542 const
unsigned int)> &prev);
805 template <
int dim,
int spacedim>
806 template <class... FETypes>
811 "Not all of the input arguments of this function " 812 "are derived from FiniteElement<dim,spacedim>!");
817 const auto fe_pointers = {&fes...};
818 for (
const auto p : fe_pointers)
823 template <
int dim,
int spacedim>
831 template <
int dim,
int spacedim>
850 template <
int dim,
int spacedim>
855 const unsigned int n_elements =
size();
856 if (n_elements != fe_collection.size())
859 for (
unsigned int i = 0; i < n_elements; ++i)
868 template <
int dim,
int spacedim>
873 return !(*
this == fe_collection);
878 template <
int dim,
int spacedim>
889 template <
int dim,
int spacedim>
895 unsigned int max = 0;
905 template <
int dim,
int spacedim>
911 unsigned int max = 0;
921 template <
int dim,
int spacedim>
927 unsigned int max = 0;
937 template <
int dim,
int spacedim>
943 unsigned int max = 0;
953 template <
int dim,
int spacedim>
959 unsigned int max = 0;
969 template <
int dim,
int spacedim>
975 unsigned int max = 0;
984 template <
int dim,
int spacedim>
990 bool hp_constraints =
true;
995 return hp_constraints;
1001 DEAL_II_NAMESPACE_CLOSE
std::function< unsigned int(const typename hp::FECollection< dim, spacedim > &, const unsigned int)> hierarchy_prev
unsigned int find_dominated_fe_extended(const std::set< unsigned int > &fes, const unsigned int codim=0) const
static unsigned int next_index(const typename hp::FECollection< dim, spacedim > &fe_collection, const unsigned int fe_index)
ComponentMask component_mask(const FEValuesExtractors::Scalar &scalar) const
std::size_t memory_consumption() const
unsigned int find_least_face_dominating_fe(const std::set< unsigned int > &fes) const
unsigned int find_dominating_fe(const std::set< unsigned int > &fes, const unsigned int codim=0) const
bool operator!=(const FECollection< dim, spacedim > &fe_collection) const
bool operator==(const FECollection< dim, spacedim > &fe_collection) const
unsigned int size() const
unsigned int next_in_hierarchy(const unsigned int fe_index) const
static ::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
unsigned int find_dominating_fe_extended(const std::set< unsigned int > &fes, const unsigned int codim=0) const
LinearAlgebra::distributed::Vector< Number > Vector
std::function< unsigned int(const typename hp::FECollection< dim, spacedim > &, const unsigned int)> hierarchy_next
unsigned int n_blocks() const
BlockMask block_mask(const FEValuesExtractors::Scalar &scalar) const
unsigned int max_dofs_per_cell() const
void push_back(const FiniteElement< dim, spacedim > &new_fe)
bool hp_constraints_are_implemented() const
static ::ExceptionBase & ExcNoFiniteElements()
unsigned int max_dofs_per_hex() const
#define Assert(cond, exc)
#define DeclException0(Exception0)
unsigned int max_dofs_per_line() const
void set_hierarchy(const std::function< unsigned int(const typename hp::FECollection< dim, spacedim > &, const unsigned int)> &next, const std::function< unsigned int(const typename hp::FECollection< dim, spacedim > &, const unsigned int)> &prev)
static unsigned int previous_index(const typename hp::FECollection< dim, spacedim > &fe_collection, const unsigned int fe_index)
unsigned int max_dofs_per_face() const
__global__ void set(Number *val, const Number s, const size_type N)
unsigned int max_dofs_per_vertex() const
std::set< unsigned int > find_common_fes(const std::set< unsigned int > &fes, const unsigned int codim=0) const
void set_default_hierarchy()
std::vector< std::shared_ptr< const FiniteElement< dim, spacedim > > > finite_elements
std::set< unsigned int > find_enclosing_fes(const std::set< unsigned int > &fes, const unsigned int codim=0) const
unsigned int find_dominated_fe(const std::set< unsigned int > &fes, const unsigned int codim=0) const
unsigned int n_components() const
const FiniteElement< dim, spacedim > & operator[](const unsigned int index) const
unsigned int max_dofs_per_quad() const
unsigned int previous_in_hierarchy(const unsigned int fe_index) const