A two-step version of an overlapping Schwarz preconditioner using one step ILU0 as.
More...
#include <ParallelOverlappingILU0.hpp>
|
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 |
|
|
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...
|
|
|
void | init (const Matrix &A, const int iluIteration) |
|
|
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_ |
|
template<class Matrix, class Domain, class Range, class ParallelInfoT>
class Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >
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
-
Matrix | The type of the Matrix. |
Domain | The type of the Vector representing the domain. |
Range | The type of the Vector representing the range. |
ParallelInfo | The type of the parallel information object used, e.g. Dune::OwnerOverlapCommunication |
◆ anonymous enum
template<class Matrix, class Domain, class Range, class ParallelInfoT>
Enumerator |
---|
category | The category the preconditioner is part of.
|
◆ ParallelOverlappingILU0() [1/3]
template<class Matrix, class Domain, class Range, class ParallelInfoT>
template<class BlockType , class Alloc >
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
A | The matrix to operate on. |
n | ILU fill in level (for testing). This does not work in parallel. |
w | The relaxation factor. |
◆ ParallelOverlappingILU0() [2/3]
template<class Matrix, class Domain, class Range, class ParallelInfoT>
template<class BlockType , class Alloc >
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
A | The matrix to operate on. |
w | The relaxation factor. |
◆ ParallelOverlappingILU0() [3/3]
template<class Matrix, class Domain, class Range, class ParallelInfoT>
template<class BlockType , class Alloc >
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
A | The matrix to operate on. |
comm | communication object, e.g. Dune::OwnerOverlapCopyCommunication |
w | The relaxation factor. |
◆ apply()
template<class Matrix, class Domain, class Range, class ParallelInfoT>
◆ post()
template<class Matrix, class Domain, class Range, class ParallelInfoT>
◆ pre()
template<class Matrix, class Domain, class Range, class ParallelInfoT>
Prepare the preconditioner.
The documentation for this class was generated from the following file: