|
opm-simulators
|
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) |
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.
| using Opm::gpuistl::detail::FlexibleSolverWrapper< Matrix, Vector, Comm >::GpuCommunicationType |