deal.II version 9.8.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\}}\)
Loading...
Searching...
No Matches
dof_tools.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 1999 - 2026 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_dof_tools_h
14#define dealii_dof_tools_h
15
16
17#include <deal.II/base/config.h>
18
21#include <deal.II/base/point.h>
22#include <deal.II/base/types.h>
23
25
27
30
31#include <map>
32#include <ostream>
33#include <set>
34#include <vector>
35
36
38
39// Forward declarations
40#ifndef DOXYGEN
41class BlockMask;
42template <int dim, typename RangeNumberType>
43class Function;
44template <int dim, int spacedim>
45class FiniteElement;
46namespace hp
47{
48 template <int dim, int spacedim>
50 template <int dim, int spacedim>
51 class FECollection;
52} // namespace hp
53template <typename MeshType>
55class InterGridMap;
56template <int dim, int spacedim>
57class Mapping;
58template <int dim, class T>
59class Table;
60template <typename Number>
61class Vector;
62
63namespace GridTools
64{
65 template <typename CellIterator>
66 struct PeriodicFacePair;
67}
68
69namespace DoFTools
70{
71 namespace internal
72 {
73 /*
74 * Default value of the face_has_flux_coupling parameter of
75 * make_flux_sparsity_pattern. Defined here (instead of using a default
76 * lambda in the parameter list) to avoid a bug in gcc where the same lambda
77 * gets defined multiple times.
78 */
79 template <int dim, int spacedim>
80 inline bool
81 always_couple_on_faces(
83 const unsigned int)
84 {
85 return true;
86 }
87 } // namespace internal
88} // namespace DoFTools
89
90#endif
91
224namespace DoFTools
225{
256
261
269 template <int dim, int spacedim>
270 void
272 const Table<2, Coupling> &table_by_component,
273 std::vector<Table<2, Coupling>> &tables_by_block);
274
280 template <int dim, int spacedim>
284 const Table<2, Coupling> &component_couplings);
285
293 template <int dim, int spacedim>
294 std::vector<Table<2, Coupling>>
297 const Table<2, Coupling> &component_couplings);
299
304
421 template <int dim, int spacedim, typename number = double>
422 void
424 const DoFHandler<dim, spacedim> &dof_handler,
425 SparsityPatternBase &sparsity_pattern,
426 const AffineConstraints<number> &constraints = {},
427 const bool keep_constrained_dofs = true,
429
495 template <int dim, int spacedim, typename number = double>
496 void
498 const DoFHandler<dim, spacedim> &dof_handler,
499 const Table<2, Coupling> &coupling,
500 SparsityPatternBase &sparsity_pattern,
501 const AffineConstraints<number> &constraints = {},
502 const bool keep_constrained_dofs = true,
504
525 template <int dim, int spacedim>
526 void
527 make_sparsity_pattern(const DoFHandler<dim, spacedim> &dof_row,
528 const DoFHandler<dim, spacedim> &dof_col,
529 SparsityPatternBase &sparsity);
530
576 template <int dim, int spacedim>
577 void
578 make_flux_sparsity_pattern(const DoFHandler<dim, spacedim> &dof_handler,
579 SparsityPatternBase &sparsity_pattern);
580
589 template <int dim, int spacedim, typename number>
590 void
592 const DoFHandler<dim, spacedim> &dof_handler,
593 SparsityPatternBase &sparsity_pattern,
594 const AffineConstraints<number> &constraints,
595 const bool keep_constrained_dofs = true,
597
598
618 template <int dim, int spacedim>
619 void
621 const DoFHandler<dim, spacedim> &dof,
622 SparsityPatternBase &sparsity,
623 const Table<2, Coupling> &cell_integrals_mask,
624 const Table<2, Coupling> &face_integrals_mask,
626
627
654 template <int dim, int spacedim, typename number>
655 void
657 const DoFHandler<dim, spacedim> &dof,
658 SparsityPatternBase &sparsity,
659 const AffineConstraints<number> &constraints,
660 const bool keep_constrained_dofs,
661 const Table<2, Coupling> &couplings,
662 const Table<2, Coupling> &face_couplings,
663 const types::subdomain_id subdomain_id,
664 const std::function<
666 const unsigned int)> &face_has_flux_coupling =
667 &internal::always_couple_on_faces<dim, spacedim>);
668
678 template <int dim, int spacedim>
679 void
681 const DoFHandler<dim, spacedim> &dof,
682 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
683 SparsityPatternBase &sparsity_pattern);
684
702 template <int dim, int spacedim, typename number>
703 void
705 const DoFHandler<dim, spacedim> &dof,
706 const std::map<types::boundary_id, const Function<spacedim, number> *>
707 &boundary_ids,
708 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
709 SparsityPatternBase &sparsity);
710
714
719
758 template <int dim, int spacedim, typename number>
759 void
760 make_hanging_node_constraints(const DoFHandler<dim, spacedim> &dof_handler,
761 AffineConstraints<number> &constraints);
762
830 template <int dim, int spacedim>
831 void
833 const DoFHandler<dim, spacedim> &coarse_grid,
834 const unsigned int coarse_component,
835 const DoFHandler<dim, spacedim> &fine_grid,
836 const unsigned int fine_component,
837 const InterGridMap<DoFHandler<dim, spacedim>> &coarse_to_fine_grid_map,
838 AffineConstraints<double> &constraints);
839
840
857 template <int dim, int spacedim>
858 void
860 const DoFHandler<dim, spacedim> &coarse_grid,
861 const unsigned int coarse_component,
862 const DoFHandler<dim, spacedim> &fine_grid,
863 const unsigned int fine_component,
864 const InterGridMap<DoFHandler<dim, spacedim>> &coarse_to_fine_grid_map,
865 std::vector<std::map<types::global_dof_index, float>>
866 &transfer_representation);
867
871
872
877
954 template <typename FaceIterator, typename number>
955 void
957 const FaceIterator &face_1,
958 const std_cxx20::type_identity_t<FaceIterator> &face_2,
959 AffineConstraints<number> &constraints,
960 const ComponentMask &component_mask = {},
961 const types::geometric_orientation combined_orientation =
963 const FullMatrix<double> &matrix = FullMatrix<double>(),
964 const std::vector<unsigned int> &first_vector_components =
965 std::vector<unsigned int>(),
966 const number periodicity_factor = 1.);
967
968
988 template <int dim, int spacedim, typename number>
989 void
991 const std::vector<GridTools::PeriodicFacePair<
992 typename DoFHandler<dim, spacedim>::cell_iterator>> &periodic_faces,
993 AffineConstraints<number> &constraints,
994 const ComponentMask &component_mask = {},
995 const std::vector<unsigned int> &first_vector_components =
996 std::vector<unsigned int>(),
997 const number periodicity_factor = 1.);
998
999
1000
1030 template <int dim, int spacedim, typename number>
1031 void
1033 const types::boundary_id b_id1,
1034 const types::boundary_id b_id2,
1035 const unsigned int direction,
1036 AffineConstraints<number> &constraints,
1037 const ComponentMask &component_mask = {},
1038 const number periodicity_factor = 1.);
1039
1040
1041
1063 template <int dim, int spacedim, typename number>
1064 void
1066 const types::boundary_id b_id,
1067 const unsigned int direction,
1068 AffineConstraints<number> &constraints,
1069 const ComponentMask &component_mask = {},
1070 const number periodicity_factor = 1.);
1071
1072 namespace internal
1073 {
1100 template <typename FaceIterator, typename number>
1101 void
1103 const FaceIterator &face_1,
1104 const std_cxx20::type_identity_t<FaceIterator> &face_2,
1105 const FullMatrix<double> &transformation,
1106 AffineConstraints<number> &affine_constraints,
1107 const ComponentMask &component_mask,
1108 const types::geometric_orientation combined_orientation,
1109 const number periodicity_factor,
1110 const unsigned int level = numbers::invalid_unsigned_int);
1111 } // namespace internal
1112
1116
1121
1130 template <int dim, int spacedim>
1131 IndexSet
1133
1169 template <int dim, int spacedim>
1170 IndexSet
1171 extract_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1172 const ComponentMask &component_mask);
1173
1197 template <int dim, int spacedim>
1198 IndexSet
1199 extract_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1200 const BlockMask &block_mask);
1201
1206 template <int dim, int spacedim>
1207 void
1208 extract_level_dofs(const unsigned int level,
1209 const DoFHandler<dim, spacedim> &dof,
1210 const ComponentMask &component_mask,
1211 std::vector<bool> &selected_dofs);
1212
1217 template <int dim, int spacedim>
1218 void
1219 extract_level_dofs(const unsigned int level,
1220 const DoFHandler<dim, spacedim> &dof,
1221 const BlockMask &component_mask,
1222 std::vector<bool> &selected_dofs);
1223
1266 template <int dim, int spacedim>
1267 IndexSet
1269 const ComponentMask &component_mask = {},
1270 const std::set<types::boundary_id> &boundary_ids = {});
1271
1288 template <int dim, int spacedim>
1289 void
1291 const DoFHandler<dim, spacedim> &dof_handler,
1292 const ComponentMask &component_mask,
1293 std::vector<bool> &selected_dofs,
1294 const std::set<types::boundary_id> &boundary_ids =
1295 std::set<types::boundary_id>());
1296
1338 template <int dim, int spacedim, typename number = double>
1339 IndexSet
1341 const DoFHandler<dim, spacedim> &dof_handler,
1342 const std::function<
1344 &predicate,
1345 const AffineConstraints<number> &constraints = {});
1346
1382 template <int dim, int spacedim>
1383 std::vector<std::vector<bool>>
1384 extract_constant_modes(const DoFHandler<dim, spacedim> &dof_handler,
1385 const ComponentMask &component_mask = {});
1386
1392 template <int dim, int spacedim>
1394 "Use the other function that returns the constant modes by value, rather than via an argument.")
1395 void extract_constant_modes(const DoFHandler<dim, spacedim> &dof_handler,
1396 const ComponentMask &component_mask,
1397 std::vector<std::vector<bool>> &constant_modes);
1398
1402 template <int dim, int spacedim>
1403 std::vector<std::vector<bool>>
1404 extract_level_constant_modes(const unsigned int level,
1405 const DoFHandler<dim, spacedim> &dof_handler,
1406 const ComponentMask &component_mask = {});
1407
1413 template <int dim, int spacedim>
1415 "Use the other function that returns the constant modes by value, rather than via an argument.")
1417 const unsigned int level,
1418 const DoFHandler<dim, spacedim> &dof_handler,
1419 const ComponentMask &component_mask,
1420 std::vector<std::vector<bool>> &constant_modes);
1421
1427 template <int dim, int spacedim>
1428 std::vector<std::vector<double>>
1429 extract_rigid_body_modes(const Mapping<dim, spacedim> &mapping,
1430 const DoFHandler<dim, spacedim> &dof_handler,
1431 const ComponentMask &component_mask = {});
1432
1436 template <int dim, int spacedim>
1437 std::vector<std::vector<double>>
1438 extract_level_rigid_body_modes(const unsigned int level,
1439 const Mapping<dim, spacedim> &mapping,
1440 const DoFHandler<dim, spacedim> &dof_handler,
1441 const ComponentMask &component_mask = {});
1443
1448
1528 template <int dim, int spacedim>
1529 std::map<typename DoFHandler<dim - 1, spacedim>::active_cell_iterator,
1530 std::pair<typename DoFHandler<dim, spacedim>::active_cell_iterator,
1531 unsigned int>>
1535 &c1_to_c0,
1536 const DoFHandler<dim, spacedim> &c0_dh,
1537 const DoFHandler<dim - 1, spacedim> &c1_dh);
1538
1542
1556 template <int dim, int spacedim>
1557 void
1558 extract_subdomain_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1559 const types::subdomain_id subdomain_id,
1560 std::vector<bool> &selected_dofs);
1561
1576 template <int dim, int spacedim>
1577 IndexSet
1578 extract_locally_active_dofs(const DoFHandler<dim, spacedim> &dof_handler);
1579
1596 template <int dim, int spacedim>
1598 extract_locally_active_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1599 IndexSet &dof_set);
1600
1607 template <int dim, int spacedim>
1608 IndexSet
1610 const DoFHandler<dim, spacedim> &dof_handler,
1611 const unsigned int level);
1612
1621 template <int dim, int spacedim>
1624 const DoFHandler<dim, spacedim> &dof_handler,
1625 IndexSet &dof_set,
1626 const unsigned int level);
1627
1637 template <int dim, int spacedim>
1638 IndexSet
1639 extract_locally_relevant_dofs(const DoFHandler<dim, spacedim> &dof_handler);
1640
1651 template <int dim, int spacedim>
1653 extract_locally_relevant_dofs(const DoFHandler<dim, spacedim> &dof_handler,
1654 IndexSet &dof_set);
1655
1665 template <int dim, int spacedim>
1666 std::vector<IndexSet>
1667 locally_owned_dofs_per_component(const DoFHandler<dim, spacedim> &dof_handler,
1668 const ComponentMask &components = {});
1669
1683 template <int dim, int spacedim>
1684 std::vector<IndexSet>
1686 const DoFHandler<dim, spacedim> &dof_handler);
1687
1702 template <int dim, int spacedim>
1703 std::vector<IndexSet>
1705 const DoFHandler<dim, spacedim> &dof_handler);
1706
1711 template <int dim, int spacedim>
1712 IndexSet
1714 const DoFHandler<dim, spacedim> &dof_handler,
1715 const unsigned int level);
1716
1723 template <int dim, int spacedim>
1726 const DoFHandler<dim, spacedim> &dof_handler,
1727 const unsigned int level,
1728 IndexSet &dof_set);
1729
1730
1761 template <int dim, int spacedim>
1762 void
1763 get_subdomain_association(const DoFHandler<dim, spacedim> &dof_handler,
1764 std::vector<types::subdomain_id> &subdomain);
1765
1791 template <int dim, int spacedim>
1792 unsigned int
1794 const DoFHandler<dim, spacedim> &dof_handler,
1795 const types::subdomain_id subdomain);
1796
1816 template <int dim, int spacedim>
1817 void
1819 const DoFHandler<dim, spacedim> &dof_handler,
1820 const types::subdomain_id subdomain,
1821 std::vector<unsigned int> &n_dofs_on_subdomain);
1822
1844 template <int dim, int spacedim>
1845 IndexSet
1847 const DoFHandler<dim, spacedim> &dof_handler,
1848 const types::subdomain_id subdomain);
1850
1860
1905 template <int dim, int spacedim>
1906 std::vector<types::global_dof_index>
1908 const std::vector<typename DoFHandler<dim, spacedim>::active_cell_iterator>
1909 &patch);
1910
1931 template <int dim, int spacedim>
1932 void
1933 make_cell_patches(SparsityPattern &block_list,
1934 const DoFHandler<dim, spacedim> &dof_handler,
1935 const unsigned int level,
1936 const std::vector<bool> &selected_dofs = {},
1937 const types::global_dof_index offset = 0);
1938
1992 template <int dim, int spacedim>
1993 std::vector<unsigned int>
1994 make_vertex_patches(SparsityPattern &block_list,
1995 const DoFHandler<dim, spacedim> &dof_handler,
1996 const unsigned int level,
1997 const bool interior_dofs_only,
1998 const bool boundary_patches = false,
1999 const bool level_boundary_patches = false,
2000 const bool single_cell_patches = false,
2001 const bool invert_vertex_mapping = false);
2002
2017 template <int dim, int spacedim>
2018 std::vector<unsigned int>
2019 make_vertex_patches(SparsityPattern &block_list,
2020 const DoFHandler<dim, spacedim> &dof_handler,
2021 const unsigned int level,
2022 const BlockMask &exclude_boundary_dofs = BlockMask(),
2023 const bool boundary_patches = false,
2024 const bool level_boundary_patches = false,
2025 const bool single_cell_patches = false,
2026 const bool invert_vertex_mapping = false);
2027
2067 template <int dim, int spacedim>
2068 void
2069 make_child_patches(SparsityPattern &block_list,
2070 const DoFHandler<dim, spacedim> &dof_handler,
2071 const unsigned int level,
2072 const bool interior_dofs_only,
2073 const bool boundary_dofs = false);
2074
2094 template <int dim, int spacedim>
2095 void
2096 make_single_patch(SparsityPattern &block_list,
2097 const DoFHandler<dim, spacedim> &dof_handler,
2098 const unsigned int level,
2099 const bool interior_dofs_only = false);
2100
2108
2143 template <int dim, int spacedim>
2144 std::vector<types::global_dof_index>
2146 const DoFHandler<dim, spacedim> &dof_handler,
2147 const bool vector_valued_once = false,
2148 const std::vector<unsigned int> &target_component = {});
2149
2166 template <int dim, int spacedim>
2167 std::vector<types::global_dof_index>
2168 count_dofs_per_fe_block(const DoFHandler<dim, spacedim> &dof,
2169 const std::vector<unsigned int> &target_block =
2170 std::vector<unsigned int>());
2171
2187 template <int dim, int spacedim>
2189 get_active_fe_indices(const DoFHandler<dim, spacedim> &dof_handler,
2190 std::vector<unsigned int> &active_fe_indices);
2191
2219 template <int dim, int spacedim>
2220 unsigned int
2222 const std::vector<typename DoFHandler<dim, spacedim>::active_cell_iterator>
2223 &patch);
2224
2228
2233
2247 template <int dim, int spacedim>
2248 void
2249 map_dof_to_boundary_indices(const DoFHandler<dim, spacedim> &dof_handler,
2250 std::vector<types::global_dof_index> &mapping);
2251
2262 template <int dim, int spacedim>
2263 void
2264 map_dof_to_boundary_indices(const DoFHandler<dim, spacedim> &dof_handler,
2265 const std::set<types::boundary_id> &boundary_ids,
2266 std::vector<types::global_dof_index> &mapping);
2267
2302 template <int dim, int spacedim>
2303 void
2304 map_dofs_to_support_points(const Mapping<dim, spacedim> &mapping,
2305 const DoFHandler<dim, spacedim> &dof_handler,
2306 std::vector<Point<spacedim>> &support_points,
2307 const ComponentMask &mask = {},
2308 const bool map_locally_relevant_dofs = true);
2309
2313 template <int dim, int spacedim>
2314 void
2316 const hp::MappingCollection<dim, spacedim> &mapping,
2317 const DoFHandler<dim, spacedim> &dof_handler,
2318 std::vector<Point<spacedim>> &support_points,
2319 const ComponentMask &mask = {},
2320 const bool map_locally_relevant_dofs = true);
2321
2354 template <int dim, int spacedim>
2355 std::map<types::global_dof_index, Point<spacedim>>
2356 map_dofs_to_support_points(const Mapping<dim, spacedim> &mapping,
2357 const DoFHandler<dim, spacedim> &dof_handler,
2358 const ComponentMask &mask = {},
2359 const bool map_locally_relevant_dofs = true);
2360
2364 template <int dim, int spacedim>
2365 std::map<types::global_dof_index, Point<spacedim>>
2367 const hp::MappingCollection<dim, spacedim> &mapping,
2368 const DoFHandler<dim, spacedim> &dof_handler,
2369 const ComponentMask &mask = {},
2370 const bool map_locally_relevant_dofs = true);
2371
2377 template <int dim, int spacedim>
2380 const Mapping<dim, spacedim> &mapping,
2381 const DoFHandler<dim, spacedim> &dof_handler,
2382 std::map<types::global_dof_index, Point<spacedim>> &support_points,
2383 const ComponentMask &mask = {},
2384 const bool map_locally_relevant_dofs = true);
2385
2391 template <int dim, int spacedim>
2394 const hp::MappingCollection<dim, spacedim> &mapping,
2395 const DoFHandler<dim, spacedim> &dof_handler,
2396 std::map<types::global_dof_index, Point<spacedim>> &support_points,
2397 const ComponentMask &mask = {},
2398 const bool map_locally_relevant_dofs = true);
2399
2400
2423 template <int dim, int spacedim, class Comp>
2424 void
2427 const DoFHandler<dim, spacedim> &dof_handler,
2429 &point_to_index_map);
2433
2438
2467 template <int dim, int spacedim, typename Number>
2468 void
2470 const Vector<Number> &cell_data,
2471 Vector<double> &dof_data,
2472 const unsigned int component = 0);
2473
2474
2552 template <int spacedim>
2553 void
2555 std::ostream &out,
2556 const std::map<types::global_dof_index, Point<spacedim>> &support_points);
2557
2558
2599 template <int dim, int spacedim, typename number>
2600 void
2602 const DoFHandler<dim, spacedim> &dof,
2603 const types::boundary_id boundary_id,
2604 AffineConstraints<number> &zero_boundary_constraints,
2605 const ComponentMask &component_mask = {});
2606
2617 template <int dim, int spacedim, typename number>
2618 void
2620 const DoFHandler<dim, spacedim> &dof,
2621 AffineConstraints<number> &zero_boundary_constraints,
2622 const ComponentMask &component_mask = {});
2623
2627
2632
2668} // namespace DoFTools
2669
2670
2671
2672/* ------------------------- inline functions -------------- */
2673
2674#ifndef DOXYGEN
2675
2676namespace DoFTools
2677{
2683 inline Coupling
2684 operator|=(Coupling &c1, const Coupling c2)
2685 {
2686 if (c2 == always)
2687 c1 = always;
2688 else if (c1 != always && c2 == nonzero)
2689 return c1 = nonzero;
2690 return c1;
2691 }
2692
2693
2699 inline Coupling
2700 operator|(const Coupling c1, const Coupling c2)
2701 {
2702 if (c1 == always || c2 == always)
2703 return always;
2704 if (c1 == nonzero || c2 == nonzero)
2705 return nonzero;
2706 return none;
2707 }
2708
2709
2710 // ---------------------- inline and template functions --------------------
2711
2712 template <int dim, int spacedim, class Comp>
2713 void
2715 const Mapping<dim, spacedim> &mapping,
2716 const DoFHandler<dim, spacedim> &dof_handler,
2717 std::map<Point<spacedim>, types::global_dof_index, Comp>
2718 &point_to_index_map)
2719 {
2720 // let the checking of arguments be
2721 // done by the function first
2722 // called
2723 std::vector<Point<spacedim>> support_points(dof_handler.n_dofs());
2724 map_dofs_to_support_points(mapping, dof_handler, support_points);
2725 // now copy over the results of the
2726 // previous function into the
2727 // output arg
2728 point_to_index_map.clear();
2729 for (types::global_dof_index i = 0; i < dof_handler.n_dofs(); ++i)
2730 point_to_index_map[support_points[i]] = i;
2731 }
2732} // namespace DoFTools
2733
2734#endif
2735
2737
2738#endif
types::global_dof_index n_dofs() const
Abstract base class for mapping classes.
Definition mapping.h:318
Definition point.h:111
#define DEAL_II_DEPRECATED
Definition config.h:286
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_DEPRECATED_WITH_COMMENT(comment)
Definition config.h:287
#define DEAL_II_CXX20_REQUIRES(condition)
Definition config.h:246
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
#define DeclException0(Exception0)
static ::ExceptionBase & ExcGridNotCoarser()
static ::ExceptionBase & ExcInvalidBoundaryIndicator()
static ::ExceptionBase & ExcFiniteElementsDontMatch()
static ::ExceptionBase & ExcNoFESelected()
static ::ExceptionBase & ExcGridsDontMatch()
typename ActiveSelector::cell_iterator cell_iterator
typename ActiveSelector::active_cell_iterator active_cell_iterator
TriaIterator< TriaAccessor< dim - 1, dim, spacedim > > face_iterator
Definition tria.h:1663
TriaIterator< CellAccessor< dim, spacedim > > cell_iterator
Definition tria.h:1624
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)
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 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_zero_boundary_constraints(const DoFHandler< dim, spacedim > &dof, const types::boundary_id boundary_id, AffineConstraints< number > &zero_boundary_constraints, const ComponentMask &component_mask={})
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)
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
InitializeLibrary operator|(const InitializeLibrary f1, const InitializeLibrary f2)
MappingQ< dim, spacedim > StaticMappingQ1< dim, spacedim >::mapping
Definition mapping_q1.h:101
void set_periodicity_constraints(const FaceIterator &face_1, const std_cxx20::type_identity_t< FaceIterator > &face_2, const FullMatrix< double > &transformation, AffineConstraints< number > &affine_constraints, const ComponentMask &component_mask, const types::geometric_orientation combined_orientation, const number periodicity_factor, const unsigned int level=numbers::invalid_unsigned_int)
void get_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::subdomain_id > &subdomain)
IndexSet dof_indices_with_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
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:829
std::vector< IndexSet > locally_owned_dofs_per_subdomain(const DoFHandler< dim, spacedim > &dof_handler)
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:619
std::vector< std::vector< bool > > extract_level_constant_modes(const unsigned int level, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
IndexSet extract_locally_relevant_dofs(const DoFHandler< dim, spacedim > &dof_handler)
std::vector< std::vector< bool > > extract_constant_modes(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
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)
void get_active_fe_indices(const DoFHandler< dim, spacedim > &dof_handler, std::vector< unsigned int > &active_fe_indices)
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)
IndexSet extract_dofs(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask)
Definition dof_tools.cc:419
IndexSet extract_locally_active_dofs(const DoFHandler< dim, spacedim > &dof_handler)
IndexSet extract_locally_relevant_level_dofs(const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
std::vector< std::vector< double > > extract_rigid_body_modes(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
void write_gnuplot_dof_support_point_info(std::ostream &out, const std::map< types::global_dof_index, Point< spacedim > > &support_points)
void extract_subdomain_dofs(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain_id, std::vector< bool > &selected_dofs)
IndexSet extract_locally_active_level_dofs(const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
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)
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 >())
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:506
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:747
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:335
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={})
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)
void map_dof_to_boundary_indices(const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::global_dof_index > &mapping)
std::vector< IndexSet > locally_relevant_dofs_per_subdomain(const DoFHandler< dim, spacedim > &dof_handler)
void make_single_patch(SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only=false)
std::vector< types::global_dof_index > get_dofs_on_patch(const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)
std::vector< IndexSet > locally_owned_dofs_per_component(const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &components={})
Definition dof_tools.cc:472
unsigned int count_dofs_with_subdomain_association(const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
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={}, const bool map_locally_relevant_dofs=true)
unsigned int count_dofs_on_patch(const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)
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)
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)
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 types::geometric_orientation combined_orientation=numbers::default_geometric_orientation, const FullMatrix< double > &matrix=FullMatrix< double >(), const std::vector< unsigned int > &first_vector_components=std::vector< unsigned int >(), const number periodicity_factor=1.)
std::vector< std::vector< double > > extract_level_rigid_body_modes(const unsigned int level, const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
@ matrix
Contents is actually a matrix.
Definition hp.h:115
constexpr unsigned int invalid_unsigned_int
Definition types.h:236
constexpr types::subdomain_id invalid_subdomain_id
Definition types.h:393
constexpr types::geometric_orientation default_geometric_orientation
Definition types.h:350
unsigned int boundary_id
Definition types.h:159
unsigned int subdomain_id
Definition types.h:50
unsigned int global_dof_index
Definition types.h:92
std::uint8_t geometric_orientation
Definition types.h:38