MF-SWIFT/MF-Tyre Integration with MotionSolve
MotionSolve Input Deck
This topic describes how to set up MotionSolve to use an MF-SWIFT/MF-Tyre tire model with a vehicle set up. The following assumptions are made:- To begin, you have a vehicle model without tires.
- You have an MF-SWIFT/MF-Tyre tire file and a compatible road definition file.
- You have access to a license for running the MF-Tyre tire model (only required for MF-SWIFT).
- A set of required markers.
- One wheel/tire body per tire.
- One revolute joint for wheel spin axis. Or, optionally, a bushing entity with very stiff rates in the non-spin direction and only damping in the spin direction.
- One force entity that acts on two bodies of type “user”.
- One array that contains properties relating to the tire.
- One string entity for referencing the tire property file.
- One string entity for referencing the road property file.
- One state equation entity and related arrays for interfacing the tire states and tire outputs with the MBD model.
1. Setting up the markers.
<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."
/>
<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"
/>
<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."
/>
2. Setting up the wheel body and the constraints.
<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"
/>
3. Setting up the force vector.
- par1: The routing ID (used only if the function name is GFOSUB).
- par2: The ID of the Force_Vector_TwoBody.
- par3: The ID of the Reference_Array used for the tire.
<Force_Vector_TwoBody
id = "1"
label = "tire_handling_fr_AAAA_v05_0_swift.tir_wheel.force"
type = "ForceAndTorque"
i_marker_id = "1239"
j_floating_marker_id= "1225"
ref_marker_id = "1223"
usrsub_param_string = "USER(908,1,1078)"
usrsub_dll_name = "mbdtire"
usrsub_fnc_name = "GFOSUB"
/>
4. Setting up the tire reference array.
<Reference_Array
id = "1096"
label = "tire_handling_rr_AAAA_v05_0_swift.til_wheel.input_array"
type = "IC"
num_element = "15">
1.0950000E+03 4.0000000E+00 0.0000000E+00 9.4000000E+01 9.9000000E+01
1.0200000E+02 1.0000000E+02 1.0100000E+02 3.1350000E+02 0.0000000E+00
-1.0000000E+00 1.0970000E+03 1.0980000E+03 0.0000000E+00 0.0000000E+00
The array must be of type “IC”.
Parameter Number | Description |
---|---|
1 | ID of <Reference_Array> holding tire states (that is, the X array of the GSE). |
2 | Number of time continuous state variables for the tire (this can be overridden later). |
3 | Number that indicates which side of the vehicle the tire is mounted on (0 = left, 1 = right). |
4 | ID of <Reference_String> that lists the axle name (for example, front, rear, trailer). |
5 | ID of <Reference_String> that lists the path and name of the tire property file. |
6 | ID of <Reference_String> that lists the simulation type (currently unused). |
7 | ID of <Reference_String> that lists the path and name of the road property file. |
8 | ID of <Reference_String> that lists the contact type (currently unused). |
9 | Rig radius (used for suspension analysis tire). |
10 | ID of <Control_Diff> element used for steady-state analysis. |
11 | Tydex ISWITCH setting (this is overridden by the USE_MODE specified in the tire property file). |
12 | ID of <Reference_Array> holding scaling and drift factors. |
13 | ID of <Reference_Array> holding user parameters. |
14 | ID of JPRIM to lock wheel rotation (for steady state analysis). |
15 | Rig Stiffness (suspension analysis tire). |
16 | Smoothing time. |
5. Setting up the property files for road and tire.
<Reference_String
id = "86"
label = "tire_handling_fr_AAAA_v05_0_swift.tir_wheel.tpf_file"
string = "TNO_car205_60R15_swift_sin.tir"
/>
- In the [MODEL] section, the attribute “PROPERTY_FILE_FORMAT” must be set to ‘SWIFT-TYRE’.
- In the [MODEL] section, the attribute “FUNCTION_NAME” must be set to 'tnodelft::DTYRE'.
- In the [MODEL] section, the attribute “ROAD_SOURCE” must be set to ‘TNO’. The
attribute “ROAD_SOURCE” can have three valid options:
- ROAD_SOURCE = ‘TNO’ – use MF-Tyre/MF-SWIFT internal road definition.
- ROAD_SOURCE = ‘MBS’ – use road definition of MotionSolve.
- ROAD_SOURCE = ‘USER’ – use user-written road.
<Reference_String
id = "87"
label = "tire_handling_fr_AAAA_v05_0_swift.tir_wheel.rpf_file"
string = "2d_flat_TNO.rdf"
/>
6. Setting up the GSE.
<Control_StateEqn
id = "3"
label = "tir_wheel.tire_gse"
type = "USERSUB"
x_array_id = "1077"
y_array_id = "1076"
u_array_id = "1075"
num_state = "5"
num_output = "0"
usrsub_param_string = "USER(908,1,1078)"
usrsub_dll_name = "mbdtire"
usrsub_fnc_name = "gsesub"
usrsub_der1_name = "GSEXX"
usrsub_der2_name = "GSEXU"
usrsub_der3_name = "GSEYX"
usrsub_der4_name = "GSEYU"
is_static_hold = "FALSE"
/>
- The Control_StateEqn must be of type “USERSUB”.
- The usrsub_param_string is of type USER (908, xxx, yyy) where xxx is the ID of the tire, yyy is the ID of the tire reference array. This must be consistent with the USER() string specified in the Force_Vector_TwoBody for each tire.
- The usrsub_dll_name must be “mbdTire”.
- The usrsub_fnc_name must be “gsesub”.
- x_array_id points to the ID of an array that holds the tire states.
- y_array_id points to the ID of an array that holds the outputs from the GSE (forces and moments).
- u_array_id points to the ID of an array that holds the values of the input variables.
- num_state lists the number of states for the tire. This is overridden internally.
- num_output lists the number of outputs from the tire. This is also overridden internally if not equal to 6 (Fx, Fy, Fz, Mx, My, Mz).
Variable Name | U array | Description | Formula |
---|---|---|---|
Time | U[0] | Simulation time | TIME |
Rim dx/dy/dz | U[1/2/3] | WC displacements in earth axis system | DX/Y/Z(tire i marker, rm, rm) |
Rim X dot X/Y/Z | U[4/5/6] | Direction cosines of wheel X axis along global X/Y/Z axis | SYSARY(UVX/Y/Z) |
Rim Y dot X/Y/Z | U[7/8/9] | Direction cosines of wheel Y axis along global X/Y/Z axis | SYSARY(UVX/Y/Z) |
Rim VX/Y/Z | U[10/11/12] | Wheel Center translational velocities | SYSFNC(VX/Y/Z, i, rm, rm…) |
Rim WX/Y/Z | U[13/14/15] | Wheel Center rotational velocities | SYSFNC(WX/Y/Z, i, rm, rm…) |
7. Running MF-Tyre versus MF-SWIFT.
The difference between MF-Tyre and MF-SWIFT tire models is that the latter uses rigid ring dynamics while calculating the tire forces, moments and other kinematic quantities. You can switch between the two tire models by manipulating the property “USE_MODE” in the tire property file.
0: Fz only, no Magic Formula evaluation |
1: Fx,My only |
2: Fy,Mx,Mz only |
3: Fx,Fy,Mx,My,Mz uncombined force/moment calculation |
4: Fx,Fy,Mx,My,Mz combined force/moment calculation |
5: Fx,Fy,Mx,My,Mz combined force/moment calculation + turnslip |
+0: steady state behavior |
+10: including relaxation behavior |
+20: including relaxation behavior (nonlinear) |
+30: including rigid ring dynamics |
+100: smooth road contact |
+200: smooth road contact (circular cross section, motorcycles) |
+400: road contact for 2D roads (using traveled distance) |
+500: road contact for 3D roads |
- combined slip
- rigid ring dynamics
- road contact for 2D roads
8. Tire requests from MF-SWIFT/MF-Tyre
<Post_Request
id = "759"
comment = "road_contact_point_location_rear_LH"
type = "USERSUB"
usrsub_param_string = "USER(902,reqType,tireId)"
usrsub_dll_name = "NULL"
usrsub_fnc_name = "REQSUB"
cname2 = "X_rear"
cname3 = "Y_rear"
cname4 = "Z_rear"
cname6 = "tire_radial_penetration_rear"
cname7 = "tire_radial_penetration_velocity_rear"
cunit1 = "no_units"
cunit2 = "length"
cunit3 = "length"
cunit4 = "length"
cunit5 = "no_units"
cunit6 = "length"
cunit7 = "velocity"
cunit8 = "no_units"
/>
1 | Tire rolling states. |
2 | Tire kinematic properties (Tydex-W/ISO). |
3 | Tire contact patch forces (Tydex-W/ISO). |
4 | Tire contact patch forces (SAE). |
5 | Tire kinematic properties (SAE). |
6 | Tire hub forces (Tydex-C). |
7 | Miscellaneous tire states
|
8 | Miscellaneous tire states:
|
9 | N/A |
10 | Contact patch locations along the plane of the tire in GFORCE rm marker frame. |
11 | Hub velocities of tire in GFORCE rm marker frame. |
14 | Miscellaneous tire states:
|