|
typedef MultigridNumber_ | MultigridNumber |
|
typedef dealii::LinearAlgebra::distributed::Vector< Number > | VectorType |
|
|
| MultigridPreconditionerBase (MPI_Comm const &comm) |
|
void | initialize (MultigridData const &data, std::shared_ptr< Grid< dim > const > grid, std::shared_ptr< MultigridMappings< dim, Number > > const multigrid_mappings, dealii::FiniteElement< dim > const &fe, bool const operator_is_singular, Map_DBC const &dirichlet_bc, Map_DBC_ComponentMask const &dirichlet_bc_component_mask, bool const initialize_preconditioners) |
|
void | update () override |
|
void | vmult (VectorType &dst, VectorType const &src) const override |
|
unsigned int | solve (VectorType &dst, VectorType const &src) const |
|
virtual void | apply_smoother_on_fine_level (VectorTypeMG &dst, VectorTypeMG const &src) const |
|
std::shared_ptr< TimerTree > | get_timings () const override |
|
bool | needs_update () const |
|
|
typedef std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > | Map_DBC |
|
typedef std::map< dealii::types::boundary_id, dealii::ComponentMask > | Map_DBC_ComponentMask |
|
typedef std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::Triangulation< dim >::cell_iterator > > | PeriodicFacePairs |
|
typedef dealii::LinearAlgebra::distributed::Vector< Number > | VectorType |
|
typedef dealii::LinearAlgebra::distributed::Vector< MultigridNumber > | VectorTypeMG |
|
|
void | initialize_mapping () |
|
virtual void | initialize_matrix_free_objects () |
|
void | update_matrix_free_objects () |
|
void | update_smoothers () |
|
void | update_coarse_solver () |
|
virtual void | initialize_dof_handler_and_constraints (bool is_singular, unsigned int const n_components, Map_DBC const &dirichlet_bc, Map_DBC_ComponentMask const &dirichlet_bc_component_mask) |
|
void | do_initialize_dof_handler_and_constraints (bool is_singular, unsigned int const n_components, Map_DBC const &dirichlet_bc, Map_DBC_ComponentMask const &dirichlet_bc_component_mask, dealii::MGLevelObject< std::shared_ptr< dealii::DoFHandler< dim > const > > &dofhandlers, dealii::MGLevelObject< std::shared_ptr< dealii::AffineConstraints< MultigridNumber > > > &constraints) |
|
virtual void | initialize_transfer_operators () |
|
void | do_initialize_transfer_operators (std::shared_ptr< MultigridTransfer< dim, MultigridNumber, VectorTypeMG > > &transfers, unsigned int const dof_index) |
|
unsigned int | get_number_of_levels () const |
|
void | for_all_levels (std::function< void(unsigned int const)> const &function_on_level) |
|
void | for_all_smoothing_levels (std::function< void(unsigned int const)> const &function_on_level) |
|
void | transfer_from_fine_to_coarse_levels (std::function< void(unsigned int const, unsigned int const)> const &levelwise_transfer) |
|
|
std::shared_ptr< Grid< dim > const > | grid |
|
std::shared_ptr< MultigridMappings< dim, Number > > | multigrid_mappings |
|
dealii::MGLevelObject< std::shared_ptr< dealii::DoFHandler< dim > const > > | dof_handlers |
|
dealii::MGLevelObject< std::shared_ptr< dealii::AffineConstraints< MultigridNumber > > > | constraints |
|
dealii::MGLevelObject< std::shared_ptr< MatrixFreeData< dim, MultigridNumber > > > | matrix_free_data_objects |
|
dealii::MGLevelObject< std::shared_ptr< dealii::MatrixFree< dim, MultigridNumber > > > | matrix_free_objects |
|
dealii::MGLevelObject< std::shared_ptr< Operator > > | operators |
|
std::shared_ptr< MultigridTransfer< dim, MultigridNumber, VectorTypeMG > > | transfers |
|
std::vector< MGLevelInfo > | level_info |
|
bool | update_needed |
|
◆ for_all_levels()
template<int dim, typename Number, typename MultigridNumber_ = float>
This is a generic function allowing to loop over all multigrid levels (including the coarsest level). The operation to be performed on each level is passed as a lambda with argument level.
◆ for_all_smoothing_levels()
template<int dim, typename Number, typename MultigridNumber_ = float>
This is a generic function allowing to loop over all smoothing levels (excluding the coarsest level). The operation to be performed on each level is passed as a lambda with argument level.
◆ get_number_of_levels()
template<int dim, typename Number, typename MultigridNumber>
Returns the number of levels.
The number of levels includes the coarse level and the finer smoothing levels, i.e. n_levels = 1 if the multigrid preconditioner is a coarse-grid solve on the coarse level only.
◆ get_timings()
template<int dim, typename Number, typename MultigridNumber>
◆ transfer_from_fine_to_coarse_levels()
template<int dim, typename Number, typename MultigridNumber_ = float>
void ExaDG::MultigridPreconditionerBase< dim, Number, MultigridNumber_ >::transfer_from_fine_to_coarse_levels |
( |
std::function< void(unsigned int const, unsigned int const)> const & | levelwise_transfer | ) |
|
|
inlineprotected |
This is a generic function allowing to successively transfer information from the fine level to all coarser multigrid levels. The operation to be performed for a transfer between two successive levels is passed as a lambda with fine_level as the first argument and coarse_level as the second argument.
◆ update()
template<int dim, typename Number, typename MultigridNumber>
◆ update_coarse_solver()
template<int dim, typename Number, typename MultigridNumber>
This function updates the coarse-grid solver. The prerequisite to call this function is that the coarse-grid operator has been updated.
◆ update_smoothers()
template<int dim, typename Number, typename MultigridNumber>
This function updates the smoother for all smoothing levels. The prerequisite to call this function is that the multigrid operators have been updated.
◆ vmult()
template<int dim, typename Number, typename MultigridNumber>
The documentation for this class was generated from the following files:
- include/exadg/solvers_and_preconditioners/multigrid/multigrid_preconditioner_base.h
- include/exadg/solvers_and_preconditioners/multigrid/multigrid_preconditioner_base.cpp