|
1 | | -""" |
2 | | -$(TYPEDEF) |
3 | | -
|
4 | | -Default Julia LU Factorization based on umfpack. |
5 | | -""" |
6 | | -mutable struct ExtendableSparseCholmodCholesky{Tv, Ti} <: AbstractExtendableSparseLU{Tv,Ti} |
7 | | - A::ExtendableSparseMatrix{Tv,Ti} |
8 | | - A64 |
9 | | - fact::SuiteSparse.CHOLMOD.Factor{Tv} |
| 1 | +mutable struct CholeskyFactorization{Tv, Ti} <: AbstractLUFactorization{Tv,Ti} |
| 2 | + A::Union{ExtendableSparseMatrix{Tv,Ti},Nothing} |
| 3 | + fact::Union{SuiteSparse.CHOLMOD.Factor{Tv},Nothing} |
10 | 4 | phash::UInt64 |
| 5 | + A64 |
11 | 6 | end |
12 | 7 |
|
13 | 8 | """ |
14 | | -``` |
15 | | -ExtendableSparseCholmodCholesky(A) |
16 | | -``` |
| 9 | +CholeskyFactorization() |
| 10 | +CholeskyFactorization(matrix) |
| 11 | +
|
| 12 | +Default Cholesky factorization via cholmod. |
17 | 13 | """ |
18 | | -function ExtendableSparseCholmodCholesky(A::ExtendableSparseMatrix{Tv,Ti}) where {Tv,Ti} |
19 | | - flush!(A) |
20 | | - A64=Symmetric(SparseMatrixCSC{Float64,Int64}(A.cscmatrix)) |
21 | | - ExtendableSparseCholmodCholesky(A,A64,cholesky(A64),A.phash) |
22 | | -end |
| 14 | +CholeskyFactorization()=CholeskyFactorization{Float64,Int64}(nothing,nothing,0,nothing) |
23 | 15 |
|
24 | | -function update!(cholfact::ExtendableSparseCholmodCholesky) |
25 | | - flush!(cholfact.A) |
26 | | - if cholfact.A.phash!=cholfact.phash |
27 | | - cholfact.A64=Symmetric{SparseMatrixCSC{Float64,Int64}(A.cscmatrix)} |
28 | | - cholfact.fact=cholesky(cholfact.fact,cholfact.A64) |
29 | | - cholfact.phash=cholfact.A.phash |
| 16 | + |
| 17 | +function update!(cholfact::CholeskyFactorization) |
| 18 | + A=cholfact.A |
| 19 | + flush!(A) |
| 20 | + if A.phash!=cholfact.phash |
| 21 | + cholfact.A64=Symmetric(SparseMatrixCSC{Float64,Int64}(A.cscmatrix)) |
| 22 | + cholfact.fact=cholesky(cholfact.A64) |
| 23 | + cholfact.phash=A.phash |
30 | 24 | else |
31 | | - cholfact.A64.data.nzval.=cholfact.A.cscmatrix.nzval |
| 25 | + cholfact.A64.data.nzval.=A.cscmatrix.nzval |
32 | 26 | cholfact.fact=cholesky!(cholfact.fact,cholfact.A64) |
33 | 27 | end |
34 | 28 | cholfact |
35 | 29 | end |
36 | 30 |
|
37 | 31 |
|
38 | | -LinearAlgebra.ldiv!(fact::ExtendableSparseCholmodCholesky, v)=fact.fact\v |
39 | | -LinearAlgebra.ldiv!(u,fact::ExtendableSparseCholmodCholesky, v)=u.=fact.fact\v |
| 32 | +LinearAlgebra.ldiv!(fact::CholeskyFactorization, v)=fact.fact\v |
| 33 | +LinearAlgebra.ldiv!(u,fact::CholeskyFactorization, v)=u.=fact.fact\v |
40 | 34 |
|
0 commit comments