13#ifndef dealii_dof_tools_h
14#define dealii_dof_tools_h
42template <
int dim,
typename RangeNumberType>
44template <
int dim,
int spacedim>
48 template <
int dim,
int spacedim>
49 class MappingCollection;
50 template <
int dim,
int spacedim>
53template <
typename MeshType>
56template <
int dim,
int spacedim>
58template <
int dim,
class T>
60template <
typename Number>
65 template <
typename CellIterator>
66 struct PeriodicFacePair;
79 template <
int dim,
int spacedim>
81 always_couple_on_faces(
269 template <
int dim,
int spacedim>
280 template <
int dim,
int spacedim>
293 template <
int dim,
int spacedim>
294 std::vector<Table<2, Coupling>>
421 template <
int dim,
int spacedim,
typename number =
double>
427 const bool keep_constrained_dofs =
true,
495 template <
int dim,
int spacedim,
typename number =
double>
502 const bool keep_constrained_dofs =
true,
525 template <
int dim,
int spacedim>
576 template <
int dim,
int spacedim>
589 template <
int dim,
int spacedim,
typename number>
595 const bool keep_constrained_dofs =
true,
618 template <
int dim,
int spacedim>
654 template <
int dim,
int spacedim,
typename number>
660 const bool keep_constrained_dofs,
666 const unsigned int)> &face_has_flux_coupling =
667 &internal::always_couple_on_faces<dim, spacedim>);
678 template <
int dim,
int spacedim>
682 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
702 template <
int dim,
int spacedim,
typename number>
708 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
758 template <
int dim,
int spacedim,
typename number>
830 template <
int dim,
int spacedim>
834 const unsigned int coarse_component,
836 const unsigned int fine_component,
857 template <
int dim,
int spacedim>
861 const unsigned int coarse_component,
863 const unsigned int fine_component,
865 std::vector<std::map<types::global_dof_index, float>>
866 &transfer_representation);
954 template <
typename FaceIterator,
typename number>
957 const FaceIterator &face_1,
964 const std::vector<unsigned int> &first_vector_components =
965 std::vector<unsigned int>(),
966 const number periodicity_factor = 1.);
989 template <
typename FaceIterator,
typename number>
992 const FaceIterator &face_1,
994 const unsigned int level,
1000 const std::vector<unsigned int> &first_vector_components =
1001 std::vector<unsigned int>(),
1002 const number periodicity_factor = 1.);
1024 template <
int dim,
int spacedim,
typename number>
1031 const std::vector<unsigned int> &first_vector_components =
1032 std::vector<unsigned int>(),
1033 const number periodicity_factor = 1.);
1066 template <
int dim,
int spacedim,
typename number>
1071 const unsigned int direction,
1074 const number periodicity_factor = 1.);
1099 template <
int dim,
int spacedim,
typename number>
1103 const unsigned int direction,
1106 const number periodicity_factor = 1.);
1136 template <
typename FaceIterator,
typename number>
1139 const FaceIterator &face_1,
1145 const number periodicity_factor,
1166 template <
int dim,
int spacedim>
1205 template <
int dim,
int spacedim>
1233 template <
int dim,
int spacedim>
1242 template <
int dim,
int spacedim>
1247 std::vector<bool> &selected_dofs);
1253 template <
int dim,
int spacedim>
1258 std::vector<bool> &selected_dofs);
1302 template <
int dim,
int spacedim>
1306 const std::set<types::boundary_id> &boundary_ids = {});
1324 template <
int dim,
int spacedim>
1329 std::vector<bool> &selected_dofs,
1330 const std::set<types::boundary_id> &boundary_ids =
1331 std::set<types::boundary_id>());
1374 template <
int dim,
int spacedim,
typename number =
double>
1378 const std::function<
1418 template <
int dim,
int spacedim>
1419 std::vector<std::vector<bool>>
1426 template <
int dim,
int spacedim>
1427 std::vector<std::vector<bool>>
1437 template <
int dim,
int spacedim>
1438 std::vector<std::vector<double>>
1446 template <
int dim,
int spacedim>
1447 std::vector<std::vector<double>>
1538 template <
int dim,
int spacedim>
1539 std::map<
typename DoFHandler<dim - 1, spacedim>::active_cell_iterator,
1540 std::pair<typename DoFHandler<dim, spacedim>::active_cell_iterator,
1566 template <
int dim,
int spacedim>
1570 std::vector<bool> &selected_dofs);
1586 template <
int dim,
int spacedim>
1606 template <
int dim,
int spacedim>
1617 template <
int dim,
int spacedim>
1621 const unsigned int level);
1631 template <
int dim,
int spacedim>
1636 const unsigned int level);
1647 template <
int dim,
int spacedim>
1661 template <
int dim,
int spacedim>
1675 template <
int dim,
int spacedim>
1676 std::vector<IndexSet>
1693 template <
int dim,
int spacedim>
1694 std::vector<IndexSet>
1712 template <
int dim,
int spacedim>
1713 std::vector<IndexSet>
1721 template <
int dim,
int spacedim>
1725 const unsigned int level);
1733 template <
int dim,
int spacedim>
1737 const unsigned int level,
1771 template <
int dim,
int spacedim>
1774 std::vector<types::subdomain_id> &subdomain);
1801 template <
int dim,
int spacedim>
1826 template <
int dim,
int spacedim>
1831 std::vector<unsigned int> &n_dofs_on_subdomain);
1854 template <
int dim,
int spacedim>
1915 template <
int dim,
int spacedim>
1916 std::vector<types::global_dof_index>
1941 template <
int dim,
int spacedim>
1945 const unsigned int level,
1946 const std::vector<bool> &selected_dofs = {},
2002 template <
int dim,
int spacedim>
2003 std::vector<unsigned int>
2006 const unsigned int level,
2007 const bool interior_dofs_only,
2008 const bool boundary_patches =
false,
2009 const bool level_boundary_patches =
false,
2010 const bool single_cell_patches =
false,
2011 const bool invert_vertex_mapping =
false);
2027 template <
int dim,
int spacedim>
2028 std::vector<unsigned int>
2031 const unsigned int level,
2033 const bool boundary_patches =
false,
2034 const bool level_boundary_patches =
false,
2035 const bool single_cell_patches =
false,
2036 const bool invert_vertex_mapping =
false);
2077 template <
int dim,
int spacedim>
2081 const unsigned int level,
2082 const bool interior_dofs_only,
2083 const bool boundary_dofs =
false);
2104 template <
int dim,
int spacedim>
2108 const unsigned int level,
2109 const bool interior_dofs_only =
false);
2153 template <
int dim,
int spacedim>
2154 std::vector<types::global_dof_index>
2157 const bool vector_valued_once =
false,
2158 const std::vector<unsigned int> &target_component = {});
2176 template <
int dim,
int spacedim>
2177 std::vector<types::global_dof_index>
2179 const std::vector<unsigned int> &target_block =
2180 std::vector<unsigned int>());
2209 template <
int dim,
int spacedim>
2237 template <
int dim,
int spacedim>
2240 std::vector<types::global_dof_index> &mapping);
2252 template <
int dim,
int spacedim>
2255 const std::set<types::boundary_id> &boundary_ids,
2256 std::vector<types::global_dof_index> &mapping);
2292 template <
int dim,
int spacedim>
2298 const bool map_locally_relevant_dofs =
true);
2303 template <
int dim,
int spacedim>
2310 const bool map_locally_relevant_dofs =
true);
2344 template <
int dim,
int spacedim>
2345 std::map<types::global_dof_index, Point<spacedim>>
2349 const bool map_locally_relevant_dofs =
true);
2354 template <
int dim,
int spacedim>
2355 std::map<types::global_dof_index, Point<spacedim>>
2360 const bool map_locally_relevant_dofs =
true);
2384 template <
int dim,
int spacedim,
class Comp>
2390 &point_to_index_map);
2428 template <
int dim,
int spacedim,
typename Number>
2433 const unsigned int component = 0);
2513 template <
int spacedim>
2560 template <
int dim,
int spacedim,
typename number>
2578 template <
int dim,
int spacedim,
typename number>
2673 template <
int dim,
int spacedim,
class Comp>
2679 &point_to_index_map)
2684 std::vector<Point<spacedim>> support_points(dof_handler.
n_dofs());
2689 point_to_index_map.clear();
2691 point_to_index_map[support_points[i]] = i;
types::global_dof_index n_dofs() const
Abstract base class for mapping classes.
#define DEAL_II_DEPRECATED
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
#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
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)
@ matrix
Contents is actually a matrix.
constexpr unsigned int invalid_unsigned_int
constexpr types::subdomain_id invalid_subdomain_id
constexpr types::geometric_orientation default_geometric_orientation
typename type_identity< T >::type type_identity_t
unsigned int subdomain_id
std::uint8_t geometric_orientation