FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Solver::Chebyshev< Matrix_, Filter_ > Class Template Referenceabstract

Chebyshev Polynomial implementation. More...

#include <chebyshev.hpp>

Inheritance diagram for FEAT::Solver::Chebyshev< Matrix_, Filter_ >:
FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR > FEAT::Solver::SolverBase< Vector_ >

Public Types

typedef IterativeSolver< VectorTypeBaseClass
 Our base class. More...
 
typedef MatrixType::DataType DataType
 The floating point precision. More...
 
typedef Filter_ FilterType
 The filter type. More...
 
typedef Matrix_ MatrixType
 The matrix type. More...
 
typedef MatrixType::VectorTypeL VectorType
 The type of vector this solver can be applied to. More...
 

Public Member Functions

 Chebyshev (const MatrixType &matrix, const FilterType &filter, const DataType fraction_min_ev=DataType(0.5), const DataType fraction_max_ev=DataType(0.8))
 Constructor. More...
 
 Chebyshev (const String &section_name, const PropertyMap *section, const MatrixType &matrix, const FilterType &filter)
 Constructor using a PropertyMap. More...
 
virtual ~Chebyshev ()
 Empty virtual destructor. More...
 
virtual Status apply (Vector_ &vec_cor, const Vector_ &vec_def)=0
 Solver application method. More...
 
virtual Status apply (VectorType &vec_cor, const VectorType &vec_def) override
 
DataType calc_convergence_rate () const
 Computes the overall convergence rate: (defect_final / defect_initial) ^ (1 / number of iterations) More...
 
DataType calc_defect_reduction () const
 Computes the overall defect reduction factor: (defect_final / defect_inital) More...
 
virtual Status correct (VectorType &vec_sol, const VectorType &vec_rhs) override
 
virtual Status correct (VectorType &vec_sol, const VectorType &vec_rhs)=0
 Solver correction method. More...
 
virtual void done ()
 Finalization method. More...
 
virtual void done_numeric ()
 Numeric finalization method. More...
 
virtual void done_symbolic () override
 Symbolic finalization method. More...
 
virtual void force_defect_norm_calc (bool force)
 Forces the calculation of defect norms in every iteration. More...
 
DataType get_def_final () const
 Returns the final defect. More...
 
DataType get_def_initial () const
 Returns the initial defect. More...
 
DataType get_div_abs () const
 Returns the absolute divergence. More...
 
DataType get_div_rel () const
 Returns the relative divergence. More...
 
Index get_max_iter () const
 Returns the maximum number of iterations. More...
 
Index get_min_iter () const
 Returns the minimal number of iterations. More...
 
Index get_min_stag_iter () const
 Returns the minimum stagnation iteration count. More...
 
Index get_num_iter () const
 Returns number of performed iterations. More...
 
String get_plot_name () const
 Returns the plot name of the solver. More...
 
DataType get_stag_rate () const
 Returns the stagnation rate. More...
 
Status get_status () const
 Returns the status. More...
 
virtual String get_summary () const
 Returns a summary string. More...
 
DataType get_tol_abs () const
 Returns the absolute tolerance. More...
 
DataType get_tol_abs_low () const
 Returns the lower absolute tolerance. More...
 
DataType get_tol_rel () const
 Returns the relative tolerance. More...
 
virtual void init ()
 Initialization method. More...
 
virtual void init_numeric () override
 Numeric initialization method. More...
 
virtual void init_symbolic () override
 Symbolic initialization method. More...
 
bool is_converged () const
 checks for convergence More...
 
bool is_converged (const DataType def_cur) const
 checks for convergence More...
 
bool is_diverged () const
 checks for divergence More...
 
bool is_diverged (const DataType def_cur) const
 checks for divergence More...
 
virtual String name () const override
 Returns a descriptive string. More...
 
virtual void plot_summary () const
 Plot a summary of the last solver run. More...
 
void set_div_abs (DataType div_abs)
 Sets the absolute divergence for the solver. More...
 
void set_div_rel (DataType div_rel)
 Sets the relative divergence for the solver. More...
 
void set_fraction_max_ev (DataType fraction_max_ev)
 Sets the maximum eigenvalue fraction. More...
 
void set_fraction_min_ev (DataType fraction_min_ev)
 Sets the minimum eigenvalue fraction. More...
 
