16 #ifndef dealii__dof_tools_h 17 #define dealii__dof_tools_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/exceptions.h> 22 #include <deal.II/base/table.h> 23 #include <deal.II/base/index_set.h> 24 #include <deal.II/base/point.h> 25 #include <deal.II/lac/constraint_matrix.h> 26 #include <deal.II/lac/sparsity_pattern.h> 27 #include <deal.II/dofs/function_map.h> 28 #include <deal.II/dofs/dof_handler.h> 29 #include <deal.II/fe/fe.h> 30 #include <deal.II/fe/component_mask.h> 31 #include <deal.II/hp/mapping_collection.h> 37 DEAL_II_NAMESPACE_OPEN
39 template<
int dim,
class T>
class Table;
41 template <
typename number>
class Vector;
42 template <
int dim,
typename Number>
class Function;
44 template <
int dim,
int spacedim>
class DoFHandler;
47 template <
int dim,
int spacedim>
class DoFHandler;
52 template <
int dim,
int spacedim>
class Mapping;
56 template <
typename CellIterator>
struct PeriodicFacePair;
221 template <
int dim,
int spacedim>
230 template <
int dim,
int spacedim>
243 template <
int dim,
int spacedim>
255 template <
int dim,
int spacedim>
267 template <
int dim,
int spacedim>
279 template <
int dim,
int spacedim>
292 template <
int dim,
int spacedim>
305 template <
int dim,
int spacedim>
318 template <
int dim,
int spacedim>
331 template <
int dim,
int spacedim>
459 template <
typename DoFHandlerType,
typename SparsityPatternType>
462 SparsityPatternType &sparsity_pattern,
464 const bool keep_constrained_dofs =
true,
532 template <
typename DoFHandlerType,
typename SparsityPatternType>
536 SparsityPatternType &sparsity_pattern,
538 const bool keep_constrained_dofs =
true,
561 template <
typename DoFHandlerType,
typename SparsityPatternType>
564 const DoFHandlerType &dof_col,
565 SparsityPatternType &sparsity);
612 template<
typename DoFHandlerType,
typename SparsityPatternType>
615 SparsityPatternType &sparsity_pattern);
625 template<
typename DoFHandlerType,
typename SparsityPatternType>
628 SparsityPatternType &sparsity_pattern,
630 const bool keep_constrained_dofs =
true,
652 template <
typename DoFHandlerType,
typename SparsityPatternType>
655 SparsityPatternType &sparsity,
668 template <
typename DoFHandlerType,
typename SparsityPatternType>
671 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
672 SparsityPatternType &sparsity_pattern);
690 template <
typename DoFHandlerType,
typename SparsityPatternType>
693 (
const DoFHandlerType &dof,
695 const std::vector<types::global_dof_index> &dof_to_boundary_mapping,
696 SparsityPatternType &sparsity);
744 template <
typename DoFHandlerType>
816 template <
int dim,
int spacedim>
819 const unsigned int coarse_component,
821 const unsigned int fine_component,
842 template <
int dim,
int spacedim>
845 const unsigned int coarse_component,
847 const unsigned int fine_component,
849 std::vector<std::map<types::global_dof_index, float> > &transfer_representation);
1010 template<
typename FaceIterator>
1013 (
const FaceIterator &face_1,
1014 const typename identity<FaceIterator>::type &face_2,
1017 const bool face_orientation =
true,
1018 const bool face_flip =
false,
1019 const bool face_rotation =
false,
1021 const std::vector<unsigned int> &first_vector_components = std::vector<unsigned int>());
1046 template<
typename DoFHandlerType>
1053 const std::vector<unsigned int> &first_vector_components = std::vector<unsigned int>());
1087 template<
typename DoFHandlerType>
1090 (
const DoFHandlerType &dof_handler,
1093 const int direction,
1123 template<
typename DoFHandlerType>
1126 (
const DoFHandlerType &dof_handler,
1128 const int direction,
1160 template <
typename DoFHandlerType,
typename Number>
1165 const unsigned int component = 0);
1201 template <
int dim,
int spacedim>
1205 std::vector<bool> &selected_dofs);
1210 template <
int dim,
int spacedim>
1214 std::vector<bool> &selected_dofs);
1234 template <
int dim,
int spacedim>
1238 std::vector<bool> &selected_dofs);
1243 template <
int dim,
int spacedim>
1247 std::vector<bool> &selected_dofs);
1253 template <
typename DoFHandlerType>
1256 const DoFHandlerType &dof,
1258 std::vector<bool> &selected_dofs);
1264 template <
typename DoFHandlerType>
1267 const DoFHandlerType &dof,
1269 std::vector<bool> &selected_dofs);
1321 template <
typename DoFHandlerType>
1325 std::vector<bool> &selected_dofs,
1326 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
1358 template <
typename DoFHandlerType>
1363 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
1381 template <
typename DoFHandlerType>
1385 std::vector<bool> &selected_dofs,
1386 const std::set<types::boundary_id> &boundary_ids = std::set<types::boundary_id>());
1421 template <
typename DoFHandlerType>
1425 std::vector<std::vector<bool> > &constant_modes);
1442 template <
int dim,
int spacedim>
1445 std::vector<bool> &selected_dofs);
1461 template <
typename DoFHandlerType>
1465 std::vector<bool> &selected_dofs);
1474 template <
typename DoFHandlerType>
1494 template <
typename DoFHandlerType>
1508 template <
typename DoFHandlerType>
1529 template <
typename DoFHandlerType>
1530 std::vector<IndexSet>
1549 template <
typename DoFHandlerType>
1550 std::vector<IndexSet>
1558 template <
typename DoFHandlerType>
1561 const unsigned int level,
1595 template <
typename DoFHandlerType>
1598 std::vector<types::subdomain_id> &subdomain);
1625 template <
typename DoFHandlerType>
1649 template <
typename DoFHandlerType>
1653 std::vector<unsigned int> &n_dofs_on_subdomain);
1675 template <
typename DoFHandlerType>
1700 template <
typename DoFHandlerType,
class Sparsity>
1702 const DoFHandlerType &dof_handler,
1703 const unsigned int level,
1704 const std::vector<bool> &selected_dofs = std::vector<bool>(),
1745 template <
typename DoFHandlerType>
1747 const DoFHandlerType &dof_handler,
1748 const unsigned int level,
1749 const bool interior_dofs_only,
1750 const bool boundary_patches =
false,
1751 const bool level_boundary_patches =
false,
1752 const bool single_cell_patches =
false);
1791 template <
typename DoFHandlerType>
1793 const DoFHandlerType &dof_handler,
1794 const unsigned int level,
1795 const bool interior_dofs_only,
1796 const bool boundary_dofs =
false);
1817 template <
typename DoFHandlerType>
1819 const DoFHandlerType &dof_handler,
1820 const unsigned int level,
1821 const bool interior_dofs_only =
false);
1865 template <
typename DoFHandlerType>
1868 std::vector<types::global_dof_index> &dofs_per_component,
1869 const bool vector_valued_once =
false,
1870 std::vector<unsigned int> target_component
1871 = std::vector<unsigned int>());
1889 template <
typename DoFHandlerType>
1892 std::vector<types::global_dof_index> &dofs_per_block,
1893 const std::vector<unsigned int> &target_block
1894 = std::vector<unsigned int>());
1906 template <
typename DoFHandlerType>
1909 std::vector<unsigned int> &active_fe_indices);
1945 template <
typename DoFHandlerType>
1947 count_dofs_on_patch (
const std::vector<typename DoFHandlerType::active_cell_iterator> &patch);
2000 template <
typename DoFHandlerType>
2001 std::vector<types::global_dof_index>
2002 get_dofs_on_patch (
const std::vector<typename DoFHandlerType::active_cell_iterator> &patch);
2021 template <
typename DoFHandlerType>
2024 std::vector<types::global_dof_index> &mapping);
2036 template <
typename DoFHandlerType>
2039 const std::set<types::boundary_id> &boundary_ids,
2040 std::vector<types::global_dof_index> &mapping);
2059 template <
int dim,
int spacedim>
2069 template <
int dim,
int spacedim>
2102 template <
int dim,
int spacedim>
2111 template <
int dim,
int spacedim>
2133 template <
typename DoFHandlerType,
class Comp>
2137 const DoFHandlerType &dof_handler,
2149 template <
int dim,
int spacedim>
2195 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
2212 template <
int dim,
int spacedim,
template <
int,
int>
class DoFHandlerType>
2228 template <
int dim,
int spacedim>
2239 template <
int dim,
int spacedim>
2251 template <
int dim,
int spacedim>
2252 std::vector<Table<2,Coupling> >
2308 else if (c1 != always && c2 == nonzero)
2323 if (c1 == always || c2 == always)
2325 if (c1 == nonzero || c2 == nonzero)
2333 template <
int dim,
int spacedim>
2338 return dh.
get_fe().dofs_per_cell;
2342 template <
int dim,
int spacedim>
2347 return dh.
get_fe().dofs_per_face;
2351 template <
int dim,
int spacedim>
2356 return dh.
get_fe().dofs_per_vertex;
2360 template <
int dim,
int spacedim>
2365 return dh.
get_fe().n_components();
2370 template <
int dim,
int spacedim>
2375 return dh.
get_fe().is_primitive();
2379 template <
int dim,
int spacedim>
2384 return dh.
get_fe().max_dofs_per_cell ();
2388 template <
int dim,
int spacedim>
2393 return dh.
get_fe().max_dofs_per_face ();
2397 template <
int dim,
int spacedim>
2402 return dh.
get_fe().max_dofs_per_vertex ();
2406 template <
int dim,
int spacedim>
2411 return dh.
get_fe()[0].n_components();
2415 template <
int dim,
int spacedim>
2420 return dh.
get_fe()[0].is_primitive();
2424 template <
typename DoFHandlerType,
class Comp>
2429 const DoFHandlerType &dof_handler,
2435 std::vector<Point<DoFHandlerType::space_dimension> > support_points (dof_handler.n_dofs());
2440 point_to_index_map.clear ();
2442 point_to_index_map[support_points[i]] = i;
2448 DEAL_II_NAMESPACE_CLOSE
static const unsigned int invalid_unsigned_int
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)
const types::subdomain_id invalid_subdomain_id
const FiniteElement< dim, spacedim > & get_fe() const
void make_sparsity_pattern(const DoFHandlerType &dof_row, const DoFHandlerType &dof_col, SparsityPatternType &sparsity)
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, ConstraintMatrix &constraints)
const hp::FECollection< dim, spacedim > & get_fe() const
void make_hanging_node_constraints(const DoFHandlerType &dof_handler, ConstraintMatrix &constraints)
unsigned int global_dof_index
Abstract base class for mapping classes.
#define DeclException0(Exception0)
UpdateFlags operator|(UpdateFlags f1, UpdateFlags f2)
std::map< types::boundary_id, const Function< dim, Number > * > type
unsigned int subdomain_id
void make_boundary_sparsity_pattern(const DoFHandlerType &dof, const typename FunctionMap< DoFHandlerType::space_dimension >::type &boundary_ids, const std::vector< types::global_dof_index > &dof_to_boundary_mapping, SparsityPatternType &sparsity)
void make_flux_sparsity_pattern(const DoFHandlerType &dof, SparsityPatternType &sparsity, const Table< 2, Coupling > &cell_integrals_mask, const Table< 2, Coupling > &face_integrals_mask)
UpdateFlags & operator|=(UpdateFlags &f1, UpdateFlags f2)
void make_zero_boundary_constraints(const DoFHandlerType< dim, spacedim > &dof, ConstraintMatrix &zero_boundary_constraints, const ComponentMask &component_mask=ComponentMask())
unsigned char boundary_id