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/)
-   -   [OpenFOAM-2.1.0] kklOmega RAS Turbulence Model (low Re) (https://www.cfd-online.com/Forums/openfoam-solving/95515-openfoam-2-1-0-kklomega-ras-turbulence-model-low-re.html)

lakeat January 24, 2012 09:13

Actually, I tried yesterday night for a few times, but got a worse curve.:D

sandy January 24, 2012 19:15

Quote:

Originally Posted by egp (Post 340786)
Why would you guess this? The Schubauer and Klebanoff (S&K) case is a well-known experiment with very low free-stream turbulence, i.e.,

U=50.1 m/s
Tu = 0.3%
nut/nu = 1

Given these parameters, I compute kt and omega to be:

kt = 1.5*(0.003*50.1)^2 = 0.0339
omega = k/nut = 0.0339/1.5e-5 = 2259

It's interesting to note that the paper by Walters and Cokljat (2008) did not use the S&K dataset for validation and only used the ERCOFTAC T3A-, T3A, T3B benchmarks. These latter cases have a varying degree of free-stream turbulence and are typically used to demonstrate bypass transition. In contrast, the S&K with low FST is more a test of natural transition.

Hi egp, what are the differences between natural transition with bypass transition? To natural transition, the flow features are just in laminar flow but not from laminar to turbulent, right?

In addition, do you have literatures about the ERCOFTAC T3A-, T3A, T3B benchmarks and the S&K' s ? Could you sent a copy to me? I have the paper by Walters and Cokljat, however, I could not find the literature of their test cases. Thanks.

Sandy
sandy.lee37@gmail.com

lucaBonfiglio April 11, 2012 17:24

5 Attachment(s)
Hi, I'm trying to use the kklOmega turbolence model to simulate the flow around a 2d naca 0012; here my initial/boundary conditions:

domain:

k
inletOutlet (5.4e-3)
kt
inletOutlet (5.4e-3)
kl
inletOutlet (0)
nut
inletOutlet (1e-5)
nuTilda
inletOutlet (1e-5)
omega
inletOutlet (5.4e5)
p
outletInlet (0)
U
inletOutlet (0 2.9886 0.2615)

wall:
k
kqRWallFunction (0)
kt
inletOutlet (5.4e-3)
kl
fixedValue (0)
nut
nutkWallFunction (1e-5)
nuTilda
zeroGradient
omega
zeroGradient
p
zeroGradient
U
fixedValue (0 0 0)

Omega becomes negative after some iterations and the solutions doesn't seem to converge to a reasonable value.
I have also problems with the evaluation of the wallShearStress that becomes very high aft of the predicted transitional region.

I can't see where I fail.

Any suggestion is appreciated.

Thank you!!

lakeat April 11, 2012 17:39

Quote:

Originally Posted by lucaBonfiglio (Post 354257)
I can't see where I fail.

Any suggestion is appreciated.

Thank you!!

The last time I used it, I used it with a VERY VERY small time step on the LRN
mesh and then everything works fine.

It seems all LRN models have convergence problem.

lucaBonfiglio April 11, 2012 18:07

Hi Daniel,

Do you mean that I've to deal with a finer mesh?
I'm using simpleFoam so there shouldn't be time step problem, Am I wrong?

Thank you for the reply!

Vahini April 13, 2012 21:48

Hiya EGP, I have run a kkl-omega case and I am trying to post process the data, however I am having trouble in plotting the Cf versus (Re)x graph to find transition. I have sampled the wall shear stress to find the skin friction coefficient, but I am unsure of getting the (Re)x data from my simulation. Your help would be much appreciated!

strikeraj April 23, 2012 21:53

Hi everyone

Sorry if this question sounds stupid, but has anyone tried or does anyone know if this model works well with wall functions? (y+ ~ 50)

also when I was trying to set up a case, I got this error when trying to run

Code:

Starting time loop

Time = 4e-06

Courant Number mean: 0.0052655 max: 0.613429
DILUPBiCG:  Solving for Ux, Initial residual = 0.999999, Final residual = 2.16698e-08, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 1.38978e-08, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 1, Final residual = 3.06486e-08, No Iterations 2
DICPCG:  Solving for p, Initial residual = 1, Final residual = 0.0996709, No Iterations 238
time step continuity errors : sum local = 2.92672e-07, global = -2.47733e-08, cumulative = -2.47733e-08
DICPCG:  Solving for p, Initial residual = 0.853218, Final residual = 9.43328e-07, No Iterations 496
time step continuity errors : sum local = 6.22475e-11, global = -1.59298e-13, cumulative = -2.47734e-08
DILUPBiCG:  Solving for kt, Initial residual = 1, Final residual = 6.62784e-06, No Iterations 1
DILUPBiCG:  Solving for kl, Initial residual = 1, Final residual = 1.11568e-07, No Iterations 2
bounding kl, min: 0 max: 0.029737 average: 0.0050596


--> FOAM FATAL ERROR:

    request for volScalarField k from objectRegistry region0 failed
    available objects of type volScalarField are

30
(
((((1-exp((-sqrt((((sqr((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)|nu)|(omega+omegaMin)))|Av)))*CmuStd)*sqrt(((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)))*min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin))))
(kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt))
kt_0
nut
(((CR*(1-exp((-max((((kt|nu)|((1.41421*mag(skew(grad(U))))+ROTVSMALL))-CbpCrit),0)|Abp))))*omega)|((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL))+SMALL))
kt
kt_0_0
((CrNat*(1-exp((-max((((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu)-(CnatCrit|((1-exp((((-Cnc*sqrt(kl))*y)|nu)))+ROTVSMALL))),0)|Anat))))*(1.41421*mag(skew(grad(U)))))
(min((((((((C11*(1-exp(((-CtauL*(kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)))|sqr(((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))*omega)+ROOTVSMALL))))))*(1.41421*mag(skew(grad(U)))))*sqr(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))))*sqrt((kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt))))*min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin))))|nu)+((((C12*(1-exp((-sqr(max((((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu)-CtsCrit),0))|Ats))))*((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu))*sqr(y))*(1.41421*mag(skew(grad(U)))))),((0.5*(kl+(kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt))))|sqrt((2*magSqr(symm(grad(U)))))))*(2*magSqr(symm(grad(U)))))
(kt+kl)
kl_0_0
kl_0
(sqrt((kt+kl))|(omega+omegaMin))
(nu*magSqr(grad(sqrt(kt))))
(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL))
(1-exp((((-Cnc*sqrt(kl))*y)|nu)))
(nu*magSqr(grad(sqrt(kl))))
nu
((((((1-exp((-sqrt((((sqr((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)|nu)|(omega+omegaMin)))|Av)))*min((kl|(Cint*((kl+kt)+kMin))),1.0))*(1|(A0+(As*(sqrt((2*magSqr(symm(grad(U)))))|(omega+omegaMin))))))*sqrt(((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)))*min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin))))*(2*magSqr(symm(grad(U)))))
(2*magSqr(symm(grad(U))))
min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))
kl
(((((1-exp((-sqrt((((sqr((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)|nu)|(omega+omegaMin)))|Av)))*min((kl|(Cint*((kl+kt)+kMin))),1.0))*(1|(A0+(As*(sqrt((2*magSqr(symm(grad(U)))))|(omega+omegaMin))))))*sqrt(((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)))*min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin))))
p
min((((((((C11*(1-exp(((-CtauL*(kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)))|sqr(((min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))*omega)+ROOTVSMALL))))))*(1.41421*mag(skew(grad(U)))))*sqr(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))))*sqrt((kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt))))*min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin))))|nu)+((((C12*(1-exp((-sqr(max((((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu)-CtsCrit),0))|Ats))))*((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu))*sqr(y))*(1.41421*mag(skew(grad(U)))))),((0.5*(kl+(kt-((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt))))|sqrt((2*magSqr(symm(grad(U)))))))
((exp(-sqr((((Css*nu)*(1.41421*mag(skew(grad(U)))))|(kt+kMin))))*(min((Clambda*y),(sqrt((kt+kl))|(omega+omegaMin)))|((sqrt((kt+kl))|(omega+omegaMin))+SMALL)))*kt)
(1.41421*mag(skew(grad(U))))
omega
((sqr(y)*(1.41421*mag(skew(grad(U)))))|nu)
y
)


    From function objectRegistry::lookupObject<Type>(const word&) const
    in file /opt/OpenFOAM/OpenFOAM-2.1.x/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 131.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1  Foam::error::abort() in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const& Foam::objectRegistry::lookupObject<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> >(Foam::word const&) const in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#3  Foam::incompressible::turbulentMixingLengthDissipationRateInletFvPatchScalarField::updateCoeffs() in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#4  Foam::incompressible::RASModels::kkLOmega::correct() in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#5 
 in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/pisoFoam"
#6  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#7 
 in "/opt/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/pisoFoam"
Aborted

can anyone shed me some light on what I have done wrong?

Thanks

Vahini April 25, 2012 09:49

strikeraj,

You need to have a y+ of less then one cuz this model uses near wall approach and you can't use a wall function, it simply does not give you transition.

sandy April 25, 2012 21:20

Quote:

Originally Posted by Vahini (Post 356923)
strikeraj,

You need to have a y+ of less then one cuz this model uses near wall approach and you can't use a wall function, it simply does not give you transition.


Yes Strikeraj, I agree to Vahini. I guess, this method should be given the same fine grids as like as LES if you solve a three-dimension problem ...

strikeraj April 25, 2012 21:21

Thanks Sandy and Vahini
I guess I missed the obvious part in the model lol

ChrisPro April 27, 2012 08:52

Hey!

How does one know, that the kinamatic turbulent viscosity nut and nuTilda have to be set to the viscosity of the fluid (1.5e-5)?
And why did you calculate omega with the formula:
nut = kt/omega

In the official paper from D. Keith Walters it says that:
mut = rho * Cmu,std * kt/omega
with Cmu,std = 0.09

so in your formula Cmu,std is missing.

greetings
Christian

Titus May 6, 2012 16:01

I would like to use the new kklomega model for a Velomobile study (A typical low Reynolds case). Would anyone of you be willing to give me some advice? See http://openfoamforvelomobiling.blogspot.com/. The Velox team (http://www.hptdelft.nl/en/) have done windtunnel tests on their body. It would be very interesting to compare their results with those of the kklomega model...

