Opm::MixedPreconditioner< M, X, Y > Class Template Reference

Wraps c-implementation of mixed-precision preconditioner. More...

#include <PreconditionerWrapper.hpp>

Inheritance diagram for Opm::MixedPreconditioner< M, X, Y >:
Inheritance graph

Public Types

using domain_type = X
 

Public Member Functions

 MixedPreconditioner (const M &A, bool use_dilu=false)
 constructor More...
 
 ~MixedPreconditioner ()
 destructor More...
 
virtual void update () override
 
virtual bool hasPerfectUpdate () const override
 
virtual void pre (X &x, Y &y) override
 
virtual void post (X &x) override
 
virtual void apply (X &x, const Y &y) override
 
virtual Dune::SolverCategory::Category category () const override
 

Static Public Attributes

static constexpr auto block_size = domain_type::block_type::dimension
 

Detailed Description

template<class M, class X, class Y>
class Opm::MixedPreconditioner< M, X, Y >

Wraps c-implementation of mixed-precision preconditioner.

Template Parameters
Vectorthe block-vector used by linear operator
Mblock-sparse matrix type
Xblock-vector input type
Yblock vector output type

Member Typedef Documentation

◆ domain_type

template<class M , class X , class Y >
using Opm::MixedPreconditioner< M, X, Y >::domain_type = X

Constructor & Destructor Documentation

◆ MixedPreconditioner()

template<class M , class X , class Y >
Opm::MixedPreconditioner< M, X, Y >::MixedPreconditioner ( const M &  A,
bool  use_dilu = false 
)
inline

constructor

Parameters
Ablock-sparse matrix
use_dilutoggle between dilu or ilu0 factorization

References Opm::MixedPreconditioner< M, X, Y >::block_size, bsr_alloc(), bsr_init(), bsr_matrix::colidx, prec_alloc(), prec_init(), bsr_matrix::rowptr, and Opm::MixedPreconditioner< M, X, Y >::update().

◆ ~MixedPreconditioner()

template<class M , class X , class Y >
Opm::MixedPreconditioner< M, X, Y >::~MixedPreconditioner ( )
inline

destructor

References bsr_free(), and prec_free().

Member Function Documentation

◆ apply()

template<class M , class X , class Y >
void Opm::MixedPreconditioner< M, X, Y >::apply ( X &  x,
const Y &  y 
)
overridevirtual

References prec_mapply3c().

◆ category()

template<class M , class X , class Y >
virtual Dune::SolverCategory::Category Opm::MixedPreconditioner< M, X, Y >::category ( ) const
inlineoverridevirtual

◆ hasPerfectUpdate()

template<class M , class X , class Y >
virtual bool Opm::MixedPreconditioner< M, X, Y >::hasPerfectUpdate ( ) const
inlineoverridevirtual

◆ post()

template<class M , class X , class Y >
virtual void Opm::MixedPreconditioner< M, X, Y >::post ( X &  x)
inlineoverridevirtual

◆ pre()

template<class M , class X , class Y >
virtual void Opm::MixedPreconditioner< M, X, Y >::pre ( X &  x,
Y &  y 
)
inlineoverridevirtual

◆ update()

template<class M , class X , class Y >
void Opm::MixedPreconditioner< M, X, Y >::update
overridevirtual

Member Data Documentation

◆ block_size

template<class M , class X , class Y >
constexpr auto Opm::MixedPreconditioner< M, X, Y >::block_size = domain_type::block_type::dimension
staticconstexpr

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