void set_max_iter (Index max_iter)
 Sets the maximum iteration count for the solver. More...
 
void set_min_iter (Index min_iter)
 Sets the minimum iteration count for the solver. More...
 
void set_min_stag_iter (Index min_iter)
 Sets the minimum stagnate iteration count for the solver. More...
 
void set_plot_interval (const Index plot_interval)
 Sets the interval between two plot outputs, if any. More...
 
void set_plot_mode (const PlotMode plot_mode)
 Sets the plot mode of the solver. More...
 
void set_plot_name (const String &plot_name)
 Sets the plot name of the solver. More...
 
void set_stag_rate (DataType rate)
 Sets the stagnation rate for the solver. More...
 
void set_tol_abs (DataType tol_abs)
 Sets the absolute tolerance for the solver. More...
 
void set_tol_abs_low (DataType tol_abs_low)
 Sets the lower absolute tolerance for the solver. More...
 
void set_tol_rel (DataType tol_rel)
 Sets the relative tolerance for the solver. More...
 

Protected Member Functions

virtual Status _analyze_defect (Index num_iter, DataType def_cur, DataType def_prev, bool check_stag)
 Internal function: analyze the current defect. More...
 
virtual Status _apply_intern (VectorType &vec_sol, const VectorType &vec_rhs)
 
virtual DataType _calc_def_norm (const VectorType &vec_def, const VectorType &vec_sol)
 Computes the defect norm. More...
 
bool _plot_iter (Status st=Status::progress) const
 Plot the current iteration? More...
 
virtual void _plot_iter_line (Index num_iter, DataType def_cur, DataType def_prev)
 Plots an iteration line. More...
 
bool _plot_summary () const
 Plot summary? More...
 
void _print_line (const String &line) const
 Prints a line. More...
 
bool _progress () const
 Progress iteration? More...
 
void _set_comm (const Dist::Comm *comm)
 Sets the communicator for the solver directly. More...
 
void _set_comm_by_matrix (const Matrix_ &matrix)
 Sets the communicator for the solver from a matrix. More...
 
void _set_comm_by_vector (const Matrix_::VectorTypeR &vector)
 Sets the communicator for the solver from a vector. More...
 
virtual Status _set_initial_defect (const VectorType &vec_def, const VectorType &vec_sol)
 Internal function: sets the initial defect vector. More...
 
virtual Status _set_new_defect (const VectorType &vec_def, const VectorType &vec_sol)
 Internal function: sets the new (next) defect vector. More...
 
virtual Status _update_defect (const DataType def_cur_norm)
 Internal function: sets the new (next) defect norm. More...
 

Protected Attributes

const Dist::Comm_comm
 Communicator of the solver. More...
 
DataType _def_cur
 current defect More...
 
DataType _def_init
 initial defect More...
 
DataType _def_prev
 previous iteration defect More...
 
DataType _div_abs
 absolute divergence parameter More...
 
DataType _div_rel
 relative divergence parameter More...
 
bool _force_def_norm_calc
 whether skipping of defect computation is allowed or not More...
 
DataType _fraction_max_ev
 maximum eigenvalue fraction More...
 
DataType _fraction_min_ev
 minimum eigenvalue fraction More...
 
Index _iter_digits
 iteration count digits for plotting More...
 
DataType _max_ev
 the maximum eigenvalue of the matrix More...
 
Index _max_iter
 maximum number of iterations More...
 
DataType _min_ev
 the minium eigenvalue of the matrix More...
 
Index _min_iter
 minimum number of iterations More...
 
Index _min_stag_iter
 minimum number of stagnation iterations More...
 
Index _num_iter
 number of performed iterations More...
 
Index _num_stag_iter
 number of consecutive stagnated iterations More...
 
Index _plot_interval
 plot output interval More...
 
PlotMode _plot_mode
 whether to plot something More...
 
String _plot_name
 name of the solver in plots More...
 
DataType _stag_rate
 stagnation rate More...
 
Status _status
 current status of the solver More...
 
const FilterType_system_filter
 the filter for the solver More...
 
const MatrixType_system_matrix
 the matrix for the solver More...
 
DataType _tol_abs
 absolute tolerance parameter More...
 
