Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner > Class Template Reference

Block parallel preconditioner. More...

#include <ParallelRestrictedAdditiveSchwarz.hpp>

Inheritance diagram for Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >:
Inheritance graph

Public Types

enum  { category =Dune::SolverCategory::overlapping }
 
typedef Domain domain_type
 The domain type of the preconditioner. More...
 
typedef Range range_type
 The range type of the preconditioner. More...
 
typedef Domain::field_type field_type
 The field type of the preconditioner. More...
 
typedef ParallelInfo communication_type
 The type of the communication object. More...
 

Public Member Functions

 ParallelRestrictedOverlappingSchwarz (SeqPreconditioner &p, const communication_type &c)
 Constructor. More...
 
virtual void pre (Domain &x, Range &b)
 Prepare the preconditioner. More...
 
virtual void apply (Domain &v, const Range &d)
 Apply the preconditioner. More...
 
template<bool forward>
void apply (Domain &v, const Range &d)
 
virtual void post (Range &x)
 Clean up. More...
 

Friends

class Dune::Amg ::ConstructionTraits< ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner > >
 

Detailed Description

template<class Range, class Domain, class ParallelInfo, class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
class Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >

Block parallel preconditioner.

This is essentially a wrapper that takes a sequential preconditioner. In each step the sequential preconditioner is applied to the whole subdomain and then all owner data points are updated on all other processes from the processor that knows the complete matrix row for this data point (in dune-istl speak that is the one that owns the data).

Note that this is different from the usual approach in dune-istl where the application of the sequential preconditioner only takes place on the (owner) partition of the process disregarding any overlap/ghost region.

For more information see https://www.cs.colorado.edu/~cai/papers/rash.pdf

Template Parameters
DomainThe type of the Vector representing the domain.
RangeThe type of the Vector representing the range.
ParallelInfoThe type of the parallel information object used, e.g. Dune::OwnerOverlapCommunication
SeqPreconditionerThe underlying sequential preconditioner to use.

Member Typedef Documentation

◆ communication_type

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
typedef ParallelInfo Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::communication_type

The type of the communication object.

◆ domain_type

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
typedef Domain Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::domain_type

The domain type of the preconditioner.

◆ field_type

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
typedef Domain::field_type Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::field_type

The field type of the preconditioner.

◆ range_type

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
typedef Range Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::range_type

The range type of the preconditioner.

Member Enumeration Documentation

◆ anonymous enum

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
anonymous enum
Enumerator
category 

The category the precondtioner is part of.

Constructor & Destructor Documentation

◆ ParallelRestrictedOverlappingSchwarz()

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::ParallelRestrictedOverlappingSchwarz ( SeqPreconditioner &  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

◆ apply() [1/2]

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
virtual void Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::apply ( Domain &  v,
const Range &  d 
)
inlinevirtual

◆ apply() [2/2]

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
template<bool forward>
void Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::apply ( Domain &  v,
const Range &  d 
)
inline

◆ post()

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
virtual void Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::post ( Range &  x)
inlinevirtual

◆ pre()

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
virtual void Opm::ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner >::pre ( Domain &  x,
Range &  b 
)
inlinevirtual

Friends And Related Function Documentation

◆ Dune::Amg ::ConstructionTraits< ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner > >

template<class Range , class Domain , class ParallelInfo , class SeqPreconditioner = Dune::Preconditioner<Range,Domain>>
friend class Dune::Amg ::ConstructionTraits< ParallelRestrictedOverlappingSchwarz< Range, Domain, ParallelInfo, SeqPreconditioner > >
friend

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