[us-commits] [ehb54/ultrascan3] 137e3a: somo/grpy: report ladder progress, and fix stray d...

emre brookes noreply at github.com
Thu Aug 6 23:13:18 MDT 2026


  Branch: refs/heads/ehb54-issue-984
  Home:   https://github.com/ehb54/ultrascan3
  Commit: 137e3a50fa1da2dc17cd94386b3636fa5f130b7c
      https://github.com/ehb54/ultrascan3/commit/137e3a50fa1da2dc17cd94386b3636fa5f130b7c
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-07 (Fri, 07 Aug 2026)

  Changed paths:
    M us_somo/develop/grpy/grpy_shell.hpp
    M us_somo/develop/grpy/tests/test_shell.cpp
    M us_somo/develop/src/us_hydrodyn_grpy.cpp

  Log Message:
  -----------
  somo/grpy: report ladder progress, and fix stray double percent in messages

Two reported problems with what the shell-reduction ladder shows while running.

PROGRESS. Every rung is a separate solve sweeping 0..100%, and each was
forwarded to the caller raw, so the bar restarted once per rung and the stage
text was only ever "Model 1 : inverting matrices" -- several solves looked
like one stalled repeating one. The ladder now maps each rung onto its share
of the whole run, weighted by predicted cost (~N^3), and prefixes the stage
with "rung i/n, N beads". The bar advances monotonically instead of
restarting. The denominator assumes the ladder runs to its last planned rung,
so converging early makes the bar jump to done, which is correct.

This is done by wrapping the callback inside the module, so the SOMO callback
signature is untouched and the non-shell path still passes progress through
verbatim (asserted by a test).

Also added ShellOptions::on_rung, called as each rung lands, wired to log the
bead count and the error estimate against the target. The ladder was otherwise
silent for its whole duration; now its convergence is visible as it happens.

PERCENT. Reported from a real run: "estimated error 0.489%%". QString::arg(),
unlike printf, has no "%%" escape -- it substitutes %1..%99 and passes every
other "%" through untouched -- so the literal "%%" written in five messages
reached the user verbatim. The tolerance line had it too ("tolerance 0.5%%").
Rather than rely on "%1%%2" parsing correctly (it does, but it is ambiguous to
read), the percent sign is now attached by grpy_pct(), which formats the whole
token. Verified against real Qt: the old form reproduces the reported string
exactly, the new one renders "0.489%".

The module's own report text was checked and is unaffected -- it formats via
snprintf, where "%%" is the correct escape.

Tests assert progress never goes backwards across a multi-rung ladder, stays
in 0..100, names its rung and bead count, and is left unmodified when shell
reduction is off.

Fixes ehb54/ultrascan-tickets#984

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>



To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications


More information about the us-commits mailing list