11module LinearSolveCliqueTreesExt
22
3- using CliqueTrees: EliminationAlgorithm, SupernodeType, DEFAULT_ELIMINATION_ALGORITHM,
4- DEFAULT_SUPERNODE_TYPE, symbolic, cholinit, lininit, cholesky!, linsolve!
3+ using CliqueTrees: symbolic, cholinit, lininit, cholesky!, linsolve!
54using LinearSolve
65using SparseArrays
76
8- function LinearSolve. CliqueTreesFactorization (;
9- alg:: A = DEFAULT_ELIMINATION_ALGORITHM,
10- snd:: S = DEFAULT_SUPERNODE_TYPE,
11- reuse_symbolic:: Bool = true ,
12- ) where {A <: EliminationAlgorithm , S <: SupernodeType }
13- return CliqueTreesFactorization {A, S} (alg, snd, reuse_symbolic)
7+ function _symbolic (A:: AbstractMatrix , alg:: CliqueTreesFactorization )
8+ return symbolic (A; alg= alg. alg, snd= alg. snd)
9+ end
10+
11+ function _symbolic (A:: AbstractMatrix , alg:: CliqueTreesFactorization{Nothing} )
12+ return symbolic (A; snd= alg. snd)
13+ end
14+
15+ function _symbolic (A:: AbstractMatrix , alg:: CliqueTreesFactorization{<:Any, Nothing} )
16+ return symbolic (A; alg= alg. alg)
17+ end
18+
19+ function _symbolic (A:: AbstractMatrix , alg:: CliqueTreesFactorization{Nothing, Nothing} )
20+ return symbolic (A)
1421end
1522
1623function LinearSolve. init_cacheval (
1724 alg:: CliqueTreesFactorization , A:: AbstractMatrix , b, u, Pl, Pr, maxiters:: Int , abstol,
1825 reltol, verbose:: Bool , assumptions:: OperatorAssumptions )
19- symbfact = symbolic (A; alg = alg . alg, snd = alg. snd )
26+ symbfact = _symbolic (A, alg)
2027 cholfact, cholwork = cholinit (A, symbfact)
2128 linwork = lininit (1 , cholfact)
2229 return (cholfact, cholwork, linwork)
@@ -29,7 +36,7 @@ function SciMLBase.solve!(cache::LinearSolve.LinearCache, alg::CliqueTreesFactor
2936
3037 if cache. isfresh
3138 if isnothing (cache. cacheval) || ! alg. reuse_symbolic
32- symbfact = symbolic (A; alg = alg . alg, snd = alg. snd )
39+ symbfact = _symbolic (A, alg)
3340 cholfact, cholwork = cholinit (A, symbfact)
3441 linwork = lininit (1 , cholfact)
3542 cache. cacheval = (cholfact, cholwork, linwork)
0 commit comments