applier.hpp
Go to the documentation of this file.
1//==============================================================================
12//==============================================================================
13#ifndef APPLIER_H_
14#define APPLIER_H_
15
17
18namespace Opm {
19 namespace Elasticity {
20
22 template<class T>
24{
27 OperatorApplier(T& t) : A(t)
28 {
29 }
30
34 void apply(Vector& v, Vector& d);
35
39 void pre(Vector& x, Vector& b);
40
43 void post(Vector& x);
44
45 T& A;
46};
47
50
51 template<>
53{
54 Dune::InverseOperatorResult r;
55 A.apply(v, d, r);
56}
57
58 template<>
60{
61 A.apply(v, d);
62}
63
64 template<>
65void InverseApplier::pre(Vector& /* x */, Vector& /* b */)
66{
67}
68
69 template<>
70void PreApplier::pre(Vector& x, Vector& b)
71{
72 A.pre(x,b);
73}
74
75 template<>
77{
78}
79
80 template<>
82{
83 A.post(x);
84}
85
86}
87}
88
89#endif
Elasticity helper class.
Definition: elasticity.hpp:22
Helper class with some matrix operations.
OperatorApplier< Dune::InverseOperator< Vector, Vector > > InverseApplier
Definition: applier.hpp:48
Dune::BlockVector< Dune::FieldVector< double, 1 > > Vector
A vector holding our RHS.
Definition: matrixops.hpp:33
OperatorApplier< Dune::Preconditioner< Vector, Vector > > PreApplier
Definition: applier.hpp:49
Definition: ImplicitAssembly.hpp:43
Class abstracting a preconditioner or an inverse operator.
Definition: applier.hpp:24
OperatorApplier(T &t)
Constructor.
Definition: applier.hpp:27
T & A
Definition: applier.hpp:45
void apply(Vector &v, Vector &d)
Apply the given operator to a vector.
Definition: applier.hpp:52
void post(Vector &x)
Postprocess a preconditioner, noop for an inverse operator.
Definition: applier.hpp:76
void pre(Vector &x, Vector &b)
Preprocess a preconditioner, noop for an inverse operator.
Definition: applier.hpp:65