Skip to content

DDES, IDDES and shear-layer-adapted DDES for SST, and fixes to SA EDDES - #2150

Open
rois1995 wants to merge 79 commits into
developfrom
feature_SST_IDDES
Open

rois1995 wants to merge 79 commits into
developfrom
feature_SST_IDDES

Conversation

@rois1995

@rois1995 rois1995 commented Oct 22, 2023 •

Copy link
Copy Markdown
Contributor

Proposed Changes

DDES formulations for the SST model, and fixes to the shear-layer-adapted (EDDES) length scale of SA.

New HYBRID_RANSLES options for SST, from Gritskevich et al., Development of DDES and IDDES Formulations for the k-ω Shear Stress Transport Model, Flow Turbulence Combust 88, 2012 (DOI):

  • SST_DDES: DDES (Appendix 1).
  • SST_IDDES: IDDES (Appendix 2).
  • SST_SIDDES: simplified IDDES, i.e. IDDES without the elevating function f_e (Eq. 12).

In all of them the destruction term of the k equation becomes ρ k^{3/2} / l_DES.

Shear-layer-adapted (SLA) length scale, from Shur et al., An Enhanced Version of DES with Rapid Transition from RANS to LES in Separated Flows, Flow Turbulence Combust 95, 2015 (DOI): Δ_SLA = Δ̃_ω F_KH(⟨VTM⟩), with F_KH = 1 where f_d < 0.99 (Eq. 6).

  • SST_EDDES: SST-DDES with Δ_SLA (as in Guseva et al., Flow Turbulence Combust 98, 2017, and Xiao et al., Int. J. Heat Fluid Flow 85, 2020).
  • SA_EDDES_UNSTR, SST_EDDES_UNSTR: Δ̃_ω for unstructured grids. The vertices of the dual cell are approximated by the midpoints of the edges, and the maximum of |n_ω × (r_n − r_m)| is taken over all pairs. In *_EDDES, Δ̃_ω uses a box with the grid spacings of the point in each direction.

The length scale is computed by CTurbSolver::ShearLayerAdaptedLengthScale, shared by SA and SST. Where the vorticity vanishes, its direction is undefined and h_max is used, as in standard DDES.

Fixes to the existing SA_EDDES (they change the reference values of the ddes_flatplate test):

  • Vortex tilting measure: the denominator used only the diagonal of the strain tensor, while 3 tr(S²) sums the squares of all its components.
  • F_KH limiter: where f_d < 0.99, Δ = Δ̃_ω (F_KH = 1) instead of h_max, and the threshold was 0.999.
  • Δ̃_ω: it used |n_ω × |x_j − x_i|| over the neighbors instead of the vertex pairs of Eq. 1.

Other changes

  • Hybrid RANS/LES models now require TIME_DOMAIN= YES.
  • New volume outputs: LESIQ and SRS_GRID_SIZE (group DDES), velocity gradient (VELOCITY_GRADIENT), SST F1, F2 and cross-diffusion (SST_QUANTITIES).

Tests

  • New regression tests ddes_oneram6_* (serial, parallel and hybrid), one per model: SST_DDES, SST_IDDES, SST_SIDDES, SST_EDDES, SST_EDDES_UNSTR, SA_EDDES, SA_EDDES_UNSTR. They run 5 time steps on the existing ONERA M6 hexahedral grid, restarting from a SST or SA RANS solution, so that the LES branch of the length scale is active and every model gives different results (about 2 s each on 2 ranks).
  • The restart solutions are in Restart solutions for the hybrid RANS/LES tests on the ONERA M6 TestCases#206. Temporary: .github/workflows/regression.yml uses the feature_SST_IDDES branch of TestCases until that PR is merged.

Validation cases (e.g. NACA 0021 beyond stall, backward-facing step) are in progress.

Related Work

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.

🤖 Generated with Claude Code

Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Fixed
Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Fixed
@rois1995 rois1995 changed the title [WIP] Implementation of DDES formulations for SST [WIP] Implementation of DDES and SAS formulations for SST Oct 23, 2023
Comment thread Common/include/option_structure.hpp Outdated
Comment on lines +993 to +994
SAS_SIMPLE, /*!< \brief Menter k-w SST model with Scale Adaptive Simulations modifications. */
SAS_COMPLICATED, /*!< \brief Menter k-w SST model with Scale Adaptive Simulations modifications. */

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these the names in the literature?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, these are just placeholders. There are no names in literature, that is why I named them according to the complexity of the model

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe something after the authors since the models come from different papers.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, why not

