All Classes Namespaces Files Functions Variables Typedefs Enumerator Pages
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo > Class Template Reference

A two-step version of an overlapping Schwarz preconditioner using one step ILU0 as. More...

#include <ParallelOverlappingILU0.hpp>

Inheritance diagram for Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >:

Classes

struct  CRS
 

Public Types

enum  { category }
 
typedef std::remove_const
< Matrix >::type 
matrix_type
 The matrix type the preconditioner is for.
 
typedef Domain domain_type
 The domain type of the preconditioner.
 
typedef Range range_type
 The range type of the preconditioner.
 
typedef Domain::field_type field_type
 The field type of the preconditioner.
 
typedef matrix_type::block_type block_type
 
typedef matrix_type::size_type size_type
 

Public Member Functions

template<class BlockType , class Alloc >
 ParallelOverlappingILU0 (const Dune::BCRSMatrix< BlockType, Alloc > &A, const int n, const field_type w)
 Constructor. More...
 
template<class BlockType , class Alloc >
 ParallelOverlappingILU0 (const Dune::BCRSMatrix< BlockType, Alloc > &A, const field_type w)
 Constructor. More...
 
template<class BlockType , class Alloc >
 ParallelOverlappingILU0 (const Dune::BCRSMatrix< BlockType, Alloc > &A, const ParallelInfo &comm, const field_type w)
 Constructor. More...
 
virtual void pre (Domain &x, Range &b)
 Prepare the preconditioner. More...
 
virtual void apply (Domain &v, const Range &d)
 Apply the preconditoner. More...
 
template<class V >
void copyOwnerToAll (V &v) const
 
virtual void post (Range &x)
 Clean up. More...
 

Protected Member Functions

void init (const Matrix &A, const int iluIteration)
 

Protected Attributes

CRS lower_
 The ILU0 decomposition of the matrix.
 
CRS upper_
 
std::vector< block_type > inv_
 
const ParallelInfo * comm_
 
const field_type w_
 The relaxation factor to use.
 
const bool relaxation_
 

Detailed Description

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
class Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >

A two-step version of an overlapping Schwarz preconditioner using one step ILU0 as.

This preconditioner differs from a ParallelRestrictedOverlappingSchwarz with Dune:SeqILU0 in the follwing way: During apply we make sure that the current residual is consistent (i.e. each process knows the same value for each index. The we solve Ly= d for y and make y consistent again. Last we solve Ux = y and make sure that x is consistent. In contrast for ParallelRestrictedOverlappingSchwarz we solve (LU)x = d for x without forcing consistency between the two steps.

Template Parameters
MatrixThe type of the Matrix.
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

Member Enumeration Documentation

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
anonymous enum
Enumerator
category 

The category the preconditioner is part of.

Constructor & Destructor Documentation

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
template<class BlockType , class Alloc >
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::ParallelOverlappingILU0 ( const Dune::BCRSMatrix< BlockType, Alloc > &  A,
const int  n,
const field_type  w 
)
inline

Constructor.

Constructor gets all parameters to operate the prec.

Parameters
AThe matrix to operate on.
nILU fill in level (for testing). This does not work in parallel.
wThe relaxation factor.
template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
template<class BlockType , class Alloc >
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::ParallelOverlappingILU0 ( const Dune::BCRSMatrix< BlockType, Alloc > &  A,
const field_type  w 
)
inline

Constructor.

Constructor gets all parameters to operate the prec.

Parameters
AThe matrix to operate on.
wThe relaxation factor.
template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
template<class BlockType , class Alloc >
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::ParallelOverlappingILU0 ( const Dune::BCRSMatrix< BlockType, Alloc > &  A,
const ParallelInfo &  comm,
const field_type  w 
)
inline

Constructor.

Constructor gets all parameters to operate the prec.

Parameters
AThe matrix to operate on.
commcommunication object, e.g. Dune::OwnerOverlapCopyCommunication
wThe relaxation factor.

Member Function Documentation

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
virtual void Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::apply ( Domain &  v,
const Range &  d 
)
inlinevirtual

Apply the preconditoner.

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
virtual void Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::post ( Range &  x)
inlinevirtual

Clean up.

template<class Matrix, class Domain, class Range, class ParallelInfo = Dune::Amg::SequentialInformation>
virtual void Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfo >::pre ( Domain &  x,
Range &  b 
)
inlinevirtual

Prepare the preconditioner.


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