Reference documentation for deal.II version GIT 0b65fff18a 2023-09-27 19:30:02+00:00
\(\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\}}\)
dof_tools.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2023 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_dof_tools_h
17 #define dealii_dof_tools_h
18 
19 
20 #include <deal.II/base/config.h>
21 
23 #include <deal.II/base/index_set.h>
24 #include <deal.II/base/point.h>
25 
27 
29 
32 
33 #include <map>
34 #include <ostream>
35 #include <set>
36 #include <vector>
37 
38 
40 
41 // Forward declarations
42 #ifndef DOXYGEN
43 class BlockMask;
44 template <int dim, typename RangeNumberType>
45 class Function;
46 template <int dim, int spacedim>
47 class FiniteElement;
48 namespace hp
49 {
50  template <int dim, int spacedim>
51  class MappingCollection;
52  template <int dim, int spacedim>
53  class FECollection;
54 } // namespace hp
55 template <typename MeshType>
56 DEAL_II_CXX20_REQUIRES(concepts::is_triangulation_or_dof_handler<MeshType>)
57 class InterGridMap;
58 template <int dim, int spacedim>
59 class Mapping;
60 template <int dim, class T>
61 class Table;
62 template <typename Number>
63 class Vector;
64 
65 namespace GridTools
66 {
67  template <typename CellIterator>
68  struct PeriodicFacePair;
69 }
70 
71 namespace DoFTools
72 {
73  namespace internal
74  {
75  /*
76  * Default value of the face_has_flux_coupling parameter of
77  * make_flux_sparsity_pattern. Defined here (instead of using a default
78  * lambda in the parameter list) to avoid a bug in gcc where the same lambda
79  * gets defined multiple times.
80  */
81  template <int dim, int spacedim>
82  inline bool
83  always_couple_on_faces(
85  const unsigned int)
86  {
87  return true;
88  }
89  } // namespace internal
90 } // namespace DoFTools
91 
92 #endif
93 
225 namespace DoFTools
226 {
238  enum Coupling
239  {
255  nonzero
256  };
257 
270  template <int dim, int spacedim>
271  void
273  const Table<2, Coupling> &table_by_component,
274  std::vector<Table<2, Coupling>> &tables_by_block);
275 
281  template <int dim, int spacedim>
285  const Table<2, Coupling> &component_couplings);
286 
294  template <int dim, int spacedim>
295  std::vector<Table<2, Coupling>>
298  const Table<2, Coupling> &component_couplings);
422  template <int dim, int spacedim, typename number = double>
423  void
425  const DoFHandler<dim, spacedim> &dof_handler,
426  SparsityPatternBase &sparsity_pattern,
427  const AffineConstraints<number> &constraints = {},
428  const bool keep_constrained_dofs = true,
430 
496  template <int dim, int spacedim, typename number = double>
497  void
499  const DoFHandler<dim, spacedim> &dof_handler,
500  const Table<2, Coupling> &coupling,
501  SparsityPatternBase &sparsity_pattern,
502  const AffineConstraints<number> &constraints = {},
503  const bool keep_constrained_dofs = true,
505 
526  template <int dim, int spacedim>
527  void
529  const DoFHandler<dim, spacedim> &dof_col,
530  SparsityPatternBase &sparsity);
531 
577  template <int dim, int spacedim>
578  void
580  SparsityPatternBase &sparsity_pattern);
581 
590  template <int dim, int spacedim, typename number>
591  void
593  const DoFHandler<dim, spacedim> &dof_handler,
594  SparsityPatternBase &sparsity_pattern,
595  const AffineConstraints<number> &constraints,
596  const bool keep_constrained_dofs = true,
598 
599 
619  template <int dim, int spacedim>
620  void
622  const DoFHandler<dim, spacedim> &dof,
623  SparsityPatternBase &sparsity,
624  const Table<2, Coupling> &cell_integrals_mask,
625  const Table<2, Coupling> &face_integrals_mask,
627 
628 
655  template <int dim, int spacedim, typename number>
656  void
658  const DoFHandler<dim, spacedim> &dof,
659  SparsityPatternBase &sparsity,
660  const AffineConstraints<number> &constraints,
661  const bool keep_constrained_dofs,
662  const Table<2, Coupling> &couplings,
663  const Table<2, Coupling> &face_couplings,
665  const std::function<
667  const unsigned int)> &face_has_flux_coupling =
668  &internal::always_couple_on_faces<dim, spacedim>);
669 
679  template <int dim, int spacedim>
680  void
682  const DoFHandler<dim, spacedim> &dof,
683  const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
684  SparsityPatternBase &sparsity_pattern);
685 
703  template <int dim, int spacedim, typename number>
704  void
706  const DoFHandler<dim, spacedim> &dof,
707  const std::map<types::boundary_id, const Function<spacedim, number> *>
708  &boundary_ids,
709  const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
710  SparsityPatternBase &sparsity);
711 
759  template <int dim, int spacedim, typename number>
760  void
762  AffineConstraints<number> &constraints);
763 
831  template <int dim, int spacedim>
832  void
834  const DoFHandler<dim, spacedim> &coarse_grid,
835  const unsigned int coarse_component,
836  const DoFHandler<dim, spacedim> &fine_grid,
837  const unsigned int fine_component,
838  const InterGridMap<DoFHandler<dim, spacedim>> &coarse_to_fine_grid_map,
839  AffineConstraints<double> &constraints);
840 
841 
858  template <int dim, int spacedim>
859  void
861  const DoFHandler<dim, spacedim> &coarse_grid,
862  const unsigned int coarse_component,
863  const DoFHandler<dim, spacedim> &fine_grid,
864  const unsigned int fine_component,
865  const InterGridMap<DoFHandler<dim, spacedim>> &coarse_to_fine_grid_map,
866  std::vector<std::map<types::global_dof_index, float>>
867  &transfer_representation);
868 
1043  template <typename FaceIterator, typename number>
1044  void
1046  const FaceIterator &face_1,
1048  AffineConstraints<number> &constraints,
1049  const ComponentMask &component_mask = {},
1050  const bool face_orientation = true,
1051  const bool face_flip = false,
1052  const bool face_rotation = false,
1054  const std::vector<unsigned int> &first_vector_components =
1055  std::vector<unsigned int>(),
1056  const number periodicity_factor = 1.);
1057 
1058 
1078  template <int dim, int spacedim, typename number>
1079  void
1081  const std::vector<GridTools::PeriodicFacePair<
1082  typename DoFHandler<dim, spacedim>::cell_iterator>> &periodic_faces,
1083  AffineConstraints<number> &constraints,
1084  const ComponentMask &component_mask = {},
1085  const std::vector<unsigned int> &first_vector_components =
1086  std::vector<unsigned int>(),
1087  const number periodicity_factor = 1.);
1088 
1089 
1090 
1120  template <int dim, int spacedim, typename number>
1121  void
1123  const types::boundary_id b_id1,
1124  const types::boundary_id b_id2,
1125  const unsigned int direction,
1126  AffineConstraints<number> &constraints,
1127  const ComponentMask &component_mask = {},
1128  const number periodicity_factor = 1.);
1129 
1130 
1131 
1157  template <int dim, int spacedim, typename number>
1158  void
1160  const types::boundary_id b_id,
1161  const unsigned int direction,
1162  AffineConstraints<number> &constraints,
1163  const ComponentMask &component_mask = {},
1164  const number periodicity_factor = 1.);
1165 
1183  template <int dim, int spacedim>
1184  IndexSet
1186 
1219  template <int dim, int spacedim>
1220  IndexSet
1221  extract_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1222  const ComponentMask &component_mask);
1223 
1247  template <int dim, int spacedim>
1248  IndexSet
1249  extract_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1250  const BlockMask &block_mask);
1251 
1256  template <int dim, int spacedim>
1257  void
1258  extract_level_dofs(const unsigned int level,
1259  const DoFHandler<dim, spacedim> &dof,
1260  const ComponentMask &component_mask,
1261  std::vector<bool> &selected_dofs);
1262 
1267  template <int dim, int spacedim>
1268  void
1269  extract_level_dofs(const unsigned int level,
1270  const DoFHandler<dim, spacedim> &dof,
1271  const BlockMask &component_mask,
1272  std::vector<bool> &selected_dofs);
1273 
1316  template <int dim, int spacedim>
1317  IndexSet
1319  const ComponentMask &component_mask = {},
1320  const std::set<types::boundary_id> &boundary_ids = {});
1321 
1338  template <int dim, int spacedim>
1339  void
1341  const DoFHandler<dim, spacedim> &dof_handler,
1342  const ComponentMask &component_mask,
1343  std::vector<bool> &selected_dofs,
1344  const std::set<types::boundary_id> &boundary_ids =
1345  std::set<types::boundary_id>());
1346 
1374  template <int dim, int spacedim, typename number = double>
1375  IndexSet
1377  const DoFHandler<dim, spacedim> &dof_handler,
1378  const std::function<
1379  bool(const typename DoFHandler<dim, spacedim>::active_cell_iterator &)>
1380  &predicate,
1381  const AffineConstraints<number> &constraints = {});
1382 
1418  template <int dim, int spacedim>
1419  void
1421  const ComponentMask &component_mask,
1422  std::vector<std::vector<bool>> &constant_modes);
1509  template <int dim, int spacedim>
1510  std::map<typename DoFHandler<dim - 1, spacedim>::active_cell_iterator,
1511  std::pair<typename DoFHandler<dim, spacedim>::active_cell_iterator,
1512  unsigned int>>
1514  const std::map<typename Triangulation<dim - 1, spacedim>::cell_iterator,
1516  &c1_to_c0,
1517  const DoFHandler<dim, spacedim> &c0_dh,
1518  const DoFHandler<dim - 1, spacedim> &c1_dh);
1519 
1537  template <int dim, int spacedim>
1538  void
1541  std::vector<bool> &selected_dofs);
1542 
1557  template <int dim, int spacedim>
1558  IndexSet
1560 
1577  template <int dim, int spacedim>
1578  DEAL_II_DEPRECATED_EARLY void
1580  IndexSet &dof_set);
1581 
1588  template <int dim, int spacedim>
1589  IndexSet
1591  const DoFHandler<dim, spacedim> &dof_handler,
1592  const unsigned int level);
1593 
1602  template <int dim, int spacedim>
1603  DEAL_II_DEPRECATED_EARLY void
1605  const DoFHandler<dim, spacedim> &dof_handler,
1606  IndexSet &dof_set,
1607  const unsigned int level);
1608 
1618  template <int dim, int spacedim>
1619  IndexSet
1621 
1632  template <int dim, int spacedim>
1633  DEAL_II_DEPRECATED_EARLY void
1635  IndexSet &dof_set);
1636 
1646  template <int dim, int spacedim>
1647  std::vector<IndexSet>
1649  const ComponentMask &components = {});
1650 
1664  template <int dim, int spacedim>
1665  std::vector<IndexSet>
1667  const DoFHandler<dim, spacedim> &dof_handler);
1668 
1683  template <int dim, int spacedim>
1684  std::vector<IndexSet>
1686  const DoFHandler<dim, spacedim> &dof_handler);
1687 
1692  template <int dim, int spacedim>
1693  IndexSet
1695  const DoFHandler<dim, spacedim> &dof_handler,
1696  const unsigned int level);
1697 
1704  template <int dim, int spacedim>
1705  DEAL_II_DEPRECATED_EARLY void
1707  const DoFHandler<dim, spacedim> &dof_handler,
1708  const unsigned int level,
1709  IndexSet &dof_set);
1710 
1711 
1742  template <int dim, int spacedim>
1743  void
1745  std::vector<types::subdomain_id> &subdomain);
1746 
1772  template <int dim, int spacedim>
1773  unsigned int
1775  const DoFHandler<dim, spacedim> &dof_handler,
1776  const types::subdomain_id subdomain);
1777 
1797  template <int dim, int spacedim>
1798  void
1800  const DoFHandler<dim, spacedim> &dof_handler,
1801  const types::subdomain_id subdomain,
1802  std::vector<unsigned int> &n_dofs_on_subdomain);
1803 
1825  template <int dim, int spacedim>
1826  IndexSet
1828  const DoFHandler<dim, spacedim> &dof_handler,
1829  const types::subdomain_id subdomain);
1886  template <int dim, int spacedim>
1887  std::vector<types::global_dof_index>
1889  const std::vector<typename DoFHandler<dim, spacedim>::active_cell_iterator>
1890  &patch);
1891 
1912  template <int dim, int spacedim>
1913  void
1914  make_cell_patches(SparsityPattern &block_list,
1915  const DoFHandler<dim, spacedim> &dof_handler,
1916  const unsigned int level,
1917  const std::vector<bool> &selected_dofs = {},
1918  const types::global_dof_index offset = 0);
1919 
1971  template <int dim, int spacedim>
1972  std::vector<unsigned int>
1974  const DoFHandler<dim, spacedim> &dof_handler,
1975  const unsigned int level,
1976  const bool interior_dofs_only,
1977  const bool boundary_patches = false,
1978  const bool level_boundary_patches = false,
1979  const bool single_cell_patches = false,
1980  const bool invert_vertex_mapping = false);
1981 
1996  template <int dim, int spacedim>
1997  std::vector<unsigned int>
1999  const DoFHandler<dim, spacedim> &dof_handler,
2000  const unsigned int level,
2001  const BlockMask &exclude_boundary_dofs = BlockMask(),
2002  const bool boundary_patches = false,
2003  const bool level_boundary_patches = false,
2004  const bool single_cell_patches = false,
2005  const bool invert_vertex_mapping = false);
2006 
2044  template <int dim, int spacedim>
2045  void
2046  make_child_patches(SparsityPattern &block_list,
2047  const DoFHandler<dim, spacedim> &dof_handler,
2048  const unsigned int level,
2049  const bool interior_dofs_only,
2050  const bool boundary_dofs = false);
2051 
2071  template <int dim, int spacedim>
2072  void
2073  make_single_patch(SparsityPattern &block_list,
2074  const DoFHandler<dim, spacedim> &dof_handler,
2075  const unsigned int level,
2076  const bool interior_dofs_only = false);
2077 
2120  template <int dim, int spacedim>
2121  std::vector<types::global_dof_index>
2123  const DoFHandler<dim, spacedim> &dof_handler,
2124  const bool vector_valued_once = false,
2125  const std::vector<unsigned int> &target_component = {});
2126 
2143  template <int dim, int spacedim>
2144  std::vector<types::global_dof_index>
2146  const std::vector<unsigned int> &target_block =
2147  std::vector<unsigned int>());
2148 
2164  template <int dim, int spacedim>
2165  DEAL_II_DEPRECATED void
2167  std::vector<unsigned int> &active_fe_indices);
2168 
2196  template <int dim, int spacedim>
2197  unsigned int
2199  const std::vector<typename DoFHandler<dim, spacedim>::active_cell_iterator>
2200  &patch);
2201 
2224  template <int dim, int spacedim>
2225  void
2227  std::vector<types::global_dof_index> &mapping);
2228 
2239  template <int dim, int spacedim>
2240  void
2242  const std::set<types::boundary_id> &boundary_ids,
2243  std::vector<types::global_dof_index> &mapping);
2244 
2273  template <int dim, int spacedim>
2274  void
2276  const DoFHandler<dim, spacedim> &dof_handler,
2277  std::vector<Point<spacedim>> &support_points,
2278  const ComponentMask &mask = {});
2279 
2283  template <int dim, int spacedim>
2284  void
2286  const hp::MappingCollection<dim, spacedim> &mapping,
2287  const DoFHandler<dim, spacedim> &dof_handler,
2288  std::vector<Point<spacedim>> &support_points,
2289  const ComponentMask &mask = {});
2290 
2320  template <int dim, int spacedim>
2321  std::map<types::global_dof_index, Point<spacedim>>
2323  const DoFHandler<dim, spacedim> &dof_handler,
2324  const ComponentMask &mask = {});
2325 
2329  template <int dim, int spacedim>
2330  std::map<types::global_dof_index, Point<spacedim>>
2332  const hp::MappingCollection<dim, spacedim> &mapping,
2333  const DoFHandler<dim, spacedim> &dof_handler,
2334  const ComponentMask &mask = {});
2335 
2341  template <int dim, int spacedim>
2342  DEAL_II_DEPRECATED void
2344  const Mapping<dim, spacedim> &mapping,
2345  const DoFHandler<dim, spacedim> &dof_handler,
2346  std::map<types::global_dof_index, Point<spacedim>> &support_points,
2347  const ComponentMask &mask = {});
2348 
2354  template <int dim, int spacedim>
2355  DEAL_II_DEPRECATED void
2357  const hp::MappingCollection<dim, spacedim> &mapping,
2358  const DoFHandler<dim, spacedim> &dof_handler,
2359  std::map<types::global_dof_index, Point<spacedim>> &support_points,
2360  const ComponentMask &mask = {});
2361 
2362 
2383  template <int dim, int spacedim, class Comp>
2384  void
2386  const Mapping<dim, spacedim> &mapping,
2387  const DoFHandler<dim, spacedim> &dof_handler,
2388  std::map<Point<spacedim>, types::global_dof_index, Comp>
2389  &point_to_index_map);
2427  template <int dim, int spacedim, typename Number>
2428  void
2430  const Vector<Number> &cell_data,
2431  Vector<double> &dof_data,
2432  const unsigned int component = 0);
2433 
2434 
2512  template <int spacedim>
2513  void
2515  std::ostream &out,
2516  const std::map<types::global_dof_index, Point<spacedim>> &support_points);
2517 
2518 
2559  template <int dim, int spacedim, typename number>
2560  void
2562  const DoFHandler<dim, spacedim> &dof,
2564  AffineConstraints<number> &zero_boundary_constraints,
2565  const ComponentMask &component_mask = {});
2566 
2577  template <int dim, int spacedim, typename number>
2578  void
2580  const DoFHandler<dim, spacedim> &dof,
2581  AffineConstraints<number> &zero_boundary_constraints,
2582  const ComponentMask &component_mask = {});
2583 
2628 } // namespace DoFTools
2629 
2630 
2631 
2632 /* ------------------------- inline functions -------------- */
2633 
2634 #ifndef DOXYGEN
2635 
2636 namespace DoFTools
2637 {
2643  inline Coupling
2644  operator|=(Coupling &c1, const Coupling c2)
2645  {
2646  if (c2 == always)
2647  c1 = always;
2648  else if (c1 != always && c2 == nonzero)
2649  return c1 = nonzero;
2650  return c1;
2651  }
2652 
2653 
2659  inline Coupling
2660  operator|(const Coupling c1, const Coupling c2)
2661  {
2662  if (c1 == always || c2 == always)
2663  return always;
2664  if (c1 == nonzero || c2 == nonzero)
2665  return nonzero;
2666  return none;
2667  }
2668 
2669 
2670  // ---------------------- inline and template functions --------------------
2671 
2672  template <int dim, int spacedim, class Comp>
2673  void
2675  const Mapping<dim, spacedim> &mapping,
2676  const DoFHandler<dim, spacedim> &dof_handler,
2677  std::map<Point<spacedim>, types::global_dof_index, Comp>
2678  &point_to_index_map)
2679  {
2680  // let the checking of arguments be
2681  // done by the function first
2682  // called
2683  std::vector<Point<spacedim>> support_points(dof_handler.n_dofs());
2684  map_dofs_to_support_points(mapping, dof_handler, support_points);
2685  // now copy over the results of the
2686  // previous function into the
2687  // output arg
2688  point_to_index_map.clear();
2689  for (types::global_dof_index i = 0; i < dof_handler.n_dofs(); ++i)
2690  point_to_index_map[support_points[i]] = i;
2691  }
2692 } // namespace DoFTools
2693 
2694 #endif
2695 
2697 
2698 #endif
types::global_dof_index n_dofs() const
Abstract base class for mapping classes.
Definition: mapping.h:317
Definition: vector.h:110
#define DEAL_II_DEPRECATED
Definition: config.h:178
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:477
#define DEAL_II_CXX20_REQUIRES(condition)
Definition: config.h:166
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:478
unsigned int level
Definition: grid_out.cc:4617
#define DeclException0(Exception0)
Definition: exceptions.h:467
static ::ExceptionBase & ExcGridsDontMatch()
static ::ExceptionBase & ExcGridNotCoarser()
static ::ExceptionBase & ExcNoFESelected()
static ::ExceptionBase & ExcInvalidBoundaryIndicator()
static ::ExceptionBase & ExcFiniteElementsDontMatch()
void make_hanging_node_constraints(const DoFHandler< dim, spacedim > &dof_handler, AffineConstraints< number > &constraints)
void make_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity_pattern, const AffineConstraints< number > &constraints={}, const bool keep_constrained_dofs=true, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id)
void make_zero_boundary_constraints(const DoFHandler< dim, spacedim > &dof, const types::boundary_id boundary_id, AffineConstraints< number > &zero_boundary_constraints, const ComponentMask &component_mask={})
void compute_intergrid_constraints(const DoFHandler< dim, spacedim > &coarse_grid, const unsigned int coarse_component, const DoFHandler< dim, spacedim > &fine_grid, const unsigned int fine_component, const InterGridMap< DoFHandler< dim, spacedim >> &coarse_to_fine_grid_map, AffineConstraints< double > &constraints)
void make_flux_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity_pattern)
void make_boundary_sparsity_pattern(const DoFHandler< dim, spacedim > &dof, const std::vector< types::global_dof_index > &dof_to_boundary_mapping, SparsityPatternBase &sparsity_pattern)
void compute_intergrid_transfer_representation(const DoFHandler< dim, spacedim > &coarse_grid, const unsigned int coarse_component, const DoFHandler< dim, spacedim > &fine_grid, const unsigned int fine_component, const InterGridMap< DoFHandler< dim, spacedim >> &coarse_to_fine_grid_map, std::vector< std::map< types::global_dof_index, float >> &transfer_representation)
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
void get_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::subdomain_id > &subdomain)
Definition: dof_tools.cc:1596
IndexSet dof_indices_with_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
Definition: dof_tools.cc:1703
IndexSet extract_dofs_with_support_contained_within(const DoFHandler< dim, spacedim > &dof_handler, const std::function< bool(const typename DoFHandler< dim, spacedim >::active_cell_iterator &)> &predicate, const AffineConstraints< number > &constraints={})
Definition: dof_tools.cc:796
void write_gnuplot_dof_support_point_info(std::ostream &out, const std::map< types::global_dof_index, Point< spacedim >> &support_points)
Definition: dof_tools.cc:2408
std::vector< IndexSet > locally_owned_dofs_per_subdomain(const DoFHandler< dim, spacedim > &dof_handler)
Definition: dof_tools.cc:1425
IndexSet extract_boundary_dofs(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={}, const std::set< types::boundary_id > &boundary_ids={})
Definition: dof_tools.cc:586
IndexSet extract_locally_relevant_dofs(const DoFHandler< dim, spacedim > &dof_handler)
Definition: dof_tools.cc:1136
void map_support_points_to_dofs(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::map< Point< spacedim >, types::global_dof_index, Comp > &point_to_index_map)
std::map< typename DoFHandler< dim - 1, spacedim >::active_cell_iterator, std::pair< typename DoFHandler< dim, spacedim >::active_cell_iterator, unsigned int > > map_boundary_to_bulk_dof_iterators(const std::map< typename Triangulation< dim - 1, spacedim >::cell_iterator, typename Triangulation< dim, spacedim >::face_iterator > &c1_to_c0, const DoFHandler< dim, spacedim > &c0_dh, const DoFHandler< dim - 1, spacedim > &c1_dh)
Definition: dof_tools.cc:1360
void map_dofs_to_support_points(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::vector< Point< spacedim >> &support_points, const ComponentMask &mask={})
Definition: dof_tools.cc:2293
void get_active_fe_indices(const DoFHandler< dim, spacedim > &dof_handler, std::vector< unsigned int > &active_fe_indices)
Definition: dof_tools.cc:1412
void make_cell_patches(SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const std::vector< bool > &selected_dofs={}, const types::global_dof_index offset=0)
Definition: dof_tools.cc:2500
IndexSet extract_dofs(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask)
Definition: dof_tools.cc:386
IndexSet extract_locally_active_dofs(const DoFHandler< dim, spacedim > &dof_handler)
Definition: dof_tools.cc:1044
void convert_couplings_to_blocks(const DoFHandler< dim, spacedim > &dof_handler, const Table< 2, Coupling > &table_by_component, std::vector< Table< 2, Coupling >> &tables_by_block)
Definition: dof_tools.cc:2447
IndexSet extract_locally_relevant_level_dofs(const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
Definition: dof_tools.cc:1184
void extract_subdomain_dofs(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain_id, std::vector< bool > &selected_dofs)
Definition: dof_tools.cc:1013
IndexSet extract_locally_active_level_dofs(const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
Definition: dof_tools.cc:1087
std::vector< unsigned int > make_vertex_patches(SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only, const bool boundary_patches=false, const bool level_boundary_patches=false, const bool single_cell_patches=false, const bool invert_vertex_mapping=false)
Definition: dof_tools.cc:2648
std::vector< types::global_dof_index > count_dofs_per_fe_block(const DoFHandler< dim, spacedim > &dof, const std::vector< unsigned int > &target_block=std::vector< unsigned int >())
Definition: dof_tools.cc:2017
void extract_level_dofs(const unsigned int level, const DoFHandler< dim, spacedim > &dof, const ComponentMask &component_mask, std::vector< bool > &selected_dofs)
Definition: dof_tools.cc:473
void extract_dofs_with_support_on_boundary(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< bool > &selected_dofs, const std::set< types::boundary_id > &boundary_ids=std::set< types::boundary_id >())
Definition: dof_tools.cc:714
void distribute_cell_to_dof_vector(const DoFHandler< dim, spacedim > &dof_handler, const Vector< Number > &cell_data, Vector< double > &dof_data, const unsigned int component=0)
Definition: dof_tools.cc:302
std::vector< types::global_dof_index > count_dofs_per_fe_component(const DoFHandler< dim, spacedim > &dof_handler, const bool vector_valued_once=false, const std::vector< unsigned int > &target_component={})
Definition: dof_tools.cc:1925
void make_child_patches(SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only, const bool boundary_dofs=false)
Definition: dof_tools.cc:2585
void map_dof_to_boundary_indices(const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::global_dof_index > &mapping)
Definition: dof_tools.cc:2106
std::vector< IndexSet > locally_relevant_dofs_per_subdomain(const DoFHandler< dim, spacedim > &dof_handler)
Definition: dof_tools.cc:1520
void make_single_patch(SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only=false)
Definition: dof_tools.cc:2543
std::vector< types::global_dof_index > get_dofs_on_patch(const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)
Definition: dof_tools.cc:2849
std::vector< IndexSet > locally_owned_dofs_per_component(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &components={})
Definition: dof_tools.cc:439
unsigned int count_dofs_with_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
Definition: dof_tools.cc:1686
unsigned int count_dofs_on_patch(const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)
Definition: dof_tools.cc:2818
Table< 2, Coupling > dof_couplings_from_component_couplings(const FiniteElement< dim, spacedim > &fe, const Table< 2, Coupling > &component_couplings)
IndexSet extract_hanging_node_dofs(const DoFHandler< dim, spacedim > &dof_handler)
Definition: dof_tools.cc:1004
void make_periodicity_constraints(const FaceIterator &face_1, const std_cxx20::type_identity_t< FaceIterator > &face_2, AffineConstraints< number > &constraints, const ComponentMask &component_mask={}, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false, const FullMatrix< double > &matrix=FullMatrix< double >(), const std::vector< unsigned int > &first_vector_components=std::vector< unsigned int >(), const number periodicity_factor=1.)
void extract_constant_modes(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< std::vector< bool >> &constant_modes)
Definition: dof_tools.cc:1242
@ matrix
Contents is actually a matrix.
Definition: hp.h:118
const types::subdomain_id invalid_subdomain_id
Definition: types.h:298
typename type_identity< T >::type type_identity_t
Definition: type_traits.h:96
unsigned int global_dof_index
Definition: types.h:82
unsigned int subdomain_id
Definition: types.h:44
unsigned int boundary_id
Definition: types.h:141
ParameterHandler::OutputStyle operator|(const ParameterHandler::OutputStyle f1, const ParameterHandler::OutputStyle f2)