Comment thread Common/include/option_structure.hpp Outdated
Comment on lines +1017 to +1020
SST_OPTIONS sasModel = SST_OPTIONS::SAS_SIMPLE; /*!< \brief Enum SST base model. */
bool sust = false; /*!< \brief Bool for SST model with sustaining terms. */
bool uq = false; /*!< \brief Bool for using uncertainty quantification. */
bool sas = false; /*!< \brief Bool for using Scale Adaptive Simulations. */

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably the type is enough and "none" indicates no sas.

Suggested change
SST_OPTIONS sasModel = SST_OPTIONS::SAS_SIMPLE; /*!< \brief Enum SST base model. */
bool sust = false; /*!< \brief Bool for SST model with sustaining terms. */
bool uq = false; /*!< \brief Bool for using uncertainty quantification. */
bool sas = false; /*!< \brief Bool for using Scale Adaptive Simulations. */
SST_OPTIONS sasModel = SST_OPTIONS::NONE; /*!< \brief Enum SST base model. */
bool sust = false; /*!< \brief Bool for SST model with sustaining terms. */
bool uq = false; /*!< \brief Bool for using uncertainty quantification. */

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll modify it.

Comment thread Common/src/CConfig.cpp Outdated
Comment on lines +6160 to +6162
case SST_DDES: cout << "Delayed Detached Eddy Simulation (DDES) with Shear-layer Adapted SGS" << endl; break;
case SST_IDDES: cout << "Delayed Detached Eddy Simulation (DDES) with Shear-layer Adapted SGS" << endl; break;
case SST_SIDDES: cout << "Delayed Detached Eddy Simulation (DDES) with Shear-layer Adapted SGS" << endl; break;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description is slightly different right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I planned to modify the details on the final implementation. I'll do it now

Comment thread SU2_CFD/include/numerics/CNumerics.hpp Outdated

su2double lengthScale_i, lengthScale_j;
su2double FTrans; /*!< \brief SAS function */
su2double VelLapl_X, VelLapl_Y, VelLapl_Z;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use a matrix type for the laplacian in CVariable and here you can have a pointer instead.
Put these variables close to other turbulence variables please.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the main problem with my implementation is that the norm of the velocity laplacian stated in the paper is $||U''||=\sqrt{\sum_i \left( \frac{\partial^2 U_i}{\partial x_j \partial x_j}\right)^2}$ and I am not sure that this is what I am computing. Do I need to store a matrix for each velocity component, compute it as gradient of the gradient and then sum the traces of each matrix?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That looks like the norm of the Laplacian of the velocity components, the way you are computing it is not very accurate but maybe it is good enough. You could do it the finite volume way by reusing the numerics classes we use for scalar viscous fluxes.

Comment on lines +869 to +871
su2double VelLaplMag = VelLapl_X*VelLapl_X + VelLapl_Y*VelLapl_Y;
if (nDim == 3) VelLaplMag += VelLapl_Z*VelLapl_Z;
const su2double L_vK_1 = KolmConst * StrainMag_i / sqrt(VelLaplMag);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the velocity laplacian only used for the source term? Or will you have changes to the convection or diffusion fluxes?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is just for the source term

Comment on lines +78 to +96
/*!
* \brief Get the value of the turbulence kinetic energy.
* \return the value of the turbulence kinetic energy.
*/
inline su2double GetSSTVariables_k(unsigned long iPoint) const { return k(iPoint); }

/*!
* \brief Get the value of the turbulence frequency Omega.
* \return the value of the turbulence frequency Omega.
*/
inline su2double GetSSTVariables_omega(unsigned long iPoint) const { return Omega(iPoint); }

