16#ifndef dealii_dof_tools_h
17#define dealii_dof_tools_h
45template <
int dim,
typename RangeNumberType>
47template <
int dim,
int spacedim>
51 template <
int dim,
int spacedim>
52 class MappingCollection;
53 template <
int dim,
int spacedim>
56template <
class MeshType>
58template <
int dim,
int spacedim>
61template <
int dim,
class T>
63template <
typename Number>
68 template <
typename CellIterator>
69 struct PeriodicFacePair;
82 template <
int dim,
int spacedim>
84 always_couple_on_faces(
258 template <
int dim,
int spacedim>
269 template <
int dim,
int spacedim>
282 template <
int dim,
int spacedim>
283 std::vector<Table<2, Coupling>>
414 typename SparsityPatternType,
415 typename number =
double>
419 SparsityPatternType & sparsity_pattern,
421 const bool keep_constrained_dofs =
true,
491 typename SparsityPatternType,
492 typename number =
double>
497 SparsityPatternType & sparsity_pattern,
499 const bool keep_constrained_dofs =
true,
522 template <
int dim,
int spacedim,
typename SparsityPatternType>
526 SparsityPatternType & sparsity);
573 template <
int dim,
int spacedim,
typename SparsityPatternType>
576 SparsityPatternType & sparsity_pattern);
588 typename SparsityPatternType,
593 SparsityPatternType & sparsity_pattern,
595 const bool keep_constrained_dofs =
true,
618 template <
int dim,
int spacedim,
typename SparsityPatternType>
622 SparsityPatternType & sparsity,
656 typename SparsityPatternType,
661 SparsityPatternType & sparsity,
663 const bool keep_constrained_dofs,
669 const unsigned int)> &face_has_flux_coupling =
670 &internal::always_couple_on_faces<dim, spacedim>);
681 template <
int dim,
int spacedim,
typename SparsityPatternType>
685 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
686 SparsityPatternType & sparsity_pattern);
707 typename SparsityPatternType,
714 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
715 SparsityPatternType & sparsity);
764 template <
int dim,
int spacedim,
typename number>
836 template <
int dim,
int spacedim>
840 const unsigned int coarse_component,
842 const unsigned int fine_component,
863 template <
int dim,
int spacedim>
867 const unsigned int coarse_component,
869 const unsigned int fine_component,
871 std::vector<std::map<types::global_dof_index, float>>
872 &transfer_representation);
1048 template <
typename FaceIterator,
typename number>
1051 const FaceIterator & face_1,
1055 const bool face_orientation =
true,
1056 const bool face_flip =
false,
1057 const bool face_rotation =
false,
1059 const std::vector<unsigned int> &first_vector_components =
1060 std::vector<unsigned int>(),
1061 const number periodicity_factor = 1.);
1084 template <
int dim,
int spacedim,
typename number>
1091 const std::vector<unsigned int> &first_vector_components =
1092 std::vector<unsigned int>(),
1093 const number periodicity_factor = 1.);
1101 template <
typename DoFHandlerType,
typename number>
1109 const std::vector<unsigned int> &first_vector_components =
1110 std::vector<unsigned int>(),
1111 const number periodicity_factor = 1.);
1144 template <
int dim,
int spacedim,
typename number>
1150 const unsigned int direction,
1153 const number periodicity_factor = 1.);
1182 template <
int dim,
int spacedim,
typename number>
1187 const unsigned int direction,
1190 const number periodicity_factor = 1.);
1209 template <
int dim,
int spacedim>
1245 template <
int dim,
int spacedim>
1273 template <
int dim,
int spacedim>
1282 template <
int dim,
int spacedim>
1287 std::vector<bool> & selected_dofs);
1293 template <
int dim,
int spacedim>
1298 std::vector<bool> & selected_dofs);
1354 template <
int dim,
int spacedim>
1358 std::vector<bool> & selected_dofs,
1359 const std::set<types::boundary_id> &boundary_ids = {});
1403 template <
int dim,
int spacedim>
1407 const std::set<types::boundary_id> &boundary_ids = {});
1415 template <
int dim,
int spacedim>
1420 const std::set<types::boundary_id> &boundary_ids = {});
1438 template <
int dim,
int spacedim>
1443 std::vector<bool> & selected_dofs,
1444 const std::set<types::boundary_id> &boundary_ids =
1445 std::set<types::boundary_id>());
1474 template <
int dim,
int spacedim,
typename number =
double>
1478 const std::function<
1518 template <
int dim,
int spacedim>
1522 std::vector<std::vector<bool>> & constant_modes);
1538 template <
int dim,
int spacedim>
1542 std::vector<bool> & selected_dofs);
1558 template <
int dim,
int spacedim>
1578 template <
int dim,
int spacedim>
1589 template <
int dim,
int spacedim>
1593 const unsigned int level);
1603 template <
int dim,
int spacedim>
1608 const unsigned int level);
1619 template <
int dim,
int spacedim>
1634 template <
int dim,
int spacedim>
1648 template <
int dim,
int spacedim>
1649 std::vector<IndexSet>
1667 template <
int dim,
int spacedim>
1668 std::vector<IndexSet>
1686 template <
int dim,
int spacedim>
1687 std::vector<IndexSet>
1695 template <
int dim,
int spacedim>
1699 const unsigned int level);
1707 template <
int dim,
int spacedim>
1711 const unsigned int level,
1745 template <
int dim,
int spacedim>
1748 std::vector<types::subdomain_id> &subdomain);
1775 template <
int dim,
int spacedim>
1800 template <
int dim,
int spacedim>
1805 std::vector<unsigned int> & n_dofs_on_subdomain);
1828 template <
int dim,
int spacedim>
1888 template <
int dim,
int spacedim>
1889 std::vector<types::global_dof_index>
1900 template <
typename DoFHandlerType>
1903 const std::vector<typename DoFHandlerType::active_cell_iterator> &patch);
1925 template <
int dim,
int spacedim>
1929 const unsigned int level,
1930 const std::vector<bool> & selected_dofs = {},
1984 template <
int dim,
int spacedim>
1985 std::vector<unsigned int>
1988 const unsigned int level,
1989 const bool interior_dofs_only,
1990 const bool boundary_patches =
false,
1991 const bool level_boundary_patches =
false,
1992 const bool single_cell_patches =
false,
1993 const bool invert_vertex_mapping =
false);
2009 template <
int dim,
int spacedim>
2010 std::vector<unsigned int>
2013 const unsigned int level,
2015 const bool boundary_patches =
false,
2016 const bool level_boundary_patches =
false,
2017 const bool single_cell_patches =
false,
2018 const bool invert_vertex_mapping =
false);
2057 template <
int dim,
int spacedim>
2061 const unsigned int level,
2062 const bool interior_dofs_only,
2063 const bool boundary_dofs =
false);
2084 template <
int dim,
int spacedim>
2088 const unsigned int level,
2089 const bool interior_dofs_only =
false);
2133 template <
int dim,
int spacedim>
2134 std::vector<types::global_dof_index>
2137 const bool vector_valued_once =
false,
2138 const std::vector<unsigned int> &target_component = {});
2156 template <
int dim,
int spacedim>
2157 std::vector<types::global_dof_index>
2159 const std::vector<unsigned int> &target_block =
2160 std::vector<unsigned int>());
2171 template <
int dim,
int spacedim>
2174 std::vector<unsigned int> & active_fe_indices);
2203 template <
int dim,
int spacedim>
2215 template <
typename DoFHandlerType>
2218 const std::vector<typename DoFHandlerType::active_cell_iterator> &patch);
2242 template <
int dim,
int spacedim>
2245 std::vector<types::global_dof_index> &mapping);
2257 template <
int dim,
int spacedim>
2260 const std::set<types::boundary_id> &boundary_ids,
2261 std::vector<types::global_dof_index> &mapping);
2291 template <
int dim,
int spacedim>
2301 template <
int dim,
int spacedim>
2304 const ::hp::MappingCollection<dim, spacedim> &mapping,
2339 template <
int dim,
int spacedim>
2350 template <
int dim,
int spacedim>
2353 const ::hp::MappingCollection<dim, spacedim> &mapping,
2379 template <
int dim,
int spacedim,
class Comp>
2385 &point_to_index_map);
2423 template <
int dim,
int spacedim,
typename Number>
2428 const unsigned int component = 0);
2507 template <
int spacedim>
2554 template <
int dim,
int spacedim,
typename number>
2572 template <
int dim,
int spacedim,
typename number>
2667 template <
int dim,
int spacedim,
class Comp>
2673 &point_to_index_map)
2678 std::vector<Point<spacedim>> support_points(dof_handler.
n_dofs());
2683 point_to_index_map.clear();
2685 point_to_index_map[support_points[i]] = i;
2690 template <
typename DoFHandlerType,
typename number>
2698 const std::vector<unsigned int> &first_vector_components,
2699 const number periodicity_factor)
2702 DoFHandlerType::space_dimension>(
2706 first_vector_components,
2707 periodicity_factor);
2712 template <
typename DoFHandlerType>
2713 inline std::vector<types::global_dof_index>
2715 const std::vector<typename DoFHandlerType::active_cell_iterator> &patch)
2718 DoFHandlerType::space_dimension>(patch);
2723 template <
typename DoFHandlerType>
2726 const std::vector<typename DoFHandlerType::active_cell_iterator> &patch)
2729 DoFHandlerType::space_dimension>(patch);
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_NAMESPACE_CLOSE
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
#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, SparsityPatternType &sparsity_pattern)
void make_boundary_sparsity_pattern(const DoFHandler< dim, spacedim > &dof, const std::vector< types::global_dof_index > &dof_to_boundary_mapping, SparsityPatternType &sparsity_pattern)
void make_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternType &sparsity_pattern, const AffineConstraints< number > &constraints=AffineConstraints< number >(), const bool keep_constrained_dofs=true, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id)
const types::subdomain_id invalid_subdomain_id
unsigned int global_dof_index
ParameterHandler::OutputStyle operator|(const ParameterHandler::OutputStyle f1, const ParameterHandler::OutputStyle f2)