Dune::FlexibleSolver< Operator > Class Template Reference

#include <FlexibleSolver.hpp>

Inheritance diagram for Dune::FlexibleSolver< Operator >:
Inheritance graph

Public Types

using VectorType = typename Operator::domain_type
 
using AbstractPrecondType = Dune::PreconditionerWithUpdate< VectorType, VectorType >
 Base class type of the contained preconditioner. More...
 

Public Member Functions

 FlexibleSolver (Operator &op, const Opm::PropertyTree &prm, const std::function< VectorType()> &weightsCalculator, std::size_t pressureIndex)
 Create a sequential solver. More...
 
template<class Comm >
 FlexibleSolver (Operator &op, const Comm &comm, const Opm::PropertyTree &prm, const std::function< VectorType()> &weightsCalculator, std::size_t pressureIndex)
 Create a parallel solver (if Comm is e.g. OwnerOverlapCommunication). More...
 
virtual void apply (VectorType &x, VectorType &rhs, Dune::InverseOperatorResult &res) override
 
virtual void apply (VectorType &x, VectorType &rhs, double reduction, Dune::InverseOperatorResult &res) override
 
AbstractPrecondTypepreconditioner ()
 Access the contained preconditioner. More...
 
virtual Dune::SolverCategory::Category category () const override
 

Detailed Description

template<class Operator>
class Dune::FlexibleSolver< Operator >

A solver class that encapsulates all needed objects for a linear solver (operator, scalar product, iterative solver and preconditioner) and sets them up based on runtime parameters, using the PreconditionerFactory for setting up preconditioners.

Member Typedef Documentation

◆ AbstractPrecondType

template<class Operator >
using Dune::FlexibleSolver< Operator >::AbstractPrecondType = Dune::PreconditionerWithUpdate<VectorType, VectorType>

Base class type of the contained preconditioner.

◆ VectorType

template<class Operator >
using Dune::FlexibleSolver< Operator >::VectorType = typename Operator::domain_type

Constructor & Destructor Documentation

◆ FlexibleSolver() [1/2]

template<class Operator >
Dune::FlexibleSolver< Operator >::FlexibleSolver ( Operator &  op,
const Opm::PropertyTree prm,
const std::function< VectorType()> &  weightsCalculator,
std::size_t  pressureIndex 
)

Create a sequential solver.

◆ FlexibleSolver() [2/2]

template<class Operator >
template<class Comm >
Dune::FlexibleSolver< Operator >::FlexibleSolver ( Operator &  op,
const Comm comm,
const Opm::PropertyTree prm,
const std::function< VectorType()> &  weightsCalculator,
std::size_t  pressureIndex 
)

Create a parallel solver (if Comm is e.g. OwnerOverlapCommunication).

Member Function Documentation

◆ apply() [1/2]

template<class Operator >
void Dune::FlexibleSolver< Operator >::apply ( VectorType x,
VectorType rhs,
double  reduction,
Dune::InverseOperatorResult &  res 
)
overridevirtual

◆ apply() [2/2]

template<class Operator >
void Dune::FlexibleSolver< Operator >::apply ( VectorType x,
VectorType rhs,
Dune::InverseOperatorResult &  res 
)
overridevirtual

◆ category()

template<class Operator >
Dune::SolverCategory::Category Dune::FlexibleSolver< Operator >::category
overridevirtual

◆ preconditioner()

template<class Operator >
auto Dune::FlexibleSolver< Operator >::preconditioner

Access the contained preconditioner.


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