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
 
- Public Member Functions inherited from Dune::PreconditionerWithUpdate< X, Y >
- Public Member Functions inherited from Opm::gpuistl::PreconditionerHolder< X, Y >

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: