Opm::cuistl::CuBlockPreconditioner< X, Y, C, P > Class Template Reference

Is an adaptation of Dune::BlockPreconditioner that works within the CuISTL framework. More...

#include <CuBlockPreconditioner.hpp>

Inheritance diagram for Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >:
Inheritance graph

Public Types

using domain_type = X
 
using range_type = Y
 
using field_type = typename X::field_type
 
using communication_type = C
 

Public Member Functions

 CuBlockPreconditioner (const std::shared_ptr< P > &p, const std::shared_ptr< const communication_type > &c)
 Constructor. More...
 
 CuBlockPreconditioner (const std::shared_ptr< P > &p, const communication_type &c)
 
virtual void pre (X &x, Y &b) override
 Prepare the preconditioner. More...
 
virtual void apply (X &v, const Y &d) override
 Apply the preconditioner. More...
 
virtual void update () override
 
virtual void post (X &x) override
 
virtual Dune::SolverCategory::Category category () const override
 Category of the preconditioner (see SolverCategory::Category) More...
 
virtual std::shared_ptr< Dune::PreconditionerWithUpdate< X, Y > > getUnderlyingPreconditioner () override
 getUnderlyingPreconditioner gets the underlying preconditioner (preconditioner being held) More...
 

Static Public Member Functions

static constexpr bool shouldCallPre ()
 
static constexpr bool shouldCallPost ()
 

Detailed Description

template<class X, class Y, class C, class P = Dune::PreconditionerWithUpdate<X, Y>>
class Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >

Is an adaptation of Dune::BlockPreconditioner that works within the CuISTL framework.

Note
We aim to intgrate this into OwningBlockPreconditioner (or a relative thereof).

Member Typedef Documentation

◆ communication_type

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
using Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::communication_type = C

◆ domain_type

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
using Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::domain_type = X

◆ field_type

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
using Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::field_type = typename X::field_type

◆ range_type

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
using Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::range_type = Y

Constructor & Destructor Documentation

◆ CuBlockPreconditioner() [1/2]

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::CuBlockPreconditioner ( const std::shared_ptr< P > &  p,
const std::shared_ptr< const communication_type > &  c 
)
inline

Constructor.

constructor gets all parameters to operate the prec.

Parameters
pThe sequential preconditioner.
cThe communication object for syncing overlap and copy data points. (E.~g. OwnerOverlapCopyCommunication )

◆ CuBlockPreconditioner() [2/2]

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::CuBlockPreconditioner ( const std::shared_ptr< P > &  p,
const communication_type c 
)
inline

Member Function Documentation

◆ apply()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual void Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::apply ( X &  v,
const Y &  d 
)
inlineoverridevirtual

Apply the preconditioner.

◆ category()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual Dune::SolverCategory::Category Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::category ( ) const
inlineoverridevirtual

Category of the preconditioner (see SolverCategory::Category)

◆ getUnderlyingPreconditioner()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual std::shared_ptr< Dune::PreconditionerWithUpdate< X, Y > > Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::getUnderlyingPreconditioner ( )
inlineoverridevirtual

getUnderlyingPreconditioner gets the underlying preconditioner (preconditioner being held)

Implements Opm::cuistl::PreconditionerHolder< X, Y >.

◆ post()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual void Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::post ( X &  x)
inlineoverridevirtual

◆ pre()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual void Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::pre ( X &  x,
Y &  b 
)
inlineoverridevirtual

Prepare the preconditioner.

◆ shouldCallPost()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
static constexpr bool Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::shouldCallPost ( )
inlinestaticconstexpr

◆ shouldCallPre()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
static constexpr bool Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::shouldCallPre ( )
inlinestaticconstexpr

◆ update()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual void Opm::cuistl::CuBlockPreconditioner< X, Y, C, P >::update ( )
inlineoverridevirtual

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