CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Flow induced 3D motion OpenFoam

Register Blogs Community New Posts Updated Threads Search

Like Tree8Likes
  • 8 Post By Bloerb

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   December 12, 2018, 03:44
Default Flow induced 3D motion OpenFoam
  #1
Member
 
Ilan
Join Date: Dec 2018
Posts: 52
Rep Power: 7
Magistrane is on a distinguished road
Dear Foamers,

I am a PhD student who begun his thesis 3 months ago using OpenFoam.
I am working on tidal current turbines and have access to a big computational power. Thus, as first step for my thesis, I would like to run a 3D flow induced motion for my turbine. I don't need to take the deformation into account.

Thing is, I only found really simple cases of flow induced motion like the wingmotion tutorial using the 6 DOF solid solver. By the way, I struggle understanding how it is working : with out even touching the case, I have got pression waves up and downstream due to the mesh deformation (see attached). If I remove some constrain/restrain, the calculation diverges in some steps... and with no apparent reason (mesh still good). Moreover, I can't find any documentation about the sixDoFRigidBodyMotion motionSolver like the equations.

My question is : should I move to Foam extend for the FSI solveur even if i don't want to take into account deformations ? I am afraid this could be a really heavy calculation cost whithout need.

My other and last option is to use pimpleDyFoam but writing code to implement my speed depending of the previous step pression on blades. For now, I didn't find such a code.

If someone has any advice for me, I'll take it.

Thanks and happy Foam.
Attached Images
File Type: jpg Deformation.jpg (75.3 KB, 186 views)
Magistrane is offline   Reply With Quote

Old   December 13, 2018, 09:26
Default
  #2
Senior Member
 
Peter Baskovich
Join Date: Jul 2014
Posts: 127
Rep Power: 11
pete20r2 is on a distinguished road
Hi Ilan,
I think you need to take a half a step back and first make a clear goal for what information you would like to obtain from your simulations.
It's all very exciting to jump straight in and throw all the tricks at the problem to make it as realistic as possible but it's very often not necessary.
How far down the rabbit hole do you want to go, resistance load curves, rotary inertia?
Or could you get the same information running a batch of pimpleDyM cases with a matrix of velocities and RPMs. This way you can build a map of the turbine efficiency.
pete20r2 is offline   Reply With Quote

Old   December 13, 2018, 10:04
Default
  #3
Member
 
Ilan
Join Date: Dec 2018
Posts: 52
Rep Power: 7
Magistrane is on a distinguished road
Hey Peter,

First of all, I want to thank you for your answer.
You are right, I should have explain why I need that kind of simulation :

