CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   Wind driven rotation (

Alistair August 22, 2011 06:50

Wind driven rotation
Hey everyone,

I am working towards simulating a turbine in 3D. I'm currently working with a test case in which I've defined a rotating cube in a flow to try and get all the boundary conditions etc working properly before I add in the turbine.

I'm using icoDyMFoam and mixerGgiFvMesh to rotate the cube at a given rpm in a given flow velocity and it all seems to be working fairly well. Ideally though I'd like to drive the rotation of the cube using only the flow velocity so that I can determine how the rotation of the turbine varies with wind speed.

Is it possible to do this with mixerGgiFvMesh? I can't see an obvious way of doing it without defining the rpm.

I have tried experimenting with sixDoFRigidBodyDisplacement and dynamicMotionSolverFvMesh with another test case and it seemed promising, but when I try and use it with this case I get the error:

Unknown patchField type sixDoFRigidBodyDisplacement for patch type wall

I'm guessing this means that dynamicMotionSolverFvMesh doesn't work with ggi? Is there a ggi version of this out there? If not can anyone suggest a way of doing this with ggi or should I go back and give it a try using sliding interfaces?

Any suggestions would be greatly appreciated!


Alistair August 25, 2011 10:39

Has anyone got any ideas or experience of doing anything similar? I'm at a loss as to how to proceed, so it would be really useful if you could just give me a hint or point me in the right direction.

Thanks in advance,

linnemann August 25, 2011 14:33


Im gonna chime in on this.

Also doing some VAWT simulations myself using transientSimpleDyMFoam and mixerGgiFvMesh.

The approach I have used is similar to yours.

Consider these input.

1. The stuff you request is not available in the std OF package, you need something like the 6DoF but for cylindrical coordinates.

2. Consider the amount of time making this work contra doing this.
Simulate at different rpm's and see where your maximum torque occurs using the "force" monitors available. This can be a tiresome approach, but a little scripting and automation will let you calculate the points while you sleep. :)

3. Consider stability issues in the code making what you want.
If the pressure suddenly start to diverge just a little then the "turbine" will start spinning like crazy and you need to build some artificial resistance into the "turbine" to make it stable. It can have other stability issues but you get the idea.

Nonetheless it is a viable approach.

Watch the movies by this guy (pretty impressive stuff) If I remember correctly he speaks of what you want in one of the movies, so maybe contact him and see if he would like to share.

Edit. Found it --->>>

Hope this gets you further on your quest.


mbeaudoin August 25, 2011 21:52


You might be interested in the work of Louis Gagnon from Laval University.

Here is a few pointers:


He used OpenFOAM and the GGI interface for his work.



Originally Posted by Alistair (Post 321586)
Has anyone got any ideas or experience of doing anything similar? I'm at a loss as to how to proceed, so it would be really useful if you could just give me a hint or point me in the right direction.

Thanks in advance,

Alistair August 26, 2011 05:17

Niels and Martin,

Thanks very much, some interesting examples and that certainly gives me a clearer direction to head in. It should keep me busy for a while!

Thanks for your help, no doubt I'll be back with more questions as I progress!


desert_1250 August 27, 2011 01:30

Vawt 3d
Hi foamers,
i simulated 2d VAWT successfully with OF (ggi method) and get the good result for mummentum as expected.
after that i decide to simulate it in 3d Geometry. so i create the 3d geometry and Mesh in Gambit and import it to OF, every thing is ok and i stop the run after 50 rotation degrees. when i see contours of velocity or pressure, every things is ok, but when i extract the mummentum, the result is very bad!!!??? why this happen???
for calculate the forces and mummentum for every blade i added this code in controlDict file :
type forces;
functionObjectLibs ("");
outputControl timeStep;
outputInterval 100;
patches (Blade1);
PName p;
Uname U;
log true;
rhoInf 1.2;
CofR (0 0 0);

can every one tell me what is the mistaken??


linnemann August 27, 2011 13:11


I do not think you made a mistake.

I just did something similar with a NACA0012 3bladed lift VAWT.

Simulated it in 2D and got reasonable (not expected) results and a max power output at TSR=2.6 which is in the expected range.

Going full 3D reveal some truly other results. Here I get max power output around TSR=1.0 which just isn't good enough.

I think there are some 3D effects on a lift based VAWT that's not described in any literature I have found. I can only find literature with 2D results and they always show reasonable results.

Looking at the power curves for the VAWT in 3D, the drag is simply too high compared to the lift.

So don't feel bad I just do not think lift based VAWT's is a good device for capturing wind. I would suggest going for a small HAWT that works in the area of wind intended.

I know that there are company's out there selling lift based VAWT's but I have never found any of them showing real life power output compared to the wind speed. So I must say I think these companies make a lot of money presenting '"theoretical" values that just isn't possible in real life.

This is not to dismiss the ideas of lift based VAWT's I have just not found any evidence that these devices produce anything near the values the analytical numbers suggest, even if I'm pessimistic with the efficiencies etc.

Hope this haven't killed your pursuit of making a wind turbine. Personally I will stay away from lift based VAWT's until I see some solid evidence (real life values), as I do not have the capacity to provide prototypes for this.


desert_1250 August 27, 2011 14:33

Result 2D & 3D
2 Attachment(s)
hi dear linnemann, i hope that you are well
the attachment files has shown my VAWT Results for 2D & 3D. in these figures i plotted power versus theta (rotation). Significant discrepancy has been illustrates between 2D & 3D. what is your idea a bout these results?!!


linnemann August 27, 2011 14:51


First of the theta scale on the x-axis is very different?

Second you should see some fluctuations similar to the 2D case, thats what I got anyway.

Have you checked the timestep and mesh scale?

Also please give the content (or attach them to the thread) of the BC, fvSchemes, fvSolution, controlDict and maybe the output of the checkMesh and the yPlusRAS command for the last timestep.

This will make it a lot easier for me and others to help you.


desert_1250 August 28, 2011 01:56

1 Attachment(s)
yes i cheked time step so that the solution is converged.
how to determine an axis to calculate mumentun? in 2D case, the mummentum is calculated versus the point that define cofR(0 0 0) at the controlDict , but in 3D case ... in my 3D case the origin cordinate system is (0 0 0). i think that should be define an axis in 3D case. is it true??
the attachment file has contained BCs, fvShemes, fvSolotion, controlDict


linnemann August 29, 2011 01:50


When you use the force output it calculates the Torque on all three axis so CofR is just to locate the center of the rotating object.

If you do not want the forces for each individual blade you can just add them together.


patches (Blade1 Blade2 Blade3);
I can see you only have a divScheme for U, which turbulence model are you using?

desert_1250 August 29, 2011 02:48

1 Attachment(s)
i did'nt consider any turbulency model at first. i am sure that turbulencey is very important in this problem. but now i wanna solve it without any turbulency.
in 2D case, i calculated the Torque for each blade and after that summation of them to find Power of VAWT. i wanna do it for 3D state so that can compare them.
BTW i edited controlDict to calculated the summation of torque and run it for some time step, but the summation of them is very low:((
how to define cofR correctly so that set it at the center of the rotating object?
note: please zoom picture of the attachment file because of limited size, tnx


linnemann August 29, 2011 05:09

If the rotating object rotates about the z-axis and the z-axis goes through the point (0 0 0) and has the vector (0 0 1) the CofR is (0 0 0) since the forces are calculated in all axis (x,y,z).

So if the rotating object still rotates around the z-axis with vector (0 0 1) but going through the point (10 0 0) then CofR would be (10 0 0)

desert_1250 August 29, 2011 05:43

my rotational axis goes through the point (0 0 0) and my rotational object rotates around z axis. i check it with mesher and paraview as attached in the last post :( now what is the mistaken:(:(


linnemann August 29, 2011 06:22

Nothing related to how you specify the forces.

If there is an error it must be elsewhere.

Have you looked at the pressure/velocity contours at the mid plane (z-normal) between the 2D and the 3D case and see if they look similar?

desert_1250 August 30, 2011 00:18

yes linnemann, i get pressure/velocity contours at the mid plane (z-normal) for 2D & 3D case and see the results as expected, would you mind to send me your mail that send the results of them to you, tnx


All times are GMT -4. The time now is 13:04.