sandy May 6, 2012 20:29

what is the "new kklomega model " ?

Titus May 7, 2012 03:19

Dear Sandy

I mean this:

Version 2.1.0 includes the k-kl-omega (low-Re) model for Reynolds-average simulation of incompressible flows with a boundary layer that undergoes a transition from laminar to turbulent flow. The model is described in D. K. Walters and D. Cokljat, J. Fluids Eng. 130:121401 (2008) and is based on the model k-w with an additional transport equation included to predict low-frequency velocity fluctuations that trigger transition in the boundary layer.

MadsR June 21, 2012 10:05

Hey,

I have a 2D airfoil simulation with settings like the above. Mesh is from blockMesh, checkMesh is fine, standard kOmegaSST converges but applying kkLOmega crashes. omega explodes, I tried all kinds of limiters but they have no effect. Any idea?

Help would be greatly appreciated :)

Mads

lakeat June 21, 2012 10:21

Quote:

Originally Posted by MadsR (Post 367659)
Hey,

I have a 2D airfoil simulation with settings like the above. Mesh is from blockMesh, checkMesh is fine, standard kOmegaSST converges but applying kkLOmega crashes. omega explodes, I tried all kinds of limiters but they have no effect. Any idea?

Help would be greatly appreciated :)

Mads

Last time, I used a very very small time step to keep it stable. :(

MadsR June 21, 2012 10:29

Hmm, I am running it in steady mode for a steady problem.

jferrari June 21, 2012 22:32

I have tried running this without wall functions, but openfoam will replace the files in the 0 folder with files that have wall functions and back up the old ones having a .old extension. How can I run a turbulence model (kklomega inthis case) without wall functions?

onyir June 22, 2012 02:01

I think you need to edit the 0/nut file that openfoam creates and remove the wall function for nut.
Then you can move back your .old files to the original.

jferrari June 22, 2012 12:20

Quote:

Originally Posted by onyir (Post 367786)
I think you need to edit the 0/nut file that openfoam creates and remove the wall function for nut.
Then you can move back your .old files to the original.


Thank you so much - this worked - it's running now without replacing the initial condition files.


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