Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Classes | Namespaces | Functions
fe_tools.h File Reference
#include <deal.II/base/config.h>
#include <deal.II/base/exceptions.h>
#include <deal.II/base/geometry_info.h>
#include <deal.II/base/std_cxx14/memory.h>
#include <deal.II/base/subscriptor.h>
#include <deal.II/base/symmetric_tensor.h>
#include <deal.II/base/tensor.h>
#include <deal.II/distributed/tria.h>
#include <deal.II/fe/component_mask.h>
#include <deal.II/lac/la_parallel_vector.h>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

class  FETools::FEFactoryBase< dim, spacedim >
 
class  FETools::FEFactory< FE >
 

Namespaces

 FETools
 
 FETools::Compositing
 

Functions

template<int dim, int spacedim>
void FETools::compute_component_wise (const FiniteElement< dim, spacedim > &fe, std::vector< unsigned int > &renumbering, std::vector< std::vector< unsigned int >> &start_indices)
 
template<int dim, int spacedim>
void FETools::compute_block_renumbering (const FiniteElement< dim, spacedim > &fe, std::vector< types::global_dof_index > &renumbering, std::vector< types::global_dof_index > &block_data, bool return_start_indices=true)
 
template<int dim, int spacedim>
FiniteElementData< dim > FETools::Compositing::multiply_dof_numbers (const std::vector< const FiniteElement< dim, spacedim > * > &fes, const std::vector< unsigned int > &multiplicities, const bool do_tensor_product=true)
 
template<int dim, int spacedim>
FiniteElementData< dim > FETools::Compositing::multiply_dof_numbers (const std::initializer_list< std::pair< std::unique_ptr< FiniteElement< dim, spacedim >>, unsigned int >> &fe_systems)
 
template<int dim, int spacedim>
FiniteElementData< dim > FETools::Compositing::multiply_dof_numbers (const FiniteElement< dim, spacedim > *fe1, const unsigned int N1, const FiniteElement< dim, spacedim > *fe2=nullptr, const unsigned int N2=0, const FiniteElement< dim, spacedim > *fe3=nullptr, const unsigned int N3=0, const FiniteElement< dim, spacedim > *fe4=nullptr, const unsigned int N4=0, const FiniteElement< dim, spacedim > *fe5=nullptr, const unsigned int N5=0)
 
template<int dim, int spacedim>
std::vector< boolFETools::Compositing::compute_restriction_is_additive_flags (const std::vector< const FiniteElement< dim, spacedim > * > &fes, const std::vector< unsigned int > &multiplicities)
 
template<int dim, int spacedim>
std::vector< boolFETools::Compositing::compute_restriction_is_additive_flags (const std::initializer_list< std::pair< std::unique_ptr< FiniteElement< dim, spacedim >>, unsigned int >> &fe_systems)
 
template<int dim, int spacedim>
std::vector< boolFETools::Compositing::compute_restriction_is_additive_flags (const FiniteElement< dim, spacedim > *fe1, const unsigned int N1, const FiniteElement< dim, spacedim > *fe2=nullptr, const unsigned int N2=0, const FiniteElement< dim, spacedim > *fe3=nullptr, const unsigned int N3=0, const FiniteElement< dim, spacedim > *fe4=nullptr, const unsigned int N4=0, const FiniteElement< dim, spacedim > *fe5=nullptr, const unsigned int N5=0)
 
template<int dim, int spacedim>
std::vector< ComponentMaskFETools::Compositing::compute_nonzero_components (const std::vector< const FiniteElement< dim, spacedim > * > &fes, const std::vector< unsigned int > &multiplicities, const bool do_tensor_product=true)
 
template<int dim, int spacedim>
std::vector< ComponentMaskFETools::Compositing::compute_nonzero_components (const std::initializer_list< std::pair< std::unique_ptr< FiniteElement< dim, spacedim >>, unsigned int >> &fe_systems)
 
template<int dim, int spacedim>
std::vector< ComponentMaskFETools::Compositing::compute_nonzero_components (const FiniteElement< dim, spacedim > *fe1, const unsigned int N1, const FiniteElement< dim, spacedim > *fe2=nullptr, const unsigned int N2=0, const FiniteElement< dim, spacedim > *fe3=nullptr, const unsigned int N3=0, const FiniteElement< dim, spacedim > *fe4=nullptr, const unsigned int N4=0, const FiniteElement< dim, spacedim > *fe5=nullptr, const unsigned int N5=0, const bool do_tensor_product=true)
 
template<int dim, int spacedim>
void FETools::Compositing::build_cell_tables (std::vector< std::pair< std::pair< unsigned int, unsigned int >, unsigned int >> &system_to_base_table, std::vector< std::pair< unsigned int, unsigned int >> &system_to_component_table, std::vector< std::pair< std::pair< unsigned int, unsigned int >, unsigned int >> &component_to_base_table, const FiniteElement< dim, spacedim > &finite_element, const bool do_tensor_product=true)
 
