FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ > Class Template Reference

Multigrid preconditioner implementation. More...

#include <multigrid.hpp>

Inheritance diagram for FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >:
FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >

Public Types

typedef SolverBase< typename SystemMatrix_::VectorTypeR > BaseClass
 our base-class More...
 
typedef MatrixType::DataType DataType
 our data type More...
 
typedef LevelType::SystemFilterType FilterType
 the system filter type More...
 
typedef MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ > HierarchyType
 our compatible multigrid hierarchy class More...
 
typedef HierarchyType::LevelInfo LevelInfo
 the level info type More...
 
typedef HierarchyType::LevelType LevelType
 the level type More...
 
typedef LevelType::SystemMatrixType MatrixType
 the system matrix type More...
 
typedef LevelType::SolverType SolverType
 the sub-solver type More...
 
typedef LevelType::TransferOperatorType TransferOperatorType
 the transfer operator type More...
 
typedef LevelType::SystemVectorType VectorType
 the system vector type More...
 

Public Member Functions

 MultiGrid (std::shared_ptr< HierarchyType > hierarchy, MultiGridCycle cycle, int top_level=0, int crs_level=-1)
 Constructor. More...
 
virtual ~MultiGrid ()
 virtual destructor More...
 
virtual Status apply (VectorType &vec_cor, const VectorType &vec_def) override
 Applies the multigrid preconditioner. More...
 
virtual void done ()
 Finalization method. More...
 
virtual void done_numeric () override
 Numeric finalization function. More...
 
virtual void done_symbolic () override
 Symbolic finalization function. More...
 
Index get_crs_level () const
 Returns the currently selected coarse-level index. More...
 
MultiGridCycle get_cycle () const
 Returns the currently selected cycle. More...
 
Index get_top_level () const
 Returns the currently selected top-level index. More...
 
virtual void init ()
 Initialization method. More...
 
virtual void init_numeric () override
 Numeric initialization function. More...
 
virtual void init_symbolic () override
 Symbolic initialization function. More...
 
virtual String name () const override
 Returns a descriptive string. More...
 
void set_adapt_cgc (MultiGridAdaptCGC adapt_cgc)
 Sets the adaption mode for the coarse grid correction. More...
 
void set_cycle (MultiGridCycle cycle)
 Sets a new cycle. More...
 
void set_levels (int top_level, int crs_level)
 Sets the level range for this multigrid. More...
 

Protected Member Functions

Status _apply_coarse ()
 Applies the coarse grid solver on the coarse level. More...
 
Status _apply_cycle_f ()
 Applies a single F-cycle. More...
 
Status _apply_cycle_v ()
 Applies a single V-cycle. More...
 
Status _apply_cycle_w ()
 Applies a single W-cycle. More...
 
virtual Status _apply_prol (const Index cur_lvl, bool cur_smooth)
 Prolongates from the coarse level onto the current level. More...
 
Status _apply_rest (const Index cur_lvl, bool cur_smooth)
 Restricts from the current level onto the coarse level. More...
 
bool _apply_smooth_def (Index cur_lvl, SolverType &smoother)
 
Status _apply_smooth_peak (Index cur_lvl)
 Applies the peak-smoother on the current level. More...
 

Protected Attributes

MultiGridAdaptCGC _adapt_cgc
 the coarse grid correction type More...
 
std::vector< int > _counters
 W-cycle level counter vector. More...
 
Index _crs_level
 the coarse-level of this multigrid More...
 
MultiGridCycle _cycle
 the multigrid cycle More...
 
std::shared_ptr< HierarchyType_hierarchy
 the multigrid hierarchy object More...
 
std::vector< double > _mpi_execs_blas2
 array containing toe of mpi execution blas2 for each processed level More...
 
std::vector< double > _mpi_execs_blas3
 array containing toe of mpi execution blas3 for each processed level More...
 
std::vector< double > _mpi_execs_collective
 array containing toe of mpi execution collective for each processed level More...
 
std::vector< double > _mpi_execs_reduction
 array containing toe of mpi execution reduction for each processed level More...
 
std::vector< double > _mpi_waits_blas2
 array containing toe of mpi wait blas2 for each processed level More...
 
std::vector< double > _mpi_waits_blas3
 array containing toe of mpi wait blas3 for each processed level More...
 
std::vector< double > _mpi_waits_collective
 array containing toe of mpi wait collective for each processed level More...
 
std::vector< double > _mpi_waits_reduction
 array containing toe of mpi wait reduction for each processed level More...
 
std::vector< double > _toes
 array containing toe for each processed level More...
 
Index _top_level
 the top-level of this multigrid More...
 

Detailed Description

template<typename SystemMatrix_, typename SystemFilter_, typename TransferOperator_>
class FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >

Multigrid preconditioner implementation.

See also
For details in the design see Description of the geometric MultiGrid solver
Todo:
document this
Template Parameters
SystemMatrix_The class representing the system matrix.
SystemFilter_The class representing the system filter.
ProlOperator_The class representing the prolongation operator (usually a matrix type).
RestOperator_The class representing the restriction operator (usually a matrix type).
Author
Peter Zajac

