*SetContact() - RigidToRigidContact

Sets the values associated with the RigidToRigidContact.

Syntax

*SetContact(varname,  
                     force_attrib ,  
                     fric_attrib  
                     [,create_zero_sensor,r_value]  
                     [,create_hmax_sensor,hmax_factor] ,
                         compute_force_at)
force_attrib
Can be one of the following based on contact_type chosen in *Contact to calculate normal force:
  1. stiffness, damping , exponent, dmax
  2. penalty, rest_coeff, [use_aug_formulation]
  3. i_bulk_modulus, j_bulk_modulus, i_shear_modulus, j_shear_modulus, i_layer_depth, mat_exponent, mat_damping,
  4. usr_type, usr_sub
fric_attrib
Can be one of the following based on coulomb_friction chosen in *Contact to calculate the friction force:
  1. mu_static, mu_dynamic, stiction_trans_vel, friction_trans_vel
  2. friction_usr_type, friction_usr_sub
Note: The functionalities specific to MotionSolve are shown in blue.

Arguments

varname
The variable name of an existing contact entity.
Data type: varname

The following arguments are applicable to the IMPACT model for calculating normal force:

stiffness
Represents the contact stiffness coefficient.
Data type: real
exponent
The exponent applied to the normal force equation that represents contact.
Data type: real
damping
The value of the damping coefficient associated with the contact force.  
Data type: real
dmax
The depth at which the full value of damping is applied.
Data type: real

The following arguments are applicable to the POISSON model for calculating normal force:

penalty
Determines the local stiffness parameter of the spring that represents contact. Larger values lead to lower penetration between two bodies.
Data type: real
rest_coeff
The value representing the energy loss between the two bodies in contact. Valid value range is between 0 - 1. A value of 1 represents no energy loss, and 0 represents a perfectly elastic contact.
Data type: real
use_aug_formulation
Used to refine the accuracy of the normal force between the two bodies. Applicable in ADAMS solver mode only.
Data type: boolean

The following arguments are applicable to the VOLUME model for calculating normal force:

i_bulk_modulus
Bulk modulous of I Body material.
Data type: real
j_bulk_modulus
Bulk modulous of J Body material.
Data type: real
i_shear_modulus
Shear modulous of I Body material.
Data type: real
j_shear_modulus
Shear modulous of J Body material.
Data type: real
i_layer_depth
Depth of material layer of the I Body to be considered for contact force calculation.
Data type: real
j_layer_depth
Depth of material layer of the J Body to be considered for contact force calculation.
Data type: real
mat_exponent
The exponent of the force deformation characteristic of the contact interface.
Data type: real
mat_damping
The coefficient of damping used to calculate the damping force.
Data type: real

The following arguments are applicable to USER model for calculating normal force in MotionSolve.

usr_type
Keyword USER to specify that the following argument is a call to the user function.
Data type: keyword
usr_sub
USER function that is input to the subroutine.
Data type: string

Note: Use *SetLocalUserFunction to set the type of user subroutine and subroutine file.

The following arguments are applicable when columb_friction is set to ON or DYNAMIC_ONLY:

mu_static
Static coefficient of friction.
Data type: real
mu_dynamic
Dynamic coefficient of friction.
Data type: real
stiction_trans_vel
Velocity limit above which friction regime transitions from static to dynamic (also referred as stiction).
Data type: real
friction_trans_vel
Velocity limit above which friction regime is considered dynamic. friction_trans_vel > stiction_trans_vel
Data type: real

The following arguments are applicable when columb_friction is set to USER (applicable for MotionSolve only):

friction_usr_type,
Keyword USER to specify that the following argument is a call to the user function.
Data type: keyword
friction_usr_sub
USER function that is input into the subroutine.
Data type: string

Note: Use *SetLocalUserFunction to set the type of user subroutine and subroutine file.

The following arguments are applicable only when the solver mode is set to MotionSolve:

create_zero_sensor
When TRUE, it creates a zero crossing Sensor to accurately capture the time of first contact for a model containing contact elements. This is useful in getting realistic contact forces without having to run the entire simulation at a small step size. To do this, the sensor monitors the contact force for a contact pair in the model. As soon as contact is first detected, the zero crossing action is triggered.
Data type: boolean
r_value
Specifies the accuracy to which the zero crossing Sensor should detect the contact event.
Data type: real
create_hmax_sensor
When TRUE, specifies the action that the zero crossing Sensor is to undertake when it detects contact (in other words, a zero crossing). The action, in this case, is to reduce the maximum step size the integrator can take.
Data type: boolean
hmax_factor
Specifies the reduction scale factor for the maximum step size the integrator is allowed.
Data type: real
compute_force_at
Specifies whether the contact detection and force calculation in MotionSolve would be based on penetration of the mesh element center or mesh nodes.
Values: ELEM_CENTER | NODE
Default value (or when not specified) is ELEM_CENTER.
Data type: string

Example

This example shows two contact entities containing 
IMPACT
 and 
POISSON
 normal force definitions. Friction is turned 
OFF
 for contact entity that uses 
IMPACT
 for normal force (
contact_im
) and for 
contact_ps
 that uses 
POISSON
 definition for normal force, friction is turned 
ON
. Zero crossing sensor is not defined.
*BeginMDL(the_model, "MBD Model")
 *Body(b_1, "Body 1", , , )
 *Body(b_2, "Body 2", , , )
 *Graphic(g_file_1, "File Graphic - 1", File, MODEL.b_1, "file1.h3d", comp1, GLOBAL, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.000, 1.000, 1.000)
 *Graphic(g_file_2, "File Graphic - 2", File, MODEL.b_2, "file2.h3d", comp1, GLOBAL, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.000, 1.000, 1.000)
 *Contact(contact_im, "Contact Impact", IMPACT, OFF, 1, g_file_1, FALSE, 1, g_file_2, FALSE)
 
*SetContact(contact_im, 1E6, 2.0, 8.0, 0.1)
 *Contact(contact_ps, "Contact Poisson", POISSON, ON, 1, g_file_1, FALSE, 1, g_file_2, FALSE)
 
*SetContact(contact_ps, 1E5, 0.8, FALSE, 0.8, 0.6, 0.5, 1.5)
*EndMDL()
The second example shows a contact entity containing the 
VOLUME
 normal force definition. The standard friction model is used and a zero crossing sensor is defined. The zero crossing action is to reduce the maximum step size by a factor of 100. Contact detection and force calculation in MotionSolve is based on the penetration of mesh nodes.
*BeginMDL(the_model, "MBD Model")
 *Body(b_1, "Body 1", , , )
 *Body(b_2, "Body 2", , , )
 *Graphic(g_file_1, "File Graphic - 1", File, MODEL.b_1, "file1.h3d", comp1, GLOBAL, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.000, 1.000, 1.000)
 *Graphic(g_file_2, "File Graphic - 2", File, MODEL.b_2, "file2.h3d", comp1, GLOBAL, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 1.000, 1.000, 1.000)
 *Contact(contact_vol, "Contact Volume", IMPACT, ON, 1, g_file_1, FALSE, 1, g_file_2, FALSE)
 
*SetContact(contact_vol, 160000.0, 160000.0, 160000.0, 160000.0, 100.0, 100.0, 2.1, 1.0, 0.3, 0.25, 1.0, 1.5, true, 0.01, true, 0.1, NODE) 
*EndMDL()

Context

*BeginMdl()

*DefineAnalysis()

*DefineSystem()

*DefineAssembly()