*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:stiffness, damping , exponent, dmax
penalty, rest_coeff, [use_aug_formulation]
i_bulk_modulus, j_bulk_modulus, i_shear_modulus, j_shear_modulus, i_layer_depth, mat_exponent, mat_damping,
usr_type, usr_sub
fric_attrib
- Can be one of the following based on
coulomb_friction
chosen in *Contact to calculate the friction force:mu_static, mu_dynamic, stiction_trans_vel, friction_trans_vel
friction_usr_type, friction_usr_sub
Arguments
- varname
- The variable name of an existing contact entity.
The following arguments are applicable to the IMPACT model for calculating normal force:
- stiffness
- Represents the contact stiffness coefficient.
- exponent
- The exponent applied to the normal force equation that represents contact.
- damping
- The value of the damping coefficient associated with the contact force.
- dmax
- The depth at which the full value of damping is applied.
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.
- 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.
- use_aug_formulation
- Used to refine the accuracy of the normal force between the two bodies. Applicable in ADAMS solver mode only.
The following arguments are applicable to the VOLUME model for calculating normal force:
- i_bulk_modulus
- Bulk modulous of I Body material.
- j_bulk_modulus
- Bulk modulous of J Body material.
- i_shear_modulus
- Shear modulous of I Body material.
- j_shear_modulus
- Shear modulous of J Body material.
- i_layer_depth
- Depth of material layer of the I Body to be considered for contact force calculation.
- j_layer_depth
- Depth of material layer of the J Body to be considered for contact force calculation.
- mat_exponent
- The exponent of the force deformation characteristic of the contact interface.
- mat_damping
- The coefficient of damping used to calculate the damping force.
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.
- usr_sub
- USER function that is input to the subroutine.
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.
- mu_dynamic
- Dynamic coefficient of friction.
- stiction_trans_vel
- Velocity limit above which friction regime transitions from static to dynamic (also referred as stiction).
- friction_trans_vel
- Velocity limit above which friction regime is considered dynamic. friction_trans_vel > stiction_trans_vel
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.
- friction_usr_sub
- USER function that is input into the subroutine.
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.
- r_value
- Specifies the accuracy to which the zero crossing Sensor should detect the contact event.
- 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.
- hmax_factor
- Specifies the reduction scale factor for the maximum step size the integrator is allowed.
- 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.
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()