*TwoDContact()

Creates a 2D graphics based contact force between two bodies.

Syntax

*TwoDContact(varname, label, 
                   contact_type, 
                   coulomb_friction, 
                   BODY, 
                   b1, 
                   in, 
                   ig1,
                   ig2,
                   ign, 
                   BODY, 
                   b2, 
                   jn, 
                   jg1,
                   jg2,
                   jgn, )

Arguments

varname
The variable name of the contact force definition.
Data type: varname
label
The descriptive label of the contact force.
Data type: string
contact_type
The type of contact. Valid choices are: IMPACT|POISSON|VOLUME|USER .
Data type: keyword
coulomb_friction
Indicates the choice of using coloumb_friction . Valid choices: OFF|ON|DYNAMIC_ONLY|USER .
Data type: keyword
BODY
A keyword to indicate the body to be used for contact definition. Currently, this is the only keyword that is supported.
Data type: keyword
b1
The first body in the contact force definition.
Data type: Body
in
The number of graphic entities related to the first body in the contact force definition.
Data type: integer
ig1, ig2, … ign
The varname of graphic entities on the first body to be used for the contact force. The number of entities in this series should match in .
Data type: Graphics
b2
The second body in the contact force definition.
Data type: Body
jn
The number of graphic entities related to the second body in the contact force definition.
Data type: integer
jg1, jg2, … jgn
The varname of graphic entities on the second body to be used for the contact force. =The number of entities in this series should match jn .
Data type: Graphics

Example

*SetReal( DS_Gravity.kgrav, 0 )
 *SetReal( DS_Gravity.jgrav, -9810.0 )
 *Point( p_sph, "Point Sphere" )
 *Body( b_sph, "Sphere", P_Global_Origin, , , , )
 *SetBodyInertia( b_sph, 1, 100, 100, 100 )
 *Set( b_sph.usecm, true )
 *Curve( crv_circ, "Curve Circle", 3D, CARTESIAN, WRITE, CURVE_POINTS, CLOSED )
 *SetCurve( crv_circ, MATH, 10*sin(2*PI*(0:1:0.1)), 
 MATH, 10*cos(2*PI*(0:1:0.1)), 
 MATH, 0*(0:1:0.1) )
 *Curve( crv_edge, "Curve Edge", 3D, CARTESIAN, WRITE, CURVE_POINTS, CLOSED )
 *SetCurve( crv_edge, VALUE, 4, -100, 100, 100, -100, 
 VALUE, 4, -20, -20, -25, -25, 
 VALUE, 4, 0, 0, 0, 0 )
 *Marker( m_sph, "Marker Sphere", b_sph, p_sph )
 *Marker( m_box, "Marker Box", B_Ground, P_Global_Origin )
 *Graphic( gcrv_circ, "CurveGraphic_Sphere", CURVE, MARKER, m_sph, crv_circ )
 *Set( gcrv_circ.is_material_inside, false )
 *Graphic( gcrv_edge, "CurveGraphic_Box", CURVE, MARKER, m_box, crv_edge )
 *Set( gcrv_edge.is_material_inside, false )
 
*TwoDContact( con_sph_box_2D, "Sphere to box 2D contact", IMPACT, 
 OFF, 
 BODY, b_sph, 1, 
 gcrv_circ, 
 BODY, B_Ground, 1, 
 gcrv_edge )
 *SetContact( con_sph_box_2D, 1000.0, 2.1, 0.1, 0.1, 0.2, 0.1, 1.0, 1.5, false )

Context

*BeginMdl()

*DefineAnalysis()

*DefineSystem()

*DefineAssembly()

Properties

The following table lists all of the properties associated with the Contact entity in MotionView:

Table 1.
Property Returns Data Type Description
contact_type keyword Valid values are: IMPACT|POISSON|VOLUME|USER
coulomb_friction keyword ON|OFF|DYNAMICS_ONLY
exponent real Applicable for ^contact_type^ IMPACT. Specifies the value of the exponent for stiffness.
damping Body Applicable for ^contact_type^ IMPACT. Specifies the value of the damping coefficient.
dmax real Applicable for ^contact_type^ IMPACT. Specifies the value of the maximum penetration depth before full damping is applied.
friction_trans_vel real The value where the coefficient of friction becomes ^mu_dynamic^. When the slip velocity is between ^stiction_trans_vel^ and ^friction_trans_vel^, the coefficient of friction is in transition between the two.
id integer The numeric ID assigned to the entity.
id_string string The assigned ID in a string format.
ig1, ...ign Graphic The graphic entities belonging to the first body.
jg1, ...jgn Graphic The graphic entities belonging to the second body.
label string The descriptive label.
mu_static real The coefficient of friction when the slip velocity is less than ^stiction_trans_vel^.
mu_dynamic real The coefficient of friction when the slip velocity is greater than ^friction_trans_vel^.
num integer The last digit of the ID.
penalty Point Determines the local stiffness properties between materials. Larger values lead to reduced penetration between two bodies. Used with the Poisson method of normal force calculation.
rest_coeff Point The value representing the energy loss between the two bodies in contact. A value of one represents no energy loss and a perfectly elastic contact. Used with the Poisson method of normal force calculation.
state boolean Returns true or false. True if the entity is active, otherwise false.
stiction_trans_vel real The value where the coefficient of friction becomes ^mu_dynamic^. When the slip velocity is between ^stiction_trans_vel^ and ^friction_trans_vel^, the coefficient of friction is in transition between the two.
stiffness real Applicable for contact_type IMPACT. Specifies the value of the stiffness associated with the contact force.
type string Returns "Contact".
use_aug_formulation boolean Used for the ADAMS solvermode only, to use the augmented Lagrangian formulation.
varname varname The variable name of the contact definition.

Comments

This statement can be used to define a 2D graphical based contact force between two sets of graphics that belong to different bodies.

At least one graphic should be listed for each body in this definition for arguments ign and jgn.

contact_type determines the method used to calculate the normal force. Available methods are IMPACT, POISSON, VOLUME, and USER. VOLUME and USER are available only available for the MotionSolve solver mode. Based on the chosen method, relevant properties in *SetContact should be provided.

All ign graphics must reference the same body, and all jgn graphics must reference the same body. However the body for the ign graphics must be different than the body for the jgn graphics.

All curve graphics should be oriented in one plane.