Browse Source

Fix test

pull/35/head
termi-official 9 months ago
parent
commit
f662b8fd04
  1. 1
      src/HYPRE.jl
  2. 16
      src/precs.jl
  3. 8
      test/runtests.jl

1
src/HYPRE.jl

@ -3,6 +3,7 @@
module HYPRE module HYPRE
using MPI: MPI using MPI: MPI
import LinearAlgebra
export HYPREMatrix, HYPREVector export HYPREMatrix, HYPREVector

16
src/precs.jl

@ -1,5 +1,3 @@
import LinearAlgebra
struct BoomerAMGPrecWrapper{MatType} struct BoomerAMGPrecWrapper{MatType}
P::HYPRE.BoomerAMG P::HYPRE.BoomerAMG
A::MatType A::MatType
@ -19,17 +17,13 @@ struct BoomerAMGPrecBuilder{SFun, Tk}
end end
# Syntactic sugar wth some defaults # Syntactic sugar wth some defaults
function BoomerAMGPrecBuilder(settings_fun! = (amg, A, p) -> nothing; MaxIter = 1, Tol = 0.0, kwargs...) function BoomerAMGPrecBuilder(settings_fun! = (amg, A, p) -> nothing; kwargs...)
return construct_boomeramg_prec_builder(settings_fun!; MaxIter, Tol, kwargs)
end
# Helper to package kwargs
function construct_boomeramg_prec_builder(settings_fun!; kwargs...)
return BoomerAMGPrecBuilder(settings_fun!, kwargs) return BoomerAMGPrecBuilder(settings_fun!, kwargs)
end end
function (b::BoomerAMGPrecBuilder)(A, p) function (b::BoomerAMGPrecBuilder)(A, p)
amg = HYPRE.BoomerAMG(; b.kwargs) amg = HYPRE.BoomerAMG(; b.kwargs...)
settings_fun!(amg, A, p) Internals.set_precond_defaults(amg)
return (BoomerAMGPrecWrapper(amg, A), I) b.settings_fun!(amg, A, p)
return (BoomerAMGPrecWrapper(amg, A), LinearAlgebra.I)
end end

8
test/runtests.jl

@ -28,9 +28,9 @@ end
x = zeros(100) x = zeros(100)
# Solve # Solve
tol = 1e-9 tol = 1e-9
function set_debug_printlevel(amg, A, p) # function set_debug_printlevel(amg, A, p)
HYPRE.HYPRE_BoomerAMGSetPrintLevel(amg, 3) # HYPRE.HYPRE_BoomerAMGSetPrintLevel(amg, 3)
end # end
bamg = HYPRE.BoomerAMGPrecBuilder( bamg = HYPRE.BoomerAMGPrecBuilder(
(amg, A, p) -> nothing; (amg, A, p) -> nothing;
MaxIter = 1, MaxIter = 1,
@ -39,7 +39,7 @@ end
prob = LinearProblem(A, b) prob = LinearProblem(A, b)
solver = KrylovJL_CG(precs = bamg) solver = KrylovJL_CG(precs = bamg)
x = solve(prob, solver, atol=1.0e-14) x = solve(prob, solver, atol=1.0e-14)
@test x A \ b atol=tol @test x A \ b atol=tol
end end

Loading…
Cancel
Save