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

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

Constructor & Destructor Documentation

◆ GpuBlockPreconditioner()

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 )

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.

◆ 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

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

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