Skip to content

Commit 5220f98

Browse files
fix tests
1 parent 78c3b68 commit 5220f98

File tree

3 files changed

+9
-25
lines changed

3 files changed

+9
-25
lines changed

docs/src/basics/Preconditioners.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ To define a new preconditioner you define a Julia type which satisfies the
5959
following interface:
6060

6161
- `Base.eltype(::Preconditioner)` (Required only for Krylov.jl)
62-
- `LinearAlgebra.ldiv!(::AbstractVector,::Preconditioner,::AbstractVector)`
62+
- `LinearAlgebra.ldiv!(::AbstractVector,::Preconditioner,::AbstractVector)` and
63+
`LinearAlgebra.ldiv!(::Preconditioner,::AbstractVector)`
6364

6465
## Curated List of Pre-Defined Preconditioners
6566

src/preconditioners.jl

+2
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,6 @@ struct InvPreconditioner{T}
2626
end
2727

2828
Base.eltype(A::InvPreconditioner) = Base.eltype(A.P)
29+
LinearAlgebra.ldiv!(A::InvPreconditioner, x) = mul!(x, A.P, x)
30+
LinearAlgebra.ldiv!(y, A::InvPreconditioner, x) = mul!(y, A.P, x)
2931
LinearAlgebra.mul!(y, A::InvPreconditioner, x) = ldiv!(y, A.P, x)

test/runtests.jl

+5-24
Original file line numberDiff line numberDiff line change
@@ -201,27 +201,9 @@ end
201201
end
202202

203203
@testset "Preconditioners" begin
204-
@testset "Scalar Diagonal Preconditioner" begin
205-
s = rand()
206-
207-
x = rand(n,n)
208-
y = rand(n,n)
209-
210-
Pl, Pr = LinearSolve.DiagonalPreconditioner(s),LinearSolve.InvDiagonalPreconditioner(s)
211-
212-
mul!(y, Pl, x); @test y s * x
213-
mul!(y, Pr, x); @test y s \ x
214-
215-
y .= x; ldiv!(Pl, x); @test x s \ y
216-
y .= x; ldiv!(Pr, x); @test x s * y
217-
218-
ldiv!(y, Pl, x); @test y s \ x
219-
ldiv!(y, Pr, x); @test y s * x
220-
end
221-
222204
@testset "Vector Diagonal Preconditioner" begin
223205
s = rand(n)
224-
Pl, Pr = LinearSolve.DiagonalPreconditioner(s),LinearSolve.InvDiagonalPreconditioner(s)
206+
Pl, Pr = Diagonal(s),LinearSolve.InvPreconditioner(Diagonal(s))
225207

226208
x = rand(n,n)
227209
y = rand(n,n)
@@ -237,21 +219,20 @@ end
237219
end
238220

239221
@testset "ComposePreconditioenr" begin
240-
s1 = rand()
241-
s2 = rand()
222+
s1 = rand(n)
223+
s2 = rand(n)
242224

243225
x = rand(n,n)
244226
y = rand(n,n)
245227

246-
P1 = LinearSolve.DiagonalPreconditioner(s1)
247-
P2 = LinearSolve.DiagonalPreconditioner(s2)
228+
P1 = Diagonal(s1)
229+
P2 = Diagonal(s2)
248230

249231
P = LinearSolve.ComposePreconditioner(P1,P2)
250232

251233
# ComposePreconditioner
252234
ldiv!(y, P, x); @test y ldiv!(P2, ldiv!(P1, x))
253235
y .= x; ldiv!(P, x); @test x ldiv!(P2, ldiv!(P1, y))
254-
255236
end
256237
end
257238

0 commit comments

Comments
 (0)