Implicit Stiff Mode for SymmetricOperator
The new path="implicit" option adds a dependency-free preconditioned-CG backward-Euler solver for externally-assembled symmetric operators, resolving the O(λ_max·t) timeout on stiff FEM operators.
Highlights
- Flagship benchmark: ~4 ms / sup_error 3.3e-12 on a Neumann N=400 ×10⁷ stiff operator
- Compare: explicit Lanczos ~56 s, scipy expm_multiply >90 s timeout
- Cost caveat: governed by √κ of Jacobi-preconditioned system, not strictly λ_max-independent
- Zero new dependencies: PCG + Jacobi preconditioning are dependency-free
- API: SymmetricOperator.evolve_batched, mass_lumped_evolve, MassKOperator.evolve all support
path="implicit"
CI Hardening
Alongside the #16 feature:
- Flagship Gates: Resolvent argument parsing + bounded L_RESOLVENT tick budget turned green
- Nightly miri: Scalar path (src/scalar/) validated
- Nightly bench-regression: Scoped core families + baseline guard to prevent false positives
Full Changelog
See CHANGELOG.md for complete details.