|
opm-simulators
|
A two-step version of an overlapping Schwarz preconditioner using one step ILU0 as. More...
#include <ParallelOverlappingILU0.hpp>
Classes | |
| struct | CRS |
Public Member Functions | |
| virtual bool | hasPerfectUpdate () const override |
| 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. | |
| 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. | |
| ParallelOverlappingILU0 (const Matrix &A, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
| Constructor. | |
| ParallelOverlappingILU0 (const Matrix &A, const ParallelInfo &comm, const field_type w, MILU_VARIANT milu, bool redblack=false, bool reorder_sphere=true) | |
| Constructor. | |
| 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. | |
| void | pre (Domain &, Range &) override |
| Prepare the preconditioner. | |
| void | apply (Domain &v, const Range &d) override |
| Apply the preconditoner. | |
| template<class V> | |
| void | copyOwnerToAll (V &v) const |
| void | post (Range &) override |
| Clean up. | |
| void | update () override |
Protected Attributes | |
| std::unique_ptr< Matrix > | ILU_ |
| The ILU0 decomposition of the matrix. | |
| CRS | lower_ |
| 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. |
| comm | Parallel communicator |
| 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.
|
inlineoverridevirtual |
Implements Dune::PreconditionerWithUpdate< Domain, Range >.
|
inlineoverride |
Clean up.
|
inlineoverride |
Prepare the preconditioner.
|
overridevirtual |
Implements Dune::PreconditionerWithUpdate< Domain, Range >.