ExaDG
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
ExaDG::MultigridMappings< dim, Number > Class Template Reference

#include <grid.h>

Public Member Functions

 MultigridMappings (std::shared_ptr< dealii::Mapping< dim > > mapping, std::shared_ptr< dealii::Mapping< dim > > mapping_coarse_levels)
 
 MultigridMappings (std::shared_ptr< MappingDoFVector< dim, Number > > mapping_dof_vector, unsigned int const degree_coarse_mappings)
 
void initialize_coarse_mappings (Grid< dim > const &grid, unsigned int const n_h_levels)
 
dealii::Mapping< dim > const & get_mapping (unsigned int const h_level, unsigned int const n_h_levels) const
 

Public Attributes

std::function< void(std::shared_ptr< dealii::Triangulation< dim > const > const &fine_triangulation, std::vector< std::shared_ptr< dealii::Triangulation< dim > const > > const &coarse_triangulations) lambda_initialize_coarse_mappings )
 

Detailed Description

template<int dim, typename Number>
class ExaDG::MultigridMappings< dim, Number >

This class handles mappings for use in multigrid.

The lambda function initialize_coarse_mappings() can be overwritten in order to realize a user-specific construction of the mapping on coarser grids.

Constructor & Destructor Documentation

◆ MultigridMappings() [1/2]

template<int dim, typename Number >
ExaDG::MultigridMappings< dim, Number >::MultigridMappings ( std::shared_ptr< dealii::Mapping< dim > > mapping,
std::shared_ptr< dealii::Mapping< dim > > mapping_coarse_levels )
inline

Use this constructor if the fine-level mapping is a "normal" dealii::Mapping.

◆ MultigridMappings() [2/2]

template<int dim, typename Number >
ExaDG::MultigridMappings< dim, Number >::MultigridMappings ( std::shared_ptr< MappingDoFVector< dim, Number > > mapping_dof_vector,
unsigned int const degree_coarse_mappings )
inline

Use this constructor if the fine-level mapping is of type ExaDG::MappingDoFVector.

Member Function Documentation

◆ get_mapping()

template<int dim, typename Number >
dealii::Mapping< dim > const & ExaDG::MultigridMappings< dim, Number >::get_mapping ( unsigned int const h_level,
unsigned int const n_h_levels ) const
inline

Returns the dealii::Mapping for a given h_level of n_h_levels.

◆ initialize_coarse_mappings()

template<int dim, typename Number >
void ExaDG::MultigridMappings< dim, Number >::initialize_coarse_mappings ( Grid< dim > const & grid,
unsigned int const n_h_levels )
inline

Initializes the multigrid mappings on coarse h levels.

Member Data Documentation

◆ lambda_initialize_coarse_mappings

template<int dim, typename Number >
std::function<void( std::shared_ptr<dealii::Triangulation<dim> const> const & fine_triangulation, std::vector<std::shared_ptr<dealii::Triangulation<dim> const>> const & coarse_triangulations) ExaDG::MultigridMappings< dim, Number >::lambda_initialize_coarse_mappings)
Initial value:
=
[&](std::shared_ptr<dealii::Triangulation<dim> const> const & fine_triangulation,
std::vector<std::shared_ptr<dealii::Triangulation<dim> const>> const &
coarse_triangulations) {
AssertThrow(
mapping_dof_vector_fine_level.get(),
dealii::ExcMessage(
"Coarse mappings can not be initialized because fine level mapping is invalid."));
MappingTools::initialize_coarse_mappings<dim, Number>(mapping_dof_vector_coarse_levels,
degree_coarse_mappings,
mapping_dof_vector_fine_level,
fine_triangulation,
coarse_triangulations);
}

This function creates coarse mappings of type MappingDoFVector for use in multigrid with h-transfer given a fine level mapping of type MappingDoFVector.

The default implementation uses an interpolation of the fine-level mapping to coarser grids. You can overwrite this function in order to realize a user-specific construction of the mapping on coarser grids.


The documentation for this class was generated from the following file: