16 #ifndef dealii_dof_tools_h
17 #define dealii_dof_tools_h
44 template <
int dim,
typename RangeNumberType>
46 template <
int dim,
int spacedim>
50 template <
int dim,
int spacedim>
51 class MappingCollection;
52 template <
int dim,
int spacedim>
55 template <
class MeshType>
57 template <
int dim,
int spacedim>
59 template <
int dim,
class T>
61 template <
typename Number>
66 template <
typename CellIterator>
67 struct PeriodicFacePair;
80 template <
int dim,
int spacedim>
82 always_couple_on_faces(
256 template <
int dim,
int spacedim>
267 template <
int dim,
int spacedim>
280 template <
int dim,
int spacedim>
281 std::vector<Table<2, Coupling>>
408 template <
int dim,
int spacedim,
typename number =
double>
414 const bool keep_constrained_dofs =
true,
482 template <
int dim,
int spacedim,
typename number =
double>
489 const bool keep_constrained_dofs =
true,
512 template <
int dim,
int spacedim>
563 template <
int dim,
int spacedim>
576 template <
int dim,
int spacedim,
typename number>
582 const bool keep_constrained_dofs =
true,
605 template <
int dim,
int spacedim>
641 template <
int dim,
int spacedim,
typename number>
647 const bool keep_constrained_dofs,
653 const unsigned int)> &face_has_flux_coupling =
654 &internal::always_couple_on_faces<dim, spacedim>);
665 template <
int dim,
int spacedim>
669 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
689 template <
int dim,
int spacedim,
typename number>
695 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
745 template <
int dim,
int spacedim,
typename number>
817 template <
int dim,
int spacedim>
821 const unsigned int coarse_component,
823 const unsigned int fine_component,
844 template <
int dim,
int spacedim>
848 const unsigned int coarse_component,
850 const unsigned int fine_component,
852 std::vector<std::map<types::global_dof_index, float>>
853 &transfer_representation);
1029 template <
typename FaceIterator,
typename number>
1032 const FaceIterator & face_1,
1036 const bool face_orientation =
true,
1037 const bool face_flip =
false,
1038 const bool face_rotation =
false,
1040 const std::vector<unsigned int> &first_vector_components =
1041 std::vector<unsigned int>(),
1042 const number periodicity_factor = 1.);
1064 template <
int dim,
int spacedim,
typename number>
1071 const std::vector<unsigned int> &first_vector_components =
1072 std::vector<unsigned int>(),
1073 const number periodicity_factor = 1.);
1106 template <
int dim,
int spacedim,
typename number>
1112 const unsigned int direction,
1115 const number periodicity_factor = 1.);
1144 template <
int dim,
int spacedim,
typename number>
1149 const unsigned int direction,
1152 const number periodicity_factor = 1.);
1171 template <
int dim,
int spacedim>
1207 template <
int dim,
int spacedim>
1235 template <
int dim,
int spacedim>
1244 template <
int dim,
int spacedim>
1249 std::vector<bool> & selected_dofs);
1255 template <
int dim,
int spacedim>
1260 std::vector<bool> & selected_dofs);
1316 template <
int dim,
int spacedim>
1320 std::vector<bool> & selected_dofs,
1321 const std::set<types::boundary_id> &boundary_ids = {});
1365 template <
int dim,
int spacedim>
1369 const std::set<types::boundary_id> &boundary_ids = {});
1377 template <
int dim,
int spacedim>
1382 const std::set<types::boundary_id> &boundary_ids = {});
1400 template <
int dim,
int spacedim>
1405 std::vector<bool> & selected_dofs,
1406 const std::set<types::boundary_id> &boundary_ids =
1407 std::set<types::boundary_id>());
1436 template <
int dim,
int spacedim,
typename number =
double>
1440 const std::function<
1480 template <
int dim,
int spacedim>
1484 std::vector<std::vector<bool>> & constant_modes);
1500 template <
int dim,
int spacedim>
1504 std::vector<bool> & selected_dofs);
1520 template <
int dim,
int spacedim>
1540 template <
int dim,
int spacedim>
1551 template <
int dim,
int spacedim>
1555 const unsigned int level);
1565 template <
int dim,
int spacedim>
1570 const unsigned int level);
1581 template <
int dim,
int spacedim>
1595 template <
int dim,
int spacedim>
1609 template <
int dim,
int spacedim>
1610 std::vector<IndexSet>
1628 template <
int dim,
int spacedim>
1629 std::vector<IndexSet>
1647 template <
int dim,
int spacedim>
1648 std::vector<IndexSet>
1656 template <
int dim,
int spacedim>
1660 const unsigned int level);
1668 template <
int dim,
int spacedim>
1672 const unsigned int level,
1706 template <
int dim,
int spacedim>
1709 std::vector<types::subdomain_id> &subdomain);
1736 template <
int dim,
int spacedim>
1761 template <
int dim,
int spacedim>
1766 std::vector<unsigned int> & n_dofs_on_subdomain);
1789 template <
int dim,
int spacedim>
1850 template <
int dim,
int spacedim>
1851 std::vector<types::global_dof_index>
1876 template <
int dim,
int spacedim>
1880 const unsigned int level,
1881 const std::vector<bool> & selected_dofs = {},
1935 template <
int dim,
int spacedim>
1936 std::vector<unsigned int>
1939 const unsigned int level,
1940 const bool interior_dofs_only,
1941 const bool boundary_patches =
false,
1942 const bool level_boundary_patches =
false,
1943 const bool single_cell_patches =
false,
1944 const bool invert_vertex_mapping =
false);
1960 template <
int dim,
int spacedim>
1961 std::vector<unsigned int>
1964 const unsigned int level,
1966 const bool boundary_patches =
false,
1967 const bool level_boundary_patches =
false,
1968 const bool single_cell_patches =
false,
1969 const bool invert_vertex_mapping =
false);
2008 template <
int dim,
int spacedim>
2012 const unsigned int level,
2013 const bool interior_dofs_only,
2014 const bool boundary_dofs =
false);
2035 template <
int dim,
int spacedim>
2039 const unsigned int level,
2040 const bool interior_dofs_only =
false);
2084 template <
int dim,
int spacedim>
2085 std::vector<types::global_dof_index>
2088 const bool vector_valued_once =
false,
2089 const std::vector<unsigned int> &target_component = {});
2107 template <
int dim,
int spacedim>
2108 std::vector<types::global_dof_index>
2110 const std::vector<unsigned int> &target_block =
2111 std::vector<unsigned int>());
2128 template <
int dim,
int spacedim>
2129 DEAL_II_DEPRECATED_EARLY
void
2131 std::vector<unsigned int> & active_fe_indices);
2160 template <
int dim,
int spacedim>
2188 template <
int dim,
int spacedim>
2191 std::vector<types::global_dof_index> &mapping);
2203 template <
int dim,
int spacedim>
2206 const std::set<types::boundary_id> &boundary_ids,
2207 std::vector<types::global_dof_index> &mapping);
2237 template <
int dim,
int spacedim>
2247 template <
int dim,
int spacedim>
2250 const ::hp::MappingCollection<dim, spacedim> &mapping,
2285 template <
int dim,
int spacedim>
2296 template <
int dim,
int spacedim>
2299 const ::hp::MappingCollection<dim, spacedim> &mapping,
2325 template <
int dim,
int spacedim,
class Comp>
2331 &point_to_index_map);
2369 template <
int dim,
int spacedim,
typename Number>
2374 const unsigned int component = 0);
2453 template <
int spacedim>
2500 template <
int dim,
int spacedim,
typename number>
2518 template <
int dim,
int spacedim,
typename number>
2613 template <
int dim,
int spacedim,
class Comp>
2619 &point_to_index_map)
2624 std::vector<Point<spacedim>> support_points(dof_handler.
n_dofs());
2629 point_to_index_map.clear();
2631 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_NAMESPACE_CLOSE
#define DeclException0(Exception0)
static ::ExceptionBase & ExcGridsDontMatch()
static ::ExceptionBase & ExcGridNotCoarser()
static ::ExceptionBase & ExcNoFESelected()
static ::ExceptionBase & ExcInvalidBoundaryIndicator()
static ::ExceptionBase & ExcFiniteElementsDontMatch()
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 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_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)
@ matrix
Contents is actually a matrix.
const types::subdomain_id invalid_subdomain_id
unsigned int global_dof_index
unsigned int subdomain_id
ParameterHandler::OutputStyle operator|(const ParameterHandler::OutputStyle f1, const ParameterHandler::OutputStyle f2)