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

Apply the preconditioner.

◆ category()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
Dune::SolverCategory::Category Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::category ( ) const
inlineoverride

Category of the preconditioner (see SolverCategory::Category)

◆ getUnderlyingPreconditioner()

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

◆ pre()

template<class X , class Y , class C , class P = Dune::PreconditionerWithUpdate<X, Y>>
void Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::pre ( X &  x,
Y &  b 
)
inlineoverride

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>>
void Opm::gpuistl::GpuBlockPreconditioner< X, Y, C, P >::update ( )
inlineoverridevirtual

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