DataType _tol_abs_low
 absolute low tolerance parameter More...
 
DataType _tol_rel
 relative tolerance parameter More...
 
VectorType _vec_cor
 correction vector More...
 
VectorType _vec_def
 defect vector More...
 

Detailed Description

template<typename Matrix_, typename Filter_>
class FEAT::Solver::Chebyshev< Matrix_, Filter_ >

Chebyshev Polynomial implementation.

This class represents the Chebyshev-Polynomial "Solver"

[NLA:NLA1808]

Definition at line 25 of file chebyshev.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename Matrix_ , typename Filter_ >
typedef IterativeSolver<VectorType> FEAT::Solver::Chebyshev< Matrix_, Filter_ >::BaseClass

Our base class.

Definition at line 38 of file chebyshev.hpp.

◆ DataType

template<typename Matrix_ , typename Filter_ >
typedef MatrixType::DataType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::DataType

The floating point precision.

Definition at line 36 of file chebyshev.hpp.

◆ FilterType

template<typename Matrix_ , typename Filter_ >
typedef Filter_ FEAT::Solver::Chebyshev< Matrix_, Filter_ >::FilterType

The filter type.

Definition at line 32 of file chebyshev.hpp.

◆ MatrixType

template<typename Matrix_ , typename Filter_ >
typedef Matrix_ FEAT::Solver::Chebyshev< Matrix_, Filter_ >::MatrixType

The matrix type.

Definition at line 30 of file chebyshev.hpp.

◆ VectorType

template<typename Matrix_ , typename Filter_ >
typedef MatrixType::VectorTypeL FEAT::Solver::Chebyshev< Matrix_, Filter_ >::VectorType

The type of vector this solver can be applied to.

Definition at line 34 of file chebyshev.hpp.

Constructor & Destructor Documentation

◆ Chebyshev() [1/2]

template<typename Matrix_ , typename Filter_ >
FEAT::Solver::Chebyshev< Matrix_, Filter_ >::Chebyshev ( const MatrixType matrix,
const FilterType filter,
const DataType  fraction_min_ev = DataType(0.5),
const DataType  fraction_max_ev = DataType(0.8) 
)
inlineexplicit

Constructor.

Parameters
[in]matrixThe source matrix.
[in]filterThe system filter.

Definition at line 69 of file chebyshev.hpp.

References FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_comm_by_matrix().

◆ Chebyshev() [2/2]

template<typename Matrix_ , typename Filter_ >
FEAT::Solver::Chebyshev< Matrix_, Filter_ >::Chebyshev ( const String section_name,
const PropertyMap section,
const MatrixType matrix,
const FilterType filter 
)
inlineexplicit

Constructor using a PropertyMap.

Parameters
[in]section_nameThe name of the config section, which it does not know by itself
[in]sectionA pointer to the PropertyMap section configuring this solver
[in]matrixThe system matrix.
[in]filterThe system filter.
Returns
A shared pointer to a new Chebyshev object.

Definition at line 101 of file chebyshev.hpp.

References FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_comm_by_matrix(), and FEAT::PropertyMap::query().

◆ ~Chebyshev()

template<typename Matrix_ , typename Filter_ >
virtual FEAT::Solver::Chebyshev< Matrix_, Filter_ >::~Chebyshev ( )
inlinevirtual

Empty virtual destructor.

Definition at line 125 of file chebyshev.hpp.

Member Function Documentation

◆ _analyze_defect()

virtual Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_analyze_defect ( Index  num_iter,
DataType  def_cur,
DataType  def_prev,
bool  check_stag 
)
inlineprotectedvirtualinherited

Internal function: analyze the current defect.

Note
This function is called by _set_new_defect() and _update_defect().
Parameters
[in]num_iterCurrent number of iterations; usually = this->_num_iter.
[in]def_curCurrent defect norm; usually = this->_def_cur.
[in]def_prevPrevious defect norm; usually = this->_def_prev.
[in]check_stagSpecifies whether to check (and update) the stagnation criterion. This is typically set to false if one wants to check anything else than the 'true' next defect norm.
Returns
The updated status code.

Definition at line 866 of file iterative.hpp.

◆ _apply_intern()

template<typename Matrix_ , typename Filter_ >
virtual Status FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_apply_intern ( VectorType vec_sol,
const VectorType vec_rhs 
)
inlineprotectedvirtual

