Skip to content

Commit 87f365d

Browse files
implement aliasing options
1 parent 550dbdc commit 87f365d

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
1616
ArrayInterface = "3"
1717
IterativeSolvers = "0.9"
1818
Reexport = "1"
19-
SciMLBase = "1"
19+
SciMLBase = "1.18.6"
2020
Setfield = "0.7"
2121
UnPack = "1"
2222
julia = "1"

src/LinearSolve.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ function set_cacheval(cache::LinearCache,alg)
4545
return cache
4646
end
4747

48-
function SciMLBase.init(prob::LinearProblem, alg; kwargs...)
48+
function SciMLBase.init(prob::LinearProblem, alg;
49+
alias_A = false, alias_b = false,
50+
kwargs...)
4951
@unpack A, b, p = prob
5052
if alg isa LUFactorization
5153
fact = lu_instance(A)
@@ -56,6 +58,10 @@ function SciMLBase.init(prob::LinearProblem, alg; kwargs...)
5658
end
5759
Pr = nothing
5860
Pl = nothing
61+
62+
A = alias_A ? A : copy(A)
63+
b = alias_b ? b : copy(b)
64+
5965
cache = LinearCache{typeof(A),typeof(b),typeof(p),typeof(alg),Tfact,typeof(Pr),typeof(Pl)}(
6066
A, b, p, alg, fact, true, Pr, Pl
6167
)
@@ -80,7 +86,7 @@ struct QRFactorization{P} <: AbstractLinearAlgorithm
8086
pivot::P
8187
blocksize::Int
8288
end
83-
QRFactorization() = QRFactorization(Val(false), 16)
89+
QRFactorization() = QRFactorization(NoPivot(), 16)
8490

8591
function SciMLBase.solve(cache::LinearCache, alg::QRFactorization)
8692
cache.A isa Union{AbstractMatrix, AbstractDiffEqOperator} || error("QR is not defined for $(typeof(prob.A))")

0 commit comments

Comments
 (0)