Skip to content

v0.10.0-beta — Krylov/Fréchet ML backend + 4 issues (#11/#12/#13/#14)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Jun 10:42

Summary

Five-feature wave (issues #11, #12, #13, #14 + A1 stiff fix): generic symmetric operators, conservative divergence-form diffusion, stiff multilayer conduction, ETD/φ semilinear integrator, and depth-independent Krylov + Fréchet for graph semigroups. All additive; no breaking changes to the 0.9.1-beta public surface.

Added

A1/A2 — Depth-independent graph-semigroup Krylov action + edge-weight Fréchet gradient

  • GraphKrylovChernoff, graph_expmv_frechet; ADR-0185, math §54
  • graph_expmv(L, v, t, ε) computes e^{−tL_G}·v without stepping through each time unit
  • Chebyshev default (O(1) working vectors) or Lanczos adaptive (O(m·N) basis, m ≈ 20–40, flat in t)
  • graph_expmv_frechet returns ∂J/∂w for all edge weights via one augmented Krylov solve (Al-Mohy & Higham 2009)
  • Closes forward and backward speed ceilings exposed by v0.9.1-beta (#10)
  • PyO3: GraphKrylov pyclass + graph_expmv_frechet pyfunction in one GIL-releasing call
  • Honest limits: symmetric L_G only; time-varying L(t) out of scope

#13 — Generic externally-assembled symmetric-operator entry point

  • SymmetricOperator, MassKOperator, EntrySensitivity; ADR-0186, math §55
  • SymmetricOperator::from_csr accepts any externally-assembled symmetric PSD sparse operator
  • FEM stiffness with Robin BC, anisotropic conductivity — not just graph Laplacians
  • MassKOperator propagates e^{−τM⁻¹K}·v via congruence chain without forming M⁻¹K explicitly
  • Lumped (M,K) path is a 3-liner
  • Honest limits: symmetric PSD required; consistent-mass differentiability deferred

#11 — Conservative (divergence-form) variable-coefficient diffusion

  • ConservativeDiffusionChernoff, assemble_conservative_csr_1d; ADR-0187, math §56
  • Harmonic-mean face conductivities reproduce series-resistance network at machine precision
  • Handles sharp material interfaces (k-contrast 100:1 to 3025:1) where non-conservative methods give ≥50% error
  • Crank–Nicolson wrapper (order()=2, A-stable, no CFL, one O(n) Thomas solve)
  • Honest limits: k > 0; full-tensor non-separable ∂_x(k∂_y) out of scope

#14 — Stiff multilayer conduction via mass-weighted Krylov

  • MultilayerStack, multilayer_evolve, MassWeightedConservativeChernoff; ADR-0188, math §57
  • Maps physical [(thickness, k, ρc)] → node arrays on single uniform grid
  • Propagates in one depth-flat Krylov action for any integration span
  • Beats explicit CFL by ~28000× on Shuttle TPS stack (k-contrast ≈ 3025×, ρc-contrast ≈ 27×)
  • Optional A-stable CN convenience for O(1)-vector memory
  • Honest limits: 1-D first; one global dx; node-centered lumped mass only

#12 — ETD φ-functions and ETDRK4 semilinear integrator

  • phi_action, phi_action_batched, Etdrk4, Nonlinearity; ADR-0189, math §58
  • phi_action_batched computes φ₀…φ_p(τA)·v simultaneously via ONE augmented block-triangular matvec-only Taylor action
  • Etdrk4 (Cox–Matthews 2002 / Kassam–Trefethen 2005) integrates ∂ₜu = Lu + N(u) at order 4
  • N(u) is declarative Nonlinearity trait or fixed enum menu (AllenCahn, Burgers, GrayScott, KuramotoSivashinsky)
  • Never a per-step Python callback; ADR-0179 wall preserved
  • NonlinearityDiff enables end-to-end adjoint ∂J/∂param through one step
  • Honest limits: L 1-D divergence-form or symmetric graph only; deferred beyond this scope

Fixed

A1 stiff operator NaN bug (commit 9e5f557)

  • GraphKrylovChernoff's Chebyshev path silently returned garbage for stiff operators (λ_max ≳ 1400)
  • Fix: substep s = ⌈z/Z_SAFE⌉ (Z_SAFE = 200), mirroring Lanczos scaling
  • Plus fail-loud finiteness guard returning SemiflowError::DomainViolation
  • Conservative high-contrast diffusion (λ_max ∼ 10⁴) was affected
  • New test cheb_stiff_regime (z ≈ 6400) was red before, green after (sup_error 1.0e-11)

See CHANGELOG.md for ADRs, validation gates, and complete honest limitations.