16 #ifndef dealii__vector_tools_h 17 #define dealii__vector_tools_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/exceptions.h> 22 #include <deal.II/base/quadrature_lib.h> 23 #include <deal.II/base/point.h> 24 #include <deal.II/base/std_cxx11/function.h> 25 #include <deal.II/dofs/function_map.h> 26 #include <deal.II/dofs/dof_handler.h> 27 #include <deal.II/hp/dof_handler.h> 28 #include <deal.II/hp/mapping_collection.h> 34 DEAL_II_NAMESPACE_OPEN
36 template <
int dim,
typename Number>
class Function;
38 template <
int dim>
class QGauss;
39 template <
int dim,
typename number>
class MatrixFree;
41 template <
typename number>
class Vector;
43 template <
int dim,
int spacedim>
class Mapping;
47 template <
int dim>
class QCollection;
588 template <
int dim,
int spacedim,
typename VectorType,
589 template <
int,
int>
class DoFHandlerType>
591 const DoFHandlerType<dim,spacedim> &dof,
600 template <
int dim,
int spacedim,
typename VectorType,
601 template <
int,
int>
class DoFHandlerType>
603 (
const DoFHandlerType<dim,spacedim> &dof,
624 template <
int dim,
class InVector,
class OutVector,
int spacedim>
628 const InVector &data_1,
677 template <
int dim,
int spacedim,
typename VectorType,
678 template <
int,
int>
class DoFHandlerType>
682 const DoFHandlerType<dim,spacedim> &dof_handler,
712 template <
int dim,
int spacedim,
typename VectorType,
713 template <
int,
int>
class DoFHandlerType>
716 const VectorType &u1,
717 const DoFHandlerType<dim, spacedim> &dof2,
733 template <
int dim,
int spacedim,
typename VectorType,
734 template <
int,
int>
class DoFHandlerType>
737 const VectorType &u1,
738 const DoFHandlerType<dim, spacedim> &dof2,
749 template <
int dim,
int spacedim,
typename VectorType,
750 template <
int,
int>
class DoFHandlerType>
753 (
const InterGridMap<DoFHandlerType<dim, spacedim> > &intergridmap,
754 const VectorType &u1,
809 template <
int dim,
typename VectorType,
int spacedim>
816 const bool enforce_zero_boundary =
false,
820 const bool project_to_boundary_first =
false);
826 template <
int dim,
typename VectorType,
int spacedim>
832 const bool enforce_zero_boundary =
false,
836 const bool project_to_boundary_first =
false);
842 template <
int dim,
typename VectorType,
int spacedim>
849 const bool enforce_zero_boundary =
false,
853 const bool project_to_boundary_first =
false);
859 template <
int dim,
typename VectorType,
int spacedim>
865 const bool enforce_zero_boundary =
false,
869 const bool project_to_boundary_first =
false);
892 template <
int dim,
typename VectorType,
int spacedim>
898 VectorType &vec_result);
920 template <
int dim,
typename VectorType>
923 const unsigned int n_q_points_1d,
925 VectorType &vec_result);
930 template <
int dim,
typename VectorType>
934 VectorType &vec_result);
985 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
990 const DoFHandlerType<dim,spacedim> &dof,
992 std::map<types::global_dof_index,number> &boundary_values,
999 template <
int dim,
int spacedim,
typename number>
1005 std::map<types::global_dof_index,number> &boundary_values,
1017 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1022 const DoFHandlerType<dim,spacedim> &dof,
1025 std::map<types::global_dof_index,number> &boundary_values,
1037 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1041 (
const DoFHandlerType<dim,spacedim> &dof,
1044 std::map<types::global_dof_index,number> &boundary_values,
1054 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1058 (
const DoFHandlerType<dim,spacedim> &dof,
1060 std::map<types::global_dof_index,number> &boundary_values,
1125 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1130 const DoFHandlerType<dim,spacedim> &dof,
1146 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1151 const DoFHandlerType<dim,spacedim> &dof,
1168 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1172 (
const DoFHandlerType<dim,spacedim> &dof,
1187 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
1191 (
const DoFHandlerType<dim,spacedim> &dof,
1247 template <
int dim,
int spacedim,
typename number>
1253 std::map<types::global_dof_index,number> &boundary_values,
1254 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1260 template <
int dim,
int spacedim,
typename number>
1265 std::map<types::global_dof_index,number> &boundary_values,
1266 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1271 template <
int dim,
int spacedim,
typename number>
1277 std::map<types::global_dof_index,number> &boundary_values,
1278 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1284 template <
int dim,
int spacedim,
typename number>
1289 std::map<types::global_dof_index,number> &boundary_values,
1290 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1330 template <
int dim,
int spacedim,
typename number>
1337 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1345 template <
int dim,
int spacedim,
typename number>
1351 std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1411 const unsigned int first_vector_component,
1428 const unsigned int first_vector_component,
1532 const unsigned int first_vector_component,
1548 const unsigned int first_vector_component,
1604 const unsigned int first_vector_component,
1621 const unsigned int first_vector_component,
1855 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
1858 (
const DoFHandlerType<dim,spacedim> &dof_handler,
1859 const unsigned int first_vector_component,
1860 const std::set<types::boundary_id> &boundary_ids,
1876 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
1879 (
const DoFHandlerType<dim,spacedim> &dof_handler,
1880 const unsigned int first_vector_component,
1881 const std::set<types::boundary_id> &boundary_ids,
1901 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
1904 (
const DoFHandlerType<dim,spacedim> &dof_handler,
1905 const unsigned int first_vector_component,
1906 const std::set<types::boundary_id> &boundary_ids,
1919 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
1922 (
const DoFHandlerType<dim,spacedim> &dof_handler,
1923 const unsigned int first_vector_component,
1924 const std::set<types::boundary_id> &boundary_ids,
1941 template <
int dim,
int spacedim,
typename VectorType>
1946 VectorType &rhs_vector,
1953 template <
int dim,
int spacedim,
typename VectorType>
1957 VectorType &rhs_vector,
1963 template <
int dim,
int spacedim,
typename VectorType>
1968 VectorType &rhs_vector,
1974 template <
int dim,
int spacedim,
typename VectorType>
1978 VectorType &rhs_vector,
1989 template <
int dim,
int spacedim>
1999 template <
int dim,
int spacedim>
2007 template <
int dim,
int spacedim>
2019 template <
int dim,
int spacedim>
2041 template <
int dim,
int spacedim>
2052 template <
int dim,
int spacedim>
2061 template <
int dim,
int spacedim>
2074 template <
int dim,
int spacedim>
2089 template <
int dim,
int spacedim,
typename VectorType>
2094 VectorType &rhs_vector,
2095 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
2104 template <
int dim,
int spacedim,
typename VectorType>
2109 VectorType &rhs_vector,
2110 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
2118 template <
int dim,
int spacedim,
typename VectorType>
2124 VectorType &rhs_vector,
2125 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
2135 template <
int dim,
int spacedim,
typename VectorType>
2140 VectorType &rhs_vector,
2141 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
2236 template <
int dim,
class InVector,
class OutVector,
int spacedim>
2239 const InVector &fe_function,
2241 OutVector &difference,
2245 const double exponent = 2.);
2251 template <
int dim,
class InVector,
class OutVector,
int spacedim>
2253 const InVector &fe_function,
2255 OutVector &difference,
2259 const double exponent = 2.);
2264 template <
int dim,
class InVector,
class OutVector,
int spacedim>
2267 const InVector &fe_function,
2269 OutVector &difference,
2273 const double exponent = 2.);
2279 template <
int dim,
class InVector,
class OutVector,
int spacedim>
2281 const InVector &fe_function,
2283 OutVector &difference,
2287 const double exponent = 2.);
2314 template <
int dim,
int spacedim,
class InVector>
2316 const InVector &cellwise_error,
2318 const double exponent = 2.);
2332 template <
int dim,
typename VectorType,
int spacedim>
2335 const VectorType &fe_function,
2352 template <
int dim,
typename VectorType,
int spacedim>
2356 const VectorType &fe_function,
2383 template <
int dim,
typename VectorType,
int spacedim>
2386 const VectorType &fe_function,
2407 template <
int dim,
typename VectorType,
int spacedim>
2410 const VectorType &fe_function,
2440 template <
int dim,
typename VectorType,
int spacedim>
2441 typename VectorType::value_type
2443 const VectorType &fe_function,
2463 template <
int dim,
typename VectorType,
int spacedim>
2464 typename VectorType::value_type
2466 const VectorType &fe_function,
2491 template <
int dim,
typename VectorType,
int spacedim>
2495 const VectorType &fe_function,
2516 template <
int dim,
typename VectorType,
int spacedim>
2520 const VectorType &fe_function,
2546 template <
int dim,
typename VectorType,
int spacedim>
2547 typename VectorType::value_type
2550 const VectorType &fe_function,
2570 template <
int dim,
typename VectorType,
int spacedim>
2571 typename VectorType::value_type
2574 const VectorType &fe_function,
2598 template <
int dim,
typename VectorType,
int spacedim>
2601 const VectorType &fe_function,
2621 template <
int dim,
typename VectorType,
int spacedim>
2624 const VectorType &fe_function,
2649 template <
int dim,
typename VectorType,
int spacedim>
2652 const VectorType &fe_function,
2671 template <
int dim,
typename VectorType,
int spacedim>
2674 const VectorType &fe_function,
2698 template <
int dim,
typename VectorType,
int spacedim>
2702 const VectorType &fe_function,
2722 template <
int dim,
typename VectorType,
int spacedim>
2726 const VectorType &fe_function,
2751 template <
int dim,
typename VectorType,
int spacedim>
2755 const VectorType &fe_function,
2774 template <
int dim,
typename VectorType,
int spacedim>
2778 const VectorType &fe_function,
2836 template <
typename VectorType>
2838 const std::vector<bool> &p_select = std::vector<bool>());
2864 template <
int dim,
typename VectorType,
int spacedim>
2865 typename VectorType::value_type
2869 const VectorType &v,
2870 const unsigned int component);
2876 template <
int dim,
typename VectorType,
int spacedim>
2877 typename VectorType::value_type
2880 const VectorType &v,
2881 const unsigned int component);
2913 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType,
2914 typename VectorType>
2925 "You are attempting an operation that requires the " 2926 "finite element involved to be 'interpolating', i.e., " 2927 "it needs to have support points. The finite element " 2928 "you are using here does not appear to have those for " 2929 "the required components.");
2935 "The given point is inside a cell of a " 2936 "parallel::distributed::Triangulation that is not " 2937 "locally owned by this processor.");
2941 DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNonInterpolatingFE()
void compute_nonzero_tangential_flux_constraints(const DoFHandlerType< dim, spacedim > &dof_handler, const unsigned int first_vector_component, const std::set< types::boundary_id > &boundary_ids, typename FunctionMap< spacedim >::type &function_map, ConstraintMatrix &constraints, const Mapping< dim, spacedim > &mapping=StaticMappingQ1< dim >::mapping)
unsigned char material_id
void project_boundary_values_curl_conforming(const DoFHandler< dim > &dof_handler, const unsigned int first_vector_component, const Function< dim, double > &boundary_function, const types::boundary_id boundary_component, ConstraintMatrix &constraints, const Mapping< dim > &mapping=StaticMappingQ1< dim >::mapping)
void compute_no_normal_flux_constraints(const DoFHandlerType< dim, spacedim > &dof_handler, const unsigned int first_vector_component, const std::set< types::boundary_id > &boundary_ids, ConstraintMatrix &constraints, const Mapping< dim, spacedim > &mapping=StaticMappingQ1< dim >::mapping)
ActiveSelector::active_cell_iterator active_cell_iterator
void compute_nonzero_normal_flux_constraints(const DoFHandlerType< dim, spacedim > &dof_handler, const unsigned int first_vector_component, const std::set< types::boundary_id > &boundary_ids, typename FunctionMap< spacedim >::type &function_map, ConstraintMatrix &constraints, const Mapping< dim, spacedim > &mapping=StaticMappingQ1< dim >::mapping)
void compute_normal_flux_constraints(const DoFHandlerType< dim, spacedim > &dof_handler, const unsigned int first_vector_component, const std::set< types::boundary_id > &boundary_ids, ConstraintMatrix &constraints, const Mapping< dim, spacedim > &mapping=StaticMappingQ1< dim >::mapping)
Abstract base class for mapping classes.
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcPointNotAvailableHere()
std::map< types::boundary_id, const Function< dim, Number > * > type
void project_boundary_values_curl_conforming_l2(const DoFHandler< dim > &dof_handler, const unsigned int first_vector_component, const Function< dim, double > &boundary_function, const types::boundary_id boundary_component, ConstraintMatrix &constraints, const Mapping< dim > &mapping=StaticMappingQ1< dim >::mapping)
unsigned char boundary_id
void project_boundary_values_div_conforming(const DoFHandler< dim > &dof_handler, const unsigned int first_vector_component, const Function< dim, double > &boundary_function, const types::boundary_id boundary_component, ConstraintMatrix &constraints, const Mapping< dim > &mapping=StaticMappingQ1< dim >::mapping)