3
3
4
4
import Pardiso
5
5
6
- export PardisoJL
6
+ export PardisoJL, PardisoJLFactorize, PardisoJLIterate
7
7
8
8
Base. @kwdef struct PardisoJL <: SciMLLinearSolveAlgorithm
9
9
nprocs:: Union{Int, Nothing} = nothing
@@ -15,6 +15,11 @@ Base.@kwdef struct PardisoJL <: SciMLLinearSolveAlgorithm
15
15
dparm:: Union{Vector{Tuple{Int,Int}}, Nothing} = nothing
16
16
end
17
17
18
+ PardisoJLFactorize (;kwargs... ) = PardisoJL (;solver_type= 0 , kwargs... )
19
+ PardisoJLIterate (;kwargs... ) = PardisoJL (;solver_type= 1 , kwargs... )
20
+
21
+ # TODO schur complement functionality
22
+
18
23
function init_cacheval (alg:: PardisoJL , cache:: LinearCache )
19
24
@unpack nprocs, solver_type, matrix_type, iparm, dparm = alg
20
25
@@ -62,7 +67,7 @@ function SciMLBase.solve(cache::LinearCache, alg::PardisoJL; kwargs...)
62
67
can we use phase to store factorization in cache?
63
68
"""
64
69
alg. solve_phase != = nothing && Pardiso. set_phase! (cacheval, alg. solve_phase)
65
- Pardiso. solve! (cache. cacheval, u, A, b)
70
+ Pardiso. pardiso (cache. cacheval, u, A, b)
66
71
alg. release_phase != = nothing && Pardiso. set_phase! (cacheval, alg. release_phase) # is this necessary?
67
72
68
73
return cache. u
0 commit comments