16 #ifndef dealii_fe_collection_h 17 #define dealii_fe_collection_h 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;
377 std::set<unsigned int>
379 const unsigned int codim = 0)
const;
402 std::set<unsigned int>
404 const unsigned int codim = 0)
const;
440 const unsigned int codim = 0)
const;
476 const unsigned int codim = 0)
const;
503 const unsigned int codim = 0)
const;
529 const unsigned int codim = 0)
const;
546 const unsigned int)> &next,
547 const std::function<
unsigned int(
549 const unsigned int)> &prev);
797 "No FiniteElement has been found in your FECollection that is " 798 "dominated by all children of a cell you are trying to coarsen!");
808 std::vector<std::shared_ptr<const FiniteElement<dim, spacedim>>>
815 std::function<unsigned int(const typename hp::FECollection<dim, spacedim> &,
823 std::function<unsigned int(const typename hp::FECollection<dim, spacedim> &,
832 template <
int dim,
int spacedim>
833 template <
class... FETypes>
838 "Not all of the input arguments of this function " 839 "are derived from FiniteElement<dim,spacedim>!");
844 const auto fe_pointers = {
846 for (
const auto p : fe_pointers)
851 template <
int dim,
int spacedim>
859 template <
int dim,
int spacedim>
878 template <
int dim,
int spacedim>
883 const unsigned int n_elements =
size();
884 if (n_elements != fe_collection.
size())
887 for (
unsigned int i = 0; i < n_elements; ++i)
896 template <
int dim,
int spacedim>
901 return !(*
this == fe_collection);
906 template <
int dim,
int spacedim>
916 template <
int dim,
int spacedim>
922 unsigned int max = 0;
931 template <
int dim,
int spacedim>
937 unsigned int max = 0;
947 template <
int dim,
int spacedim>
953 unsigned int max = 0;
963 template <
int dim,
int spacedim>
969 unsigned int max = 0;
979 template <
int dim,
int spacedim>
985 unsigned int max = 0;
995 template <
int dim,
int spacedim>
1001 unsigned int max = 0;
1011 template <
int dim,
int spacedim>
1017 unsigned int max = 0;
1026 template <
int dim,
int spacedim>
1034 [](
const std::shared_ptr<const FiniteElement<dim, spacedim>> &fe) {
1035 return fe->hp_constraints_are_implemented();
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
#define AssertIndexRange(index, range)
unsigned int size() const
unsigned int next_in_hierarchy(const unsigned int fe_index) const
unsigned int find_dominating_fe_extended(const std::set< unsigned int > &fes, const unsigned int codim=0) const
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()
static ::ExceptionBase & ExcNoDominatedFiniteElementAmongstChildren()
unsigned int max_dofs_per_hex() const
FECollection< dim, spacedim > & operator=(FECollection< dim, spacedim > &&)=default
#define Assert(cond, exc)
unsigned int max_degree() const
#define DeclExceptionMsg(Exception, defaulttext)
#define DeclException0(Exception0)
#define DEAL_II_NAMESPACE_CLOSE
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
unsigned int max_dofs_per_vertex() const
#define DEAL_II_NAMESPACE_OPEN
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
#define DEAL_II_DEPRECATED
unsigned int n_components() const
T max(const T &t, const MPI_Comm &mpi_communicator)
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