My Project
|
A two-step version of an overlapping Schwarz preconditioner using one step ILU0 as. More...
#include <ParallelOverlappingILU0.hpp>
Classes | |
struct | CRS |
Public Member Functions | |
Dune::SolverCategory::Category | category () const override |
ParallelOverlappingILU0 (const Matrix &A, const int n, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
Constructor. More... | |
ParallelOverlappingILU0 (const Matrix &A, const ParallelInfo &comm, const int n, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
Constructor gets all parameters to operate the prec. More... | |
ParallelOverlappingILU0 (const Matrix &A, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
Constructor. More... | |
ParallelOverlappingILU0 (const Matrix &A, const ParallelInfo &comm, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
Constructor. More... | |
ParallelOverlappingILU0 (const Matrix &A, const ParallelInfo &comm, const field_type w, MILU_VARIANT milu, size_type interiorSize, bool redblack=false, bool reorder_sphere=true) | |
Constructor. More... | |
void | pre (Domain &, Range &) override |
Prepare the preconditioner. More... | |
void | apply (Domain &v, const Range &d) override |
Apply the preconditoner. More... | |
template<class V > | |
void | copyOwnerToAll (V &v) const |
void | post (Range &) override |
Clean up. More... | |
void | update () override |
virtual void | update ()=0 |
Protected Attributes | |
CRS | lower_ |
The ILU0 decomposition of the matrix. | |
CRS | upper_ |
std::vector< block_type > | inv_ |
std::vector< std::size_t > | ordering_ |
the reordering of the unknowns | |
Range | reorderedD_ |
The reordered right hand side. | |
Domain | reorderedV_ |
The reordered left hand side. | |
const ParallelInfo * | comm_ |
const field_type | w_ |
The relaxation factor to use. | |
const bool | relaxation_ |
size_type | interiorSize_ |
const Matrix * | A_ |
int | iluIteration_ |
MILU_VARIANT | milu_ |
bool | redBlack_ |
bool | reorderSphere_ |
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 following way: During apply we make sure that the current residual is consistent (i.e. each process knows the same value for each index. Then 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.
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 |
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >::ParallelOverlappingILU0 | ( | const Matrix & | A, |
const int | n, | ||
const field_type | w, | ||
MILU_VARIANT | milu, | ||
bool | redblack = false , |
||
bool | reorder_sphere = true |
||
) |
Constructor.
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
n | ILU fill in level (for testing). This does not work in parallel. |
w | The relaxation factor. |
milu | The modified ILU variant to use. 0 means traditional ILU. |
redblack | Whether to use a red-black ordering. |
reorder_sphere | If true, we start the reordering at a root node. The vertices on each layer aound it (same distance) are ordered consecutivly. If false, we preserver the order of the vertices with the same color. |
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >::ParallelOverlappingILU0 | ( | const Matrix & | A, |
const ParallelInfo & | comm, | ||
const int | n, | ||
const field_type | w, | ||
MILU_VARIANT | milu, | ||
bool | redblack = false , |
||
bool | reorder_sphere = true |
||
) |
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
comm | communication object, e.g. Dune::OwnerOverlapCopyCommunication |
n | ILU fill in level (for testing). This does not work in parallel. |
w | The relaxation factor. |
milu | The modified ILU variant to use. 0 means traditional ILU. |
redblack | Whether to use a red-black ordering. |
reorder_sphere | If true, we start the reordering at a root node. The vertices on each layer aound it (same distance) are ordered consecutivly. If false, we preserver the order of the vertices with the same color. |
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >::ParallelOverlappingILU0 | ( | const Matrix & | A, |
const field_type | w, | ||
MILU_VARIANT | milu, | ||
bool | redblack = false , |
||
bool | reorder_sphere = true |
||
) |
Constructor.
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
w | The relaxation factor. |
milu | The modified ILU variant to use. 0 means traditional ILU. |
redblack | Whether to use a red-black ordering. |
reorder_sphere | If true, we start the reordering at a root node. The vertices on each layer aound it (same distance) are ordered consecutivly. If false, we preserver the order of the vertices with the same color. |
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >::ParallelOverlappingILU0 | ( | const Matrix & | A, |
const ParallelInfo & | comm, | ||
const field_type | w, | ||
MILU_VARIANT | milu, | ||
bool | redblack = false , |
||
bool | reorder_sphere = true |
||
) |
Constructor.
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
comm | communication object, e.g. Dune::OwnerOverlapCopyCommunication |
w | The relaxation factor. |
milu | The modified ILU variant to use. 0 means traditional ILU. |
redblack | Whether to use a red-black ordering. |
reorder_sphere | If true, we start the reordering at a root node. The vertices on each layer aound it (same distance) are ordered consecutivly. If false, we preserver the order of the vertices with the same color. |
Opm::ParallelOverlappingILU0< Matrix, Domain, Range, ParallelInfoT >::ParallelOverlappingILU0 | ( | const Matrix & | A, |
const ParallelInfo & | comm, | ||
const field_type | w, | ||
MILU_VARIANT | milu, | ||
size_type | interiorSize, | ||
bool | redblack = false , |
||
bool | reorder_sphere = true |
||
) |
Constructor.
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
n | ILU fill in level (for testing). This does not work in parallel. |
w | The relaxation factor. |
milu | The modified ILU variant to use. 0 means traditional ILU. |
interiorSize | The number of interior/owner rows in the matrix. |
redblack | Whether to use a red-black ordering. |
reorder_sphere | If true, we start the reordering at a root node. The vertices on each layer aound it (same distance) are ordered consecutivly. If false, we preserver the order of the vertices with the same color. |
|
override |
Apply the preconditoner.
|
inlineoverride |
Clean up.
|
inlineoverride |
Prepare the preconditioner.
|
overridevirtual |
Implements Dune::PreconditionerWithUpdate< Domain, Range >.