*Contact()
Creates a 3D graphics-based contact force between two bodies and/or deformable entities.
Syntax
*Contact(varname,label, contact_type, coulomb_friction,
[BODY, b1, in, ig1, ig2, ign, |DEFCURVE, ig_defcurve, |DEFSURF, ig_defsurface]
[BODY, b2, jn, jg1, jg2, jgn, |DEFCURVE, jg_defcurve, |DEFSURF, jg_defsurface]
)
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.
- 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.
- DEFCURVE
- A keyword to indicate that deformable curve is to be used for contact definition.
- ig_defcurve
- Varname of the deformable curve graphic as I graphic, when keyword is DEFCURVE.
- DEFSURFACE
- A keyword to indicate that deformable surface is to be used for contact definition.
- ig_defsurface
- Varname of the deformable surface graphic as I graphic, when keyword is DEFSURF.
- 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.
- jg_defcurve
- Varname of the deformable curve graphic as J graphic, when keyword is DEFCURVE.
- jg_defsurface
- Varname of the deformable surface graphic as J graphic, when keyword is DEFSURF.
Example
*Point( p_sph, "Sphere Center" )
*Body( b_sph, "Sphere", p_sph )
*Graphic( gra_sph, "Sphere_Graphics", SPHERE, b_sph, p_sph, 10 )
*Graphic( gra_box, "Box_Graphics", BOX,
B_Ground,
CENTER,
P_Global_Origin,
ZX, VECTOR, V_Global_Z,
VECTOR, V_Global_X, 10, 10, 250.0 )
//rigid to rigid contact
*Contact( con_sph_box, "Sphere to box contact", IMPACT,
OFF,
BODY, b_sph, 1,
gra_sph, false,
BODY, B_Ground, 1,
gra_box, false )
*SetContact( con_sph_box, 1e5, 1.5, 1000, 0.1 )
*PolyBeam( pbm_0, "PolyBeam 0", p_0, p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8, p_9, p_10 )
*DeformableCurve( defcrv_0, "DeformableCurve 0", NATURAL, NATURAL, 11, BODYPT,
pbm_0.body0, p_0, pbm_0.body1, p_1, pbm_0.body2, p_2, pbm_0.body3, p_3, pbm_0.body4,
p_4, pbm_0.body5, p_5, pbm_0.body6, p_6, pbm_0.body7, p_7, pbm_0.body8, p_8,
pbm_0.body9, p_9, pbm_0.body10, p_10 )
*Graphic( gdefc_0, "DeformableCurveGraphic 0", DEFORMABLE_CURVE, 100, defcrv_0, 10 )
// rigid to deformable curve contact
*Contact( con_0, "Contact 0", IMPACT, OFF, BODY, Body_1, 1, gcyl_0, DEFCURVE, gdefc_0 )
*SetContact( con_0, 1000.0, 2.1, 0.1, 0.1, 0.2, 0.1, 1.0, 1.5, false )
*DeformableSurface( defsur_1, "DeformableSurface 1", NATURAL, 8, 8, MARKER, m_10000001,
m_10000002, m_10000003, m_10000004, m_10000005, m_10000006, m_10000007, m_10000008,
m_10000009, m_10000010, m_10000011, m_10000012, m_10000013, m_10000014, m_10000015,
m_10000016, m_10000017, m_10000018, m_10000019, m_10000020, m_10000021, m_10000022,
m_10000023, m_10000024, m_10000025, m_10000026, m_10000027, m_10000028, m_10000029,
m_10000030, m_10000031, m_10000032, m_10000033, m_10000034, m_10000035, m_10000036,
m_10000037, m_10000038, m_10000039, m_10000040, m_10000041, m_10000042, m_10000043,
m_10000044, m_10000045, m_10000046, m_10000047, m_10000048, m_10000049, m_10000050,
m_10000051, m_10000052, m_10000053, m_10000054, m_10000055, m_10000056, m_10000057,
m_10000058, m_10000059, m_10000060, m_10000061, m_10000062, m_10000063, m_10000064 )
*Graphic( gra_def_surf, "Graphic 1", DEFORMABLE_SURFACE, "30", "30", defsur_1 )
//rigid to deformable surface contact
*Contact( con_sph_defsurf, "Sphere to Deformable Surface contact", IMPACT, OFF, BODY, Body_1, 1, gra_sph, DEFSURF, gra_def_surf )
Context
Properties
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. |
itype | string | I type entity. Values are BODY|DEFCURVE|DEFSURF. |
ig1, ...ign | Graphic | The graphic entities belonging to the first body. |
jtype | string | J type entity. Values are BODY|DEFCURVE|DEFSURF. |
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 represents 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 3D graphical based contact force between two sets of graphics that belong to different bodies or deformable curve or deformable surface.
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.
When graphic type selected is deformable curve (DEFCURVE) or deformable surface (DEFSURF) only one graphic reference is allowed in the following argument.
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.
Contact between a deformable curve and a deformable surface is not supported.
When exporting to the ADAMS solver, MotionView utilizes a Parasolid file of the same base name as the H3D graphics file and in the same file location. Parasolid's containing only one solid (element) must be used. The reference marker for the Parasolid is implicitly generated based on the location of the H3D graphic in the MDL model.