deal.II version GIT relicensing-2169-gec1b43f35b 2024-11-22 07:10:00+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
dof_tools.cc File Reference
#include <deal.II/base/mpi.h>
#include <deal.II/base/quadrature.h>
#include <deal.II/base/table.h>
#include <deal.II/base/template_constraints.h>
#include <deal.II/distributed/shared_tria.h>
#include <deal.II/distributed/tria.h>
#include <deal.II/dofs/dof_accessor.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/fe/fe.h>
#include <deal.II/fe/fe_tools.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/grid/filtered_iterator.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/tria.h>
#include <deal.II/grid/tria_iterator.h>
#include <deal.II/hp/fe_collection.h>
#include <deal.II/hp/fe_values.h>
#include <deal.II/hp/mapping_collection.h>
#include <deal.II/hp/q_collection.h>
#include <deal.II/lac/affine_constraints.h>
#include <deal.II/lac/sparsity_pattern.h>
#include <deal.II/lac/sparsity_pattern_base.h>
#include <deal.II/lac/vector.h>
#include <deal.II/numerics/vector_tools_interpolate.h>
#include <algorithm>
#include <numeric>
#include "dof_tools.inst"

Go to the source code of this file.

Classes

struct  DoFTools::internal::ComparisonHelper< dim, Number >
 
class  DoFTools::internal::RigidBodyMotion< dim >
 

Namespaces

namespace  DoFTools
 
namespace  DoFTools::internal
 

Functions

template<int dim, int spacedim>
std::vector< unsigned char > DoFTools::internal::get_local_component_association (const FiniteElement< dim, spacedim > &fe, const ComponentMask &component_mask)
 
template<int dim, int spacedim>
void DoFTools::internal::get_component_association (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< unsigned char > &dofs_by_component, const unsigned int mg_level=numbers::invalid_unsigned_int)
 
template<int dim, int spacedim>
void DoFTools::internal::get_block_association (const DoFHandler< dim, spacedim > &dof, std::vector< unsigned char > &dofs_by_block)
 
template<int dim, int spacedim>
void DoFTools::extract_boundary_dofs (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< bool > &selected_dofs, const std::set< types::boundary_id > &boundary_ids)
 
template<int dim, int spacedim>
void DoFTools::extract_boundary_dofs (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, IndexSet &selected_dofs, const std::set< types::boundary_id > &boundary_ids)
 
template<int dim, int spacedim>
std::vector< std::vector< bool > > DoFTools::internal::extract_constant_modes (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, const unsigned int mg_level)
 
Tensor< 1, 2 > DoFTools::internal::cross_product (const Tensor< 1, 2 > &tensor1, const Tensor< 1, 1 > &tensor2)
 
Tensor< 1, 3 > DoFTools::internal::cross_product (const Tensor< 1, 3 > &tensor1, const Tensor< 1, 3 > &tensor2)
 
template<int dim, int spacedim>
std::vector< std::vector< double > > DoFTools::internal::extract_rigid_body_modes (const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, const unsigned int mg_level)
 
template<int dim, int spacedim>
void DoFTools::internal::resolve_components (const FiniteElement< dim, spacedim > &fe, const std::vector< unsigned char > &dofs_by_component, const std::vector< unsigned int > &target_component, const bool only_once, std::vector< types::global_dof_index > &dofs_per_component, unsigned int &component)
 
template<int dim, int spacedim>
void DoFTools::internal::resolve_components (const hp::FECollection< dim, spacedim > &fe_collection, const std::vector< unsigned char > &dofs_by_component, const std::vector< unsigned int > &target_component, const bool only_once, std::vector< types::global_dof_index > &dofs_per_component, unsigned int &component)
 
Miscellaneous
template<int dim, int spacedim, typename Number >
void DoFTools::distribute_cell_to_dof_vector (const DoFHandler< dim, spacedim > &dof_handler, const Vector< Number > &cell_data, Vector< double > &dof_data, const unsigned int component=0)
 
template<int spacedim>
void DoFTools::write_gnuplot_dof_support_point_info (std::ostream &out, const std::map< types::global_dof_index, Point< spacedim > > &support_points)
 
