-
Notifications
You must be signed in to change notification settings - Fork 856
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change lower limit of SST variables #2323
Conversation
Hi, Thank you for doing this research. It is research like this that will really get us the robustness that we would like to see in SU2. However, when users select "SST 1994" or "SST 2003", they should get exactly what they asked for. Therefore, the default settings should be such that the user get the constants and model exactly as described in the papers of Menter. Can you make sure of this? |
It should be emphasized that we do not modify nor change the model formulation (terms, constants, coefficients, etc.) The Lower limit clipping of K and omega used currently in SU2 are not a part of the model formulation. It is a numerical fix to avoid negative values. To the best of our knowledge there is no formal lower limit given by Mentor or anyone else and current values in SU2 are taken arbitrarily. Based on our twenty years of experience, using the lower limit suggested will lead to a more robust scheme without compromising the quality of results. This has been demonstrated in the attached figures . |
Can you modify the default such that nothing changes for the existing test cases? You can then add a new test case to the repository with the modified limits. |
Our proposed changes implicitly include 2 modifications to current code: This change will inevitably cause changes to current behaviour (as can be seen in test case results), but we believe it is more correct. The second, is giving the user control over C_k and C_w and the choice of the default value. As mentioned above, the behaviour of the proposed default value will inevitably be different than the existing one. Even if we choose default values that will lead to similar values to those existing for a certain case this would not be true for other cases. Therefore no default value can be given to reconstruct the current solver behaviour. We emphasise that the solution used in SU2 of applying a lower limit to turbulence variables in order keep the solution positive is somewhat artificial, and future features we are working on should minimize the need for such a treatment, however, as long as this is the solution implemented, we believe that the proposed change is more correct, leading to more robust behaviour. |
After choosing final default values and updating test case results, we will add some documentation. |
Hi, I am working with Eitan ("emaberman") about this issue (lower limit). I want to strengthen a point mentioned by Eitan. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SST is usually not very sensitive to freestream values because they decay very rapidly.
That is why they need to be set much more carefully for SST-SUST. Do you know if these factors are appropriate for that variant?
Regarding the non dimensionalization issue, would it be possible to non dimensionalize the current lower bounds? (and upper bounds too perhaps).
I agree with Nijso that we should not make this the default immediately. Also just due to practical reasons, we have a PR that already required updates to many cases and updating all the SST cases again is going to be a pain.
Our proposal does not relate to the SST's good behavior (iThe SST model is not sensitive to Omega freestream value: it is because of the addition of the cross-diffusion term, which was absent in the original Wilcox model). The current implicit treatment in the SU2 may generate a negative solution that is not physical. A low limit value is available in the code to avoid a negative solution. This means the solution is clipped to this value if the solution reaches a lower value. There is no single absolute low-limit value that is suitable, for example, issues with dimension vs. non-dimension form. Our proposal circumvents this problem. The current situation in the code is not robust. We suffer from many robustness issues, especially with the SST2003 model. However, using our proposal significantly enhanced the solver's robustness. The current situation is like a "bug" because it may interfere with the solution. We understand that our idea requires a lot of effort and that it would make the code unreproducible. Therefore, we would like to suggest the following: Give the user an option to control these low-limit values. The default values will be according to the hard-coded values. We also strongly recommend adding additional user low-limit values control according to our proposal. The user will be able to decide which option he prefers. Our end goal is to design the implicit treatment so that these low-limit controls will be almost redundant. Based on several publications I've made during the last 15-20 years, my code enjoys this feature. |
I understand. So you could add an SST option to use this way of defining the lower bounds, as an alternative to the fixed values we have. |
I'll be glad to share some of my publications with you. Some of the ideas presented in these papers have already been successfully implemented in our SU2 version, but it takes some time to push them. Could you write me in your email? Many thanks for considering our proposal. |
Thanks, it's the same as my github handle |
I've sent a few papers |
…y adding normalized lower limit as SST option
add space Co-authored-by: Pedro Gomes <[email protected]>
Co-authored-by: Pedro Gomes <[email protected]>
Co-authored-by: Pedro Gomes <[email protected]>
Update config_template.cfg optins
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. Can you update one SST regression case to use this option so that it's tested? thanks.
Proposed Changes
To improve robustness of the SU2 code, specifically when using the SST (1994/2003) model, we would like to suggest a slight modification to the lower limits of the turbulent kinetic energy (TKE) and the specific turbulent dissipation rate (Omega).
Presently, the lower limits are given as follows:
TKE_LoweLimit = 1E-10
Omega_LowerLimit = 1E-4
Estimating if these lower limits are sufficiently low is very difficult.
They may be too high. This is certainly the case whether one runs in a dimensional or non-dimensional mode. It may be sufficiently low for one mode but marginally low for the second mode. Therefore, we suggest clipping the solution relative to the TKE and Omega freestream values such that:
TKE_LowerLimit = C_k * TKE_infinity
Omega _LowerLimit = C_w * Omega_infinity
Where C_k and C_w are constants.
The control over these constants is given to the user, However based on our 20 years of experience with the k-w models, Omega will not drop below 1E-3 * Omega_infinity (converged solution). However, in the process of convergence, it may reach lower values. Therefore, a value of
C_w = 1E-6
is reasonable. The solution of TKE is not very sensitive to C_K (assume it is sufficiently low). We recommended:
C_K = 1E-20
setting these as default values.
Related Work
Results of the change on convergence of VFE2 test case are presented. Two configurations of CFL adaptation were tested on both the original and modified lower limit code,
we point out that beyond the change in maximum CFL, also the acceleration rate is changed.
Beyond adding robustness allowing the the use of a CFL of 200 which diverges under the original limit , the modified limit allows for better convergence of the flow and turbulence residuals for CFL of 50. Plots of the Lift and drag Coefficients are added here showing that results are not affected by the new limit, and additionally convergence is slightly quicker for the lift coefficient even with a CFL of 50 .
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.
pre-commit run --all
to format old commits.