FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Update deprecated EXT_ITER option in test configs by Syphonicc · Pull Request #2866 · su2code/SU2 · GitHub

/ SU2 Public

Update deprecated EXT_ITER option in test configs - #2866

Open
Syphonicc wants to merge 4 commits into
su2code:developfrom
Syphonicc:update-deprecated-ext-iter
Open

Update deprecated EXT_ITER option in test configs#2866
Syphonicc wants to merge 4 commits into
su2code:developfrom
Syphonicc:update-deprecated-ext-iter

Conversation

Syphonicc commented Aug 11, 2026
edited
Loading

Copy link
Copy Markdown

EXT_ITER was removed in SU2 v7 and replaced by ITER. These eight configs still used the old name and failed to parse. Values are unchanged; this is a rename only.

All eight verified to run on current develop with a serial build.

Proposed Changes

EXT_ITER was removed in SU2 v7 and replaced by ITER, but eight test configs still used the old name and fail to parse with a "invalid option name" error. This renames the option in each; iteration values are unchanged, so there's no behavioral change.

Files updated:

control_surface/inv_ONERAM6_moving.cfg
control_surface/inv_ONERAM6_setting.cfg
euler/CRM/inv_CRM_JST.cfg
euler/channel/inv_channel.cfg
navierstokes/naca0012/lam_NACA0012.cfg
rans/flatplate/turb_SST_flatplate.cfg
rans/s809/turb_S809.cfg
rans_uq/naca0012/turb_NACA0012_uq.cfg

All eight were run locally on current develop (serial build) and start and converge normally.

Two things I noticed while doing this, not addressed here , happy to open separate issues if useful:

Several other configs have further deprecated options (FROZEN_VISC, REF_LENGTH_MOMENT, GEO_AXIS_STATIONS, SOLUTION_LIN_FILENAME) and some have solver/turbulence-model settings that no longer validate.
The hom_euler test cases reference mesh files that don't appear to exist in either the SU2 or TestCases repos, so those can't be run or verified.

Related Work

None.

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 are a guide for you to know what the reviewers will be looking for in your contribution.

  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with --warnlevel=3 when using meson).
  • My contribution is commented and consistent with SU2 style (https://su2code.github.io/docs_v7/Style-Guide/).
  • I used the pre-commit hook to prevent dirty commits and used pre-commit run --all to format old commits.
  • I have added a test case that demonstrates my contribution, if necessary.
  • I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp), if necessary.

EXT_ITER was removed in SU2 v7 and replaced by ITER. These eight
configs still used the old name and failed to parse. Values are
unchanged; this is a rename only.

All eight verified to run on current develop with a serial build.

Copy link
Copy Markdown
Contributor

While you're at it: I counted 42 instances of EXT_ITER in the Testcases subdirectory.
Are these cases regression-tested? If they have invalid config options they should not be able to run?

Copy link
Copy Markdown
Author

While you're at it: I counted 42 instances of EXT_ITER in the Testcases subdirectory. Are these cases regression-tested? If they have invalid config options they should not be able to run?

Right none of them are regression-tested, which is why they've been able to rot. I checked every config containing EXT_ITER against serial_regression.py and parallel_regression.py and none are referenced. As you say, they'd fail immediately in CI otherwise.

I swept all 42 locally (fixing EXT_ITER → ITER and running each with a short iteration cap). Breakdown:

8 run fine with just the rename , those are this PR.

24 are the hom_euler DG cases. They need REF_LENGTH_MOMENT → REF_LENGTH as well, but 21 then fail because the referenced mesh files don't exist in either repo, and 3 are unsteady so EXT_ITER maps to TIME_ITER/INNER_ITER rather than ITER. I left all of these alone since I can't verify them.

The rest need individual fixes: further deprecated options (FROZEN_VISC, GEO_AXIS_STATIONS, SOLUTION_LIN_FILENAME), SOLVER= NAVIER_STOKES with a turbulence model set (should presumably be RANS), SOLVER= FLUID_STRUCTURE_INTERACTION which no longer exists, and a couple of Sutherland's-law validation errors.

Happy to keep going on the fixable ones in follow-up PRs if that's useful I kept this one to the cases I could actually verify run.

Copy link
Copy Markdown
Contributor

I think it makes more sense to look at these config files individually, get them working and then add them to the regression test. These might be relatively easy to fix:
euler/CRM/inv_CRM_JST.cfg
euler/channel/inv_channel.cfg
navierstokes/naca0012/lam_NACA0012.cfg
rans/flatplate/turb_SST_flatplate.cfg
rans/s809/turb_S809.cfg

I don't think they test something exotic and you can visually inspect the result to see if it looks reasonable.

I am not sure what the moving/setting onera cases are supposed to test, and for uncertainty quantification a more thorough test is needed to make sure it works as expected.

EXT_ITER was removed in SU2 v7. These five configs still used it and
failed to parse. Beyond the rename:

- lam_NACA0012: CFL 1.0 -> 3.0 with adaptation enabled. At CFL 1 it
  reached only -8.56 in 10k iterations and would need roughly 60k to
  meet its -12 criterion; with CFL 3 it converges fully in 5824.
- turb_SST_flatplate: adaptation enabled, improving the 10k-iteration
  residual from -8.26 to -14.46.
- Fixed swapped CFL_ADAPT_PARAM values (factor-down must be < 1.0) in
  those two files. Note the same reversed values appear in several other
  configs, inert only because CFL_ADAPT is NO.

