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

## 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

  p | The sequential preconditioner.
  c | The 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 )

inline override virtual

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

inline override virtual

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

inline override virtual

Implements Dune::PreconditionerWithUpdate< X, Y >.

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

inline override virtual

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

inline override virtual

Implements Dune::PreconditionerWithUpdate< X, Y >.

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

- opm/simulators/linalg/gpuistl/GpuBlockPreconditioner.hpp