mirror of
https://github.com/OPM/opm-simulators.git
synced 2026-11-03 20:56:43 -06:00
solve: introduce a trivial preconditioner
This commit is contained in:
1 parent
70e23d6a0a
commit
a79dd5d31d
4 files changed
+24
No files matched your search
@@ -31,6 +31,19 @@
|
||||
|
||||
namespace Opm {
|
||||
|
||||
template <class X, class Y>
|
||||
class TrivialPreconditioner : public Dune::PreconditionerWithUpdate<X, Y>
|
||||
{
|
||||
public:
|
||||
TrivialPreconditioner(){};
|
||||
virtual void update() override {};
|
||||
virtual bool hasPerfectUpdate() const override {return true;}
|
||||
virtual void pre (X& x, Y& y) override {};
|
||||
virtual void post (X& x) override {};
|
||||
virtual void apply (X& x, const Y& y) override {};
|
||||
virtual Dune::SolverCategory::Category category() const override { return Dune::SolverCategory::sequential; };
|
||||
};
|
||||
|
||||
|
||||
template <class Operator>
|
||||
struct StandardPreconditioners<Operator, Dune::Amg::SequentialInformation, typename std::enable_if_t<!Opm::is_gpu_operator_v<Operator>>>
|
||||
@@ -71,6 +84,14 @@ struct StandardPreconditioners<Operator, Dune::Amg::SequentialInformation, typen
|
||||
DUNE_UNUSED_PARAMETER(prm);
|
||||
return std::make_shared<MultithreadDILU<M, V, V>>(op.getmat());
|
||||
});
|
||||
F::addCreator("mixed-ilu0", [](const O& op, const P& prm, const std::function<V()>&, std::size_t) {
|
||||
DUNE_UNUSED_PARAMETER(prm);
|
||||
return std::make_shared<TrivialPreconditioner<V,V>>();
|
||||
});
|
||||
F::addCreator("mixed-dilu", [](const O& op, const P& prm, const std::function<V()>&, std::size_t) {
|
||||
DUNE_UNUSED_PARAMETER(prm);
|
||||
return std::make_shared<TrivialPreconditioner<V,V>>();
|
||||
});
|
||||
F::addCreator("jac", [](const O& op, const P& prm, const std::function<V()>&, std::size_t) {
|
||||
const int n = prm.get<int>("repeats", 1);
|
||||
const double w = prm.get<double>("relaxation", 1.0);
|
||||
|
||||
@@ -408,6 +408,7 @@ setupMixedILU([[maybe_unused]] const std::string& conf, const FlowLinearSolverPa
|
||||
prm.put("maxiter", p.linear_solver_maxiter_);
|
||||
prm.put("verbosity", p.linear_solver_verbosity_);
|
||||
prm.put("solver", "mixed-bicgstab"s);
|
||||
prm.put("preconditioner.type", "trivial"s);
|
||||
return prm;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user