template<int dim, int spacedim>
void FETools::Compositing::build_face_tables (std::vector< std::pair< std::pair< unsigned int, unsigned int >, unsigned int >> &face_system_to_base_table, std::vector< std::pair< unsigned int, unsigned int >> &face_system_to_component_table, const FiniteElement< dim, spacedim > &finite_element, const bool do_tensor_product=true)
 
Generation of local matrices
template<int dim, typename number , int spacedim>
void FETools::get_interpolation_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &interpolation_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_back_interpolation_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &interpolation_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_interpolation_difference_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &difference_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_projection_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &matrix)
 
template<int dim, int spacedim>
FullMatrix< doubleFETools::compute_node_matrix (const FiniteElement< dim, spacedim > &fe)
 
template<int dim, typename number , int spacedim>
void FETools::compute_embedding_matrices (const FiniteElement< dim, spacedim > &fe, std::vector< std::vector< FullMatrix< number >>> &matrices, const bool isotropic_only=false, const double threshold=1.e-12)
 
template<int dim, typename number , int spacedim>
void FETools::compute_face_embedding_matrices (const FiniteElement< dim, spacedim > &fe, FullMatrix< number >(&matrices)[GeometryInfo< dim >::max_children_per_face], const unsigned int face_coarse, const unsigned int face_fine, const double threshold=1.e-12)
 
template<int dim, typename number , int spacedim>
void FETools::compute_projection_matrices (const FiniteElement< dim, spacedim > &fe, std::vector< std::vector< FullMatrix< number >>> &matrices, const bool isotropic_only=false)
 
template<int dim, int spacedim>
void FETools::compute_projection_from_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &lhs_quadrature, const Quadrature< dim > &rhs_quadrature, FullMatrix< double > &X)
 
template<int dim, int spacedim>
void FETools::compute_interpolation_to_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, FullMatrix< double > &I_q)
 
template<int dim>
void FETools::compute_projection_from_quadrature_points (const FullMatrix< double > &projection_matrix, const std::vector< Tensor< 1, dim >> &vector_of_tensors_at_qp, std::vector< Tensor< 1, dim >> &vector_of_tensors_at_nodes)
 
template<int dim>
void FETools::compute_projection_from_quadrature_points (const FullMatrix< double > &projection_matrix, const std::vector< SymmetricTensor< 2, dim >> &vector_of_tensors_at_qp, std::vector< SymmetricTensor< 2, dim >> &vector_of_tensors_at_nodes)
 
template<int dim, int spacedim>
void FETools::compute_projection_from_face_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &lhs_quadrature, const Quadrature< dim - 1 > &rhs_quadrature, const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face, FullMatrix< double > &X)
 
template<int dim, int spacedim, typename number >
void FETools::convert_generalized_support_point_values_to_dof_values (const FiniteElement< dim, spacedim > &finite_element, const std::vector< Vector< number >> &support_point_values, std::vector< number > &dof_values)
 
Functions which should be in DoFTools
template<int dim, int spacedim, template< int, int > class DoFHandlerType1, template< int, int > class DoFHandlerType2, class InVector , class OutVector >
void FETools::interpolate (const DoFHandlerType1< dim, spacedim > &dof1, const InVector &u1, const DoFHandlerType2< dim, spacedim > &dof2, OutVector &u2)
 
template<int dim, int spacedim, template< int, int > class DoFHandlerType1, template< int, int > class DoFHandlerType2, class InVector , class OutVector >
void FETools::interpolate (const DoFHandlerType1< dim, spacedim > &dof1, const InVector &u1, const DoFHandlerType2< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints, OutVector &u2)
 
template<int dim, template< int, int > class DoFHandlerType, class InVector , class OutVector , int spacedim>
void FETools::back_interpolate (const DoFHandlerType< dim, spacedim > &dof1, const InVector &u1, const FiniteElement< dim, spacedim > &fe2, OutVector &u1_interpolated)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::back_interpolate (const DoFHandler< dim, spacedim > &dof1, const AffineConstraints< typename OutVector::value_type > &constraints1, const InVector &u1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints2, OutVector &u1_interpolated)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::interpolation_difference (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const FiniteElement< dim, spacedim > &fe2, OutVector &z1_difference)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::interpolation_difference (const DoFHandler< dim, spacedim > &dof1, const AffineConstraints< typename OutVector::value_type > &constraints1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints2, OutVector &z1_difference)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::project_dg (const DoFHandler< dim, spacedim > &dof1, const InVector &u1, const DoFHandler< dim, spacedim > &dof2, OutVector &u2)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::extrapolate (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, OutVector &z2)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::extrapolate (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints, OutVector &z2)
 
template<int dim>
std::vector< unsigned intFETools::hierarchic_to_lexicographic_numbering (unsigned int degree)
 
template<int dim>
void FETools::hierarchic_to_lexicographic_numbering (unsigned int degree, std::vector< unsigned int > &h2l)
 
template<int dim>
void FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData< dim > &fe_data, std::vector< unsigned int > &h2l)
 
template<int dim>
std::vector< unsigned intFETools::hierarchic_to_lexicographic_numbering (const FiniteElementData< dim > &fe_data)
 
template<int dim>
std::vector< unsigned intFETools::lexicographic_to_hierarchic_numbering (unsigned int degree)
 
template<int dim>
void FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData< dim > &fe_data, std::vector< unsigned int > &l2h)
 
template<int dim>
std::vector< unsigned intFETools::lexicographic_to_hierarchic_numbering (const FiniteElementData< dim > &fe_data)
 
template<int dim, int spacedim = dim>
std::unique_ptr< FiniteElement< dim, spacedim > > FETools::get_fe_by_name (const std::string &name)
 
template<int dim>
FiniteElement< dim, dim > * FETools::get_fe_from_name (const std::string &name)
 
template<int dim, int spacedim>
void FETools::add_fe_name (const std::string &name, const FEFactoryBase< dim, spacedim > *factory)
 
static ::ExceptionBaseFETools::ExcInvalidFEName (std::string arg1)
 
static ::ExceptionBaseFETools::ExcInvalidFEDimension (char arg1, int arg2)
 
static ::ExceptionBaseFETools::ExcInvalidFE ()
 
static ::ExceptionBaseFETools::ExcFENotPrimitive ()
 
static ::ExceptionBaseFETools::ExcTriangulationMismatch ()
 
static ::ExceptionBaseFETools::ExcHangingNodesNotAllowed ()
 
static ::ExceptionBaseFETools::ExcGridNotRefinedAtLeastOnce ()
 
static ::ExceptionBaseFETools::ExcMatrixDimensionMismatch (int arg1, int arg2, int arg3, int arg4)
 
static ::ExceptionBaseFETools::ExcLeastSquaresError (double arg1)
 
static ::ExceptionBaseFETools::ExcNotGreaterThan (int arg1, int arg2)
 
Generation of local matrices
template<int dim, typename number , int spacedim>
void FETools::get_interpolation_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &interpolation_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_back_interpolation_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &interpolation_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_interpolation_difference_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &difference_matrix)
 
template<int dim, typename number , int spacedim>
void FETools::get_projection_matrix (const FiniteElement< dim, spacedim > &fe1, const FiniteElement< dim, spacedim > &fe2, FullMatrix< number > &matrix)
 
template<int dim, int spacedim>
FullMatrix< doubleFETools::compute_node_matrix (const FiniteElement< dim, spacedim > &fe)
 
template<int dim, typename number , int spacedim>
void FETools::compute_embedding_matrices (const FiniteElement< dim, spacedim > &fe, std::vector< std::vector< FullMatrix< number >>> &matrices, const bool isotropic_only=false, const double threshold=1.e-12)
 
template<int dim, typename number , int spacedim>
void FETools::compute_face_embedding_matrices (const FiniteElement< dim, spacedim > &fe, FullMatrix< number >(&matrices)[GeometryInfo< dim >::max_children_per_face], const unsigned int face_coarse, const unsigned int face_fine, const double threshold=1.e-12)
 
template<int dim, typename number , int spacedim>
void FETools::compute_projection_matrices (const FiniteElement< dim, spacedim > &fe, std::vector< std::vector< FullMatrix< number >>> &matrices, const bool isotropic_only=false)
 
template<int dim, int spacedim>
void FETools::compute_projection_from_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &lhs_quadrature, const Quadrature< dim > &rhs_quadrature, FullMatrix< double > &X)
 
template<int dim, int spacedim>
void FETools::compute_interpolation_to_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, FullMatrix< double > &I_q)
 
template<int dim>
void FETools::compute_projection_from_quadrature_points (const FullMatrix< double > &projection_matrix, const std::vector< Tensor< 1, dim >> &vector_of_tensors_at_qp, std::vector< Tensor< 1, dim >> &vector_of_tensors_at_nodes)
 
template<int dim>
void FETools::compute_projection_from_quadrature_points (const FullMatrix< double > &projection_matrix, const std::vector< SymmetricTensor< 2, dim >> &vector_of_tensors_at_qp, std::vector< SymmetricTensor< 2, dim >> &vector_of_tensors_at_nodes)
 
