From 931903f48898a842f7a5910b8346149e213dd23a Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Sun, 24 Jul 2022 15:15:46 +0200 Subject: [PATCH] Throw errors for unknown solver options. --- gen/solver_options.jl | 2 ++ src/solver_options.jl | 8 ++++++++ test/runtests.jl | 20 ++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/gen/solver_options.jl b/gen/solver_options.jl index 11c8194..b8a01ba 100644 --- a/gen/solver_options.jl +++ b/gen/solver_options.jl @@ -38,6 +38,8 @@ function generate_options(io, structname, prefixes...) end first = false end + println(io, " else") + println(io, " throw(ArgumentError(\"unknown option \$k for HYPRE.$structname\"))") println(io, " end") println(io, " end") println(io, "end") diff --git a/src/solver_options.jl b/src/solver_options.jl index 0874ce1..11248ed 100644 --- a/src/solver_options.jl +++ b/src/solver_options.jl @@ -25,6 +25,8 @@ function Internals.set_options(s::BiCGSTAB, kwargs) @check HYPRE_ParCSRBiCGSTABSetStopCrit(solver, v) elseif k === :Tol @check HYPRE_ParCSRBiCGSTABSetTol(solver, v) + else + throw(ArgumentError("unknown option $k for HYPRE.BiCGSTAB")) end end end @@ -280,6 +282,8 @@ function Internals.set_options(s::BoomerAMG, kwargs) @check HYPRE_BoomerAMGSetTruncFactor(solver, v) elseif k === :Variant @check HYPRE_BoomerAMGSetVariant(solver, v) + else + throw(ArgumentError("unknown option $k for HYPRE.BoomerAMG")) end end end @@ -311,6 +315,8 @@ function Internals.set_options(s::GMRES, kwargs) @check HYPRE_ParCSRGMRESSetStopCrit(solver, v) elseif k === :Tol @check HYPRE_ParCSRGMRESSetTol(solver, v) + else + throw(ArgumentError("unknown option $k for HYPRE.GMRES")) end end end @@ -346,6 +352,8 @@ function Internals.set_options(s::PCG, kwargs) @check HYPRE_ParCSRPCGSetTol(solver, v) elseif k === :TwoNorm @check HYPRE_ParCSRPCGSetTwoNorm(solver, v) + else + throw(ArgumentError("unknown option $k for HYPRE.PCG")) end end end diff --git a/test/runtests.jl b/test/runtests.jl index 199033c..6a842b1 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -276,6 +276,11 @@ end end @testset "BiCGSTAB" begin + # Solver constructor and options + @test_throws( + ArgumentError("unknown option UnknownOption for HYPRE.BiCGSTAB"), + HYPRE.BiCGSTAB(; UnknownOption = 1) + ) # Setup A = sprand(100, 100, 0.05); A = A'A + 5I b = rand(100) @@ -310,6 +315,11 @@ end end @testset "BoomerAMG" begin + # Solver constructor and options + @test_throws( + ArgumentError("unknown option UnknownOption for HYPRE.BoomerAMG"), + HYPRE.BoomerAMG(; UnknownOption = 1) + ) # Setup A = sprand(100, 100, 0.05); A = A'A + 5I b = rand(100) @@ -332,6 +342,11 @@ end end @testset "GMRES" begin + # Solver constructor and options + @test_throws( + ArgumentError("unknown option UnknownOption for HYPRE.GMRES"), + HYPRE.GMRES(; UnknownOption = 1) + ) # Setup A = sprand(100, 100, 0.05); A = A'A + 5I b = rand(100) @@ -366,6 +381,11 @@ end end @testset "(ParCSR)PCG" begin + # Solver constructor and options + @test_throws( + ArgumentError("unknown option UnknownOption for HYPRE.PCG"), + HYPRE.PCG(; UnknownOption = 1) + ) # Setup A = sprand(100, 100, 0.05); A = A'A + 5I b = rand(100)