My Project
Loading...
Searching...
No Matches
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 >:
Dune::PreconditionerWithUpdate< X, Y > Opm::cuistl::PreconditionerHolder< X, Y >

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

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).

Constructor & Destructor Documentation

◆ CuBlockPreconditioner()

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 )

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.

◆ 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 >.

◆ 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.

◆ 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: