SolverAdapter now takes a reference to scalar product.

This commit is contained in:
Kjetil Olsen Lye 2023-05-31 16:39:45 +02:00
parent 042172588d
commit ea86e45fef
3 changed files with 8 additions and 8 deletions

View File

@ -171,7 +171,7 @@ namespace Dune
*scalarproduct_,
*preconditioner_,
tol,// desired residual reduction factor
restart,
restart,
maxiter, // maximum number of iterations
verbosity);
} else if (solver_type == "flexgmres") {
@ -180,7 +180,7 @@ namespace Dune
*scalarproduct_,
*preconditioner_,
tol,// desired residual reduction factor
restart,
restart,
maxiter, // maximum number of iterations
verbosity);
#if HAVE_SUITESPARSE_UMFPACK
@ -193,7 +193,7 @@ namespace Dune
} else if (solver_type == "cubicgstab") {
linsolver_.reset(new Opm::cuistl::SolverAdapter<Operator, Dune::BiCGSTABSolver, VectorType>(
*linearoperator_for_solver_,
scalarproduct_,
*scalarproduct_,
preconditioner_,
tol, // desired residual reduction factor
maxiter, // maximum number of iterations

View File

@ -56,12 +56,12 @@ public:
// TODO: Use a std::forward
SolverAdapter(Operator& op,
std::shared_ptr<Dune::ScalarProduct<X>> sp,
Dune::ScalarProduct<X>& sp,
std::shared_ptr<Dune::Preconditioner<X, X>> prec,
scalar_real_type reduction,
int maxit,
int verbose)
: Dune::IterativeSolver<X, X>(op, *sp, *prec, reduction, maxit, verbose)
: Dune::IterativeSolver<X, X>(op, sp, *prec, reduction, maxit, verbose)
, m_opOnCPUWithMatrix(op)
, m_matrix(CuSparseMatrix<real_type>::fromMatrix(op.getmat()))
, m_underlyingSolver(constructSolver(prec, reduction, maxit, verbose))

View File

@ -79,9 +79,9 @@ createSolverAdapterWithMatrix(const size_t N = 10)
prm.put<double>("relaxation", 1.0);
prm.put<std::string>("type", "CUILU0");
auto prec = PrecondFactory::create(*op, prm);
auto solverAdapter = std::make_shared<SolverAdapter>(*op, sp, prec, 1.0, 10, 0);
auto solverAdapter = std::make_shared<SolverAdapter>(*op, *sp, prec, 1.0, 10, 0);
return std::make_tuple(matrixPtr, solverAdapter, op);
return std::make_tuple(matrixPtr, solverAdapter, op, sp);
}
} // namespace
@ -93,7 +93,7 @@ BOOST_AUTO_TEST_CASE(TestCreation)
BOOST_AUTO_TEST_CASE(TestSolve)
{
const size_t N = 10;
auto [matrix, solverAdapter, op] = createSolverAdapterWithMatrix(N);
auto [matrix, solverAdapter, op, sp] = createSolverAdapterWithMatrix(N);
Vector xActual(N), xInitial(N), b(N);
for (size_t i = 0; i < N; ++i) {