Dune::Copasi 2.1.0-git79717215+dune.gitlab.629933
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages Concepts
dense_inverse.hh
Go to the documentation of this file.
1#ifndef DUNE_COPASI_SOLVER_ISTL_DENSE_INVERSE_HH
2#define DUNE_COPASI_SOLVER_ISTL_DENSE_INVERSE_HH
3
4#include <dune/istl/solver.hh>
5
6namespace Dune::Copasi::ISTL {
7
8template<class Inverse, class X, class Y>
9struct DenseInverse final : public InverseOperator<X, Y>
10{
11
12 DenseInverse(Inverse&& inverse)
13 : _inverse{ std::move(inverse) }
14 {
15 }
16
17 ~DenseInverse() override = default;
18
19 void apply(X& x, Y& b, InverseOperatorResult& res) override
20 {
21 _inverse.mv(b,x);
22 res.iterations = 1;
23 res.converged = 1;
24 }
25
26 void apply(X& x, Y& b, [[maybe_unused]] double reduction, InverseOperatorResult& res) override
27 {
28 this->apply(x, b, res);
29 }
30
31 SolverCategory::Category category() const override
32 {
33 return SolverCategory::Category::sequential;
34 }
35
36 Inverse _inverse;
37};
38
39} // namespace Dune::Copasi::ISTL
40
41#endif // DUNE_COPASI_SOLVER_ISTL_DENSE_INVERSE_HH
Definition: block_jacobi.hh:14
Definition: dense_inverse.hh:10
void apply(X &x, Y &b, double reduction, InverseOperatorResult &res) override
Definition: dense_inverse.hh:26
SolverCategory::Category category() const override
Definition: dense_inverse.hh:31
DenseInverse(Inverse &&inverse)
Definition: dense_inverse.hh:12
Inverse _inverse
Definition: dense_inverse.hh:36
~DenseInverse() override=default
void apply(X &x, Y &b, InverseOperatorResult &res) override
Definition: dense_inverse.hh:19