inv_channel, inv_CRM_JST and turb_S809 needed the rename only. ITER
values set to allow full convergence rather than the previous 99999.

Reverted the two ONERAM6 control_surface cases and rans_uq as discussed.

All five verified locally on a serial build.

Copy link
Copy Markdown
Author

Updated this to the five cases you suggested, and worked each one properly rather than just doing the rename. Reverted the two ONERAM6 control_surface cases and rans_uq as you suggested.

Case Converges to Change
euler/channel/inv_channel −12.00 @ 6782 ✅ rename only
euler/CRM/inv_CRM_JST −6.01 @ 778 ✅ rename only
navierstokes/naca0012/lam_NACA0012 −12.00 @ 5824 ✅ CFL 1→3, adaptation on
rans/flatplate/turb_SST_flatplate −14.46 (plateau, criterion is −15) adaptation on
rans/s809/turb_S809 −9.02 @ 10k (criterion is −12) rename only

On the CFL changes: lam_NACA0012 at CFL 1 reached only −8.56 in 10k iterations and would need roughly 60k to meet its −12 criterion; CFL 3 with adaptation converges fully in 5824. turb_SST_flatplate went from −8.26 to −14.46 at 10k iterations just by enabling adaptation. I also tried adaptation on turb_S809 and it made things worse (−7.39 vs −9.02), so I left that one as-is.

While enabling adaptation I hit an error on CFL_ADAPT_PARAM: factor-down and factor-up are swapped in these files (1.5, 0.5 instead of 0.5, 1.5). It's inert wherever CFL_ADAPT= NO, but the same reversed values appear in quite a few other configs. Fixed in the two files where adaptation is now on.

Two cases don't reach their configured CONV_RESIDUAL_MINVAL. turb_SST_flatplate plateaus at −14.46 against −15 (I ran it to 30k; it gained 0.005 between iterations 25k and 30k). turb_S809 is still descending at 10k but slowly. Happy to relax those criteria if you'd prefer, or leave them.

Visual checks below, all coloured by Mach:

  • inv_channel — smooth subsonic acceleration over the bump, peak Mach 0.13, no shocks.
  • inv_CRM_JST — supersonic pocket on the upper wing reaching Mach 1.3 with a clear spanwise shock, as expected at Mach 0.8395 / AoA 3.06°.
  • lam_NACA0012 — thick laminar boundary layer and broad wake, symmetric top/bottom at AoA 0, consistent with Re=5000.
  • turb_SST_flatplate — thin turbulent boundary layer growing along the plate at Re=5×10⁶.
  • turb_S809 — attached flow with a slight upper-surface bias from the camber, no separation.

All five added to serial_regression.py with test_iter = 25; values verified reproducible locally, though I expect CI will want slightly different ones as before.

)

Copy link
Copy Markdown
Contributor

Looks pretty good, you can lower the convergence criterion for turb_sst_flatplate to -12. Thats probably sufficient. But all cases take a long time to converge. With adaptive cfl, is the cfl really increasing a lot? My guess is these cases should run with cfl=100 or so because the mesh is nice and the physics simple.. the only main concern us th s809 airfoil because it does nit converge with the current settings. The guideline is that all testcases have a config that works well and converges the solution, preferably fast.

Copy link
Copy Markdown
Author

Looks pretty good, you can lower the convergence criterion for turb_sst_flatplate to -12. Thats probably sufficient. But all cases take a long time to converge. With adaptive cfl, is the cfl really increasing a lot? My guess is these cases should run with cfl=100 or so because the mesh is nice and the physics simple.. the only main concern us th s809 airfoil because it does nit converge with the current settings. The guideline is that all testcases have a config that works well and converges the solution, preferably fast.

Thanks. Setting CONV_RESIDUAL_MINVAL= -12 for the flat plate and you were right about the CFL.

turb_SST_flatplate: CFL was pinned at exactly 100, i.e. sitting on the CFL_ADAPT_PARAM ceiling the whole run. Raising it helped a lot, but the growth factor mattered too — (0.5, 1.5, 10.0, 1000.0) overshot and NaN'd around CFL 570. CFL_NUMBER= 50 with (0.5, 1.2, 10.0, 200.0) is stable at CFL 200 and converges to −12 in 3836 iterations, versus −8.26 at 10k with the original settings. Updated.

turb_S809 is the problem case, and I haven't cracked it. CFL won't go above single digits no matter what I try — adaptation raises it, it gets knocked straight back, and it settles on whatever the floor is. Things I tested, everything else held constant:

CFL ceiling 100 → 200, growth 1.5 and 1.2: pinned at the floor either way
LINEAR_SOLVER_ITER 2 → 10 and LINEAR_SOLVER_ERROR 1E-4 → 1E-6: no change
SLOPE_LIMITER_FLOW= NONE → VENKATAKRISHNAN (it currently runs MUSCL unlimited, with an orphaned VENKAT_LIMITER_COEFF): residual actually started creeping back up

Best I've got is −9.02 at 10k with the original settings. One thing I noticed: SU2 reports a max CV face area aspect ratio of ~104,000 for this mesh. I'm wondering whether that's what's capping the timestep rather than any solver setting. Do you know if this case has a history of being awkward, or would a different mesh be the answer?

Happy to drop s809 from this PR and land the other four if that's easier or keep digging if you have a direction.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants


Back | FazBrowse Home | New Git URL