FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
precon_wrapper.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
8// includes, FEAT
9#include <kernel/solver/base.hpp>
10#include <kernel/solver/legacy_preconditioners.hpp>
11
12namespace FEAT
13{
14 namespace Solver
15 {
35 template<
36 typename Matrix_,
37 typename Filter_,
38 template<typename,typename> class Precon_>
40 public SolverBase<typename Matrix_::VectorTypeR>
41 {
42 public:
43 typedef Matrix_ MatrixType;
44 typedef typename MatrixType::VectorTypeR VectorType;
45
46 protected:
48 const Filter_& _filter;
50 Precon_<MatrixType, VectorType> _precond;
51
52 public:
61 template<typename... Args_>
62 explicit PreconWrapper(const Filter_& filter, Args_&&... args) :
63 _filter(filter),
64 _precond(std::forward<Args_>(args)...)
65 {
66 }
67
69 virtual String name() const override
70 {
71 return _precond.name();
72 }
73
75 virtual Status apply(VectorType& vec_cor, const VectorType& vec_def) override
76 {
77 _precond.apply(vec_cor, vec_def);
78 this->_filter.filter_cor(vec_cor);
79 return Status::success;
80 }
81 }; // class PreconWrapper<...>
82 } // namespace Solver
83} // namespace FEAT
Provisional Legacy Preconditioners Wrapper class template.
const Filter_ & _filter
the filter object
PreconWrapper(const Filter_ &filter, Args_ &&... args)
Constructor.
Precon_< MatrixType, VectorType > _precond
the actual preconditioner object
virtual String name() const override
Returns the name of the solver.
virtual Status apply(VectorType &vec_cor, const VectorType &vec_def) override
Applies the preconditioner.
Polymorphic solver interface.
Definition: base.hpp:183
String class implementation.
Definition: string.hpp:46
Status
Solver status return codes enumeration.
Definition: base.hpp:47
@ success
solving successful (convergence criterion fulfilled)
FEAT namespace.
Definition: adjactor.hpp:12