Browse Source

Throw errors for unknown solver options.

fe/copyto
Fredrik Ekre 3 years ago
parent
commit
931903f488
  1. 2
      gen/solver_options.jl
  2. 8
      src/solver_options.jl
  3. 20
      test/runtests.jl

2
gen/solver_options.jl

@ -38,6 +38,8 @@ function generate_options(io, structname, prefixes...)
end end
first = false first = false
end end
println(io, " else")
println(io, " throw(ArgumentError(\"unknown option \$k for HYPRE.$structname\"))")
println(io, " end") println(io, " end")
println(io, " end") println(io, " end")
println(io, "end") println(io, "end")

8
src/solver_options.jl

@ -25,6 +25,8 @@ function Internals.set_options(s::BiCGSTAB, kwargs)
@check HYPRE_ParCSRBiCGSTABSetStopCrit(solver, v) @check HYPRE_ParCSRBiCGSTABSetStopCrit(solver, v)
elseif k === :Tol elseif k === :Tol
@check HYPRE_ParCSRBiCGSTABSetTol(solver, v) @check HYPRE_ParCSRBiCGSTABSetTol(solver, v)
else
throw(ArgumentError("unknown option $k for HYPRE.BiCGSTAB"))
end end
end end
end end
@ -280,6 +282,8 @@ function Internals.set_options(s::BoomerAMG, kwargs)
@check HYPRE_BoomerAMGSetTruncFactor(solver, v) @check HYPRE_BoomerAMGSetTruncFactor(solver, v)
elseif k === :Variant elseif k === :Variant
@check HYPRE_BoomerAMGSetVariant(solver, v) @check HYPRE_BoomerAMGSetVariant(solver, v)
else
throw(ArgumentError("unknown option $k for HYPRE.BoomerAMG"))
end end
end end
end end
@ -311,6 +315,8 @@ function Internals.set_options(s::GMRES, kwargs)
@check HYPRE_ParCSRGMRESSetStopCrit(solver, v) @check HYPRE_ParCSRGMRESSetStopCrit(solver, v)
elseif k === :Tol elseif k === :Tol
@check HYPRE_ParCSRGMRESSetTol(solver, v) @check HYPRE_ParCSRGMRESSetTol(solver, v)
else
throw(ArgumentError("unknown option $k for HYPRE.GMRES"))
end end
end end
end end
@ -346,6 +352,8 @@ function Internals.set_options(s::PCG, kwargs)
@check HYPRE_ParCSRPCGSetTol(solver, v) @check HYPRE_ParCSRPCGSetTol(solver, v)
elseif k === :TwoNorm elseif k === :TwoNorm
@check HYPRE_ParCSRPCGSetTwoNorm(solver, v) @check HYPRE_ParCSRPCGSetTwoNorm(solver, v)
else
throw(ArgumentError("unknown option $k for HYPRE.PCG"))
end end
end end
end end

20
test/runtests.jl

@ -276,6 +276,11 @@ end
end end
@testset "BiCGSTAB" begin @testset "BiCGSTAB" begin
# Solver constructor and options
@test_throws(
ArgumentError("unknown option UnknownOption for HYPRE.BiCGSTAB"),
HYPRE.BiCGSTAB(; UnknownOption = 1)
)
# Setup # Setup
A = sprand(100, 100, 0.05); A = A'A + 5I A = sprand(100, 100, 0.05); A = A'A + 5I
b = rand(100) b = rand(100)
@ -310,6 +315,11 @@ end
end end
@testset "BoomerAMG" begin @testset "BoomerAMG" begin
# Solver constructor and options
@test_throws(
ArgumentError("unknown option UnknownOption for HYPRE.BoomerAMG"),
HYPRE.BoomerAMG(; UnknownOption = 1)
)
# Setup # Setup
A = sprand(100, 100, 0.05); A = A'A + 5I A = sprand(100, 100, 0.05); A = A'A + 5I
b = rand(100) b = rand(100)
@ -332,6 +342,11 @@ end
end end
@testset "GMRES" begin @testset "GMRES" begin
# Solver constructor and options
@test_throws(
ArgumentError("unknown option UnknownOption for HYPRE.GMRES"),
HYPRE.GMRES(; UnknownOption = 1)
)
# Setup # Setup
A = sprand(100, 100, 0.05); A = A'A + 5I A = sprand(100, 100, 0.05); A = A'A + 5I
b = rand(100) b = rand(100)
@ -366,6 +381,11 @@ end
end end
@testset "(ParCSR)PCG" begin @testset "(ParCSR)PCG" begin
# Solver constructor and options
@test_throws(
ArgumentError("unknown option UnknownOption for HYPRE.PCG"),
HYPRE.PCG(; UnknownOption = 1)
)
# Setup # Setup
A = sprand(100, 100, 0.05); A = A'A + 5I A = sprand(100, 100, 0.05); A = A'A + 5I
b = rand(100) b = rand(100)

Loading…
Cancel
Save