|
[Sponsors] |
July 2, 2010, 13:44 |
simpleSRFFoam and forces
|
#1 |
New Member
Join Date: Mar 2010
Posts: 7
Rep Power: 16 |
Hi,
I have read in some of the posts here that there could be a problem with the calculation of integral forces when using SRF (single reference frame) solvers. It was said here somewhere that the torque e.g. on windmills is way too high. Being quite new to OpenFOAM, I set up a case for a wind turbine and after some time got it working. I used the "forces"-function in the controldict and instantly ran into the same problem. To bring some light into that case, I used paraview to compute the forces acting upon the surface of the blades. (Quite tricky: extract block, generate normals, multiply p with normals, integrate values... et voila: Forces in X,Y,Z-directions. For the torque we need to use the cross-product of (p*normals) and the coordinate-vector. Integration of that gives the moments.) Now, if i compare this to the values I get from the forces-function, values are about 20% lower. Much more like I would expect them to be. So is the post-processing in OF damaged? Or maybe it doen't like simpleSRFFoam?? Does anybody else have similar experience? Next question on my heart is the bc for a freestream around a wind turbine... I tried to use a "slip" condition and was surprised that there seemed to be a boundary layer (at least looking at Uabs). can anybody suggest which bcs to use? Do I need something special for SRF? I have a cylindrical area around the blades, 2D upstream and 10D downstream. Thx! macbeth |
|
October 29, 2010, 19:42 |
|
#2 |
Senior Member
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 155
Rep Power: 17 |
Did you get some results with SRFFoam over windmills? I have problems with bcs. Continuity errors are increasing each iteration, but I do not know where the problem is.
I think the case is similar yours, but I use cyclic condition. I am studying a 120º sector. |
|
November 2, 2010, 06:46 |
|
#3 |
New Member
Join Date: Mar 2010
Posts: 7
Rep Power: 16 |
I wasn't able to "tame" SRFFoam. I kept getting strange results on the free stream BCs on the outside region.
So finally I went for MRFSimpleFoam with a rotating "rotor-region" that encloses the blades. The setup is a bit more tricky, but now I have a small script that calls snappyHexMesh and all the "cellSet" and "faceSet"-stuff. The results look ok. But I still have to find a validation case or some "hard" real world data. How are you coming along with SRFFoam? |
|
November 2, 2010, 10:02 |
|
#4 |
Senior Member
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 155
Rep Power: 17 |
With SRFFoam, actually I am not able to reach a valid solution.
With MRFFoam I obtain convergence problems too, so I do not know were is the problem ( mesh or setup). In your case, Are you studying a 120º sector or a 360º region? Could you explain the cellset, faceset and those stuffs to setup a case? I have been reading all along the forum, but in clear, I do not reach a valid solution. |
|
November 8, 2010, 13:07 |
|
#5 |
New Member
Join Date: Mar 2010
Posts: 7
Rep Power: 16 |
Hi be_insipred
I used a 360° region just to keep it simple .I'll try to explain my setup briefly: Here is a quick summary:
Here are some details: I have uploaded some pictures that show how I set up blockMesh. Note that he inner region of my blockMesh is a cylinder. Later, when I define the "rotor-Cellset" I use the same dimensions (cellset-diameter = inner blockmesh-diameter) After running snappyHexMesh, I have added a cellZone named "rotor" (red in the picture) with a simple cellSetDict: system/cellSetDict Code:
name rotor; // One of clear/new/invert/add/delete|subset/list action new; // Actions to apply to cellSet. These are all the topoSetSource's ending // in ..ToCell (see the meshTools library). topoSetSources ( // Cells with centre within cylinder cylinderToCell { // blockmesh-Raster: 25m/40=.625 p1 (-0.625 0 0); // start point on cylinder axis p2 (1.875 0 0); // end point on cylinder axis radius 2.6; } ); Code:
cellSet setsToZones -noFlipMap (Here I'm not sure if this step is needed any more with OpenFOAM 1.7.x. Maybe someone can comment on this?) Anyway, I have done this: 1. create a faceSetDict in the system-directory: ./system/faceSetDict Code:
FoamFile { version 2.0; format ascii; class dictionary; object faceSetDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // name rotor; // Name of set to operate on // Name of the faceSet // One of clear/new/invert/add/delete|subset/list action new; topoSetSources ( cellToFace { set rotor; option all; // Takes all the faces from the CellSet named rotor } ); Code:
faceSet Code:
FoamFile { version 2.0; format ascii; class dictionary; object faceSetDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // name rotor; // Name of the faceSet // One of clear/new/invert/add/delete|subset/list action delete; topoSetSources ( boundaryToFace { } ); Code:
faceSet setsToZones -noFlipMap ./constant/MRFZones Code:
FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object MRFZones; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 1 ( rotor { // Fixed patches (by default they 'move' with the MRF zone) //nonRotatingPatches (); patches (); origin origin [0 1 0 0 0 0 0] (0 0 0); axis axis [0 0 0 0 0 0 0] (-1 0 0); omega omega [0 0 -1 0 0 0 0] 10; } ) Code:
MRFSimpleFoam BTW: In the attached pictures I have skipped the "snappyHexMesh"-step to keep the pictures clearer Last edited by macbeth; November 9, 2010 at 02:58. |
|
November 8, 2010, 14:59 |
|
#6 |
Senior Member
M. Montero
Join Date: Mar 2009
Location: Madrid
Posts: 155
Rep Power: 17 |
Thank you very much!! I appreciate a lot your help but sorry, I have some questions.
In the step 3, the FaceSetDict is the same as the commented at step 1. Is this correct? Do you say that it is necessary to substitute the file. Then, MRF equations are only applied in rotor zone? Do you have any jump in flow field from inner zone to rotor zone? I do not understand why it is necessary to define a rotor zone if there is only 1 rotor and no stator. Thanks a lot!! |
|
November 9, 2010, 03:14 |
|
#7 |
New Member
Join Date: Mar 2010
Posts: 7
Rep Power: 16 |
Hi,
I have edited my post to make the changes in the faceSetDicts clearer. Yes, you have to call faceSet twice (with different faceSetDicts). In the first run you have Code:
action new Code:
action delete The reason I chose MRF was that I was not able to set the boundary conditions to something like freestream in SRF. The solution always showed some kind of boundary layer on the sides of the cylinder. So I went for MRF with a big non-rotating zone and a small rotating zone. There is no inconsistency in the flowfield between the zones. Something I have not figured out so far: In the post processing I'm not able to "switch" to relative flow. In SRF you get U_abs and U_rel. MRF only uses U. Question to all: How can I calculate U_rel for a rotation MRF-zone? @be_inspired: let me know if your case works!! |
|
February 20, 2014, 04:17 |
|
#8 | |
Member
Fengjiao Bian
Join Date: Nov 2013
Location: beijing
Posts: 30
Rep Power: 12 |
Quote:
|
||
Tags |
paraview, simplesrffoam |
|
|