CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   RNG k-epsilon model implementation (https://www.cfd-online.com/Forums/openfoam-solving/90983-rng-k-epsilon-model-implementation.html)

 romant July 27, 2011 09:52

RNG k-epsilon model implementation

Hej,

I was wondering why the implementation of the RNG k-epsilon model in OpenFOAM looks so much different from the implementation of the standard k-epsilon model? Even the k-equation looks different, even though that one should be the same.

k-equation standard k-eps:
Code:

```    tmp<fvScalarMatrix> kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::Sp(fvc::div(phi_), k_) // missing from the k-equation of RNG       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );```
k-equation RNG k-eps
Code:

```    tmp<fvScalarMatrix> kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );```
The - fvm::Sp(fvc::div(phi_), k_) term is missing. The same is true in the epsilon equation, where instead of the C_eps2 constant the C_eps1 constant is changed, but also not according to literature

eps-equation RNG
Code:

```    // Dissipation equation     tmp<fvScalarMatrix> epsEqn     (         fvm::ddt(epsilon_)       + fvm::div(phi_, epsilon_)       - fvm::laplacian(DepsilonEff(), epsilon_)     // I expect another term here     ==         (C1_ - R)*G*epsilon_/k_  // why is the term R, which is part of the changed C_eps2 constant subtracted from C_eps1     //- fvm::SuSp(R*G/k_, epsilon_)       - fvm::Sp(C2_*epsilon_/k_, epsilon_)  // C2 is a constant here, even though it should be a function of the strain-rate tensor     );```

 vkrastev November 23, 2011 10:19

Quote:
 Originally Posted by romant (Post 317705) Hej, I was wondering why the implementation of the RNG k-epsilon model in OpenFOAM looks so much different from the implementation of the standard k-epsilon model? Even the k-equation looks different, even though that one should be the same. k-equation standard k-eps: Code: ```    tmp kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::Sp(fvc::div(phi_), k_) // missing from the k-equation of RNG       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );``` k-equation RNG k-eps Code: ```    tmp kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );``` The - fvm::Sp(fvc::div(phi_), k_) term is missing. The same is true in the epsilon equation, where instead of the C_eps2 constant the C_eps1 constant is changed, but also not according to literature eps-equation RNG Code: ```    // Dissipation equation     tmp epsEqn     (         fvm::ddt(epsilon_)       + fvm::div(phi_, epsilon_)       - fvm::laplacian(DepsilonEff(), epsilon_)     // I expect another term here     ==         (C1_ - R)*G*epsilon_/k_  // why is the term R, which is part of the changed C_eps2 constant subtracted from C_eps1     //- fvm::SuSp(R*G/k_, epsilon_)       - fvm::Sp(C2_*epsilon_/k_, epsilon_)  // C2 is a constant here, even though it should be a function of the strain-rate tensor     );```
The implementation is perfectly consistent with the literature (see for instance "Analysis of an RNG based turbulence model for separated flows", C. G. Speziale and S. Thangam, Int. J. Engng Sci., Vol 30, no 10, pp 1379-1388, 1992). Concerning the missing terms with respect to, for instance, the standard k-epsilon model, though they should not have a significant relevance in an incompressible flow solution (fvc::div(phi) would be exactly equal to zero if the discretized momentum and pressure-correction equations were solved exactly at the current iteration, while using a finite precision it would be simply very very small), to me is also quite a mystery why they are included in some models and they aren't in others...

Best Regards

V.

 einstein_zee June 20, 2018 09:33

Quote:
 Originally Posted by romant (Post 317705) Hej, I was wondering why the implementation of the RNG k-epsilon model in OpenFOAM looks so much different from the implementation of the standard k-epsilon model? Even the k-equation looks different, even though that one should be the same. k-equation standard k-eps: Code: ```    tmp kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::Sp(fvc::div(phi_), k_) // missing from the k-equation of RNG       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );``` k-equation RNG k-eps Code: ```    tmp kEqn     (         fvm::ddt(k_)       + fvm::div(phi_, k_)       - fvm::laplacian(DkEff(), k_)     ==         G       - fvm::Sp(epsilon_/k_, k_)     );``` The - fvm::Sp(fvc::div(phi_), k_) term is missing. The same is true in the epsilon equation, where instead of the C_eps2 constant the C_eps1 constant is changed, but also not according to literature eps-equation RNG Code: ```    // Dissipation equation     tmp epsEqn     (         fvm::ddt(epsilon_)       + fvm::div(phi_, epsilon_)       - fvm::laplacian(DepsilonEff(), epsilon_)     // I expect another term here     ==         (C1_ - R)*G*epsilon_/k_  // why is the term R, which is part of the changed C_eps2 constant subtracted from C_eps1     //- fvm::SuSp(R*G/k_, epsilon_)       - fvm::Sp(C2_*epsilon_/k_, epsilon_)  // C2 is a constant here, even though it should be a function of the strain-rate tensor     );```
Hi Roman,

Could you find the reason why the OF version of equations are not similar to the ones of Yakhot et al.

 All times are GMT -4. The time now is 11:30.