feat(Rosenbrock): post-solve per-process verbose diagnostics#732
Draft
haakon-e wants to merge 2 commits into
Draft
feat(Rosenbrock): post-solve per-process verbose diagnostics#732haakon-e wants to merge 2 commits into
haakon-e wants to merge 2 commits into
Conversation
Member
Author
|
This change is part of the following stack:
Change managed by git-spice. |
This was referenced Jun 14, 2026
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 14, 2026 02:45
3877f3b to
060db2d
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 14, 2026 03:42
060db2d to
bc7f5f3
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 14, 2026 04:07
bc7f5f3 to
258ece7
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 16, 2026 20:00
258ece7 to
0122e0e
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 17, 2026 21:20
0122e0e to
224c902
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
2 times, most recently
from
June 18, 2026 22:41
328ac11 to
3ab1235
Compare
Merged
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 22, 2026 21:01
3ab1235 to
2b6587d
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 22, 2026 23:43
2b6587d to
4edcf64
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 26, 2026 00:38
a789eb4 to
df30b49
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 26, 2026 01:22
df30b49 to
82ef2c6
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
June 26, 2026 01:31
82ef2c6 to
83d763e
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 1, 2026 05:34
83d763e to
5d0be63
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 1, 2026 05:46
5d0be63 to
6299f13
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 1, 2026 06:24
6299f13 to
3e406c0
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 1, 2026 15:01
3e406c0 to
2b40424
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 8, 2026 04:34
2b40424 to
9f81040
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 10, 2026 02:14
9f81040 to
58e4ca6
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 10, 2026 23:15
58e4ca6 to
132adb1
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 11, 2026 00:58
132adb1 to
e91d34c
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 11, 2026 02:14
e91d34c to
db5a1cc
Compare
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 11, 2026 02:31
db5a1cc to
6eeffe8
Compare
Guard the Verbose substep Jacobian on state finiteness, matching the non-verbose loops' Euler fallback. Add an informative error for Verbose with a non-Exact Jacobian on the 2M+P3 scheme. Test that a limiter-free exact-Jacobian mode gives identical verbose and non-verbose nets.
haakon-e
force-pushed
the
he/postsolve-diagnostics
branch
from
July 11, 2026 03:28
6eeffe8 to
fb70028
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
Adds post-solve per-process tendency diagnostics for the
RosenbrockAveragemodes (1M and 2M+P3) as aVerbose{M}wrapper around any mode, reporting the contribution of each microphysical process as realized by the implicit solve.Why the decomposition is exact
Each substep solves a system that is linear in the right-hand side
f:so the per-process increments
Δₚsum to the substep incrementΔ. Withnsub > 1each substep is re-evaluated at the state it starts from, and the per-process increments and the clamp term are accumulated across substeps, so the relation holds for the averaged tendency. The positivity clampmax(x + Δ, 0)is the only nonlinear step; it is returned as a single correction termcthat is not attributable to any one process:The clamp is a no-op for the donor option (its rates are floored) and binds only rarely for the exact option, since the saturation adjustment already bounds growth. With the clamp disabled the decomposition is exactly
Σₚ Δₚ = net, which is a reason it could be made optional.Testing
Exactness tests confirm the per-process increments plus the clamp correction reconstruct the net to round-off (≈ 1e-13 in Float64) and that the verbose net equals the non-verbose net, for both schemes and precisions. The non-verbose path is unchanged and allocation-free. The verbose path currently allocates and is intended for offline diagnostics; an allocation-free version (a preallocated per-process accumulator, as in the earlier
LinearizedAverageverbose variant) is a possible refinement.