Loading...
Searching...
No Matches
Opm::gpuistl::detail::FlexibleSolverWrapper< Matrix, Vector, Comm > Class Template Reference

FlexibleSolverWrapper is compilational trick to reduce compile time overhead. More...

`#include <FlexibleSolverWrapper.hpp>`

## Public Types

using | AbstractSolverType = Dune::InverseOperator<Vector, Vector>
using | AbstractPreconditionerType = Dune::PreconditionerWithUpdate<Vector, Vector>
using | AbstractOperatorType = Dune::AssembledLinearOperator<Matrix, Vector, Vector>
using | AbstractOperatorPtrType = std::unique_ptr<AbstractOperatorType>
using | AbstractSolverPtrType = std::unique_ptr<AbstractSolverType>
using | GpuCommunicationType

## Public Member Functions

| FlexibleSolverWrapper (const Matrix &matrix, bool parallel, const PropertyTree &prm, std::size_t pressureIndex, const std::function< Vector()> &weightCalculator, bool forceSerial, const Comm *comm)
void | update ()
void | apply (Vector &x, Vector &y, Dune::InverseOperatorResult &result)

## Detailed Description

template<class Matrix, class Vector, class Comm>
class Opm::gpuistl::detail::FlexibleSolverWrapper< Matrix, Vector, Comm >

FlexibleSolverWrapper is compilational trick to reduce compile time overhead.

Essentially this class acts as a direct interface towards the FlexibleSolver class, but we want to have a clear wall between the ISTLSolverGPUISTL and the FlexibleSolver to avoid compilational overhead (the former is based on TypeTag the latter on operators).

This wrapper handles the mapping from matrices to concrete operator types.

## Member Typedef Documentation

## GpuCommunicationType

template<class Matrix, class Vector, class Comm>

using Opm::gpuistl::detail::FlexibleSolverWrapper< Matrix, Vector, Comm >::GpuCommunicationType

Initial value:
std::conditional_t<
std::is_same_v<Comm, Dune::Communication<int>>,
int,
GpuOwnerOverlapCopy<typename Matrix::field_type, Comm>>
Opm::gpuistl::GpuOwnerOverlapCopy
CUDA compatiable variant of Dune::OwnerOverlapCopyCommunication.
Definition GpuOwnerOverlapCopy.hpp:55

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

- opm/simulators/linalg/gpuistl/detail/FlexibleSolverWrapper.hpp
- opm/simulators/linalg/gpuistl/detail/FlexibleSolverWrapper.cpp