Conversation
The EC2 validation workflow has run the 129x129 cavity cases on every master push since June, but the results table still said TBD. Runs 34853615452, 34815324268 and 30116961115 gave identical RMS for the AVX2, OpenMP and CUDA projection backends at Re=100/400/1000, all at least 3x under the 0.10 target, so the step budgets stay and the ROADMAP 6.1 Ghia item is done. Cross-architecture consistency stays open: its 0.1% check never includes the GPU. Each backend line now prints the steps it ran. That shows the Explicit Euler cases stopping near 11,300 steps through the kinetic-energy exit on both the 33x33 and 129x129 grids, which is why their RMS does not change with grid size; the validation doc and ROADMAP record it as a follow-up. ec2-validate.sh ran the test binary without a filter, which skips Re=400 and Re=1000, and set -e swallowed its failure banner. It now runs the registered CavityBackend_ ctest entries and reports the result.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The new output mislabels a KE threshold as convergence, and the updated 33×33 section retains stale results and settings.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Records validated 129×129 Ghia cavity results and improves EC2 validation reporting.
Changes:
- Documents backend results, provenance, and the Explicit Euler limitation.
- Reports actual step counts and KE stopping status.
- Runs all
CavityBackend_*tests with improved logging and failure handling.
File summaries
| File | Description |
|---|---|
tests/validation/test_cavity_backends.c |
Adds step and KE-residual output. |
scripts/ec2-validate.sh |
Runs all backend cases and summarizes results. |
ROADMAP.md |
Records validation completion and Euler follow-up. |
docs/validation/lid-driven-cavity.md |
Updates validation configuration and results. |
docs/validation/cavity-backends-validation.md |
Adds full results, provenance, and known issue. |
docs/reference/solvers.md |
Updates measured RMS results and links. |
CHANGELOG.md |
Records validation and script changes. |
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 2
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Renaming the heading to 33x33 made the old ~0.10/~0.08 RMS, 3000-4000 steps and "reaches steady state" read as current CI behavior (review on #212). The CI run is 5000 steps at dt 0.0005 with RMS 0.0382/0.0440, and it ends with a per-step kinetic-energy change of 2.7e-5, far from steady state. The Fast Mode step count above it was stale the same way.
result.converged only means the per-step kinetic-energy change fell below 1e-8. The Explicit Euler cases report it at t~1.1 with an undeveloped flow, so "converged: yes" read as a physical conclusion (review on #212).
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.
The 129×129 Ghia results table in
docs/validation/cavity-backends-validation.mdstill said TBD, and ROADMAP §6.1 listed it as the main open P0 item for v1.0. No new run was needed: since the Re=400/1000 cases landed, the EC2 workflow (gpu-validation.yml) has built with-DCAVITY_FULL_VALIDATION=ONand run everyCavityBackend_*case on each push to master. This PR records those results and closes the Ghia item. It also covers two gaps found along the way: the Explicit Euler cases stop early (recorded, not fixed), andscripts/ec2-validate.shnever ran Re=400/1000 (fixed).Results
Three EC2 runs gave identical values: 34853615452 (
6e1b104), 34815324268 (23b196a) and 30116961115 (#201). AVX2, OpenMP and CUDA agree to four decimals:Every case is at least 3× under the 0.10 target, so the step budgets stay unchanged.
What changed
Test output
test_backend_validation()now printsSteps run: N/budget stopped by KE threshold: yes|no KE residual: Xfor each backend. It only adds output; pass/fail logic is unchanged.RMS_u:,SKIPPEDand[FAILED], the strings the workflow's summary awk keys on. It is namedSteps run:so it can't be confused with theSteps:header thatmain()already prints.Explicit Euler cases stop early (recorded, not fixed)
scripts/ec2-validate.shtest_cavity_backendswith no filter, which skips the Re=400/1000 cases because they need an explicit filter. It now runsctest -R '^CavityBackend_' --no-tests=error, which covers exactly the 12 entries registered inCMakeLists.txt.set -euo pipefail, a failing test binary ended the script beforeEXIT_CODE=$?ran, so the FAILED banner never printed. The status is now captured with|| EXIT_CODE=$?.-j 4, withOMP_NUM_THREADS = nproc / 4unless--threadsis given.validation_output.txt, and the backend, steps and RMS lines are printed as a summary at the end.--release, matching CI.Docs
docs/validation/cavity-backends-validation.md:projection_jacobi_gpurenamed toprojection_gpu;docs/validation/lid-driven-cavity.md:#define);docs/reference/solvers.md: measured RMS replaces "RMS error < 0.01", and the brokenvalidation/…link is fixed.ROADMAP.md§6.1:CavityBackend_Consistencycompares CPU, AVX2 and OpenMP at 33×33 and never includes the GPU.CHANGELOG.md: Added and Fixed entries.Verification
Windows, MSVC with OpenMP.
-DCAVITY_FULL_VALIDATION=ON):euler_avx2,euler_ompandconsistencypass and print the new line. Euler RMS matches EC2 exactly (0.0957 / 0.1293 and 0.0957 / 0.1277).ctest -N -R "^CavityBackend_"lists exactly 12 tests.gpu-validation.yml, run on that output, still produces correct rows.projection_scalarruns 5000/5000 steps with RMS 0.0382 / 0.0440, as documented.euler_scalarpasses and printsstopped by KE threshold: yes.bash -n scripts/ec2-validate.shpasses, and the new relative doc links resolve.ec2-validate.shend to end on Linux.Steps run:lines for the projection cases, in the first EC2 run after merge (or earlier if this PR is labelledgpu-test).🤖 Generated with Claude Code