Mixed prescribed and free rigid body components

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • alessandro.navacchia
    Junior Member
    • Jul 2017
    • 7

    Mixed prescribed and free rigid body components

    Hi all,

    I am a new FEBio user.

    I have a rigid body in my model and I would like to prescribe its rotation about x, but leave free the other two rotations (about y and z). I want the other two rotations to be based on the contact with another body (the rigid bodies are not in contact with each other, but two deformable bodies between the rigid bodies are).

    This is what I am trying to do:

    <rigid_body mat="1">
    <prescribed bc="Rx" lc="2">0.0</prescribed>
    <prescribed bc="Rz" lc="2">0.0</prescribed>
    <prescribed bc="x" lc="2">0.0</prescribed>
    <prescribed bc="y" lc="2">0.0</prescribed>
    <prescribed bc="z" lc="2">-1.0</prescribed>
    <force bc="Ry" lc="2">0.0</force>
    </rigid_body>

    But I get the following error message:
    FATAL ERROR: Rigid body rotations cannot mix prescribed and free components.

    Is there a way to do this?

    Thanks for your help

    Alessandro
  • ateshian
    Developer
    • Dec 2007
    • 1821

    #2
    Hi Alessandro,

    FEBio uses quaternions to describe rigid body rotations. Effectively, this is equivalent to specifying a rotation axis (using a unit vector) and a rotation angle about that axis. To prescribe a rotation about the x-axis, the unit vector must be along x. This will automatically constrain rotations in other directions. That's why FEBio issues this error.

    To reproduce the motion that you mention, you will need to use rigid joints. For example, you combine two revolute joints to produce a universal joint (two rotation degrees of freedom, which you can leave unconstrained), then you can use a third revolute joint aligned with the x-axis to which you prescribe a desired rotation angle. A universal joint requires the specification of three rigid bodies, a driving yoke, a spider and a driven yoke (http://www.motorera.com/dictionary/pics/u/ujoint.gif), with one revolute joint connecting the driving yoke and spider and the other connecting the spider and the driven yoke. Then you can connect the driving yoke to the ground via the the third revolute joint with a prescribed rotation. The driven yoke should be the rigid body to which you want to prescribe the x-rotation.

    Best,

    Gerard

    Comment

    • alessandro.navacchia
      Junior Member
      • Jul 2017
      • 7

      #3
      Hi Gerard,

      thanks for replying. I think what you are saying is clear. So, if I want to create a universal joint between two rigid bodies, I should create a "dummy" rigid body (with just a single element for example) in between the two original rigid bodies, right? Something like:

      RB1 - revolute joint - dummy RB - revolute joint - RB2

      Also, can Rigid Joints be defined in the Constraints section of a Step? So that I can control kinematically one joint in the first step and then apply a load using the same joint in the second step?

      Thanks

      Alessandro

      Comment

      • ateshian
        Developer
        • Dec 2007
        • 1821

        #4
        Hi Alessandro,

        RB1 - revolute joint - dummy RB - revolute joint - RB2
        Yes. You don't need to define any finite element domain for the dummy RB. You just need to create a rigid body material and place its center of mass at the appropriate location (at the center of the universal joint).

        Also, can Rigid Joints be defined in the Constraints section of a Step? So that I can control kinematically one joint in the first step and then apply a load using the same joint in the second step?
        Yes, rigid joints can belong to individual steps.

        Best,

        Gerard

        Comment

        • alessandro.navacchia
          Junior Member
          • Jul 2017
          • 7

          #5
          Hi Gerard,

          I made the joint at the knee using the two dummy rigid bodies. I am able to run simulations in which I drive kinematically 1 dof at a time (e.g. drive flexion and fix every other dof), and also some combinations (e.g. flexion and AP translation). However, for some combinations (e.g. VV and flexion) the simulation struggles to converge (keeps reforming stiffness matrix) and the joint stops working correctly (when eventually it converges, the femur is in an absurd spot).

          Could I send my model to you so that you can take a look? I would really appreciate it.

          Thanks,

          Alessandro

          Comment

          • ateshian
            Developer
            • Dec 2007
            • 1821

            #6
            Hi Alessandro,

            Yes, I'll take a look and see if I can resolve the issue.

            Best,

            Gerard

            Comment

            • ateshian
              Developer
              • Dec 2007
              • 1821

              #7
              Hi Alessandro,

              As per my email message to you, I was able to resolve this issue by setting the stiffness matrix to non-symmetric (<symmetric_stiffness>0</symmetric_stiffness> in the Control section). Rigid joints produce non-symmetric stiffness matrices, so the convergence of the model becomes haphazard when using the default symmetric stiffness setting.

              Best,

              Gerard

              Comment

              • julianatk
                Junior Member
                • Jul 2017
                • 11

                #8
                Hi there

                I am having a very similar problem. I tried to apply the non-symmetric description but it is still reducing my dt value and creating tiny time steps and then diverging. I am also unclear on what it is struggling with when prescribing motions to the rigid joint?

                Thanks,

                Julian

                Comment

                • alessandro.navacchia
                  Junior Member
                  • Jul 2017
                  • 7

                  #9
                  Hi all,

                  Gerard was able to fix my problem. The main fix was to change reduce the rigid joint penalties from the large numbers found in the documentation (1e12) to 1.0.

                  Hope this helps others.

                  Thanks for your help!

                  Alessandro

                  Comment

                  • ebenos
                    Junior Member
                    • Jul 2018
                    • 12

                    #10
                    Dear Gerard,

                    Is there any paper in the literature where I can read more details concerning the theoretical background you mentioned above (i.e. a driving yoke, a spider and a driven yoke) ?

                    Thank you in advance.

                    Best,
                    Dr. Lefteris Th. Benos
                    Centre for Research & Technology Hellas (CERTH)

                    Comment

                    • ateshian
                      Developer
                      • Dec 2007
                      • 1821

                      #11
                      Dear Dr. Benos,

                      I don't have a specific literature paper to recommend for universal joints (I am sure one can be found, but I haven't had to use a specific paper to learn about them). These types of joints are typically described in textbooks on mechanics of machines, for example "Advanced Mechanism Design" by George N. Sandor and Arthur G. Erdman, Volume 2, Prentice Hall, NJ, USA. A universal joint is used for spatial mechanisms (whereas most mechanisms designed in engineering tend to be planar mechanisms). You can look up the last chapter of this textbook, which concerns such mechanisms.

                      Best,

                      Gerard

                      Comment

                      • ebenos
                        Junior Member
                        • Jul 2018
                        • 12

                        #12
                        Dear Gerard,

                        I really appreciate your prompt replies.
                        Thank you again for your help.

                        Best,
                        Dr. Lefteris Benos

                        Comment

                        • ryadav1
                          Junior Member
                          • Nov 2021
                          • 29

                          #13
                          Hi,

                          I am trying to simulate simple simulation which contain two rigid body and two deformable body. In that I had fixed the bottom rigid body by constraining all degree of freedom.
                          On the another rigid body I had applied a rotation along Z-axis.

                          I got the following error: * Rigid body rotations cannot mix prescribed and free components. *

                          * Rigid body: 1, Material: 3

                          I have attached the project file for reference.

                          Any assistance is greatly appreciated.
                          Attached Files

                          Comment

                          • ateshian
                            Developer
                            • Dec 2007
                            • 1821

                            #14
                            Hi,

                            In general, for 3D problems, a rigid body rotation is represented by a rotation axis and a rotation angle. The rotation axis is represented by a unit vector and the product of the rotation angle with this unit vector has components Rx, Ry, Rz which are the rotations that can be fixed or prescribed in a rigid body. If you only specify one of these components (e.g., Rz), the rotation axis is not defined (since it is unclear if you want to fix Rx=0 and Ry=0 or let them be free). That's why FEBio expects you to specify fixed or prescribed values for all three rotations Rx, Ry and Rz.

                            This is explained in Section 3.11 of the User's Manual.

                            Best,

                            Gerard

                            Comment

                            • ryadav1
                              Junior Member
                              • Nov 2021
                              • 29

                              #15
                              Dear Gerard,

                              Thank you prompt and kind response.

                              According to your suggestion I have define the constrain along other rotation direction. It leads to resolve the error.

                              Thank you.

                              Best Regards,
                              Ram Naresh

                              Comment

                              Working...
                              X
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