Skip to content
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

Feature ddes #333

Merged
merged 14 commits into from
Dec 1, 2016
Merged

Conversation

EduardoMolina
Copy link
Contributor

Hi all,

I have implemented the Delayed Detached Eddy Simulation (DDES) in SU2. Also, I added 2 of the newest sub-grid scales (SGS) in order to mitigate the so-called "grey area": Vorticity based SGS (Deck et al. 2012) and Shear-layer adapted SGS (Shur et at. 2015). This option is available as "HYBRID RANS/LES= SA_DDES, SA_ZDES OR SA_EDDES".

In order to lower the dissipation of the Roe scheme in LES areas, 3 different numerical blending are available: FD (Using the DDES' F_dt function), NTS (Travin et al. 2002 numerical blending) and NTS_DUCROS (the NTS + Ducros' Shock Sensor). Option: "ROE_LOW_DISSIPATION= FD"

Lastly, 3 SA's turbulence model variants were added: Edward and Chandra Modification (SA_E), Mixing layer Compressibility Correction (SA_COMP) and both together (SA_E_COMP).

I would like to hear some comments about the implementation.

Regards,

Eduardo.

Please see the attached pdf showing some detailed implementation and preliminary results.
Molina_DDESinSU2.pdf

Eduardo Molina added 11 commits April 11, 2016 21:20
First commit of Hybrid RANS/LES
- Roe Low Dissipation: (1 - f_d) + Ducros Sensor
- Turbulence models: Edward’s SA, Compressibility Correction SA,
Edward’s + CC.
 - In SA_DDES, the low Reynolds term was disabled.
- Start of Venkatakrishnan Limiter Modification.
# Conflicts:
#	Common/include/config_structure.hpp
#	SU2_CFD/include/numerics_structure.hpp
#	SU2_CFD/src/SU2_CFD.cpp
#	SU2_CFD/src/driver_structure.cpp
#	SU2_CFD/src/numerics_direct_mean.cpp
# Resolved conflicts in:
#	Common/include/config_structure.hpp
#	SU2_CFD/include/numerics_structure.hpp
#	SU2_CFD/src/SU2_CFD.cpp
#	SU2_CFD/src/driver_structure.cpp
#	SU2_CFD/src/numerics_direct_mean.cpp
- Now ROW_LOW_DISSIPATION flag has the following options:
    - FD: Numerical blending using the DDES’s Fd function.
    - NTS: Numerical blending of Travin and Shur.
    - NTS_DUCROS: NTS + Ducros’ Shock Sensor.

All these options must be tested extensively.
@talbring
Copy link
Member

Hi Eduardo,

is it intended that you want to merge that into feature_DDES ? If so, you can just go ahead and push it to that branch, without creating a pull request. Otherwise, if you think that your implementation is ready, create a pull request to develop.

@economon
Copy link
Member

@talbring: yes, we are just taking this opportunity to first move things from Eduardo's fork over into the SU2 repo so that we can more easily collaborate on an internal branch. We'll do another PR at a later date into develop.

@EduardoMolina: if you have a moment, can you please check the conflicts on this PR and get them sorted? After that, we'll merge this into the feature_ddes branch and work together from there...

@talbring
Copy link
Member

Perfect, then just ignore my comment :) Looking forward to see some interesting applications!

@EduardoMolina
Copy link
Contributor Author

Hi all,

@economon : Just a question before I proceed, the su2code/feature_ddes is already 244 commits ahead of su2/master. All my implementations are on top of the su2code/master... Is this correct?

@economon
Copy link
Member

Eduardo,

Yes, this is fine. I created the feature_ddes branch starting from the develop branch, which is the most up-to-date version of the code. By design, the master branch always contains the most recent, stable release (so, it lags behind develop in commits).

We first want to get your DDES implementation on par with the develop branch and make any necessary changes/improvements in SU2/feature_ddes. Next, SU2/feature_ddes will move into SU2/develop with a pull request that all can comment on publicly. Lastly, we will eventually push develop into the master branch as part of a future release.

Tom

Eduardo Molina added 2 commits November 27, 2016 11:32
# Conflicts:
#	Common/include/config_structure.hpp
#	Common/include/config_structure.inl
#	SU2_CFD/src/SU2_CFD.cpp
#	SU2_CFD/src/driver_structure.cpp

Resolved conflicts.
@EduardoMolina
Copy link
Contributor Author

Hi Tom,

Sorry for the late replay.

I just solved the conflicts.

Eduardo

@EduardoMolina EduardoMolina merged commit 054f52c into su2code:feature_DDES Dec 1, 2016
@economon
Copy link
Member

economon commented Dec 5, 2016

Great! Thanks, Eduardo. Let's work now together in this branch to make sure that everything is integrated nicely. Just let me know what help you may need.

@EduardoMolina
Copy link
Contributor Author

EduardoMolina commented Dec 12, 2016 via email

@economon
Copy link
Member

Eduardo,

Thanks for the papers. I think we need to spend a little time verifying that everything is still ok in the old preconditioning implementation.

You're correct that we are computing the dual time source, i.e., the time derivative term discretized using BDF2 for instance, within CEulerSolver::SetResidual_DualTime(). However, it looks to me that in Eqn. 18 of Weiss and Smith, these terms are not affected by the preconditioning (the right-hand side of Eqn. 18 is what we have implemented currently, and I think it is ok). But, you're right about needing to precondition the pseudo-time term, which eventually goes to zero.

One major difference for us from that paper is the scheme we use to relax the pseudo-time problem. They are using an explicit multi-stage scheme, while we are solving with a fully implicit scheme. While they will compute the update of ∆Q in Eqn. 18 by inverting that small matrix locally at each node, we will smooth our global linear system that resulted from our implicit discretization to get solution updates at all nodes. Therefore, when they add the Gamma term on the left-hand side locally, I think we should be adding that to the diagonal of our larger system matrix. In fact, we are doing something like this already, but I think we should double-check that everything is ok. Can you please look at CEulerSolver::ImplicitEuler_Iteration() to make sure the implementation for the preconditioning there is correct?

Tom

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.

3 participants