dune-istl 2.10
Loading...
Searching...
No Matches
Dune::NonoverlappingBlockPreconditioner< C, P > Class Template Reference

Nonoverlapping parallel preconditioner. More...

#include <dune/istl/novlpschwarz.hh>

Inheritance diagram for Dune::NonoverlappingBlockPreconditioner< C, P >:
Inheritance graph

Public Types

typedef P::domain_type domain_type
 The domain type of the preconditioner.
 
typedef P::range_type range_type
 The range type of the preconditioner.
 
typedef C communication_type
 The type of the communication object.
 
typedef P::domain_type::field_type field_type
 The field type of the preconditioner.
 

Public Member Functions

 NonoverlappingBlockPreconditioner (P &p, const communication_type &c)
 Constructor.
 
 NonoverlappingBlockPreconditioner (const std::shared_ptr< P > &p, const communication_type &c)
 Constructor.
 
virtual void pre (domain_type &x, range_type &b)
 Prepare the preconditioner.
 
virtual void apply (domain_type &v, const range_type &d)
 Apply the preconditioner.
 
template<bool forward>
void apply (X &v, const Y &d)
 Apply one step of the preconditioner to the system A(v)=d.
 
virtual void post (domain_type &x)
 Clean up.
 
virtual SolverCategory::Category category () const
 Category of the preconditioner (see SolverCategory::Category)
 

Detailed Description

template<class C, class P>
class Dune::NonoverlappingBlockPreconditioner< C, P >

Nonoverlapping parallel preconditioner.

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

Member Typedef Documentation

◆ communication_type

template<class C , class P >
C Dune::NonoverlappingBlockPreconditioner< C, P >::communication_type

The type of the communication object.

◆ domain_type

template<class C , class P >
P::domain_type Dune::NonoverlappingBlockPreconditioner< C, P >::domain_type

The domain type of the preconditioner.

◆ field_type

P::domain_type::field_type Dune::Preconditioner< P::domain_type, P::range_type >::field_type
inherited

The field type of the preconditioner.

◆ range_type

template<class C , class P >
P::range_type Dune::NonoverlappingBlockPreconditioner< C, P >::range_type

The range type of the preconditioner.

Constructor & Destructor Documentation

◆ NonoverlappingBlockPreconditioner() [1/2]

template<class C , class P >
Dune::NonoverlappingBlockPreconditioner< C, P >::NonoverlappingBlockPreconditioner ( P & 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. OwnerOverlapCopyCommunication )

◆ NonoverlappingBlockPreconditioner() [2/2]

template<class C , class P >
Dune::NonoverlappingBlockPreconditioner< C, P >::NonoverlappingBlockPreconditioner ( const std::shared_ptr< P > & 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. OwnerOverlapCopyCommunication )

Member Function Documentation

◆ apply() [1/2]

template<class C , class P >
virtual void Dune::NonoverlappingBlockPreconditioner< C, P >::apply ( domain_type & v,
const range_type & d )
inlinevirtual

Apply the preconditioner.

Implements Dune::Preconditioner< P::domain_type, P::range_type >.

◆ apply() [2/2]

template<class C , class P >
template<bool forward>
void Dune::NonoverlappingBlockPreconditioner< C, P >::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 $ v = M^{-1} d $ where $ M $ is the approximate inverse of the operator $ A $ characterizing the preconditioner.

Parameters
[out]vThe update to be computed
dThe current defect.

Implements Dune::Preconditioner< P::domain_type, P::range_type >.

◆ category()

template<class C , class P >
virtual SolverCategory::Category Dune::NonoverlappingBlockPreconditioner< C, P >::category ( ) const
inlinevirtual

Category of the preconditioner (see SolverCategory::Category)

Implements Dune::Preconditioner< P::domain_type, P::range_type >.

◆ post()

template<class C , class P >
virtual void Dune::NonoverlappingBlockPreconditioner< C, P >::post ( domain_type & x)
inlinevirtual

◆ pre()

template<class C , class P >
virtual void Dune::NonoverlappingBlockPreconditioner< C, P >::pre ( domain_type & x,
range_type & b )
inlinevirtual

Prepare the preconditioner.

Implements Dune::Preconditioner< P::domain_type, P::range_type >.


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