CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Main CFD Forum (http://www.cfd-online.com/Forums/main/)
-   -   Underpredicting stall on an aerofoil (http://www.cfd-online.com/Forums/main/63531-underpredicting-stall-aerofoil.html)

abaqus213 April 11, 2009 13:37

Underpredicting stall on an aerofoil
 
Evening everyone,

I am slightly puzzled over some simulation results which I have just run and wondered if someone could shed some light on the issue.

I am running a 2D Simulation on a NACA0012 at 13 degrees using the k-epsilon with standard wall functions. At this level of incidence I would expect the aerofoil to have stalled and the pressure distribution to be flat. However, I get a pressure distribution with a sharp favourable pressure gradient near the leading edge with an adverse pressure gradient moving towards the trailing edge? Is this because I am using wall functions? If so, why does this make a difference?

Many Thanks :)

harishg April 11, 2009 15:46

I am not sure which version of k-epsilon model you are employing but most of the older versions of k-models have shown deficiencies for adverse pressure gradients. Also the use of wall functions can be problematic for flow separation. Check the literature for successful simulations with k-epsilon model for airfoil stall. You should try employing menter's k-omega model or wilcox modified k-omega model if you have an option or more recent versions of k-epsilon models.

abaqus213 April 12, 2009 09:20

Many Thanks for your reply.

I am using the standard k-epsilon model in my simulation. I have found a number of posts which indicate the wall functions do not accurately capture flow seperation, however I cannot seem to find out why! If anyone could post why wall function do not model flow seperation and why the standard k-e model shows deficiencies for adverse pressure gradients, I would be most grateful.

Cheers :)

harishg April 12, 2009 12:15

Wall functions are a function of friction velocity which are a function of wall shear stress. Wall shear stress becomes zero when you have flow separation and hence both the wall function approach and many of the low -Re K-E model are problematic.

Tenzin Choephel April 13, 2009 11:50

What is the Reynolds number that u have entered? At around Reynolds number range of 100,000-500,000, the stall angle of NACA 0012 is around 12-13. At say about 3,000,000 Reynolds number, it is about 16 degrees. You might not have expected Reynold number effect in ur results. Hope that helps.

makaveli_lcf April 21, 2009 06:27

Hi all!

I'm doing a compare tests of turbulence models in FLUENT and OpenFOAM. I've got convergence problems with standard k-epsilon in OpenFOAM for testing geometries.
Mesh is 3D with following parameters:

Quote:

Number of cells of each type:
hexahedra: 29855
prisms: 0
wedges: 0
pyramids: 441
tet wedges: 0
tetrahedra: 37147
polyhedra: 0

Checking geometry...
Overall domain bounding box (-0.625 -0.0675 -2.072) (0.625 0.0675 0)
Mesh (non-empty) directions (1 1 1)
Mesh (non-empty, non-wedge) dimensions 3
Boundary openness (-7.8904e-19 -8.57159e-20 1.67732e-19) OK.
Max cell openness = 2.06529e-16 OK.
Max aspect ratio = 7.21027 OK.
Minumum face area = 1.73278e-05. Maximum face area = 0.000537385. Face area magnitudes OK.
Min volume = 4.0345e-08. Max volume = 7.71429e-06. Total volume = 0.253842. Cell volumes OK.
Mesh non-orthogonality Max: 60.6516 average: 13.6401
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.796547 OK.
checkMesh with -allTopology -allGeometry produces following results:

Quote:

Checking geometry...
Overall domain bounding box (-0.625 -0.0675 -2.072) (0.625 0.0675 0)
Mesh (non-empty) directions (1 1 1)
Mesh (non-empty, non-wedge) dimensions 3
Boundary openness (-7.8904e-19 -8.57159e-20 1.67732e-19) OK.
Max cell openness = 2.06529e-16 OK.
Max aspect ratio = 7.21027 OK.
Minumum face area = 1.73278e-05. Maximum face area = 0.000537385. Face area magnitudes OK.
Min volume = 4.0345e-08. Max volume = 7.71429e-06. Total volume = 0.253842. Cell volumes OK.
Mesh non-orthogonality Max: 60.6516 average: 13.6401
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.796547 OK.
Min/max edge length = 0.0032882 0.0420821 OK.
All angles in faces OK.
Face flatness (1 = flat, 0 = butterfly) : average = 1 min = 1
All face flatness OK.
Cell determinant (wellposedness) : minimum: 6.47133e-19 average: 3.63504
***Cells with small determinant found, number of cells: 128
<<Writing 128 under-determined cells to set underdeterminedCells

Failed 1 mesh checks.
In FLUENT there is no problem to simulate flow on this mesh. In OpenFoam it runs only few steps and then k and epsilon grows with Courant number and simulation produces floatpoint operation error:

Quote:

Starting time loop

Time = 0.001

Courant Number mean: 0.00129507 max: 0.33108
DILUPBiCG: Solving for Ux, Initial residual = 1, Final residual = 6.52442e-10, No Iterations 2
DILUPBiCG: Solving for Uy, Initial residual = 1, Final residual = 9.95905e-10, No Iterations 2
DILUPBiCG: Solving for Uz, Initial residual = 1, Final residual = 1.07944e-09, No Iterations 2
DICPCG: Solving for p, Initial residual = 1, Final residual = 9.69663e-07, No Iterations 285
time step continuity errors : sum local = 3.98155e-11, global = -1.79587e-13, cumulative = -1.79587e-13
DICPCG: Solving for p, Initial residual = 0.27422, Final residual = 9.52287e-07, No Iterations 238
time step continuity errors : sum local = 3.33038e-09, global = -5.09634e-13, cumulative = -6.89221e-13
DILUPBiCG: Solving for epsilon, Initial residual = 0.999993, Final residual = 6.02371e-08, No Iterations 3
bounding epsilon, min: -2.86839e-09 max: 8.836e-05 average: 1.96149e-08
DILUPBiCG: Solving for k, Initial residual = 1, Final residual = 1.23927e-06, No Iterations 2
bounding k, min: -7.82791e-14 max: 0.001176 average: 1.06553e-07
ExecutionTime = 4.47 s ClockTime = 4 s

Time = 0.002

Courant Number mean: 0.00373363 max: 0.33108
DILUPBiCG: Solving for Ux, Initial residual = 0.874019, Final residual = 5.40783e-07, No Iterations 27
DILUPBiCG: Solving for Uy, Initial residual = 0.885672, Final residual = 5.61245e-07, No Iterations 27
DILUPBiCG: Solving for Uz, Initial residual = 0.445827, Final residual = 1.98736e-06, No Iterations 27
DICPCG: Solving for p, Initial residual = 0.0962279, Final residual = 8.82523e-07, No Iterations 245
time step continuity errors : sum local = 3.29699e-09, global = 3.20759e-11, cumulative = 3.13867e-11
DICPCG: Solving for p, Initial residual = 0.888897, Final residual = 9.66196e-07, No Iterations 217
time step continuity errors : sum local = 2.91614e-05, global = 4.4315e-07, cumulative = 4.43182e-07
DILUPBiCG: Solving for epsilon, Initial residual = 0.241531, Final residual = 8.49532e-06, No Iterations 15
bounding epsilon, min: -1.12568 max: 1.83423 average: 9.78951e-05
DILUPBiCG: Solving for k, Initial residual = 0.933947, Final residual = 9.05932e-06, No Iterations 168
bounding k, min: -0.00254946 max: 0.00694748 average: 2.70098e-06
ExecutionTime = 11.21 s ClockTime = 11 s

Time = 0.003

Courant Number mean: 27.8704 max: 797936
DILUPBiCG: Solving for Ux, Initial residual = 0.715265, Final residual = 8.6611e-06, No Iterations 230
DILUPBiCG: Solving for Uy, Initial residual = 0.765986, Final residual = 9.36869e-06, No Iterations 188
DILUPBiCG: Solving for Uz, Initial residual = 0.807524, Final residual = 8.14793e-06, No Iterations 171
DICPCG: Solving for p, Initial residual = 0.937079, Final residual = 3.73413, No Iterations 1001
time step continuity errors : sum local = 1534.32, global = 3.78434, cumulative = 3.78434
DICPCG: Solving for p, Initial residual = 0.169545, Final residual = 0.00447933, No Iterations 1001
time step continuity errors : sum local = 113452, global = -313.066, cumulative = -309.282
DILUPBiCG: Solving for epsilon, Initial residual = 1, Final residual = 0.130458, No Iterations 1001
bounding epsilon, min: -3.5181e+15 max: 2.78475e+15 average: 1.20801e+11
DILUPBiCG: Solving for k, Initial residual = 0.806156, Final residual = 6.15771e-06, No Iterations 260
bounding k, min: -5.29862e+15 max: 5.65668e+15 average: 4.54536e+09
ExecutionTime = 47.22 s ClockTime = 47 s

Time = 0.004

Courant Number mean: 2.27745e+06 max: 8.64822e+09
DILUPBiCG: Solving for Ux, Initial residual = 0.724622, Final residual = 0.00590453, No Iterations 1001
DILUPBiCG: Solving for Uy, Initial residual = 0.75323, Final residual = 0.000498385, No Iterations 1001
DILUPBiCG: Solving for Uz, Initial residual = 0.707788, Final residual = 0.0016267, No Iterations 1001
DICPCG: Solving for p, Initial residual = 1, Final residual = 45.8841, No Iterations 1001
time step continuity errors : sum local = 8.26264e+30, global = 3.77052e+28, cumulative = 3.77052e+28
DICPCG: Solving for p, Initial residual = 1.82929e-06, Final residual = 5.69246e-07, No Iterations 2
time step continuity errors : sum local = 1.78212e+38, global = -8.31007e+33, cumulative = -8.31003e+33
DILUPBiCG: Solving for epsilon, Initial residual = 1, Final residual = 8.85622e+13, No Iterations 1001
bounding epsilon, min: -3.66455e+74 max: 4.53599e+74 average: 7.3757e+69
DILUPBiCG: Solving for k, Initial residual = 3.92025e-05, Final residual = 9.70635e-08, No Iterations 3
bounding k, min: -4.37338e+61 max: 1.53932e+66 average: 2.28586e+61
ExecutionTime = 106.52 s ClockTime = 106 s

Time = 0.005

Courant Number mean: 3.0383e+39 max: 2.15417e+44
#0 Foam::error::printStack(Foam::Ostream&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#2 Uninterpreted: [0xb7f6c420]
#3 Foam::DILUPreconditioner::calcReciprocalD(Foam::Fi eld<double>&, Foam::lduMatrix const&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#4 Foam::DILUPreconditioner::DILUPreconditioner(Foam: :lduMatrix::solver const&, Foam::Istream&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#5 Foam::lduMatrix::preconditioner::addasymMatrixCons tructorToTable<Foam::DILUPreconditioner>::New(Foam ::lduMatrix::solver const&, Foam::Istream&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#6 Foam::lduMatrix::preconditioner::New(Foam::lduMatr ix::solver const&, Foam::Istream&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#7 Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/forsher/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#8 Foam::fvMatrix<Foam::Vector<double> >::solve(Foam::Istream&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/turbFoam"
#9 Foam::lduMatrix::solverPerformance Foam::solve<Foam::Vector<double> >(Foam::tmp<Foam::fvMatrix<Foam::Vector<double> > > const&) in "/home/forsher/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/turbFoam"
#10 main in "/home/forsher/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/turbFoam"
#11 __libc_start_main in "/lib/tls/i686/cmov/libc.so.6"
#12 Foam::regIOobject::readIfModified() in "/home/forsher/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/turbFoam"
I've tried a number of solutions to get convergence of results. Starting from default turbFoam tutorial parameters, changed solvers to GAMG for pressure and smooth for momentum and scalars. Increased nonOrtho corrections. Later switched to first oder discretization (from linear to upwind). Converted mesh to polyhedral with polyDualMesh. None of that steps helped!

The only solution is to use othe k-epsilon model, for example realizableKE works perfectly with any settings and does not requires 1st oder or mesh improvement, changing solvers whatever!

So what could be the reason that standard k-epsilon stucks with this task?

Thank you! Waiting for your comments!


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