Definition at line 232 of file chebyshev.hpp.

◆ _calc_def_norm()

virtual DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_calc_def_norm ( const VectorType vec_def,
const VectorType vec_sol 
)
inlineprotectedvirtualinherited

Computes the defect norm.

Parameters
[in]vec_defThe current defect vector.
[in]vec_solThe current solution vector approximation.

Definition at line 706 of file iterative.hpp.

◆ _plot_iter()

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_iter ( Status  st = Status::progress) const
inlineprotectedinherited

Plot the current iteration?

Parameters
[in]stThe status of the current iteration.
Returns
true if the plot mode is set to iter or all and the plot interval matches or the solver does not continue to the next iteration

Definition at line 720 of file iterative.hpp.

◆ _plot_iter_line()

virtual void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_iter_line ( Index  num_iter,
DataType  def_cur,
DataType  def_prev 
)
inlineprotectedvirtualinherited

Plots an iteration line.

Parameters
[in]num_iterCurrent number of iterations; usually = this->_num_iter.
[in]def_curCurrent defect norm; usually = this->_def_cur.
[in]def_prevPrevious defect norm; usually = this->_def_prev.

Definition at line 773 of file iterative.hpp.

◆ _plot_summary()

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_summary ( ) const
inlineprotectedinherited

Plot summary?

Returns
true if the plot mode is set to summary or all.

Definition at line 731 of file iterative.hpp.

◆ _print_line()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_print_line ( const String line) const
inlineprotectedinherited

Prints a line.

Parameters
[in]lineThe line to be printed.

Definition at line 752 of file iterative.hpp.

◆ _progress()

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_progress ( ) const
inlineprotectedinherited

Progress iteration?

Returns
true if the solver should process, otherwise false.

Definition at line 741 of file iterative.hpp.

◆ _set_comm()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_comm ( const Dist::Comm comm)
inlineprotectedinherited

Sets the communicator for the solver directly.

Parameters
[in]commA pointer to the communicator that is to be used by the solver.

Definition at line 667 of file iterative.hpp.

◆ _set_comm_by_matrix()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_comm_by_matrix ( const Matrix_ &  matrix)
inlineprotectedinherited

Sets the communicator for the solver from a matrix.

Parameters
[in]matrixA reference to a matrix. If 'Matrix_' is a 'Global::Matrix', then the communicator of the matrix gate is taken.

Definition at line 680 of file iterative.hpp.

◆ _set_comm_by_vector()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_comm_by_vector ( const Matrix_::VectorTypeR &  vector)
inlineprotectedinherited

Sets the communicator for the solver from a vector.

Parameters
[in]vectorA reference to a vector. If 'Vector_' is a 'Global::Vector', then the communicator of the vector gate is taken.

Definition at line 692 of file iterative.hpp.

◆ _set_initial_defect()

virtual Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_initial_defect ( const VectorType vec_def,
const VectorType vec_sol 
)
inlineprotectedvirtualinherited

Internal function: sets the initial defect vector.

Parameters
[in]vec_defThe initial defect vector.
[in]vec_solThe current solution vector approximation.
Returns
The updated Status code.

Definition at line 802 of file iterative.hpp.

◆ _set_new_defect()

virtual Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_set_new_defect ( const VectorType vec_def,
const VectorType vec_sol 
)
inlineprotectedvirtualinherited

Internal function: sets the new (next) defect vector.

This function computes the defect vector's norm, increments the iteration count, plots an output line to std::cout and checks whether any of the stopping criterions is fulfilled.

Parameters
[in]vec_defThe new defect vector.
[in]vec_solThe current solution vector approximation.
Returns
The updated Status code.

Definition at line 924 of file iterative.hpp.

◆ _update_defect()

virtual Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_update_defect ( const DataType  def_cur_norm)
inlineprotectedvirtualinherited

Internal function: sets the new (next) defect norm.

This function takes a pre-calculated defect vector norm, increments the iteration count, plots an output line to std::cout and checks whether any of the stopping criterions is fulfilled.

Parameters
[in]def_cur_normThe new defect norm.
Returns
The updated Status code.
Note
This function is preferred over _set_new_defect when using asynchronous mpi operations.

Definition at line 970 of file iterative.hpp.

◆ apply() [1/2]

template<typename Vector_ >
virtual Status FEAT::Solver::SolverBase< Vector_ >::apply ( Vector_ &  vec_cor,
const Vector_ &  vec_def 
)
pure virtualinherited

Solver application method.

This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.

Note
Solvers which derive from the IterativeSolver base class also provide a correct() method which corrects an initial solution instead of starting with the null vector.
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.
Attention
vec_cor and vec_def must not refer to the same vector object!
Returns
A Status code that represents the status of the solution step.

Implemented in FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::CuSolverLU, FEAT::Solver::CuSolverQR, FEAT::Solver::ScalePrecond< Vector_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NLOptPrecond< VectorType_, FilterType_ >, FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, and FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >.

Referenced by FEAT::Solver::solve().

◆ apply() [2/2]

template<typename Matrix_ , typename Filter_ >
virtual Status FEAT::Solver::Chebyshev< Matrix_, Filter_ >::apply ( VectorType vec_cor,
const VectorType vec_def 
)
inlineoverridevirtual

Definition at line 205 of file chebyshev.hpp.

◆ calc_convergence_rate()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::calc_convergence_rate ( ) const
inlineinherited

Computes the overall convergence rate: (defect_final / defect_initial) ^ (1 / number of iterations)

Definition at line 582 of file iterative.hpp.

◆ calc_defect_reduction()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::calc_defect_reduction ( ) const
inlineinherited

Computes the overall defect reduction factor: (defect_final / defect_inital)

Definition at line 597 of file iterative.hpp.

◆ correct() [1/2]

template<typename Matrix_ , typename Filter_ >
virtual Status FEAT::Solver::Chebyshev< Matrix_, Filter_ >::correct ( VectorType vec_sol,
const VectorType vec_rhs 
)
inlineoverridevirtual

Definition at line 219 of file chebyshev.hpp.

◆ correct() [2/2]

virtual Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::correct ( VectorType vec_sol,
const VectorType vec_rhs 
)
pure virtualinherited

Solver correction method.

This method applies the solver represented by this object onto a given right-hand-side vector and updates the corresponding solution vector.

In contrast to the apply() method of the SolverBase base class, this method uses the vector vec_sol as the initial solution vector for the iterative solution process instead of ignoring its contents upon entry and starting with the null vector.

Parameters
[in,out]vec_solThe vector that contains the initial solution upon entry and receives the solution of the linear system upon exit.
[in]vec_rhsThe vector that represents the right-hand-side of the linear system to be solved.
Attention
vec_sol and vec_rhs must not refer to the same vector object!
Returns
A Status code that represents the status of the solution step.

◆ done()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::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.

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

◆ done_numeric()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::done_numeric ( )
inlinevirtualinherited

Numeric finalization method.

This method is called to release any data allocated in the numeric initialization step.

Reimplemented in FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, FEAT::Solver::CUDSS, FEAT::Solver::DirectStokesSolver< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, LAFEM::TupleFilter< FilterV_, FilterP_ > >, FEAT::Solver::DirectStokesSolver< Global::Matrix< LocalMatrix_, Mirror_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, FEAT::Solver::BoomerAMG< Matrix_, Filter_ >, FEAT::Solver::PreconditionedIterativeSolver< Vector_ >, FEAT::Solver::PreconditionedIterativeSolver< Matrix_::VectorTypeR >, FEAT::Solver::PreconditionedIterativeSolver< Functional_::VectorTypeR >, FEAT::Solver::MKLDSS, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::PCGNR< Matrix_, Filter_ >, FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::Umfpack, FEAT::Solver::UmfpackMean, FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >, FEAT::Solver::GenericUmfpack< Matrix_ >, FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >.

Definition at line 246 of file base.hpp.

Referenced by FEAT::Solver::SolverBase< Vector_ >::done(), FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric(), FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >::done_numeric(), FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >::done_numeric(), FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::PreconditionedIterativeSolver< Vector_ >::done_numeric(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::done_numeric(), FEAT::Solver::PCGNR< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::done_numeric(), FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric().

◆ done_symbolic()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::Chebyshev< Matrix_, Filter_ >::done_symbolic ( )
inlineoverridevirtual

Symbolic finalization method.

This method is called to release any data allocated in the symbolic initialization step.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 168 of file chebyshev.hpp.

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

◆ force_defect_norm_calc()

virtual void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::force_defect_norm_calc ( bool  force)
inlinevirtualinherited

Forces the calculation of defect norms in every iteration.

Note
Please note that allowing the skipping of defect norm calculations is merely a hint and a derived class may override this function therefore always forcing the calculation of defect norms. One possible reason is that the derived solver class may require defect norms as part of its solver algorithm and therefore skipping the computation of the defect norms may break the solver; two examples are the BiCGStab and GMRES solvers.
Parameters
[in]forceSpecifies whether defect norm computation is to be enforced in every iteration

Definition at line 490 of file iterative.hpp.

◆ get_def_final()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_def_final ( ) const
inlineinherited

Returns the final defect.

Definition at line 570 of file iterative.hpp.

◆ get_def_initial()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_def_initial ( ) const
inlineinherited

Returns the initial defect.

Definition at line 564 of file iterative.hpp.

◆ get_div_abs()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_div_abs ( ) const
inlineinherited

Returns the absolute divergence.

Definition at line 419 of file iterative.hpp.

◆ get_div_rel()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_div_rel ( ) const
inlineinherited

Returns the relative divergence.

Definition at line 413 of file iterative.hpp.

◆ get_max_iter()

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_max_iter ( ) const
inlineinherited

Returns the maximum number of iterations.

Definition at line 474 of file iterative.hpp.

◆ get_min_iter()

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_min_iter ( ) const
inlineinherited

Returns the minimal number of iterations.

Definition at line 468 of file iterative.hpp.

◆ get_min_stag_iter()

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_min_stag_iter ( ) const
inlineinherited

Returns the minimum stagnation iteration count.

Definition at line 443 of file iterative.hpp.

◆ get_num_iter()

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_num_iter ( ) const
inlineinherited

Returns number of performed iterations.

Definition at line 462 of file iterative.hpp.

◆ get_plot_name()

String FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_plot_name ( ) const
inlineinherited

Returns the plot name of the solver.

Definition at line 523 of file iterative.hpp.

◆ get_stag_rate()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_stag_rate ( ) const
inlineinherited

Returns the stagnation rate.

Definition at line 431 of file iterative.hpp.

◆ get_status()

Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_status ( ) const
inlineinherited

Returns the status.

Definition at line 576 of file iterative.hpp.

◆ get_summary()

virtual String FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_summary ( ) const
inlinevirtualinherited

Returns a summary string.

Definition at line 610 of file iterative.hpp.

◆ get_tol_abs()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_tol_abs ( ) const
inlineinherited

Returns the absolute tolerance.

Definition at line 389 of file iterative.hpp.

◆ get_tol_abs_low()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_tol_abs_low ( ) const
inlineinherited

Returns the lower absolute tolerance.

Definition at line 395 of file iterative.hpp.

◆ get_tol_rel()

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::get_tol_rel ( ) const
inlineinherited

Returns the relative tolerance.

Definition at line 383 of file iterative.hpp.

◆ init()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::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.

References FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().

◆ init_numeric()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_numeric ( )
inlineoverridevirtual

Numeric initialization method.

This method is called to perform numeric initialization of the solver.
Before this function can be called, the symbolic initialization must be performed.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 176 of file chebyshev.hpp.

References FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_max_ev, FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_min_ev, FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_max_ev, FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_min_ev, FEAT::Math::abs(), and FEAT::Solver::SolverBase< Vector_ >::init_numeric().

◆ init_symbolic()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_symbolic ( )
inlineoverridevirtual

Symbolic initialization method.

This method is called to perform symbolic initialization of the solver.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 160 of file chebyshev.hpp.

References FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_vec_cor, FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_vec_def, and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().

◆ is_converged() [1/2]

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::is_converged ( ) const
inlineinherited

checks for convergence

Returns
true, if converged, else false

Definition at line 533 of file iterative.hpp.

◆ is_converged() [2/2]

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::is_converged ( const DataType  def_cur) const
inlineinherited

checks for convergence

Parameters
[in]def_curThe defect norm that is to be analyzed
Returns
true, if converged, else false

Definition at line 546 of file iterative.hpp.

◆ is_diverged() [1/2]

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::is_diverged ( ) const
inlineinherited

checks for divergence

Definition at line 552 of file iterative.hpp.

◆ is_diverged() [2/2]

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::is_diverged ( const DataType  def_cur) const
inlineinherited

checks for divergence

Definition at line 558 of file iterative.hpp.

◆ name()

template<typename Matrix_ , typename Filter_ >
virtual String FEAT::Solver::Chebyshev< Matrix_, Filter_ >::name ( ) const
inlineoverridevirtual

Returns a descriptive string.

Returns
A string describing the solver.

Implements FEAT::Solver::SolverBase< Vector_ >.

Definition at line 130 of file chebyshev.hpp.

◆ plot_summary()

virtual void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::plot_summary ( ) const
inlinevirtualinherited

Plot a summary of the last solver run.

Definition at line 627 of file iterative.hpp.

◆ set_div_abs()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_div_abs ( DataType  div_abs)
inlineinherited

Sets the absolute divergence for the solver.

Definition at line 407 of file iterative.hpp.

◆ set_div_rel()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_div_rel ( DataType  div_rel)
inlineinherited

Sets the relative divergence for the solver.

Definition at line 401 of file iterative.hpp.

◆ set_fraction_max_ev()

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::Chebyshev< Matrix_, Filter_ >::set_fraction_max_ev ( DataType  fraction_max_ev)
inline

Sets the maximum eigenvalue fraction.

Parameters
[in]fraction_max_evThe new maximum eigenvalue fraction.

Definition at line 154 of file chebyshev.hpp.

References FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_max_ev.

◆ set_fraction_min_ev()

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::Chebyshev< Matrix_, Filter_ >::set_fraction_min_ev ( DataType  fraction_min_ev)
inline

Sets the minimum eigenvalue fraction.

Parameters
[in]fraction_min_evThe new minimum eigenvalue fraction.

Definition at line 142 of file chebyshev.hpp.

References FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_min_ev.

◆ set_max_iter()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_max_iter ( Index  max_iter)
inlineinherited

Sets the maximum iteration count for the solver.

Definition at line 455 of file iterative.hpp.

◆ set_min_iter()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_min_iter ( Index  min_iter)
inlineinherited

Sets the minimum iteration count for the solver.

Definition at line 449 of file iterative.hpp.

◆ set_min_stag_iter()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_min_stag_iter ( Index  min_iter)
inlineinherited

Sets the minimum stagnate iteration count for the solver.

Definition at line 437 of file iterative.hpp.

◆ set_plot_interval()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_plot_interval ( const Index  plot_interval)
inlineinherited

Sets the interval between two plot outputs, if any.

Parameters
[in]plot_intervalThe desired interval of iteration plots

Definition at line 511 of file iterative.hpp.

◆ set_plot_mode()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_plot_mode ( const PlotMode  plot_mode)
inlineinherited

Sets the plot mode of the solver.

Parameters
[in]plot_modeThe desired plot mode

Definition at line 501 of file iterative.hpp.

◆ set_plot_name()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_plot_name ( const String plot_name)
inlineinherited

Sets the plot name of the solver.

Definition at line 517 of file iterative.hpp.

◆ set_stag_rate()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_stag_rate ( DataType  rate)
inlineinherited

Sets the stagnation rate for the solver.

Definition at line 425 of file iterative.hpp.

◆ set_tol_abs()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_tol_abs ( DataType  tol_abs)
inlineinherited

Sets the absolute tolerance for the solver.

Definition at line 371 of file iterative.hpp.

◆ set_tol_abs_low()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_tol_abs_low ( DataType  tol_abs_low)
inlineinherited

Sets the lower absolute tolerance for the solver.

Definition at line 377 of file iterative.hpp.

◆ set_tol_rel()

void FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::set_tol_rel ( DataType  tol_rel)
inlineinherited

Sets the relative tolerance for the solver.

Definition at line 365 of file iterative.hpp.

Member Data Documentation

◆ _comm

const Dist::Comm* FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_comm
protectedinherited

Communicator of the solver.

Definition at line 209 of file iterative.hpp.

◆ _def_cur

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_def_cur
protectedinherited

current defect

Definition at line 239 of file iterative.hpp.

◆ _def_init

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_def_init
protectedinherited

initial defect

Definition at line 237 of file iterative.hpp.

◆ _def_prev

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_def_prev
protectedinherited

previous iteration defect

Definition at line 241 of file iterative.hpp.

◆ _div_abs

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_div_abs
protectedinherited

absolute divergence parameter

Definition at line 223 of file iterative.hpp.

◆ _div_rel

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_div_rel
protectedinherited

relative divergence parameter

Definition at line 221 of file iterative.hpp.

◆ _force_def_norm_calc

bool FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_force_def_norm_calc
protectedinherited

whether skipping of defect computation is allowed or not

Definition at line 249 of file iterative.hpp.

◆ _fraction_max_ev

template<typename Matrix_ , typename Filter_ >
DataType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_max_ev
protected

◆ _fraction_min_ev

template<typename Matrix_ , typename Filter_ >
DataType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_fraction_min_ev
protected

◆ _iter_digits

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_iter_digits
protectedinherited

iteration count digits for plotting

Definition at line 243 of file iterative.hpp.

◆ _max_ev

template<typename Matrix_ , typename Filter_ >
DataType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_max_ev
protected

the maximum eigenvalue of the matrix

Definition at line 52 of file chebyshev.hpp.

Referenced by FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_numeric().

◆ _max_iter

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_max_iter
protectedinherited

maximum number of iterations

Definition at line 229 of file iterative.hpp.

◆ _min_ev

template<typename Matrix_ , typename Filter_ >
DataType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_min_ev
protected

the minium eigenvalue of the matrix

Definition at line 50 of file chebyshev.hpp.

Referenced by FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_numeric().

◆ _min_iter

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_min_iter
protectedinherited

minimum number of iterations

Definition at line 227 of file iterative.hpp.

◆ _min_stag_iter

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_min_stag_iter
protectedinherited

minimum number of stagnation iterations

Definition at line 233 of file iterative.hpp.

◆ _num_iter

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_num_iter
protectedinherited

number of performed iterations

Definition at line 231 of file iterative.hpp.

◆ _num_stag_iter

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_num_stag_iter
protectedinherited

number of consecutive stagnated iterations

Definition at line 235 of file iterative.hpp.

◆ _plot_interval

Index FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_interval
protectedinherited

plot output interval

Definition at line 247 of file iterative.hpp.

◆ _plot_mode

PlotMode FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_mode
protectedinherited

whether to plot something

Definition at line 245 of file iterative.hpp.

◆ _plot_name

String FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_plot_name
protectedinherited

name of the solver in plots

Definition at line 211 of file iterative.hpp.

◆ _stag_rate

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_stag_rate
protectedinherited

stagnation rate

Definition at line 225 of file iterative.hpp.

◆ _status

Status FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_status
protectedinherited

current status of the solver

Definition at line 213 of file iterative.hpp.

◆ _system_filter

template<typename Matrix_ , typename Filter_ >
const FilterType& FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_system_filter
protected

the filter for the solver

Definition at line 44 of file chebyshev.hpp.

◆ _system_matrix

template<typename Matrix_ , typename Filter_ >
const MatrixType& FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_system_matrix
protected

the matrix for the solver

Definition at line 42 of file chebyshev.hpp.

◆ _tol_abs

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_tol_abs
protectedinherited

absolute tolerance parameter

Definition at line 217 of file iterative.hpp.

◆ _tol_abs_low

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_tol_abs_low
protectedinherited

absolute low tolerance parameter

Definition at line 219 of file iterative.hpp.

◆ _tol_rel

DataType FEAT::Solver::IterativeSolver< Matrix_::VectorTypeR >::_tol_rel
protectedinherited

relative tolerance parameter

Definition at line 215 of file iterative.hpp.

◆ _vec_cor

template<typename Matrix_ , typename Filter_ >
VectorType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_vec_cor
protected

correction vector

Definition at line 48 of file chebyshev.hpp.

Referenced by FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_symbolic().

◆ _vec_def

template<typename Matrix_ , typename Filter_ >
VectorType FEAT::Solver::Chebyshev< Matrix_, Filter_ >::_vec_def
protected

defect vector

Definition at line 46 of file chebyshev.hpp.

Referenced by FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_symbolic().


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