k-omega SST flow over a cylinder
I simulated flow over a cylinder with k-omega SST model. But the result was very wrong.
Here is some configuration of my case. D=3.81cm, U=0.19m/s, fluid is set to be water. U and p B.C. is set as usual. B.C. of k is fixedValue=1e-12 at the cylinder. B.C. of nut is fixedValue=nutUSpaldingWallFunciton at the cylinder or fixedValue=1e-12. B.C. of omega is omegaWallFunction. y+is around 1 according to y+=0.172*delta_y/D*Re^0.9. With this configuration, there is vortex shedding and the frequency seems to be Ok, but the pressure at the cylinder is totally wrong, which leads to a wrong drag and lift force. Anybody know what is wrong with my case, please give me some advice. |
Quote:
It's difficult to say, maybe you can put fvScheme file, fvSolution file and your boundaries conditions online. |
Hi Anselme,
the main boundaries are as below: omega boundary: Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
The fvscheme and fvsolution file are :
Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
Does anybody have some ideas?
|
1) you can try to set 1 or 2 non orthogonal correction (nNonOrthogonalCorrectors ) depending of your mesh.
2) Is it normal that your pcorr solver has only a tolerance of 0.02 ?! 3) Your pressure relaxation number looks a bit low for an unsteady simulation. Ideally it has to be close to 1 to really catch the unsteadiness. 0.8 would be much better I think. 4) Where did you get your k and omega value for the inlet ? Those two values are really important to predict the boundary layer separation. 5) use the "yPlusRAS -latestTime" to really compute the yplus of your case ... |
1 Attachment(s)
hi Heckmann,
I modified the files according to your suggestion. But It seemed to have little influence on the result. I tried two cases of which the yplus is 1.1 and 0.8 computed by the utility. Something interesting is that the pressure near the cylinder seems to be OK if you ignore the sudden change of them. It suddenly change to a very high or very low value. it looked like this: |
how is your mesh ? Can you give a screenshot ?
Also, you can run a "checkMesh" utility and give the report |
1 Attachment(s)
I checked mesh, it showed the mesh is all OK.
here is the report: Code:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // |
From the picture on post 7, it looks like you have a divergence...
1) Personally I would not set k = 0 at the inlet since it doesn't have any physical meaning. You can use the tool http://www.cfd-online.com/Tools/turbulence.php to estimate it. Roughly, you can set it as equal to 1e-6. 2) I'm not familiar with pimpleFoam (I work more on rhoPimpleFoam) but I think that you can set the inlet boundary of nut as "calculated" or "zeroGradient" since nut is derived from k and omega (If I remember well my classics). 3) maybe you have a problem with the time step. What is your maximum Courant Number (given at each iteration) ? It should be lower than 0.2 to avoid divergence or some sporadic crazy behavior. You can also try to use a second order scheme for ddt or maybe a cranknicholson. 4) try to change the turbulent div scheme to linearUpwind. It's often more stable. |
Hi Heckmann,
Thanks very much for your patience and kindness. Following your suggestions, I finally succeed to get a reasonable result. I changed the maxCo to 0.2 the pressure relaxation number to 0.8, and the time scheme to CrankNicolson 0.5. I am not good at CFD. For many parameters in the case files, sometimes I don't know how to set them -- I don't know what value is appropriate. I am trying to learn. Could you give me some advise? |
CFD is most of the time a matter of experience. I've never found any book or class able to really prepare a student to deal with "advanced" cfd. The only thing you have to do is to keep working and trying :D
In French we say: "c'est en forgeant qu'on devient forgeron", that you could roughly translate to "practice makes perfect". |
Quote:
I use OpenFOAM since two month and I agree with you, it is not always easy .. I can only advise you to learn about CFD online and trust people who have written hundreds of posts..;) I am particularly interested in your blockMeshDict your cylinder. I would be very grateful if you can give me your file. Thank you, Anselme |
1 Attachment(s)
Hi, Bonnet
My blockmeshDict is copied from the tutorial case in potentialFoam. You can download my file from the attachment, or go to the tutorial to find the original file. |
1 Attachment(s)
Thank you, I didn't see that ! But It's only a semi-cylinder. So I duplicated it but It seems to have a problem with my mesh regarding the connections in the symmetry plane. If you look on the picture, there is abnormal features in the symmetry plane
Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
1 Attachment(s)
Use mirrorMesh utility to create a mirror mesh. Set control parameters in mirrorMeshDict in system directory.
|
thank you!
I did what you said, I put the file "mirrorMeshDict" in the system directory, but before and after the computation, I can't generate the mesh, I still have a half-cylinder .. Maybe I need to put something in the controlDict or somewhere? |
which version do you use? if of1.6ext, please check the 0 directory.
|
k-w-SST steady-2D
Dear all,
I have been following this thread because I am starting to use OpenFOAM and trying to simulate the case of a circular cylinder, starting from a simulation in steady and 2D conditions. Not extent of some trouble I have finnally built a case which runs properly, but I get values of drag around 0.012 only! My fvSchemes and fvSolution scripts are below these lines. Any thoughts will be more than welcome :) Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
Did you set the good value for the force function (in controldict) ? I mean, does your reference length and all other arguments are ok ?
|
1 Attachment(s)
Well, that was my first thought and they seem to be OK. On the other hand the residuals worry me, as you can see in the attached figure they are pretty high, but I'm not able to spot where errors might come from.
|
getting used to crappy k-Omega SST residuals
I am getting used to seeing k-omega SST runs with decrepit residuals. Even when you are careful about your y+ (keeping it below 5 or even below 1 at all times) as you have been. Just run the motorbike tutorial and you will see residuals that make yours look amazing (regardless of how long you let it run). After lots of tweaking your mesh (mine come from snappyHexMesh), it is possible to improve residuals on a case by case. In the case of snappyHexMesh, sometimes less means more. When I ask snappyHexMesh to do lots of iterations, it sometimes endsup worsening the mesh.
Quote:
|
further issues
1 Attachment(s)
Thanks Frédéric,
I found out that for 2D Aref has to be the spanwise cell thickness, and modifying it I get proper values of c_d (for 2D-SRANS...). This was using omegaWallFunction and y1+ in the range of 4-42. When I tried with a finer mesh (aiming for y1+ about unity) the case crashes due to floating point exception before 700 iterations as seen in the attached picture. The output of checkMesh is as follows: Code:
/*---------------------------------------------------------------------------*\ Thanks in advance |
Just to remind me, what is your Reynolds number?
|
I'm setting up the case at Re = 3e+6
|
Simulating a cylinder is not as easy as it might look... An airfoil is much easier to converge. How does your data look like (flow field) at 500 iterations for example? Is there any un physical properties?
You might have to try with a simple first order (upwind) at e beginning and when you get a good general flow field, you can go to second order. It is hard to convergence directly to second order a case as complicated as a flow behind a cylinder (the recirculation area is not easy to find) |
1 Attachment(s)
Dear All,
I sent the last two days trying to simulate this tricky problem. I had some discussions about it on: http://www.cfd-online.com/Forums/ope...tml#post444972 As Fredo well said simulate the flow around a cylinder is harder than it seems. I found on my backups some data from a similar wind tunnel experiment I did back in 2008. We where measuring the turbulence on the cylinder wake and drag wasn't the main purpose. The Reynolds was 2*10⁴ and I have two results for Cd=0.925 and on another experiment Cd=1.019. According to Schlitching Cd=1.2. Those fellows (http://www.disasterzone.net/projects...ent.pdf) also had some problems and found Cd=1.06 and Cd=0.96. After 29 attempts I am getting Cd around 1.1. I will upload the complete case to dropbox and post the link here. |
1 Attachment(s)
I am using a 3D domain and snappyHexMesh in order to make "scaleable" and "swapable" in case of running a different body . The bottom plane is treated as a wall (as it is on motorbike tutorial). The same case can run with pimpleFoam renaming the FvSolutions and FvScheme files.
I would like to compare some Ux results on a plane 40mm behind the cylinder. I have the analytical and experimental data of it and it will be good to compare. Does anyone kno a easy way to get this data? Thanks! |
|
Hi guys,
This is kinda an old thread, but I am just wondering whether or not you see any amplitude modulations in your responses (meaning CD or CL vs time) in your 3D simulations? I am doing the same problem in Star-CCM+ for Re = 4,000 with different RANS models, I see the modulations in SST KW results but no modulations when I use K - epsilon. Thanks, A E |
All times are GMT -4. The time now is 02:04. |