HyperWorks Solvers

Friction

Friction

Previous topic Next topic No expanding text in this topic  

Friction

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

Model Element

Class Name

Friction

Description

The Friction element is used to specify joint friction in a specific joint in your model.  Friction is supported only in the following types of joints: revolute, spherical, translational, cylindrical and universal. MotionSolve uses the LuGre (Lundt-Grenoble) model for friction. The LuGre model is capable of representing several different effects:

Dynamic friction
Static friction (stiction)
The effect of the mating surfaces being pushed apart by lubricant
The Stribeck effect (at very low speed). When partial fluid lubrication exists, contact between the surfaces decreases and thus friction decreases exponentially from stiction
Rate dependent friction phenomena, such as varying break-away force and frictional lag
The model is explained in great detail in the MotionSolve Reference Manual.

Attribute Summary

Inputs   = "PRELOAD NONE ALL  REACTION_FORCE BENDING_MOMENT TORSIONAL_MOMENT"

Effect   = "ALL STICTION SLIDING"

Overlaps = "INCREASE DECREASE CONSTANT"

Name

Property

Modifiable by command?

id    

Int ()

 

label

Str ()

joint                      

Reference (Joint)

 

mu_static                  

Double  (0.3)

mu_dynamic                

Double  (0.2)

inactive                  

Enum ("NONE STATIC", default="NONE")

 

stiction_transition_velocity

Double  (0.1)

max_stiction_deformation  

Double  (0.01)

effect                    

Enum    (Effect, default=”ALL”)

input_forces              

EnumStr (Inputs, count=0, default=”ALL”)

# Translational

 

 

friction_force_preload    

Double  (0.0)

reaction_arm              

Double  (1.0)

initial_overlap            

Double  (1000.0)

overlap_delta              

Enum (Overlaps, default="CONSTANT")

# Revolute

 

 

friction_torque_preload    

Double  (0.0)

friction_arm              

Double  (1.0)

pin_radius                

Double  (1.0)

bending_reaction_arm      

Double  (1.0)

# Universal

 

 

yoke                      

Enum    ("I J")

 

 

 

# Spherical

 

 

ball_radius                

Double  (1.0)

# effects:

 

 

bristle_stiffness          

Double  (100.0)

damping_effects            

Double  (0.316)

viscous_effects            

Double  (0.0004)

Usage

Friction ( joint=objJoint, optional_arguments)

Attribute Description

Attributes Common For All Joints

id

Integer

Specifies the element identification number for the friction object. This number must be unique among all the Friction objects in the model.

This attribute is optional. MotionSolve will automatically create an ID when one is not specified.

Range of values: id > 0

label

String

Specifies the name of the Friction object.

This attribute is optional. When not specified, MotionSolve will create a label for you.

joint

Reference to an existing Joint in the model

This specifies the joint on which the friction is to act on.

The joint attribute is mandatory

mu_static

Double

Specifies the static friction coefficient in the joint. mu_static is a property of the two mating surfaces. It is dependent on factors such as surface finish, surface texture and lubrication.

The attribute mu_static is optional. When not specified, mu_static =0.3.

When specified:

mu_static > 0
mu_static ≥ mu_dynamic

mu_dynamic

Double

Specifies the dynamic friction coefficient in the joint. This is the friction coefficient when the two mating surfaces are sliding with respect to each other.

The attribute mu_dynamic is optional. When not specified, mu_dynamic =0.2.

When specified:

mu_dynamic > 0
mu_dynamic ≤ mu_static

max_stiction_deformation

Double

Specifies the maximum deformation that can occur in a joint for static friction.

If specified to be non-zero, a finite static friction force is applied even if the relative velocity is zero.

This attribute is optional. When not specified, max_stiction_deformation=0.01 length units.

When specified, max_stiction_deformation > 0

stiction_transition_velocity

Double

The absolute velocity below, which the friction transitions from dynamic friction to static friction.

This attribute is optional. When not specified, stiction_transition_velocity = 0.1 length_units/time.

When specified, stiction_transition_velocity > 0

effect

String

Specifies the frictional effects to be considered for this joint.  Select one from:

“ALL”: Consider both static and dynamic friction
“STICTION”: Model static friction only. Ignore dynamic friction.
“SLIDING”: Model dynamic friction only. Ignore static friction.

The attribute effect is optional. When not specified, it defaults to “ALL”.

inputs

List of strings

Specifies the input forces/torques to consider for modeling the friction. Select one from:

“ALL”

Consider all the input forces and torques that can affect the friction force

“PRELOAD”

Consider the joint preload when computing the friction force

“REACTION_FORCE”

Consider the joint reaction forces when computing the friction force

“BENDING_MOMENT”

Consider the bending moments in the joint when computing the friction force

“TORSIONAL_MOMENT”

Consider the torsional moments in the joint when computing the friction force

“NONE”

Do not consider any inputs. The friction force will be zero. Used primarily when debugging the model.

 

The options available per joint type are defined below:

Revolute

Preload, Reaction_Force, Bending_Moment

Universal

Preload, Reaction_Force, Bending_Moment

Hooke

Preload, Reaction_Force, Bending_Moment

Spherical

Preload, Reaction_Force

Cylindrical

Preload, Reaction_Force, Bending_Moment

Translational

Preload, Reaction_Force, Bending_Moment, Torsional_Moment

 

The attribute inputs is optional. When not specified, inputs = ”ALL”.

inactive

String

Specify “STATIC” to disable joint friction during static analysis.

The attribute inactive is optional. When not specified, inactive = ”NONE”.

bristle_stiffness        

Double

Specifies the bristle stiffness in the LuGre model. See the MotionSolve Reference Manual for more detailed information about this attribute.

The attribute bristle_stiffness is optional. When not specified, bristle_stiffness = 100 Force Units / Length unit

damping_effects          

Double

Defines the damping coefficient for the pre-displacement (or stiction) regime.  Its main role is to damp out bristle vibrations in the pre-displacement regime.

The attribute damping_effects is optional. When not specified, damping_effects = 0.316 Force Units / Velocity unit

viscous_effects          

Double

Specifies the coefficient for the viscous damping force that occurs when relative sliding actually begins.

The attribute viscous_effects is optional. When not specified, viscous_effects = 0.0004 Force Units / Velocity unit

Attributes specific to a Revolute Joint

friction_torque_preload

Double

Specifies the preload friction torque in the joint.

The attribute friction_torque_preload is optional. When not specified, friction_torque_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

friction_arm

Double

Specifies the moment arm used to compute axial friction torque in the joint.

The attribute friction_arm is optional. When not specified, friction_arm = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

pin_radius

Double

Specifies the radius of the pin.

The attribute pin_radius is optional. When not specified, pin_radius = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

bending_reaction_arm

Double

Specifies the moment arm to compute the bending moment.

The attribute bending_reaction_arm is optional. When not specified, bending_reaction_arm = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

Attributes specific to a Spherical Joint

friction_torque_preload

Double

Specifies the preload friction torque in the joint.

The attribute friction_torque_preload is optional. When not specified, friction_torque_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

ball_radius

Double

Specifies the radius of the ball in the Spherical joint.

The attribute ball_radius is optional. When not specified, ball_radius = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

 

Attributes specific to a Translational Joint

friction_force_preload

Double

Specifies the preload friction force in the joint.

The attribute friction_force_preload is optional. When not specified, friction_force_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

reaction_arm

Double

Specifies the moment arm to compute the reaction torque about the joint axial direction.

The attribute reaction_arm is optional. When not specified, reaction_arm = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

initial_overlap

Double

Specifies the initial overlap of the sliding parts in the joint.

The attribute initial_overlap is optional. When not specified, initial_overlap = 1000 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

overlap_delta

String

Specifies friction characteristics in the sliding joint. Select one from:

“INCREASE”: Overlap increases as the I Marker translates in the positive direction of the z-axis of the J Marker.
“DECREASE”: Overlap decreases in the positive direction of the J marker.
“CONSTANT”: Overlap is independent of the relative displacement between the I and J markers of the joint

The attribute overlap_delta is optional. When not specified, overlap_delta = “CONSTANT”

See the MotionSolve Reference Manual for more detailed information about this attribute.

Attributes specific to a Cylindrical Joint

friction_force_preload

Double

Specifies the preload friction force in the joint.

The attribute friction_force_preload is optional. When not specified, friction_force_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

friction_torque_preload

Double

Specifies the preload friction torque in the joint.

The attribute friction_torque_preload is optional. When not specified, friction_torque_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

pin_radius

Double