/*!
* \brief Set the value of the SST variables computed with SA solution.
* \param[in] val_k
* \param[in] val_Omega
*/
void SetSSTVariables(unsigned long iPoint, su2double val_k, su2double val_Omega) {
k(iPoint) = val_k;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these changes related to the main theme? or were just debugging? If they can be separated to another PR let's do that please.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are for computing the grid size for scale resolving simulations from an SA solution. Probably it has to be revised a little bit, since I found out that the formulation for the TKE is different if the QCR mod is used, thus I think I'll remove them for now.

Comment thread externals/codi

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to undo this change to the codi version.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll do it

Comment thread SU2_CFD/src/output/CFlowOutput.cpp Outdated
Comment thread SU2_CFD/src/output/CFlowOutput.cpp
Comment thread SU2_CFD/include/variables/CVariable.hpp Outdated
Comment on lines +1682 to +1703
inline virtual su2double GetVelLapl_X(unsigned long iPoint) const { return 0.0; }
/*!
* \brief Get the value of the value of FTrans.
*/
inline virtual su2double GetVelLapl_Y(unsigned long iPoint) const { return 0.0; }
/*!
* \brief Get the value of the value of FTrans.
*/
inline virtual su2double GetVelLapl_Z(unsigned long iPoint) const { return 0.0; }

/*!
* \brief Set the value of the value of FTrans.
*/
inline virtual void AddVelLapl(unsigned long iPoint, su2double val_VelLapl_X, su2double val_VelLapl_Y) {}
/*!
* \brief Set the value of the value of FTrans.
*/
inline virtual void AddVelLapl_Z(unsigned long iPoint, su2double val_VelLapl_Z) {}
/*!
* \brief Set the value of the value of FTrans.
*/
inline virtual void SetVelLapl(unsigned long iPoint, su2double val_VelLapl_X, su2double val_VelLapl_Y) {}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use a pointer for velocity and then you only need one of each function instead of handling xyz separately.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'll try using the matrix type

- Changed names of SAS models
- Added descriptions of functions
- Clean up of output functions
- Removed SA functions or SST variables
Comment thread SU2_CFD/include/numerics/CNumerics.hpp Outdated
Comment thread SU2_CFD/include/numerics/CNumerics.hpp Outdated
Comment thread SU2_CFD/src/output/CFlowOutput.cpp Outdated
Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Outdated
/*--- If iPoint is boundary it only takes contributions from other boundary points. ---*/
if (boundary_i && !boundary_j) continue;

/*--- Add solution differences, with correction for compressible flows which use the enthalpy. ---*/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check if comments need updates please

@bigfooted

Copy link
Copy Markdown
Contributor

Hi @rois1995 any progress? Would be very interesting to add this to develop, looking forward to using it actually.

@rois1995

rois1995 commented Mar 7, 2024

Copy link
Copy Markdown
Contributor Author

Hi @rois1995 any progress? Would be very interesting to add this to develop, looking forward to using it actually.

Hi @bigfooted, unfortunately I do not have enough time/computational power to perform a proper validation. I only tried something with a NACA0021 at 17 deg and 60 deg and they were promising, at least for the DDES implementation. The SAS ones are not that good. I'll upload some post-processing as soon as I have the time to do so.

@Linnnnnn23

Copy link
Copy Markdown

I find your work really interesting. I've been studying the internal flow field in compressors and have had good results using SU2's SA_EDDES for calculating the cantilevered stator with a tip clearance. If you need help with code verification, I'd be glad to assist.

@rois1995

Copy link
Copy Markdown
Contributor Author

I find your work really interesting. I've been studying the internal flow field in compressors and have had good results using SU2's SA_EDDES for calculating the cantilevered stator with a tip clearance. If you need help with code verification, I'd be glad to assist.

Hi @Linnnnnn23, every help on the validation/verification is gladly accepted! Let me know if you need anything by my side.

@Linnnnnn23

Copy link
Copy Markdown

I find your work really interesting. I've been studying the internal flow field in compressors and have had good results using SU2's SA_EDDES for calculating the cantilevered stator with a tip clearance. If you need help with code verification, I'd be glad to assist.

Hi @Linnnnnn23, every help on the validation/verification is gladly accepted! Let me know if you need anything by my side.
Thank you for your response. Firstly, I would like to know what Verification and Validation (V&V) work has been conducted on the SST-based DDES (Delayed Detached Eddy Simulation) model to date. Secondly, we can provide a compressor cascade validation, with an inlet Mach number of 0.4, a Reynolds number of approximately 500,000, and a spanwise height of about 20% of the chord length, ensuring that the vortices resolved by DDES can develop in three dimensions. Thirdly, as I am a rookie to GitHub, I have not yet found out how to download your pull request code. For further communication, you can contact me via email at linnnnnn2308@gmail.com

@BerkeCan97

Copy link
Copy Markdown
Contributor

Hi @rois1995 , I'd like to help with validation/verification if I can. Let me know if you are interested. You can contact me at berkecancfd@gmail.com.

@BerkeCan97

BerkeCan97 commented Oct 30, 2024 •

Copy link
Copy Markdown
Contributor

Hi @rois1995 any progress? Would be very interesting to add this to develop, looking forward to using it actually.

Hi @bigfooted, unfortunately I do not have enough time/computational power to perform a proper validation. I only tried something with a NACA0021 at 17 deg and 60 deg and they were promising, at least for the DDES implementation. The SAS ones are not that good. I'll upload some post-processing as soon as I have the time to do so.

Hi @rois1995, I believe there is an error or a typo in the Babu's paper in the Q_SAS source term and in turn in your implementation, which may be the reason for the poor performance in SAS results.

image

This term changes units depending on the output of the max function, which doesn't make any sense. I believe the terms in the max function should be divided by omega^2 and k^2 instead of omega and k, respectively. Which is exactly how it is done in https://resolver.tudelft.nl/uuid:5d23e2a6-5675-450d-bf3d-1dd40d736cae

I will try some of the benchmark cases in these papers when I have the time. Let me know what you think.

[edit: fixed the link to the tudelft repository]

Comment thread SU2_CFD/include/numerics/turbulent/turb_sources.hpp Outdated
Comment thread SU2_CFD/include/variables/CVariable.hpp Fixed
Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Fixed
Comment thread SU2_CFD/src/variables/CTurbVariable.cpp Fixed
@rois1995

rois1995 commented Oct 3, 2025

Copy link
Copy Markdown
Contributor Author

Should we allow DDES to be run on 2D meshes? The DDES flatplate testcase has a 2D mesh, but it does not really make any sense to run 2D cases with DDES.

@pcarruscag

Copy link
Copy Markdown
Member

If someone is determined enough they'll make a 2.5D mesh and still run it 😄
Maybe you can just print a big warning but allow it to run? It could be useful for regression tests.
Is there anything in the implementation that only works for 3D?

@rois1995

rois1995 commented Oct 6, 2025

Copy link
Copy Markdown
Contributor Author

I am pretty sure that the EDDES models have something that does not work in 2D, like the vortex-tilting measure (depends on the scalar product of the gradient of the velocity and the vorticity, thus in 2D it should be zero).

Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Fixed
Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Fixed
@bigfooted

Copy link
Copy Markdown
Contributor

@rois1995 @pcarruscag should we finalize this before the conflicts get out of control? If time is the issue, I propose we only add a regression test for this PR.
I can support with the V&V if you can share a testcase, or we can find a student to do this.

@pcarruscag pcarruscag left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are many variants being added Nijso, one regression is probably not enough.

Comment thread SU2_CFD/src/solvers/CTurbSASolver.cpp Outdated
Comment on lines +194 to +201
su2double **Grad_Vel = new su2double* [nDim];
su2double **StrainMat = new su2double* [nDim];
auto Vorticity = flowNodes->GetVorticity(iPoint);
auto PrimGrad_Flow = flowNodes->GetGradient_Primitive(iPoint);
for (unsigned short iDim = 0; iDim < nDim; iDim++) {
Grad_Vel[iDim] = new su2double [nDim];
StrainMat[iDim] = new su2double [nDim];
for (unsigned short jDim = 0; jDim < nDim; jDim++) {
Grad_Vel[iDim][jDim] = nodes->GetGradient_Primitive(iPoint, prim_idx.Velocity() + iDim, jDim);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory leak.
Use something with static sizes instead of allocating with new

Comment thread SU2_CFD/src/solvers/CTurbSSTSolver.cpp Outdated
Comment on lines +215 to +224
for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++){
su2double **Grad_Vel = new su2double* [nDim];
su2double **StrainMat = new su2double* [nDim];
auto Vorticity = flowNodes->GetVorticity(iPoint);
for (unsigned short iDim = 0; iDim < nDim; iDim++) {
Grad_Vel[iDim] = new su2double [nDim];
StrainMat[iDim] = new su2double [nDim];
for (unsigned short jDim = 0; jDim < nDim; jDim++) {
Grad_Vel[iDim][jDim] = nodes->GetGradient_Primitive(iPoint, prim_idx.Velocity() + iDim, jDim);
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

rois1995 and others added 7 commits September 23, 2026 16:04
Keep the DES length scale and the vortex tilting measure in CTurbVariable,
shared by SA and SST, and the stochastic backscatter variables of develop
in CTurbSAVariable.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
…A and SST EDDES

Preprocessing allocated the velocity gradient and strain matrices with new
for every point at every iteration and never freed them (about 300 bytes
per point and iteration), so EDDES runs ran out of memory. The gradient was
also read from the turbulence variables instead of the flow variables, and
2D cases wrote 3x3 strain entries into 2x2 arrays.

Pass the flow primitive gradient to SetVortex_Tilting as in develop, which
computes the strain without allocations, and move it to CTurbVariable so
that SA and SST share it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
SST_EDDES fell through to SST_EDDES_UNSTR because of a missing break.
Without vorticity (e.g. a uniform initial flow) the vorticity direction is
undefined, Delta_omega vanishes and the DES length scale goes to zero, which
made the k destruction term blow up at the first iteration. Use h_max there,
as in standard DDES.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
…SA and SST EDDES

- Vortex tilting measure: the denominator used only the diagonal of the
  strain tensor, 3 tr(S^2) sums the squares of all its components. It is
  set to 1 (F_KH = 1) where it is undefined (no vorticity or strain
  anisotropy).
- F_KH limiter (Eq. 6): where f_d < 0.99 F_KH is set to 1, so the length
  scale is Delta_omega and not h_max. SA_EDDES used 0.999.
- Structured Delta_omega (Eq. 1): the maximum of |n x (r_n - r_m)| over
  the vertices of a box with the grid spacings of the point, instead of
  |n x |x_j - x_i|| over the neighbors.
- Without vorticity Delta_omega vanishes, h_max is used as in standard DDES.

The length scale is computed by CTurbSolver::ShearLayerAdaptedLengthScale,
shared by the structured and unstructured variants of SA and SST. The
reference values of the ddes_flatplate test (SA_EDDES) are updated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
@rois1995 rois1995 changed the title Implementation of DDES and SAS formulations for SST DDES, IDDES and shear-layer-adapted DDES for SST, and fixes to SA EDDES Sep 23, 2026
@rois1995

Copy link
Copy Markdown
Contributor Author

Sorry for the long silence on this PR, I could not work on it for a while. I have now brought it up to date:

  • Merged develop and resolved the conflicts with the stochastic backscatter model: the DES length scale and the vortex tilting measure are in CTurbVariable, shared by SA and SST.
  • Fixed a memory leak in the EDDES preprocessing: the strain matrices were allocated with new for every point at every iteration and never freed, so long runs ran out of memory. The velocity gradient was also read from the turbulence variables instead of the flow variables.
  • Fixed SST_EDDES, which fell through to SST_EDDES_UNSTR (missing break) and diverged from a uniform initial flow (no vorticity, so Δ̃_ω = 0).
  • Checked the implementation against Gritskevich et al. (2012) and Shur et al. (2015). SST DDES/IDDES/SIDDES match. For the SLA length scale I fixed the vortex tilting measure, the F_KH limiter and the structured Δ̃_ω, also for the existing SA_EDDES, so the ddes_flatplate reference values changed.
  • Hybrid RANS/LES now requires TIME_DOMAIN= YES.
  • Removed the SAS variants, which were not working.

I updated the title and the description. Next I will add regression tests for the new options and set up the validation cases.

rois1995 and others added 2 commits September 23, 2026 16:41
One test for each of SST_DDES, SST_IDDES, SST_SIDDES, SST_EDDES,
SST_EDDES_UNSTR, SA_EDDES and SA_EDDES_UNSTR, 5 time steps on the hexahedral
grid of rans/oneram6. They restart from a SST or SA RANS solution
(su2code/TestCases#206) so that the LES branch of the length scale is active
and every model gives different results.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
Temporary, for the restart solutions of su2code/TestCases#206. To be reverted
to develop before merging.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
@bigfooted

Copy link
Copy Markdown
Contributor

Great! Can you add a small tutorial for the website as well? We have a lot of these implementations that are not exposed to the public.
A couple of pictures with an explanation of how to set up a testcase would be sufficient.

@rois1995

Copy link
Copy Markdown
Contributor Author

I will re-run the NACA0021 and BFS test cases, then add the NACA0021 test case to the Validation cases.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants