16 #ifndef dealii__fe_tools_H 17 #define dealii__fe_tools_H 21 #include <deal.II/base/config.h> 22 #include <deal.II/base/subscriptor.h> 23 #include <deal.II/base/exceptions.h> 24 #include <deal.II/base/geometry_info.h> 25 #include <deal.II/base/tensor.h> 26 #include <deal.II/base/symmetric_tensor.h> 27 #include <deal.II/distributed/tria.h> 28 #include <deal.II/fe/component_mask.h> 29 #include <deal.II/lac/parallel_vector.h> 37 DEAL_II_NAMESPACE_OPEN
42 template <
int dim,
int spacedim>
class DoFHandler;
79 template <
int dim,
int spacedim=dim>
87 get (
const unsigned int degree)
const = 0;
121 get (
const unsigned int degree)
const;
146 template<
int dim,
int spacedim>
149 std::vector<unsigned int> &renumbering,
150 std::vector<std::vector<unsigned int> > &start_indices);
167 template<
int dim,
int spacedim>
170 std::vector<types::global_dof_index> &renumbering,
171 std::vector<types::global_dof_index> &block_data,
172 bool return_start_indices =
true);
187 template <
int dim,
typename number,
int spacedim>
204 template <
int dim,
typename number,
int spacedim>
220 template <
int dim,
typename number,
int spacedim>
229 template <
int dim,
typename number,
int spacedim>
301 template <
int dim,
int spacedim>
311 template <
int dim,
int spacedim>
354 template <
int dim,
typename number,
int spacedim>
357 const bool isotropic_only =
false,
358 const double threshold = 1.e-12);
381 template <
int dim,
typename number,
int spacedim>
385 const unsigned int face_coarse,
386 const unsigned int face_fine,
387 const double threshold = 1.e-12);
416 template <
int dim,
typename number,
int spacedim>
420 const bool isotropic_only =
false);
507 template <
int dim,
int spacedim>
521 template <
int dim,
int spacedim>
571 template <
int dim,
int spacedim>
577 const unsigned int face,
615 template <
int dim,
int spacedim,
616 template <
int,
int>
class DoFHandlerType1,
617 template <
int,
int>
class DoFHandlerType2,
618 class InVector,
class OutVector>
620 interpolate (
const DoFHandlerType1<dim,spacedim> &dof1,
622 const DoFHandlerType2<dim,spacedim> &dof2,
641 template <
int dim,
int spacedim,
642 template <
int,
int>
class DoFHandlerType1,
643 template <
int,
int>
class DoFHandlerType2,
644 class InVector,
class OutVector>
645 void interpolate (
const DoFHandlerType1<dim,spacedim> &dof1,
647 const DoFHandlerType2<dim,spacedim> &dof2,
667 template <
int,
int>
class DoFHandlerType,
668 class InVector,
class OutVector,
int spacedim>
672 OutVector &u1_interpolated);
686 template <
int dim,
class InVector,
class OutVector,
int spacedim>
692 OutVector &u1_interpolated);
703 template <
int dim,
class InVector,
class OutVector,
int spacedim>
707 OutVector &z1_difference);
721 template <
int dim,
class InVector,
class OutVector,
int spacedim>
727 OutVector &z1_difference);
739 template <
int dim,
class InVector,
class OutVector,
int spacedim>
804 template <
int dim,
class InVector,
class OutVector,
int spacedim>
822 template <
int dim,
class InVector,
class OutVector,
int spacedim>
858 std::vector<unsigned int> &h2l);
863 std::vector<unsigned int> &h2l);
870 std::vector<unsigned int>
881 std::vector<unsigned int> &l2h);
888 std::vector<unsigned int>
965 namespace Compositing
984 template <
int dim,
int spacedim>
987 const std::vector<unsigned int> &multiplicities,
988 const bool do_tensor_product =
true);
993 template <
int dim,
int spacedim>
996 const unsigned int N1,
998 const unsigned int N2=0,
1000 const unsigned int N3=0,
1002 const unsigned int N4=0,
1004 const unsigned int N5=0);
1018 template <
int dim,
int spacedim>
1021 const std::vector<unsigned int> &multiplicities);
1037 template <
int dim,
int spacedim>
1040 const unsigned int N1,
1042 const unsigned int N2=0,
1044 const unsigned int N3=0,
1046 const unsigned int N4=0,
1048 const unsigned int N5=0);
1066 template <
int dim,
int spacedim>
1067 std::vector<ComponentMask>
1069 const std::vector<unsigned int> &multiplicities,
1070 const bool do_tensor_product =
true);
1090 template <
int dim,
int spacedim>
1091 std::vector<ComponentMask>
1093 const unsigned int N1,
1095 const unsigned int N2=0,
1097 const unsigned int N3=0,
1099 const unsigned int N4=0,
1101 const unsigned int N5=0,
1102 const bool do_tensor_product =
true);
1120 template <
int dim,
int spacedim>
1122 build_cell_tables(std::vector< std::pair< std::pair< unsigned int, unsigned int >,
unsigned int > > &system_to_base_table,
1123 std::vector< std::pair< unsigned int, unsigned int > > &system_to_component_table,
1124 std::vector< std::pair< std::pair< unsigned int, unsigned int >,
unsigned int > > &component_to_base_table,
1126 const bool do_tensor_product =
true);
1143 template <
int dim,
int spacedim>
1145 build_face_tables(std::vector< std::pair< std::pair< unsigned int, unsigned int >,
unsigned int > > &face_system_to_base_table,
1146 std::vector< std::pair< unsigned int, unsigned int > > &face_system_to_component_table,
1148 const bool do_tensor_product =
true);
1187 template <
int dim,
int spacedim
1188 #ifdef DEAL_II_WITH_CXX11 1246 template <
int dim,
int spacedim>
1261 <<
"Can't re-generate a finite element from the string '" 1277 <<
"The dimension " << arg1
1278 <<
" in the finite element string must match " 1279 <<
"the space dimension " 1311 <<
"You are using continuous elements on a grid with " 1312 <<
"hanging nodes but without providing hanging node " 1313 <<
"constraints. Use the respective function with " 1314 <<
"additional ConstraintMatrix argument(s), instead." 1329 <<
"This is a " << arg1 <<
"x" << arg2 <<
" matrix, " 1330 <<
"but should be a " << arg3 <<
"x" << arg4 <<
" matrix.");
1338 <<
"Least squares fit leaves a gap of " << arg1);
1347 << arg1 <<
" must be greater than " << arg2);
1359 return new FE(degree);
1367 DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcLeastSquaresError(double arg1)
#define DeclException2(Exception2, type1, type2, outsequence)
static ::ExceptionBase & ExcGridNotRefinedAtLeastOnce()
static ::ExceptionBase & ExcHangingNodesNotAllowed(int arg1)
ActiveSelector::active_cell_iterator active_cell_iterator
static ::ExceptionBase & ExcFENotPrimitive()
static ::ExceptionBase & ExcMatrixDimensionMismatch(int arg1, int arg2, int arg3, int arg4)
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcNotGreaterThan(int arg1, int arg2)
#define DeclException0(Exception0)
static ::ExceptionBase & ExcInvalidFEDimension(char arg1, int arg2)
static ::ExceptionBase & ExcInvalidFE()
#define DeclException4(Exception4, type1, type2, type3, type4, outsequence)
static ::ExceptionBase & ExcInvalidFEName(std::string arg1)
static ::ExceptionBase & ExcTriangulationMismatch()