Specifies the radius of the pin.

The attribute pin_radius is optional. When not specified, pin_radius = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

initial_overlap

Double

Specifies the initial overlap of the sliding parts in the joint.

The attribute initial_overlap is optional. When not specified, initial_overlap = 1000 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

overlap_delta

String

Specifies friction characteristics in the sliding joint. Select one from:

“INCREASE”: Overlap increases as the I Marker translates in the positive direction of the z-axis of the J Marker.
“DECREASE”: Overlap decreases in the positive direction of the J marker.
“CONSTANT”: Overlap is independent of the relative displacement between the I and J markers of the joint

The attribute overlap_delta is optional. When not specified, overlap_delta = “CONSTANT”

See the MotionSolve Reference Manual for more detailed information about this attribute.

Attributes specific to a Universal/Hooke Joint

friction_torque_preload

Double

Specifies the preload friction torque in the joint.

The attribute friction_torque_preload is optional. When not specified, friction_torque_preload = 0

See the MotionSolve Reference Manual for more detailed information about this attribute.

friction_arm

Double

Specifies the moment arm used to compute axial friction torque in the joint.

The attribute friction_arm is optional. When not specified, friction_arm = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

bending_reaction_arm

Double

Specifies the moment arm to compute the bending moment.

The attribute bending_reaction_arm is optional. When not specified, bending_reaction_arm = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

pin_radius

Double

Specifies the radius of the pin.

The attribute pin_radius is optional. When not specified, pin_radius = 1.0 length units

See the MotionSolve Reference Manual for more detailed information about this attribute.

yoke

String

Specifies the yoke choice for Hooke and Universal joints on which the frictional force is to be applied. Select one from:

“I”: Apply the friction force/torque about the Z axis of the I-marker
“I”: Apply the friction force/torque about the Z axis of the J-marker

Comments

1.See Properties, for an explanation about what properties are, why they are used and how you can extend these.
2.For a more detailed explanation about Friction, see the Comments in the XML syntax section.

Examples

1.Create a friction element on a revolute joint, revjt, with default properties.

jfric = Friction (joint=revjt)

2.Create a simple pendulum, add friction, perform a simulation and show the friction torques.

Model

from msolve import *

 

def PendulumWithFriction():

 

 m = Model ()

 Units      (mass="KILOGRAM", length="MILLIMETER", time="SECOND", force="NEWTON")

 Accgrav    (jgrav=-9800)

 Integrator (error=1e-5)

 Output     (reqsave=True)

 

 length = Dv (label="Link Length", b=600)

 

 pivot  = Point (0,0,0)

 pz     = pivot + Vector (0,0,1) # along global Z

 px     = pivot + Vector (1,0,0) # along global X

 midpt  = Point (length/2,0,0)

 mz     = midpt + Vector (1,0,0) # along global X

 mx     = midpt + Vector (0,1,0) # along global Y

 

 ground = Part (ground=True)

 

# Pendulum Link

 pend = Part (mass=1.4702, ip=[44144.717,44144.717,73.5132,0,0,0])

 pend.cm = Marker (part=pend, qp=midpt, zp=mz, xp=mx)

# Joint w/ rotation axis = global Z axis

 jim = Marker (part=pend,   qp=pivot, zp=pz, xp=px)

 jjm = Marker (part=ground, qp=pivot, zp=pz, xp=px)

 rev = Joint (type="REVOLUTE", i=jim, j=jjm)

# Joint friction

 jfric = Friction (joint=rev, mu_static=0.6, mu_dynamic=0.2, effect="ALL",

         friction_torque_preload=20)

 

 # Requests

 m.r1 = Request (type="DISPLACEMENT", i=pend.cm, j=jjm, comment="Pend CM Displacement")

 m.r2 = Request (type="VELOCITY",     i=pend.cm, j=jjm, comment="Pend CM Velocity")

 m.r3 = Request (type="ACCELERATION", i=pend.cm, j=jjm, comment="Pend CM Acceleration")

 m.r4 = Request (type="FORCE",        i=jim,     j=jjm, comment="Reaction forces in Joint")

return m

###############################################################################

## Entry Point ################################################################

###############################################################################

if __name__ == "__main__":

 model = PendulumWithFriction()

 model.simulate (type="DYNAMICS", end=4, dtout=.01)

Results

friction_api_img1