
[Sponsors] 
May 17, 2013, 04:39 
how to accurately simulate flow around cylinder

#1 
Senior Member
Join Date: Jan 2013
Posts: 118
Rep Power: 5 
hi everyone!
I've been doing simulation about flow around cylinder recently. Some information about the case is listed below. 2D simulation; U=1, D=1, rho=1, nu=0.01, so Re=100; domain size: upstream 20D, downstream 40D, topwall and bottom wall 20D. mesh size: about 40000 vertices The problem is that no matter how I tried, I can not get the accurate result in terms of strouhal number, which in my case is 1.44. An accurate St for RE100 should be 1.65. Could someone send me a similar case file which has been verified and yields accurate results so I can check what went wrong in my own case? I will be very grateful! my email address is kaizhangkf@ynu.ac.jp 

May 17, 2013, 06:41 

#2 
Senior Member
Sasan Ghomi
Join Date: Sep 2012
Location: Iran  Tehran
Posts: 185
Rep Power: 6 
Hi ,
I think you use icoFoam as a solver. So I think two parameters have vital role for getting the exact result : 1) discretization method of terms in equations 2)Mesh generation. So change your fvSchemes and fvSolution as below : Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM Extend Project: Open Source CFD   \\ / O peration  Version: 1.6ext   \\ / A nd  Web: www.extendproject.de   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG; preconditioner DIC; tolerance 1e06; relTol 0; }; U { solver BiCG; preconditioner DILU; tolerance 1e05; relTol 0; }; } PISO { nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM Extend Project: Open Source CFD   \\ / O peration  Version: 1.6ext   \\ / A nd  Web: www.extendproject.de   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default backward; } gradSchemes { default Gauss linear; grad(p) Gauss linear; } divSchemes { default none; div(phi,U) Gauss GammaV 0.5 ; } laplacianSchemes { default Gauss linear limited 0.5; laplacian(nu,U) Gauss linear limited 0.5; laplacian(rUA,pcorr) Gauss linear limited 0.5; laplacian(rAU,p) Gauss linear limited 0.5; } interpolationSchemes { default linear; interpolate(HbyA) linear; } snGradSchemes { default limited 0.5; } fluxRequired { default no; pcorr; p; } Hope this helps, Sasan. 

May 17, 2013, 10:55 

#3 
Senior Member
Join Date: Jan 2013
Posts: 118
Rep Power: 5 
dear sasan
thanks very much! your post solved the problem, I used icoFoam this time, now my St number is 1.62, which is much better than the previous ones. Now it is clear that it is not the problem of my mesh, but the discretization method of terms in equations that is giving me bad results. However, in my previous simulations, I used pimpleFoam because for the long run I need to do much higher Re simulations, for which icoFoam is not appropriate. Here is my fvschemes and fvsolutions, which is for pimpleFoam and did not give right result. Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.1.x   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver GAMG; tolerance 1e06; relTol 0.01; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } pFinal { solver GAMG; tolerance 1e06; relTol 0; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } "(Ukepsilon)" { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0.1; } "(Ukepsilon)Final" { $U; tolerance 1e05; relTol 0; } } PIMPLE { nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } relaxationFactors { fields { } equations { "U.*" 0.9; "k.*" 1; "epsilon.*" 1; } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.1.x   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss limitedLinearV 1; div(phi,k) Gauss limitedLinear 1; div(phi,epsilon) Gauss limitedLinear 1; div(phi,R) Gauss limitedLinear 1; div(R) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected; laplacian((1A(U)),p) Gauss linear corrected; laplacian(DkEff,k) Gauss linear corrected; laplacian(DepsilonEff,epsilon) Gauss linear corrected; laplacian(DREff,R) Gauss linear corrected; laplacian(DnuTildaEff,nuTilda) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } // ************************************************************************* // 

May 17, 2013, 11:56 

#4 
Senior Member
Join Date: Jan 2013
Posts: 118
Rep Power: 5 
I just tried changing the settings in pimpleFoam to the ones you provided, hoping that it would also give good result, but it did not.
It seems in my case ,icoFoam does a better job than pimpleFoam. or pimpleFoam requires something other different settings? 

May 17, 2013, 12:36 

#5 
Senior Member
Join Date: Jan 2013
Posts: 118
Rep Power: 5 
dear sasan
I think I found the cause for the inaccuracy of the Str number in pimpleFoam. HTML Code:
http://www.cfdonline.com/Forums/openfoamsolving/94785icofoamvspisofoamlaminar.html it is found out that for unsteady cases relaxation is more than necessary. however, in pimpleFoam relaxation is allowable, should we never use relaxation in pimpleFoam when dealing with unsteady cases? 

May 17, 2013, 15:31 

#6 
Senior Member
Sasan Ghomi
Join Date: Sep 2012
Location: Iran  Tehran
Posts: 185
Rep Power: 6 
Hi kia ,
You are welcome . I tried to simulate turbulent flow around a cylinder with pisoFoam 67 month ago.But I had some problems and the case didn't converge and amplitude of Lift didn't get a fix value(oscillation was not regular ). Actually I didn't succeed to simulate the flow accurately. About relaxation factor I should say that I have heard when you use PISO algorithm for solving equations if you use relaxation factor only final result (after convergence) is accurate. Anyway I am interested in simulation of turbulent flow around a cylinder and I will try to do it. Let me know your progress. Thanks and best regards, Sasan. 

September 20, 2013, 16:27 
Help

#7 
New Member
You
Join Date: Sep 2013
Posts: 5
Rep Power: 5 
Hi Sasan,
Thank you for your help very much. This is my error. When time is 1.45s. I have no idea why this is happenning, Would you like to enlighten me a little bit? Courant Number mean: 1.11225e+91 max: 2.80651e+96 #0 Foam::error:rintStack(Foam::Ostream&) in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so" #2 __restore_rt at sigaction.c:0 #3 Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so" #4 Foam::fvMatrix<Foam::Vector<double> >::solve(Foam::dictionary const&) in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam" #5 Foam::fvMatrix<Foam::Vector<double> >::solve() in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam" #6 main in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam" #7 __libc_start_main in "/lib64/libc.so.6" #8 Foam::UOPstream::write(char) in "/home/yzhou/OpenFOAM/OpenFOAM2.1.1/platforms/linux64Gcc44DPOpt/bin/icoFoam" Floating exception 

September 20, 2013, 17:37 

#8 
Senior Member
Sasan Ghomi
Join Date: Sep 2012
Location: Iran  Tehran
Posts: 185
Rep Power: 6 
Hi sherandlock ,
Your case has diverged . The Courant number is very high . So I only have one idea , Try to use adjustTimeStep in the controlDict. Add below lines in the controlDict : Code:
adjustTimeStep yes; maxCo 0.5; maxDeltaT 0.01; 

February 26, 2014, 12:56 
flow past a circular cylinder

#9 
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Dear Sasan,
I'm try to implement flow past circular cylinder in pimpleFoam solver. I attached the case that I'm looking for (pdf file). I blocked and checked mesh everything was fine. I run the case without any problem. But, when I plotted drag and lift forces (using Matlab), it gave me inconvenience result. I don't know where is my mistake. Anyway, I attached my case if you could please go through all files and checked please what are my mistakes. NT: D = 1, Re = 100. I'm trying to fix nu in transportProperties file and change u in the attached file because I didn't know where are my errors so I'm trying to do different ways. Also, might blockMeshDict affects my results if you could check please. Many thanks in advanced. 

February 28, 2014, 09:36 

#10 
Senior Member
Sasan Ghomi
Join Date: Sep 2012
Location: Iran  Tehran
Posts: 185
Rep Power: 6 
Hi,
There is no attached file, honestly! best regards. 

February 28, 2014, 09:45 

#11 
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Hi Sasan,
sorry, I attached them again. Looking forward for your help. 

March 3, 2014, 22:24 

#12  
Senior Member
Join Date: Jan 2013
Posts: 118
Rep Power: 5 
I think at Re=100, turbulence model will jeopardize your result. In this regime the flow is mainly 2 dimensional and could be regarded as not turbulent.
Quote:


March 4, 2014, 06:00 

#13 
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Dear Kai Zhang,
I'm working in laminar not turbulence model. Have I changed my solver from pimpleFoam to another solver or that does not affect? What other changes would be supposed? Regards 

March 4, 2014, 06:17 

#14 
Senior Member
Alexey Matveichev
Join Date: Aug 2011
Location: Nancy, France
Posts: 1,438
Rep Power: 25 
According to your case files, you're working with oneEqEddy LES model for the turbulence. If you'd like to run simulation for laminar case you need to:
1. Put RASModel in constant/turbulenceProperties 2. Put Code:
RASModel laminar; turbulence off; printCoeffs on; Also I'd suggest you to change fvSolution: Code:
PIMPLE { nOuterCorrectors 10; nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; residualControl { "(Up)" { tolarance 1e4; relTol 0; } } } 

March 4, 2014, 06:51 

#15  
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Dear Alexey,
many thanks for your reply. I did all changes that you supposed. After typing pimpleFoam in the command window, I got this error [QUOTE] Quote:


March 4, 2014, 06:56 

#16 
Senior Member
Alexey Matveichev
Join Date: Aug 2011
Location: Nancy, France
Posts: 1,438
Rep Power: 25 
Well,
Post your RASProperties file, otherwise I can only suggest that RASProperties file is incorrect 

March 4, 2014, 07:01 

#17  
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
This is RASProperties file
Quote:


March 4, 2014, 07:06 

#18 
Senior Member
Alexey Matveichev
Join Date: Aug 2011
Location: Nancy, France
Posts: 1,438
Rep Power: 25 
Well, can you please tell me the difference between what you've posted and what I've suggested to put into RASProperties?
Can you create a file with just Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.2.2   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object RASProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel laminar; turbulence off; printCoeffs on; // ************************************************************************* // The error you've got tells you that there's no turbulence keyword in RASProperties files, and in fact there's no such keyword in your file. Last edited by alexeym; March 4, 2014 at 07:07. Reason: addition 

March 4, 2014, 07:11 

#19 
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Dear Alexey,
sorry for that mistakes. I is running now. I will let you know about the result. Many thanks 

March 4, 2014, 07:36 

#20 
Senior Member
ok
Join Date: Oct 2013
Posts: 345
Rep Power: 6 
Dear Alexy,
the running is done. I have two questions please 1. in cotrolDict file (attached) startTime 0; endTime 25.0; deltaT 0.01; but the running is completed after 1.4, why? Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.6   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application pimpleFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 25.0; deltaT 0.01; //1e04 writeControl adjustableRunTime; writeInterval 0.1; //5.0e1 purgeWrite 0; writeFormat binary; writePrecision 6; writeCompression uncompressed; timeFormat scientific; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 0.5; maxDeltaT 2.0e3; functions { probes { type probes; functionObjectLibs ("libsampling.so"); enabled true; outputControl timeStep; outputInterval 1; probeLocations ( ( 0.05 0.0 0.002 ) ( 0.05 0.01 0.002 ) ( 0.05 0.01 0.002 ) ( 0.05 0.01 0.002 ) ( 0.05 0.01 0.002 ) ( 0.05 0.01 0.002 ) ( 0.05 0.01 0.002 ) ); fields ( p ); } forces { type forceCoeffs; functionObjectLibs ( "libforces.so" ); outputControl timeStep; outputInterval 1; patches ( walls ); directForceDensity no; pName p; UName U; rhoName rhoInf; //log true; rhoInf 994.5; CofR ( 0 0 0 ); liftDir ( 0 1 0 ); dragDir ( 1 0 0 ); pitchAxis ( 0 0 1 ); magUInf 1.787e4; //1; //0.54 lRef 0.04; Aref 0.0157; Aref1 0.004; rhoRef 994.5; } fieldAverage1 { type fieldAverage; functionObjectLibs ("libfieldFunctionObjects.so"); enabled true; outputControl outputTime; fields ( U { mean on; prime2Mean on; base time; } p { mean on; prime2Mean on; base time; } ); } } // ************************************************************************* // 2. the drag chart is given as attached. Why? I know the drag coefficient figure is tottaly different, whats the wrong? Best regards 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
OpenFoam Flow over a Circular Cylinder  WolfgangS.  OpenFOAM Meshing & Mesh Conversion  12  March 3, 2014 11:53 
benchmark: flow over a circular cylinder  goodegg  Main CFD Forum  12  January 22, 2013 12:47 
Particle deposition on circular cylinder in turbulent flow  Julian K.  CFX  1  October 3, 2011 17:51 
flow around a cylinder  pXYZ  Main CFD Forum  14  July 25, 2011 10:05 
Flow induced vibration of a mobile cylinder  Hooman  Main CFD Forum  0  December 31, 2010 09:48 