Skip to content

1.0.0rc10

Pre-release
Pre-release

Choose a tag to compare

@ricardofrantz ricardofrantz released this 08 Oct 20:46
· 179 commits to main since this release

Changed

  • A line of frequencies on one card is faster. For a serial cuDSS
    factorization, a refactorize now takes the CSR arrays of the new operator
    once, checks the nonzero pattern against the first operator, writes the
    values into the same PETSc matrix, and gives them to cuDSS. The adjoint
    factor gets K^H from a permutation of those values that is computed once
    per factorization, not from a sparse transpose at every frequency. On the
    450,000-unknown Savarino operator, one A6000, the median line point went
    from 32.1 s to 25.8 s over the eight frequencies after the first of the
    beta = 40 line, with gains identical to ten digits. The path is the default; set
    LINSTABPY_FAST_REFACTOR=0 to use the general path. A different nonzero
    pattern raises ValueError.
  • The run summary reports the peak memory of the largest rank next to the
    sum over ranks.
  • run_all_examples.sh prints SOFT_FAIL with the case names when the
    Martini parity comparison has soft failures. Before, it printed PASS.

Fixed

  • examples/savarino/savarino_mapwalk.py compared each line gain with
    output/savarino_map2_200pt.csv, a farm computed before the filter-order
    fix. The farm_gain and rel_err columns of a line record then showed
    differences up to 4.4e-3 that are not in the line result. The default
    reference is now savarino_map3_200pt.csv, the committed map of record,
    in the script, in savarino_mapwalk.sbatch.template, which passed the old
    file explicitly, and in the test and docstrings that named it.

Added

  • wiki/ architecture pages and .github/workflows/pages.yml. MkDocs
    builds the site. Pages are hand-written and hand-maintained.

Fixed

  • The solvers/router/resolvent_map module docstring said every gain map
    needs SBP sawtooth dissipation. That claim is wrong on rectilinear
    meshes. The odd-even mode exists only on a mesh that is curvilinear in
    both directions, where the metric cross-terms mix grid-scale content.
    The docstring now states the mesh condition, points to
    driver.preflight.metric_cross_coupling() as the test, and scopes the
    tuned epsilon ~ 0.10 to the curved-wall mesh it came from. This aligns
    the last remaining text with the measured story already in
    config/defaults.py and driver/preflight.py.
  • The Martini parity manifest still pointed Example 3 at a combined
    example_3_streaky_bl.npz that nothing writes since the example was split
    into the four paper campaigns, so every full parity run reported a hard
    failure on a missing artifact. The compare now walks the per-campaign
    NPZs, each against its own MATLAB bundle, with the same residual-first
    gates as before, and aligns the component-sliced mode subsets the
    repository bundles store (idx rows, saved-mode columns) before pairing.
    With the wiring repaired, the full parity run reports four passes, two
    documented structural soft failures, and no hard failures.