Skip to content

Commit 0ffb9eb

Browse files
Specialize UMFPack initialization
1 parent d443210 commit 0ffb9eb

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "LinearSolve"
22
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
33
authors = ["SciML"]
4-
version = "0.3.0"
4+
version = "0.3.1"
55

66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"

src/factorization.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,16 @@ Base.@kwdef struct UMFPACKFactorization <: AbstractFactorization
4545
reuse_symbolic::Bool = true
4646
end
4747

48+
function init_cacheval(alg::UMFPACKFactorization, A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
49+
zerobased = SparseArrays.getcolptr(A)[1] == 0
50+
res = SuiteSparse.UMFPACK.UmfpackLU(C_NULL, C_NULL, size(A, 1), size(A, 2),
51+
zerobased ? copy(SparseArrays.getcolptr(A)) : SuiteSparse.decrement(SparseArrays.getcolptr(A)),
52+
zerobased ? copy(rowvals(A)) : SuiteSparse.decrement(rowvals(A)),
53+
copy(nonzeros(A)), 0)
54+
finalizer(SuiteSparse.UMFPACK.umfpack_free_symbolic, res)
55+
res
56+
end
57+
4858
function do_factorization(::UMFPACKFactorization, A, b, u)
4959
if A isa AbstractDiffEqOperator
5060
A = A.A

0 commit comments

Comments
 (0)