diff --git a/src/bicgstab.jl b/src/bicgstab.jl index dbe05c87d..db58af2a5 100644 --- a/src/bicgstab.jl +++ b/src/bicgstab.jl @@ -188,6 +188,7 @@ kwargs_bicgstab = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -204,6 +205,7 @@ kwargs_bicgstab = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, if next_ρ == 0 stats.niter = 0 stats.solved, stats.inconsistent = false, false + stats.timer = ktimer(start_time) stats.status = "Breakdown bᴴc = 0" solver.warm_start = false return solver @@ -276,6 +278,7 @@ kwargs_bicgstab = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/bilq.jl b/src/bilq.jl index 4af6b796b..c3f14c036 100644 --- a/src/bilq.jl +++ b/src/bilq.jl @@ -158,6 +158,7 @@ kwargs_bilq = (:c, :transfer_to_bicg, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = 0 stats.solved = true stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -176,6 +177,7 @@ kwargs_bilq = (:c, :transfer_to_bicg, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = 0 stats.solved = false stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "Breakdown bᴴc = 0" solver.warm_start = false return solver @@ -374,6 +376,7 @@ kwargs_bilq = (:c, :transfer_to_bicg, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = iter stats.solved = solved_lq || solved_cg stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/bilqr.jl b/src/bilqr.jl index 05e24714b..a90d0b62e 100644 --- a/src/bilqr.jl +++ b/src/bilqr.jl @@ -182,6 +182,7 @@ kwargs_bilqr = (:transfer_to_bicg, :atol, :rtol, :itmax, :timemax, :verbose, :hi stats.niter = 0 stats.solved_primal = false stats.solved_dual = false + stats.timer = ktimer(start_time) stats.status = "Breakdown bᴴc = 0" solver.warm_start = false return solver @@ -481,9 +482,10 @@ kwargs_bilqr = (:transfer_to_bicg, :atol, :rtol, :itmax, :timemax, :verbose, :hi # Update stats stats.niter = iter - stats.status = status stats.solved_primal = solved_primal stats.solved_dual = solved_dual + stats.timer = ktimer(start_time) + stats.status = status return solver end end diff --git a/src/cg.jl b/src/cg.jl index fc8cd996f..f36549ed9 100644 --- a/src/cg.jl +++ b/src/cg.jl @@ -166,6 +166,7 @@ kwargs_cg = (:M, :ldiv, :radius, :linesearch, :atol, :rtol, :itmax, :timemax, :v if γ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -268,6 +269,7 @@ kwargs_cg = (:M, :ldiv, :radius, :linesearch, :atol, :rtol, :itmax, :timemax, :v stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cg_lanczos.jl b/src/cg_lanczos.jl index 7549463c5..c9c7e59ba 100644 --- a/src/cg_lanczos.jl +++ b/src/cg_lanczos.jl @@ -165,6 +165,7 @@ kwargs_cg_lanczos = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :timemax stats.solved = true stats.Anorm = zero(T) stats.indefinite = false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -264,6 +265,7 @@ kwargs_cg_lanczos = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :timemax stats.solved = solved stats.Anorm = sqrt(Anorm2) stats.indefinite = indefinite + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cg_lanczos_shift.jl b/src/cg_lanczos_shift.jl index 3871528de..38e8cb832 100644 --- a/src/cg_lanczos_shift.jl +++ b/src/cg_lanczos_shift.jl @@ -151,6 +151,7 @@ kwargs_cg_lanczos_shift = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :t if β == 0 stats.niter = 0 stats.solved = true + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -269,6 +270,7 @@ kwargs_cg_lanczos_shift = (:M, :ldiv, :check_curvature, :atol, :rtol, :itmax, :t # Update stats. TODO: Estimate Anorm and Acond. stats.niter = iter stats.solved = solved + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cgls.jl b/src/cgls.jl index 3b80e9209..2a027cc58 100644 --- a/src/cgls.jl +++ b/src/cgls.jl @@ -156,6 +156,7 @@ kwargs_cgls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose if bNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(rNorms, zero(T)) history && push!(ArNorms, zero(T)) @@ -231,6 +232,7 @@ kwargs_cgls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cgne.jl b/src/cgne.jl index 301366f10..c6c8b0e9b 100644 --- a/src/cgne.jl +++ b/src/cgne.jl @@ -163,6 +163,7 @@ kwargs_cgne = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -240,6 +241,7 @@ kwargs_cgne = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cgs.jl b/src/cgs.jl index a22fe19c8..82765e573 100644 --- a/src/cgs.jl +++ b/src/cgs.jl @@ -183,6 +183,7 @@ kwargs_cgs = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :hist if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -193,6 +194,7 @@ kwargs_cgs = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :hist if ρ == 0 stats.niter = 0 stats.solved, stats.inconsistent = false, false + stats.timer = ktimer(start_time) stats.status = "Breakdown bᴴc = 0" solver.warm_start =false return solver @@ -280,6 +282,7 @@ kwargs_cgs = (:c, :M, :N, :ldiv, :atol, :rtol, :itmax, :timemax, :verbose, :hist stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/cr.jl b/src/cr.jl index d0543af5b..0d69c730c 100644 --- a/src/cr.jl +++ b/src/cr.jl @@ -176,6 +176,7 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema if ρ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(ArNorms, zero(T)) solver.warm_start = false @@ -218,6 +219,7 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema (verbose > 0) && @printf(iostream, "nonpositive curvature detected: pᴴAp = %8.1e and rᴴAr = %8.1e\n", pAp, ρ) stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "nonpositive curvature" return solver end @@ -382,6 +384,7 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "solver encountered numerical issues" solver.warm_start = false return solver @@ -411,6 +414,7 @@ kwargs_cr = (:M, :ldiv, :radius, :linesearch, :γ, :atol, :rtol, :itmax, :timema stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/craig.jl b/src/craig.jl index adb1f1e9f..562a23c6e 100644 --- a/src/craig.jl +++ b/src/craig.jl @@ -212,6 +212,7 @@ kwargs_craig = (:M, :N, :ldiv, :transfer_to_lsqr, :sqd, :λ, :btol, :conlim, :at if β₁ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -391,6 +392,7 @@ kwargs_craig = (:M, :N, :ldiv, :transfer_to_lsqr, :sqd, :λ, :btol, :conlim, :at stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/craigmr.jl b/src/craigmr.jl index a482046c7..4b8c5c627 100644 --- a/src/craigmr.jl +++ b/src/craigmr.jl @@ -201,6 +201,7 @@ kwargs_craigmr = (:M, :N, :ldiv, :sqd, :λ, :atol, :rtol, :itmax, :timemax, :ver stats.solved, stats.inconsistent = true, false history && push!(rNorms, β) history && push!(ArNorms, zero(T)) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -228,6 +229,7 @@ kwargs_craigmr = (:M, :N, :ldiv, :sqd, :λ, :atol, :rtol, :itmax, :timemax, :ver stats.solved, stats.inconsistent = true, false history && push!(rNorms, β) history && push!(ArNorms, zero(T)) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a minimum least-squares solution" return solver end @@ -384,6 +386,7 @@ kwargs_craigmr = (:M, :N, :ldiv, :sqd, :λ, :atol, :rtol, :itmax, :timemax, :ver stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/crls.jl b/src/crls.jl index 3974bf628..371113e3a 100644 --- a/src/crls.jl +++ b/src/crls.jl @@ -151,6 +151,7 @@ kwargs_crls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose if bNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(ArNorms, zero(T)) return solver @@ -256,6 +257,7 @@ kwargs_crls = (:M, :ldiv, :radius, :λ, :atol, :rtol, :itmax, :timemax, :verbose stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/crmr.jl b/src/crmr.jl index 5b482c44c..292d05494 100644 --- a/src/crmr.jl +++ b/src/crmr.jl @@ -162,6 +162,7 @@ kwargs_crmr = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor if bNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(ArNorms, zero(T)) return solver @@ -232,6 +233,7 @@ kwargs_crmr = (:N, :ldiv, :λ, :atol, :rtol, :itmax, :timemax, :verbose, :histor stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/diom.jl b/src/diom.jl index 01803b2f2..726f64de9 100644 --- a/src/diom.jl +++ b/src/diom.jl @@ -172,6 +172,7 @@ kwargs_diom = (:M, :N, :ldiv, :reorthogonalization, :atol, :rtol, :itmax, :timem if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -328,6 +329,7 @@ kwargs_diom = (:M, :N, :ldiv, :reorthogonalization, :atol, :rtol, :itmax, :timem stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/dqgmres.jl b/src/dqgmres.jl index 4e158fcdf..bb9790223 100644 --- a/src/dqgmres.jl +++ b/src/dqgmres.jl @@ -172,6 +172,7 @@ kwargs_dqgmres = (:M, :N, :ldiv, :reorthogonalization, :atol, :rtol, :itmax, :ti if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -330,6 +331,7 @@ kwargs_dqgmres = (:M, :N, :ldiv, :reorthogonalization, :atol, :rtol, :itmax, :ti stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/fgmres.jl b/src/fgmres.jl index 3d9d87ac4..d8741e5b9 100644 --- a/src/fgmres.jl +++ b/src/fgmres.jl @@ -182,6 +182,7 @@ kwargs_fgmres = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :i if β == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -380,6 +381,7 @@ kwargs_fgmres = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :i stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/fom.jl b/src/fom.jl index 6a1162bf9..3b6832d9f 100644 --- a/src/fom.jl +++ b/src/fom.jl @@ -177,6 +177,7 @@ kwargs_fom = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :itma if β == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -360,6 +361,7 @@ kwargs_fom = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :itma stats.niter = iter stats.solved = solved stats.inconsistent = !solved && breakdown + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/gmres.jl b/src/gmres.jl index c199ba9ee..e094ff4b3 100644 --- a/src/gmres.jl +++ b/src/gmres.jl @@ -177,6 +177,7 @@ kwargs_gmres = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :it if β == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -377,6 +378,7 @@ kwargs_gmres = (:M, :N, :ldiv, :restart, :reorthogonalization, :atol, :rtol, :it stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/gpmr.jl b/src/gpmr.jl index a267dc7a9..0b84eb856 100644 --- a/src/gpmr.jl +++ b/src/gpmr.jl @@ -537,6 +537,7 @@ kwargs_gpmr = (:C, :D, :E, :F, :ldiv, :gsp, :λ, :μ, :reorthogonalization, :ato stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/lnlq.jl b/src/lnlq.jl index 81e44e6d9..c0cef6aa4 100644 --- a/src/lnlq.jl +++ b/src/lnlq.jl @@ -211,6 +211,7 @@ kwargs_lnlq = (:M, :N, :ldiv, :transfer_to_craig, :sqd, :λ, :σ, :utolx, :utoly stats.solved = true stats.error_with_bnd = false history && push!(rNorms, bNorm) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -546,6 +547,7 @@ kwargs_lnlq = (:M, :N, :ldiv, :transfer_to_craig, :sqd, :λ, :σ, :utolx, :utoly stats.niter = iter stats.solved = solved_lq || solved_cg stats.error_with_bnd = complex_error_bnd + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/lslq.jl b/src/lslq.jl index 22106dac3..9f45a0f6c 100644 --- a/src/lslq.jl +++ b/src/lslq.jl @@ -239,6 +239,7 @@ kwargs_lslq = (:M, :N, :ldiv, :transfer_to_lsqr, :sqd, :λ, :σ, :etol, :utol, : stats.error_with_bnd = false history && push!(rNorms, zero(T)) history && push!(ArNorms, zero(T)) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" return solver end @@ -258,6 +259,7 @@ kwargs_lslq = (:M, :N, :ldiv, :transfer_to_lsqr, :sqd, :λ, :σ, :etol, :utol, : stats.error_with_bnd = false history && push!(rNorms, β₁) history && push!(ArNorms, zero(T)) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a minimum least-squares solution" return solver end @@ -500,6 +502,7 @@ kwargs_lslq = (:M, :N, :ldiv, :transfer_to_lsqr, :sqd, :λ, :σ, :etol, :utol, : stats.solved = solved stats.inconsistent = !zero_resid stats.error_with_bnd = complex_error_bnd + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/lsmr.jl b/src/lsmr.jl index 7419d1861..2532cf273 100644 --- a/src/lsmr.jl +++ b/src/lsmr.jl @@ -210,6 +210,7 @@ kwargs_lsmr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, if β₁ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(rNorms, zero(T)) history && push!(ArNorms, zero(T)) @@ -270,6 +271,7 @@ kwargs_lsmr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, if α == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a minimum least-squares solution" return solver end @@ -435,6 +437,7 @@ kwargs_lsmr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, stats.niter = iter stats.solved = solved stats.inconsistent = !zero_resid + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/lsqr.jl b/src/lsqr.jl index 18bdd0144..2fa291f2d 100644 --- a/src/lsqr.jl +++ b/src/lsqr.jl @@ -207,6 +207,7 @@ kwargs_lsqr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, if β₁ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(rNorms, zero(T)) history && push!(ArNorms, zero(T)) @@ -252,6 +253,7 @@ kwargs_lsqr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, if α == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a minimum least-squares solution" return solver end @@ -420,6 +422,7 @@ kwargs_lsqr = (:M, :N, :ldiv, :sqd, :λ, :radius, :etol, :axtol, :btol, :conlim, stats.niter = iter stats.solved = solved stats.inconsistent = !zero_resid + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/minres.jl b/src/minres.jl index 09c3556fe..697335b8a 100644 --- a/src/minres.jl +++ b/src/minres.jl @@ -196,6 +196,7 @@ kwargs_minres = (:M, :ldiv, :λ, :atol, :rtol, :etol, :conlim, :itmax, :timemax, if β₁ == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" history && push!(rNorms, β₁) history && push!(ArNorms, zero(T)) @@ -241,7 +242,6 @@ kwargs_minres = (:M, :ldiv, :λ, :atol, :rtol, :etol, :conlim, :itmax, :timemax, kdisplay(iter, verbose) && @printf(iostream, "%5d %7.1e %7.1e %7.1e %8.1e %8.1e %7.1e %7.1e %7s %7s %.2fs\n", iter, rNorm, ArNorm, β, cs, sn, ANorm, Acond, "✗ ✗ ✗ ✗", "✗ ✗ ✗ ✗", ktimer(start_time)) ε = atol + rtol * β₁ - stats.status = "unknown" solved = solved_mach = solved_lim = (rNorm ≤ rtol) tired = iter ≥ itmax ill_cond = ill_cond_mach = ill_cond_lim = false @@ -346,6 +346,7 @@ kwargs_minres = (:M, :ldiv, :λ, :atol, :rtol, :etol, :conlim, :itmax, :timemax, # Aᴴb = 0 so x = 0 is a minimum least-squares solution stats.niter = 1 stats.solved, stats.inconsistent = true, true + stats.timer = ktimer(start_time) stats.status = "x is a minimum least-squares solution" solver.warm_start = false return solver @@ -395,6 +396,7 @@ kwargs_minres = (:M, :ldiv, :λ, :atol, :rtol, :etol, :conlim, :itmax, :timemax, stats.niter = iter stats.solved = solved stats.inconsistent = !zero_resid + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/minres_qlp.jl b/src/minres_qlp.jl index fa5429c58..4dac81295 100644 --- a/src/minres_qlp.jl +++ b/src/minres_qlp.jl @@ -186,6 +186,7 @@ kwargs_minres_qlp = (:M, :ldiv, :λ, :atol, :rtol, :Artol, :itmax, :timemax, :ve if rNorm == 0 stats.niter = 0 stats.solved, stats.inconsistent = true, false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -486,6 +487,7 @@ kwargs_minres_qlp = (:M, :ldiv, :λ, :atol, :rtol, :Artol, :itmax, :timemax, :ve stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/qmr.jl b/src/qmr.jl index aa13f7bb0..2072232bc 100644 --- a/src/qmr.jl +++ b/src/qmr.jl @@ -165,6 +165,7 @@ kwargs_qmr = (:c, :atol, :rtol, :itmax, :timemax, :verbose, :history, :callback, stats.niter = 0 stats.solved = true stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -183,6 +184,7 @@ kwargs_qmr = (:c, :atol, :rtol, :itmax, :timemax, :verbose, :history, :callback, stats.niter = 0 stats.solved = false stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "Breakdown bᴴc = 0" solver.warm_start = false return solver @@ -371,6 +373,7 @@ kwargs_qmr = (:c, :atol, :rtol, :itmax, :timemax, :verbose, :history, :callback, stats.niter = iter stats.solved = solved stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/symmlq.jl b/src/symmlq.jl index de8519223..ae759631c 100644 --- a/src/symmlq.jl +++ b/src/symmlq.jl @@ -186,6 +186,7 @@ kwargs_symmlq = (:M, :ldiv, :transfer_to_cg, :λ, :λest, :atol, :rtol, :etol, : stats.Acond = T(NaN) history && push!(rNorms, zero(T)) history && push!(rcgNorms, zero(T)) + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -458,6 +459,7 @@ kwargs_symmlq = (:M, :ldiv, :transfer_to_cg, :λ, :λest, :atol, :rtol, :etol, : stats.solved = solved stats.Anorm = ANorm stats.Acond = Acond + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/tricg.jl b/src/tricg.jl index 81677879d..cc443124d 100644 --- a/src/tricg.jl +++ b/src/tricg.jl @@ -464,6 +464,7 @@ kwargs_tricg = (:M, :N, :ldiv, :spd, :snd, :flip, :τ, :ν, :atol, :rtol, :itmax stats.niter = iter stats.solved = solved stats.inconsistent = !solved && breakdown + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/trilqr.jl b/src/trilqr.jl index 99158a42d..229778765 100644 --- a/src/trilqr.jl +++ b/src/trilqr.jl @@ -460,9 +460,10 @@ kwargs_trilqr = (:transfer_to_usymcg, :atol, :rtol, :itmax, :timemax, :verbose, # Update stats stats.niter = iter - stats.status = status stats.solved_primal = solved_primal stats.solved_dual = solved_dual + stats.timer = ktimer(start_time) + stats.status = status return solver end end diff --git a/src/trimr.jl b/src/trimr.jl index d94a7fedb..46c450015 100644 --- a/src/trimr.jl +++ b/src/trimr.jl @@ -567,6 +567,7 @@ kwargs_trimr = (:M, :N, :ldiv, :spd, :snd, :flip, :sp, :τ, :ν, :atol, :rtol, : stats.niter = iter stats.solved = solved stats.inconsistent = !solved && breakdown + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/usymlq.jl b/src/usymlq.jl index d3cafe809..7bd0cf68b 100644 --- a/src/usymlq.jl +++ b/src/usymlq.jl @@ -169,6 +169,7 @@ kwargs_usymlq = (:transfer_to_usymcg, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = 0 stats.solved = true stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -365,6 +366,7 @@ kwargs_usymlq = (:transfer_to_usymcg, :atol, :rtol, :itmax, :timemax, :verbose, stats.niter = iter stats.solved = solved_lq || solved_cg stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = status return solver end diff --git a/src/usymqr.jl b/src/usymqr.jl index 152189df7..951081840 100644 --- a/src/usymqr.jl +++ b/src/usymqr.jl @@ -167,6 +167,7 @@ kwargs_usymqr = (:atol, :rtol, :itmax, :timemax, :verbose, :history, :callback, stats.niter = 0 stats.solved = true stats.inconsistent = false + stats.timer = ktimer(start_time) stats.status = "x = 0 is a zero-residual solution" solver.warm_start = false return solver @@ -356,6 +357,7 @@ kwargs_usymqr = (:atol, :rtol, :itmax, :timemax, :verbose, :history, :callback, stats.niter = iter stats.solved = solved stats.inconsistent = inconsistent + stats.timer = ktimer(start_time) stats.status = status return solver end