Skip to content

Commit 54a8099

Browse files
Better handle int32
1 parent 6ec5388 commit 54a8099

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

ext/LinearSolveSparseArraysExt.jl

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,21 @@ function LinearSolve.init_cacheval(
8080
end
8181

8282
function LinearSolve.init_cacheval(
83-
alg::Union{LUFactorization, GenericLUFactorization}, A::AbstractSparseArray{Float64, Int}, b, u,
83+
alg::Union{LUFactorization, GenericLUFactorization}, A::AbstractSparseArray{Float64, Int64}, b, u,
8484
Pl, Pr,
8585
maxiters::Int, abstol, reltol,
8686
verbose::Bool, assumptions::OperatorAssumptions)
8787
PREALLOCATED_UMFPACK
8888
end
8989

90+
function LinearSolve.init_cacheval(
91+
alg::Union{LUFactorization, GenericLUFactorization}, A::AbstractSparseArray{Float64, Int32}, b, u,
92+
Pl, Pr,
93+
maxiters::Int, abstol, reltol,
94+
verbose::Bool, assumptions::OperatorAssumptions)
95+
SparseArrays.UMFPACK.UmfpackLU(SparseMatrixCSC{Float64, Int32}(0, 0, [Int32(1)], Int32[], Float64[]))
96+
end
97+
9098
function LinearSolve.init_cacheval(
9199
alg::UMFPACKFactorization, A::AbstractSparseArray{Float64, Int}, b, u, Pl, Pr,
92100
maxiters::Int, abstol,
@@ -143,13 +151,21 @@ function LinearSolve.init_cacheval(
143151
end
144152

145153
function LinearSolve.init_cacheval(
146-
alg::KLUFactorization, A::AbstractSparseArray{Float64, Int}, b, u, Pl, Pr,
154+
alg::KLUFactorization, A::AbstractSparseArray{Float64, Int64}, b, u, Pl, Pr,
147155
maxiters::Int, abstol,
148156
reltol,
149157
verbose::Bool, assumptions::OperatorAssumptions)
150158
PREALLOCATED_KLU
151159
end
152160

161+
function LinearSolve.init_cacheval(
162+
alg::KLUFactorization, A::AbstractSparseArray{Float64, Int32}, b, u, Pl, Pr,
163+
maxiters::Int, abstol,
164+
reltol,
165+
verbose::Bool, assumptions::OperatorAssumptions)
166+
KLU.KLUFactorization(SparseMatrixCSC{Float64, Int32}(0, 0, [Int32(1)], Int32[], Float64[]))
167+
end
168+
153169
# TODO: guard this against errors
154170
function SciMLBase.solve!(cache::LinearSolve.LinearCache, alg::KLUFactorization; kwargs...)
155171
A = cache.A
@@ -268,6 +284,12 @@ function LinearSolve.init_cacheval(alg::QRFactorization, A::SparseMatrixCSC{Floa
268284
LinearSolve.ArrayInterface.qr_instance(convert(AbstractMatrix, A), alg.pivot)
269285
end
270286

287+
function LinearSolve.init_cacheval(alg::QRFactorization, A::SparseMatrixCSC{Float64, Int32}, b, u, Pl, Pr,
288+
maxiters::Int, abstol, reltol, verbose::Bool,
289+
assumptions::OperatorAssumptions)
290+
LinearSolve.ArrayInterface.qr_instance(convert(AbstractMatrix, A), alg.pivot)
291+
end
292+
271293
function LinearSolve.init_cacheval(
272294
alg::QRFactorization, A::Symmetric{<:Number, <:SparseMatrixCSC}, b, u, Pl, Pr,
273295
maxiters::Int, abstol, reltol, verbose::Bool,

0 commit comments

Comments
 (0)