Definition at line 982 of file multigrid.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef SolverBase<typename SystemMatrix_::VectorTypeR> FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::BaseClass

our base-class

Definition at line 987 of file multigrid.hpp.

◆ DataType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef MatrixType::DataType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::DataType

our data type

Definition at line 1009 of file multigrid.hpp.

◆ FilterType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef LevelType::SystemFilterType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::FilterType

the system filter type

Definition at line 1000 of file multigrid.hpp.

◆ HierarchyType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef MultiGridHierarchy<SystemMatrix_, SystemFilter_, TransferOperator_> FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::HierarchyType

our compatible multigrid hierarchy class

Definition at line 990 of file multigrid.hpp.

◆ LevelInfo

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef HierarchyType::LevelInfo FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo

the level info type

Definition at line 995 of file multigrid.hpp.

◆ LevelType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef HierarchyType::LevelType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelType

the level type

Definition at line 993 of file multigrid.hpp.

◆ MatrixType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef LevelType::SystemMatrixType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::MatrixType

the system matrix type

Definition at line 998 of file multigrid.hpp.

◆ SolverType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef LevelType::SolverType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::SolverType

the sub-solver type

Definition at line 1006 of file multigrid.hpp.

◆ TransferOperatorType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef LevelType::TransferOperatorType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::TransferOperatorType

the transfer operator type

Definition at line 1004 of file multigrid.hpp.

◆ VectorType

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
typedef LevelType::SystemVectorType FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::VectorType

the system vector type

Definition at line 1002 of file multigrid.hpp.

Constructor & Destructor Documentation

◆ MultiGrid()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::MultiGrid ( std::shared_ptr< HierarchyType hierarchy,
MultiGridCycle  cycle,
int  top_level = 0,
int  crs_level = -1 
)
inlineexplicit

Constructor.

Parameters
[in]hierarchyA pointer to the multigrid hierarchy object.
[in]cycleThe desired multigrid cycle.
[in]top_levelThe desired top-level for this multigrid solver.
Set to 0 to use the finest level in the multigrid hierarchy.
[in]crs_levelThe desired coarse-level for this multigrid solver.
Set to -1 to use the coarsest level in the multigrid hierarchy.
Note
The cycle may be changed anytime by using the set_cycle() function.

Definition at line 1066 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_top_level, and XASSERTM.

◆ ~MultiGrid()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::~MultiGrid ( )
inlinevirtual

virtual destructor

Definition at line 1079 of file multigrid.hpp.

Member Function Documentation

◆ _apply_coarse()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
Status FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_coarse ( )
inlineprotected

Applies the coarse grid solver on the coarse level.

Definition at line 1524 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::Solver::aborted, FEAT::TimeStamp::elapsed_now(), FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::name(), FEAT::Solver::status_success(), FEAT::Solver::success, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_coarse, and FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::vec_rhs.

