Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P > Class Template Reference

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

#include <GpuBlockPreconditioner.hpp>

Inheritance diagram for Opm::gpuistl::GpuBlockPreconditioner< 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

 GpuBlockPreconditioner (const std::shared_ptr< P > &p, const std::shared_ptr< const communication_type > &c)
 Constructor. More...
 
 GpuBlockPreconditioner (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...
 
virtual bool hasPerfectUpdate () const override
 

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::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::communication_type = C

◆ domain_type

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

◆ field_type

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
using Opm::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::range_type = Y

Constructor & Destructor Documentation

◆ GpuBlockPreconditioner() [1/2]

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::GpuBlockPreconditioner ( 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 )

◆ GpuBlockPreconditioner() [2/2]

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::GpuBlockPreconditioner ( 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::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::getUnderlyingPreconditioner ( )
inlineoverridevirtual

getUnderlyingPreconditioner gets the underlying preconditioner (preconditioner being held)

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

◆ hasPerfectUpdate()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual bool Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::hasPerfectUpdate ( ) const
inlineoverridevirtual

◆ post()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
virtual void Opm::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< 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::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::shouldCallPost ( )
inlinestaticconstexpr

◆ shouldCallPre()

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

◆ update()

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

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