*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.
- label
- The descriptive label of the contact force.
- contact_type
- The type of contact. Valid choices are: IMPACT|POISSON|VOLUME|USER .
- coulomb_friction
- Indicates the choice of using coloumb_friction . Valid choices: OFF|ON|DYNAMIC_ONLY|USER .
- BODY
- A keyword to indicate the body to be used for contact definition. Currently, this is the only keyword that is supported.
- b1
- The first body in the contact force definition.
- in
- The number of graphic entities related to the first body in the contact force definition.
- 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 .
- b2
- The second body in the contact force definition.
- jn
- The number of graphic entities related to the second body in the contact force definition.
- 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 .
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
Properties
The following table lists all of the properties associated with the Contact entity in MotionView:
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.