[MBDyn-users] Example to Total Pin Joint

Rudi Jaeger rudijaeger at yahoo.com
Fri Mar 14 17:59:50 CET 2008


Dear Dr. Masarati,

I think it does now, what I want it to do:


# *************************************************
# ***          Substitution Variables           ***
# *************************************************

set: integer nod1=1;                        # node
set: integer bod1=1;                        # body
set: integer jnt1=1;                        # joint
set: integer jnt2=2;                        # joint
set: integer ref1=1;                        # refsys


# *************************************************
# ***               Integrator                  ***
# *************************************************

begin: data;
    integrator: multistep;                    # integrator type
end: data;


# *************************************************
# ***          Numerical Configuration          ***
# *************************************************

begin: multistep;
    initial time: 0.0;
    final time: 2.0;
    time step: 1.e-3;
    max iterations: 10;
    tolerance: 1.e-6;
    derivatives tolerance: 1.0;
    derivatives coefficient: 1.0;
end: multistep;


# *************************************************
# ***             Reference Systems             ***
# *************************************************

reference:
    ref1,                                # refsys label
    reference, global, 1.0, 1.0, 0.0,            # location vector
    reference, global, eye,                    # orientation matrix
    reference, global, null,                    # translational velocity vector
    reference, global, 0.,0.,0.;                # angular velocity vector


# *************************************************
# ***              Control Data                 ***
# *************************************************

begin: control data;
    structural nodes: 1;                    # number of structural nodes
    rigid bodies: 1;                        # number of rigid bodies
    joints: 2;                            # number of joints
    gravity;                                # use gravity
end: control data;




# *************************************************
# ***            Node Definitions               ***
# *************************************************

begin: nodes;


# *************************************************
# ***            Structural Nodes               ***
# *************************************************

structural: 
    nod1,                                # node label
    dynamic,                                # type
    reference, ref1, null,                    # position
    reference, ref1, eye,                    # orientation matrix
    reference, ref1, null,                    # initial translational velocities
    reference, ref1, null;                    # initial rotational velocities


# *************************************************
# ***           End Node Definitions            ***
# *************************************************

end: nodes;




# *************************************************
# ***          Element Definitions              ***
# *************************************************

begin: elements;


# *************************************************
# ***                 Bodies                    ***
# *************************************************

body: 
    bod1,                                # body label
    nod1,                                # binding node
    1.0,                                    # mass
    reference, ref1, null,                    # relative center of mass
    diag,
    0.1,0.1,0.1;                            # inertia matrix


# *************************************************
# ***                 Joints                    ***
# *************************************************

joint:
    jnt1,                                # joint label
    spherical pin,                            # joint type
    nod1,                                # node 1
    reference, global, null,                    # relative offset 1
    reference, global, null;                    # absolute pin position

joint:
    jnt2,                                # joint label
    total pin joint,                        # joint type
    nod1,                                # node 1
    position constraint,
    inactive,active,inactive,
    0.0,1.0,0.0,
    1.0;
    

# *************************************************
# ***                 Gravity                   ***
# *************************************************

gravity:
    0., 0., -1.,                            # direction
    const,                                # type
    9.81;                                # magnitude


# *************************************************
# ***         End Element Definitions           ***
# *************************************************
   
end: elements;


# *************************************************
# ***        End-of-File                        ***
# *************************************************

As suggested I added inertia to the body and used a spherical pin
as "basis joint". The initial position of the mass has also changed.

If all constrains are inactive, the mass moves along the diagonal
in the xy-plane. If the total pin setting is as above:

joint:
     jnt2,                                # joint label
     total pin joint,                        # joint type
     nod1,                                # node 1
     position constraint,
     inactive,active,inactive,
     0.0,1.0,0.0,
     1.0;

the mass will only move along the x-axis with its y-value always 1.0.
It seems to be important that the initial position of the mass and
the setting of the tpl-drive coincide, i.e. this will not work:

joint:
      jnt2,                                # joint label
      total pin joint,                        # joint type
      nod1,                                # node 1
      position constraint,
      inactive,active,inactive,
      0.0,1.0,0.0,
      0.5;

If the movement should be along the y-axis (with x being constraint),
the setting would be:
 
joint:
      jnt2,                                # joint label
      total pin joint,                        # joint type
      nod1,                                # node 1
      position constraint,
      active,inactive,inactive,
      1.0,0.0,0.0,
      1.0;

The results look good. Am I still doing something wrong?

Cheers,
Rudi


I think the singularity problem is related to the fact that your node
has some angular rotation degree of freedom (the revolute pin allows
rotation about one axis) but null inertia, and thus the resulting
problem is singular.  You're not having any issue with the total pin
joint, since you made all degrees of constraint inactive.  To achieve
what you want all you need is:

- fix the moment of inertia of body "bod1" (or constrain its rotation)

- use the total pin joint to add all degrees of constraint you desire.

I'm not sure I understood what you wish to constraint; you want a point
mass, located in {1,0,0}, to be allowed to rotate about an axis that
passes through 0 oriented in the {1,1,0} direction, and you want that
point to be allowed to move along that same axis {1,1,0}?  In that case,
all you need is a properly crafted total pin joint.  Please confirm or
correct my interpretation of your intentions, and I can provide you an
example.

       
---------------------------------
Looking for last minute shopping deals?  Find them fast with Yahoo! Search.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mbdyn.org/pipermail/mbdyn-users/attachments/20080314/9a93e5b1/attachment.htm>


More information about the Mbdyn-users mailing list