9#include <kernel/solver/base.hpp>
22 template<
typename Vector_,
typename Filter_>
28 typedef Vector_ VectorType;
29 typedef Filter_ FilterType;
32 const VectorType& _diag;
33 const FilterType& _filter;
52 const VectorType& diag,
const FilterType& filter) :
53 BaseClass(section_name, section),
65 virtual Status apply(VectorType& vec_cor,
const VectorType& vec_def)
override
67 vec_cor.component_product(_diag, vec_def);
68 this->_filter.filter_cor(vec_cor);
85 template<
typename Vector_,
typename Filter_>
87 const Vector_& diag,
const Filter_& filter)
89 return std::make_shared<DiagonalPrecond<Vector_, Filter_>>(diag, filter);
110 template<
typename Vector_,
typename Filter_>
113 const Vector_& diag,
const Filter_& filter)
115 return std::make_shared<DiagonalPrecond<Vector_, Filter_>>(section_name, section, diag, filter);
A class organizing a tree of key-value pairs.
Diagonal preconditioner implementation.
virtual String name() const override
Returns the name of the solver.
virtual Status apply(VectorType &vec_cor, const VectorType &vec_def) override
Solver application method.
DiagonalPrecond(const VectorType &diag, const FilterType &filter)
Constructor.
Polymorphic solver interface.
String class implementation.
std::shared_ptr< DiagonalPrecond< Vector_, Filter_ > > new_diagonal_precond(const Vector_ &diag, const Filter_ &filter)
Creates a new DiagonalPrecond solver object.
Status
Solver status return codes enumeration.
@ success
solving successful (convergence criterion fulfilled)