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

sixDoFRigidBody with more than one body

Register Blogs Community New Posts Updated Threads Search

Like Tree2Likes
  • 1 Post By wyldckat
  • 1 Post By fernexda

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   November 5, 2014, 16:05
Default sixDoFRigidBody with more than one body
  #1
Member
 
daniel fernex
Join Date: Oct 2014
Location: Braunschweig, Germany
Posts: 36
Rep Power: 11
fernexda is on a distinguished road
Dear all,
this is my first post, so forgive me if I'm not clear
I've been working on a problem which requires to use the sixDoFRigidBodyMotion solver, but with more than one rigid solid, and I'm having troubles using it.
My problem is shown on the attached picture. To describe it shortly :
  • There is a constant flow coming from the inlet
  • Due to the flow action, the paddle rotates around the center axis. Therefore are the 3 circles rotating around this axis (rotation 1 : omega1 on the figure)
  • The two paddles, while rotating around the center axis, should also rotate around their own axis, which starts from the paddle center, and perpendicular to the figure (rotation 2 with omega2)
  • I'm using AMI interfaces between the moving circles
  • The important thing is that the two velocities have a relation, namely omega2 = -omega1
Basically, it's like the simulation on this video, except the paddles have also a rotation around their own axis.


So I'm facing two problems I can't (yet) solve :

  1. Is it possible to have multiple rigid solid motion ? I've been able to use the solver for only 1 solid, but couldn't get it running with 2 solids. How should I define them in the dynamicMeshDict ?
  2. How could I create the relation between omega1 and omega2 ? So that when the paddles moves because of the fluid, they have a rotation omega1 around the center axis, and a rotation -omega1/2 around their own axis ?
I have been able to do this with the multiSolidBodyMotionFvMesh, but with an imposed angular velocity. The video can be found here (on this video, one can notice that when the paddle rotates of 360° around the main center axis, it rotates only of 180° around its own axis).



So the question is : is it achievable with OpenFoam ? Could it work changing somehow the source code ? I'm actually not sure this is possible with this solver but if anyone has an idea it would be very helpful !


I'm using OF-2.3.0.


Best regards,
Daniel
fernexda is offline   Reply With Quote

Old   November 6, 2014, 04:21
Default
  #2
New Member
 
Adrien Cahuzac
Join Date: Oct 2014
Posts: 6
Rep Power: 11
acahuzac is on a distinguished road
I have a similar problem. I am trying to simulate a couple of savonius turbines in 2D. I cannot impose the angular velocity since I need it as an output function of inlet velocity, inertia, friction coef, and interaction with the other turbine.

With one only, the sixDoF is perfect, but I cannot find how to use two different bodies.
acahuzac is offline   Reply With Quote

Old   November 8, 2014, 10:08
Default
  #3
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Greetings to all!

A similar question was asked a few days ago. I looked into this and shared my findings on that thread: http://www.cfd-online.com/Forums/ope...f-2-3-0-a.html

Conclusion: it's possible to do this with OpenFOAM, but some considerable additional coding is needed.

Best regards,
Bruno
chun likes this.
wyldckat is offline   Reply With Quote

Old   November 8, 2014, 10:19
Default
  #4
Member
 
daniel fernex
Join Date: Oct 2014
Location: Braunschweig, Germany
Posts: 36
Rep Power: 11
fernexda is on a distinguished road
Hi Bruno,
thank you so much, I had missed that thread ! I'll see what I can do and let you know.

Regards,
Daniel
fernexda is offline   Reply With Quote

Old   November 11, 2014, 05:33
Default
  #5
Member
 
daniel fernex
Join Date: Oct 2014
Location: Braunschweig, Germany
Posts: 36
Rep Power: 11
fernexda is on a distinguished road
Dear Bruno, dear all,
I've read the thread you indicated, and it's very helpful. As you said, it requires some additional code. Therefore, before starting it (I'm not a C++ expert...), I would like to determine if my project is achievable. I'm facing 2 problems :
  1. sixDoF with multiple bodies : achievable but takes time.
  2. I would like to know if it seems possible to combine a "sixDoFRigidBodyMotionSolver" solver with a "multiSolidBodyMotionFvMesh" solver. I have a body rotating around an axis (solved with the "sixDoF solver) "multiSolidBodyMotionFvMesh" with an angular velocity omega1 (resulting from the fluid velocity), and I want this body to simultaneously rotate around its own axis (which is the axis going through the body center, orthogonal to the surface (the problem is 2D)) with an angular velocity omega2. The thing is that omega1 and omega2 are linked which means omega2 = f(omega1)
So what I've in mind would be something like
  1. First use the "sixDoFRigidBodyMotionSolver" solver to get omega1 (but do not write the fields !)
  2. Use omega1 as an input to solve with the "multiSolidBodyMotionFvMesh" and impose the angular velocity omega2 = f(omega1) in dynamicMeshDict
  3. Solve the resulting fields.
I know it looks strange, but I just would like to know if it sounds achievable. I don't need all the answers (although I would appreciate it ), but to see if it's worth spending hours investigating. And if someone has a better method to get the same result (because this one requires to solve the fields twice) it would also be appreciated !


Regards,

Daniel
fernexda is offline   Reply With Quote

Old   April 6, 2015, 15:40
Default
  #6
Retired Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,975
Blog Entries: 45
Rep Power: 128
wyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to allwyldckat is a name known to all
Greetings Daniel,

Sorry for the really late reply. I've had your post on my to-do list and only today did I finally manage to come to it.

OK, for forced rotation, you can use this file "multiphase/interDyMFoam/ras/sloshingTank3D6DoF/constant/dynamicMeshDict" from the tutorials folder from OpenFOAM. In other words, it gives you the ability for total control over the positions of one object. And since the multi-body version is a list of multiple single body controls... I think you can figure out the rest

As for this question:
Quote:
Originally Posted by fernexda View Post
So what I've in mind would be something like
  1. First use the "sixDoFRigidBodyMotionSolver" solver to get omega1 (but do not write the fields !)
  2. Use omega1 as an input to solve with the "multiSolidBodyMotionFvMesh" and impose the angular velocity omega2 = f(omega1) in dynamicMeshDict
  3. Solve the resulting fields.
I know it looks strange, but I just would like to know if it sounds achievable.
At first, this sounds more confusing to me than simply implementing a multi-body version of "sixDoFRigidBodyMotionSolver"...although now that I think about it, it feels that said system would require to have the ability to be recursive... in the sense that something could be composed by multiple related bodies to parent bodies, in an hierarchical tree...

Then again, your idea does seem simpler. I took a look at the source code and here's what I could figure out:
  • This method "sixDoFRigidBodyMotionSolver::solve()" handles the calculation of the mesh displacement needed for reacting to the flow.
    • This is in turn called by the method "dynamicMotionSolverFvMesh::update()" (through calling "motionPtr_->newPoints()").
  • This method "multiSolidBodyMotionFvMesh::update()" handles the additional mesh update due to pre-planned forced movement.
Which means that you could have a single class that uses code from both of these classes and which would re-implement these two methods ("dynamicMotionSolverFvMesh::update()" and "multiSolidBodyMotionFvMesh::update()") instead of just one.

I have no idea if the point displacement would then make sense, because you would be enforcing that whenever the paddle group moves, the blades also rotate accordingly, in a hard-coded rotation ratio... well, this is essentially what many do when testing the capabilities of a fan, since they fixate a fan rotation and compare it's torque depending on the inlet flow rate.


I hope this answers your questions, although (quite) a bit late.

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   April 7, 2015, 14:17
Default
  #7
Member
 
daniel fernex
Join Date: Oct 2014
Location: Braunschweig, Germany
Posts: 36
Rep Power: 11
fernexda is on a distinguished road
Hi Bruno,
thank you for your reply !

Unfortunately, I needed this for my master thesis, and I have only 1 month left now... I found a workaround to solve my problem. If I had had your explanations 4 months earlier, I might have found the right solution Maybe I should have posted that it was too late.

But thanks again for the effort !

Regards,
Daniel
wyldckat likes this.
fernexda is offline   Reply With Quote

Old   April 19, 2015, 23:48
Default
  #8
Member
 
Thaw Tar's Avatar
 
Thaw Tar
Join Date: Apr 2013
Location: Yangon, Myanmar
Posts: 35
Rep Power: 13
Thaw Tar is on a distinguished road
Hi Fernex,

which workaround did you find out? Actually, I am trying to do sixDoFRigidbodyMotion on multiple 2D cylinders for my masters. I am trying to write my own solver based on Bruno's instructions but until now clueless.

So, if you found out something useful, please share.

Regards,
Thaw Tar
Thaw Tar is offline   Reply With Quote

Old   April 20, 2015, 03:02
Default
  #9
Member
 
daniel fernex
Join Date: Oct 2014
Location: Braunschweig, Germany
Posts: 36
Rep Power: 11
fernexda is on a distinguished road
Hi Thaw Tar,
I'mafraid my solution won't help you... Instead of using the sixDoFRigidbodyMotion I've used a prescribed motion with the multiSolidBodyMotionFvMesh solver. Since I'm simulating a vertical axis wind turbine, both methods work. The main problem is that, since my angular velocity is imposed, I can't determine at which inlet velocity the wind turbine starts to rotate.

But if you succeed in implementing the sixDoFRigidbodyMotion with multiple solids, please let me know

Regards,
Daniel
fernexda is offline   Reply With Quote

Old   April 22, 2015, 04:09
Default
  #10
Member
 
Thaw Tar's Avatar
 
Thaw Tar
Join Date: Apr 2013
Location: Yangon, Myanmar
Posts: 35
Rep Power: 13
Thaw Tar is on a distinguished road
Hi Fernexda,

I am also working on my Masters' and trying to simulate the vortex induced vibration (VIV) of multiple cylinders. So, I have no choice but to rewrite the solver. But unfortunately, I began to run out of time and I can't even started the coding yet because of my lack of C++ knowledge.

Anyway, if I could do it, I will definitely reply you.

Regards,
Thaw Tar
Thaw Tar is offline   Reply With Quote

Old   April 25, 2020, 00:16
Default
  #11
New Member
 
Paulo
Join Date: Dec 2017
Posts: 9
Rep Power: 8
pvreis is on a distinguished road
Quote:
Originally Posted by Thaw Tar View Post
Hi Fernexda,

I am also working on my Masters' and trying to simulate the vortex induced vibration (VIV) of multiple cylinders. So, I have no choice but to rewrite the solver. But unfortunately, I began to run out of time and I can't even started the coding yet because of my lack of C++ knowledge.

Anyway, if I could do it, I will definitely reply you.

Regards,
Thaw Tar
Hi Thaw Tar, I have exactly the same problem: VIV of multiple cylinders (two cylinders).
I've looked a lot for some information in websites and CFD forums, but I couldn't find anything that worked.

Did you solved your problem? Please, I need some help. That's for the final report of my graduation.

Thanks.

Best Regards,
Paulo.
pvreis is offline   Reply With Quote

Old   April 24, 2022, 01:12
Default
  #12
New Member
 
zink
Join Date: Oct 2015
Posts: 29
Rep Power: 10
ansab_sindhu is on a distinguished road
I am also interested in knowing that How can I set multiple bodies for sixDoFRigidBodyMotion?
I will really appreciate your help.


Quote:
Originally Posted by pvreis View Post
Hi Thaw Tar, I have exactly the same problem: VIV of multiple cylinders (two cylinders).
I've looked a lot for some information in websites and CFD forums, but I couldn't find anything that worked.

Did you solved your problem? Please, I need some help. That's for the final report of my graduation.

Thanks.

Best Regards,
Paulo.
ansab_sindhu is offline   Reply With Quote

Old   April 25, 2022, 11:40
Default
  #13
Senior Member
 
JNSN's Avatar
 
Jan
Join Date: Jul 2009
Location: Hamburg
Posts: 137
Rep Power: 19
JNSN is on a distinguished road
Hi,


the rigidBodyDynamics library can be used for solving multi-body 6DoF problems.


Best,
Jan
JNSN is offline   Reply With Quote

Reply


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
6dof model - floating body flinde FLUENT 13 March 6, 2021 14:32
Beginner questions - modelling lift and drag on a towed body ABF Main CFD Forum 15 October 19, 2014 23:27
6DOF with floating body bounce back. paka FLUENT 4 June 6, 2013 11:32
Accelerated Body Motion Simulation reza1111 Main CFD Forum 2 June 3, 2013 09:00
[Need some advise] Am I doing right?? Simulating a rotational mixer setasena STAR-CCM+ 4 March 10, 2013 10:32


All times are GMT -4. The time now is 19:33.