From 62a3fcadc2c2f908d0e15c1f0ef53aec98cf2dd1 Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Wed, 29 Jan 2020 18:44:28 +0100 Subject: [PATCH] [istl][solver] Use subgroup Preconditioner Backwards-compatible implementation. Legacy parameter names e.g. PreconditionerIterations will still work but subgroup params overwrite them, e.g. Preconditioner.Iterations. --- dumux/linear/istlsolverfactorybackend.hh | 52 +++++++++++-------- .../shallowwater/dambreak/params.input | 8 +-- .../richards/implicit/lens/params.input | 4 +- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/dumux/linear/istlsolverfactorybackend.hh b/dumux/linear/istlsolverfactorybackend.hh index dae993adb1..65cca90660 100644 --- a/dumux/linear/istlsolverfactorybackend.hh +++ b/dumux/linear/istlsolverfactorybackend.hh @@ -209,32 +209,40 @@ IstlSolverFactoryBackend<Matrix, Vector, Geometry>::dumuxToIstlSolverParams = {"MaxOrthogonalizationVectors", "mmax"}, // preconditioner params + // we expect parameters in the subgroup "Preconditioner" + // there are some legacy param names that are still supported + // subgroup parameters overwrite legacy parameters {"PreconditionerVerbosity", "preconditioner.verbosity"}, + {"Preconditioner.Verbosity", "preconditioner.verbosity"}, {"PreconditionerType", "preconditioner.type"}, + {"Preconditioner.Type", "preconditioner.type"}, {"PreconditionerIterations", "preconditioner.iterations"}, + {"Preconditioner.Iterations", "preconditioner.iterations"}, {"PreconditionerRelaxation", "preconditioner.relaxation"}, - {"ILUOrder", "preconditioner.n"}, - {"ILUResort", "preconditioner.resort"}, - {"AmgSmootherRelaxation", "preconditioner.smootherRelaxation"}, - {"AmgSmootherIterations", "preconditioner.smootherIterations"}, - {"AmgMaxLevel", "preconditioner.maxLevel"}, - {"AmgCoarsenTarget", "preconditioner.coarsenTarget"}, - {"MinCoarseningRate", "preconditioner.minCoarseningRate"}, - {"AmgProlongationDampingFactor", "preconditioner.prolongationDampingFactor"}, - {"AmgAlpha", "preconditioner.alpha"}, - {"AmgBeta", "preconditioner.beta"}, - {"AmgAdditive", "preconditioner.additive"}, - {"AmgGamma", "preconditioner.gamma"}, - {"AmgPreSmoothingSteps", "preconditioner.preSteps"}, - {"AmgPostSmoothingSteps", "preconditioner.postSteps"}, - {"AmgCriterionSymmetric", "preconditioner.criterionSymmetric"}, - {"AmgStrengthMeasure", "preconditioner.strengthMeasure"}, - {"AmgDiagonalRowIndex", "preconditioner.diagonalRowIndex"}, - {"DefaultAggregationSizeMode", "preconditioner.defaultAggregationSizeMode"}, - {"defaultAggregationDimension", "preconditioner.defaultAggregationDimension"}, - {"MaxAggregateDistance", "preconditioner.maxAggregateDistance"}, - {"MinAggregateSize", "preconditioner.minAggregateSize"}, - {"MaxAggregateSize", "preconditioner.maxAggregateSize"} + {"Preconditioner.Relaxation", "preconditioner.relaxation"}, + {"Preconditioner.ILUOrder", "preconditioner.n"}, + {"Preconditioner.ILUResort", "preconditioner.resort"}, + {"Preconditioner.AmgSmootherRelaxation", "preconditioner.smootherRelaxation"}, + {"Preconditioner.AmgSmootherIterations", "preconditioner.smootherIterations"}, + {"Preconditioner.AmgMaxLevel", "preconditioner.maxLevel"}, + {"Preconditioner.AmgCoarsenTarget", "preconditioner.coarsenTarget"}, + {"Preconditioner.AmgMinCoarseningRate", "preconditioner.minCoarseningRate"}, + {"Preconditioner.AmgAccumulationMode", "preconditioner.accumulationMode"}, + {"Preconditioner.AmgProlongationDampingFactor", "preconditioner.prolongationDampingFactor"}, + {"Preconditioner.AmgAlpha", "preconditioner.alpha"}, + {"Preconditioner.AmgBeta", "preconditioner.beta"}, + {"Preconditioner.AmgAdditive", "preconditioner.additive"}, + {"Preconditioner.AmgGamma", "preconditioner.gamma"}, + {"Preconditioner.AmgPreSmoothingSteps", "preconditioner.preSteps"}, + {"Preconditioner.AmgPostSmoothingSteps", "preconditioner.postSteps"}, + {"Preconditioner.AmgCriterionSymmetric", "preconditioner.criterionSymmetric"}, + {"Preconditioner.AmgStrengthMeasure", "preconditioner.strengthMeasure"}, + {"Preconditioner.AmgDiagonalRowIndex", "preconditioner.diagonalRowIndex"}, + {"Preconditioner.AmgDefaultAggregationSizeMode", "preconditioner.defaultAggregationSizeMode"}, + {"Preconditioner.AmgDefaultAggregationDimension", "preconditioner.defaultAggregationDimension"}, + {"Preconditioner.AmgMaxAggregateDistance", "preconditioner.maxAggregateDistance"}, + {"Preconditioner.AmgMinAggregateSize", "preconditioner.minAggregateSize"}, + {"Preconditioner.AmgMaxAggregateSize", "preconditioner.maxAggregateSize"} }; } // end namespace Dumux diff --git a/test/freeflow/shallowwater/dambreak/params.input b/test/freeflow/shallowwater/dambreak/params.input index e6ccb7fe55..03b5a00414 100644 --- a/test/freeflow/shallowwater/dambreak/params.input +++ b/test/freeflow/shallowwater/dambreak/params.input @@ -19,9 +19,11 @@ EnableDynamicOutput = false [LinearSolver] Type = cgsolver MaxIterations = 80 -PreconditionerType = amg -PreconditionerVerbosity = 0 + +[LinearSolver.Preconditioner] +Type = amg +Verbosity = 0 AmgMaxLevel = 2 AmgPreSmoothingSteps = 1 AmgPostSmoothingSteps = 1 -CriterionSymmetric = true +AmgCriterionSymmetric = true diff --git a/test/porousmediumflow/richards/implicit/lens/params.input b/test/porousmediumflow/richards/implicit/lens/params.input index f247d2d9cf..72e9e5fedd 100644 --- a/test/porousmediumflow/richards/implicit/lens/params.input +++ b/test/porousmediumflow/richards/implicit/lens/params.input @@ -16,6 +16,8 @@ EnableChop = true # chop for better convergence [LinearSolver] Type = bicgstabsolver -PreconditionerType = amg + +[LinearSolver.Preconditioner] +Type = amg AmgMaxLevel = 2 AmgAccumulationMode = atOnce -- GitLab