Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
vector_tools.h
1 // ---------------------------------------------------------------------
2 // @f$Id: vector_tools.h 31932 2013-12-08 02:15:54Z heister @f$
3 //
4 // Copyright (C) 1998 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__vector_tools_h
18 #define __deal2__vector_tools_h
19 
20 
21 #include <deal.II/base/config.h>
23 #include <deal.II/base/quadrature_lib.h>
24 #include <deal.II/base/point.h>
25 #include <deal.II/dofs/function_map.h>
26 #include <deal.II/fe/mapping_q.h>
27 #include <deal.II/hp/mapping_collection.h>
28 
29 #include <map>
30 #include <vector>
31 #include <set>
32 
33 DEAL_II_NAMESPACE_OPEN
34 
35 template <int dim> class Function;
36 template <int dim> struct FunctionMap;
37 template <int dim> class Quadrature;
38 template <int dim> class QGauss;
39 
40 template <typename number> class Vector;
41 template <typename number> class FullMatrix;
42 template <int dim, int spacedim> class Mapping;
43 template <int dim, int spacedim> class DoFHandler;
44 template <typename gridtype> class InterGridMap;
45 namespace hp
46 {
47  template <int dim, int spacedim> class DoFHandler;
48  template <int dim, int spacedim> class MappingCollection;
49  template <int dim> class QCollection;
50 }
51 class ConstraintMatrix;
52 
53 
54 //TODO: Move documentation of functions to the functions!
55 
338 namespace VectorTools
339 {
348  enum NormType
349  {
416 
417  };
454  template <class VECTOR, int dim, int spacedim, template <int,int> class DH>
455  void interpolate (const Mapping<dim,spacedim> &mapping,
456  const DH<dim,spacedim> &dof,
457  const Function<spacedim> &function,
458  VECTOR &vec);
459 
465  template <class VECTOR, class DH>
466  void interpolate (const DH &dof,
467  const Function<DH::space_dimension> &function,
468  VECTOR &vec);
469 
498  template <int dim, class InVector, class OutVector, int spacedim>
499  void interpolate (const DoFHandler<dim,spacedim> &dof_1,
500  const DoFHandler<dim,spacedim> &dof_2,
501  const FullMatrix<double> &transfer,
502  const InVector &data_1,
503  OutVector &data_2);
504 
541  template <int dim, int spacedim,
542  template <int,int> class DH,
543  class VECTOR>
544  void
545  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
546  const VECTOR &u1,
547  const DH<dim, spacedim> &dof2,
548  VECTOR &u2);
549 
575  template <int dim, int spacedim,
576  template <int,int> class DH,
577  class VECTOR>
578  void
579  interpolate_to_different_mesh (const DH<dim, spacedim> &dof1,
580  const VECTOR &u1,
581  const DH<dim, spacedim> &dof2,
582  const ConstraintMatrix &constraints,
583  VECTOR &u2);
584 
585 
599  template <int dim, int spacedim,
600  template <int,int> class DH,
601  class VECTOR>
602  void
603  interpolate_to_different_mesh (const InterGridMap<DH<dim, spacedim> > &intergridmap,
604  const VECTOR &u1,
605  const ConstraintMatrix &constraints,
606  VECTOR &u2);
607 
646  template <int dim, class VECTOR, int spacedim>
647  void project (const Mapping<dim, spacedim> &mapping,
648  const DoFHandler<dim,spacedim> &dof,
649  const ConstraintMatrix &constraints,
650  const Quadrature<dim> &quadrature,
651  const Function<spacedim> &function,
652  VECTOR &vec,
653  const bool enforce_zero_boundary = false,
654  const Quadrature<dim-1> &q_boundary = (dim > 1 ?
655  QGauss<dim-1>(2) :
656  Quadrature<dim-1>(0)),
657  const bool project_to_boundary_first = false);
658 
664  template <int dim, class VECTOR, int spacedim>
665  void project (const DoFHandler<dim,spacedim> &dof,
666  const ConstraintMatrix &constraints,
667  const Quadrature<dim> &quadrature,
668  const Function<spacedim> &function,
669  VECTOR &vec,
670  const bool enforce_zero_boundary = false,
671  const Quadrature<dim-1> &q_boundary = (dim > 1 ?
672  QGauss<dim-1>(2) :
673  Quadrature<dim-1>(0)),
674  const bool project_to_boundary_first = false);
675 
680  template <int dim, class VECTOR, int spacedim>
681  void project (const hp::MappingCollection<dim, spacedim> &mapping,
682  const hp::DoFHandler<dim,spacedim> &dof,
683  const ConstraintMatrix &constraints,
684  const hp::QCollection<dim> &quadrature,
685  const Function<spacedim> &function,
686  VECTOR &vec,
687  const bool enforce_zero_boundary = false,
688  const hp::QCollection<dim-1> &q_boundary = hp::QCollection<dim-1>(dim > 1 ?
689  QGauss<dim-1>(2) :
690  Quadrature<dim-1>(0)),
691  const bool project_to_boundary_first = false);
692 
698  template <int dim, class VECTOR, int spacedim>
699  void project (const hp::DoFHandler<dim,spacedim> &dof,
700  const ConstraintMatrix &constraints,
701  const hp::QCollection<dim> &quadrature,
702  const Function<spacedim> &function,
703  VECTOR &vec,
704  const bool enforce_zero_boundary = false,
705  const hp::QCollection<dim-1> &q_boundary = hp::QCollection<dim-1>(dim > 1 ?
706  QGauss<dim-1>(2) :
707  Quadrature<dim-1>(0)),
708  const bool project_to_boundary_first = false);
709 
795  template <class DH>
796  void
798  const DH &dof,
799  const typename FunctionMap<DH::space_dimension>::type &function_map,
800  std::map<types::global_dof_index,double> &boundary_values,
801  const ComponentMask &component_mask = ComponentMask());
802 
807  template <int dim, int spacedim>
808  void
810  const hp::DoFHandler<dim,spacedim> &dof,
811  const typename FunctionMap<spacedim>::type &function_map,
812  std::map<types::global_dof_index,double> &boundary_values,
813  const ComponentMask &component_mask = ComponentMask());
814 
826  template <class DH>
827  void
829  const DH &dof,
830  const types::boundary_id boundary_component,
831  const Function<DH::space_dimension> &boundary_function,
832  std::map<types::global_dof_index,double> &boundary_values,
833  const ComponentMask &component_mask = ComponentMask());
834 
846  template <class DH>
847  void
848  interpolate_boundary_values (const DH &dof,
849  const types::boundary_id boundary_component,
850  const Function<DH::space_dimension> &boundary_function,
851  std::map<types::global_dof_index,double> &boundary_values,
852  const ComponentMask &component_mask = ComponentMask());
853 
854 
864  template <class DH>
865  void
866  interpolate_boundary_values (const DH &dof,
867  const typename FunctionMap<DH::space_dimension>::type &function_map,
868  std::map<types::global_dof_index,double> &boundary_values,
869  const ComponentMask &component_mask = ComponentMask());
870 
871 
967  template <class DH>
968  void
970  const DH &dof,
971  const typename FunctionMap<DH::space_dimension>::type &function_map,
972  ConstraintMatrix &constraints,
973  const ComponentMask &component_mask = ComponentMask());
974 
988  template <class DH>
989  void
991  const DH &dof,
992  const types::boundary_id boundary_component,
993  const Function<DH::space_dimension> &boundary_function,
994  ConstraintMatrix &constraints,
995  const ComponentMask &component_mask = ComponentMask());
996 
1010  template <class DH>
1011  void
1012  interpolate_boundary_values (const DH &dof,
1013  const types::boundary_id boundary_component,
1014  const Function<DH::space_dimension> &boundary_function,
1015  ConstraintMatrix &constraints,
1016  const ComponentMask &component_mask = ComponentMask());
1017 
1018 
1030  template <class DH>
1031  void
1032  interpolate_boundary_values (const DH &dof,
1033  const typename FunctionMap<DH::space_dimension>::type &function_map,
1034  ConstraintMatrix &constraints,
1035  const ComponentMask &component_mask = ComponentMask());
1036 
1037 
1082  template <int dim, int spacedim>
1083  void project_boundary_values (const Mapping<dim, spacedim> &mapping,
1084  const DoFHandler<dim,spacedim> &dof,
1085  const typename FunctionMap<spacedim>::type &boundary_functions,
1086  const Quadrature<dim-1> &q,
1087  std::map<types::global_dof_index,double> &boundary_values,
1088  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1089 
1095  template <int dim, int spacedim>
1097  const typename FunctionMap<spacedim>::type &boundary_function,
1098  const Quadrature<dim-1> &q,
1099  std::map<types::global_dof_index,double> &boundary_values,
1100  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1101 
1105  template <int dim, int spacedim>
1107  const hp::DoFHandler<dim,spacedim> &dof,
1108  const typename FunctionMap<spacedim>::type &boundary_functions,
1109  const hp::QCollection<dim-1> &q,
1110  std::map<types::global_dof_index,double> &boundary_values,
1111  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1112 
1118  template <int dim, int spacedim>
1120  const typename FunctionMap<spacedim>::type &boundary_function,
1121  const hp::QCollection<dim-1> &q,
1122  std::map<types::global_dof_index,double> &boundary_values,
1123  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1124 
1188  template <int dim, int spacedim>
1189  void project_boundary_values (const Mapping<dim, spacedim> &mapping,
1190  const DoFHandler<dim,spacedim> &dof,
1191  const typename FunctionMap<spacedim>::type &boundary_functions,
1192  const Quadrature<dim-1> &q,
1193  ConstraintMatrix &constraints,
1194  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1195 
1203  template <int dim, int spacedim>
1205  const typename FunctionMap<spacedim>::type &boundary_function,
1206  const Quadrature<dim-1> &q,
1207  ConstraintMatrix &constraints,
1208  std::vector<unsigned int> component_mapping = std::vector<unsigned int>());
1209 
1210 
1292  template <int dim>
1294  const unsigned int first_vector_component,
1295  const Function<dim> &boundary_function,
1296  const types::boundary_id boundary_component,
1297  ConstraintMatrix &constraints,
1298  const Mapping<dim> &mapping = StaticMappingQ1<dim>::mapping);
1299 
1307  template <int dim>
1309  const unsigned int first_vector_component,
1310  const Function<dim> &boundary_function,
1311  const types::boundary_id boundary_component,
1312  ConstraintMatrix &constraints,
1314 
1315 
1382  template<int dim>
1384  const unsigned int first_vector_component,
1385  const Function<dim> &boundary_function,
1386  const types::boundary_id boundary_component,
1387  ConstraintMatrix &constraints,
1388  const Mapping<dim> &mapping = StaticMappingQ1<dim>::mapping);
1389 
1397  template<int dim>
1399  const unsigned int first_vector_component,
1400  const Function<dim> &boundary_function,
1401  const types::boundary_id boundary_component,
1402  ConstraintMatrix &constraints,
1404 
1405 
1601  template <int dim, template <int, int> class DH, int spacedim>
1602  void
1603  compute_no_normal_flux_constraints (const DH<dim,spacedim> &dof_handler,
1604  const unsigned int first_vector_component,
1605  const std::set<types::boundary_id> &boundary_ids,
1606  ConstraintMatrix &constraints,
1608 
1617  template <int dim, template <int, int> class DH, int spacedim>
1618  void
1619  compute_normal_flux_constraints (const DH<dim,spacedim> &dof_handler,
1620  const unsigned int first_vector_component,
1621  const std::set<types::boundary_id> &boundary_ids,
1622  ConstraintMatrix &constraints,
1624 
1625 
1627 
1631 
1641  template <int dim, int spacedim>
1642  void create_right_hand_side (const Mapping<dim, spacedim> &mapping,
1643  const DoFHandler<dim,spacedim> &dof,
1644  const Quadrature<dim> &q,
1645  const Function<spacedim> &rhs,
1646  Vector<double> &rhs_vector);
1647 
1653  template <int dim, int spacedim>
1655  const Quadrature<dim> &q,
1656  const Function<spacedim> &rhs,
1657  Vector<double> &rhs_vector);
1658 
1663  template <int dim, int spacedim>
1665  const hp::DoFHandler<dim,spacedim> &dof,
1666  const hp::QCollection<dim> &q,
1667  const Function<spacedim> &rhs,
1668  Vector<double> &rhs_vector);
1669 
1674  template <int dim, int spacedim>
1676  const hp::QCollection<dim> &q,
1677  const Function<spacedim> &rhs,
1678  Vector<double> &rhs_vector);
1679 
1692  template <int dim, int spacedim>
1694  const DoFHandler<dim,spacedim> &dof,
1695  const Point<spacedim> &p,
1696  Vector<double> &rhs_vector);
1697 
1703  template <int dim, int spacedim>
1705  const Point<spacedim> &p,
1706  Vector<double> &rhs_vector);
1707 
1712  template <int dim, int spacedim>
1714  const hp::DoFHandler<dim,spacedim> &dof,
1715  const Point<spacedim> &p,
1716  Vector<double> &rhs_vector);
1717 
1728  template <int dim, int spacedim>
1730  const Point<spacedim> &p,
1731  Vector<double> &rhs_vector);
1732 
1744  template <int dim, int spacedim>
1746  const DoFHandler<dim,spacedim> &dof,
1747  const Point<spacedim> &p,
1748  const Point<dim> &orientation,
1749  Vector<double> &rhs_vector);
1750 
1757  template <int dim, int spacedim>
1759  const Point<spacedim> &p,
1760  const Point<dim> &orientation,
1761  Vector<double> &rhs_vector);
1762 
1767  template <int dim, int spacedim>
1769  const hp::DoFHandler<dim,spacedim> &dof,
1770  const Point<spacedim> &p,
1771  const Point<dim> &orientation,
1772  Vector<double> &rhs_vector);
1773 
1784  template <int dim, int spacedim>
1786  const Point<spacedim> &p,
1787  const Point<dim> &orientation,
1788  Vector<double> &rhs_vector);
1789 
1802  template <int dim, int spacedim>
1804  const DoFHandler<dim,spacedim> &dof,
1805  const Quadrature<dim-1> &q,
1806  const Function<spacedim> &rhs,
1807  Vector<double> &rhs_vector,
1808  const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
1809 
1818  template <int dim, int spacedim>
1820  const Quadrature<dim-1> &q,
1821  const Function<spacedim> &rhs,
1822  Vector<double> &rhs_vector,
1823  const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
1824 
1831  template <int dim, int spacedim>
1833  const hp::DoFHandler<dim,spacedim> &dof,
1834  const hp::QCollection<dim-1> &q,
1835  const Function<spacedim> &rhs,
1836  Vector<double> &rhs_vector,
1837  const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
1838 
1851  template <int dim, int spacedim>
1853  const hp::QCollection<dim-1> &q,
1854  const Function<spacedim> &rhs,
1855  Vector<double> &rhs_vector,
1856  const std::set<types::boundary_id> &boundary_indicators = std::set<types::boundary_id>());
1857 
1859 
1864 
1974  template <int dim, class InVector, class OutVector, int spacedim>
1975  void integrate_difference (const Mapping<dim,spacedim> &mapping,
1976  const DoFHandler<dim,spacedim> &dof,
1977  const InVector &fe_function,
1978  const Function<spacedim> &exact_solution,
1979  OutVector &difference,
1980  const Quadrature<dim> &q,
1981  const NormType &norm,
1982  const Function<spacedim> *weight = 0,
1983  const double exponent = 2.);
1984 
1990  template <int dim, class InVector, class OutVector, int spacedim>
1992  const InVector &fe_function,
1993  const Function<spacedim> &exact_solution,
1994  OutVector &difference,
1995  const Quadrature<dim> &q,
1996  const NormType &norm,
1997  const Function<spacedim> *weight = 0,
1998  const double exponent = 2.);
1999 
2003  template <int dim, class InVector, class OutVector, int spacedim>
2005  const hp::DoFHandler<dim,spacedim> &dof,
2006  const InVector &fe_function,
2007  const Function<spacedim> &exact_solution,
2008  OutVector &difference,
2009  const hp::QCollection<dim> &q,
2010  const NormType &norm,
2011  const Function<spacedim> *weight = 0,
2012  const double exponent = 2.);
2013 
2019  template <int dim, class InVector, class OutVector, int spacedim>
2021  const InVector &fe_function,
2022  const Function<spacedim> &exact_solution,
2023  OutVector &difference,
2024  const hp::QCollection<dim> &q,
2025  const NormType &norm,
2026  const Function<spacedim> *weight = 0,
2027  const double exponent = 2.);
2028 
2050  template <int dim, class InVector, int spacedim>
2051  void point_difference (const DoFHandler<dim,spacedim> &dof,
2052  const InVector &fe_function,
2053  const Function<spacedim> &exact_solution,
2054  Vector<double> &difference,
2055  const Point<spacedim> &point);
2056 
2079  template <int dim, class InVector, int spacedim>
2080  void point_difference (const Mapping<dim, spacedim> &mapping,
2081  const DoFHandler<dim,spacedim> &dof,
2082  const InVector &fe_function,
2083  const Function<spacedim> &exact_solution,
2084  Vector<double> &difference,
2085  const Point<spacedim> &point);
2086 
2107  template <int dim, class InVector, int spacedim>
2108  void
2110  const InVector &fe_function,
2111  const Point<spacedim> &point,
2112  Vector<double> &value);
2113 
2122  template <int dim, class InVector, int spacedim>
2123  void
2125  const InVector &fe_function,
2126  const Point<spacedim> &point,
2127  Vector<double> &value);
2128 
2152  template <int dim, class InVector, int spacedim>
2153  double
2155  const InVector &fe_function,
2156  const Point<spacedim> &point);
2157 
2166  template <int dim, class InVector, int spacedim>
2167  double
2169  const InVector &fe_function,
2170  const Point<spacedim> &point);
2171 
2192  template <int dim, class InVector, int spacedim>
2193  void
2194  point_value (const Mapping<dim, spacedim> &mapping,
2195  const DoFHandler<dim,spacedim> &dof,
2196  const InVector &fe_function,
2197  const Point<spacedim> &point,
2198  Vector<double> &value);
2199 
2208  template <int dim, class InVector, int spacedim>
2209  void
2211  const hp::DoFHandler<dim,spacedim> &dof,
2212  const InVector &fe_function,
2213  const Point<spacedim> &point,
2214  Vector<double> &value);
2215 
2234  template <int dim, class InVector, int spacedim>
2235  double
2236  point_value (const Mapping<dim,spacedim> &mapping,
2237  const DoFHandler<dim,spacedim> &dof,
2238  const InVector &fe_function,
2239  const Point<spacedim> &point);
2240 
2249  template <int dim, class InVector, int spacedim>
2250  double
2252  const hp::DoFHandler<dim,spacedim> &dof,
2253  const InVector &fe_function,
2254  const Point<spacedim> &point);
2255 
2257 
2261 
2310  template <class VECTOR>
2311  void subtract_mean_value(VECTOR &v,
2312  const std::vector<bool> &p_select = std::vector<bool>());
2313 
2314 
2338  template <int dim, class InVector, int spacedim>
2339  double compute_mean_value (const Mapping<dim, spacedim> &mapping,
2340  const DoFHandler<dim,spacedim> &dof,
2341  const Quadrature<dim> &quadrature,
2342  const InVector &v,
2343  const unsigned int component);
2344 
2349  template <int dim, class InVector, int spacedim>
2350  double compute_mean_value (const DoFHandler<dim,spacedim> &dof,
2351  const Quadrature<dim> &quadrature,
2352  const InVector &v,
2353  const unsigned int component);
2355 
2359  DeclException0 (ExcInvalidBoundaryIndicator);
2360 
2364  DeclException0 (ExcNonInterpolatingFE);
2365 
2369  DeclException0 (ExcPointNotAvailableHere);
2370 }
2371 
2372 
2373 DEAL_II_NAMESPACE_CLOSE
2374 
2375 #endif
void create_boundary_right_hand_side(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const Quadrature< dim-1 > &quadrature, const Function< spacedim > &rhs_function, Vector< double > &rhs_vector, const std::set< types::boundary_id > &boundary_indicators)
DeclException0(ExcInvalidBoundaryIndicator)
void interpolate(const Mapping< dim, spacedim > &mapping, const DH< dim, spacedim > &dof, const Function< spacedim > &function, VECTOR &vec)
std::map< types::boundary_id, const Function< dim > * > type
Definition: function_map.h:56
double compute_mean_value(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const Quadrature< dim > &quadrature, const InVector &v, const unsigned int component)
void create_right_hand_side(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const Quadrature< dim > &quadrature, const Function< spacedim > &rhs_function, Vector< double > &rhs_vector)
void integrate_difference(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const InVector &fe_function, const Function< spacedim > &exact_solution, OutVector &difference, const Quadrature< dim > &q, const NormType &norm, const Function< spacedim > *weight, const double exponent)
void compute_no_normal_flux_constraints(const DH< 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)
void point_value(const DoFHandler< dim, spacedim > &dof, const InVector &fe_function, const Point< spacedim > &point, Vector< double > &value)
void project_boundary_values(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const typename FunctionMap< spacedim >::type &boundary_functions, const Quadrature< dim-1 > &q, std::map< types::global_dof_index, double > &boundary_values, std::vector< unsigned int > component_mapping)
void project_boundary_values_curl_conforming(const DoFHandler< dim > &dof_handler, const unsigned int first_vector_component, const Function< dim > &boundary_function, const types::boundary_id boundary_component, ConstraintMatrix &constraints, const Mapping< dim > &mapping)
void interpolate_boundary_values(const Mapping< DH::dimension, DH::space_dimension > &mapping, const DH &dof, const typename FunctionMap< DH::space_dimension >::type &function_map, std::map< types::global_dof_index, double > &boundary_values, const ComponentMask &component_mask_)
void project_boundary_values_div_conforming(const DoFHandler< dim > &dof_handler, const unsigned int first_vector_component, const Function< dim > &boundary_function, const types::boundary_id boundary_component, ConstraintMatrix &constraints, const Mapping< dim > &mapping)
void create_point_source_vector(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const Point< spacedim > &p, Vector< double > &rhs_vector)
void project(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const ConstraintMatrix &constraints, const Quadrature< dim > &quadrature, const Function< spacedim > &function, VECTOR &vec_result, const bool enforce_zero_boundary, const Quadrature< dim-1 > &q_boundary, const bool project_to_boundary_first)
void point_difference(const DoFHandler< dim, spacedim > &dof, const InVector &fe_function, const Function< spacedim > &exact_function, Vector< double > &difference, const Point< spacedim > &point)
void subtract_mean_value(VECTOR &v, const std::vector< bool > &p_select)
unsigned char boundary_id
Definition: types.h:128
void compute_normal_flux_constraints(const DH< 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)