Convergio — Open Source Convergence Detection
Your solver finished 3000 iterations ago. Convergio tells you when to stop — and when something is wrong.
from convergio import detect
result = detect(residual_history, residual_target=1e-8)
# returns: "converged" · "stalling" · "oscillating" · "diverging"
result = detect(residual_history, residual_target=1e-8)
# returns: "converged" · "stalling" · "oscillating" · "diverging"
500+
Installs
6
States
MIT
License
▶ Convergio Enterprise
C++ Header-Only. Drop into any C++/Fortran simulation.
- · Single header: convergio.hpp
- · Zero dependencies, zero config
- · Real-time: watch() inside your solver loop
- · Post-hoc: detect() on completed runs
- · Adaptive regime detection
▶ CAP — Canonical Attractor Preconditioner
35 of 40 industry matrices solved. Performance benchmarks on SuiteSparse collection.
35/40
Solved
24
Rescued
84x
Peak Speedup
1.2M
Max DOF
| Matrix | Baseline Solver | CAP Engine (v0.8) | Result |
|---|---|---|---|
| nos4 | CG (84 iter) | 1 iter | 84x SPEEDUP |
| bcsstk34 | CG (735 iter) | 29 iter | 25x SPEEDUP |
| nos6 | CG (666 iter) | 12 iter | 55x SPEEDUP |
| bcsstk08 | CG FAIL | 14 iter | RESCUED |
| bcsstk09 | CG (280 iter) | 43 iter | 6x SPEEDUP |
| bcsstk10 | CG FAIL | 167 iter | RESCUED |
| bcsstk27 | CG (883 iter) | 64 iter | 13x SPEEDUP |
| bcsstk11 | CG FAIL | 382 iter | RESCUED |
| bcsstk14 | CG FAIL | 54 iter | RESCUED |
| bcsstk26 | CG FAIL | 1,728 iter | RESCUED |
| bcsstk13 | CG FAIL | 408 iter | RESCUED |
| bcsstk24 | CG FAIL | 488 iter | RESCUED |
| bcsstk15 | CG FAIL | 75 iter | RESCUED |
| bcsstk28 | CG FAIL | 582 iter | RESCUED |
| bcsstk16 | CG (313 iter) | 35 iter | 9x SPEEDUP |
| s3rmt3m3 | CG FAIL | 1,313 iter | RESCUED |
| bcsstk38 | CG FAIL | 202 iter | RESCUED |
| msc10848 | CG FAIL | 1,845 iter | RESCUED |
| bcsstk17 | CG FAIL | 389 iter | RESCUED |
| bcsstk18 | CG FAIL | 184 iter | RESCUED |
| bcsstk25 | CG FAIL | 203 iter | RESCUED |
| bcsstk36 | CG FAIL | 3,188 iter | RESCUED |
| bcsstk35 | CG FAIL | FAIL | BOTH FAIL |
| ct20stif | CG FAIL | 434 iter | RESCUED |
| offshore | CG FAIL | 40 iter | RESCUED |
| ex5 | CG FAIL | 2 iter | RESCUED |
| cavity05 | GMRES FAIL | 35 iter | RESCUED |
| cavity10 | GMRES FAIL | 84 iter | RESCUED |
| cavity16 | GMRES FAIL | 173 iter | RESCUED |
| cavity17 | GMRES FAIL | 109 iter | RESCUED |
| cavity20 | GMRES FAIL | 392 iter | RESCUED |
| cavity26 | GMRES FAIL | FAIL | BOTH FAIL |
| ex11 | CG (7,325 iter) | FAIL | CAP FAIL |
| FEM_3D_th1 | CG (197 iter) | 735 iter | CG WINS |
| thermal1 | CG (1,345 iter) | 120 iter | 11x SPEEDUP |
| thermomech_TC | CG (60 iter) | 7 iter | 9x SPEEDUP |
| thermomech_TK | CG FAIL | FAIL | BOTH FAIL |
| thermal2 | CG (4,332 iter) | 429 iter | 10x SPEEDUP |
| apache2 | CG (4,918 iter) | 399 iter | 12x SPEEDUP |
| qa8fk | CG FAIL | FAIL | BOTH FAIL |
Walltime measured single-threaded on commodity hardware. CAP is not parallelized — these numbers are a lower bound.
Zero external dependencies · Header-only C++ · Integrates into any solver stack.
Request Evaluation