Skip to content

Commit 3d12bd8

Browse files
add GenericLUFactorizations
1 parent 991a1da commit 3d12bd8

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/LinearSolve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const IS_OPENBLAS = Ref(true)
4545
isopenblas() = IS_OPENBLAS[]
4646

4747
export LUFactorization, SVDFactorization, QRFactorization, GenericFactorization,
48-
RFLUFactorization, UMFPACKFactorization, KLUFactorization
48+
GenericLUFactorization, RFLUFactorization, UMFPACKFactorization, KLUFactorization
4949
export KrylovJL, KrylovJL_CG, KrylovJL_GMRES, KrylovJL_BICGSTAB, KrylovJL_MINRES,
5050
IterativeSolversJL, IterativeSolversJL_CG, IterativeSolversJL_GMRES,
5151
IterativeSolversJL_BICGSTAB, IterativeSolversJL_MINRES

src/factorization.jl

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ struct LUFactorization{P} <: AbstractFactorization
2525
pivot::P
2626
end
2727

28+
struct GenericLUFactorization{P} <: AbstractFactorization
29+
pivot::P
30+
end
31+
2832
function LUFactorization()
2933
pivot = @static if VERSION < v"1.7beta"
3034
Val(true)
@@ -34,6 +38,15 @@ function LUFactorization()
3438
LUFactorization(pivot)
3539
end
3640

41+
function GenericLUFactorization()
42+
pivot = @static if VERSION < v"1.7beta"
43+
Val(true)
44+
else
45+
RowMaximum()
46+
end
47+
GenericLUFactorization(pivot)
48+
end
49+
3750
function do_factorization(alg::LUFactorization, A, b, u)
3851
A = convert(AbstractMatrix,A)
3952
if A isa SparseMatrixCSC
@@ -44,7 +57,13 @@ function do_factorization(alg::LUFactorization, A, b, u)
4457
return fact
4558
end
4659

47-
init_cacheval(alg::LUFactorization, A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface.lu_instance(convert(AbstractMatrix,A))
60+
function do_factorization(alg::GenericLUFactorization, A, b, u)
61+
A = convert(AbstractMatrix,A)
62+
fact = LinearAlgebra.generic_lufact!(A, alg.pivot)
63+
return fact
64+
end
65+
66+
init_cacheval(alg::Union{LUFactorization,GenericLUFactorization}, A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) = ArrayInterface.lu_instance(convert(AbstractMatrix,A))
4867

4968
# This could be a GenericFactorization perhaps?
5069
Base.@kwdef struct UMFPACKFactorization <: AbstractFactorization

0 commit comments

Comments
 (0)