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/)
-   -   Smagorinsky model details (https://www.cfd-online.com/Forums/openfoam-solving/65838-smagorinsky-model-details.html)

lakeat June 28, 2009 08:55

Smagorinsky model details
 
Sorry, I do not understand, I saw in "Smagorinsky.H",
Code:

tmp<volScalarField> k(const tmp<volTensorField>& gradU) const
{
    return (2.0*ck_/ce_)*sqr(delta())*magSqr(dev(symm(gradU)));
}

As I remember:

\begin{array}{l}
 {\nu _{SGS}} = {\left( {{C_S}\Delta } \right)^2}\left| {{\bf{\bar S}}} \right| \\ 
 K = {\left( {{C_I}\Delta } \right)^2}{\left| {{\bf{\bar S}}} \right|^2} \\ 
 \left| {{\bf{\bar S}}} \right| = {\left( {{\bf{\bar S}}{\rm{:}}{\bf{\bar S}}} \right)^{{1 \mathord{\left/
 {\vphantom {1 2}} \right.
 \kern-\nulldelimiterspace} 2}}} \\ 
 \end{array}


Question 1: Why using magSqr(dev(symm(gradU))) instead of symm(gradU) && symm(gradU) to get {{\bf{\bar S}}{\rm{:}}{\bf{\bar S}}} ????

Question 2: If magSqr(dev(symm(gradU))) = symm(gradU) && symm(gradU) = {{\bf{\bar S}}{\rm{:}}{\bf{\bar S}}}, then

K = \frac{{2{C_K}}}{{{C_\varepsilon }}}{\Delta ^2}{\left| {{\bf{\bar S}}} \right|^2}

But I saw in "Smagorinsky.C"
Code:

nuSgs_ = ck_*delta()*sqrt(k(gradU));
Which means

{\nu _{SGS}} = {C_K}\Delta \sqrt K

Then, replace K with K = \frac{{2{C_K}}}{{{C_\varepsilon }}}{\Delta ^2}{\left| {{\bf{\bar S}}} \right|^2}

{\nu _{SGS}} = {C_K}\Delta \sqrt K  = {C_K}\Delta \sqrt {\frac{{2{C_K}}}{{{C_\varepsilon }}}{\Delta ^2}{{\left| {{\bf{\bar S}}} \right|}^2}}  = {C_K}\sqrt {\frac{{2{C_K}}}{{{C_\varepsilon }}}} {\Delta ^2}\left| {{\bf{\bar S}}} \right|


Compare with {\nu _{SGS}} = {\left( {{C_S}\Delta } \right)^2}\left| {{\bf{\bar S}}} \right|

We'll get

{\left( {{C_S}} \right)^2} = {C_K}\sqrt {\frac{{2{C_K}}}{{{C_\varepsilon }}}}

But I heard somone said {\left( {{C_S}} \right)^2} = {C_K}\sqrt {\frac{{{C_K}}}{{{C_\varepsilon }}}}

So, I'm puzzled, I wonder if it was a mistake, that k should be written as
Code:

tmp<volScalarField> k(const tmp<volTensorField>& gradU) const
{
    return (ck_/ce_)*sqr(delta())*magSqr(dev(symm(gradU)));
}


Thank you

gaby August 19, 2009 12:42

Hi Daniel,
Did you find any answer to this question?. in the paper:
"A SUBGRID-SCALE MODEL FOR LARGE-EDDY SIMULATION OF
PLANETARY BOUNDARY-LAYER FLOWS
PETER E SULLIVAN, JAMES C. McWILLIAMS, and CHIN-HOH MOENG" 1994, they defined Cs as:

Cs=(Ck*(Ck/Ce)^0.5)^0.5

So, I think you are right...

Now, I'm confused, why it is defined in Smagorinsky.H like 2*Ck/Ce ??

Is it because of the symm(grad(U)) definition???

It would be great if you could share your opinion...

Gaby

lakeat August 20, 2009 08:35

Sorry, you see, no one come and help.

And you have noticed, I have done a detailed deduction in my top post, I still don't know why they use
  1. 2.0*ck_/ce_
  2. magSqr(dev(symm(gradU))) instead of symm(gradU) && symm(gradU)

sandy August 20, 2009 19:59

Quote:

Originally Posted by gaby (Post 226862)
Hi Daniel,
Did you find any answer to this question?. in the paper:
"A SUBGRID-SCALE MODEL FOR LARGE-EDDY SIMULATION OF
PLANETARY BOUNDARY-LAYER FLOWS
PETER E SULLIVAN, JAMES C. McWILLIAMS, and CHIN-HOH MOENG" 1994, they defined Cs as:
Gaby

Hi Gaby, can you send a copy of the paper to me? I am finding the expression to estimate the k inlet boundary condition in oneEqEddy model. Thanks.

Sandy
sandy.lee37@gmail.com

andrea October 6, 2010 05:00

tensor norm definition
 
Hallo,
I was also trying to understand the implementation of Smagorinsky model.
As it is said here
http://www.cfd-online.com/Forums/ope...rain-rate.html
the definition of the norm of a tensor differs from what is computed in OF, so in my opinion the 2 before ck_/ce_ is exaclty the missing sqr(2) in the definition.
so, if
|S| = sqrt(2 S:S)
then
2 magSqr(S) = 2 sqrt(S:S)^2 = sqrt(2*S:S)^2 = |S|^2

Am I right?

PS: default Smagorinsky constant should be Cs =0.1677 (in Pope's book is said to be around 0.17) given ck=0.094, ce= 1.048

MaximeIST March 23, 2011 15:31

Hello

I am also trying to understand how the Smagorinsky model is coded, for the incompressible version and also for the compressible version.

And It seems that for the incompressible Smagorinsky model, the default constant Cs is equal to
Cs=sqrt(ck*sqrt(2*ck/ce))

If I define Cs such that the eddy viscosity is equal to
nuSgs=( Cs *delta)^2 * ||D||

if ck=0.094 and ce=1.048 then Cs=0.1995.. ~ 0.2

Same question as Andrea : am I right?

maysmech April 22, 2011 08:13

Hi,

I have same questions too.

alberto April 22, 2011 23:22

Reference: http://pof.aip.org/resource/1/phfle6/v9/i5/p1416_s1

maysmech May 1, 2011 11:53

Thanks Alberto for the useful reference.
As MaximeIST and lakeat told if we compare what is stated in your reference and openFoam smagorinsky with Pope's book we reach to Cs=0.2.
As stated in Pope's book this constant can be 0.1~0.2 and using 0.2 can be cause of high diffusivity. Please tell me if this is true.
My cyclone simulation with Smagorinsky has high diffusivity and i want use 0.1 for Cs, How can i do that? Which one of Ck or Ce should be changed? I mean are they be used elsewhere or not?

Regards,

alberto May 1, 2011 18:27

I'd just use the dynamic Smagorinsky model, so that you do not have to fiddle with the coefficient, and you do not need to play with dumping functions.

yingkun May 2, 2011 21:59

Hi,Andrea:
I think what you have said is right,the reason is just the different expression of Vsgs

maysmech May 12, 2011 05:48

So, what is Cs value in OpenFOAM's Smagorinsky? 0.2 or 0.167?

yingkun May 12, 2011 06:50

hi,Maysam:
since Cs=sqrt(ck*sqrt(*ck/ce), in smagorinsky.c Ck=0.094 , in GenEddyVisc.c Ce=1.048, then Cs=0.167 as we all know ,am I right?

maysmech May 12, 2011 08:30

I am in doubt because of first post of this thread that it becomes 0.2.
I don't know. Any idea will be appreciated.

andrea May 12, 2011 08:33

It's Cs \approx 0.17. You need just to follow the way it's computed. The question is why the simple Smagorinsky model is implemented in a such confusing way? We re-wrote our Smag. with just Cs required.

MaximeIST May 12, 2011 09:12

Quote:

Originally Posted by yingkun (Post 307334)
hi,Maysam:
since Cs=sqrt(ck*sqrt(*ck/ce), in smagorinsky.c Ck=0.094 , in GenEddyVisc.c Ce=1.048, then Cs=0.167 as we all know ,am I right?

Hello

I may keep on confusing people, but the way it is coded, if I am not doing mistake is
Cs=sqrt(ck*sqrt(2*ck/ce))
in the incompressible Smagorinsky.H line 114.
There is a factor 2 added in the root-mean squared.

And in the case where Ce=1.048 and Ck=0.094, and with this factor 2, we obtain Cs=0.1995.

May be I miss something?

Maxime

yingkun May 13, 2011 08:23

Quote:

Originally Posted by MaximeIST (Post 307357)
Hello

I may keep on confusing people, but the way it is coded, if I am not doing mistake is
Cs=sqrt(ck*sqrt(2*ck/ce))
in the incompressible Smagorinsky.H line 114.
There is a factor 2 added in the root-mean squared.

And in the case where Ce=1.048 and Ck=0.094, and with this factor 2, we obtain Cs=0.1995.

May be I miss something?

Maxime

Hi,Maxime,
In the incompressible Smagorinsky.H line 114,it's the expression of K,not Ck,it means k=2Ck/Ce*(delta^2)*(Sof^2),may be my blog can help you: http://blog.sina.com.cn/s/blog_6d9c27ab0100u9ez.html
it's just what I think, I'm not sure.

MaximeIST May 13, 2011 11:10

Hello Yingkun

I agree with you that it is the expression of k which is in line 114 of the Smagorinsky.H.

But the factor 2 is still there and as lakeat shown in the first message of this thread, we still get
Cs=sqrt(ck*sqrt(2*ck/ce))

I have been in your blog, and I think you lost this factor 2 in the passage of equation (7) to the last equation of the page.

Maxime

yingkun May 14, 2011 01:01

Quote:

Originally Posted by MaximeIST (Post 307553)
Hello Yingkun

I agree with you that it is the expression of k which is in line 114 of the Smagorinsky.H.

But the factor 2 is still there and as lakeat shown in the first message of this thread, we still get
Cs=sqrt(ck*sqrt(2*ck/ce))

I have been in your blog, and I think you lost this factor 2 in the passage of equation (7) to the last equation of the page.

Maxime

hi,
I think you don't understand exactly what I mean,the difference is just caused by the different expressions of S between turbulent therory and Openfoam,there is a factor of sqrt(2) difference,lakeat just regards them the same

MaximeIST May 16, 2011 06:13

Quote:

Originally Posted by yingkun (Post 307591)
hi,
I think you don't understand exactly what I mean,the difference is just caused by the different expressions of S between turbulent therory and Openfoam,there is a factor of sqrt(2) difference,lakeat just regards them the same

OK! that's what I missed!
It's true I don't understand what is written in your blog, chinese is not easy for me :D!

So you said that the sqrt(2) is a consequence of the definition of S in OpenFoam.
In this case, the default constant in the incompressible Smagorinsky is 0.167.
good to know!


All times are GMT -4. The time now is 18:50.