mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #4567 from akva2/janitoring
FlexibleSolver: use std::make_shared
This commit is contained in:
commit
a2fd7d0ae3
@ -148,33 +148,33 @@ namespace Dune
|
||||
const int verbosity = is_iorank ? prm.get<int>("verbosity", 0) : 0;
|
||||
const std::string solver_type = prm.get<std::string>("solver", "bicgstab");
|
||||
if (solver_type == "bicgstab") {
|
||||
linsolver_.reset(new Dune::BiCGSTABSolver<VectorType>(*linearoperator_for_solver_,
|
||||
*scalarproduct_,
|
||||
*preconditioner_,
|
||||
tol, // desired residual reduction factor
|
||||
maxiter, // maximum number of iterations
|
||||
verbosity));
|
||||
linsolver_ = std::make_shared<Dune::BiCGSTABSolver<VectorType>>(*linearoperator_for_solver_,
|
||||
*scalarproduct_,
|
||||
*preconditioner_,
|
||||
tol, // desired residual reduction factor
|
||||
maxiter, // maximum number of iterations
|
||||
verbosity);
|
||||
} else if (solver_type == "loopsolver") {
|
||||
linsolver_.reset(new Dune::LoopSolver<VectorType>(*linearoperator_for_solver_,
|
||||
*scalarproduct_,
|
||||
*preconditioner_,
|
||||
tol, // desired residual reduction factor
|
||||
maxiter, // maximum number of iterations
|
||||
verbosity));
|
||||
} else if (solver_type == "gmres") {
|
||||
int restart = prm.get<int>("restart", 15);
|
||||
linsolver_.reset(new Dune::RestartedGMResSolver<VectorType>(*linearoperator_for_solver_,
|
||||
linsolver_ = std::make_shared<Dune::LoopSolver<VectorType>>(*linearoperator_for_solver_,
|
||||
*scalarproduct_,
|
||||
*preconditioner_,
|
||||
tol,
|
||||
restart, // desired residual reduction factor
|
||||
tol, // desired residual reduction factor
|
||||
maxiter, // maximum number of iterations
|
||||
verbosity));
|
||||
verbosity);
|
||||
} else if (solver_type == "gmres") {
|
||||
int restart = prm.get<int>("restart", 15);
|
||||
linsolver_ = std::make_shared<Dune::RestartedGMResSolver<VectorType>>(*linearoperator_for_solver_,
|
||||
*scalarproduct_,
|
||||
*preconditioner_,
|
||||
tol,
|
||||
restart, // desired residual reduction factor
|
||||
maxiter, // maximum number of iterations
|
||||
verbosity);
|
||||
#if HAVE_SUITESPARSE_UMFPACK
|
||||
} else if (solver_type == "umfpack") {
|
||||
bool dummy = false;
|
||||
using MatrixType = std::remove_const_t<std::remove_reference_t<decltype(linearoperator_for_solver_->getmat())>>;
|
||||
linsolver_.reset(new Dune::UMFPack<MatrixType>(linearoperator_for_solver_->getmat(), verbosity, dummy));
|
||||
linsolver_ = std::make_shared<Dune::UMFPack<MatrixType>>(linearoperator_for_solver_->getmat(), verbosity, dummy);
|
||||
#endif
|
||||
} else {
|
||||
OPM_THROW(std::invalid_argument,
|
||||
|
Loading…
Reference in New Issue
Block a user