My Project
|
This is an object factory for creating preconditioners. More...
#include <PreconditionerFactory.hpp>
Public Types | |
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 Public Member Functions | |
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. | |
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. | |
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. | |
static void | addCreator (const std::string &type, Creator creator) |
Add a creator for a serial preconditioner to the PreconditionerFactory. | |
static void | addCreator (const std::string &type, ParCreator creator) |
Add a creator for a parallel preconditioner to the PreconditionerFactory. | |
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.
|
static |
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.
type | the type string we want the PreconditionerFactory to associate with the preconditioner. |
creator | a function or lambda creating a preconditioner. |
|
static |
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.
type | the type string we want the PreconditionerFactory to associate with the preconditioner. |
creator | a function or lambda creating a preconditioner. |
|
static |
Create a new parallel preconditioner and return a pointer to it.
op | operator to be preconditioned. |
prm | parameters for the preconditioner, in particular its type. |
comm | communication object (typically OwnerOverlapCopyCommunication). |
|
static |
Create a new parallel preconditioner and return a pointer to it.
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. |
|
static |
Create a new serial preconditioner and return a pointer to it.
op | operator to be preconditioned. |
prm | parameters for the preconditioner, in particular its type. |
weightsCalculator | Calculator for weights used in CPR. |