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>
229 : _A_(A), _n(n), _w(w), communication(c)
237 virtual void pre (X& x, Y& b)
239 communication.copyOwnerToAll(x,x);
247 virtual void apply (X& v,
const Y& d)
249 for (
int i=0; i<_n; i++) {
253 communication.copyOwnerToAll(v,v);
276 template<
class T>
class ConstructionTraits;
287 template<
class X,
class Y,
class C,
class T=Preconditioner<X,Y> >
314 : preconditioner(p), communication(c)
322 virtual void pre (X& x, Y& b)
324 communication.copyOwnerToAll(x,x);
325 preconditioner.pre(x,b);
333 virtual void apply (X& v,
const Y& d)
335 preconditioner.apply(v,d);
336 communication.copyOwnerToAll(v,v);
339 template<
bool forward>
342 preconditioner.template apply<forward>(v,d);
343 communication.copyOwnerToAll(v,v);
353 preconditioner.post(x);