11abstract type AbstractPardisoLU{Tv,Ti} <: AbstractLUFactorization{Tv,Ti} end
22
3-
43mutable struct PardisoLU{Tv, Ti} <: AbstractPardisoLU{Tv,Ti}
54 A:: Union{ExtendableSparseMatrix{Tv,Ti},Nothing}
65 ps:: Pardiso.PardisoSolver
76 phash:: UInt64
87end
9- PardisoLU {Tv,Ti} () where {Tv,Ti} = PardisoLU {Tv,Ti} (nothing ,Pardiso. PardisoSolver (),0 )
108
9+ function PardisoLU {Tv,Ti} () where {Tv,Ti}
10+ fact= PardisoLU {Tv,Ti} (nothing ,Pardiso. PardisoSolver (),0 )
11+ set_default_matrixtype! (fact)
12+ end
1113
1214"""
1315```
@@ -27,15 +29,22 @@ plu=PardisoLU()
2729Pardiso.set_iparm!(plu.ps,5,13.0)
2830```
2931"""
30- PardisoLU (;valuetype:: Type = Float64, indextype:: Type = Int64)= PardisoLU {valuetype,indextype} (nothing ,Pardiso. PardisoSolver (),0 )
32+ PardisoLU (;valuetype:: Type = Float64, indextype:: Type = Int64)= PardisoLU {valuetype,indextype} ()
33+
3134
3235
36+ # ############################################################################################
3337mutable struct MKLPardisoLU{Tv, Ti} <: AbstractPardisoLU{Tv,Ti}
3438 A:: Union{ExtendableSparseMatrix{Tv,Ti},Nothing}
3539 ps:: Pardiso.MKLPardisoSolver
3640 phash:: UInt64
3741end
3842
43+ function MKLPardisoLU {Tv,Ti} () where {Tv,Ti}
44+ fact= MKLPardisoLU {Tv,Ti} (nothing ,Pardiso. MKLPardisoSolver (),0 )
45+ set_default_matrixtype! (fact)
46+ end
47+
3948
4049"""
4150```
@@ -55,9 +64,19 @@ plu=MKLPardisoLU()
5564Pardiso.set_iparm!(plu.ps,5,13.0)
5665```
5766"""
58- MKLPardisoLU (;valuetype:: Type = Float64, indextype:: Type = Int64)= MKLPardisoLU {valuetype,indextype} (nothing ,Pardiso . MKLPardisoSolver (), 0 )
67+ MKLPardisoLU (;valuetype:: Type = Float64, indextype:: Type = Int64)= MKLPardisoLU {valuetype,indextype} ()
5968
6069
70+ # #########################################################################################
71+ function set_default_matrixtype! (fact:: AbstractPardisoLU{Tv,Ti} ) where {Tv, Ti}
72+ if Tv<: Complex
73+ Pardiso. set_matrixtype! (fact. ps,Pardiso. COMPLEX_NONSYM)
74+ else
75+ Pardiso. set_matrixtype! (fact. ps,Pardiso. REAL_NONSYM)
76+ end
77+ fact
78+ end
79+
6180function update! (lufact:: AbstractPardisoLU{Tv,Ti} ) where {Tv, Ti}
6281 ps= lufact. ps
6382 flush! (lufact. A)
@@ -66,12 +85,6 @@ function update!(lufact::AbstractPardisoLU{Tv,Ti}) where {Tv, Ti}
6685 Pardiso. pardisoinit (ps)
6786 Pardiso. set_phase! (ps, Pardiso. RELEASE_ALL)
6887 Pardiso. pardiso (ps, Tv[], Acsc, Tv[])
69-
70- if Tv<: Complex
71- Pardiso. set_matrixtype! (ps,Pardiso. COMPLEX_NONSYM)
72- else
73- Pardiso. set_matrixtype! (ps,Pardiso. REAL_NONSYM)
74- end
7588 Pardiso. set_phase! (ps, Pardiso. ANALYSIS_NUM_FACT)
7689 lufact. phash= lufact. A. phash
7790 else
0 commit comments