User-Defined Road Models
- urm.dll in Windows
liburm.so or liburm.sl in LINUX and UNIX, respectively
This library is searched for, according to the rules set by the respective operating system. To ensure this library is made available, place it into the working directory from which COSIN/road and its calling solver is invoked.
extern void urm (int ti, double t, double x, double y, double*z, double*vx, double*vy, double*vz, double*mu, int*ier, char*file);
- Road height z
- Road surface velocities vx, vy, vz
- Friction modification factor
- Time t
- Location x, y
COSIN/road passes to this routine the name of the data file, with the extension urm as mentioned above, which is read and interpreted under the sole responsibility of the user-defined road model.
Parameter | C/C++ type | Data flow | Unit | Meaning |
---|---|---|---|---|
ti | int | in | - | Wheel index. Typically:
|
t | double | in | s | Simulation time, provided by COSIN/road. |
x | double | in | m | x comp. of location where road height is needed; provided by COSIN/road. |
y | double | in | m | y comp. of location where road height is needed; provided by COSIN/road. |
z | double* | out | m | Road height. |
vx | double* | out | m/s | x comp. of road surface velocity relative to global coordinate system (non-zero, for example, in drum or flatbelt simulations). |
vy | double* | out | m/s | y comp. of road surface velocity relative to global coordinate system. |
vz | double* | out | m/s | z comp. of road surface velocity relative to global coordinate system (non-zero, for example, in hydraulic 4-poster simulations). |
mu | double* | out | - | Friction characteristic modification factor (value is typically 1.0, which means no modification of the friction characteristic as defined by the tire model). |
ier | int* | out | - | Error code, must be 0 if road evaluation (or file opening and reading) is successful, any value other than 0 else. |
file | char* | in | string | Name of road data file (provided by COSIN/road). May or may not contain the
path; the exact interpretation of the string is according to the rules of the
respective operating system. The user routine decides when this file is to be opened and read. The name is provided in each call to urm. However, typically, it only needs to be read during the first call of urm with the respective wheel index. urm might have to save the information in the file in local, static variables. |
/* place-holder for user-defined road model (URM) */
#include <stdio.h>
extern void urm (int ti, double t, double x, double y,
double*z, double*vx, double*vy, double*vz, double*mu, int*ier, char*file) {
static int first=1;
if (first) {
printf("\nthis is the demo user road model, using data file %s..\n",file);
first=0;
}
/* terminate road model */
if (t>=0.9e60) {
return;
}
*z=0.0;
if (x>1.0 && x<1.2) *z=0.02;
*vx=0.0;
*vy=0.0;
*vz=0.0;
*mu=1.0;
*ier=0;
}
In Windows, provided the Microsoft™ C/C++ compilers are installed, this function can be compiled and linked into a dynamical link library with the batch file makeum.bat, also contained in the sub folder sdk of the FTire/lib download. The file assumes the installation location of the compiler is contained in the respective search paths. This is true for regular installations.