Skip to content

Commit 47aadfe

Browse files
format
1 parent 881cdfb commit 47aadfe

File tree

5 files changed

+70
-37
lines changed

5 files changed

+70
-37
lines changed

docs/make.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ makedocs(sitename = "LinearSolve.jl",
99
authors = "Chris Rackauckas",
1010
modules = [LinearSolve, LinearSolve.SciMLBase],
1111
clean = true, doctest = false,
12-
strict=[
13-
:doctest,
14-
:linkcheck,
15-
:parse_error,
16-
:example_block,
17-
# Other available options are
18-
# :autodocs_block, :cross_references, :docs_block, :eval_block, :example_block, :footnote, :meta_block, :missing_docs, :setup_block
12+
strict = [
13+
:doctest,
14+
:linkcheck,
15+
:parse_error,
16+
:example_block,
17+
# Other available options are
18+
# :autodocs_block, :cross_references, :docs_block, :eval_block, :example_block, :footnote, :meta_block, :missing_docs, :setup_block
1919
],
2020
format = Documenter.HTML(analytics = "UA-90474609-3",
2121
assets = ["assets/favicon.ico"],

src/common.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ function SciMLBase.init(prob::LinearProblem, alg::Union{SciMLLinearSolveAlgorith
107107
fill!(u0, false)
108108
end
109109

110-
cacheval = init_cacheval(alg, A, b, u0, Pl, Pr, maxiters, abstol, reltol, verbose, assumptions)
110+
cacheval = init_cacheval(alg, A, b, u0, Pl, Pr, maxiters, abstol, reltol, verbose,
111+
assumptions)
111112
isfresh = true
112113
Tc = typeof(cacheval)
113114

src/default.jl

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
1-
defaultalg(A::DiffEqArrayOperator, b, assumptions::OperatorAssumptions) = defaultalg(A.A, b, assumptions)
1+
function defaultalg(A::DiffEqArrayOperator, b, assumptions::OperatorAssumptions)
2+
defaultalg(A.A, b, assumptions)
3+
end
24

35
# Ambiguity handling
4-
defaultalg(A::DiffEqArrayOperator, b, assumptions::OperatorAssumptions{nothing}) = defaultalg(A.A, b, assumptions)
6+
function defaultalg(A::DiffEqArrayOperator, b, assumptions::OperatorAssumptions{nothing})
7+
defaultalg(A.A, b, assumptions)
8+
end
59

610
function defaultalg(A, b, ::OperatorAssumptions{nothing})
7-
issquare = size(A,1) == size(A,2)
11+
issquare = size(A, 1) == size(A, 2)
812
defaultalg(A, b, OperatorAssumptions(Val(issquare)))
913
end
1014

11-
defaultalg(A::Tridiagonal, b, ::OperatorAssumptions{true}) = GenericFactorization(; fact_alg = lu!)
12-
defaultalg(A::Tridiagonal, b, ::OperatorAssumptions{false}) = GenericFactorization(; fact_alg = qr!)
13-
defaultalg(A::SymTridiagonal, b, ::OperatorAssumptions{true}) = GenericFactorization(; fact_alg = ldlt!)
15+
function defaultalg(A::Tridiagonal, b, ::OperatorAssumptions{true})
16+
GenericFactorization(; fact_alg = lu!)
17+
end
18+
function defaultalg(A::Tridiagonal, b, ::OperatorAssumptions{false})
19+
GenericFactorization(; fact_alg = qr!)
20+
end
21+
function defaultalg(A::SymTridiagonal, b, ::OperatorAssumptions{true})
22+
GenericFactorization(; fact_alg = ldlt!)
23+
end
1424

1525
function defaultalg(A::SparseMatrixCSC, b, ::OperatorAssumptions{true})
1626
if length(b) <= 10_000
@@ -37,7 +47,8 @@ function defaultalg(A, b::GPUArraysCore.AbstractGPUArray, ::OperatorAssumptions{
3747
end
3848

3949
# Handle ambiguity
40-
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.AbstractGPUArray, ::OperatorAssumptions{true})
50+
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.AbstractGPUArray,
51+
::OperatorAssumptions{true})
4152
if VERSION >= v"1.8-"
4253
LUFactorization()
4354
else
@@ -54,7 +65,8 @@ function defaultalg(A, b::GPUArraysCore.AbstractGPUArray, ::OperatorAssumptions{
5465
end
5566

5667
# Handle ambiguity
57-
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.AbstractGPUArray, ::OperatorAssumptions{false})
68+
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.AbstractGPUArray,
69+
::OperatorAssumptions{false})
5870
QRFactorization()
5971
end
6072

@@ -99,11 +111,14 @@ end
99111
## Catch high level interface
100112

101113
function SciMLBase.solve(cache::LinearCache, alg::Nothing,
102-
args...; assumptions::OperatorAssumptions = OperatorAssumptions(), kwargs...)
114+
args...; assumptions::OperatorAssumptions = OperatorAssumptions(),
115+
kwargs...)
103116
@unpack A, b = cache
104-
SciMLBase.solve(cache, default_alg(A,b,assumptions), args...; kwargs...)
117+
SciMLBase.solve(cache, default_alg(A, b, assumptions), args...; kwargs...)
105118
end
106119

107-
function init_cacheval(alg::Nothing, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
108-
init_cacheval(default_alg(A,b), A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose, assumptions)
120+
function init_cacheval(alg::Nothing, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol,
121+
verbose::Bool, assumptions::OperatorAssumptions)
122+
init_cacheval(default_alg(A, b), A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose,
123+
assumptions)
109124
end

src/factorization.jl

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ function do_factorization(alg::GenericLUFactorization, A, b, u)
6666
end
6767

6868
function init_cacheval(alg::Union{LUFactorization, GenericLUFactorization}, A, b, u, Pl, Pr,
69-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
69+
maxiters::Int, abstol, reltol, verbose::Bool,
70+
assumptions::OperatorAssumptions)
7071
ArrayInterfaceCore.lu_instance(convert(AbstractMatrix, A))
7172
end
7273

@@ -146,19 +147,23 @@ function init_cacheval(alg::GenericFactorization{typeof(lu!)},
146147
ArrayInterfaceCore.lu_instance(A)
147148
end
148149
function init_cacheval(alg::GenericFactorization{typeof(lu)}, A::Diagonal, b, u, Pl, Pr,
149-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
150+
maxiters::Int, abstol, reltol, verbose::Bool,
151+
assumptions::OperatorAssumptions)
150152
Diagonal(inv.(A.diag))
151153
end
152154
function init_cacheval(alg::GenericFactorization{typeof(lu)}, A::Tridiagonal, b, u, Pl, Pr,
153-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
155+
maxiters::Int, abstol, reltol, verbose::Bool,
156+
assumptions::OperatorAssumptions)
154157
ArrayInterfaceCore.lu_instance(A)
155158
end
156159
function init_cacheval(alg::GenericFactorization{typeof(lu!)}, A::Diagonal, b, u, Pl, Pr,
157-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
160+
maxiters::Int, abstol, reltol, verbose::Bool,
161+
assumptions::OperatorAssumptions)
158162
Diagonal(inv.(A.diag))
159163
end
160164
function init_cacheval(alg::GenericFactorization{typeof(lu!)}, A::Tridiagonal, b, u, Pl, Pr,
161-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
165+
maxiters::Int, abstol, reltol, verbose::Bool,
166+
assumptions::OperatorAssumptions)
162167
ArrayInterfaceCore.lu_instance(A)
163168
end
164169

@@ -171,7 +176,8 @@ function init_cacheval(alg::GenericFactorization, A::Tridiagonal, b, u, Pl, Pr,
171176
ArrayInterfaceCore.lu_instance(A)
172177
end
173178
function init_cacheval(alg::GenericFactorization, A::SymTridiagonal{T, V}, b, u, Pl, Pr,
174-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions) where {T, V}
179+
maxiters::Int, abstol, reltol, verbose::Bool,
180+
assumptions::OperatorAssumptions) where {T, V}
175181
LinearAlgebra.LDLt{T, SymTridiagonal{T, V}}(A)
176182
end
177183

@@ -197,7 +203,8 @@ end
197203
# Fallback, tries to make nonsingular and just factorizes
198204
# Try to never use it.
199205
function init_cacheval(alg::Union{QRFactorization, SVDFactorization, GenericFactorization},
200-
A, b, u, Pl, Pr, maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
206+
A, b, u, Pl, Pr, maxiters::Int, abstol, reltol, verbose::Bool,
207+
assumptions::OperatorAssumptions)
201208
newA = copy(convert(AbstractMatrix, A))
202209
if newA isa AbstractSparseMatrix
203210
fill!(nonzeros(newA), true)
@@ -224,7 +231,8 @@ end
224231
function init_cacheval(alg::Union{GenericFactorization,
225232
GenericFactorization{typeof(cholesky)},
226233
GenericFactorization{typeof(cholesky!)}}, A, b, u, Pl, Pr,
227-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
234+
maxiters::Int, abstol, reltol, verbose::Bool,
235+
assumptions::OperatorAssumptions)
228236
newA = copy(convert(AbstractMatrix, A))
229237
do_factorization(alg, newA, b, u)
230238
end
@@ -245,7 +253,8 @@ Base.@kwdef struct UMFPACKFactorization <: AbstractFactorization
245253
reuse_symbolic::Bool = true
246254
end
247255

248-
function init_cacheval(alg::UMFPACKFactorization, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol,
256+
function init_cacheval(alg::UMFPACKFactorization, A, b, u, Pl, Pr, maxiters::Int, abstol,
257+
reltol,
249258
verbose)
250259
A = convert(AbstractMatrix, A)
251260
zerobased = SparseArrays.getcolptr(A)[1] == 0
@@ -280,7 +289,8 @@ Base.@kwdef struct KLUFactorization <: AbstractFactorization
280289
reuse_symbolic::Bool = true
281290
end
282291

283-
function init_cacheval(alg::KLUFactorization, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol,
292+
function init_cacheval(alg::KLUFactorization, A, b, u, Pl, Pr, maxiters::Int, abstol,
293+
reltol,
284294
verbose::Bool, assumptions::OperatorAssumptions)
285295
return KLU.KLUFactorization(convert(AbstractMatrix, A)) # this takes care of the copy internally.
286296
end
@@ -352,7 +362,8 @@ end
352362
struct FastLUFactorization <: AbstractFactorization end
353363

354364
function init_cacheval(::FastLUFactorization, A, b, u, Pl, Pr,
355-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
365+
maxiters::Int, abstol, reltol, verbose::Bool,
366+
assumptions::OperatorAssumptions)
356367
ws = LUWs(A)
357368
return WorkspaceAndFactors(ws, LinearAlgebra.LU(LAPACK.getrf!(ws, A)...))
358369
end
@@ -389,24 +400,28 @@ end
389400

390401
@static if VERSION < v"1.7beta"
391402
function init_cacheval(alg::FastQRFactorization{Val{false}}, A, b, u, Pl, Pr,
392-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
403+
maxiters::Int, abstol, reltol, verbose::Bool,
404+
assumptions::OperatorAssumptions)
393405
ws = QRWYWs(A; blocksize = alg.blocksize)
394406
return WorkspaceAndFactors(ws, LinearAlgebra.QRCompactWY(LAPACK.geqrt!(ws, A)...))
395407
end
396408

397409
function init_cacheval(::FastQRFactorization{Val{true}}, A, b, u, Pl, Pr,
398-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
410+
maxiters::Int, abstol, reltol, verbose::Bool,
411+
assumptions::OperatorAssumptions)
399412
ws = QRpWs(A)
400413
return WorkspaceAndFactors(ws, LinearAlgebra.QRPivoted(LAPACK.geqp3!(ws, A)...))
401414
end
402415
else
403416
function init_cacheval(alg::FastQRFactorization{NoPivot}, A, b, u, Pl, Pr,
404-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
417+
maxiters::Int, abstol, reltol, verbose::Bool,
418+
assumptions::OperatorAssumptions)
405419
ws = QRWYWs(A; blocksize = alg.blocksize)
406420
return WorkspaceAndFactors(ws, LinearAlgebra.QRCompactWY(LAPACK.geqrt!(ws, A)...))
407421
end
408422
function init_cacheval(::FastQRFactorization{ColumnNorm}, A, b, u, Pl, Pr,
409-
maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
423+
maxiters::Int, abstol, reltol, verbose::Bool,
424+
assumptions::OperatorAssumptions)
410425
ws = QRpWs(A)
411426
return WorkspaceAndFactors(ws, LinearAlgebra.QRPivoted(LAPACK.geqp3!(ws, A)...))
412427
end

src/iterative_wrappers.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ function get_KrylovJL_solver(KrylovAlg)
9292
return KS
9393
end
9494

95-
function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol, verbose::Bool, assumptions::OperatorAssumptions)
95+
function init_cacheval(alg::KrylovJL, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol,
96+
verbose::Bool, assumptions::OperatorAssumptions)
9697
KS = get_KrylovJL_solver(alg.KrylovAlg)
9798

9899
memory = (alg.gmres_restart == 0) ? min(20, size(A, 1)) : alg.gmres_restart
@@ -203,7 +204,8 @@ function IterativeSolversJL_MINRES(args...; kwargs...)
203204
kwargs...)
204205
end
205206

206-
function init_cacheval(alg::IterativeSolversJL, A, b, u, Pl, Pr, maxiters::Int, abstol, reltol,
207+
function init_cacheval(alg::IterativeSolversJL, A, b, u, Pl, Pr, maxiters::Int, abstol,
208+
reltol,
207209
verbose::Bool, assumptions::OperatorAssumptions)
208210
restart = (alg.gmres_restart == 0) ? min(20, size(A, 1)) : alg.gmres_restart
209211

0 commit comments

Comments
 (0)