9#include <kernel/solver/base.hpp>
22 template<
typename Matrix_,
typename Filter_>
24 public SolverBase<typename Matrix_::VectorTypeL>
27 typedef Matrix_ MatrixType;
28 typedef Filter_ FilterType;
29 typedef typename MatrixType::VectorTypeL VectorType;
30 typedef typename MatrixType::DataType DataType;
34 const MatrixType& _matrix;
35 const FilterType& _filter;
47 explicit MatrixPrecond(
const MatrixType& matrix,
const FilterType& filter) :
69 const MatrixType& matrix,
const FilterType& filter) :
79 return "MatrixPrecond";
94 virtual Status apply(VectorType& vec_cor,
const VectorType& vec_def)
override
96 _matrix.apply(vec_cor, vec_def);
97 this->_filter.filter_cor(vec_cor);
114 template<
typename Matrix_,
typename Filter_>
116 const Matrix_& matrix,
const Filter_& filter)
118 return std::make_shared<MatrixPrecond<Matrix_, Filter_>>(matrix, filter);
139 template<
typename Matrix_,
typename Filter_>
142 const Matrix_& matrix,
const Filter_& filter)
144 return std::make_shared<MatrixPrecond<Matrix_, Filter_>>(section_name, section, matrix, filter);
A class organizing a tree of key-value pairs.
Matrix preconditioner implementation.
MatrixPrecond(const String §ion_name, const PropertyMap *section, const MatrixType &matrix, const FilterType &filter)
Constructor.
MatrixPrecond(const MatrixType &matrix, const FilterType &filter)
Constructor.
virtual void init_numeric() override
Numeric initialization method.
virtual void init_symbolic() override
Symbolic initialization method.
virtual String name() const override
Returns the name of the solver.
virtual void done_symbolic() override
Symbolic finalization method.
Polymorphic solver interface.
String class implementation.
Status
Solver status return codes enumeration.
@ success
solving successful (convergence criterion fulfilled)
std::shared_ptr< MatrixPrecond< Matrix_, Filter_ > > new_matrix_precond(const Matrix_ &matrix, const Filter_ &filter)
Creates a new MatrixPrecond solver object.