104
104
=#
105
105
106
106
struct FFTKKTSystem{T, VI, VT, MT, LS} <: MadNLP.AbstractReducedKKTSystem{T, VT, MT, MadNLP.ExactHessian{T, VT}}
107
- nlp:: FFTNLPModel
107
+ nlp:: FFTNLPModel{T, VT}
108
108
# Operators
109
109
K:: MT
110
110
P:: FFTPreconditioner{T, VT}
@@ -153,7 +153,7 @@ function MadNLP.create_kkt_system(
153
153
l_lower = VT (undef, nlb)
154
154
u_lower = VT (undef, nub)
155
155
156
- workspace = Krylov. CgWorkspace ( 2 * nβ, 2 * nβ, VT)
156
+ workspace = Krylov. krylov_workspace ( Val (nlp . krylov_solver), 2 * nβ, 2 * nβ, VT)
157
157
158
158
z1 = VT (undef, nβ)
159
159
z2 = VT (undef, 2 * nβ)
@@ -176,11 +176,11 @@ MadNLP.get_hessian(kkt::FFTKKTSystem) = nothing
176
176
MadNLP. get_jacobian (kkt:: FFTKKTSystem ) = nothing
177
177
178
178
# Dirty wrapper to MadNLP's linear solver
179
- MadNLP. is_inertia (:: Krylov.CgWorkspace ) = true
180
- MadNLP. inertia (:: Krylov.CgWorkspace ) = (0 , 0 , 0 )
181
- MadNLP. introduce (:: Krylov.CgWorkspace ) = " CG "
182
- MadNLP. improve! (:: Krylov.CgWorkspace ) = true
183
- MadNLP. factorize! (:: Krylov.CgWorkspace ) = nothing
179
+ MadNLP. is_inertia (:: Krylov.KrylovWorkspace ) = true
180
+ MadNLP. inertia (:: Krylov.KrylovWorkspace ) = (0 , 0 , 0 )
181
+ MadNLP. introduce (:: Krylov.KrylovWorkspace ) = " Krylov "
182
+ MadNLP. improve! (:: Krylov.KrylovWorkspace ) = true
183
+ MadNLP. factorize! (:: Krylov.KrylovWorkspace ) = nothing
184
184
185
185
MadNLP. is_inertia_correct (kkt:: FFTKKTSystem , p, n, z) = true
186
186
@@ -355,7 +355,7 @@ function MadNLP.solve!(kkt::FFTKKTSystem, w::MadNLP.AbstractKKTVector)
355
355
bβ .= w1 .- w3 .+ w4 .- Σ1 .* w5 .+ Σ2 .* w6
356
356
bz .= w2 .- w3 .- w4 .- Σ1 .* w5 .- Σ2 .* w6
357
357
358
- # Solve with CG
358
+ # Solve with the Krylov solver (CG by default)
359
359
Krylov. krylov_solve! (kkt. linear_solver, kkt. K, b, M= kkt. P, atol= 1e-12 , rtol= 0.0 , verbose= 0 )
360
360
x = Krylov. solution (kkt. linear_solver)
361
361
push! (kkt. krylov_iterations, kkt. linear_solver |> Krylov. iteration_count)
0 commit comments