Referenced by FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_f(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_v(), and FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_w().

◆ _apply_cycle_f()

◆ _apply_cycle_v()

◆ _apply_cycle_w()

◆ _apply_prol()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual Status FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_prol ( const Index  cur_lvl,
bool  cur_smooth 
)
inlineprotectedvirtual

Prolongates from the coarse level onto the current level.

Parameters
[in]cur_lvlThe level onto which to prolongate.
[in]cur_smoothSpecifies whether to apply the post-smoother on the current level.

Definition at line 1843 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_adapt_cgc, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::TimeStamp::elapsed_now(), FEAT::Solver::Fixed, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::level, FEAT::Math::min(), FEAT::Solver::MinDefect, FEAT::Solver::MinEnergy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::name(), FEAT::Solver::success, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_defect, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_smooth, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_transfer, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::vec_rhs, and XASSERTM.

Referenced by FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_f(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_v(), and FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_w().

◆ _apply_rest()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
Status FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_rest ( const Index  cur_lvl,
bool  cur_smooth 
)
inlineprotected

Restricts from the current level onto the coarse level.

Parameters
[in]cur_lvlThe level from which to restrict.
[in]cur_smoothSpecifies whether to apply the pre-smoother on the current level.

Definition at line 1711 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::TimeStamp::elapsed_now(), FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::level, FEAT::Math::min(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::name(), FEAT::Solver::success, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_defect, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_smooth, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_transfer, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::vec_rhs, and XASSERTM.

Referenced by FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_f(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_v(), and FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_w().

◆ _apply_smooth_def()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
bool FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_smooth_def ( Index  cur_lvl,
SolverType smoother 
)
inlineprotected

Definition at line 1589 of file multigrid.hpp.

◆ _apply_smooth_peak()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
Status FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_smooth_peak ( Index  cur_lvl)
inlineprotected

Applies the peak-smoother on the current level.

Parameters
[in]cur_lvlThe current level.

Definition at line 1630 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::Solver::aborted, FEAT::TimeStamp::elapsed(), FEAT::TimeStamp::elapsed_now(), FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::level, FEAT::Solver::success, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::time_defect, and FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::vec_rhs.

Referenced by FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_f(), and FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_w().

◆ apply()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual Status FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::apply ( VectorType vec_cor,
const VectorType vec_def 
)
inlineoverridevirtual

Applies the multigrid preconditioner.

Parameters
[out]vec_corThe vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method.
[in]vec_defThe vector that represents the right-hand-side of the linear system to be solved.
Returns
A Status code that represents the status of the solution step.

Implements FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >.

Definition at line 1268 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_f(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_v(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_apply_cycle_w(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_cycle, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_top_level, FEAT::Solver::aborted, FEAT::Solver::F, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::name(), FEAT::Solver::success, FEAT::Solver::undefined, FEAT::Solver::V, FEAT::Solver::MultiGridHierarchy< SystemMatrix_, SystemFilter_, TransferOperator_ >::LevelInfo::vec_rhs, and FEAT::Solver::W.

◆ done()

virtual void FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >::done ( )
inlinevirtualinherited

Finalization method.

This function performs both the symbolic and numeric finalization, i.e. it simply performs

this->done_numeric();
this->done_symbolic();

Definition at line 283 of file base.hpp.

◆ done_numeric()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::done_numeric ( )
inlineoverridevirtual

Numeric finalization function.

Attention
This function does not perform the actual numeric finalization of the multigrid hierarchy. You have to perform the numeric finalization explicitly by calling the done_numeric function of the corresponding MultiGridHierarchy object after finalising the solver tree!

Reimplemented from FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >.

Definition at line 1250 of file multigrid.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_numeric().

◆ done_symbolic()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::done_symbolic ( )
inlineoverridevirtual

◆ get_crs_level()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
Index FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::get_crs_level ( ) const
inline

Returns the currently selected coarse-level index.

Returns
The currently selected coarse-level index.

Definition at line 1150 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level.

◆ get_cycle()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
MultiGridCycle FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::get_cycle ( ) const
inline

Returns the currently selected cycle.

Returns
The currently selected cycle.

Definition at line 1110 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_cycle.

◆ get_top_level()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
Index FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::get_top_level ( ) const
inline

Returns the currently selected top-level index.

Returns
The currently selected top-level index.

Definition at line 1140 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_top_level.

◆ init()

virtual void FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >::init ( )
inlinevirtualinherited

Initialization method.

This function performs both the symbolic and numeric initialization, i.e. it simply performs

this->init_symbolic();
this->init_numeric();

Definition at line 268 of file base.hpp.

◆ init_numeric()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::init_numeric ( )
inlineoverridevirtual

Numeric initialization function.

Attention
This function does not perform the actual numeric initialization of the multigrid hierarchy. You have to perform the numeric initialization explicitly by calling the init_numeric function of the corresponding MultiGridHierarchy object before initialising the solver tree!

Reimplemented from FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >.

Definition at line 1233 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and XASSERTM.

◆ init_symbolic()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
virtual void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::init_symbolic ( )
inlineoverridevirtual

Symbolic initialization function.

Attention
This function does not perform the actual symbolic initialization of the multigrid hierarchy. You have to perform the symbolic initialization explicitly by calling the init_symbolic function of the corresponding MultiGridHierarchy object before initialising the solver tree!

Reimplemented from FEAT::Solver::SolverBase< SystemMatrix_::VectorTypeR >.

Definition at line 1174 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_counters, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_execs_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas2, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_blas3, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_collective, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_mpi_waits_reduction, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_toes, FEAT::Solver::SolverBase< Vector_ >::init_symbolic(), and XASSERTM.

◆ name()

◆ set_adapt_cgc()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::set_adapt_cgc ( MultiGridAdaptCGC  adapt_cgc)
inline

Sets the adaption mode for the coarse grid correction.

Parameters
[in]adapt_cgcThe adaption mode for the coarse grid correction.

Definition at line 1089 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_adapt_cgc.

◆ set_cycle()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::set_cycle ( MultiGridCycle  cycle)
inline

Sets a new cycle.

Parameters
[in]cycleThe new cycle to be used.

Definition at line 1100 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_cycle.

◆ set_levels()

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
void FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::set_levels ( int  top_level,
int  crs_level 
)
inline

Sets the level range for this multigrid.

Parameters
[in]top_levelThe desired top-level for this multigrid solver.
Set to 0 to use the finest level in the multigrid hierarchy.
[in]crs_levelThe desired coarse-level for this multigrid solver.
Set to -1 to use the coarsest level in the multigrid hierarchy.

Definition at line 1126 of file multigrid.hpp.

References FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_crs_level, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_hierarchy, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_top_level, and XASSERTM.

Member Data Documentation

◆ _adapt_cgc

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
MultiGridAdaptCGC FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_adapt_cgc
protected

◆ _counters

template<typename SystemMatrix_ , typename SystemFilter_ , typename TransferOperator_ >
std::vector<int> FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::_counters
protected

◆ _crs_level

◆ _cycle

◆ _hierarchy

◆ _mpi_execs_blas2

◆ _mpi_execs_blas3

◆ _mpi_execs_collective

◆ _mpi_execs_reduction

◆ _mpi_waits_blas2

◆ _mpi_waits_blas3

◆ _mpi_waits_collective

◆ _mpi_waits_reduction

◆ _toes

◆ _top_level


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