Repository navigation
linstabpy v1.0.0rc4
Pre-release
Pre-release
[1.0.0rc4] - 2026-08-13
The Example 2 jet resolvent matched the MATLAB LinStab2D gains. The axis
coefficient used the true radius. The spatial filter sat inside the
forcing and response masks.
A forcing region composed with the boundary-condition mask.
input_region.space: conservative_momentum mapped conservative momentum
forcing onto the primitive residual.
Case files became YAML. One loader read a packed field. The tree dropped
JSONC, import shims, scripts/, and the unused Dockerfile.
Fixed
compute_cylindrical_coefficientsno longer floored R at the smallest
positive spacing. A grid that contains r = 0 raised ValueError.ResolventOperatorapplied the spatial filter inside the input and output
masks, matching MATLABresolvent.m.- The Example 2 leading gain moved from 411.72 to the MATLAB 413.72 reference.
- A forcing or response region composed with the boundary-condition mask.
mask_bc_forcingstayed true by default. A region no longer forced
constraint rows.- A region that selected only constrained rows raised.
mask_bc_forcing: falsestill forced those rows on purpose.- The Floquet shift also updated D2RZ. The default mode matched LinStab2D.
- The spatial EVP finite-differenced L in kx, not in the Floquet exponent.
- Example 3 applied spatial Dirichlet after Lc + omega Lw.
Added
input_region.space: conservative_momentummapped conservative momentum
forcing onto the primitive residual with a mass-weighted L2 norm.- Momentum forcing induced a consistent temperature forcing
T' = -kappa(kappa-1) Ma^2 (ubar · u'). load_configloaded YAML case files.load_case_fieldsread a packed npy directory or one npz.examples/songandexamples/savarinoshipped the reproduction chains.examples/sawtoothadded the Lui 2022 field on a packed stride-2 300 x 340 mesh.- Four paper Example 3 YAML files reused
example_3_streaky_bl.py. examples/martini/matlab_baseflow.pyheld the Martini MATLAB field constructors.build_runtime_payloadgrouped the runtime NPZ keys beforesave_results.install.sh --diagnoseprinted the host preflight and installed nothing.tests/tracked_file_size.pyandtests/public_provenance.pyreplacedscripts/.
Changed
- Example figures probed TeX by writing a PNG. They used usetex when that worked.
- A failed usetex save retried with Computer Modern mathtext.
- A missing TeX stack no longer crashed the figure.
- Case files under
examples/became YAML. The loader rejected a leftover.jsoncsuffix. - Shipped YAML files now comment each key.
validation_cases.yamlis YAML. - Comments and the tutorial now say YAML, not JSONC.
- Sponge presets dropped the
case1_prefix. - Moved the Martini, Song, and Savarino cases to
examples/martini,
examples/song, andexamples/savarino. - Packed the Song reference fields as float64 npz. The 32 deg field uses
velocity / c_inf and temperature / T_inf. - Packed Martini mode arrays as complex64. The largest file is
example_3_Streaky_BL_results_temporal_modes.npz. - Raised the tracked-file size limit from 50 MiB to 60 MiB for that file.
Removed
load_jsonc,load_hamada_case,results_runtime, and the solver import shims.- The
run/campaign kit and the broken Docker PETSc CI job. - The
mumps_icntl_7boolean alias. Usemumps_ordering: metis. - The unused
Dockerfilethat did not configure PETSc. - The
scripts/folder anddiagnose.sh.