![]() |
Reference documentation for deal.II version 8.1.0
|
Functions | |
template<int dim, int spacedim> | |
void | compute_row_length_vector (const DoFHandler< dim, spacedim > &dofs, const unsigned int level, std::vector< unsigned int > &row_lengths, const DoFTools::Coupling flux_couplings=DoFTools::none) |
template<int dim, int spacedim> | |
void | compute_row_length_vector (const DoFHandler< dim, spacedim > &dofs, const unsigned int level, std::vector< unsigned int > &row_lengths, const Table< 2, DoFTools::Coupling > &couplings, const Table< 2, DoFTools::Coupling > &flux_couplings) |
template<class DH , class SparsityPattern > | |
void | make_sparsity_pattern (const DH &dof_handler, SparsityPattern &sparsity, const unsigned int level) |
template<int dim, class SparsityPattern , int spacedim> | |
void | make_flux_sparsity_pattern (const DoFHandler< dim, spacedim > &dof_handler, SparsityPattern &sparsity, const unsigned int level) |
template<int dim, class SparsityPattern , int spacedim> | |
void | make_flux_sparsity_pattern_edge (const DoFHandler< dim, spacedim > &dof_handler, SparsityPattern &sparsity, const unsigned int level) |
template<int dim, class SparsityPattern , int spacedim> | |
void | make_flux_sparsity_pattern (const DoFHandler< dim, spacedim > &dof, SparsityPattern &sparsity, const unsigned int level, const Table< 2, DoFTools::Coupling > &int_mask, const Table< 2, DoFTools::Coupling > &flux_mask) |
template<int dim, class SparsityPattern , int spacedim> | |
void | make_flux_sparsity_pattern_edge (const DoFHandler< dim, spacedim > &dof_handler, SparsityPattern &sparsity, const unsigned int level, const Table< 2, DoFTools::Coupling > &flux_mask) |
template<class DH > | |
void | count_dofs_per_block (const DH &dof_handler, std::vector< std::vector< types::global_dof_index > > &dofs_per_block, std::vector< unsigned int > target_block=std::vector< unsigned int >()) |
template<int dim, int spacedim> | |
void | count_dofs_per_component (const DoFHandler< dim, spacedim > &mg_dof, std::vector< std::vector< types::global_dof_index > > &result, const bool only_once=false, std::vector< unsigned int > target_component=std::vector< unsigned int >()) |
template<int dim, int spacedim> | |
void | count_dofs_per_component (const DoFHandler< dim, spacedim > &mg_dof, std::vector< std::vector< types::global_dof_index > > &result, std::vector< unsigned int > target_component) DEAL_II_DEPRECATED |
template<int dim, int spacedim> | |
void | make_boundary_list (const DoFHandler< dim, spacedim > &mg_dof, const typename FunctionMap< dim >::type &function_map, std::vector< std::set< types::global_dof_index > > &boundary_indices, const ComponentMask &component_mask=ComponentMask()) |
template<int dim, int spacedim> | |
void | make_boundary_list (const DoFHandler< dim, spacedim > &mg_dof, const typename FunctionMap< dim >::type &function_map, std::vector< IndexSet > &boundary_indices, const ComponentMask &component_mask=ComponentMask()) |
template<typename number > | |
void | apply_boundary_values (const std::set< types::global_dof_index > &boundary_dofs, SparseMatrix< number > &matrix, const bool preserve_symmetry, const bool ignore_zeros=false) DEAL_II_DEPRECATED |
template<typename number > | |
void | apply_boundary_values (const std::set< types::global_dof_index > &boundary_dofs, BlockSparseMatrix< number > &matrix, const bool preserve_symmetry) DEAL_II_DEPRECATED |
template<int dim, int spacedim> | |
void | extract_inner_interface_dofs (const DoFHandler< dim, spacedim > &mg_dof_handler, std::vector< std::vector< bool > > &interface_dofs, std::vector< std::vector< bool > > &boundary_interface_dofs) |
template<int dim, int spacedim> | |
void | extract_inner_interface_dofs (const DoFHandler< dim, spacedim > &mg_dof_handler, std::vector< std::vector< bool > > &interface_dofs) |
template<int dim, int spacedim> | |
void | extract_non_interface_dofs (const DoFHandler< dim, spacedim > &mg_dof_handler, std::vector< std::set< types::global_dof_index > > &non_interface_dofs) |
This is a collection of functions operating on, and manipulating the numbers of degrees of freedom in a multilevel triangulation. It is similar in purpose and function to the DoFTools
class, but operates on levels of DoFHandler objects. See there and the documentation of the member functions for more information.
void MGTools::compute_row_length_vector | ( | const DoFHandler< dim, spacedim > & | dofs, |
const unsigned int | level, | ||
std::vector< unsigned int > & | row_lengths, | ||
const DoFTools::Coupling | flux_couplings = DoFTools::none |
||
) |
Compute row length vector for multilevel methods.
void MGTools::compute_row_length_vector | ( | const DoFHandler< dim, spacedim > & | dofs, |
const unsigned int | level, | ||
std::vector< unsigned int > & | row_lengths, | ||
const Table< 2, DoFTools::Coupling > & | couplings, | ||
const Table< 2, DoFTools::Coupling > & | flux_couplings | ||
) |
Compute row length vector for multilevel methods with optimization for block couplings.
void MGTools::make_sparsity_pattern | ( | const DH & | dof_handler, |
SparsityPattern & | sparsity, | ||
const unsigned int | level | ||
) |
Write the sparsity structure of the matrix belonging to the specified level
. The sparsity pattern is not compressed, so before creating the actual matrix you have to compress the matrix yourself, using SparseMatrixStruct::compress()
.
There is no need to consider hanging nodes here, since only one level is considered.
void MGTools::make_flux_sparsity_pattern | ( | const DoFHandler< dim, spacedim > & | dof_handler, |
SparsityPattern & | sparsity, | ||
const unsigned int | level | ||
) |
Make a sparsity pattern including fluxes of discontinuous Galerkin methods. make_sparsity_pattern DoFTools
void MGTools::make_flux_sparsity_pattern_edge | ( | const DoFHandler< dim, spacedim > & | dof_handler, |
SparsityPattern & | sparsity, | ||
const unsigned int | level | ||
) |
Create sparsity pattern for the fluxes at refinement edges. The matrix maps a function of the fine level space level
to the coarser space.
void MGTools::make_flux_sparsity_pattern | ( | const DoFHandler< dim, spacedim > & | dof, |
SparsityPattern & | sparsity, | ||
const unsigned int | level, | ||
const Table< 2, DoFTools::Coupling > & | int_mask, | ||
const Table< 2, DoFTools::Coupling > & | flux_mask | ||
) |
This function does the same as the other with the same name, but it gets two additional coefficient matrices. A matrix entry will only be generated for two basis functions, if there is a non-zero entry linking their associated components in the coefficient matrix.
There is one matrix for couplings in a cell and one for the couplings occurring in fluxes.
void MGTools::make_flux_sparsity_pattern_edge | ( | const DoFHandler< dim, spacedim > & | dof_handler, |
SparsityPattern & | sparsity, | ||
const unsigned int | level, | ||
const Table< 2, DoFTools::Coupling > & | flux_mask | ||
) |
Create sparsity pattern for the fluxes at refinement edges. The matrix maps a function of the fine level space level
to the coarser space. This is the version restricting the pattern to the elements actually needed.
void MGTools::count_dofs_per_block | ( | const DH & | dof_handler, |
std::vector< std::vector< types::global_dof_index > > & | dofs_per_block, | ||
std::vector< unsigned int > | target_block = std::vector< unsigned int >() |
||
) |
Count the dofs block-wise on each level.
Result is a vector containing for each level a vector containing the number of dofs for each block (access is result[level][block]
).
void MGTools::count_dofs_per_component | ( | const DoFHandler< dim, spacedim > & | mg_dof, |
std::vector< std::vector< types::global_dof_index > > & | result, | ||
const bool | only_once = false , |
||
std::vector< unsigned int > | target_component = std::vector< unsigned int >() |
||
) |
Count the dofs component-wise on each level.
Result is a vector containing for each level a vector containing the number of dofs for each component (access is result[level][component]
).
void MGTools::count_dofs_per_component | ( | const DoFHandler< dim, spacedim > & | mg_dof, |
std::vector< std::vector< types::global_dof_index > > & | result, | ||
std::vector< unsigned int > | target_component | ||
) |
void MGTools::make_boundary_list | ( | const DoFHandler< dim, spacedim > & | mg_dof, |
const typename FunctionMap< dim >::type & | function_map, | ||
std::vector< std::set< types::global_dof_index > > & | boundary_indices, | ||
const ComponentMask & | component_mask = ComponentMask() |
||
) |
Generate a list of those degrees of freedom at the boundary which should be eliminated from the matrix.
This is the multilevel equivalent of VectorTools::interpolate_boundary_values, but since the multilevel method does not have its own right hand side, the function values are ignored.
boundary_indices
is a vector which on return contains all indices of boundary constraint degrees of freedom for each level. Its length has to match the number of levels. void MGTools::make_boundary_list | ( | const DoFHandler< dim, spacedim > & | mg_dof, |
const typename FunctionMap< dim >::type & | function_map, | ||
std::vector< IndexSet > & | boundary_indices, | ||
const ComponentMask & | component_mask = ComponentMask() |
||
) |
The same function as above, but return an IndexSet rather than a std::set<unsigned int> on each level.
void MGTools::apply_boundary_values | ( | const std::set< types::global_dof_index > & | boundary_dofs, |
SparseMatrix< number > & | matrix, | ||
const bool | preserve_symmetry, | ||
const bool | ignore_zeros = false |
||
) |
void MGTools::apply_boundary_values | ( | const std::set< types::global_dof_index > & | boundary_dofs, |
BlockSparseMatrix< number > & | matrix, | ||
const bool | preserve_symmetry | ||
) |
void MGTools::extract_inner_interface_dofs | ( | const DoFHandler< dim, spacedim > & | mg_dof_handler, |
std::vector< std::vector< bool > > & | interface_dofs, | ||
std::vector< std::vector< bool > > & | boundary_interface_dofs | ||
) |
For each level in a multigrid hierarchy, produce a boolean mask that indicates which of the degrees of freedom are along interfaces of this level to cells that only exist on coarser levels. The function returns the subset of these indices in the last argument that are not only on interior interfaces (i.e. between cells of a given level and adjacent coarser levels) but also on the external boundary of the domain.
void MGTools::extract_inner_interface_dofs | ( | const DoFHandler< dim, spacedim > & | mg_dof_handler, |
std::vector< std::vector< bool > > & | interface_dofs | ||
) |
Does the same as the function above, but fills only the interface_dofs.