template<int dim, int spacedim>
void FETools::compute_projection_from_face_quadrature_points_matrix (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &lhs_quadrature, const Quadrature< dim - 1 > &rhs_quadrature, const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face, FullMatrix< double > &X)
 
template<int dim, int spacedim, typename number >
void FETools::convert_generalized_support_point_values_to_dof_values (const FiniteElement< dim, spacedim > &finite_element, const std::vector< Vector< number >> &support_point_values, std::vector< number > &dof_values)
 
Functions which should be in DoFTools
template<int dim, int spacedim, template< int, int > class DoFHandlerType1, template< int, int > class DoFHandlerType2, class InVector , class OutVector >
void FETools::interpolate (const DoFHandlerType1< dim, spacedim > &dof1, const InVector &u1, const DoFHandlerType2< dim, spacedim > &dof2, OutVector &u2)
 
template<int dim, int spacedim, template< int, int > class DoFHandlerType1, template< int, int > class DoFHandlerType2, class InVector , class OutVector >
void FETools::interpolate (const DoFHandlerType1< dim, spacedim > &dof1, const InVector &u1, const DoFHandlerType2< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints, OutVector &u2)
 
template<int dim, template< int, int > class DoFHandlerType, class InVector , class OutVector , int spacedim>
void FETools::back_interpolate (const DoFHandlerType< dim, spacedim > &dof1, const InVector &u1, const FiniteElement< dim, spacedim > &fe2, OutVector &u1_interpolated)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::back_interpolate (const DoFHandler< dim, spacedim > &dof1, const AffineConstraints< typename OutVector::value_type > &constraints1, const InVector &u1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints2, OutVector &u1_interpolated)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::interpolation_difference (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const FiniteElement< dim, spacedim > &fe2, OutVector &z1_difference)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::interpolation_difference (const DoFHandler< dim, spacedim > &dof1, const AffineConstraints< typename OutVector::value_type > &constraints1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints2, OutVector &z1_difference)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::project_dg (const DoFHandler< dim, spacedim > &dof1, const InVector &u1, const DoFHandler< dim, spacedim > &dof2, OutVector &u2)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::extrapolate (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, OutVector &z2)
 
template<int dim, class InVector , class OutVector , int spacedim>
void FETools::extrapolate (const DoFHandler< dim, spacedim > &dof1, const InVector &z1, const DoFHandler< dim, spacedim > &dof2, const AffineConstraints< typename OutVector::value_type > &constraints, OutVector &z2)
 
template<int dim>
std::vector< unsigned intFETools::hierarchic_to_lexicographic_numbering (unsigned int degree)
 
template<int dim>
void FETools::hierarchic_to_lexicographic_numbering (unsigned int degree, std::vector< unsigned int > &h2l)
 
template<int dim>
void FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData< dim > &fe_data, std::vector< unsigned int > &h2l)
 
template<int dim>
std::vector< unsigned intFETools::hierarchic_to_lexicographic_numbering (const FiniteElementData< dim > &fe_data)
 
template<int dim>
std::vector< unsigned intFETools::lexicographic_to_hierarchic_numbering (unsigned int degree)
 
template<int dim>
void FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData< dim > &fe_data, std::vector< unsigned int > &l2h)
 
template<int dim>
std::vector< unsigned intFETools::lexicographic_to_hierarchic_numbering (const FiniteElementData< dim > &fe_data)
 
template<int dim, int spacedim = dim>
std::unique_ptr< FiniteElement< dim, spacedim > > FETools::get_fe_by_name (const std::string &name)
 
template<int dim>
FiniteElement< dim, dim > * FETools::get_fe_from_name (const std::string &name)
 
template<int dim, int spacedim>
void FETools::add_fe_name (const std::string &name, const FEFactoryBase< dim, spacedim > *factory)
 
static ::ExceptionBaseFETools::ExcInvalidFEName (std::string arg1)
 
static ::ExceptionBaseFETools::ExcInvalidFEDimension (char arg1, int arg2)
 
static ::ExceptionBaseFETools::ExcInvalidFE ()
 
static ::ExceptionBaseFETools::ExcFENotPrimitive ()
 
static ::ExceptionBaseFETools::ExcTriangulationMismatch ()
 
static ::ExceptionBaseFETools::ExcHangingNodesNotAllowed ()
 
static ::ExceptionBaseFETools::ExcGridNotRefinedAtLeastOnce ()
 
static ::ExceptionBaseFETools::ExcMatrixDimensionMismatch (int arg1, int arg2, int arg3, int arg4)
 
static ::ExceptionBaseFETools::ExcLeastSquaresError (double arg1)
 
static ::ExceptionBaseFETools::ExcNotGreaterThan (int arg1, int arg2)