dune-istl  2.2.1
Public Types | Public Member Functions | Friends | List of all members
Dune::BlockPreconditioner< X, Y, C, T > Class Template Reference

Block parallel preconditioner. More...

#include <dune/istl/schwarz.hh>

Inheritance diagram for Dune::BlockPreconditioner< X, Y, C, T >:
Dune::Preconditioner< X, Y >

Public Types

enum  { category =SolverCategory::overlapping }
 
typedef X domain_type
 The domain type of the preconditioner. More...
 
typedef Y range_type
 The range type of the preconditioner. More...
 
typedef X::field_type field_type
 The field type of the preconditioner. More...
 
typedef C communication_type
 The type of the communication object. More...
 

Public Member Functions

 BlockPreconditioner (T &p, const communication_type &c)
 Constructor. More...
 
virtual void pre (X &x, Y &b)
 Prepare the preconditioner. More...
 
virtual void apply (X &v, const Y &d)
 Apply the preconditioner. More...
 
template<bool forward>
void apply (X &v, const Y &d)
 Apply one step of the preconditioner to the system A(v)=d. More...
 
virtual void post (X &x)
 Clean up. More...
 

Friends

class Amg::ConstructionTraits< BlockPreconditioner< X, Y, C, T > >
 

Detailed Description

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
class Dune::BlockPreconditioner< X, Y, C, T >

Block parallel preconditioner.

This is essentially a wrapper that take a sequential preconditoner. In each step the sequential preconditioner is applied and then all owner data points are updates on all other processes.

Member Typedef Documentation

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
typedef C Dune::BlockPreconditioner< X, Y, C, T >::communication_type

The type of the communication object.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
typedef X Dune::BlockPreconditioner< X, Y, C, T >::domain_type

The domain type of the preconditioner.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
typedef X::field_type Dune::BlockPreconditioner< X, Y, C, T >::field_type

The field type of the preconditioner.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
typedef Y Dune::BlockPreconditioner< X, Y, C, T >::range_type

The range type of the preconditioner.

Member Enumeration Documentation

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
anonymous enum
Enumerator
category 

The category the precondtioner is part of.

Constructor & Destructor Documentation

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
Dune::BlockPreconditioner< X, Y, C, T >::BlockPreconditioner ( T &  p,
const communication_type c 
)
inline

Constructor.

constructor gets all parameters to operate the prec.

Parameters
pThe sequential preconditioner.
cThe communication object for syncing overlap and copy data points. (E.~g. OwnerOverlapCommunication )

Member Function Documentation

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
virtual void Dune::BlockPreconditioner< X, Y, C, T >::apply ( X &  v,
const Y &  d 
)
inlinevirtual

Apply the preconditioner.

Apply one step of the preconditioner to the system A(v)=d.

Implements Dune::Preconditioner< X, Y >.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
template<bool forward>
void Dune::BlockPreconditioner< X, Y, C, T >::apply ( X &  v,
const Y &  d 
)
inlinevirtual

Apply one step of the preconditioner to the system A(v)=d.

 On entry v=0 and d=b-A(x) (although this might not be 
 computed in that way. On exit v contains the update, i.e
 one step computes \form#37 where \form#38 is the
 approximate inverse of the operator \form#39 characterizing 
 the preconditioner.
Parameters
[out]vThe update to be computed
dThe current defect.

Implements Dune::Preconditioner< X, Y >.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
virtual void Dune::BlockPreconditioner< X, Y, C, T >::post ( X &  x)
inlinevirtual

Clean up.

Clean up.

Implements Dune::Preconditioner< X, Y >.

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
virtual void Dune::BlockPreconditioner< X, Y, C, T >::pre ( X &  x,
Y &  b 
)
inlinevirtual

Prepare the preconditioner.

Prepare the preconditioner.

Implements Dune::Preconditioner< X, Y >.

Friends And Related Function Documentation

template<class X, class Y, class C, class T = Preconditioner<X,Y>>
friend class Amg::ConstructionTraits< BlockPreconditioner< X, Y, C, T > >
friend

The documentation for this class was generated from the following file: