Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication > Class Template Reference

#include <OwningTwoLevelPreconditioner.hpp>

Inheritance diagram for Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >:
Inheritance graph

Public Types

using MatrixType = typename OperatorType::matrix_type
 
using PrecFactory = Opm::PreconditionerFactory< OperatorType, Communication >
 
using AbstractOperatorType = Dune::AssembledLinearOperator< MatrixType, VectorType, VectorType >
 

Public Member Functions

 OwningTwoLevelPreconditioner (const OperatorType &linearoperator, const Opm::PropertyTree &prm, const std::function< VectorType()> weightsCalculator, std::size_t pressureIndex)
 
 OwningTwoLevelPreconditioner (const OperatorType &linearoperator, const Opm::PropertyTree &prm, const std::function< VectorType()> weightsCalculator, std::size_t pressureIndex, const Communication &comm)
 
virtual void pre (VectorType &x, VectorType &b) override
 
virtual void apply (VectorType &v, const VectorType &d) override
 
virtual void post (VectorType &x) override
 
virtual void update () override
 
virtual Dune::SolverCategory::Category category () const override
 

Detailed Description

template<class OperatorType, class VectorType, class LevelTransferPolicy, class Communication = Dune::Amg::SequentialInformation>
class Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >

A version of the two-level preconditioner that is:

  • Self-contained, because it owns its policy components.
  • Flexible, because it uses the runtime-flexible solver and preconditioner factory.

Member Typedef Documentation

◆ AbstractOperatorType

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
using Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::AbstractOperatorType = Dune::AssembledLinearOperator<MatrixType, VectorType, VectorType>

◆ MatrixType

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
using Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::MatrixType = typename OperatorType::matrix_type

◆ PrecFactory

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
using Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::PrecFactory = Opm::PreconditionerFactory<OperatorType, Communication>

Constructor & Destructor Documentation

◆ OwningTwoLevelPreconditioner() [1/2]

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::OwningTwoLevelPreconditioner ( const OperatorType &  linearoperator,
const Opm::PropertyTree prm,
const std::function< VectorType()>  weightsCalculator,
std::size_t  pressureIndex 
)
inline

◆ OwningTwoLevelPreconditioner() [2/2]

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::OwningTwoLevelPreconditioner ( const OperatorType &  linearoperator,
const Opm::PropertyTree prm,
const std::function< VectorType()>  weightsCalculator,
std::size_t  pressureIndex,
const Communication &  comm 
)
inline

Member Function Documentation

◆ apply()

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
virtual void Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::apply ( VectorType &  v,
const VectorType &  d 
)
inlineoverridevirtual

◆ category()

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
virtual Dune::SolverCategory::Category Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::category ( ) const
inlineoverridevirtual

◆ post()

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
virtual void Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::post ( VectorType &  x)
inlineoverridevirtual

◆ pre()

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
virtual void Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::pre ( VectorType &  x,
VectorType &  b 
)
inlineoverridevirtual

◆ update()

template<class OperatorType , class VectorType , class LevelTransferPolicy , class Communication = Dune::Amg::SequentialInformation>
virtual void Dune::OwningTwoLevelPreconditioner< OperatorType, VectorType, LevelTransferPolicy, Communication >::update ( )
inlineoverridevirtual

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