Loading...
Searching...
No Matches
Opm::PreconditionerFactory< Operator, Comm > Class Template Reference

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
| The type of creator functions passed to addCreator().
using | ParCreator
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.

## Detailed Description

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.

## Member Typedef Documentation

## Creator

template<class Operator, class Comm>

using Opm::PreconditionerFactory< Operator, Comm >::Creator

Initial value:
std::function<PrecPtr(const Operator&, const PropertyTree&,
const std::function<Vector()>&, std::size_t)>
Opm::PreconditionerFactory::PrecPtr
std::shared_ptr< Dune::PreconditionerWithUpdate< Vector, Vector > > PrecPtr
The type of pointer returned by create().
Definition PreconditionerFactory.hpp:71
Opm::PropertyTree
Hierarchical collection of key/value pairs.
Definition PropertyTree.hpp:39

The type of creator functions passed to addCreator().

## ParCreator

template<class Operator, class Comm>

using Opm::PreconditionerFactory< Operator, Comm >::ParCreator

Initial value:
std::function<PrecPtr(const Operator&, const PropertyTree&,
const std::function<Vector()>&, std::size_t, const Comm&)>

## Member Function Documentation

## addCreator() [1/2]

template<class Operator, class Comm>

void Opm::PreconditionerFactory< Operator, Comm >::addCreator | ( | const std::string & | type,
|  | Creator | creator )

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.

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>

void Opm::PreconditionerFactory< Operator, Comm >::addCreator | ( | const std::string & | type,
|  | ParCreator | creator )

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.

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>

PreconditionerFactory< Operator, Comm >::PrecPtr Opm::PreconditionerFactory< Operator, Comm >::create | ( | const Operator & | op,
|  | const PropertyTree & | prm,
|  | const Comm & | comm,
|  | std::size_t | pressureIndex = std::numeric_limits<std::size_t>::max() )

static

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).
  pressureIndex | Index for pressure equation.

Returns
  (smart) pointer to the created preconditioner.

## create() [2/3]

template<class Operator, class Comm>

PreconditionerFactory< Operator, Comm >::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() )

static

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.
  pressureIndex | Index for pressure equation.

Returns
  (smart) pointer to the created preconditioner.

## create() [3/3]

template<class Operator, class Comm>

PreconditionerFactory< Operator, Comm >::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() )

static

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.
  pressureIndex | Index for pressure equation.

Returns
  (smart) pointer to the created preconditioner.

The documentation for this class was generated from the following files:

- opm/simulators/linalg/OwningTwoLevelPreconditioner.hpp
- opm/simulators/linalg/PreconditionerFactory.hpp
- opm/simulators/linalg/PreconditionerFactory_impl.hpp