Release 0.8.0¶
SOLVAX 0.8.0 extends the matrix-free and nonlinear solver surface so that structured kinetic, transport, and PDE codes can drive implicit solves over their native state without flattening it.
Structured and distributed FGMRES¶
gmres now accepts scalar, array, and arbitrary matching-pytree operands. The
pytree path builds the flexible Arnoldi basis leaf by leaf, so it never
concatenates heterogeneous state with ravel_pytree and preserves leaf-level
sharding for distributed applications. An optional inner_product(left, right)
callback replaces the Euclidean product throughout the Arnoldi projections,
residual norms, and convergence test, which is what a distributed solve needs
to define one global reduction with JAX collectives. Callers that omit both a
pytree operand and a custom product keep the original optimized flat-array path,
and GCROT is unchanged.
Matrix-free Newton-Krylov¶
newton_krylov solves F(x) = 0 without materializing a Jacobian. Each Newton
correction obtains Jacobian-vector products from jax.linearize and is solved
by SOLVAX FGMRES, so array and pytree states, right preconditioning, custom
inner products, and an independent nonlinear norm are all available. The
nonlinear stopping test uses the true residual recomputed after the final
accepted update, and the result exposes separate nonlinear and linear
convergence flags [KK04].
Affine fixed points and filtered Anderson¶
affine_fixed_point_gmres treats an affine coupling map G(x) = L x + c as the
matrix-free linear system (I - L) x = c, for weakly contractive couplings
where fixed-point relaxation and Anderson mixing stall. anderson_mixing gained
optional spectral condition filtering to drop the smallest, ill-conditioned
directions from a history.
Cyclic tridiagonal solve¶
cyclic_tridiagonal_solve solves periodic tridiagonal lines through an exact
Sherman-Morrison rank-one correction, a single ordinary tridiagonal solve with
two stacked right-hand sides [PTVF07]. It keeps the reproducible-Thomas
/ fused-cuSPARSE backend selection and is fully differentiable.
Fixes¶
lu_solve_bandedpromotes a real right-hand side against complex factors rather than truncating its imaginary part.