16#ifndef dealii_dof_tools_h
17#define dealii_dof_tools_h
44template <
int dim,
typename RangeNumberType>
46template <
int dim,
int spacedim>
50 template <
int dim,
int spacedim>
51 class MappingCollection;
52 template <
int dim,
int spacedim>
55template <
class MeshType>
58template <
int dim,
int spacedim>
60template <
int dim,
class T>
62template <
typename Number>
67 template <
typename CellIterator>
68 struct PeriodicFacePair;
81 template <
int dim,
int spacedim>
83 always_couple_on_faces(
257 template <
int dim,
int spacedim>
268 template <
int dim,
int spacedim>
281 template <
int dim,
int spacedim>
282 std::vector<Table<2, Coupling>>
409 template <
int dim,
int spacedim,
typename number =
double>
415 const bool keep_constrained_dofs =
true,
483 template <
int dim,
int spacedim,
typename number =
double>
490 const bool keep_constrained_dofs =
true,
513 template <
int dim,
int spacedim>
564 template <
int dim,
int spacedim>
577 template <
int dim,
int spacedim,
typename number>
583 const bool keep_constrained_dofs =
true,
606 template <
int dim,
int spacedim>
642 template <
int dim,
int spacedim,
typename number>
648 const bool keep_constrained_dofs,
654 const unsigned int)> &face_has_flux_coupling =
655 &internal::always_couple_on_faces<dim, spacedim>);
666 template <
int dim,
int spacedim>
670 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
690 template <
int dim,
int spacedim,
typename number>
696 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
746 template <
int dim,
int spacedim,
typename number>
818 template <
int dim,
int spacedim>
822 const unsigned int coarse_component,
824 const unsigned int fine_component,
845 template <
int dim,
int spacedim>
849 const unsigned int coarse_component,
851 const unsigned int fine_component,
853 std::vector<std::map<types::global_dof_index, float>>
854 &transfer_representation);
1030 template <
typename FaceIterator,
typename number>
1033 const FaceIterator & face_1,
1037 const bool face_orientation =
true,
1038 const bool face_flip =
false,
1039 const bool face_rotation =
false,
1041 const std::vector<unsigned int> &first_vector_components =
1042 std::vector<unsigned int>(),
1043 const number periodicity_factor = 1.);
1065 template <
int dim,
int spacedim,
typename number>
1072 const std::vector<unsigned int> &first_vector_components =
1073 std::vector<unsigned int>(),
1074 const number periodicity_factor = 1.);
1107 template <
int dim,
int spacedim,
typename number>
1113 const unsigned int direction,
1116 const number periodicity_factor = 1.);
1145 template <
int dim,
int spacedim,
typename number>
1150 const unsigned int direction,
1153 const number periodicity_factor = 1.);
1172 template <
int dim,
int spacedim>
1208 template <
int dim,
int spacedim>
1236 template <
int dim,
int spacedim>
1245 template <
int dim,
int spacedim>
1250 std::vector<bool> & selected_dofs);
1256 template <
int dim,
int spacedim>
1261 std::vector<bool> & selected_dofs);
1317 template <
int dim,
int spacedim>
1321 std::vector<bool> & selected_dofs,
1322 const std::set<types::boundary_id> &boundary_ids = {});
1366 template <
int dim,
int spacedim>
1370 const std::set<types::boundary_id> &boundary_ids = {});
1378 template <
int dim,
int spacedim>
1383 const std::set<types::boundary_id> &boundary_ids = {});
1401 template <
int dim,
int spacedim>
1406 std::vector<bool> & selected_dofs,
1407 const std::set<types::boundary_id> &boundary_ids =
1408 std::set<types::boundary_id>());
1437 template <
int dim,
int spacedim,
typename number =
double>
1441 const std::function<
1481 template <
int dim,
int spacedim>
1485 std::vector<std::vector<bool>> & constant_modes);
1501 template <
int dim,
int spacedim>
1505 std::vector<bool> & selected_dofs);
1521 template <
int dim,
int spacedim>
1541 template <
int dim,
int spacedim>
1552 template <
int dim,
int spacedim>
1556 const unsigned int level);
1566 template <
int dim,
int spacedim>
1571 const unsigned int level);
1582 template <
int dim,
int spacedim>
1596 template <
int dim,
int spacedim>
1610 template <
int dim,
int spacedim>
1611 std::vector<IndexSet>
1629 template <
int dim,
int spacedim>
1630 std::vector<IndexSet>
1648 template <
int dim,
int spacedim>
1649 std::vector<IndexSet>
1657 template <
int dim,
int spacedim>
1661 const unsigned int level);
1669 template <
int dim,
int spacedim>
1673 const unsigned int level,
1707 template <
int dim,
int spacedim>
1710 std::vector<types::subdomain_id> &subdomain);
1737 template <
int dim,
int spacedim>
1762 template <
int dim,
int spacedim>
1767 std::vector<unsigned int> & n_dofs_on_subdomain);
1790 template <
int dim,
int spacedim>
1851 template <
int dim,
int spacedim>
1852 std::vector<types::global_dof_index>
1877 template <
int dim,
int spacedim>
1881 const unsigned int level,
1882 const std::vector<bool> & selected_dofs = {},
1936 template <
int dim,
int spacedim>
1937 std::vector<unsigned int>
1940 const unsigned int level,
1941 const bool interior_dofs_only,
1942 const bool boundary_patches =
false,
1943 const bool level_boundary_patches =
false,
1944 const bool single_cell_patches =
false,
1945 const bool invert_vertex_mapping =
false);
1961 template <
int dim,
int spacedim>
1962 std::vector<unsigned int>
1965 const unsigned int level,
1967 const bool boundary_patches =
false,
1968 const bool level_boundary_patches =
false,
1969 const bool single_cell_patches =
false,
1970 const bool invert_vertex_mapping =
false);
2009 template <
int dim,
int spacedim>
2013 const unsigned int level,
2014 const bool interior_dofs_only,
2015 const bool boundary_dofs =
false);
2036 template <
int dim,
int spacedim>
2040 const unsigned int level,
2041 const bool interior_dofs_only =
false);
2085 template <
int dim,
int spacedim>
2086 std::vector<types::global_dof_index>
2089 const bool vector_valued_once =
false,
2090 const std::vector<unsigned int> &target_component = {});
2108 template <
int dim,
int spacedim>
2109 std::vector<types::global_dof_index>
2111 const std::vector<unsigned int> &target_block =
2112 std::vector<unsigned int>());
2129 template <
int dim,
int spacedim>
2130 DEAL_II_DEPRECATED_EARLY
void
2132 std::vector<unsigned int> & active_fe_indices);
2161 template <
int dim,
int spacedim>
2189 template <
int dim,
int spacedim>
2192 std::vector<types::global_dof_index> &mapping);
2204 template <
int dim,
int spacedim>
2207 const std::set<types::boundary_id> &boundary_ids,
2208 std::vector<types::global_dof_index> &mapping);
2238 template <
int dim,
int spacedim>
2248 template <
int dim,
int spacedim>
2285 template <
int dim,
int spacedim>
2286 std::map<types::global_dof_index, Point<spacedim>>
2294 template <
int dim,
int spacedim>
2295 std::map<types::global_dof_index, Point<spacedim>>
2306 template <
int dim,
int spacedim>
2307 DEAL_II_DEPRECATED_EARLY
void
2319 template <
int dim,
int spacedim>
2320 DEAL_II_DEPRECATED_EARLY
void
2348 template <
int dim,
int spacedim,
class Comp>
2354 &point_to_index_map);
2392 template <
int dim,
int spacedim,
typename Number>
2397 const unsigned int component = 0);
2477 template <
int spacedim>
2524 template <
int dim,
int spacedim,
typename number>
2542 template <
int dim,
int spacedim,
typename number>
2637 template <
int dim,
int spacedim,
class Comp>
2643 &point_to_index_map)
2648 std::vector<Point<spacedim>> support_points(dof_handler.
n_dofs());
2653 point_to_index_map.clear();
2655 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_zero_boundary_constraints(const DoFHandler< dim, spacedim > &dof, const types::boundary_id boundary_id, AffineConstraints< number > &zero_boundary_constraints, const ComponentMask &component_mask=ComponentMask())
void make_hanging_node_constraints(const DoFHandler< dim, spacedim > &dof_handler, AffineConstraints< number > &constraints)
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 make_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity_pattern, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const bool keep_constrained_dofs=true, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id)
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
const types::subdomain_id invalid_subdomain_id
typename type_identity< T >::type type_identity_t
unsigned int global_dof_index
ParameterHandler::OutputStyle operator|(const ParameterHandler::OutputStyle f1, const ParameterHandler::OutputStyle f2)