Identifying subsets of degrees of freedom with particular properties
template<int dim, int spacedim>
IndexSet DoFTools::extract_dofs (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_dofs (const DoFHandler< dim, spacedim > &dof_handler, const BlockMask &block_mask)
 
template<int dim, int spacedim>
void DoFTools::extract_level_dofs (const unsigned int level, const DoFHandler< dim, spacedim > &dof, const ComponentMask &component_mask, std::vector< bool > &selected_dofs)
 
template<int dim, int spacedim>
void DoFTools::extract_level_dofs (const unsigned int level, const DoFHandler< dim, spacedim > &dof, const BlockMask &component_mask, std::vector< bool > &selected_dofs)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_boundary_dofs (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={}, const std::set< types::boundary_id > &boundary_ids={})
 
template<int dim, int spacedim>
void DoFTools::extract_dofs_with_support_on_boundary (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< bool > &selected_dofs, const std::set< types::boundary_id > &boundary_ids=std::set< types::boundary_id >())
 
template<int dim, int spacedim, typename number = double>
IndexSet DoFTools::extract_dofs_with_support_contained_within (const DoFHandler< dim, spacedim > &dof_handler, const std::function< bool(const typename DoFHandler< dim, spacedim >::active_cell_iterator &)> &predicate, const AffineConstraints< number > &constraints={})
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_hanging_node_dofs (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
std::vector< std::vector< bool > > DoFTools::extract_constant_modes (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
 
template<int dim, int spacedim>
void DoFTools::extract_constant_modes (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< std::vector< bool > > &constant_modes)
 
template<int dim, int spacedim>
std::vector< std::vector< bool > > DoFTools::extract_level_constant_modes (const unsigned int level, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
 
template<int dim, int spacedim>
void DoFTools::extract_level_constant_modes (const unsigned int level, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask, std::vector< std::vector< bool > > &constant_modes)
 
template<int dim, int spacedim>
std::vector< std::vector< double > > DoFTools::extract_rigid_body_modes (const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
 
template<int dim, int spacedim>
std::vector< std::vector< double > > DoFTools::extract_level_rigid_body_modes (const unsigned int level, const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &component_mask={})
 
Parallelization and domain decomposition
template<int dim, int spacedim>
std::vector< IndexSetDoFTools::locally_owned_dofs_per_component (const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &components={})
 
template<int dim, int spacedim>
void DoFTools::extract_subdomain_dofs (const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain_id, std::vector< bool > &selected_dofs)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_locally_active_dofs (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
void DoFTools::extract_locally_active_dofs (const DoFHandler< dim, spacedim > &dof_handler, IndexSet &dof_set)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_locally_active_level_dofs (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
 
template<int dim, int spacedim>
void DoFTools::extract_locally_active_level_dofs (const DoFHandler< dim, spacedim > &dof_handler, IndexSet &dof_set, const unsigned int level)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_locally_relevant_dofs (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
void DoFTools::extract_locally_relevant_dofs (const DoFHandler< dim, spacedim > &dof_handler, IndexSet &dof_set)
 
template<int dim, int spacedim>
IndexSet DoFTools::extract_locally_relevant_level_dofs (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
 
template<int dim, int spacedim>
void DoFTools::extract_locally_relevant_level_dofs (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, IndexSet &dof_set)
 
template<int dim, int spacedim>
std::vector< IndexSetDoFTools::locally_owned_dofs_per_subdomain (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
std::vector< IndexSetDoFTools::locally_relevant_dofs_per_subdomain (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
void DoFTools::get_subdomain_association (const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::subdomain_id > &subdomain)
 
template<int dim, int spacedim>
unsigned int DoFTools::count_dofs_with_subdomain_association (const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
 
template<int dim, int spacedim>
IndexSet DoFTools::dof_indices_with_subdomain_association (const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain)
 
template<int dim, int spacedim>
void DoFTools::count_dofs_with_subdomain_association (const DoFHandler< dim, spacedim > &dof_handler, const types::subdomain_id subdomain, std::vector< unsigned int > &n_dofs_on_subdomain)
 
Coupling between DoFHandler objects on different dimensions
template<int dim, int spacedim>
std::map< typename DoFHandler< dim - 1, spacedim >::active_cell_iterator, std::pair< typename DoFHandler< dim, spacedim >::active_cell_iterator, unsigned int > > DoFTools::map_boundary_to_bulk_dof_iterators (const std::map< typename Triangulation< dim - 1, spacedim >::cell_iterator, typename Triangulation< dim, spacedim >::face_iterator > &c1_to_c0, const DoFHandler< dim, spacedim > &c0_dh, const DoFHandler< dim - 1, spacedim > &c1_dh)
 
Counting degrees of freedom and related functions
template<int dim, int spacedim>
void DoFTools::get_active_fe_indices (const DoFHandler< dim, spacedim > &dof_handler, std::vector< unsigned int > &active_fe_indices)
 
template<int dim, int spacedim>
std::vector< types::global_dof_indexDoFTools::count_dofs_per_fe_component (const DoFHandler< dim, spacedim > &dof_handler, const bool vector_valued_once=false, const std::vector< unsigned int > &target_component={})
 
template<int dim, int spacedim>
std::vector< types::global_dof_indexDoFTools::count_dofs_per_fe_block (const DoFHandler< dim, spacedim > &dof, const std::vector< unsigned int > &target_block=std::vector< unsigned int >())
 
template<int dim, int spacedim>
unsigned int DoFTools::count_dofs_on_patch (const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)
 
Functions that return different DoF mappings
template<int dim, int spacedim>
void DoFTools::map_dof_to_boundary_indices (const DoFHandler< dim, spacedim > &dof_handler, std::vector< types::global_dof_index > &mapping)
 
template<int dim, int spacedim>
void DoFTools::map_dof_to_boundary_indices (const DoFHandler< dim, spacedim > &dof_handler, const std::set< types::boundary_id > &boundary_ids, std::vector< types::global_dof_index > &mapping)
 
template<int dim, int spacedim>
void DoFTools::map_dofs_to_support_points (const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::vector< Point< spacedim > > &support_points, const ComponentMask &mask={})
 
template<int dim, int spacedim>
void DoFTools::map_dofs_to_support_points (const hp::MappingCollection< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::vector< Point< spacedim > > &support_points, const ComponentMask &mask={})
 
template<int dim, int spacedim>
void DoFTools::map_dofs_to_support_points (const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::map< types::global_dof_index, Point< spacedim > > &support_points, const ComponentMask &mask={})
 
template<int dim, int spacedim>
void DoFTools::map_dofs_to_support_points (const hp::MappingCollection< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, std::map< types::global_dof_index, Point< spacedim > > &support_points, const ComponentMask &mask={})
 
template<int dim, int spacedim>
std::map< types::global_dof_index, Point< spacedim > > DoFTools::map_dofs_to_support_points (const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &mask={})
 
template<int dim, int spacedim>
std::map< types::global_dof_index, Point< spacedim > > DoFTools::map_dofs_to_support_points (const hp::MappingCollection< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof_handler, const ComponentMask &mask={})
 
DoF couplings
template<int dim, int spacedim>
void DoFTools::convert_couplings_to_blocks (const DoFHandler< dim, spacedim > &dof_handler, const Table< 2, Coupling > &table_by_component, std::vector< Table< 2, Coupling > > &tables_by_block)
 
DoF indices on patches of cells

Create structures containing a large set of degrees of freedom for small patches of cells. The resulting objects can be used in RelaxationBlockSOR and related classes to implement Schwarz preconditioners and smoothers, where the subdomains consist of small numbers of cells only.

template<int dim, int spacedim>
void DoFTools::make_cell_patches (SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const std::vector< bool > &selected_dofs={}, const types::global_dof_index offset=0)
 
template<int dim, int spacedim>
void DoFTools::make_single_patch (SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only=false)
 
template<int dim, int spacedim>
void DoFTools::make_child_patches (SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only, const bool boundary_dofs=false)
 
template<int dim, int spacedim>
std::vector< unsigned intDoFTools::make_vertex_patches (SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool interior_dofs_only, const bool boundary_patches=false, const bool level_boundary_patches=false, const bool single_cell_patches=false, const bool invert_vertex_mapping=false)
 
template<int dim, int spacedim>
std::vector< unsigned intDoFTools::make_vertex_patches (SparsityPattern &block_list, const DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const BlockMask &exclude_boundary_dofs=BlockMask(), const bool boundary_patches=false, const bool level_boundary_patches=false, const bool single_cell_patches=false, const bool invert_vertex_mapping=false)
 
template<int dim, int spacedim>
std::vector< types::global_dof_indexDoFTools::get_dofs_on_patch (const std::vector< typename DoFHandler< dim, spacedim >::active_cell_iterator > &patch)