Skip to content

Apply the QCR2000 correction to the turbulent stress only (fix #2738) - #2855

Draft
bigboateng wants to merge 1 commit into
su2code:developfrom
bigboateng:fix_qcr_turbulent_stress
Draft

Apply the QCR2000 correction to the turbulent stress only (fix #2738)#2855
bigboateng wants to merge 1 commit into
su2code:developfrom
bigboateng:fix_qcr_turbulent_stress

Conversation

@bigboateng

Copy link
Copy Markdown

Proposed Changes

The QCR2000 quadratic constitutive relation (Spalart, Int. J. Heat and Fluid Flow, 2000) modifies the turbulent (Boussinesq) stresses, but CNumerics::AddQCR was applied to the total stress tensor at all call sites: laminar + eddy in the viscous fluxes (scalar and SIMD paths), and the purely laminar tensor in Friction_Forces, where the eddy viscosity is zero and the correction should vanish identically. For a pure-shear wall state this injects spurious normal stresses of ±0.6·τ_wall into the wall traction, which redistributes drag between the pressure and friction components while leaving total drag nearly unchanged — the exact signature reported in #2738.

This PR scales the correction by the turbulent fraction of the viscosity used to build the tensor, mu_t / (mu_l + mu_t), which recovers the turbulent-only correction exactly because the stress tensor is linear in the viscosity (SA carries no turbulent-kinetic-energy term). The wall-force site passes a zero fraction on smooth walls. A unit test covers both properties (zero correction at mu_t = 0; scaled-total ≡ separate-turbulent-tensor).

Validation (Ubuntu 24.04, source build at de8c5015, the #2738 reporter's Joukowski R2 grid, 12000 iters, rms[Rho] ≈ −11):

run CDp CDv CD
SA 0.003180 0.004735 0.007915
SA-QCR2000, before 0.003482 0.004432 0.007914
SA-QCR2000, after 0.003183 0.004716 0.007898
SA on patched build 0.003179 0.004735 0.007915

Before the change, QCR2000 shifts CDp +9.5% / CDv −6.4%; after it, the split returns to within 0.1% of SA, consistent with CFL3D/FUN3D/Fluent behavior for this attached flow (HiFi CFD verification workshop references). With QCR disabled the patched build is behaviorally unchanged.

Note: the turb_SA_QCR_RAE2822 reference values in parallel_regression.py shift by 1e-4…4e-3 (verified on a same-platform before/after pair); I will update them from this PR's CI output, since reference values are runner-specific. Opening as a draft until then.

Related Work

Fixes #2738.

PR Checklist

  • 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.

The quadratic constitutive relation (Spalart 2000) modifies the turbulent
(Boussinesq) stresses, but AddQCR was applied to the total stress tensor:
laminar + turbulent in the viscous fluxes, and the purely laminar tensor
in the wall force integration, where the eddy viscosity is zero and the
correction must vanish. This shifted the pressure/viscous drag split for
SA-QCR2000 cases (issue su2code#2738) while leaving total drag nearly unchanged.

Scale the correction by the turbulent fraction of the viscosity used to
build the tensor, mu_t / (mu_l + mu_t), which recovers the turbulent-only
correction exactly because the tensor is linear in the viscosity (no
turbulent kinetic energy term for SA). The wall-force site now passes a
zero fraction on smooth walls.
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.

1 participant