|
8 | 8 |
|
9 | 9 | MKLPardisoFactorize(;kwargs...) = PardisoJL(;kwargs...) |
10 | 10 | MKLPardisoIterate(;kwargs...) = PardisoJL(;kwargs...) |
| 11 | +needs_concrete_A(alg::PardisoJL) = true |
11 | 12 |
|
12 | 13 | # TODO schur complement functionality |
13 | 14 |
|
14 | 15 | function init_cacheval(alg::PardisoJL, A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose) |
15 | 16 | @unpack nprocs, solver_type, matrix_type, iparm, dparm = alg |
16 | | - |
17 | | - if A isa DiffEqArrayOperator |
18 | | - A = A.A |
19 | | - end |
| 17 | + A = convert(AbstractMatrix,A) |
20 | 18 |
|
21 | 19 | solver = |
22 | 20 | if Pardiso.PARDISO_LOADED[] |
|
67 | 65 |
|
68 | 66 | function SciMLBase.solve(cache::LinearCache, alg::PardisoJL; kwargs...) |
69 | 67 | @unpack A, b, u = cache |
70 | | - if A isa DiffEqArrayOperator |
71 | | - A = A.A |
72 | | - end |
| 68 | + A = copy(convert(AbstractMatrix,A)) |
73 | 69 |
|
74 | | - if cache.isfresh |
75 | | - Pardiso.set_phase!(cache.cacheval, Pardiso.NUM_FACT) |
76 | | - Pardiso.pardiso(cache.cacheval, cache.u, cache.A, cache.b) |
77 | | - end |
| 70 | + #if cache.isfresh |
| 71 | + # Pardiso.set_phase!(cache.cacheval, Pardiso.NUM_FACT) |
| 72 | + # Pardiso.pardiso(cache.cacheval, u, A, b) |
| 73 | + #end |
| 74 | + #Pardiso.set_phase!(cache.cacheval, Pardiso.SOLVE_ITERATIVE_REFINE) |
78 | 75 |
|
79 | | - Pardiso.set_phase!(cache.cacheval, Pardiso.SOLVE_ITERATIVE_REFINE) |
| 76 | + Pardiso.set_phase!(cache.cacheval, Pardiso.ANALYSIS_NUM_FACT_SOLVE_REFINE) |
80 | 77 | Pardiso.pardiso(cache.cacheval, u, A, b) |
81 | 78 |
|
82 | 79 | return SciMLBase.build_linear_solution(alg,cache.u,nothing,cache) |
83 | 80 | end |
84 | 81 |
|
85 | | -needsconcreteA(alg::PardisoJL) = true |
86 | | - |
87 | 82 | # Add finalizer to release memory |
88 | 83 | # Pardiso.set_phase!(cache.cacheval, Pardiso.RELEASE_ALL) |
89 | 84 |
|
|
0 commit comments