opm-simulators
Loading...
Searching...
No Matches
Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X > Class Template Reference

Wraps a CUDA solver to work with CPU data. More...

#include <SolverAdapter.hpp>

Inheritance diagram for Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X >:

Public Types

using XGPU = Opm::gpuistl::GpuVector<real_type>

Public Member Functions

template<class Comm>
 SolverAdapter (Operator &op, Dune::ScalarProduct< X > &sp, std::shared_ptr< Dune::Preconditioner< X, X > > prec, scalar_real_type reduction, int maxit, int verbose, const Comm &comm)
 constructor
virtual void apply (X &x, X &b, double reduction, Dune::InverseOperatorResult &res) override
virtual void apply (X &x, X &b, Dune::InverseOperatorResult &res) override

Static Public Attributes

static constexpr auto block_size = domain_type::block_type::dimension

Detailed Description

template<class Operator, template< class > class UnderlyingSolver, class X>
class Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X >

Wraps a CUDA solver to work with CPU data.

Template Parameters
Operatorthe Dune::LinearOperator to use
UnderlyingSolvera Dune solver like class, eg Dune::BiCGSTABSolver
Xthe outer type to use (eg. Dune::BlockVector<Dune::FieldVector<...>>)

Constructor & Destructor Documentation

◆ SolverAdapter()

template<class Operator, template< class > class UnderlyingSolver, class X>
template<class Comm>
Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X >::SolverAdapter ( Operator & op,
Dune::ScalarProduct< X > & sp,
std::shared_ptr< Dune::Preconditioner< X, X > > prec,
scalar_real_type reduction,
int maxit,
int verbose,
const Comm & comm )
inline

constructor

Parameters
opthe linear operator (assumed CPU, the output (matrix) of which will be converted to a GPU variant)
spthe scalar product (assumed CPU, this will be converted to a GPU variant)
precThe preconditioner to use
reductionthe reduction factor passed to the iterative solver
maxitmaximum number of iterations for the linear solver
verboseverbosity level
commthe communication object. If this is Dune::Amg::SequentialInformation, we assume a serial setup
Todo
Use a std::forward in this function

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