@@ -4,7 +4,7 @@ function SciMLBase.solve(cache::LinearCache, alg::AbstractFactorization)
44 cache = set_cacheval (cache, fact)
55 end
66
7- ldiv! (cache. u,cache. cacheval, cache. b)
7+ ldiv! (cache. u, cache. cacheval, cache. b)
88end
99
1010# # LUFactorization
2525function init_cacheval (alg:: LUFactorization , A, b, u)
2626 A isa Union{AbstractMatrix,AbstractDiffEqOperator} ||
2727 error (" LU is not defined for $(typeof (A)) " )
28+
29+ if A isa AbstractDiffEqOperator
30+ A = A. A
31+ end
2832 fact = lu! (A, alg. pivot)
2933 return fact
3034end
@@ -49,7 +53,10 @@ function init_cacheval(alg::QRFactorization, A, b, u)
4953 A isa Union{AbstractMatrix,AbstractDiffEqOperator} ||
5054 error (" QR is not defined for $(typeof (A)) " )
5155
52- fact = qr! (A. A, alg. pivot; blocksize = alg. blocksize)
56+ if A isa AbstractDiffEqOperator
57+ A = A. A
58+ end
59+ fact = qr! (A, alg. pivot; blocksize = alg. blocksize)
5360 return fact
5461end
5562
@@ -66,6 +73,10 @@ function init_cacheval(alg::SVDFactorization, A, b, u)
6673 A isa Union{AbstractMatrix,AbstractDiffEqOperator} ||
6774 error (" SVD is not defined for $(typeof (A)) " )
6875
76+ if A isa AbstractDiffEqOperator
77+ A = A. A
78+ end
79+
6980 fact = svd! (A; full = alg. full, alg = alg. alg)
7081 return fact
7182end
@@ -83,6 +94,9 @@ function init_cacheval(alg::GenericFactorization, A, b, u)
8394 A isa Union{AbstractMatrix,AbstractDiffEqOperator} ||
8495 error (" GenericFactorization is not defined for $(typeof (A)) " )
8596
97+ if A isa AbstractDiffEqOperator
98+ A = A. A
99+ end
86100 fact = alg. fact_alg (A)
87101 return fact
88102end
0 commit comments