16 #ifndef dealii__fe_collection_h 17 #define dealii__fe_collection_h 19 #include <deal.II/base/config.h> 20 #include <deal.II/base/std_cxx11/shared_ptr.h> 21 #include <deal.II/fe/fe.h> 22 #include <deal.II/fe/fe_values_extractors.h> 23 #include <deal.II/fe/component_mask.h> 25 DEAL_II_NAMESPACE_OPEN
52 template <
int dim,
int spacedim=dim>
116 FECollection (
const FECollection<dim,spacedim> &fe_collection);
141 unsigned int size ()
const;
461 std::vector<std_cxx11::shared_ptr<const FiniteElement<dim,spacedim> > >
finite_elements;
468 template <
int dim,
int spacedim>
473 return finite_elements.size();
477 template <
int dim,
int spacedim>
482 Assert (finite_elements.size () > 0, ExcNoFiniteElements());
492 return finite_elements[0]->n_components ();
496 template <
int dim,
int spacedim>
501 Assert (index < finite_elements.size(),
503 return *finite_elements[index];
508 template <
int dim,
int spacedim>
512 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
514 unsigned int max = 0;
515 for (
unsigned int i=0; i<finite_elements.size(); ++i)
516 if (finite_elements[i]->dofs_per_vertex > max)
517 max = finite_elements[i]->dofs_per_vertex;
524 template <
int dim,
int spacedim>
528 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
530 unsigned int max = 0;
531 for (
unsigned int i=0; i<finite_elements.size(); ++i)
532 if (finite_elements[i]->dofs_per_line > max)
533 max = finite_elements[i]->dofs_per_line;
540 template <
int dim,
int spacedim>
544 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
546 unsigned int max = 0;
547 for (
unsigned int i=0; i<finite_elements.size(); ++i)
548 if (finite_elements[i]->dofs_per_quad > max)
549 max = finite_elements[i]->dofs_per_quad;
556 template <
int dim,
int spacedim>
560 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
562 unsigned int max = 0;
563 for (
unsigned int i=0; i<finite_elements.size(); ++i)
564 if (finite_elements[i]->dofs_per_hex > max)
565 max = finite_elements[i]->dofs_per_hex;
572 template <
int dim,
int spacedim>
576 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
578 unsigned int max = 0;
579 for (
unsigned int i=0; i<finite_elements.size(); ++i)
580 if (finite_elements[i]->dofs_per_face > max)
581 max = finite_elements[i]->dofs_per_face;
588 template <
int dim,
int spacedim>
592 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
594 unsigned int max = 0;
595 for (
unsigned int i=0; i<finite_elements.size(); ++i)
596 if (finite_elements[i]->dofs_per_cell > max)
597 max = finite_elements[i]->dofs_per_cell;
603 template <
int dim,
int spacedim>
607 Assert (finite_elements.size() > 0, ExcNoFiniteElements());
609 bool hp_constraints =
true;
610 for (
unsigned int i=0; i<finite_elements.size(); ++i)
611 hp_constraints = hp_constraints &&
612 finite_elements[i]->hp_constraints_are_implemented();
614 return hp_constraints;
620 DEAL_II_NAMESPACE_CLOSE
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 size() const
static ::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
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()
std::vector< std_cxx11::shared_ptr< const FiniteElement< dim, spacedim > > > finite_elements
unsigned int max_dofs_per_hex() const
#define Assert(cond, exc)
#define DeclException0(Exception0)
unsigned int max_dofs_per_line() const
unsigned int max_dofs_per_face() const
unsigned int max_dofs_per_vertex() const
unsigned int n_components() const
const FiniteElement< dim, spacedim > & operator[](const unsigned int index) const
unsigned int max_dofs_per_quad() const