My thesis subject is the study of the impact of fouling on turbines wake and performances. To do so, I will have to build another kind of model ( I wanted to focus on LES/Vortex Method until I realized that because of fouling, Kutta's condition will not be satisfied, but here is not the question)

In order to so, I have to build a classic CFD model to valid my futur calculation.

For the wake studie, there is no problem : I already computed a wind turbine using PimpleDyMFoam and the calculation seems stable (I didn't ran it for long, il was just a test).

But, I can't estimate performances within imposing a rotational speed. This is physical incorrect... Right ? That's why I am interesting to flow induced motion with sixDoFRigidBodyMotion.

As I said, an other option is to use pimpleDyFoam but writing code to implement my speed depending of the previous step pression on blades. I think that this kind of approche is correct, but I don't know how to implement my speed using OpenFoam's results.

What would you choose ? sixDoFRigidBodyMotion or pimpleDyFoam with home made code ?
Magistrane is offline   Reply With Quote

Old   December 13, 2018, 15:24
Default
  #4
Senior Member
 
Join Date: Sep 2013
Posts: 353
Rep Power: 20
Bloerb will become famous soon enough
Now before you should think about that topic at all make sure you know which flow solver to use (compressible/incompressible/...), which turbulence model etc. Afterwards make sure you have a decent mesh and have run a simulation on that mesh that converges, is accurate and captures what you need.

Now to your question!


There are 3 options in increasing order of computational effort:
  • NO FSI - just move the wall with a mesh motion solver. (Works with every DyM Solver like pimpleDyMFoam - or in recent OF versions pimpleFoam)
  • rigid body FSI (again: Works with every DyM Solver)
  • Full FSI (needs external software or the fsi library in foam extend)
Now full FSI is to expensive for what you want to do unless you are interested in stresses inside your solid. OpenFOAM has two libraries for rigid bodies.
sixDoFRigidBodyMotion and rigidBodyDynamics. These are nearly identical, however the rigidBodyDynamics library can solve for more than one rigid body. The sixDoFRigidBodyMotion on the other hand can be used as a boundary condition for every mesh motion solver. So there are small differences and they might at some point in the feature be consolidated into one. The rigid body fsi works with these steps
  1. calculate the rigid body motion (including forces from the flow at the given patch)
  2. move the points of the given patch by the distance calculated in 1
  3. use a mesh motion solver to move all the internal mesh nodes
  4. solve the flow
The standard mesh motion solver hard coded into both libraries is a slerp interpolation. You can however use any motion solver you'd like and replace the boundary for your object with sixDoFRigidBodyMotion.

Why might this fail even if the mesh is still ok? You need to make sure that

  1. You use strong coupling. Solve flow and rigid body motion more than once per time step to converge the motion. Hence use pimple (nOuterCorrectors >1) and (moveMeshOuterIters to solve the rigid body motion more than once) and use relaxation for both solvers.
  2. Make sure to specify nIter inside your dynamicMeshDict for implicit time integrators like newmark and crankNicolson so that the rigid body is solved more than once per time step
  3. Make sure that you can solve the rigid body motion with the time step used. The courant number limits only the fluid side. Undamped rigid bodies however might need a much smaller time step.
hgcastro, msaravia, aow and 5 others like this.
Bloerb is offline   Reply With Quote

Old   December 13, 2018, 19:18
Default
  #5
Senior Member
 
Peter Baskovich
Join Date: Jul 2014
Posts: 127
Rep Power: 11
pete20r2 is on a distinguished road
Here is how to analyse the turbine with pimpleDyMFoam.
Have a look at the propeller tutorial, it has lots of useful info and I think it's almost exactly what you need:
https://github.com/OpenFOAM/OpenFOAM...Foam/propeller
Of course you should be able to find it in your local installation too.
The important part is the forces function included in controlDict, this allows us to calculate the moments and forces on the turbine face, and since we specified the rotation speed in the dynamicMesh dictionary, calculating power is trivial.
If you do a few runs of this, say 5 different RPM points for each tidal flow rate and record the power, you will start to develop a 3D map of flow rate vs RPM vs Power. The first time you will have to play around to find peak power, or close enough to interpolate it. For consecutive tidal flow rate points you will be able to make a good guess at appropriate RPMs.
To get the flow rate through the turbine can be a bit more tricky. If the turbine is ducted then all you need to do is make a faceZone that covers all the flow that will go through the turbine and calculate a flow rate. There are a number of tools for this like the fieldAverage objects (used in a similar way to forces). If the turbine is not ducted then the far field velocity can be used.

Thinking about it, I think that the map should be far field Velocity vs RPM vs Power. Local flow rate in the turbine does not make sense to normalise against.
pete20r2 is offline   Reply With Quote

Old   December 16, 2018, 17:44
Default
  #6
Member
 
Ilan
Join Date: Dec 2018
Posts: 52
Rep Power: 7
Magistrane is on a distinguished road
Thanks again for your answers.

First, I will make a k-w-SST simulation with pimple in a very short time. Then I go into LES, also with pimpleFoam.

After consulting my PhD professor, we decide to choose sixDoFRigidBodyMotion (or rigidBodyDynamics if we decide, after all to implement more mooving solids).

I have some question concerning this now.

1) Do you know someone who has a working tutorial of sixDoFRigidBodyMotion. As long as wingMotion is diverging, I have 0 example.

2) Do you know a efficient code to get Moment of Inertia and center of mass of an STL file ?

3) I see that the error in the tutorial is goming from de mesh which is deformed. Is it possible to merge the FSI solver with an AMI ? Like define a cylinder which has a rotation speed induced by the fluid forces on blades.

4) How can I play with time step/iteration on the solidsolver ? Is it also in the control dict (a good documentation will suffice)?

Thank you again, and have a good day!
Magistrane is offline   Reply With Quote

Old   December 17, 2018, 08:10
Default
  #7
Senior Member
 
Join Date: Sep 2013
Posts: 353
Rep Power: 20
Bloerb will become famous soon enough
1) Which OF Version are you using? There was a bug in v6 that got fixed after release.
2)
Code:
surfaceInertia -help
surfaceInertia file.stl
3) Yes that is possible, but you need to use overSet instead of AMI.
4) The time integrator of the solid uses the fluid time step. You can use nOuterCorrectors though to solve it more than once per time step
Bloerb is offline   Reply With Quote

Old   December 18, 2018, 04:08
Default
  #8
Member
 
Ilan
Join Date: Dec 2018
Posts: 52
Rep Power: 7
Magistrane is on a distinguished road
Thank you very much for your help : I finally manage to rotate my cylinder using the forces on my 3D blades. It is mooving !!

If people want to do the same kind of trial they should use minger case following this link:
Rigid Body Mesh Motion + 6DoF

I ran my simulation on openfoam 2.3.0, but the case is applicable on 6.6 with minor changes. New solver to use is sixDoFRigidBodyMotion as Bloerb told me.

Now that technical problems are "solved" thanks to you, I can do a bit of physics !

I think that I will have some complementary questions on the way to check the convergence in OpenFoam, but I guess I have to edit a new post for that, right ?

Thank you again, and Happy Foam !
Magistrane is offline   Reply With Quote

Old   January 3, 2019, 04:48
Default
  #9
Member
 
Ilan
Join Date: Dec 2018
Posts: 52
Rep Power: 7
Magistrane is on a distinguished road
Hello,

I already repost on this subject but I don't have any reply on the other post. So I take my chance here :

I succefully compute the rotation of the 3D turbine using the flow forces. But I struggle with my AMI : there is a pressure gap between my domains. Do you have any idea how to solve this ?

Here is my simulation results ( 2D cut) :

https://youtu.be/4s-L3FxMsBs

Thanks !
Magistrane is offline   Reply With Quote

Old   November 4, 2019, 01:59
Default
  #10
Senior Member
 
Huynh Phong Thanh
Join Date: Aug 2013
Location: Ho Chi Minh City
Posts: 105
Rep Power: 12
hiuluom is on a distinguished road
Quote:
Originally Posted by Magistrane View Post
Hello,

I already repost on this subject but I don't have any reply on the other post. So I take my chance here :

I succefully compute the rotation of the 3D turbine using the flow forces. But I struggle with my AMI : there is a pressure gap between my domains. Do you have any idea how to solve this ?

Here is my simulation results ( 2D cut) :

https://youtu.be/4s-L3FxMsBs

Thanks !
Hi Magistrane,
Could you share case on public? I want to test 6dof for turbine like your case.
hiuluom is offline   Reply With Quote

Reply

Tags
3d motion, flow induced, motion dynamicmesh, openfaom-6


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Verification of Turbulent Pipe Flow in OpenFOAM - kwSST ajcav2 OpenFOAM Running, Solving & CFD 6 April 28, 2017 15:51
OpenFOAM v3.0+ ?? SBusch OpenFOAM 22 December 26, 2016 14:24
OpenFOAM Training, London, Chicago, Munich, Sep-Oct 2015 cfd.direct OpenFOAM Announcements from Other Sources 2 August 31, 2015 13:36
OpenFOAM : flow around a sphere at low Reynold number maxou1993 OpenFOAM Running, Solving & CFD 1 July 7, 2015 05:13
Volume flow rate boundary condition in OpenFOAM mayank.dce2k7 OpenFOAM Running, Solving & CFD 13 August 11, 2014 20:16


All times are GMT -4. The time now is 08:27.