HTire Integration with MotionSolve

Using Tires with MotionSolve

In some cases where you have a full vehicle model in the MotionSolve xml format and you want to manually enable it to use tires, the following information will apply.

MotionSolve Input Deck

Given a tire and road property file you can setup a MotionSolve input deck to include a tire (assuming you have a full vehicle without tires to start with).
There is a collection of solver entities required to enable a tire model. You can build up a vehicle model to utilize a tire model using the set of entities described below:
  • A set of required markers (Reference_Marker)
  • One wheel/tire body (Body_Rigid)
  • One revolute joint for wheel spin axis, or optionally a busing entity with very stiff rates in the non-spin direction and only damping in the spin direction (Constraint_Joint) or (Force_Bushing)
  • One force_vector_twobody of type "User" (Force_Vector_Twobody)
  • One reference_array (Reference_Array)
  • One string entity for .tir file (Reference_String)
  • One string entity for .rdf file (Reference_String)
A marker is required, located at the wheel center and attached to the ground body. This is a floating marker that will stay superimposed on the marker used to define the tire force.
<Reference_Marker
     id                  = "11001020"
     label               = "Front Tire J Marker-left"
     body_id             = "30101"
     body_type           = "RigidBody"
     pos_x               = "1000."
     pos_y               = "-750."
     pos_z               = "1000."
  />
A road reference marker is required to define the height of the road. This marker is attached to ground.
<Reference_Marker
     id                  = "11001010"
     label               = "Road Reference Marker Front-left"
     body_id             = "30101"
     body_type           = "RigidBody"
     pos_x               = "0."
     pos_y               = "0."
     pos_z               = "680.03"
  />
A marker is required for the action-reaction tire force. It is attached to the wheel/tire body and oriented with the y axis along the spin axis.
<Reference_Marker
     id                  = "11003020"
     label               = "Front Tire Force Reference-left"
     body_id             = "10403"
     body_type           = "RigidBody"
     pos_x               = "1000."
     pos_y               = "-750."
     pos_z               = "1000."
     a00                 = "-1."
     a10                 = "0."
     a20                 = "0."
     a02                 = "0."
     a12                 = "0."
     a22                 = "1."
  />
The model must contain a wheel body and a revolute joint between the wheel body, and another part of the vehicle model. The revolute joint should be aligned to represent the spin axis of the tire (see example below):
Note: A bushing can be used in place of the revolute joint, however this is rarely used.
<Body_Rigid
     id                  = "10403"
     label               = "Wheel-left"
     cg_id               = "10403010"
     im_id               = "10403010"
     lprf_id             = "10403001"
     mass                = "36."
     inertia_xx          = "1750000."
     inertia_yy          = "1750000."
     inertia_zz          = "1000000."
     v_ic_x              = "-24587.2"
     v_ic_y              = "0."
     v_ic_z              = "0."
     w_ic_x              = "0."
     w_ic_y              = "0."
     w_ic_z              = "-76.842204"
     v_ic_x_flag         = "TRUE"
     v_ic_y_flag         = "TRUE"
     v_ic_z_flag         = "TRUE"
     w_ic_flag           = "TRUE"
/> 
<Constraint_Joint
     id                  = "104002"
     label               = "Wheel spindle rj-left"
     type                = "REVOLUTE"
     i_marker_id         = "10404020"
     j_marker_id         = "10401020"
/>
The input deck then requires a Force_Vector_TwoBody force (action-reaction force) of the type "User". The usrsub_dll_name must be “mbdtire” and the usrsub_fnc_name must be “mbdtire”. The parameters for the "USER" arguments are:
  • par1: The routing ID (not needed as long as fnc_name is"mbdtire")
  • par2: The ID of the Force_Vector_TwoBody.
  • par3: The ID of the Reference_Array used for the tire.
  • par4: In the case where co-simulation tire is used, this is the order of the interpolating polynomial between subsequent evaluation of forces at integrator convergence. Set to 0 for zero order hold, or 1 for first order hold.
<Force_Vector_TwoBody
     id                  = "11001"
     label               = "Front tire force-left"
     type                = "ForceAndTorque"
     i_marker_id         = "11003020"
     j_floating_marker_id= "11001022"
     ref_marker_id       = "11001010"
     usrsub_param_string = "USER(408,11001,31000100,0)"
     usrsub_dll_name     = "mbdtire"
     usrsub_fnc_name     = "mbdtire"
/>
Many of the required values for the tire are stored in the Reference_array from par3:
<Reference_Array
     id                  = "31000100"
     label               = "Front tire input array left"
     type                = "IC"
     num_element         = "7">
   0.0000000E+00   1.8000000E+01   0.0000000E+00   3.1000900E+05   3.1000100E+05   3.1001100E+05   3.1000500E+05
 </Reference_Array>

Num_element must be seven; however the only two that currently apply are element 5 and element 7 (the others are reserved for future use).

Element 5: The ID of the string that contains the tire property file (see example below):
<Reference_String
     id                  = "310001"
     label               = "Front left tire property file string"
     string              = "prop_files/ftire.tir"
/>
Element 7: The ID of the string that contains the road property file (see example below):
<Reference_String
     id                  = "310005"
     label               = "Front left road property file string"
     string              = "prop_files/2d_road.rdf"
/>