From 78eb238857d65b0eace4de03f81407e37ce26bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Mon, 19 Oct 2020 14:11:00 +0200 Subject: [PATCH] Plug PETSc's AMG preconditioner --- src/algebra/LinearSolver.cpp | 5 +++++ src/algebra/LinearSolverOptions.hpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/algebra/LinearSolver.cpp b/src/algebra/LinearSolver.cpp index a275cd581..6a6beaa05 100644 --- a/src/algebra/LinearSolver.cpp +++ b/src/algebra/LinearSolver.cpp @@ -88,6 +88,7 @@ struct LinearSolver::Internals { switch (precond) { case LSPrecond::none: + case LSPrecond::amg: case LSPrecond::diagonal: case LSPrecond::incomplete_choleski: case LSPrecond::incomplete_LU: { @@ -244,6 +245,10 @@ struct LinearSolver::Internals if (not direct_solver) { switch (options.precond()) { + case LSPrecond::amg: { + PCSetType(pc, PCGAMG); + break; + } case LSPrecond::diagonal: { PCSetType(pc, PCJACOBI); break; diff --git a/src/algebra/LinearSolverOptions.hpp b/src/algebra/LinearSolverOptions.hpp index bd7538b53..014ee86d6 100644 --- a/src/algebra/LinearSolverOptions.hpp +++ b/src/algebra/LinearSolverOptions.hpp @@ -37,6 +37,7 @@ enum class LSPrecond : int8_t diagonal, incomplete_choleski, incomplete_LU, + amg, // LS__end }; @@ -101,6 +102,9 @@ name(const LSPrecond precond) case LSPrecond::incomplete_LU: { return "ILU"; } + case LSPrecond::amg: { + return "AMG"; + } case LSPrecond::LS__end: { } } -- GitLab