CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Howto get the production and dissipation of TKE?? (https://www.cfd-online.com/Forums/openfoam-solving/65826-howto-get-production-dissipation-tke.html)

lakeat June 27, 2009 04:44

Howto get the production and dissipation of TKE??
 
Anyone knows how to get the production and dissipation of TKE (turbulence kinetic energy)? Thanks

Is it in this way:
Code:

        volSymmTensorField D = symm(fvc::grad(U));
        //volTensorField Dprim = symm(fvc::grad(U - UMean));

        volScalarField prod = -((U - UMean)*(U - UMean)) && D;
        volScalarField epsilon = sgsModel->epsilon();

----------------------------------------------
  • Rate of production of turbulence kinetic energy from the mean flow(gradient): - \left\langle u_{i}u_{j} \right\rangle \frac{\partial U_{i}}{\partial x_{j}}
  • Rate of dissipation of turbulence kinetic energy per unit mass due to viscous stresses: \epsilon \equiv 2\nu \left\langle s_{ij}s_{ij} \right\rangle

Heesei July 6, 2010 10:55

Production and dissipation of TKE
 
Dear Daniel

I am also interested in this topic. Therefore, I would like to know if you found an answer to your question in the meantime.


Cheers,

Irina

lakeat July 6, 2010 11:26

Sorry, it'e been a long time, but doesn't the codes in my last post work for you?
you can try with a channel case and see if its distribution is correct.

Bye

johndeas December 13, 2010 17:51

Hi,

why did you take the symmetrical part of grad(U) ? Why didn't you compute
Code:

R && fvc::grad(Umean)
?

Regards,

JD

alberto December 14, 2010 03:55

Notice that the method epsilon() returns the SGS dissipation rate. Check doxygen to see how it is computed, depending on the specific model.

johndeas December 14, 2010 08:18

Hi Alberto,

thank you for your answer. When I take a look at src\turbulenceModels\LES\incompressible\oneEqEddy\ oneEqEddy.C, I read:

Code:

void oneEqEddy::correct(const tmp<volTensorField>& gradU)
{
    GenEddyVisc::correct(gradU);

    volScalarField G = 2.0*nuSgs_*magSqr(symm(gradU));

    solve
    (
      fvm::ddt(k_)
    + fvm::div(phi(), k_)
    - fvm::laplacian(DkEff(), k_)
    ==
      G
    - fvm::Sp(ce_*sqrt(k_)/delta(), k_)
    );

    bound(k_, k0());

    nuSgs_ = ck_*sqrt(k_)*delta();
    nuSgs_.correctBoundaryConditions();
}

it appears that, in src\turbulenceModels\LES\incompressible\GenEddyVis c\GenEddyVisc.H (for example), epsilon() represents
Code:

ce_*sqrt(k_)/delta()
. But, what I am interrested in is G, the production. Since I am doing DNS computations, I have access to both the Reynolds Stress and the gradient of the mean component of velocity, and I do not want to use any eddy viscosity to compute it, like in
Code:

2.0*nuSgs_*magSqr(symm(gradU))
. I just need the formula to combine R and fvc::grad(Umean) properly.

I also do not understand why the symmetric part of the gradient of U is mentionned in the previous post.

Regards,

JD

boger December 14, 2010 09:34

The double-inner product of a symmetric and asymmetric second-rank tensor is zero, so in that sense, only the symmetric part of gradU "survives" anyway. So using only the symmetric part is harmless, but perhaps unnecessary.

alberto December 14, 2010 11:21

Quote:

Originally Posted by johndeas (Post 287384)
Hi Alberto,

thank you for your answer. When I take a look at src\turbulenceModels\LES\incompressible\oneEqEddy\ oneEqEddy.C, I read:

Code:

void oneEqEddy::correct(const tmp<volTensorField>& gradU)
{
    GenEddyVisc::correct(gradU);

    volScalarField G = 2.0*nuSgs_*magSqr(symm(gradU));

    solve
    (
      fvm::ddt(k_)
    + fvm::div(phi(), k_)
    - fvm::laplacian(DkEff(), k_)
    ==
      G
    - fvm::Sp(ce_*sqrt(k_)/delta(), k_)
    );

    bound(k_, k0());

    nuSgs_ = ck_*sqrt(k_)*delta();
    nuSgs_.correctBoundaryConditions();
}

it appears that, in src\turbulenceModels\LES\incompressible\GenEddyVis c\GenEddyVisc.H (for example), epsilon() represents
Code:

ce_*sqrt(k_)/delta()
. But, what I am interrested in is G, the production.

My comment was to point out that

volScalarField epsilon = sgsModel->epsilon();

does not return what you want. That epsilon is only the SGS epsilon.

Since you do DNS, just apply the definition and you will be fine :-)

Best,

syavash July 9, 2016 04:56

Hi,

This is an old thread, but I wonder if anyone has achieved a reliable method to calculate TKE dissipation?!

Regards

nukecrafts March 22, 2022 11:14

Quote:

Originally Posted by johndeas (Post 287384)
Hi Alberto,

thank you for your answer. When I take a look at src\turbulenceModels\LES\incompressible\oneEqEddy\ oneEqEddy.C, I read:

Code:

void oneEqEddy::correct(const tmp<volTensorField>& gradU)
{
    GenEddyVisc::correct(gradU);

    volScalarField G = 2.0*nuSgs_*magSqr(symm(gradU));

    solve
    (
      fvm::ddt(k_)
    + fvm::div(phi(), k_)
    - fvm::laplacian(DkEff(), k_)
    ==
      G
    - fvm::Sp(ce_*sqrt(k_)/delta(), k_)
    );

    bound(k_, k0());

    nuSgs_ = ck_*sqrt(k_)*delta();
    nuSgs_.correctBoundaryConditions();
}

it appears that, in src\turbulenceModels\LES\incompressible\GenEddyVis c\GenEddyVisc.H (for example), epsilon() represents
Code:

ce_*sqrt(k_)/delta()
. But, what I am interrested in is G, the production. Since I am doing DNS computations, I have access to both the Reynolds Stress and the gradient of the mean component of velocity, and I do not want to use any eddy viscosity to compute it, like in
Code:

2.0*nuSgs_*magSqr(symm(gradU))
. I just need the formula to combine R and fvc::grad(Umean) properly.

I also do not understand why the symmetric part of the gradient of U is mentionned in the previous post.

Regards,

JD


Dear Johndeas,



Did you find any way out ? I'm also stuck at the same state. :confused:


All times are GMT -4. The time now is 06:36.