Repository navigation
linstabpy 1.0.0rc9
Pre-releaseRelease-hardening pass before 1.0.0.
Changed
- Consolidated duplicated private helpers into shared modules: config lookup
(cfg_get,as_bool) inutils/_solver_cfg,peak_rss_bytes()in
utils/cost_metrics, the spatial Dirichlet helpers in
boundary_conditions/dirichlet, the backend normalizer in
linalg/backends, and one_matvec(operator, x, adjoint=...)in the
solver router in place of a forward/adjoint pair. Net -142 lines with no
behavior change; every module now imports the one canonical copy instead
of carrying a private variant that could drift.
Fixed
- Four call sites in
solvers/router/stable_sweep.pystill called the
removed_adjoint_matvecafter the mat-vec merge, so PETSc-backend sweeps
raisedNameError. These paths only execute where petsc4py is installed,
which is why a PETSc-less checkout did not catch it. - Environment-absence tests (missing nvidia-smi, missing PETSc stack,
missing repository.venv, empty PETSc options database) now simulate the
absent component instead of asserting properties of the host machine. The
full suite passes unmodified on CPU-only machines and on GPU nodes. - The Martini export tools now locate the upstream MATLAB code through
LINSTAB2D_ROOTonly, and the one parity test that reads a raw MATLAB
fixture bundle takes its directory fromLINSTABPY_MATLAB_FIXTURES_NPZ;
the machine-specific fallback paths are gone, and the public-provenance
scanner now rejects those path forms.
Verification
The tagged commit passes the full test suite with zero failures on both
supported stacks: 1574 tests pass on a CPU-only environment (MKL BLAS,
MUMPS) and 1584 on a GPU environment (CUDA-enabled PETSc with STRUMPACK
plus the cuDSS backend, on an NVIDIA RTX A6000). Every remaining skip
names either an optional backend absent from that environment or a
reference file that is not distributed with the repository, and between
the two environments every backend-gated test runs at least once.
The six examples (the five Martini flows plus the Example 0 derivative
protocol) were recomputed from scratch for this release — every cached
NPZ deleted first — through ./run_all_examples.sh, and all six pass.
Against the shipped MATLAB reference bundles, the Blasius and jet
resolvent gains agree to 1.7e-11 and 3.3e-12 relative, the cavity spectra
agree to 6e-6 with eigenvalue residuals below 2e-8, and the Example 3
temporal and spatial eigenpairs satisfy their discrete problems to
residuals of 5e-9 or better. (The Example 3 parity check required a
manifest repair that landed just after the tag, in 05fc7ac and
7167080; the artifacts it verifies are the ones recomputed here.)