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