16 #ifndef dealii_fe_enriched_h 17 #define dealii_fe_enriched_h 19 #include <deal.II/base/config.h> 21 #include <deal.II/fe/fe.h> 22 #include <deal.II/fe/fe_system.h> 23 #include <deal.II/fe/fe_nothing.h> 24 #include <deal.II/fe/fe_update_flags.h> 25 #include <deal.II/base/function.h> 27 #include <deal.II/base/quadrature.h> 33 DEAL_II_NAMESPACE_OPEN
205 template <
int dim,
int spacedim=dim>
278 const std::vector< unsigned int > &multiplicities,
283 std::unique_ptr<FiniteElement<dim,spacedim> >
293 virtual std::string
get_name ()
const;
385 const unsigned int subface,
404 std::vector<std::pair<unsigned int, unsigned int> >
412 std::vector<std::pair<unsigned int, unsigned int> >
420 std::vector<std::pair<unsigned int, unsigned int> >
464 std::vector<double> values;
465 std::vector<Tensor<1,spacedim> > gradients;
466 std::vector<SymmetricTensor<2, spacedim> > hessians;
500 std::unique_ptr<typename FESystem<dim,spacedim>::InternalData>
fesystem_data;
514 mutable std::vector<std::vector<EnrichmentValues> >
enrichment;
555 std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
566 virtual std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
572 virtual std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
578 virtual std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
590 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
598 const unsigned int face_no,
602 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
610 const unsigned int face_no,
611 const unsigned int sub_no,
615 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
626 const std::vector<unsigned int> &multiplicities);
631 const std::unique_ptr<const FESystem<dim,spacedim> >
fe_system;
648 DEAL_II_NAMESPACE_CLOSE
650 #endif // dealii_fe_enriched_h virtual std::vector< std::pair< unsigned int, unsigned int > > hp_line_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
const std::vector< std::vector< std::function< const Function< spacedim > *(const typename Triangulation< dim, spacedim >::cell_iterator &) > > > get_enrichments() const
InternalData(std::unique_ptr< typename FESystem< dim, spacedim >::InternalData > fesystem_data)
FE_Enriched(const FiniteElement< dim, spacedim > &fe_base, const FiniteElement< dim, spacedim > &fe_enriched, const Function< spacedim > *enrichment_function)
void initialize(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities)
internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & get_fe_output_object(const unsigned int base_no) const
virtual void get_subface_interpolation_matrix(const FiniteElement< dim, spacedim > &source, const unsigned int subface, FullMatrix< double > &matrix) const
std::vector< std::vector< EnrichmentValues > > enrichment
std::unique_ptr< typename FESystem< dim, spacedim >::InternalData > fesystem_data
virtual const FiniteElement< dim, spacedim > & base_element(const unsigned int index) const
void multiply_by_enrichment(const Quadrature< dim_1 > &quadrature, const InternalData &fe_data, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename Triangulation< dim, spacedim >::cell_iterator &cell, internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
const std::unique_ptr< const FESystem< dim, spacedim > > fe_system
const FESystem< dim, spacedim > & get_fe_system() const
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const
virtual bool hp_constraints_are_implemented() const
virtual double shape_value(const unsigned int i, const Point< dim > &p) const
FiniteElement< dim, spacedim >::InternalDataBase & get_fe_data(const unsigned int base_no) const
virtual const FullMatrix< double > & get_prolongation_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const
Abstract base class for mapping classes.
virtual std::string get_name() const
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_face_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_quad_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
std::vector< std::vector< std::vector< unsigned int > > > base_no_mult_local_enriched_dofs
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_vertex_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
virtual void get_face_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) const
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::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
std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > setup_data(std::unique_ptr< typename FESystem< dim, spacedim >::InternalData > fes_data, const UpdateFlags flags, const Quadrature< dim_1 > &quadrature) const
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const
virtual const FullMatrix< double > & get_restriction_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const
virtual FiniteElementDomination::Domination compare_for_face_domination(const FiniteElement< dim, spacedim > &fe_other) const
const std::vector< std::vector< std::function< const Function< spacedim > *(const typename Triangulation< dim, spacedim >::cell_iterator &) > > > enrichments
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_data(const UpdateFlags flags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const