# sixDoFRigidBody with more than one body

 Register Blogs Members List Search Today's Posts Mark Forums Read

 November 5, 2014, 16:05 sixDoFRigidBody with more than one body #1 Member   daniel fernex Join Date: Oct 2014 Location: Braunschweig, Germany Posts: 36 Rep Power: 10 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 : 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 ? 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

 November 6, 2014, 04:21 #2 New Member   Adrien Cahuzac Join Date: Oct 2014 Posts: 6 Rep Power: 10 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.

 November 8, 2014, 10:08 #3 Retired Super Moderator   Bruno Santos Join Date: Mar 2009 Location: Lisbon, Portugal Posts: 10,969 Blog Entries: 45 Rep Power: 127 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.

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

 November 11, 2014, 05:33 #5 Member   daniel fernex Join Date: Oct 2014 Location: Braunschweig, Germany Posts: 36 Rep Power: 10 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 : sixDoF with multiple bodies : achievable but takes time. 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 First use the "sixDoFRigidBodyMotionSolver" solver to get omega1 (but do not write the fields !) Use omega1 as an input to solve with the "multiSolidBodyMotionFvMesh" and impose the angular velocity omega2 = f(omega1) in dynamicMeshDict 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

April 6, 2015, 15:40
#6
Retired Super Moderator

Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,969
Blog Entries: 45
Rep Power: 127
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 So what I've in mind would be something like First use the "sixDoFRigidBodyMotionSolver" solver to get omega1 (but do not write the fields !) Use omega1 as an input to solve with the "multiSolidBodyMotionFvMesh" and impose the angular velocity omega2 = f(omega1) in dynamicMeshDict 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.

Best regards,
Bruno
__________________

 April 7, 2015, 14:17 #7 Member   daniel fernex Join Date: Oct 2014 Location: Braunschweig, Germany Posts: 36 Rep Power: 10 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.

 April 19, 2015, 23:48 #8 Member     Thaw Tar Join Date: Apr 2013 Location: Yangon, Myanmar Posts: 35 Rep Power: 12 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

 April 20, 2015, 03:02 #9 Member   daniel fernex Join Date: Oct 2014 Location: Braunschweig, Germany Posts: 36 Rep Power: 10 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

 April 22, 2015, 04:09 #10 Member     Thaw Tar Join Date: Apr 2013 Location: Yangon, Myanmar Posts: 35 Rep Power: 12 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

April 25, 2020, 00:16
#11
New Member

Paulo
Join Date: Dec 2017
Posts: 9
Rep Power: 7
Quote:
 Originally Posted by Thaw Tar 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.

April 24, 2022, 01:12
#12
New Member

zink
Join Date: Oct 2015
Posts: 29
Rep Power: 9
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 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.

 April 25, 2022, 11:40 #13 Senior Member     Jan Join Date: Jul 2009 Location: Hamburg Posts: 123 Rep Power: 18 Hi, the rigidBodyDynamics library can be used for solving multi-body 6DoF problems. Best, Jan

 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 OffTrackbacks are Off Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post flinde FLUENT 13 March 6, 2021 14:32 ABF Main CFD Forum 15 October 19, 2014 23:27 paka FLUENT 4 June 6, 2013 11:32 reza1111 Main CFD Forum 2 June 3, 2013 09:00 setasena STAR-CCM+ 4 March 10, 2013 10:32

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