This is an object factory for creating preconditioners.
More...
#include <PreconditionerFactory.hpp>
|
using | Matrix = typename Operator::matrix_type |
| Linear algebra types.
|
|
using | Vector = typename Operator::domain_type |
|
using | PrecPtr = std::shared_ptr< Dune::PreconditionerWithUpdate< Vector, Vector > > |
| The type of pointer returned by create().
|
|
using | Creator = std::function< PrecPtr(const Operator &, const PropertyTree &, const std::function< Vector()> &, std::size_t)> |
| The type of creator functions passed to addCreator().
|
|
using | ParCreator = std::function< PrecPtr(const Operator &, const PropertyTree &, const std::function< Vector()> &, std::size_t, const Comm &)> |
|
using | CriterionBase = Dune::Amg::AggregationCriterion< Dune::Amg::SymmetricDependency< Matrix, Dune::Amg::FirstDiagonal > > |
|
using | Criterion = Dune::Amg::CoarsenCriterion< CriterionBase > |
|
|
static PrecPtr | create (const Operator &op, const PropertyTree &prm, const std::function< Vector()> &weightsCalculator={}, std::size_t pressureIndex=std::numeric_limits< std::size_t >::max()) |
| Create a new serial preconditioner and return a pointer to it. More...
|
|
static PrecPtr | create (const Operator &op, const PropertyTree &prm, const std::function< Vector()> &weightsCalculator, const Comm &comm, std::size_t pressureIndex=std::numeric_limits< std::size_t >::max()) |
| Create a new parallel preconditioner and return a pointer to it. More...
|
|
static PrecPtr | create (const Operator &op, const PropertyTree &prm, const Comm &comm, std::size_t pressureIndex=std::numeric_limits< std::size_t >::max()) |
| Create a new parallel preconditioner and return a pointer to it. More...
|
|
static void | addCreator (const std::string &type, Creator creator) |
| Add a creator for a serial preconditioner to the PreconditionerFactory. More...
|
|
static void | addCreator (const std::string &type, ParCreator creator) |
| Add a creator for a parallel preconditioner to the PreconditionerFactory. More...
|
|
static Criterion | amgCriterion (const PropertyTree &prm) |
|
template<class Operator, class Comm>
class Opm::PreconditionerFactory< Operator, Comm >
This is an object factory for creating preconditioners.
The user need only interact with the factory through the static methods addStandardPreconditioners() and create(). In addition a user can call the addCreator() static method to add further preconditioners.
◆ addCreator() [1/2]
template<class Operator , class Comm >
Add a creator for a serial preconditioner to the PreconditionerFactory.
After the call, the user may obtain a preconditioner by calling create() with the given type string as a parameter contained in the property_tree.
- Parameters
-
type | the type string we want the PreconditionerFactory to associate with the preconditioner. |
creator | a function or lambda creating a preconditioner. |
◆ addCreator() [2/2]
template<class Operator , class Comm >
Add a creator for a parallel preconditioner to the PreconditionerFactory.
After the call, the user may obtain a preconditioner by calling create() with the given type string as a parameter contained in the property_tree.
- Parameters
-
type | the type string we want the PreconditionerFactory to associate with the preconditioner. |
creator | a function or lambda creating a preconditioner. |
◆ create() [1/3]
template<class Operator , class Comm >
Create a new parallel preconditioner and return a pointer to it.
- Parameters
-
op | operator to be preconditioned. |
prm | parameters for the preconditioner, in particular its type. |
comm | communication object (typically OwnerOverlapCopyCommunication). |
- Returns
- (smart) pointer to the created preconditioner.
◆ create() [2/3]
template<class Operator , class Comm >
static PrecPtr Opm::PreconditionerFactory< Operator, Comm >::create |
( |
const Operator & |
op, |
|
|
const PropertyTree & |
prm, |
|
|
const std::function< Vector()> & |
weightsCalculator, |
|
|
const Comm & |
comm, |
|
|
std::size_t |
pressureIndex = std::numeric_limits<std::size_t>::max() |
|
) |
| |
|
inlinestatic |
Create a new parallel preconditioner and return a pointer to it.
- Parameters
-
op | operator to be preconditioned. |
prm | parameters for the preconditioner, in particular its type. |
comm | communication object (typically OwnerOverlapCopyCommunication). |
weightsCalculator | Calculator for weights used in CPR. |
- Returns
- (smart) pointer to the created preconditioner.
◆ create() [3/3]
template<class Operator , class Comm >
static PrecPtr Opm::PreconditionerFactory< Operator, Comm >::create |
( |
const Operator & |
op, |
|
|
const PropertyTree & |
prm, |
|
|
const std::function< Vector()> & |
weightsCalculator = {} , |
|
|
std::size_t |
pressureIndex = std::numeric_limits<std::size_t>::max() |
|
) |
| |
|
inlinestatic |
Create a new serial preconditioner and return a pointer to it.
- Parameters
-
op | operator to be preconditioned. |
prm | parameters for the preconditioner, in particular its type. |
weightsCalculator | Calculator for weights used in CPR. |
- Returns
- (smart) pointer to the created preconditioner.
The documentation for this class was generated from the following files: