Compare NEMO freestream mass fractions against a roundoff tolerance - #2880
Open
bellonarts wants to merge 3 commits into
Open
Compare NEMO freestream mass fractions against a roundoff tolerance#2880bellonarts wants to merge 3 commits into
bellonarts wants to merge 3 commits into
Conversation
CSU2TCLib rejected the freestream composition with an exact floating-point equality on an accumulated sum at four gas-model sites, so a physically exact input such as ( 0.999, 0.00025, 0.00025, 0.00025, 0.00025 ), which sums to 1 - 1.1e-16 in double precision, was refused as a typo. Compare against a 1e-10 roundoff tolerance instead, report the offending sum with 16 significant digits (to_string would print 1.000000 for a sum that fails the tolerance by less than 5e-7), and fix the "Intial" typo. Add a Catch2 unit test that constructs the model for the AIR-5 roundoff composition and for N2 ( 0.999, 0.001 ); on stock develop the driver aborts in the AIR-5 constructor. No flow numbers change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
pcarruscag
reviewed
Sep 5, 2026
Remove the broad CNEMOGas constructor test at maintainer request and add Jared Bellon to AUTHORS.md. The solver-launch acceptance/rejection matrix remains the behavioral coverage. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
6 tasks
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.
Proposed Changes
CSU2TCLibvalidates the user-supplied freestream composition withif (mf != 1.0), an exact floating-point equality on an accumulated sum, at four gas-model sites (ARGON, N2, AIR-5, AIR-7). A physically exact composition need not sum to bit-exact unity in double precision. For examplesums to
1 - 1.1e-16and is rejected with "Intial gas mass fractions do not sum to 1!", which reads to the user as a typo in a composition that visibly sums to one. Any case seeding trace species can hit this.This PR compares against a
1e-10roundoff tolerance and reports the offending sum in the message. The tolerance sits about six orders above the roundoff in the example (1.1e-16) and four orders below the1.e-6already used for the same "is this roundoff?" question inCommon/src/fem/fem_geometry_structure.cpp, so genuine input errors are still rejected. The constant isconstexpr passivedoubleper the convention inoption_structure.hpp, and the message usesSU2_TYPE::GetValueso the change is safe under AD builds. The sum is printed with 16 significant digits through a small static helper shared by the four sites, becauseto_stringwould print1.000000for any sum that fails the tolerance by less than5e-7; a composition off by3e-7now reportssum = 0.9999997and a real typo reportssum = 0.99. The pre-existing "Intial" typo is corrected in the same lines.Verification with actual solver launches on the public viscous-cone mesh (
ITER= 0, exit code as the verdict): the roundoff-unity AIR-5 and AIR-7 compositions are now accepted; exact compositions for ARGON, N2, AIR-5 and AIR-7 remain accepted; real typos such as( 0.75, 0.24, 0, 0, 0 )remain rejected for every gas model. The regression baselines are unchanged, serial and MPI, so no regression vectors are modified.The contributor entry is added to
AUTHORS.md. A dedicated constructor unit test was removed in response to maintainer review; the acceptance/rejection matrix above exercises the behavior through actual solver launches.Related Work
The confusing failure mode may account for some reports of NEMO setup difficulty; it surfaces whenever trace species are seeded rather than left at exact zero. No open issue or PR is known to cover it.
PR Checklist
Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These a guide for you to know what the reviewers will be looking for in your contribution.
pre-commit run --allto format old commits.