3 #ifndef DUNE_SCHWARZ_HH
4 #define DUNE_SCHWARZ_HH
13 #include <dune/common/timer.hh>
58 template<
class M,
class X,
class Y,
class C>
86 : _A_(A), communication(com)
90 virtual void apply (
const X& x, Y& y)
const
94 communication.project(y);
102 communication.project(y);
128 template<
class X,
class C>
157 communication.dot(x,y,result);
164 virtual double norm (
const X& x)
166 return communication.norm(x);
173 template<
class X,
class C>
199 template<
class M,
class X,
class Y,
class C>
228 : _A_(A), _n(n), _w(w), communication(c)
236 virtual void pre (X& x, Y& b)
238 communication.copyOwnerToAll(x,x);
246 virtual void apply (X& v,
const Y& d)
248 for (
int i=0; i<_n; i++){
252 communication.copyOwnerToAll(v,v);
275 template<
class T>
class ConstructionTraits;
286 template<
class X,
class Y,
class C,
class T=Preconditioner<X,Y> >
312 : preconditioner(p), communication(c)
320 virtual void pre (X& x, Y& b)
322 communication.copyOwnerToAll(x,x);
323 preconditioner.pre(x,b);
331 virtual void apply (X& v,
const Y& d)
333 preconditioner.apply(v,d);
334 communication.copyOwnerToAll(v,v);
337 template<
bool forward>
340 preconditioner.template apply<forward>(v,d);
341 communication.copyOwnerToAll(v,v);
351 preconditioner.post(x);