15#ifndef dealii_dof_tools_h
16#define dealii_dof_tools_h
43template <
int dim,
typename RangeNumberType>
45template <
int dim,
int spacedim>
49 template <
int dim,
int spacedim>
50 class MappingCollection;
51 template <
int dim,
int spacedim>
54template <
typename MeshType>
57template <
int dim,
int spacedim>
59template <
int dim,
class T>
61template <
typename Number>
66 template <
typename CellIterator>
67 struct PeriodicFacePair;
80 template <
int dim,
int spacedim>
82 always_couple_on_faces(
270 template <
int dim,
int spacedim>
281 template <
int dim,
int spacedim>
294 template <
int dim,
int spacedim>
295 std::vector<Table<2, Coupling>>
422 template <
int dim,
int spacedim,
typename number =
double>
428 const bool keep_constrained_dofs =
true,
496 template <
int dim,
int spacedim,
typename number =
double>
503 const bool keep_constrained_dofs =
true,
526 template <
int dim,
int spacedim>
577 template <
int dim,
int spacedim>
590 template <
int dim,
int spacedim,
typename number>
596 const bool keep_constrained_dofs =
true,
619 template <
int dim,
int spacedim>
655 template <
int dim,
int spacedim,
typename number>
661 const bool keep_constrained_dofs,
667 const unsigned int)> &face_has_flux_coupling =
668 &internal::always_couple_on_faces<dim, spacedim>);
679 template <
int dim,
int spacedim>
683 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
703 template <
int dim,
int spacedim,
typename number>
709 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
759 template <
int dim,
int spacedim,
typename number>
831 template <
int dim,
int spacedim>
835 const unsigned int coarse_component,
837 const unsigned int fine_component,
858 template <
int dim,
int spacedim>
862 const unsigned int coarse_component,
864 const unsigned int fine_component,
866 std::vector<std::map<types::global_dof_index, float>>
867 &transfer_representation);
955 template <
typename FaceIterator,
typename number>
958 const FaceIterator &face_1,
962 const unsigned char combined_orientation =
965 const std::vector<unsigned int> &first_vector_components =
966 std::vector<unsigned int>(),
967 const number periodicity_factor = 1.);
989 template <
int dim,
int spacedim,
typename number>
996 const std::vector<unsigned int> &first_vector_components =
997 std::vector<unsigned int>(),
998 const number periodicity_factor = 1.);
1031 template <
int dim,
int spacedim,
typename number>
1036 const unsigned int direction,
1039 const number periodicity_factor = 1.);
1068 template <
int dim,
int spacedim,
typename number>
1072 const unsigned int direction,
1075 const number periodicity_factor = 1.);
1105 template <
typename FaceIterator,
typename number>
1108 const FaceIterator &face_1,
1113 const unsigned char combined_orientation,
1114 const number periodicity_factor,
1135 template <
int dim,
int spacedim>
1174 template <
int dim,
int spacedim>
1202 template <
int dim,
int spacedim>
1211 template <
int dim,
int spacedim>
1216 std::vector<bool> &selected_dofs);
1222 template <
int dim,
int spacedim>
1227 std::vector<bool> &selected_dofs);
1271 template <
int dim,
int spacedim>
1275 const std::set<types::boundary_id> &boundary_ids = {});
1293 template <
int dim,
int spacedim>
1298 std::vector<bool> &selected_dofs,
1299 const std::set<types::boundary_id> &boundary_ids =
1300 std::set<types::boundary_id>());
1329 template <
int dim,
int spacedim,
typename number =
double>
1333 const std::function<
1373 template <
int dim,
int spacedim>
1374 std::vector<std::vector<bool>>
1383 template <
int dim,
int spacedim>
1384 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
1385 "Use the other function that returns the constant modes by value, rather than via an argument.")
1388 std::vector<
std::vector<
bool>> &constant_modes);
1393 template <
int dim,
int spacedim>
1394 std::vector<
std::vector<
bool>>
1396 const
DoFHandler<dim, spacedim> &dof_handler,
1404 template <
int dim,
int spacedim>
1405 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
1406 "Use the other function that returns the constant modes by value, rather than via an argument.")
1408 const
unsigned int level,
1409 const
DoFHandler<dim, spacedim> &dof_handler,
1411 std::vector<
std::vector<
bool>> &constant_modes);
1418 template <
int dim,
int spacedim>
1419 std::vector<
std::vector<
double>>
1421 const
DoFHandler<dim, spacedim> &dof_handler,
1427 template <
int dim,
int spacedim>
1428 std::vector<std::vector<double>>
1519 template <
int dim,
int spacedim>
1520 std::map<
typename DoFHandler<dim - 1, spacedim>::active_cell_iterator,
1521 std::pair<typename DoFHandler<dim, spacedim>::active_cell_iterator,
1547 template <
int dim,
int spacedim>
1551 std::vector<bool> &selected_dofs);
1567 template <
int dim,
int spacedim>
1587 template <
int dim,
int spacedim>
1598 template <
int dim,
int spacedim>
1602 const unsigned int level);
1612 template <
int dim,
int spacedim>
1617 const unsigned int level);
1628 template <
int dim,
int spacedim>
1642 template <
int dim,
int spacedim>
1656 template <
int dim,
int spacedim>
1657 std::vector<IndexSet>
1674 template <
int dim,
int spacedim>
1675 std::vector<IndexSet>
1693 template <
int dim,
int spacedim>
1694 std::vector<IndexSet>
1702 template <
int dim,
int spacedim>
1706 const unsigned int level);
1714 template <
int dim,
int spacedim>
1718 const unsigned int level,
1752 template <
int dim,
int spacedim>
1755 std::vector<types::subdomain_id> &subdomain);
1782 template <
int dim,
int spacedim>
1807 template <
int dim,
int spacedim>
1812 std::vector<unsigned int> &n_dofs_on_subdomain);
1835 template <
int dim,
int spacedim>
1896 template <
int dim,
int spacedim>
1897 std::vector<types::global_dof_index>
1922 template <
int dim,
int spacedim>
1926 const unsigned int level,
1927 const std::vector<bool> &selected_dofs = {},
1981 template <
int dim,
int spacedim>
1982 std::vector<unsigned int>
1985 const unsigned int level,
1986 const bool interior_dofs_only,
1987 const bool boundary_patches =
false,
1988 const bool level_boundary_patches =
false,
1989 const bool single_cell_patches =
false,
1990 const bool invert_vertex_mapping =
false);
2006 template <
int dim,
int spacedim>
2007 std::vector<unsigned int>
2010 const unsigned int level,
2012 const bool boundary_patches =
false,
2013 const bool level_boundary_patches =
false,
2014 const bool single_cell_patches =
false,
2015 const bool invert_vertex_mapping =
false);
2054 template <
int dim,
int spacedim>
2058 const unsigned int level,
2059 const bool interior_dofs_only,
2060 const bool boundary_dofs =
false);
2081 template <
int dim,
int spacedim>
2085 const unsigned int level,
2086 const bool interior_dofs_only =
false);
2130 template <
int dim,
int spacedim>
2131 std::vector<types::global_dof_index>
2134 const bool vector_valued_once =
false,
2135 const std::vector<unsigned int> &target_component = {});
2153 template <
int dim,
int spacedim>
2154 std::vector<types::global_dof_index>
2156 const std::vector<unsigned int> &target_block =
2157 std::vector<unsigned int>());
2174 template <
int dim,
int spacedim>
2177 std::vector<unsigned int> &active_fe_indices);
2206 template <
int dim,
int spacedim>
2234 template <
int dim,
int spacedim>
2237 std::vector<types::global_dof_index> &mapping);
2249 template <
int dim,
int spacedim>
2252 const std::set<types::boundary_id> &boundary_ids,
2253 std::vector<types::global_dof_index> &mapping);
2283 template <
int dim,
int spacedim>
2293 template <
int dim,
int spacedim>
2330 template <
int dim,
int spacedim>
2331 std::map<types::global_dof_index, Point<spacedim>>
2339 template <
int dim,
int spacedim>
2340 std::map<types::global_dof_index, Point<spacedim>>
2351 template <
int dim,
int spacedim>
2364 template <
int dim,
int spacedim>
2393 template <
int dim,
int spacedim,
class Comp>
2399 &point_to_index_map);
2437 template <
int dim,
int spacedim,
typename Number>
2442 const unsigned int component = 0);
2522 template <
int spacedim>
2569 template <
int dim,
int spacedim,
typename number>
2587 template <
int dim,
int spacedim,
typename number>
2682 template <
int dim,
int spacedim,
class Comp>
2688 &point_to_index_map)
2693 std::vector<Point<spacedim>> support_points(dof_handler.
n_dofs());
2698 point_to_index_map.clear();
2700 point_to_index_map[support_points[i]] = i;
types::global_dof_index n_dofs() const
Abstract base class for mapping classes.
static constexpr unsigned char default_combined_face_orientation()
#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.
const types::subdomain_id invalid_subdomain_id
static const unsigned int invalid_unsigned_int
typename type_identity< T >::type type_identity_t
unsigned int subdomain_id