Vous êtes sur la page 1sur 566

Welcome to Adams/Car

Adams/Car

2
About Adams/Car
Adams/Car, part of the MD Adams R3

suite of software, is a specialized environment for modeling


vehicles. It allows you to create virtual prototypes of vehicle subsystems and analyze the virtual
prototypes much like you would analyze the physical prototypes.
Using Adams/Car, you can quickly create assemblies of suspensions and full vehicles, and then analyze
them to understand their performance and behavior.
You create assemblies in Adams/Car by defining vehicle subsystems, such as front and rear suspensions,
steering gears, anti-roll bars, and bodies. You base these subsystems on their corresponding standard
Adams/Car templates. For example, Adams/Car includes templates for double-wishbone suspension,
MacPherson strut suspension, rack-and-pinion steering, and so on.
If you have expert-user access, you can also base your subsystems on custom templates that you create
using the Adams/Car Template Builder.
When you analyze an assembly, Adams/Car applies the analysis inputs that you specify. For example, for
a suspension analysis you can specify inputs to:
Move the wheels through bump-rebound travel and measure the toe, camber, wheel rate, roll
rate, and side-view swing arm length.
Apply lateral load and aligning torque at the tire contact path and measure the toe change and
lateral deflection of the wheel.
Rotate the steering wheel from lock to lock and measure the steer angles of the wheels and the
amount of Ackerman, that is, the difference between the left and right wheel-steer angles.
Based on the analysis results, you can quickly alter the suspension geometry or the spring rates and
analyze the suspension again to evaluate the effects of the alterations. For example, you can quickly
change a rear suspension from a trailing-link to a multi-link topology to see which yields the best
handling characteristics for your vehicle.
Once you complete the analysis of your model, you can share your work with others. You can also print
plots of the suspension characteristics and vehicle dynamic responses. In addition, you can access other
users' models without overwriting their data.
Benefits of Adams/Car
Adams/Car enables you to work faster and smarter, letting you have more time to study and understand
how design changes affect vehicle performance.
Using Adams/Car you can:
Explore the performance of your design and refine your design before building and testing a
physical prototype.
Analyze design changes much faster and at a lower cost than physical prototype testing would
require. For example, you can change springs with a few mouse clicks instead of waiting for a
mechanic to install new ones in your physical prototype before re-evaluating your design.
3
Welcome to Adams/Car
Vary the kinds of analyses faster and more easily than if you had to modify instrumentation, test
fixtures, and test procedures.
Work in a more secure environment without the fear of losing data from instrument failure or
losing testing time because of poor weather conditions.
Run analyses and what-if scenarios without the dangers associated with physical testing.
Adams/Car

4
Learning the Basics
Adams/Car

6
Starting Adams/Car
In the Windows environment, you start Adams/Car from the Start button. In the UNIX environment, you
start Adams/Car from the Adams Toolbar.
This topic describes how you start the two Adams/Car interface modes, standard interface or template
builder.
Adams/Car Standard Interface
Adams/Car has two interface modes: Standard Interface and Template Builder. This topic explains how
to start Adams/Car Standard Interface.
To start in the Windows environment:
1. From the Stat menu, point to Programs, point to MSC.Software, point to MD Adams R3, point
to ACar, and then select Adams - Car.
The Welcome dialog box appears on top of the Adams/Car main window.
2. Do one of the following:
If the Welcome dialog box contains the options Standard Interface and Template Builder,
select Standard Interface, and then select OK.
If the Welcome dialog box does not contain any options, then Adams/Car is already
configured to run in standard-interface mode. Select OK.
The Adams/Car Standard Interface appears.
To start in the UNIX environment:
1. At the command prompt, enter the command to start the Adams Toolbar, and then press Enter.
The standard command that MSC.Software provides is adamsmdx, where x is the version
number, for example adamsmdr3.
The Adams Toolbar appears.
2. Select the Adams/Car tool .
The Welcome dialog box appears on top of the Adams/Car main window.
3. Do one of the following:
If the Welcome dialog box contains the options Standard Interface and Template Builder,
select Standard Interface, and then select OK.
If the Welcome dialog box does not contain any options, then Adams/Car is already
configured to run in standard mode. Select OK.
The Adams/Car Standard Interface appears.
7
Learning the Basics
Adams/Car Template Builder
Adams/Car has two interface modes: Standard Interface and Template Builder. This topic explains how
to start Adams/Car Template Builder.
Before you start Adams/Car Template Builder, make sure that your private configuration file, .acar.cfg,
shows that you have expert-user access. Your private configuration file is located in your home directory.
To check user access:
1. In a text editor, such as jot or notepad, open .acar.cfg.
2. Verify that the following line appears as shown:
ENVI RONMENT MDI _ACAR_USERMODE EXPERT
This line sets the user mode for the Adams/Car session.
To start in the Windows environment:
1. From the Start menu, point to Programs, point to MSC.Software, point to MD Adams R3,
point to ACar, and then select Adams - Car.
The Welcome dialog box appears on top of the Adams/Car main window.
2. Select Template Builder.
3. Select OK.
The Adams/Car Template Builder window appears.
To start in the UNIX environment:
1. At the command prompt, enter the command to start the Adams Toolbar, and then press Enter.
The standard command that MSC.Software provides is adamsmdx, where x is the version
number, for example adamsmdr3.
The Adams Toolbar appears.
2. Select the Adams/Car tool .
The Welcome dialog box appears on top of the Adams/Car main window.
3. Select Template Builder.
4. Select OK.
The Adams/Car Template Builder window appears.
Adams/Car

8
Interfaces and Access
You can use Adams/Car through two different interfaces depending on your user access.
Interface Modes
Adams/Car has two interface modes:
Standard Interface - You use it when working with existing templates to create and analyze
assemblies of suspensions and full vehicles. Users with standard and expert access can use the
Standard Interface.
Template Builder - If you have expert-user access, you use the Template Builder to create new
templates for use in the Standard Interface.
When you create a new component in the Template Builder, your product automatically adds a
prefix based on the entity type and the symmetry. Your product uses a naming convention to let
you easily determine an entitys type from the entitys name. Learn about the naming convention
and see a table that lists the prefixes of various entities. If you have expert-user access, you use
the Template Builder to create new templates for use in the Standard Interface.
Using the Template Builder, you can assemble standard components, such as springs, parts, and
bushings, to define the topology of your system, such as a suspension or a single valvetrain in an
engine.
To switch between modes:
Do one of the following:
From the Tools menu, select [Product Name] Standard Interface or select [Product Name]
Template Builder.
Press F9.
About User Access
Your access to the standard-interface or template-builder mode depends on your assigned user access:
Standard user - Standard users do not have access to the Template Builder, only to the Standard
Interface. Therefore, the standard user cannot make topological modifications to templates, but
can operate on subsystems, varying design parametrics and analysis inputs.
Expert user - Expert users have access to modeling capabilities available in theTemplate
Builder. Therefore, expert users can open templates and modify their topological information, as
well as create new templates.
If you are an expert user, when you launch your Adams product, it prompts you to select either
Standard Interface or Template Builder.
9
Learning the Basics
Setting User Access
You use the MDI_ACAR_USERMODE keyword in your private configuration file to set your user
access, which determine you access to the Template Builder and other development tools. Your private
configuration file is found at $HOME/.acar.cfg, where $HOME is the location of your home directory.
You can set USERMODE to:
STANDARD - User can only access the Standard Interface.
EXPERT - User can access the Template Builder and create and modify templates. User can
access the Template Builder and other development tools that are located under the Tools menu.
Expert users can use the MDI_ACAR_PLUS_AVIEW keyword in the private configuration file
to access Adams/View. Learn about accessing Adams/View.
To change the value of this keyword, you must edit the private configuration file (.acar.cfg) using a text
editor and modify the corresponding string. The following gives you expert access:
! Desired user mode (standard/expert)
ENVIRONMENT MDI_ACAR_USERMODE EXPERT
When you start a new session, your template-based product reflects the changes to the private
configuration file.
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation
Adams/Car

10
Navigating Through a Modeling Database
The Database Navigator helps you view, select, and modify objects in your modeling database.
Learn more:
About the Database Navigator
Viewing Objects
Showing, Hiding, and Selecting Objects in the Database Navigator
Managing the Select List
Filtering Objects in the Database Navigator
Sorting Objects in the Database Navigator
Setting Highlighting in the Database Navigator
Changing Objects
Setting Appearance of Objects Through the Database Navigator
Renaming Objects Through the Database Navigator
Adding Comments Through the Database Navigator
Viewing Information About Your Model
Viewing Model Topology Through the Database Navigator
Viewing the Associativity of Objects
Viewing Object Information Through the Database Navigator
Viewing Model Topology Map Through Information Window
About the Database Navigator
The Database Navigator has several modes in which you can display object information. It can be set to
just let you browse for objects or you can set it to rename objects, view information about the objects,
such as view how the object relates to other objects, and view dependencies.
The Database Navigator only displays the types of objects that are appropriate for the command you are
executing. For example, if you are renaming a model, it only displays models in your database. On the
other hand, if you are searching for any modeling object in the database, it displays all types of modeling
objects. You can also set a filter for the types of objects that the Database Navigator displays.
The Database Navigator shows objects in their database hierarchy. The following figure shows the
Database Navigator with the top-level modeling objects in a small database that contains one model,
11
Learning the Basics
model_1 . These objects do not have parents. Double-click the name of a model, in this case model_1,
to find all the objects belonging to that model.
To display the Database Navigator, do any of the following:
From the Tools menu, select Database Navigator.
Execute an editing command, such as Modify, from the Edit menu when no object is currently
selected.
Request to view information about an object using the Info command on the Edit pop-up menu.
Browse for the name of an object to enter in a dialog box using the Browse command.
Your template-based product displays the Database Navigator.
Showing, Hiding, and Selecting Objects in the Database
Navigator
In the Database Navigator treelist,a plus (+) in front of an object indicates that the object has children
below it but they are hidden. A minus (-) indicates that all objects immediately below the object are
displayed.
Adams/Car

12
To show or hide objects below a single object:
Double-click an object with a plus or minus by it.
To expand or collapse all objects by one level:
In the lower right corner of the navigator window, select the +or - button.
To hide all objects:
In the lower right corner of the navigator window, select the - button.
You can use the Database Navigator to select any object in the database. You can also select more than
one object to complete a command. You can create a list of selected objects on which to perform options
by choosing Select List from the pull down menu at the top of the Database Navigator.
To select a single object:
In the tree list, click the object and select OK. If the Database Navigator is not in multi-select
mode, you can also double-click the object to select it.
To use the mouse to select a continuous set of objects:
1. In the tree list, drag the mouse over the objects you want to select or click on one object, hold
down the Shift key, and click the last object in the set. All objects between the two selected
objects are highlighted.
2. Select OK.
To use the Up and Down arrow keys to select a continuous set of objects:
1. In the tree list, click on the first object, hold down the Shift key, and then use the Up or Down
arrows to select a block of objects.
2. Select OK.
To select a noncontinuous set of objects:
1. In the tree list, click on an object, hold down the Ctrl key, and click on the individual objects you
want to select.
2. Select OK.
To clear any selection in the tree list:
Hold down the Ctrl key and click the selected object to clear its highlighting.
Managing the Select List
You can use the Database Navigator to view objects you've selected using the procedures explained in
Showing, Hiding, and Selecting Objects in the Database Navigator. The list of objects is called the Select
list. You can also add and remove objects from the Select list.
13
Learning the Basics
To view the select list:
From the pull-down menu, select Select List.
The selected objects appear in the text box to the right.
To add objects to a select list:
1. From the pull-down menu, select Select List.
2. From the tree list or main window, select the objects to be on the select list as explained in the
previous section.
3. Select Add.
4. Select Apply.
To remove objects from the select list:
1. From the pull-down menu, select Select List.
2. From the list that appears on the right, select the objects to be removed.
3. Select Remove.
4. Select Apply.
To clear all objects from the select list:
1. From the pull-down menu, select Select List.
2. Select Clear.
3. Select Apply.
Filtering Objects in the Database Navigator
You can filter the types and names of objects that you want displayed in the Database Navigator to
narrow the display to exactly what you want or to broaden the display using wildcards. For example, you
can narrow the display to only parts or broaden the display to include all objects that begin with a
particular character, such as an h.
To set the filter of the Database Navigator:
1. In the Filter text box, enter the name of the objects that you want to display. Type any wildcards
that you want to include.
2. From the pull-down menu, select the type of object or objects that you want to display in the
Database Navigator. To select from all the different object types in the modeling database, select
Browse.
3. Select OK.
Adams/Car

14
Sorting Objects in the Database Navigator
You can sort objects in the Database Navigator by their name or type, such as parts or geometry. You can
also select to not sort the object so the objects appear in the Database Navigator in the order they are
stored in the modeling database.
Note that sorting by name can be slow for objects with very long names. Setting no sorting is the fastest
way to see objects.
To sort objects in the Database Navigator:
At the bottom of the Database Navigator, from the Sort by pull-down menu, select how you'd
like the objects sorted.
Setting Highlighting in the Database Navigator
You can set up the Database Navigator so that whenever you select an object in the tree list, it also appears
selected in the main window and the reverse. Highlighting is off by default.
To toggle highlighting:
Select Highlighting.
Setting Appearance of Objects Through the Database
Navigator
Through the Database Navigator, you can set how individual, types of objects, and children of objects
appear in your template-based product.
You can set:
Visibility of the object and of its name on the screen.
Color, line style, line width and transparency of the object. For example, you can set the color of
the objects outline or its name.
Size of the screen icons that represent the object in your model. Note that these changes take
precedence over the size you specify globally for the modeling database.
State of the object during a simulation: active or inactive.
To set the appearance of objects:
1. Select an object from the Database Navigator tree list.
2. Use the options in the dialog box to set the appearance of the object. To inherit an attribute from
a parent of the object, select None from any of the pull-down menus.
15
Learning the Basics
3. To set the scope of the appearance changes, you can select either:
Object - Only apply to the selected object.
Siblings - Apply changes to all objects of the same type that are children of the parent of the
selected object.
All - Apply changes to objects matching the filter you set in the Filter text box.
4. Select Apply.
Renaming Objects Through the Database Navigator
You can use the Database Navigator to rename any object.
To rename an object:
1. From the Database Navigator pull-down menu, select Rename.
2. From the tree list, select the object to rename.
3. In the text box that appears to the right, type a new name for the object.
4. Select Apply.
Adding Comments Through the Database Navigator
You can use the Database Navigator to associate comments with any object in the modeling database.
To associate comments with an object:
1. From the Database Navigator pull-down menu, select Comments.
2. From the tree list or main window, select an object.
3. In the text box that appears to the right, type or modify the comments associated with the object.
4. Select Apply.
To save the comments in a file:
Select Save to File.
Tip: For transparency, the higher the value, the more transparent the object is, allowing
other objects to show through. The lower the value, the more opaque the object is,
covering other objects. However, setting the transparency of objects can have a
negative impact on graphical performance if you are using a graphics card without
hardware acceleration for OpenGL. Instead of setting an objects transparency,
consider setting the objects render mode to wireframe.
Adams/Car

16
Viewing Model Topology Through the Database Navigator
The model topology map displays information about the parts in your model and determines what
constraints are owned by the model and what parts the constraints connect. The information appears in
the window on the right of the Database Navigator.
You can view the part connection information in the following ways:
By part - Lists each part in the model, along with the parts it is connected to and what
constraints or forces are affecting it.
By connections - Displays each constraint and force with the parts they connect and act on. Also
displays any unconnected parts.
Graphically - Displays a representation of the selected part and shows its connections to other
parts.
To display model topology of parts and connections:
From the Database Navigator pull-down menu, select Topology by Parts or Topology by
Constraints.
To graphically view the topology of parts:
1. From the Database Navigator pull-down menu, select Graphical Topology.
2. From the tree list or main window, select an object.
Viewing the Associativity of Objects
You can use the Database Navigator to display the objects that a selected object uses. For example, you
can select a joint in the tree list to show the I and J markers that the joint uses. You can also select to view
the objects that use the selected object.
To view the associativity of objects:
1. From the Database Navigator pull-down menu, select Associativity.
2. Set the associativity:
To show the objects that the selected object uses, select Uses
To show the objects that use the selected object, select Is Used By.
3. From the tree list or main window, select an object.
The objects associated with the selected object appear in the text box to the right.
To set up automatic navigation of the objects:
Select Auto Navigate.
17
Learning the Basics
To save the current associativity information to a file:
Select Save to File.
Viewing Object Information Through Database Navigator
You can use the Database Navigator just as you would use the Information window to display information
about an object.
To display object information:
1. From the Database Navigator pull-down menu, select Information.
2. From the tree list or main window, select an object.
The information about the object appears in the window to the right.
To save the information to a file:
Select Save to File.
To return to the information about a previous object:
Select .
Viewing Model Topology Map Through Information Window
The model topology map displays information about the parts in your model and determines what
constraints are owned by the model and what parts the constraints connect. The information appears in
the Information window.
You can view the part connection information in two ways:
By part - Lists each part in the model, along with the parts it is connected to and what
constraints or forces are affecting it.
By connections - Displays each constraint and force with the parts they connect and act on. Also
displays any unconnected parts.
To display model topology by parts, do one of the following:
From the Tools menu, select Model Topology Map.
In your template-based product, on the status toolbar, from the Information tool stack, select
the Model Topology by Parts tool .
Adams/Car

18
To display model topology by connections:
On the status toolbar, from the Information tool stack, select the Model Topology by
Constraints tool .
19
Learning the Basics
Working with the Information Window
Your template-based product uses the Information window to display many different types of
information about your model, simulation, and so on. In addition to just viewing information about your
model, you can perform a variety of operations in the Information window. For example, you can display
additional information about the current object's parent or child, print the information, display
information about a different object in the database, and more.
Displaying Information
Displaying Object Information and Accessing the Information Window
Displaying Parent and Children Information
Displaying an Object's Modify Dialog Box
Managing Information
Clearing the Information Window
Saving Information in the Information Window
Displaying a Text File in the Information Window
Copying Text in the Information Window
Setting the Information Mode
Displaying Object Information and Accessing Information
Window
You can display information about each object in your modelling database, including parts, geometry,
motion, and markers. Learn about markers.
You can view the information about an object currently on the screen or any object in the database,
including the main window or dialog boxes.
When you display information about the objects in your modeling database, your template-based product
displays information specific to that type of object. For example, when you display information about a
rigid body in your model, your template-based product displays information about its material content,
inertial properties, initial conditions, orientation, velocity, and more. When you display information
about a motion, your template-based product displays information about the type of motion it is, its
function, and time derivative.
To display information about a modeling object displayed on the screen:
Right-click the object on the screen, and then select Info.
Adams/Car

20
Information about the object appears in the Information window.
To use the Database Navigator to display information about objects in the Information
window:
1. On the status toolbar, select the Info tool from the Information tool stack.
The Database Navigator appears.
2. Select the object about which you want to display information. Learn about selecting objects.
3. Select OK.
The information window appears.
To display object information once you've displayed the Information window, do one of
the following:
In the text box at the top of the Information window, enter the name of the object, and then select
Apply.
If the object name already appears in the Information window, place the text cursor in the name
of the object, and then select Apply.
Displaying Parent and Children Information
Each object in the database has an object that owns it, called its parent, and many objects own other
objects, called their children. The top-level objects in the database are models, plots, and interface
objects, called gui objects. These objects do not have parents. You can display information about the
parent or children of the object currently displayed in the Information window.
If an object has a parent, the type of parent it has appears in the Information window under the heading
Parent Type and the name of the parent is placed in front of the name of the object in the Object Name
heading. For example, for the part LINK_2, its parent type and name appear in the Information window,
as shown next:
To display an object's children:
In the Information window, select Children.
Tip: You may want to zoom in on the object on the screen to more easily place the cursor
over just that object.
21
Learning the Basics
To display an object's parent, do one of the following:
In the Information window, select Parent.
In the Information window, place the text cursor in the name of the parent and select Apply.
Displaying an Object's Modify Dialog Box from the
Information Window
When information about an object is displayed in the Information window, you can access that object's
modify dialog box so you can modify the object.
To access an object's modify dialog box from the Information window:
In the Information window, place the text cursor in the name of the object and select Modify.
Clearing the Information Window
Each time you request information in the Information window, your template-based product adds the
information to the bottom of the Information window without removing the current information. You can
remove all current information.
To clear the Information window:
In the Information window, select Clear.
Saving Information in the Information Window
You can save the contents of the Information window to a text file.
To save the contents of the information to a text file:
1. In the Information window, select Save to File.
The Select File dialog box appears.
2. Select the directory in which you want to place the file.
3. In the File Name text box, enter the file name.
4. Select Open.
Displaying a Text File in the Information Window
You can display any text file in the Information window. You will find this helpful if you want to display
an information file that you saved or you are creating a demonstration of your model using a command
file and you want to display information about a particular object or aspect of the demonstration.
Adams/Car

22
To display a text file when the Information window is already displayed:
1. In the Information window, select Read from File. dialog box appears.
2. Select the directory in which you want to place the file.
3. Highlight the file that you want to open in the list, or type the file name in the File Name text box.
4. Select Open.
To display a text file when the Information window is not displayed:
1. On the Tools menu, select Show File.
The Info Window Read dialog box appears.
2. In the File Name text box, you can either:
Enter the name of the file.
Browse for a file: right-click the File Name text box, and then select Browse to display the
File Selection dialog box.
3. Select OK.
The Information window appears with the text of the file as its content.
Copying Text in the Information Window
You can copy any text in the Information window for use in another window, dialog box, or application.
You cannot paste or delete any text in the window.
To copy text in the Information window:
1. Highlight the text that you want to copy.
2. Right-click the Information window and select Copy.
Setting the Information Mode
By default, the Information window displays only a part's parent and type. To display more information
about the part, you can turn on verbose mode. When you turn on verbose mode, the Information window
displays the children of the object, its geometry, whether or not comments are associated with it, and its
attributes, such as its color and visibility.
To turn on verbose mode:
Select the Verbose check box.
Using Wildcards
You can use wildcards to narrow any search, set the type of information displayed in a window, such as
the Database Navigator or the log file, or specify a name of an object in a dialog box.
23
Learning the Basics
This Character:
* (asterisk) Zero or more characters
? Any single character
[ab] Any one of the characters in the brackets
[^AB] Any character other than the characters following the caret symbol (^) in the
brackets
[a-c] Any one character in a range enclosed in brackets
{AB, bc} Any of the character strings in the braces
Adams/Car

24
Setting Preferences
Setting Screen and Printer Fonts
You can change the font your template-based product uses to display text in a view, such as the name of
a part or a note on the screen, or to print text to a printer. The fonts available for displaying text in a view
are those available with your operating system. The fonts available for printing text are a fixed set of 12
fonts. Note that your printer may not support all of these printer fonts.
To select a screen or printer font:
1. On the Settings menu, select Fonts.
The Fonts dialog box appears.
2. In the Screen Font text box, enter the name of the font you want your template-based product to
use to display text in a view. To browse for a font, right-click the text box, select Browse, and
then select a font.
3. Set Postscript Font to the font you want to use to print text.
4. Select OK.
Specifying Working Directory
By default, your template-based product searches for and saves all files in the directory from which you
ran your template-based product. You can change the working directory.
To change the working directory for the current session:
1. On the File menu, select Select Directory.
Select the directory in which your template-based product should save files.
2. Select OK.
You can also set the working directory when you start your template-based product.
To change the working directory for all sessions:
On UNIX:
1. From the Adams Toolbar, right-click your template-based product's tool, and then select Change
Settings.
2. In the Registry Editor, select WorkingDirectory, and then change the working directory.
On Windows:
1. On the Desktop, right-click your template-based product's shortcut, and select Properties.
2. In the Start In text box, enter the working directory.
For more information, see your Windows online help.
25
Learning the Basics
Setting Units of Measurement
You can set the units that your template-based product uses in modeling, importing, and exporting files.
You can select individual units or select a set group of units.
To set the unit of measurement:
1. On the Settings menu, select Units.
The Units Settings dialog box appears.
2. Select the unit of measurement for each of the dimensions using the table below for assistance.
3. Select OK.
To Select: Do the following:
Unit for a specific
dimensions
Select the individual unit from the pull-down menu associated with the dimension.
Predefined unit
system
Select one of the following buttons. In all the unit systems, time is in seconds and
angle is in degrees. When you select a predefined unit system, the units selected
appear in the upper portion of the dialog box.
MMKS - Sets length to millimeters, mass to kilograms, and force to
Newtons.
MKS - Sets length to meters, mass to kilograms, and force to Newtons.
CGS - Sets length to centimeters, mass to grams, and force to Dyne.
IPS - Sets length to inches, mass to pound mass, and force to PoundForce.
Adams/Car

26
Setting Screen Icon Display
When you first start your template-based product, it displays screen icons. As you add objects to your
model, however, these icons can clutter your view of the model. To clear the display of a window, you
can turn off the icons. You can select to turn off:
All icons
Only icons of certain types of objects, for example, all joints
Only icons for individual objects, such as FORCE_1
In addition, you can set the size of the icons either in current units or as a factor of their current size.
Learn more about how to set the display of screen icons by database and object type.
Setting Screen Icon Display by Database
Setting Screen Icon Display by Object Type
For information on quickly toggling the display of all screen icons, see Displaying View Accessories. For
information on setting the display of icons for individual objects, see Setting Object Appearance through
Edit ->Appearance Command.
Setting Screen Icon Display by Database
You can set up how you want screen icons to be displayed for an entire modeling database. By default,
all models and objects in the modeling database inherit the screen icon settings that you specify for the
database. You can, however, override the inheritance for different types of objects as explained in Setting
Screen Icon Display by Object Type, or for individual objects as explained in Setting Object Appearance.
To set up the screen icon display for the entire database:
1. On the Settings menu, select Icons.
The Icon Settings dialog box appears.
2. Set New Value to one of the following to select whether or not you want to turn on screen icons:
No Change - Select No Change to not change the current settings.
On - Turns on all icons regardless of how you set the icon display for individual objects or
types of objects.
Off - Turns off all icons regardless of how you set the icon display for individual objects or
types of objects.
3. In the New Size text box, enter the size you want for the screen icons. Note that any changes you
make to the size of icons for individual objects or types of objects take precedence over this size
setting.
4. To save the settings for each new database in your template-based product settings file
(*BS.cmd), select Save new size as default.
5. Select OK.
27
Learning the Basics
To reset the screen icon display to the previous values:
On the Icon Settings dialog box, select Reset.
Setting Screen Icon Display by Object Type
You can set up how you want creen icons displayed for a particular type of object, such as all parts or
joints. By default, all objects inherit the screen icon display options that you specify for the modeling
database. You can set screen icon options for the following types of objects:
Parts
J oints
Forces
Motion
Markers (Note that markers belong to parts and, therefore, by default, inherit screen icon display
options for parts.)
Points
Data elements
Equations (system elements)
To set screen icon display options for objects of a particular type:
1. On the Settings menu, select Icons.
The Icon Settings dialog box appears.
2. Set Specify Attributes for to the type of object for which you want to set the screen icon options.
3. From the Visibility area of the Icon Settings dialog box, select whether or not you want to turn
on screen icons for the selected object type. You can select:
On - Turns on the display of screen icons for the selected type of object.
Off - Turns off the display of screen icons for the selected type of object. Remember,
however, that turning on the display of screen icons for the entire database overrides this
setting.
Inherit - Lets the object type simply inherit the display settings from its parent. For example,
a coordinate system marker inherits settings from its parent part.
No Change - Does not change the current settings. Lets you make changes to other display
options without affecting the visibility of the icons.
4. Enter the size you want for the icons or select the amount by which you want to scale the icons.
The scale factor is relative to the current size set. A scale factor of 1 keeps the icons the same size.
A scale factor less than 1.0 reduces the size of the icons and a scale factor greater than 1.0
increases the size of the icons. Note that these changes take precedence over the size you specify
globally for the modeling database.
5. Enter the color you want to use for the icons.
Adams/Car

28
6. To browse for or create a color, right-click the Color text box, and then select Browse or Create.
7. Set Name Visibility Option to whether or not you want the names of objects of the selected type
displayed in the view. Refer to Step 3 for an explanation of the choices.
8. Select OK.
29
Learning the Basics
Setting Display Options
Learn about:
Setting Part Display
Displaying View Accessories
Setting Rendering Mode
Displaying the Status Toolbar
Setting Part Display
You can set the main window so it displays a particular part in the current model. You will find this
helpful when you want to compare or work with different parts at the same time.
To display a single part in the main window:
1. Click the main window.
2. From the View menu, select Part Only.
The Database Navigator appears listing the parts in the current model.
3. Select the part you want to display.
4. Select OK.
The selected part appears in the currently active view.
Displaying View Accessories
When you first start your template-based product, it displays several accessories to help you manage the
view of your model:
Working grid
Screen icons
View triad
View title
To use a dialog box to toggle on and off the display of view accessories:
1. Click the main window.
2. On the View menu, select View Accessories, and then select the accessories that you want to turn
on or off from the View Accessories dialog box that appears.
3. Enter the title you want displayed in the main window, and then press Enter.
4. On the Window menu in the View Accessories dialog box, select Exit.
Adams/Car

30
Setting Rendering Mode
Your template-based product provides six rendering modes in which you can display a model in the main
window.
To select a rendering mode:
Click the main window.
On the View menu, point to Render Mode, and then select a rendering mode.
To toggle the display between wireframe and smooth shaded mode:
Type an uppercase S in the main window.
Displaying the Status Toolbar
You can turn on and off the display of the status toolbar. You can also set where the status toolbar
appearseither at the top of the main window under the menu bar or at the bottom of the window. By
default, the status toolbar appears at the bottom of the window.
To turn the status toolbar on and off:
1. On the View menu, select Toolbox and Toolbars.
2. Select Status Toolbar and its placement in the main window. Your changes take place
immediately.
3. Close the dialog box.
Refreshing the Model Display
You can redraw the main window to return the model to its initial configuration and display all geometry
in the model . This is particularly useful if you selected to view only certain parts and now want to view
the entire model.
To refresh the model display:
On the View menu, select Refresh.
Tip: Type a lowercase g while the cursor is in the main window to toggle on and
off the display of the working grid.
Type a lowercase v to toggle on and off the display of screen icons.
31
Learning the Basics
Setting View Background Colors
By default, your template-based product uses a blue background to display the main window. It also
provides a set of colors in which you can display the background. You can set the view to any color by
setting the red, green, and blue colors directly.
Selecting a Preset Background Color
You access the palette of background colors using View Background Color command on theSettings
menu.
To select from the entire palette of background colors:
1. From the Settings menu, select View Background Colors.
2. Press F1 and then follow the instructions in the dialog box help for Edit Background Color.
3. Select OK.
Creating a Background Color
You can create a background color by setting its red, green, and blue light percentages and change the
background of the main window to this new color. You cannot add the color to the preset palette of colors
or change the colors in the preset palette.
To create a color:
1. From the Settings menu, select View Background Colors.
2. Press F1 and then follow the instructions in the dialog box help for Edit Background Color.
3. Select OK.
To reset a color to the original background color:
Select the R tool in the Edit Background Color dialog box.
Adams/Car

32
Using Template-Based Product Tools
Learn about using the following template-based product tools:
Coordinate Window
Command Navigator
Command Window
Message Window
Information Window
Database Navigator
Working with the Coordinate Window
You can use the coordiante window to help you identify the coordinates of any location in the main
window. You can also measure the distance between objects based on their coordinate locations.
The sections below explain how to work with the coordinate window:
Displaying the Coordinate Window
To toggle on and off the display of the coordinate window, do one of the following:
On the View menu, select Coordinate Window.
The coordinate window appears in the lower right corner of the screen. You can move and size it
as you do any window in your operating system.
Measuring the Distance Between Points
In delta mode, you can use your mouse and the coordinate window to find the distance between two
points.
To measure the distance between two points:
1. Move the cursor to the point in the main window where you want to begin, and press and hold
down the mouse button.
2. Drag the cursor to the next point. As you drag the cursor, your template-based product displays
the distance the cursor moves in the coordinate window.
3. To end delta mode, release the mouse button.
Tip: Press the F4 key to toggle the display of the coordinate window.
33
Learning the Basics
Command Navigator
Enables you to enter Adams/View commands without having to know the entire syntax of the
commands.
The Command Navigator displays a list of all Adams/View command keyword. A plus (+) in front of a
keyword indicates that the command has more keywords below it but they are hidden. A minus (-)
indicates that all keywords below the keyword are displayed. No indicator in front of a keyword indicates
that there are no more keywords below the object. When you select an object with no indicator, a dialog
box appears in which you enter parameters for executing the command.
Using the Command Window
The command window provides a text-based way to enter commands. It assumes that you understand the
command language underlying your template-based product's interface. The command window contains
both a command entry area for entering commands and a command information area for displaying
informational and error messages:
Message Window
Provides you with messages on the status of Adams/View and displays helpful information while you
are using Adams.
Adams/View displays messages about the execution of a command in the message window. By default,
the message window only displays messages about commands you execute from the user interface. You
can also set it to display messages about commands that you execute from the command window,
command Navigator, and command files.
Adams/Car

34
Information Window
Adams/View uses the Information window to display many different types of information about your
model, simulation, or motion data. In addition to just viewing information about your model, you can
perform a variety of operations in the Information window.
The information includes:
Topology on the different objects in your model
Object information, such as information about a part or a view
Model verification results
Measurements from one coordinate system marker to another
Result set component information
View attributes
Results from a system command you run using the Tools ->System Command
Database Navigator
Displays the types of objects appropriate for the command you are executing and shows objects in their
database hierarchy. You can browse for objects or set it to rename objects, view information about the
objects and view dependencies. You can also set a filter for the types of objects displayed in the Database
Navigator.
The Option: Does the following
Apply Executes the command but leaves the dialog box open so you can execute the
command again.
Parent Displays an object's parent.
Children Displays an object's children.
Modify Select to display the modify dialog box for the object displayed in the text box
at the top of the Information window.
Verbose Select if you want to display more information about the object such as
children of the object, its geometry, whether or not commands are associated
with it, and its attributes like color and visibility.
Clear Removes all current information in the window.
Read from File Allows you to read information from a saved file.
Save to File Allows you to save the information.
35
Learning the Basics
For the option: Do the following:
Pull-Down Menu Use the pull-down menu to choose a mode option. Select one:
Browse (the default; the options on this page describe Browse)
Display Attribute
Rename
Comments
Information
Topology by Parts
Topology by Connections
Graphical Topology
Associativity
Select List
Filter Select if you want to filter the types and names that you want displayed in the
Database Navigator. Then, enter the name of the objects you want to display in
the text box and use the pull-down menu to the right to select the type of
object(s) you want to display. You can also use the pull-down menu below the
Filter text box to only display those objects that are active or inactive.
Sort by Use the pull-down menu to choose how you want the objects sorted. You can
also select to not sort the objects so they appear in the order they are stored in
the modeling database.
Highlight Off by default. Select if you want an object to appear selected in the main
window and the reverse.
Use the plus sign (+) or the minus (-) (--) signs to display or hide all of the
children hidden/shown in the tree view.
Adams/Car

36
Files and Commands
Executing a System Command
You can execute an operating system command from within your template-based product so that you do
not have to leave your template-based product window.
You can select to display the results of the command in the Information window or the log file. If you select
to display the results of the command in the Information window, you can:
Clear the window and only view the results of the command.
Save the results of the command to a file.
If you select to display the results in the log file, you can keep the command results with the other
commands that you execute so that you can cut and paste the information together into a new file.
To execute a system command within your template-based product:
1. On the Tools menu, select System Command.
The Execute Systems Command dialog box appears.
2. In the Command Text text box, enter the operating system command that you want to execute.
See your operating system documentation for more information.
3. Select whether or not you want the output of the command to be displayed in the Information
window or the log file.
4. Select OK.
Using the Log File
Your template-based product generates a log file during each session, called *.log.
While you are running Adams, you can display the current contents of the log file. In addition, you can
display the log file in a text editor. The following sections explain how to display the log file in your
template-based product and set the type of messages displayed.
Viewing the Log File in Your Template-Based Product
Updating the Log File
Setting the Log File Information
Note: You can change the name of the log file through the initialization file .mdi_init.
37
Learning the Basics
Viewing the Log File in Your Template-Based Product
You can use the Log File command on the Tools menu to display the log file. You can keep the dialog
box open as you execute commands so you can keep track of the commands and messages that you
receive.
To help you use the log file as a command file, your template-based product marks any messages as
comments so that it does not try to execute them when you import the command file. It indicates a
comment by placing an exclamation mark (!) in front of the message. Your template-based product also
displays as comments any commands that it executes when it starts up. To help you distinguish the
startup commands from messages, your template-based product follows the exclamation mark (!) with
the command prompt (>>).
To display the log file:
1. On the Tools menu, select Log File.
The Display Log File dialog box appears.
2. Select Info to display all messages written to the log file. The default is to display only warnings,
errors, and fatal messages.
Updating the Log File
Your template-based product does not update the Display Log File dialog box each time you execute a
command. Therefore, if you want to see the commands that you executed since you opened the dialog
box, you must update the log file.
To update the contents of the log file:
From the Display Log File dialog box, select Update.
Setting the Log File Information
When you display the log file, your template-based product displays only warnings, errors, and fatal
messages that you have received. You can change the type of messages that your template-based product
displays as well as display the commands that your template-based product has executed. You can also
display only lines that contain certain information, such as display only commands that create links, and
remove any duplicate lines that occur if you encounter the same error again.
To set the type of information displayed in the Display Log File dialog box:
1. Select the Show only lines of type check box and then select one of the following:
Info - Displays all commands that you have executed in your template-based product.
Warning - Displays non-fatal messages that warn you of possible problems with commands
you entered.
Error - Displays fatal messages that your template-based product did not understand and,
therefore, did not successfully process.
Fatal - Displays messages that indicated that your model would not simulate.
Adams/Car

38
2. If desired, select Show only lines containing and enter the text that the line must contain in the
text box. You can also enter wildcards.
3. Select Apply.
To remove duplicate lines:
From the Display Log File dialog box, select Suppress duplicate lines.
Loading and Unloading Plugins
MSC has many add-on modules or plugins to template-based products, which expand their functionality.
The plugins include Adams/Driveline, Adams/Car Ride, Adams/Vibration, Adams/Controls, and
Adams/Durability. You run these products from within your template-based product. You can set your
template-based product to load them automatically when you start up. You can also unload them while
in your template-based product's current session. To run a plugin, you must have a license to it.
To see if there is a license available to run a plugin:
1. From the Tools menu, select Plugin Manager.
The Plugin Manager appears.
2. At the top of the Plugin Manager, select a plugin.
3. At the bottom of the Plugin Manager, in the text box Licenses, view the number of licenses
available.
To load an available plugin:
1. From the Tools menu, select Plugin Manager.
2. In the Load column, next to the plugins you want to load, select Yes.
3. Select OK.
The commands or menus for the plugins are added to your template-based product.
To unload a plugin:
1. From the Tools menu, select Plugin Manager.
2. In the Load column, next to the plugin you want to unload, clear the selection of Yes.
3. Select OK.
Your template-based product removes any plugin menus or commands.
To set up a plugin so it loads automatically when you start your template-based
product:
1. From the Tools menu, select Plugin Manager.
2. In the Load at Startup column, next to the plugin you want to load automatically, select Yes.
3. Select OK.
39
Learning the Basics
Displaying Product Information
When using any Adams product, you can display the following information:
Software version number and the date it was built
Directory where Adams is installed
Copyright statement
To display information about your product:
1. From the Help menu, select About <product name>.
2. View the information, and then select OK.
Tip: From the status toolbar, select .
Adams/Car

40
Building Models
Adams/Car

40
Subsystems
You only use subsystems in the Standard Interface. You can either create new subsystems or read in
existing ones. When you create a new subsystem, you must reference an existing template. When you use
an existing subsystem, the template associated with it is automatically read in.
Subsystems are based on templates and allow standard users to change the parametric data of the template
as well as the definition of some of the components. For example, you can change the location of
hardpoints and modify parameter variables.
The template-based products organize the basic components that make up a full assembly or subassembly
into subsystems. For example, subsystems can include suspensions, wheels, drivelines, chassis, and so
on.
Subsystems contain descriptions of the component that they model. These descriptions consist of:
Design data, such as wheel radii, toe angles, and locations of various points in the subsystems,
named hardpoints, mass properties of parts, and so on.
References to property files that contain design data for bushings, bumpstops, dampers, engines,
springs, and tires. A bushing property file, for example, contains a description of the bushing's
stiffness and damping characteristics.
Reference to a template that defines the subsystem's construction, including the kinds of parts
and how the parts interact and attach to one another. For example, a template that defines a rack
and pinion steering system defines a rack part, a pinion part, and a housing part. It also defines
that the rack slides in the housing, that the pinion rotates in the housing, and that the rack and
pinion are geared together. Since the construction of all rack and pinion steering systems is
similar, all subsystems describing a rack and pinion steering system can reference the same
template.
Learn more about subsystems:
Opening Subsystems
Getting Subsystem Information
Creating Subsystems
Updating Subsystems
Synchronizing Subsystems
Adding Subsystems
Replacing Subsystems
Removing Subsystems
Setting Subsystem Activity
Saving Subsystems
Closing Subsystems
Subsystem Modes
41
Building Models
Minor Roles
Publishing Subsystems
Opening Subsystems
When you open a subsystem that specifies a flexible representation of a rigid part, your template-based
product replaces the equivalent rigid body from the template with the flexible body. Learn about flexible
bodies.
To open an existing subsystem:
1. In Standard Interface, from the File menu, point to Open and then select Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Open Subsystem.
3. Select OK.
Notice that once the subsystem is open, the Edit and Adjust menus become active. We
recommend that you familiarize yourself with each menu item.
Getting Subsystem Information
You can get detailed information about subsystems in the current session.
To get information about a subsystem:
1. In the Standard Interface, from the File menu, point to Info, and then select Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Subsystem Info.
3. Select OK.
Creating Subsystems
You create subsystems by selecting a template that defines the topology and default data for your
subsystem. Using the Standard Interface, you can modify the default data to match your design. We
supply several templates with each product. For example, for Adams/Car users, we supply templates that
represent MacPherson strut and double-wishbone suspension subsystems. Using the Template Builder
you can create templates for your company-specific topologies.
When creating a new subsystem, you can reference the property files that the template references, or
reference other property files held either in a different database or with a different file name, as indicated
by the dashed lines in the example model architecture. A collection of subsystems merged together forms
an assembly.
To create a subsystem:
1. In the Standard Interface, from the File menu, point to New, and then select Subsystem.
Adams/Car

42
2. Press F1 and then follow the instructions in the dialog box help for New Subsystem.
3. Select OK.
Updating Subsystems
Resets the values of a subsystem to those stored in a subsystem file. You can update a subsystem using
any subsystem file that is based on the same template as the subsystem in session.
When you update a subsystem, your template-based product does not reload the template.
To update a subsystem:
1. In the Standard Interface, from the File menu, point to Manage Subsystems, and then select
Update.
2. Press F1 and then follow the instructions in the dialog box help for Update Subsystem.
3. Select OK.
Synchronizing Subsystems
When you synchronize a subsystem, you apply the values of the selected master subsystem to one or
more subsystem instances using the automated subsystem update feature. You can synchronize the
subsystems in session that are based on the same subsystem file. The subsystem mode flags (kinematic
or compliant) of the target subsystems will be retained.
For example, you may have several instances of one subsystem open in your session under several
assemblies. If you modify one subsystem and want to propagate those changes to every instance of the
subsystem, you can use the synchronize subsystems functionality.
To synchronize subsystems:
1. In the Standard Interface, from the File menu, point to Manage Subsystems, and then select
Synchronize.
2. Press F1 and then follow the instructions in the dialog box help for Synchronize Subsystem.
3. Select OK.
Adding Subsystems
When you add a subsystem into an assembly, your template-based product disassembles the assembled
model, opens the subsystem, and then reassembles the model to include the new subsystem.
Note: The subsystems is not renamed during the update.
43
Building Models
To add a subsystem:
1. From the File menu, point to Manage Assemblies, and then select Add Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Add Subsystem.
3. Select OK.
Your template-based product does the following:
Disassembles the assembly, which includes 'unassigning' communicators.
Opens the new subsystem under the existing assembly.
Reassembles the assembly, which includes re-assigning the communicators.
Replacing Subsystems
When you replace a subsystem in an assembly with a new subsystem, your template-based product
disassembles the assembled model, deletes the subsystem, opens the new subsystem, and then
reassembles the model to include the new subsystem.
To replace a subsystem:
1. From theFile menu, point to Manage Assemblies, and then select Replace Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Replace Subsystem.
Select OK.
Your template-based product does the following:
Disassembles the assembly, which includes 'unassigning' communicators.
Deletes the subsystem from the existing assembly.
Opens the new subsystem underneath the existing assembly.
Reassembles the assembly, which includes re-assigning the communicators.
Removing Subsystems
When you remove a subsystem from the assembly to which it belongs, your template-based product
disassembles the assembled model, deletes the subsystem, and then reassembles the model.
To remove a subsystem:
1. From theFile menu, point to Manage Assemblies, and then select Remove Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Remove Subsystem.
3. Select OK.
Your template-based product does the following:
Disassembles the assembly, which includes 'unassigning' communicators.
Deletes the subsystem from the assembly.
Adams/Car

44
Reassembles the assembly, which includes re-assigning the communicators.
Toggling Subsystem Activity
Toggles the activity status of an existing subsystem. Your template-based product disassembles the
assembled model, sets the subsystem activity accordingly, and then reassembles the model to take into
account the subsystems activity status.
When you set the subsystem activity status to inactive, your template-based product ignores the
subsystem during model assembly, and will not write it to the Adams/Solver files.
Note that compared to the Remove Subsystem functionality, which deletes the subsystem, the Toggle
Subsystem Activity functionality only de-activates the subsystem and all objects in it.
To toggle subsystem activity:
1. From the File menu, point to Manage Assemblies, and then select Toggle Subsystem Activity.
2. Press F1 and then follow the instructions in the dialog box help for Toggle Subsystem Activity.
3. Select OK.
If activating the subsystem, your template-based product does the following:
Disassembles the assembly, which includes 'unassigning' communicators.
Activates the subsystem, which means that it will now be considered a valid part of the
assembly.
Reassembles the assembly (with the activated subsystem now taking part), which includes re-
assigning the communicators.
If deactivating the subsystem, your template-based product does the following:
Disassembles the assembly, which includes 'unassigning' communicators.
Deactivates the subsystem, which means that it is not actually removed from the assembly, but
simply ignored.
Reassembles the assembly (with the deactivated subsystem not considered), which includes
re-assigning the communicators.
Saving Subsystems
You save subsystems in ASCII format, and you can publish subsystems to databases so other users can
share them. We support two formats: TeimOrbit and XML.
If your subsystem contains a flexible part, your template-based product saves information about the part,
as well as the marker-node association, in the PART_ASSEMBLY block of the subsystem file. Your
template-based product writes one block for a single flexible part or two for paired parts, of which one is
flexible.
45
Building Models
To save a subsystem:
While viewing a subsystem, from the File menu, do one of the following:
Select Save (or use the keyboard shortcut, Ctrl + s) - Your template-based product saves the
TeimOrbit version of the subsystem to the default writable database and prompts you if a
subsystem already exists. For save options, select Save As.
Point to Save As, and then select Subsystem - Press F1 and then follow the instructions in the
dialog box help for Save Subsystem. Select OK.
To save a subsystem that is part of an assembly:
1. View the subsystem you want to save:
From the View menu, select Subsystem.
Set Subsystem to the subsystem you want to save.
Select OK.
2. Do one of the following:
Select Save (or use the keyboard shortcut, Ctrl + s) - Your template-based product saves the
TeimOrbit version of the subsystem to the default writable database and prompts you if a
subsystem already exists. For save options, select Save As.
Point to Save As, and then select Subsystem - Press F1 and then follow the instructions in the
dialog box help for Save Subsystem. Select OK.
Closing Subsystems
You can close a subsystem without first saving it to a database.
To close a subsystem:
1. In the Standard Interface, from the File menu, point to Close, and then select Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Close Subsystem.
3. Select OK.
Subsystem Modes
A subsystem exists in one of two modes - kinematic or compliant. When you toggle a subsystem between
these two modes, certain elements such as joints and bushings may be enabled or disabled. When you
create a joint, you define it to be active always or only in kinematic mode. Conversely, when you create
a bushing, you define it to never be inactive or be inactive only in the kinematic mode. This allows you
to use the same subsystem for both dynamic and kinematic analyses.
Adams/Car

46
Minor Roles
You assign a minor role, or function, to every subsystem. The minor role of a subsystem is stored in a
variable as a string. This string will also be written to the subsystem file. You select a minor role to
identify how your product should use the subsystem when creating an assembly of subsystems for
analysis.
A minor role defines the subsystem's location.
Adams/Car - A minor role can be front or rear. The following are the minor roles for
Adams/Car: any, front, rear, and trailer.
If you create a new subsystem with the minor role front based on a steering template, during
assembly Adams/Car connects your front steering subsystem to a front suspension subsystem,
but not a rear suspension subsystem.
If you create a new subsystem with the minor role any, during assembly Adams/Car connects
your new subsystem to any other active subsystem having matching communicators.
Publishing Subsystems
When you publish a subsystem, you copy the subsystem file and all its associated property files to the
target database, which is the database where your template-based product saves all files. You can also
select to publish the subsystem's template file. As you publish the subsystem, you can choose to write
over existing files or create backups of the files.
You can also select to update the in-session subsystem data to point to the target database or to have the
subsystem retain the existing references.
The subsystem you are publishing must be currently opened in the standard interface, and the target
database must be writable. Learn about setting the writable database.
You can also publish an entire assembly. Learn about publishing an assembly.
To publish a subsystem:
1. From the Tools menu, point to Database Management, and then select Publish Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Publish an Open Subsystem.
3. Select OK.
47
Building Models
Assemblies
Assemblies represent a collection of subsystems, along with a test rig, which when assembled form a
system that you can analyze using Adams/Solver.
In Adams/Car for example, a steering subsystem and a front-suspension subsystem, plus a suspension
test rig, form the basis of a suspension assembly that you can analyze for kinematic behavior.
In the Standard Interface, you can create, open, save, and analyze assemblies. You can also publish
assemblies to databases so other users can share them. Learn about publishing assemblies.
Learn more about assemblies:
Opening Assemblies
Getting Assembly Information
Creating Generic Assemblies
Updating Assemblies
Saving Assemblies
Closing Assemblies
Publishing Assemblies
Opening Assemblies
To open an existing assembly:
1. In Standard Interface, from the File menu, point to Open and then select Assembly.
2. Press F1 and then follow the instructions in the dialog box help for Open Assembly.
3. Select OK.
Notice that once the subsystem is open, the Edit, Adjust, and Simulate menus become active. We
recommend that you familiarize yourself with each menu item.
Getting Assembly Information
You can get detailed information about assemblies in the current session.
To get information about an assembly:
1. In the Standard Interface, from the File menu, point to Info, and then select Assembly.
2. Press F1 and then follow the instructions in the dialog box help for Assembly Info.
3. Select OK.
Adams/Car

48
Creating Generic Assemblies
You can create a generic assembly from specified subsystems.
To create a generic assembly:
1. From the Tools menu, point to Dialog Box, point to Display, and then select
dbox_fil_ass_new_gen.
2. Press F1 and then follow the instructions in the dialog box help for New Generic Assembly.
3. Select OK.
Updating Assemblies
You can re-read an assembly file, in case you modified the file by an alternative process. For example, if
you edit in a text editor an assembly file stored in the shared database, you can reflect this change in your
template-based product by using the update assembly functionality.
To update an assembly:
1. In the Standard Interface, from the File menu, point to Manage Assemblies, and then select
Update.
2. Press F1 and then follow the instructions in the dialog box help for Update Assembly.
3. Select OK.
Saving Assemblies
You save assemblies in ASCII or binary format:
ASCII Assemblies - An ASCII assembly file references subsystems, but does not contain
subsystem data. If you want your assembly to be updated with the current template/subsystem
files, you should save your assemblies in ASCII format. When you open an ASCII-format
assembly, your template-based product opens each individual subsystem, which in turn accesses
the current version of each corresponding template.
Binary Assemblies - A binary assembly is a static snapshot of what's currently in your session.
That is, when you reopen a binary assembly, you will return to the exact state at which you left.
Adams/Car ignores any subsequent modifications made to templates and/or subsystems, which
were originally used to create the assembly, when you open the binary assembly. Therefore, if
you want your assembly to be updated with the current template/subsystem files, you should
save your assemblies in ASCII format.
Binary assemblies can be very useful, however, if you are working on a project where the
templates will not change, and a static snapshot of the assembly is sufficient.
Note that saving an assembly as a binary will not save the plots, nor the setting for simulation
(hold_solver_license). It will, however, save the analyses associated with the assembly, and you
could re-create plots using a plot configuration file. Learn about plot configuration files.
49
Building Models
To save an assembly:
1. From the File menu, select Save or Save As.
2. If you selected:
Save - Your template-based product saves the ASCII version of the assembly to the default
writable database. Your template-based product prompts you if it detects subsystem changes.
It also prompts you if the assembly already exists in the database. For save options, select
Save As.
Save As - Press F1 and then follow the instructions in the dialog box help for Save Assembly.
Select OK.
Closing Assemblies
To close an assembly:
1. In the Standard Interface, from the File menu, point to Close, and then select Assembly.
2. Press F1 and then follow the instructions in the dialog box help for Close Assembly.
3. Select OK.
Publishing Assemblies
When you publish an assembly, you copy each subsystem file included in the assembly definition,
including the associated property files for each subsystem, to the target database, which is the database
where your template-based product saves all files. You can also select to publish each subsystem's
template file. As you publish the assembly, you can select to write over existing files or create backups
of the files.
You can also select to update the in-session assembly data to point to the target database or to have the
assembly retain the existing references.
The assembly you are publishing must be currently opened in the standard interface, and the target
database must be writable. Learn about setting the writable database.
You can choose to publish only a subsystem, not an entire assembly. Learn about publishing a subsystem.
To publish an assembly:
1. From the Tools menu, point to Database Management, and then select Publish Assembly.
2. Press F1 and then follow the instructions in the dialog box help for Publish an Open Assembly.
3. Select OK.
Adams/Car

50
Property Files
Property files are ASCII-based files that contain data for modeling components, such as valve spring,
cams, and bushings. Because property files are flat text files, you can use any text editor to create or
modify them.
You use property files to:
Apply the same characteristics or parameters to many components within a template or
subsystem. In Adams/Car for example, a suspension might contain many bushings with the same
properties. In this case, all the bushings could reference the same property file.
Share a component between different templates and subsystems.
You can reference property files in different subsystems and templates, as shown in the example model
architecture.
All property file types are specified in the configuration file (acar.cfg). When you edit property files, you
can save them either with the existing file name or with a new file name. Learn about managing property
files through configuration files.
Property files are grouped in classes and stored in databases. Every class (such as bushings and dampers)
is filed in the corresponding database table (in this case, bushings.tbl and dampers.tbl).
A subset of property files define force-displacement or force-velocity characteristics for springs,
dampers, bumpstops, reboundstops, and bushings. For those components, you use the Curve Manager or
Property File Editor to create, edit, and view property files. You can access the Curve Manager from the
Tools menu. From within dialog boxes, you can edit property files using the Curve Manager/Property
File Editor tool and view property files using the View File tool .
51
Building Models
Templates
Templates are parametric models, built by expert users within the Template Builder. Templates define
the default geometric data and topology of models, such as a double-wishbone suspension, an engine
cranktrain, or an aircraft landing gear. The components within a template are parametrically defined such
that you can use a single template within numerous subsystems.
Templates are intended to be a generic representation of a mechanical system, such that a template that
is common to a number of different vehicles can be reused in each of those vehicles. For example,
assume that you have two cars, a small car and a large car and that each of the two cars have a double-
wishbone front suspension. You could use a double-wishbone template in each of the two vehicles. The
only difference is that the large car requires stiffer springs, larger A arms, different dampers, and so on.
The basic topology is the same: it is the components/properties that are changed. It is the subsystem file
that references the topology of the template but changes the characteristics of the suspension by
referencing different springs, parts, dampers, and so on.
Templates provide a quick way to experiment with different subsystems and still retain the basic design
components that are required.
A template in its most fundamental form cannot be used in the Standard Interface without first being
referenced by a subsystem file.
You can modify the data of a template by changing the values of design parameters. Hardpoints,
parameter variables, and property files are the design parameters of templates, where:
Hardpoints define locations for geometry, attachments, and construction frames.
Parameter variables contain strings, integers, and real values that you can modify in the Standard
Interface and store in the subsystem file.
Property files are referenced by some components.
Templates contain communicators to enable the exchange of information with other templates.
Learn more about templates:
Opening Templates
Creating Templates
Saving Templates
Closing Templates
Major Roles
Location of Templates
Opening Templates
When using the Template Builder for the first time, we recommend that you first open some of the
example templates we provide and familiarize yourself with them.
Adams/Car

52
To open an existing template:
1. From the File menu, select Open.
2. Press F1 and then follow the instructions in the dialog box help for Open Template.
3. Select OK.
Creating Templates
To ensure that an analysis will work with your new template, when you create a template you must make
sure that the template is compatible with other templates and with the test rigs. The template must contain
the proper output communicators.
To create a template:
1. From the File menu, select New.
2. Press F1 and then follow the instructions in the dialog box help for New Template.
3. Select OK.
Saving Templates
Using the Template Builder, you can save your files in ASCII or binary format. Saving your files in
ASCII format provides the benefit of small file sizes and being human readable. On the other hand,
saving your files in binary format ensures faster processing, but does not have the benefits associated
with ASCII format.
When saving a template that includes a flexible part, your template-based product saves the part as rigid.
To save a template:
1. From the File menu, select Save or Save As.
2. If you selected:
Save - Your template-based product saves the binary version of the template to the default
writable database and prompts you if the template already exists. For save options, select Save
As.
Save As - Press F1 and then follow the instructions in the dialog box help for Save Template.
Select OK.
Note: Notice that once the template is open, the Edit and Build menus become active. We
recommend that you familiarize yourself with each menu item.
Note: Notice that once the template is open, the Edit and Build menus become active. We
recommend that you familiarize yourself with each menu item.
53
Building Models
Closing Templates
You can close a template without first saving it to a database.
To close a template:
1. From the File menu, select Close.
2. Press F1 and then follow the instructions in the dialog box help for Close Template.
3. Select OK.
Major Roles
You assign a major role, or function, to every template. The choices in theMajor Role option menu
correspond to the available major roles for a template.
A major role is a property of a template. A subsystem inherits the major role of the type on which it is
based.
In Adams/Car, examples of major roles are: suspension, steering, and body. Note that for each major role
(for example, suspension, steering, and so on) Adams/Car allows only one active subsystem with the
minor role any. The choices in the Minor Role option menu correspond to the available minor roles for
an Adams/Car subsystem.
Location of Templates
The templates are located in the templates.tbl table, or directory, of your template-based product's shared
database. The shared database is usually located in your product's installation directory. For location
details, see your system administrator.
Adams/Car

54
Test-Rig Templates
You can extend the functionality of your templates by converting them into test-rig templates, also
referred to as test rigs.
In the template-based products, test rigs are almost completely comparable to regular templates. The
basic topological difference between test rigs and regular templates is that besides containing parts that
are attached using attachments and forces, test rigs also contain actuator elements, such as motions and
forces, to excite the assembly. J ust like regular templates, test rigs also contain communicators to enable
the exchange of information with other templates.
You use test rigs when creating assemblies. A collection of subsystems and a test rig form an assembly.
Note that the name of a test rig is always preceded by a period and two underscores, that is .__. For
example, .__MY_TESTRIG. This is a convention used by all template-based products to differentiate
between templates (period and one underscore, ._), subsystems (period, .), and test rigs (period and two
underscores, .__).
Learn about test rigs:
Process Overview
Creating Test-Rig Templates
Saving Test-Rig Templates
Converting Templates into Test Rigs
Adding Test Rigs to Binaries
Process Overview
The process of working with test-rig templates involves the following steps:
For Adams/Car:
1. Creating a template and saving it in ASCII format as explained in Creating Test-Rig Templates
and Saving Test-Rig Templates.
2. Modifying the ASCII template file to become an ASCII command file, which is now the test rig,
as explained in Converting Templates into Test Rigs.
3. Saving the ASCII command file into a binary file as described in Adding Test Rigs to Binaries.
Creating Test-Rig Templates
You create test-rig templates the same way you create regular templates.
To create a test-rig template:
1. From the File menu, select New.
2. Press F1 and then follow the instructions in the dialog box for New Template.
55
Building Models
3. Select OK.
Saving Test-Rig Templates
You can save test-rig templates to files, just as you would save regular templates. We recommend that
you save test rigs in ASCII format so you can hand edit them. Storing test-rigs in ASCII format also
ensures portability from one machine to another. It allows you, for example, to use the same file when
building a site binary on either a Windows or UNIX machine.
To save a test-rig template:
1. From the File menu, select Save or Save As.
2. If you selected:
Save - Your template-based product saves the binary version of the template to the default
writable database and prompts you if the template already exists. For save options, select Save
As.
Save As - Press F1 and then follow the instructions in the dialog box help for Save Template.
Select OK.
3. Depending on the template-based product you are using, continue as follows:
If working in Adams/Car go to Converting Templates into Test Rigs.
Converting Templates into Test Rigs
To convert templates into test rigs you must make the following modifications to your ASCII test-rig
template file generated from your template-based product:
Removing the Header Information
You must remove the header information that is added at the beginning of the ASCII template file
because the command file reader will not understand the information stored in this header and will output
errors.
The following example shows a typical header from an ASCII template file:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' t pl '
FI LE_VERSI ON = 13. 3
FI LE_FORMAT = ' ASCI I '
HEADER_SI ZE = 9
Note: You must specifically set the minor roles of communicators in test-rig templates to any. Do
not set them to inherit. You set the minor roles to any because generally a template test rig
should be capable of connecting with any subsystem.
Adams/Car

56
( COMMENTS)
{comment _st r i ng}
' Si mpl e Doubl e Wi shbone Suspensi on'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TEMPLATE_HEADER
[ TEMPLATE_HEADER]
MAJ OR_ROLE = ' suspensi on'
TI MESTAMP = ' 1999/ 07/ 15, 17: 21: 32'
HEADER_SI ZE = 5
You should remove all the lines from the beginning of the file up to, and including, the line containing
the HEADER_SIZE attribute.
Modifying Adams/View Variables
Templates and test rigs in template-based products have information that is stored in Adams/View
variables to determine how the template is used. All templates, including test rigs, have three required
variables: major role, minor role, and model class. Test rigs, however, have an additional required
Adams/View variable called test rig class.
When you create the test-rig template, your template-based product automatically creates the first three
variables. You must, however, manually create the last variable, the test rig class variable.
The following sections introduce the variables:
Major Role
Minor Role
Model Class
Test-Rig Class
Major Role
The major role of templates and test rigs is stored in an Adams/View variable called role. The major role
of a test rig is always analysis.
When creating a test rig, make sure that you set the major role as shown next:
var i abl e cr eat e &
var i abl e_name = . __acme_4Post Ri g. r ol e &
st r i ng_val ue = "anal ysi s" &
comment s = " Memor y f or Adams/ Car maj or r ol e"
Minor Role
The minor role of templates and test rigs is stored in an Adams/View variable called minor_role. The
minor role of a test rig is typically any. Setting the minor role to any is very important if you are designing
a test rig that is supposed to work with other subsystems that can have different minor roles.
In Adams/Car for example, a suspension test rig should work with either front, rear, or trailer-type
suspensions. If the minor role of the test rig were defined as front, the test rig would hook up only to front
suspensions.
57
Building Models
Set the minor role as shown next:
var i abl e cr eat e &
var i abl e_name = . __acme_4Post Ri g. mi nor _r ol e &
st r i ng_val ue = " any" &
comment s = " Memor y f or Adams/ Car mi nor r ol e"
Model Class
Every assembly in template-based products has a specific model class. The model class of an assembly
is stored in an Adams/View variable called model_class. Your template-based product automatically
creates this variable when you create the assembly.
Currently, in template-based products, there are four model classes defined: template, subsystem, testrig,
and assembly.
Set your model class as shown next:
var i abl e cr eat e &
var i abl e_name = . __acme_4Post Ri g. model _cl ass &
st r i ng_val ue = " t est r i g" &
comment s = " Memor y f or Adams/ Car model cl ass"
Test-Rig Class
You can associate any test rig with a particular class of assembly. In Adams/Car for example, the test rig
.__MDI_SUSPENSION_TESTRIG is associated with suspension assemblies. The assembly class of a
test rig is stored in an Adams/View variable called testrig_class.
Set the test rig class as shown next:
var i abl e cr eat e &
var i abl e_name = . __acme_4Post Ri g. t est r i g_cl ass &
st r i ng_val ue = " f ul l _vehi cl e" &
comment s = " Memor y f or Adams/ Car t est r i g cl ass"
You can reference the variable testrig_class directly from the graphical user interface. In Adams/Car for
example, this variable is used in the suspension assembly and the full-vehicle assembly dialog boxes.
Each of these two dialog boxes contains an option menu from which you can select the test rig to be
included in the new assembly. The option menu will only contain test rigs that are compatible with the
particular class of assembly you specified.
The following steps shows how you can reference testrig_class from the Adams/Car interface. You can
follow the same basic steps for the other template-based products.
To reference testrig_class from the Adams/Car interface:
1. From the File menu, point to New, and then select Suspension Assembly.
2. Press F1 and then follow the instructions in the dialog box help for New Suspension Assembly.
3. Select OK.
Adams/Car

58
Adding Test-Rigs to Binaries in Adams/Car
Adding a test rig to your private or site binary makes it available for use whenever you start a private or
site session.
You should move the test rig you modified from the template table (templates.tbl) in your template-based
product databases to a directory that contains the source for the custom private or site binary file.
Typically, you will need to create custom analysis macros that work with the new test rig. All these files
should be located in the same directory structure.
For example, you could enter this command in the acar_build.cmd file to read the test rig:
f i l e command r ead &
f i l e=( eval ( get env( " MDI _ACAR_SI TE" ) / / " / anal ysi s/ model s/ acme_4Post Ri g. cmd" ) )
When you add this command to the acar_build.cmd file, Adams/Car reads in and stores the test rig in the
private or site binary, making the test rig available for use whenever you start an Adams/Car private or
site session.
As as additional option, you can rename your test rig file from the .tpl extension to a .cmd extension to
reflect the fact the test rig is now a command file.
59
Building Models
Communicators
Communicators are the key elements in template-based products that enable the exchange of information
between subsystems, templates, and the test rig in your assembly.
An assembly requires two directions of data transfer between its subsystems. To provide for these two
directions of data transfer, the template-based products have two types of communicators:
Input communicators - Request information from other subsystems or test rigs.
Output communicators - Provide information to other subsystems or test rigs.
In Adams/Car for example, a mount communicator in the rack and pinion steering templates outputs the
rack part name so that tie rods of suspension templates can attach to the rack. In addition, a mount
communicator in the steering template inputs a part name. The steering template uses the part name to
determine where to attach the steering column.
Learn more about communicators:
Creating/Modifying Input Communicators
Creating/Modifying Output Communicators
Communicator Entity Class
Communicator Roles
Communicator Naming
Matching Communicators During Assembly
Displaying Communicator Information
Testing Communicators
Creating/Modifying Input Communicators
You can create or modify input communicators as explained next. You must be in template-builder mode
to do this.
To create/modify input communicators:
1. From the Build menu, point to Communicator, point to Input, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Input
Communicator.
3. Select OK.
Creating/Modifying Output Communicators
You can create or modify output communicators as explained next. You must be in template-builder
mode to do this.
Adams/Car

60
To create/modify output communicators:
1. From the Build menu, point to Communicator, point to Output, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Output
Communicator.
3. Select OK.
Communicator Entity Class
The class of a communicator indicates the kind of information it exchanges. For example, communicators
of the class marker exchange a location and an orientation through a construction frame name and a part
name. The classes of communicators and the information that each class exchanges are listed in table
Communicator Entity Class. The classes apply to both input and output communicators.
In Adams/Car, and Adams/Driveline, communicators can be either single or be part of a symmetrical
pair, either left or right. The table below provides additional information about entity classes.
The class: Exchanges:
The following entity classes do not have symmetry and, therefore, are always single, by default:
Array Adams/Solver array name.
Differential equation Differential equation name.
Motion Motion name.
Parameter Variables Parameter variable name.
Spline Spline name.
Solver variable Adams/Solver variable name. You must use an Adams/Solver variable, not an
Adams/View variable. Unlike an Adams/View variable, an Adams/Solver
variable's computation occurs during analysis. Your template-based product
generates Adams/Solver variables as state variables.
The following entity classes have symmetry:
Mount Part name to provide connections between subassemblies. As a shortcut, the
template-based products also automatically create input mount
communicators when you create a mount part.
Marker Creation of a marker output communicator results in the creation of a new
marker whose location is defined by a user-input construction frame and which
is located on a user-input part. The identity of this marker is passed through
this communicator to provide both location and part information. If the
construction frame is part of a symmetrical pair, the template-based products
create an input communicator for each construction frame in the pair.
J oint J oint name.
J oint-for-motion J oint name.
61
Building Models
Communicator Minor Roles
Each communicator has a minor role. A minor role defines the communicator's position in the assembly.
The template-based products provide you with minor roles, as shown in the following table:
You can define a communicator's minor role when you create it. For example, if you want to provide
input to or output from subsystems of specific roles, then you set the minor role for communicators when
you create them. We recommend, however, that you do not set a communicator's minor role. Instead, let
the subsystem determine the minor role by setting it to inherit, in which case the communicator inherits
the minor role from the subsystem in which it is embedded. For example, in Adams/Car a suspension
template might be used to define either a front or rear suspension subsystem. By letting the subsystem
determine the minor role, the assembly process attaches a steering system to the front suspension and not
to the rear.
Communicator Naming
After you create a communicator, your template-based product assigns a prefix to the name. For
example, it creates a prefix, cil_ where:
ci indicates it is an input communicator. If it were an output communicator, the template-based
product would use co.
Bushing Bushing name.
Location The location of the named hardpoint or construction frame. If the hardpoint is
part of a symmetrical pair, the template-based products create two input
communicators, one for each hardpoint in the pair.
Part Part name.
Orientation The orientation of the named construction frame.
Real parameter A parameter variable name of the type real.
Integer parameter A parameter variable name of the type integer.
This template-based
product: Has these communicator minor roles:
Adams/Car any
inherit
front
rear
trailer
The class: Exchanges:
Adams/Car

62
l indicates it is for the left side of a symmetrical pair. If it were for the right side, the template-
based product would use an r. If it were a single communicator, it would have an s (cis).
If you create a mount part, your template-based product automatically creates an input communicator of
the class mount. It uses the name of the mount part as the name of the communicator and appends the
prefix ci[lrs]_ to it, depending on whether or not it is a left, right, or single communicator. For example,
if you create a mount part of mtl_rack_mount, your template-based product creates an input
communicator with the name cil_rack_mount, where the l indicates it is for the left side.
As you name communicators, you should ensure that any input and output communicators that exchange
information have identical matching names. In Adams/Car for example, the name you give to
communicators that exchange a part name during assembly might be ci_strut_mount and
co_strut_mount, each of which has a matching name of strut_mount. In addition, if you are working with
MSC.Software templates, you must ensure that you use the same naming conventions as the
MSC.Software templates. Learn about matching communicators.
Matching Communicators During Assembly
For a pair of communicators to exchange information during assembly, the communicators must:
Have identical matching names.
Be of opposite types (one input, one output).
Be of the same symmetry type (left, right, or single).
Be of the same class (exchange the same type of information).
Have the same minor role or be assigned a role of any.
If all pieces of information match, your template-based product determines an input/output
communicator pair.
If an input communicator does not have a corresponding output communicator, your template-based
product returns a warning message, and, if the input communicator belongs to the class mount, the
template-based product assigns the mount part to ground. You can still analyze the model even if it does
not have matching communicators. In fact, you may find this helpful if you want to run an analysis of a
subsystem without attaching another subsystem to it.
In Adams/Car for example, the following pairs of input and output communicators match and exchange
a part name during assembly.
Sample of Matching Input and Output Communicators
The pair: Belongs to the class: From minor role: To minor role:
cil_strut_mount mount front
col_strut_mount mount front
cil_strut_mount mount any
63
Building Models
You can match an input communicator with only one output communicator. You can, however, match an
output communicator with any number of input communicators.
You should always check the warning messages during the assembly, especially if the warning refers to
an input communicator of class mount that does not get assigned and is, therefore, attached to ground.
Displaying Communicator Information
You can display information about communicators in each template or test rig. The communicator
information includes the names of the communicators, their classes, and minor roles. You can choose to
display all types and classes of communicators in the templates and test rigs or display only a specified
set of types and classes.
To display information about communicators:
1. From the Build menu, point to Communicator, and then select Info.
2. Press F1 and then follow the instructions in the dialog box help for Communicators Info.
3. Select OK.
Information window appears. It displays the communicator information for each template or test
rig, grouped by each class of communicator that you selected.
Testing Communicators
You can perform a test to verify that you have correctly specified input and output communicators in your
template. You can use this test to determine whether or not you need to add or modify communicators to
correctly create an assembly.
When you perform the test, you specify the model names of one or more existing templates or test rigs.
Although you can specify a single template, you should specify all the templates containing
communicators that transfer information between the selected template. You must specify a minor role
for each template, subsystem, or test rig you chose to test.
After you perform the test, your template-based product lists the matching input and output
communicators, the unmatched input communicators, and the unmatched output communicators for the
templates, subsystems, and test rigs you selected. You can save the test information to a file.
To test communicators:
1. From the Build menu, point to Communicator, and then select Test.
col_strut_mount mount front
cil_strut_mount mount front
col_strut_mount mount any
The pair: Belongs to the class: From minor role: To minor role:
Adams/Car

64
2. Press F1 and then follow the instructions in the dialog box help for Test Communicators.
3. Select OK.
The Information window appears. It contains a list of the communicators that match other
communicators and a list of those that do not. It shows the matched communicators followed by
the unmatched communicators. The lists include the names of the input and output
communicators and the names of the templates to which they belong. Often, you'll see many
communicators that are unmatched. Many of these communicators are related to subsystems or
test rigs that you do not currently have open.
If you want to fully test the communicators in your template, you should open the other templates
with which you want the template to communicate. In Adams/Car for example, if you are creating
a suspenion template, the template must be able to communicate with a steering template and the
suspension test rig.
Working with Components
Adams/Car

66
Introducing the Components
The template-based products offer a number of component definitions that allow you to quickly and
efficiently create components such as springs, dampers, and tires in the Template Builder. This allows the
expert user to generate complex components without being overly concerned with the underlying
elements, such as parts, markers, and geometry.
Components provide the building blocks required to define topological systems. Components are
designed to be intuitive, to allow you to create templates quickly and easily.
The expert user can create, modify, and delete components using the Template Builder. In the Standard
Interface, either the standard or the expert user can only modify components. Learn about user access.
The components within a template are parametrically defined such that you can use a single template to
represent numerous subsystems.
General Information About Components
Creating Components
Modifying Components
Deleting Components
About the Naming Convention
Information About a Particular Component
Hardpoints
Construction Frames
Parts
Markers
Geometry
Attachments
Forces
Wheels, Adjustable forces and Gears
Actuators
Condition Sensors
Feedback Channels
Data Elements, Requests and Variables
Creating Components
You can create components only in the Template Builder. The Template Builder design leads you through
a step-by-step process for creating components: the Build menu is organized such that you can start at
67
Working with Components
the top of the menu, building basic components, and work your way down, attaching these basic
components together and building increasingly complex components.
For information about a certain component, see the topic for that component.
The following example shows how you can create arm geometry. You follow the same basic steps to
create any other component listed under the Build menu.
To create arm geometry:
1. From the Build menu, point to Geometry, point to Arm, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Arm Geometry.
3. Select one of the following:
OK if you want to execute the command and close the dialog box.
Apply if you want to execute the command but keep the dialog box open so you can continue
to work in it.
Cancel if you decide not to execute the command and close the dialog box.
Modifying Components
Depending on the component you want to modify, one or more of the following methods will be
available:
Modifying Component Parameters
Modifying Component Property File
Replacing Instance Definition
Modifying Component Parameters
You can modify component parameters in either interface, as follows:
In the Template Builder - After you create components in the Template Builder, you can
modify any of their parameters, as needed.
In the Standard Interface - The standard user can reference an existing template by either
opening or creating a subsystem file. The standard user can modify only selected parameters in
the Standard Interface.
The following examples show how you can modify component parameters in either interface. You use
the same basic steps to modify any components parameters.
In Standard Interface, to modify arm geometry:
1. Right-click an arm geometry, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Arm.
3. Select OK.
Adams/Car

68
In Template Builder, to modify arm geometry:
1. From the Build menu, point to Geometry, point to Arm, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Arm Geometry.
3. Select OK.
Modifying Component Property File
You can modify property files using either of the following:
Any text editor - When working in any of the template-based products, you can open a text
editor, such as vi on UNIX and Notepad on NT, display the property file referenced by the
component you want to change, modify any of the parameters as needed, and then save your
changes.
The Curve Manager - You can modify some property files as explained in Modifying Property
Files Using the Curve Manager.
Modifying Property Files Using a Text Editor
If you want to modify a property file using a text editor, you can find the location of the particular
database that a property file uses by following the steps outlined next.
To find the location of a database:
From the Tools menu, point to Database Management, and then select Database Info. The
Information window appears, displaying the path of the database.
Modifying Property Files Using the Curve Manager
You can use the Curve Manager to modify a select set of property files.
To modify Adams/Car property files:
1. From the screen, right-click the component you want to modify, for example a spring, point to the
component name, and then select Modify.
The Modify Spring dialog box appears.
2. Select the Curve Manager tool .
The Curve Manager appears.
3. Change any parameters as needed.
Replacing Instance Definition
Another way of modifying components is to change the definition of the component you are using with
another definition of the same component. For example, you can replace a coil spring with an air spring.
Note: You can only change a limited number of parameters in the Standard Interface.
69
Working with Components
The following example shows how you can change a component's definition. You follow the same basic
steps to change the definition of other components.
Components currently supported include: air spring, bushing, damper, and spring, as well as application-
specific components.
To change component definition:
1. In Standard Interface, right-click a component, point to its name, and then select Replace
Instance.
2. Press F1 and then follow the instructions in the dialog box help for Replace Instance Definition.
3. Select OK.
Deleting Components
You can delete components only in the Template Builder. If you try to delete a component that is
dependent on other components, your template-based product informs you that the component is
dependent on others, and if you delete it, the dependents also are deleted.
Because not all the components you can create and delete in the Template Builder have a graphical
representation, you cannot delete some components by right-clicking on them. The following procedures
explain how you can delete both types of components: those that have a graphical representation as well
as those that dont.
To delete components that do not have graphical representation:
1. From the Build menu, point to the component you want to delete, and then select Delete.
The appropriate Delete dialog box appears.
2. Fill in the dialog box as appropriate, and then select either of the following:
OK if you want to execute the command and close the dialog box.
Apply if you want to execute the command but keep the dialog box open so you can continue
to work in it.
Your template-based product does one of the following:
Deletes the component.
Checks if the component has dependencies, and if the component does have dependencies, it
informs you and gives you three options:
Proceed with the delete command
Highlight and list the dependents
Cancel the delete command
Note: In Adams/Car you can change the component definition only in the Standard Interface.
Adams/Car

70
To delete components that have graphical representation:
Do one of the following:
Right-click the component you want to delete from the screen, point to the component name,
and then select Delete.
Complete steps 1 and 2, above.
Your template-based product does one of the following:
Deletes the component.
Checks if the component has dependencies, and if the component does have dependencies, it
informs you and gives you three options:
Proceed with the delete command
Highlight and list the dependents
Cancel the delete command
About the Naming Convention
The template-based products use a naming convention to allow you to easily determine a components
type from it name. When you create a new component in the Template Builder, your template-based
product automatically adds a prefix based on the component type and symmetry. The first two letters of
the prefix indicate the component type. The third letter indicates the symmetric information of the entity.
This letter can be l, r, or s, indicating left, right, or single, respectively.
The exception to this rule is the prefix for geometry entities, where the first three letters are always gra.
The next three letters describe the type of geometry. These letters can be arm, cyl, ell, lin, and out,
corresponding to the following types of geometry: arm, cylinder, ellipse, link, and outline.
The following table lists the prefixes associated with the Template Builder entities. The list is sorted
alphabetically by prefix.
Prefix: Entity type:
bg[lrs]_ Bushing (always active)
bk[lrs]_ Bushing (kinematically inactive)
bu[lrs]_ Bumpstop (Adams/Car only)
cf[lrs]_ Construction frame
ci[lrs]_ Input communicator
co[lrs]_ Output communicator
css_ Condition sensor
da[lrs]_ Damper (Adams/Car only)
fb[lrs]_ Flexible body
ff[lrs]_ User-function feedback channel
71
Working with Components
ge[lrs]_ General part
gk[lrs]dif_ Gear differential (kinematically active)
gk[lrs]red_ Gear reduction (kinematically active)
gp[lrs]_ General parameter
gr[lrs]dif_ Gear differential (always active)
gr[lrs]red_ Gear reduction (always active)
graarm Arm geometry
gracyl_ Cylinder geometry
graell_ Ellipse geometry
gralin_ Link geometry
graout_ Outline geometry
gs[lrs]_ General spline
gv[lrs]_ General variable
hp[lrs]_ Hardpoint
ip[lrs]_ Interface part
jf[lrs]_ J oint force actuator
jk[lrs]_ J oint (kinematically active)
jm[lrs]_ J oint motion actuator
jo[lrs]_ J oint (always active)
mt[lrs]_ Mount part
nr[lrs]_ Nonlinear rod
ns[lrs]_ Spring
ph[lrs]_ Hidden parameter variable
pt[lrs]_ Point torque actuator
pv[lrs]_ Parameter variable
re[lrs]_ Reboundstop (Adams/Car only)
sw[lrs]_ Switch part
ti[lrs]_ Tire force (Adams/Car only)
ue[lrs]_ User-defined entity
wh[lrs]_ Wheel part (Adams/Car only)
Prefix: Entity type:
Adams/Car

72
Hardpoints
Hardpoints contain location information and are the basic building blocks for most other components.
Hardpoints have no orientation. If you need components that hold both location and orientation
information, use construction frames.
Hardpoints and construction frames are also referred to as coordinate references.
You use the Template Builders Build menu to create, modify, and delete hardpoints. When you create
hardpoints, you can define them symmetrically or as a single point in space. When defining hardpoints
symmetrically, you could, for example, define a left hardpoint and the right hardpoint is automatically
generated as a parametric point.
Creating a Hardpoint
To create a hardpoint:
1. From the Build menu, point to Hardpoint, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create Hardpoint.
3. Select OK.
Modifying a Hardpoint
In Standard Interface, to modify a hardpoint:
1. From the Adjust menu, point to Hardpoint, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Hardpoint Location.
3. Select OK.
In Template Builder, to modify a hardpoint:
1. From the Build menu, point to Hardpoint, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Hardpoint Location.
3. Select OK.
Modifying Several Hardpoints at a Time
If you want to modify several existing hardpoints at a time, you can use a table editor to do so.
In Standard Interface, to modify several hardpoints at a time:
1. From the Adjust menu, point to Hardpoint, and then select Table.
2. Press F1 and then follow the instructions in the dialog box help for Hardpoint Modification Table.
3. Select Apply.
In Template Builder, to modify several hardpoints at a time:
1. From the Build menu, point to Hardpoint, and then select Table.
73
Working with Components
2. Press F1 and then follow the instructions in the dialog box help for Hardpoint Modification Table.
3. Select Apply.
Adams/Car

74
Construction Frames
Construction frames contain both location and orientation information, and are the basic building blocks
for many other components. When you need only location and no orientation information, hardpoints are
the correct components to use.
Hardpoints and construction frames are also referred to as coordinate references.
You can define construction frames symmetrically. To easily locate and orient construction frames
without having to worry about complex rotations and translations, you can use various options:
Summary of Location Dependency Options
Summary of Orientation Dependency Options
To create or modify a construction frame:
1. From theBuild menu, point to Construction Frame, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Construction
Frame.
3. Select OK.
75
Working with Components
Parts
You can build the following types of parts in Template Builder:
General Parts
Interface Parts
Flexible Bodies
Nonlinear Beams
Mount Parts
Switch Parts
General Parts
A general part is a rigid part that is defined by its location, orientation, mass, inertia, and center of gravity.
Note that the computed mass properties are not parametric. Your template-based product does not update
the mass properties when the geometry changes, if hardpoints have changed position, for example. If you
want to have the part mass re-computed based upon a parts geometry, you must explicitly have your
template-based product compute the mass properties based on the changed geometry by calculating the
mass for the general part, using the Build or Adjust menus. Alternatively, you can change the mass
properties to user-defined values by modifying the general part using the Build or Adjust menus.
In the Standard Interface, general parts are enhanced to be either rigid or flexible. Learn about flexible
parts.
Creating or Modifying a General Part
In Standard Interface, to create or modify a general part:
1. From the Adjust menu, point to General Part, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify General Part.
3. Select OK.
In Template Builder, to create or modify a general part:
1. From the Build menu, point to Parts, point to General Part, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify General Part.
3. Select OK.
Calculating the Mass of a General Part
You can calculate the mass based on material properties (steel, aluminum, and so on) or enter a material
density. The mass will be based on the volume of the associated geometry.
Adams/Car

76
To calculate the mass of a general part:
1. Do one of the following:
From the Build menu, point to Parts, point to General Part, and then select Modify.
From create/modify dialog boxes, select
.
Using the General Part Wizard
You can use the general part wizard to create simple geometry. Using the general part wizard allows the
Template Builder to automatically calculate mass and inertia properties. You can create either a link or
an arm and choose the material properties.
To use the general part wizard:
1. From the Build menu, point to Parts, point to General Part, and then select Wizard.
2. Press F1 and then follow the instructions in the dialog box help for General Part Wizard.
3. Select OK.
Interface Parts
Interface parts let you connect flexible bodies to the rest of your template. You cannot use joints or
bushings to connect general parts and flexible bodies: you must use interface parts.
To create or modify interface parts:
1. From the Build menu, point to Parts, point to Flexible Body, point to Interface Part, and then
select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Interface Part.
3. Select OK.
Flexible Bodies
Template-based products use descriptions of flexible bodies, named modal neutral files (MNF), from a
finite element (FEM) program. The MNF is a binary, platform-independent file that combines compact
storage and efficiency of data access.
The information in an MNF includes:
Geometry (locations of nodes and node connectivity)
Nodal mass and inertia
Mode shapes
Generalized mass and stiffness for mode shapes
The Template Builder uses a method of modeling flexible bodies named modal flexibility. Modal
flexibility assigns a set of mode shapes (eigenvectors) to a flexible body. The principle of linear
77
Working with Components
superposition is then used to combine the mode shapes at each time step to reproduce the total
deformation of the flexible body. This method can be very useful in problems that are characterized by
high elasticity and moderate deflections.
In Standard Interface, to modify a flexible body:
1. If the displayed subsystem or assembly has a flexible part, from the Adjust menu, point to
Flexible Body, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Flexible Body.
3. Select OK.
In Template Builder, to create or modify a flexible body:
1. From the Build menu, point to Parts, point to Flexible Body, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Flexible Body.
3. Select OK.
Nonlinear Beams
A nonlinear beam consists of one cylindrical/rectangular segment or several segments connected to each
other at coordinate references. The cylindrical/rectangular elements can have hollow cross sections to
represent pipes. The segments form a shaft with a stiffness appropriate to the cross-sectional area and
material stiffness.
Using a nonlinear beam offers you a quick and easy way to deliver flexibility during early design stages.
The mass and inertia properties of a nonlinear beam are determined according to the outer radius, inner
radius, and material type, with the cylinder wall thickness =(outer radius - inner radius).
Nonlinear beams can be:
Rigid - A rigid nonlinear beam is a sequence of cylinders that belongs to one part. You can use
rigid nonlinear beams to model links that do not have a simple straight-line shape.
Flexible - For a flexible nonlinear beam, your template-based product creates a separate part for
each hardpoint you specify. Your template-based product cuts into two pieces the cylinder
between two hardpoints, with each belonging to one of the two parts associated with the
hardpoints. The two halves are then connected elastically by a beam element. You can use
flexible nonlinear beam to model components such as anti-roll bars.
To create or modify a nonlinear beam:
1. From the Build menu, point to Parts, point to Nonlinear Beam, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Nonlinear
Beam.
3. Select OK.
Adams/Car

78
Mount Parts
A mount part is a massless part that acts as an alias for another part in a separate template. You can use
this alias part as you would use the real part when creating joints, springs, contacts, and so on. A mount
part is fixed to ground by default. If there are matching communicators of type mount found during the
assembly process, the template-based product fixes the mount part to the part specified as the value of
the corresponding output communicator.
To create or modify a mount part:
1. From the Build menu, point to Parts, point to Mount, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Mount Part.
3. Select OK.
Switch Parts
A switch part is a massless part that enables flexible topology. You can use this switch part as you would
use any real part when creating joints, springs, bushings, and so on. Your template-based product has a
list of real parts related to each switch part. At any time, the switch part is fixed to one and only one of
the parts on the part list.
A switch part lets you explore two different topological solutions. For example, a suspension may
connect either directly to a chassis or to a subframe, depending on the subsystems active during assembly.
The switch part makes these topological solutions possible. Following assembly, switch parts are
automatically deleted.
When you choose a new part in the Switch to Part pull-down menu, the switch part changes the part it is
fixed to, and all the joints and forces acting on the switch part will act on the new part. The switch part
concept allows you to model and investigate different topologies.
Creating or Modifying Switch Parts
In Standard Interface, to modify a switch part:
1. From the Adjust menu, select Switch Part.
2. Press F1 and then follow the instructions in the dialog box help for Modify Switch Part.
3. Select OK.
In Template Builder, to create or modify a switch part:
1. From the Build menu, point to Parts, point to Switch, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Switch Part.
3. Select OK.
79
Working with Components
Removing Switch Parts
To remove a switch part:
1. From the Tools menu, select Remove Switch Part.
2. Press F1 and then follow the instructions in the dialog box help for Switch and Remove Switch
Parts.
3. Select OK.
Adams/Car

80
Markers
A marker defines a local coordinate system on any part in your model or on ground. A marker has a
location (the origin of the coordinate system) and an orientation.
To create or modify a marker:
1. From the Build menu, point to Marker, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Marker.
3. Select OK.
81
Working with Components
Geometry
Geometry components in the template-based products allow you to easily build parametric
representations of standard parts. If mass and inertia information is unavailable, you can automatically
calculate the mass of the general part based on the size of the geometry.
You can build the following geometry components:
Arm Geometry
Link and Cylinder Geometry
Ellipsoid Geometry
Outline Geometry
Note that the computed mass properties, based on geometry, are not parametric. Your template-based
product does not update the mass properties when the geometry changes, if hardpoints have changed
position, for example. If you want to have the part mass re-computed, based upon a parts geometry, you
must explicitly have your template-based product compute the mass properties based on the changed
geometry, by Calculating Mass for the General Part, using the Build or Adjust menus. Alternatively, you
can change the mass properties to user-defined values by modifying the General Part, using the Build or
Adjust menus.
Arm Geometry
An arm part is a solid triangular plate defined by three coordinate references and a thickness. If
necessary, you can automatically update the mass and inertia properties of the general part.
In Adams/Car, you could use the arm geometry to view the control arm of a MacPherson suspension.
In Standard Interface, to modify arm geometry:
1. Right-click an arm geometry, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Arm.
3. Select OK.
In Template Builder, to create or modify arm geometry:
1. From the Build menu, point to Geometry, point to Arm, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Arm Geometry.
3. Select OK.
Link and Cylinder Geometry
The link and cylinder geometry are very similar. The only differences exist in the method used to define
the geometry:
Adams/Car

82
The link geometry consists of a cylinder whose ends you define using two hardpoint locations
and a radius. You can use links to view the tie rods of certain suspensions.
You define the cylinder using a construction frame, rather than two hardpoints. The centerline of
the cylinder follows the z-axis of the construction frame. You can define the cylinder so that it
has length in both the positive and negative z-axis. You can use cylinders to view the strut rods
of certain suspensions.
If necessary, you can automatically update the mass and inertia properties of the general part.
Creating or Modifying Link Geometry
In Standard Interface, to modify link geometry:
1. Right-click a link, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Link.
3. Select OK.
In Template Builder, to create or modify link geometry:
1. From the Build menu, point to Geometry, point to Link, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Link Geometry.
3. Select OK.
Creating or Modifying Cylinder Geometry
To create or modify link geometry:
1. From the Build menu, point to Geometry, point to Cylinder, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Cylinder
Geometry.
3. Select OK.
Ellipsoid Geometry
An ellipsoid geometry is defined by a coordinate reference and a user-specification of x, y, and z
dimensions. You can use ellipsoids to represent spherical elements of your template. A sphere is an
ellipsoid whose x, y, and z radii have the same values.
You can use two different methods of defining an ellipsoid:
Use a link to define the radius and then specify a scaling factor in each of the orthogonal axes
Define a measurement in each axis
If necessary, you can automatically update the mass and inertia properties of the general part.
83
Working with Components
To create or modify ellipsoid geometry:
1. From the Build menu, point to Geometry, point to Ellipsoid, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Ellipsoid
Geometry.
3. Select OK.
Outline Geometry
You can use the outline to draw a line between different hardpoint locations. You can choose to define
either an open or a closed outline. In general, you would use outlines to visualize the general form of
parts. For example, you would add outline geometry to represent the subframe of a vehicle.
Because the geometry entity has no thickness, you cannot update the mass and inertia properties of an
outline.
To create or modify outline geometry:
1. From the Build menu, point to Geometry, point to Outline, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Outline
Geometry.
3. Select OK.
Adams/Car

84
Attachments
When working with template-based products, you can use two types of attachments:
J oints
Bushings
Joints
J oints define a rigid connection between two parts and help define the motion of the parts. The following
table lists the joints the template-based products support, along with information about their degrees of
freedom (DOF):
Joint name: Number of DOF: Type of motion DOFs allow:
Translational 1 Translation of one part with respect to another while all
axes are co-directed.
Revolute 1 Rotation of one part with respect to another along a
common axis.
Cylindrical 2 Translation and rotation of one part with respect to
another.
Spherical 3 Three rotations of one part with respect to the other while
keeping two points, one on each part, coincident.
Planar 3 The x-y plane of one part slides with respect to another.
Fixed 0 No motion of any part with respect to another.
Inline 4 One translational and three rotational motions of one part
with respect to another.
Inplane 5 Two translational and three rotational motions of one part
with respect to another.
Orientation 3 Constrains the orientation of one part with respect to the
orientation of another one, leaving the translational
degrees of freedom free.
Parallel_axes 4 Three translational and one rotational motions of one part
with respect to another.
Perpendicular 5 Three translational and two rotational motions of one part
with respect to another.
Convel 2 Two rotations of one part with respect to the other while
remaining coincident and maintaining a constant velocity
through the spin axes.
Hooke 2 Two rotations of one part with respect to the other while
remaining coincident.
85
Working with Components
You can use different parametric orientation options to define the location and direction of the joint.
To create or modify a joint:
1. From the Build menu, point to Attachments, point to Joint, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify J oint
Attachment.
3. Select OK.
Working with Bushings
Bushings provide a six degree-of-freedom force relationship for connecting two components. The force
is applied between a marker on each component. The force depends on the relative displacement, and (in
the case of hysteretic bushings), the relative velocity of the two markers.
The forces generated due to translational and rotational motion are entirely uncoupled from each other.
In the description of the bushing formulation that follows, you can apply the force dependencies,
described next, to either translational or rotational behavior. Therefore, a statement such as f
i
=h (relative
displacements, relative velocities) implies the following:
Forces: f
i
=g (translational displacements, translational velocities)
Moments: f
i
=h (angular displacements, angular velocities)
Learn about bushings:
Creating and Modifying Bushings
Stiffness Forces Computation
Damping Forces Computation
Bushing Specifications in the Adams Dataset (.adm)
Creating and Modifying Bushings
When working in Template Builder, you can create bushings and then modify them. When working in
Standard Interface, you can only modify bushings. Learn about the Interface Modes.
Nonlinear Bushings
To create a nonlinear bushing:
1. From the Build menu, point to Attachments, point to Bushing, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Bushing
Attachment.
3. Select OK.
Adams/Car

86
To modify a nonlinear bushing in the Template Builder:
1. To display the modify dialog box, do one of the following:
From the Build menu, point to Attachments, point to Bushing, and then select Modify. To load
the parameters for a specific bushing, you must specify the bushing you want to modify.
Right-click a bushing, point to its name, and then select Modify. The dialog box has the bushing
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Bushing
Attachment.
3. Select OK.
To modify a nonlinear bushing in the Standard Interface:
1. In Standard Interface, right-click a bushing, point to its name, and then select Modify. The dialog
box has the bushing parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Bushing.
3. Select OK.
Linear Bushings
To modify a linear bushing in the Standard Interface:
1. Right-click a bushing, point to its name, and then select Modify. The dialog box has the bushing
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Linear Bushing.
3. Select OK.
Stiffness Forces Computation
In the expressions that follow:
i, j k, l are indices whose integer values of 1 to 3 indicate application to the x, y, and z coordinate
directions, respectively
All uppercase letters represent constants
The Transformed Displacement, q
Adams/Solver computes the stiffness forces based on a bushing displacement vector, q, which is
determined by transformation to account for any inter-axial coupling. Therefore:
For uncoupled directions , q is given by: k D > ( )
q
k
r
k
=
87
Working with Components
For coupled directions , q is given by:
with
and
where the Adams internal variables are:
and the user-specified constants are:
This formulation allows the elements of the displacement vector, x, to be scaled up by a user-specified
factor, H, and/or offset by a user-specified displacement offset, Q
k
, to determine the transformed
displacement vector, q
k
, which becomes the lookup point in the selected stiffness force characteristic (see
next).
The Stiffness Force, f
For uncoupled directions , the resulting force, f, is given by:
x
k
- Displacement of the modeled bushing in the k direction
r
k
- Displacement of the physical bushing in the k direction
q
k
- Ordinate (lookup point) in the stiffness force characteristic
D - Scalar magnitude of the bushing displacement vector
H
k
- Horizontal (displacement) scaling for the k
th
direction (disp_scale); can be used to perform unit
conversions
Q
k
- Displacement offset for the k
th
direction (disp_offset);can be used to specify an offset between
the modeled bushing and the physical bushing (perhaps caused by the rotational preload
introduced by the assembly process)
k D ( )
q
k
m r
k
( ) sgn =
m r
l
2
l 1 =
D

=
r
k
H
k
x
k
Q
k
=
k D > ( )
Adams/Car

88
For coupled directions , f, is given by:
with .
Where the Adams internal variables are:
and the user-specified constants are:
See the following sections for the precise mathematical descriptions of the two alternative coupling
formulations.
Note about the scaling factors, V and H:
f
k
- Stiffness component of the force in thek
th
direction, determined by accounting for preload,
scaling factors, and inter-axial coupling
y
k
- Force returned internally by the user-defined (positive-positive) bushing stiffness
characteristic for the k
th
direction
w
k
- Weighting of the returned force for the kth direction (0 to 1, for coupled directions only)
G
k
- Force offset (preload) for the k
th
direction (force_offset)
V
k
- Vertical (force) scaling for the k
th
direction (stiffness_force_scale)
f
k
G
k
V
k
y
k
q
k'
v
k
( ) =
k D ( )
f
k
G
k
V
k
w
k
y
k
q
k'
v
k
( ) =
w
k
r
k
m
-------
=
Note: Regardless of the bushing formulation, a doubling of the scale factor, V, results in a
doubling of the restoring force provided by the bushing for a given displacement in that
direction. In contrast, doubling of H:
Results in a doubling of the restoring force for bushings whose force-displacement
characteristics are linear.
Results in a nonlinear change of the restoring force for bushings whose force-
displacement characteristics are nonlinear.
89
Working with Components
Expressing the Stiffness Force Characteristic
You can use a number of formulations to express the stiffness force characteristic of the bushing, by
appropriately setting the integer value of stiffness_type (see above), and providing the necessary data in
the .adm file.
Linear
The linear characteristic is straightforward, and is defined using a stiffness, k:
Piecewise Linear
The piecewise linear characteristic is defined as:
where:
Note that is a necessary condition for all n.
A typical characteristic from this formulation looks similar to the following:
q
i
- The i-direction component of the (transformed) bushing displacement
- The l
th
stiffness for the i
th
direction
- The breakpoint where the stiffness changes between and
m - The number of straight-line slopes that describe the characteristic
y
i
q
i'
v
i
, ( ) y
i
q
i
( ) k
i
q
i
( ) = =
y q v , ( ) y q ( ) k
1
q k
l 1 +
k
l
( ) q b
l
( )
l 1 =
m 1

q b
l
> ,



+ = =
k
i
l
b
i
l
k
i
l 1
k
i
l
b
i
l 1 +
b
i
l
>
Adams/Car

90
Figure 1 Example Piecewise Linear Force-Displacement Characteristic
Smoothed Piecewise Linear
The smoothed piecewise linear definition is similar to the piecewise, but with smoothing across each
change in slope, such that the gradient of the force-displacement curve (for example, the stiffness)
becomes continuous:
with:
dy
spw
dq
-------------- k
1
k
l 1 +
k
l
( )
0

l
2
3 2
l
( )
1

l 1 =
m 1

+ =

l
0
0
l
1 < <

l
1
91
Working with Components
where (noting that for clarity, the subscript i, indicating direction, has been dropped):
This gradient is integrated analytically from zero displacement q, to find the force-displacement curve.
The constant of integration is set such that if there were no smoothing, the curve would pass through the
origin. As smoothing is introduced, this constant of integration (the vertical offset of the force-
displacement curve) is adjusted such that the smoothed curve continues to overlay the unsmoothed curve
in regions where there is no smoothing (such as those for high values of displacement). Note that this
means that if the origin is contained within a smoothing interval, then the smoothed force-displacement
curve may not pass exactly through the origin, but that you can safely vary the smoothing interval,
knowing that as the displacement moves from a smoothed into an unsmoothed region, the behavior will
converge to that of the unsmoothed piecewise curve.
Note that as with the piecewise formulation, is a necessary condition for all n.
Setting e to zero collapses this formulation to the piecewise formulation.
A typical characteristic from this formulation will look similar to the following (where the plot shows
the effect of varying the smoothing interval from 0.3 mm to 10 mm):
q - The (transformed, scaled and offset) bushing displacement
k
l
- The l
th
stiffness
b
l

- The breakpoint (value of displacement) where the stiffness changes between and
e - The displacement over which each change in stiffness is smoothed to prevent discontinuities
in stiffness
m - The number of straight-line slopes that describe the underlying characteristic

l
q b
l
e
2
---

e
----------------------------
=
k
i
l 1
k
i
l
b
i
l 1 +
b
i
l
>
Adams/Car

92
Figure 2 Example Force-Displacement Characteristic for a Smoothed Piecewise Linear
Bushing
AKIMA Spline
The nonlinear, AKIMA spline characteristic is defined using a single Adams AKIMA spline. The
restoring force is than determined directly from this spline:
Hysteretic (Dual-Spline)
The hysteretic definition of the stiffness characteristic also incorporates some damping (velocity-
dependence) of the force, according to the following:
y
i
q
i'
v
i
, ( ) y
i
q
i
( ) AKISPL q
i
0 ID
i
, , ( ) = =
93
Working with Components
where:
with:
where:
Such that, for v <-v, the force_neg_vel_values only are used, and for v >vel_threshold, only the
force_pos_vel_values are used. When v is between these values, the two force characteristics are
interpolated according to the STEP function described above.
Note that for very large values of P, the hysteresis disappears, and the characteristic approaches a simple
displacement-dependent AKIMA spline:
A
i
- Horizontal (velocity) scaling for the i
th
direction (vel_scale)
E
i
- Velocity offset for the i
th
direction (vel_offset)
P
i
- Velocity saturation point (m/s) for the i direction (for hysteretic bushings only)
p
i
- Scaled and offset velocity in the i direction
- Velocity (rate of change of model bushing displacement) in the i direction
v
i

- Transformed, and saturated
y
i
q
i'
v
i
, ( ) AKISPL q
i
v
i
ID
i
, , ( ) =
v
i
STEP p
i
P 1 P 1 , , , , ( ) =
p
i
A
i
x

i
E
i
=
x

i
x

i
Adams/Car

94
The following is an example of the typical behavior of a hysteretic bushing, excited to increasing
amplitude:
Figure 3 Displacement
y
i
q
i'
v
i
, ( ) y
i
q
i
( ) AKISPL q
i
0 ID
i
, , ( ) =
95
Working with Components
Figure 4 Force
Damping Forces Computation
Adams/Solver computes the damping forces based on a transformed (scaled, and offset) bushing velocity
vector, p, defined as:
where the Adams internal variables are:
and the user-specified constants are:
- Rate of change of the true bushing displacement, x
Pi - Scaled and offset bushing velocity (the point in the force lookup)
Adams/Car

96
This formulation allows the elements of the true velocity vector, , to be scaled up by a user-specified
factor H, and/or offset by a user-specified displacement d, to determine the transformed displacement
vector q, which is used as the lookup point in the definition of the stiffness force characteristic for the
bushing.
For each direction, the damping force, c is given by:
where the user-specified constant:
B
i
- Is the vertical (force) scaling for the ith direction (damping_force_scale)
Expressing the Damping Force Characteristic
You can use several methods to specify the damping properties in each coordinate direction, as explained
next.
None
This option simply deactivates damping for the given coordinate direction:
Linear
The linear characteristic is straightforward, and is defined using a damping constant, c:
For a linear characteristic, the parameter damping_value should be set equal to the required stiffness, c.
Ai - Horizontal (velocity) scaling for the ith direction (vel_scale)
Ei - Velocity offset for the ith direction (vel_offset)
97
Working with Components
AKIMA Spline
The nonlinear, AKIMA spline characteristic is defined using a single Adams AKIMA spline. The
damping-force characteristic is then determined directly from this spline:
Piecewise Linear
The piecewise linear characteristic is defined as:
where:
Note that is a necessary condition for all n.
A typical characteristic from this formulation will look similar to the following:
q
i
- The i-direction component of the (transformed) bushing displacement
- The l
th
stiffness for the i
th
direction

- Breakpoint where the stiffness changes between and
Adams/Car

98
Figure 5 Example Piecewise Linear Force-Velocity Characteristic
Stiffness Fraction (" k-fraction" )
The stiffness fraction damping method simply ensures that the damping coefficient increases in
proportion to the local stiffness of the bushing at the current operating point.
The damping force in each direction is determined by first identifying the local stiffness as being the
modulus of the rate of change of the stiffness force in that direction with respect to a displacement in the
same direction. This stiffness magnitude is then multiplied by the k-fraction, k, (damping_value) and
multiplied by the appropriate component of the transformed velocity, p:
For an uncoupled linear bushing (D =0 or 1, stiffness_type =1), this reduces to a constant damping
coefficient and a typical viscous damping characteristic.
Learn how the stiffness damping characteristics are expressed in the .adm file.
Bushing Specifications in the Adams Dataset (.adm)
Coupling Specification
Stiffness Force Characteristic
99
Working with Components
Damping Force Characteristic
Bushings are implemented using a FIE(ld)SUB. This FIESUB reads the bushing specifications directly
from the .adm deck, and returns the total (stiffness plus damping) force, fi +ci, for any six-element
bushing displacement and six-element bushing velocity vector.
Coupling Specification
The value of D for the bushing is specified directly as shape in the FIELD statement for the bushing:
FIELD/id, I=idi, J=idj, FUNCTION=USER(branch, shape, txa, tya, tza, rxa, rya, rza)
where the value of the integer shape may be:
Note that the selected shape factor (coupling) always applies to both the translational and rotational
behavior of the bushing.
The next six parameters in the FIELD statement, all of which are required, should contain the Adams
array IDs of the arrays containing the data, which expresses the stiffness and damping characteristic for
the direction:
FIELD/id, I=idi, J=idj, FUNCTION=USER(branch, shape, txa, tya, tza, rxa, rya, rza)
Each of the referenced arrays must be included in the .adm file, and should be in the following form:
All of those parameters are required, and are described in detail in the following sections.
Stiffness Force Characteristic
You can use a number of formulations to express the stiffness force characteristic of the bushing, by
appropriately setting the integer value of stiffness_type (see above), and providing the necessary data in
the .adm file.
0 - Rectangular (no coupling). The force in each direction is dependent only on the
displacement in that direction.
2 - Cylindrical (that is, x-y coupling). The forces in the x and y directions are each dependent
on the displacement of the bushing in both the x and y directions. The force in the z
direction is independent (that is, it depends only on the displacement in z).
3 - Spherical (that is, x-y-z coupling). The force in each direction depends on the
displacements in all translational directions, and the torque in each direction depends on
the angular displacements in all rotational directions.
ARRAY/id, NUM= stiffness_type, stiffness_value, stiffness_force_scale,
damping_type, damping_value, damping_force_scale,
force_offset, disp_offset, disp_scale, vel_offset, vel_scale
Adams/Car

100
Linear (stiffness_type = 1)
For a linear characteristic, the parameter stiffness_value should be set equal to the required stiffness, k.
Piecewise Linear (stiffness_type = 4)
When you select this stiffness type, you must provide an additional array in the .adm file, and you must
set the value of stiffness_value (see above) equal to the integer Adams ID of that additional array. That
additional array must be of the form:
ARRAY/id, NUMBERS =n, k(0), b(1), k(1), ... , b(n), k(n)
where:
Note that the set k(0), b(1), k(1), ... , b(n), k(n) must contain precisely 2n-1 values, so that the total number
of elements in the array must be 2n.
Smoothed Piecewise Linear (stiffness_type = 5)
When you select this stiffness type, you must provide an additional array in the .adm file, and you must
set the value of stiffness_value (see above) equal to the integer Adams ID of this new array. For the
smoother piecewise characteristic, the new array must be of the form:
ARRAY/ID, NUMBERS =s, n, k(0), b(1), k(1), ... , b(n), k(n)
where:
n - The number of slopes that define the stiffness characteristic. This number must be
an integer and greater than 1 (note that for bushings with a single slope defining the
stiffness characteristic, the linear stiffness type, stiffness_type =1, should be used)
b(1) ... b(n) - The breakpoints. The values of displacement, or of angular displacement, at which
the slope changes. These values must be real and in ascending order, but may be
negative.
b(m) - The breakpoint where the slope (stiffness) changes from k(m-1), for displacements
lower than b(m), and to k(m) for displacements greater than b(m).
k(0) ... k(n) - The slopes, all of which must be real and positive for a physical, passive bushing.
Their units are stiffness (force/displacement) or angular stiffness (torque/angular
displacement). Note that k(0) extends to minus infinity and k(n) to plus infinity.
101
Working with Components
Note that the set k(0), b(1), k(1), ... , b(n), k(n) must contain precisely 2n-1 values, so that the total
number of elements in the array must be 2n+1.
AKIMA Spline (stiffness_type = 2)
The nonlinear, AKIMA spline characteristic is defined using a single Adams AKIMA spline, specified
by setting stiffness_value equal to the Adams ID of the spline. That spline must be supplied in the dataset,
but can be shared among several directions and/or bushings.
Hysteretic Dual-Spline (stiffness_type = 3)
To specify this stiffness characteristic, the .adm file must include both a two-element array (whose
integer ID is placed in stiffness_value), of the form:
ARRAY/id, NUM =sid, P
where the terms are defined as:
and the associated Adams spline, of the form:
SPLI NE/ si d,
, X= [ di spl acement _val ues]
, Y= - 1. 0, [ f or ce_neg_vel _val ues]
, Y= 1. 0, [ f or ce_pos_vel _val ues]
s - The interval over which changes of slope are smoothed. This number must be a real
value greater than zero, in units of displacement.
n - The number of slopes that define the stiffness characteristic. This number must be
an integer and greater than 1 (note that for bushings with a single slope defining the
stiffness characteristic, the linear stiffness type, stiffness_type =1, should be used).
b(1) ... b(n) - The breakpoints. The values of displacement, or of angular displacement, at which
the slope changes. These values must be real and in ascending order, but may be
negative.
b(m) - The breakpoint where the slope (stiffness) changes from k(m-1), for displacements
lower than b(m), and to k(m) for displacements greater than b(m).
k(0) ... k(n) - The slopes, all of which must be real and positive for a physical, passive bushing.
Their units are stiffness (force/displacement) or angular stiffness (torque/angular
displacement). Note that k(0) extends to minus infinity and k(n) to plus infinity.
sid - The Adams ID of the 3D spline that specifies the hysteretic characteristic
P - The (positive) velocity threshold above which the bushing characteristic becomes
independent of the velocity
Adams/Car

102
Damping Force Characteristic
For the stiffness characteristic, a number of methods exist for specifying the damping properties in each
coordinate direction:
None (damping_type = 0)
This setting of damping_type simply deactivates damping for the given coordinate direction:
Linear (damping_type = 1)
For a linear characteristic, the parameter damping_value should be set equal to the required stiffness, c.
AKIMA Spline (damping_type = 2)
The nonlinear, AKIMA spline characteristic is defined using a single Adams AKIMA spline, specified
by setting damping_value equal to the Adams ID of the spline. The damping force characteristic is then
determined directly from this spline:
Note the sign convention here. Within the spline definition, an increase in x (transformed velocity) should
generally yield an increase in the y value (damping force).
The same Adams AKIMA spline can be used for more than one direction of the same bushing (optionally,
with different scaling), and/or for more than one instance of a bushing within the same model.
Piecewise Linear (damping_type = 3)
When you select this damping type, exactly as with the equivalent stiffness type, you must provide an
additional array in the .adm file, and you must set the value of damping_value (see above) equal to the
integer Adams ID of that additional array. That array must be of the form:
ARRAY/id, NUMBERS =n, k(0), b(1), k(1), ... , b(n), k(n)
where:
103
Working with Components
Note that the set c(0), b(1), c(1), ... , b(n), c(n) must contain precisely 2n-1 values, so that the total number
of elements in the array must be 2n.
Stiffness Fraction (" k-fraction" ) (damping_type = 4)
For the stiffness-fraction damping characteristic, the parameter damping_value should be set equal to the
required stiffness fraction, k.
n - The number of slopes that define the damping characteristic. This number must be
an integer, and greater than 1 (note that for bushings with a single slope defining the
damping characteristic, the linear damping type, damping_type =1, should be used).
b(1) ... b(n) - The breakpoints. The values of velocity, or of angular velocity, at which the slope of
the damping characteristic changes. These values must be real and in ascending order,
but may be negative.
b(m) - The breakpoint where the slope (damping coefficient) changes from c(m-1), for
velocities lower than b(m), to c(m) for velocities greater than b(m)
c(0) ... c(n) - The slopes, all of which must be real and positive for a physical, passive bushing.
Their units are those of damping (that is, force/velocity) or rotational daming (that is,
torque/angular velocity). Note that c(0) extends to minus infinity and c(n) to plus
infinity.
Adams/Car

104
Forces
You can build the following types of forces in Template Builder:
Springs
Dampers
Bumpstops
Reboundstops
In Template Builder you can also modify air springs.
Working with Springs
A spring element defines a force-displacement relationship between two parts. The spring force acts on
the two parts at user-specified coordinates. The springs force-displacement properties, free length,
number of coils and other parameters are given in the designated property file.
Learn about springs:
Creating and Modifying Springs
About Linear Springs
About Nonlinear Springs
About Spring Property Files
Your template-based product models air springs as simple action-reaction forces between two parts. Each
air spring references an air-spring property file that tabulates spring force against trim load and deflection
from trim length. Trim load is the nominal load in the spring for a given trim length and internal pressure.
Before analysis, your template-based product reads the data from the referenced property file and stores
it in a three-dimensional SPLINE. During analysis, Adams/Solver computes the air-spring force by
interpolating the SPLINE data using the Akima method.
Air springs include an auto-trim feature, where you can specify a desired trim height of the suspension
and the air spring's trim load is automatically adjusted during static equilibrium analysis to achieve the
trim height.
To use an air spring in a subsystem, select a coil spring and use the replace option from the shortcut menu
to replace the coil spring with an air spring.
Learn about air springs:
Modifying Air Springs
Auto Trim Load
Calculation of Air-Spring Force
105
Working with Components
Creating and Modifying Springs
When working in Template Builder, you can create springs and then modify them. When working in
Standard Interface, you can only modify springs. Learn about the interface modes.
Nonlinear Springs
To create a nonlinear spring:
1. From the Build menu, point to Forces, point to Spring, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Spring.
3. Select OK.
To modify a nonlinear spring in the Template Builder:
1. To display the modify dialog box, do one of the following:
From the Build menu, point to Forces, point to Spring, and then select Modify. To load the
parameters for a specific spring, you must specify the spring you want to modify.
Right-click a spring, point to its name, and then select Modify. The dialog box has the spring
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Spring.
3. Select OK.
To modify a nonlinear spring in the Standard Interface:
1. In Standard Interface, right-click a spring, point to its name, and then select Modify. The dialog
box has the spring parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Spring.
3. Select OK.
Linear Springs
To modify a linear spring in the Standard Interface:
1. Right-click a spring, point to its name, and then select Modify. The dialog box has the spring
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Linear Spring.
3. Select OK.
About Linear Springs
Your template-based product (using the Adams/Solver SPRINGDAMPER) calculates the spring force
as follows:
Spr i ng For ce = - K*( DM( I , J ) - Of f set Cal c)
where:
Adams/Car

106
K - The linear stiffness defined in the spring property file.
DM - The instantaneous distance between the I and J coordinate references.
OffsetCalc - Depends on the free length defined in the spring property file and in the spring
install methods.
Spring Install Methods
The three spring install methods are:
Preload - The desired spring load at the current position of the I and J coordinate references.
Installed Length - The installed length of the spring at the current position of the I and J
coordinate references.
Use Hardpoints - The installed length of the spring equals the distance between the I and J
coordinate references.
When you submit the model to Adams/Solver, the spring-damper statement that your template-based
product creates, has the form:
SPRI NGDAMPER/ id, I =I_id, J =J_id
, K=K
, C=0
, LENGTH=Of f set Cal c
, FORCE=0
, TRANSLATI ONAL
About Nonlinear Springs
Your template-based product (using the Adams/Solver SFORCE) interpolates a force versus spring
length or spring deflection table using Akima's method.
If you are using a force versus length table, the force is calculated as follows:
Spr i ng For ce = AKI SPL( Of f set Cal c + DM( I , J ) , 0, Spl i ne)
If you are using a force versus deflection table, the force is calculated as follows:
Spr i ng For ce = AKI SPL( Of f set Cal c - DM( I , J ) , 0, Spl i ne)
where:
AKISPL - Adams/Solver function that interpolates data stored in a SPLINE.
OffsetCalc - Depends on the free length defined in the spring property file and in the spring install
methods.
DM - The instantaneous distance between the I and J coordinate references.
Spline - A reference to a SPLINE statement.
Spring Install Methods
The three spring install methods are:
107
Working with Components
Preload - The desired spring load at the current position of the I and J coordinate references.
Installed Length - The installed length of the spring at the current position of the I and J
coordinate references.
Use Hardpoints - The installed length of the spring equals the distance between the I and J
coordinate references.
When you submit the model to Adams/Solver, the SFORCE statement that your template-based product
creates, has the form:
SFORCE/ id, I =I_id, J =J_id
, FUNCTI ON=AKI SPL( OffsetCalc + DM( I_id, J_id) , 0, Spl i ne) \
, TRANSLATI ONAL
About Spring Property Files
The spring component supports the following types of Property Files:
TeimOrbit linear-spring property files (extension .lsf).
TeimOrbit nonlinear-spring property files (extension .spr). Standard TeimOrbit nonlinear-spring
property files correspond to nonlinear, deflection-based spring formulation, as explained in
About Nonlinear Springs.
XML spring property file. The XML spring property file supports linear and nonlinear force
characteristics and allows you to choose between specifying force versus spring deflection or
spring length, as described in About Nonlinear Springs. You work with XML files in the Property
File Editor.
Modifying Air Springs
To modify an air spring in the Standard Interface:
1. In Standard Interface, right-click an air spring, point to its name, and then select Modify. The
dialog box has the air-spring parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Spring.
3. Select OK.
Auto Trim Load
An Adams/Solver differential equation sets an air spring's trim load. The differential equation calculates
the trim load that corresponds to the desired trim length during static equilibrium analyses. Its value is
then locked to the last value calculated during static analyses for all the subsequent transient simulations.
F = USER ( 1117, t r i mLengt h, I mar ker , J mar ker )
where:
1117 - Branch ID
trimLength - The desired displacement, as specified in the property file, which you can edit
using the Property File Editor.
Adams/Car

108
I/J marker - The air spring's I and J markers of the SFORCE.
Calculation of Air-Spring Force
An Adams/Solver SFORCE computes the air-spring force. The SFORCE function is:
f or ce = AKSI PL( ( t r i mLengt h DM ( mar ker I , mar ker j ) ) ,
( t r i mLoad) , spl i neI D)
where:
AKSIPL - Is the Adams/Solver function that interpolates data using Akimas method.
trimLength - Is the distance between the upper and lower spring seats when the suspension is at
trim height. trimLength is a positive real value read from the air-spring property file.
DM(marker I, marker J ) - Is the distance between the upper and lower spring seats.
TrimLoad is the load in the spring when the suspension is at trim height. The load corresponds to
the trim load you specified, or, if you select auto trim load, it corresponds to a differential
equation.
Working with Dampers
A damper defines the force-velocity relationship between two parts. The damper is defined as acting
between user-specified coordinate reference points on each part, and conforms to the force-velocity curve
described in the designated property file.
Learn about dampers:
Creating and Modifying Dampers
About Linear Dampers
About Nonlinear Dampers
Creating and Modifying Dampers
When working in Template Builder, you can create dampers and then modify them. When working in
Standard Interface, you can only modify dampers.
Nonlinear Dampers
To create a nonlinear damper:
1. From the Build menu, point to Forces, point to Damper, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Damper.
3. Select OK.
To modify a nonlinear damper in the Template Builder:
To display the modify dialog box, do one of the following:
109
Working with Components
From the Build menu, point to Forces, point to Damper, and then select Modify. To load the
parameters for a specific damper, you must specify the damper you want to modify.
Right-click a damper, point to its name, and then select Modify. The dialog box has the
damper parameters already loaded.
Press F1 and then follow the instructions in the dialog box help for Create/Modify Damper.
Select OK.
To modify a nonlinear damper in the Standard Interface:
1. Right-click a damper, point to its name, and then select Modify. The dialog box has the damper
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Damper.
3. Select OK.
Linear Dampers
To modify a linear damper in the Standard Interface:
1. Right-click a damper, point to its name, and then select Modify. The dialog box has the damper
parameters already loaded.
2. Press F1 and then follow the instructions in the dialog box help for Modify Linear Damper.
3. Select OK.
About Linear Dampers
In addition to the standard definition of a damper (based on an AKIMA spline interpolation of a force
velocity two-dimensional spline), Adams/Car offers a linear-damper model. The linear-damper model
allows you to define a single damping term. The force exerted by the damper between the I and J parts
at the desired locations follows the well-known formula:
For ce = - c dx/ dt
where dx/dt is the time derivative of the radial relative displacement between marker I and marker J .
About Nonlinear Dampers
The force-velocity formula is based on:
VR - Relative velocity of marker I with respect to marker J
Damper property file
For ce = aki spl ( VR( mar ker i , mar ker j ) , 0, Spl i ne)
The damper property file defines the two-dimensional spline. The independent variable is the
translational velocity of the I and J markers, and the dependent variable is the force exerted between the
two parts at the I and J marker locations.
Adams/Car

110
Working with Bumpstops
A bumpstop defines a force-displacement relationship between two parts. The bumpstop acts between
user-specified coordinate reference points on each part, and conforms to the force-displacement
properties described in the designated property file.
The bumpstop force is activated when the displacement between the two coordinate references exceeds
the clearance defined for the bumpstop.
The force-displacement formula is based on:
Instantaneous distance between the user-specified coordinates defined on each part
Impact length or clearance
Bumpstop property file (polynomial or nonlinear stiffness with or without linear or nonlinear
damping).
Learn about bumpstops:
Creating and Modifying Bumpstops
Calculation of Force Characteristics
About Bumpstop Property Files
Creating and Modifying Bumpstops
When working in Template Builder, you can create bumpstops and then modify them. When working in
Standard Interface, you can only modify bumpstops
To create a bumpstop:
1. From the Build menu, point to Forces, point to Bumpstop, and then select New.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Bumpstop.
3. Select OK.
To modify a bumpstop in the Template Builder:
To display the modify dialog box, do one of the following:
From the Build menu, point to Forces, point to Bumpstop, and then select Modify. To load
the parameters for a specific bumpstop, you must specify the bumpstop you want to modify.
Right-click a bumpstop, point to its name, and then select Modify. The dialog box has the
bumpstop parameters already loaded.
Press F1 and then follow the instructions in the dialog box help for Create/Modify Bumpstop.
Select OK.
To modify a bumpstop in the Standard Interface:
In Standard Interface, right-click a bumpstop, point to its name, and then select Modify. The
dialog box has the bumpstop parameters already loaded.
111
Working with Components
Press F1 and then follow the instructions in the dialog box help for Modify Bumpstop.
Select OK.
Calculation of Force Characteristics
The XML bumpstop property file supports various methods and options for calculating force
characteristics. It supports the following methods to determine the elastic-force component:
polynomial - The formulation of the force is based on a third-order polynomial whose equation
can be expressed as follows:
F el ast i c = POLY( MAX( 0, i mpact _l engt h DM ( mar ker i , mar ker j ) ) , 0,
0, Li near Rat e, Quadr at i cRat e, Cubi cRat e)
nonlinear (spline based) - The formulation of the force is based on the Akima spline
interpolation of a nonlinear characteristic:
F el ast i c = aki spl ( MAX( 0, i mpact _l engt h - DM( mar ker i , mar ker j ) ) , 0,
Spl i ne)
The elastic force becomes active only when the instantaneous distance between the markers on the two
parts is less than the impact length. The impact length term depends on the distance type. If you select
Clearance, the impact length becomes:
dmCal c - Cl ear ance
where:
Clearance - Value you specify
dmCalc - Initial displacement computed between the I and J markers
The following figure shows the clearance and impact length.
Adams/Car

112
In an XML bumpstop property file, you can also enable a damping characteristic. If you enable the
damping characteristic, the force is dependent on the deflection and velocity of the I and J markers.
Damping (viscous) forces can be:
linear - If you include in the property file a linear damping value other than zero, then the total
force exerted between the I and J parts is equal to the sum of the elastic force specified above and
the following damping force:
Fdampi ng = STEP MAX( 0, i mpact _l engt h - DM( i , j ) ) , 0, 0, 0. 1, -
dampi ngRat e * VR ( mar ker i , mar ker j ) )
nonlinear (spline based) - If you include in the property file a nonlinear damping value, then the
total force exerted between the I and J parts is equal to the sum of the elastic force specified
above and the following damping force:
F dampi ng = STEP MAX( 0, i mpact _l engt h - DM( i , j ) ) , 0, 0, 0. 1, -
AKI SPL ( VR ( mar ker i , mar ker j ) , 0, dampi ngSpl i ne ) )
113
Working with Components
About Bumpstop Property Files
The bumpstop component supports the following types of property files:
TeimOrbit bumpstop property files (extension .bum). Standard TeimOrbit bumpstop property
files correspond to nonlinear elastic forces with linear damping equal to 0 formulation.
XML bumpstop property file. The XML bumpstop property file enables data sharing with other
MSC.Software applications, such as Adams/Chassis, and allows greater flexibility and a wider
range of bumpstop formulation choices. In particular, the new XML bumpstop property file
supports various methods and options for the calculation of force characteristics, as explained in
Calculation of Force Characteristics. You work with XML files in the Property File Editor.
Working with Reboundstops
A reboundstop defines a force-displacement relationship between two parts. The reboundstop acts
between user-specified coordinate reference points on each part, and conforms to the force-displacement
curve described in a designated property file. The reboundstop force is activated when the displacement
between the two coordinate references exceeds the defined clearance.
The force-displacement formula is based on:
Instantaneous distance between the user-specified coordinates defined on each part
Impact length or clearance
Reboundstop property file (polynomial or nonlinear stiffness with or without linear or nonlinear
damping.)
Learn about reboundstops:
Creating and Modifying Reboundstops
Calculation of Force Characteristics
About Rebounstop Property Files
Creating and Modifying Reboundstops
When working in Template Builder, you can create reboundstops and then modify them. When working
in Standard Interface, you can only modify reboundstops. Learn about the interface modes.
To create a reboundstop:
From the Build menu, point to Forces, point to Reboundstop, and then select New.
Press F1 and then follow the instructions in the dialog box help for Create/Modify Reboundstop
Select OK.
To modify a reboundstop in the Template Builder:
To display the modify dialog box, do one of the following:
Adams/Car

114
From the Build menu, point to Forces, point to Reboundstop, and then select Modify. To
load the parameters for a specific reboundstop, you must specify the reboundstop you want to
modify.
Right-click a reboundstop, point to its name, and then select Modify. The dialog box has the
reboundstop parameters already loaded.
Press F1 and then follow the instructions in the dialog box help for Create/Modify Reboundstop.
Select OK.
To modify a reboundstop in the Standard Interface:
In Standard Interface, right-click a reboundstop, point to its name, and then select Modify. The
dialog box has the reboundstop parameters already loaded.
Press F1 and then follow the instructions in the dialog box help for Modify Reboundstop.
Select OK.
Force Calculation
The force in a rebound stop always acts to keep two parts from moving farther apart. The force is active
only when the distance between the parts as computed by dm(i,j) exceeds the impact length. You specify
the impact length directly or indirectly as the initial clearance in the rebound stop. When you specify a
clearance, the impact length is calculated from the clearance as follows:
dmCal c + Cl ear ance
where:
Clearance is the value you specify
dmCalc is the initial displacement computed between the i and j markers
Further, the force in a rebound stop is the sum of an elastic force and a damping force. The XML property
file supports various options for calculating either force. The options available for calculating elastic
force (F elastic) are:
polynomial - The for calculated using a third-order polynomial. The Adams/Solver function
expression is:
F el ast i c = POLY( MAX( 0, DM( i , j ) - i mpact _l engt h) , 0, 0, - l i near Rat e, -
quadr at i cRat e, - cubi cRat e)
nonlinear (spline based) - The force is interpolated using Akima's method based on force vs.
deflection data.
F el ast i c = - 1. 0*( AKI SPL( MAX( 0, DM( i , j ) - i mpact _l engt h) , 0, Spl i ne) )
The following figure shows the clearance and impact length.
115
Working with Components
The damping force always acts in opposition to the velocity. In an XML reboundstop property file, the
options for calculating damping force are:
linear - You specify the dampingRate, and the damping force is the product of dampingRate,
velocity, and a STEP function. The STEP function depends on the displacement in the rebound
stop and ensures the damping force is continous with displacement.
F
dampi ng
= STEP ( MAX( 0, DM( I , J ) - i mpact _l engt h) , 0, 0, 0. 1, - dampi ngRat e
* VR ( mar ker i , mar ker j ) )
nonlinear (spline based) - The damping force is interpolated using Akimas method from a
table of force vs. velocity. Again, a STEP function dependent on the displacement in the
rebound stop ensure that the damping force is continous with displacement.
F
dampi ng
= STEP ( MAX( 0, DM( I , J ) - i mpact _l engt h) , 0, 0, 0. 1, - AKI SPL
VR ( mar ker i , mar ker j ) , 0, dampi ngSpl i ne ) )
About Reboundstop Property Files
The reboundstop component supports the following types of property files:
TeimOrbit reboundstop property files (extension .reb) - Standard TeimOrbit reboundstop
property files correspond to nonlinear elastic forces with linear damping equal to 0 formulation.
Adams/Car

116
XML reboundstop property file - The XML reboundstop property file enables data sharing with
other MSC.Software applications, such as Adams/Chassis, and allows greater flexibility and a
wider range of reboundstop formulation choices. In particular, the new XML reboundstop
property file supports various methods and options for the calculation of force characteristics, as
explained in Calculation of Force Characteristics. You work with XML files in the Property File
Editor.
117
Working with Components
Wheels, Adjustable forces and Gears
Wheels
A wheel is a specialized part you can use when creating tire models. In Adams/Car, creating a wheel
corresponds to creating the metal rigid body part (the rim) and the rubber (tire) around it. You model the
rim with a general rigid part and the tire with a general force (GFORCE). For information on GFORCE,
see the Adams/Solver online help.
In Standard Interface, to modify a wheel:
1. Right-click a wheel, and then select Modify.
2. Press F1 and then follow the instructions in the dialog box help for Modify Wheel.
3. Select OK.
In Template Builder, to create or modify a wheel:
1. From the Build menu, point to Wheel, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Wheel.
3. Select OK.
Adjustable Forces
An adjustable force is a special Template Builder user-defined element (UDE). You can use adjustable
forces for a variety of conditions, to satisfy static parameters in your model. For example, if you want to
set the length of a rod to be a specific length during static analysis, the adjustable force will vary until
the desired end condition is satisfied.
In Adams/Car for example, a typical application is to use an adjustable force to set toe and camber values
during a static suspension analysis. You might use two parts to define the tie rod and attach them by a
translational joint. You would then apply an adjustable force between the two parts to set toe and camber
values.
When the vehicle reaches static equilibrium without the use of adjustable forces, the toe and camber
alignments might not be the ones that you want. You use adjustable forces to define toe and camber
angles at static equilibrium position.
Adjustable forces act between two appropriate parts and perform a series of adjustments during static
equilibrium to minimize the error between the current computed toe/camber angle and the desired
toe/camber.
You might, for example, use two parts for the tie rod, constrain them using a translational joint, and then
apply an adjustable force between the two parts to set static toe angle. The current formulation creates a
single-component force that acts between the two parts. The force function uses stiffness and damping
values that you can set. The user-defined force uses a differential equation to minimize the error between
desired and computed angles.
Adams/Car

118
The _double_wishbone_torsion template distributed in the shared car database contains an example of
an adjustable force.
If more than one adjustable force is defined in a model, you must use the pattern statement within the
adjustable force definition. The pattern statement defines the order in which adjustable forces are active.
The following table defines four adjustable forces.
In Pattern 1, two separate static analyses would be run. In the first analysis, the toe adjustable forces
would be active. During the second analysis, the camber adjustable forces would be active. In Pattern 2,
four separate static analyses would be run and the same order as in Pattern 1 would be repeated. Because
the camber is directly affected by the toe change and the toe change is affected by the camber, it is often
desirable to build up patterns such that you can find a static solution by running a number of separate
static analysis. Pattern 3 is an example of eight separate static analyses.
Once the static analysis has been run, one of two things will happen depending on whether the lock with
motion was set for the adjustable force. For example, in Adams/Car an adjustable force might be created
between the tie rod inner and tie rod outer parts. If the adjustable force is locked with motion, then after
the statics is complete, Adams/Car will create a fixed joint between the two tie rod parts, fixing the
displacement between these parts for subsequent dynamic analyses. But if the adjustable force is not
locked, then the same force between the tie rod parts at the end of the static analysis will be maintained
during subsequent dynamic analyses.
In Standard Interface, to modify an adjustable force:
1. From the Adjust menu, select Adjustable Force.
2. Press F1 and then follow the instructions in the dialog box help for Modify Adjustable Force.
3. Select OK.
In Template Builder, to create or modify an adjustable force:
1. From theBuild menu, point to Adjustable Force, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Adjustable
Force.
Adjustable force: Pattern 1: Pattern 2: Pattern 3:
Front left toe 10 1010 10101010
Front right toe 10 1010 10101010
Front left camber 01 0101 01010101
Front right camber 01 0101 01010101
Rear left toe 10 1010 10101010
Rear right toe 10 1010 10101010
Rear left camber 01 0101 01010101
Rear right camber 01 0101 01010101
119
Working with Components
3. Select OK.
Gears
We provide two constraint-based gear options within the Template Builder:
Differential gear - The differential gear applies a reduction ratio between an input joint and the
symmetric output joint pair. The joint can be either revolute or cylindrical. The motion direction
can be inverted between the input and output joints and a toggle exists to switch between the two
different modes, allowing the reduction ratio to always be positive.
The reduction ratio is based on the following equation:
i nput mot i on = r educt i on r at i o * ( i nput shaf t - out put shaf t ) / 2
You can define the differential gear to be kinematically active, allowing the element to be turned
on or off depending on the type of analysis you are running: compliant or kinematic.
Reduction gear - The reduction gear applies a reduction ratio between the input and output
joint. Either joint type can be translational, revolute, or cylindrical. Additionally, the motion
direction can be inverted between the input and output joints and a toggle exists to switch
between the two different modes, allowing the reduction ratio to always be positive.
When you enter a cylindrical joint in the input or output J oint text box, an additional text box
becomes active. Because either the rotational or translational degree of freedom of the cylindrical
joint can be used, you must specify if the rotational or translational motion will be the output for
the gear.
The reduction ratio is based on the following equation:
i nput mot i on = r educt i on_r at i o * out put mot i on
You can define the differential gear as being kinematically active, allowing the element to be turned on
or off depending on the type of analysis you are running: compliant or kinematic.
Note: A gear in Adams/Car is a coupler in Adams/View.
Adams/Car

120
Actuators
We provide several actuator options with the Template Builder. An actuator lets you define an element
that can apply a force or motion function to a collection of modeling components. For example, you
might want to create a motion on a valvetrain system, or steer a vehicle around a corner. These
components include joints and parts but are not limited only to these.
Learn more about actuators:
About Actuators
J oint-Force Actuators
J oint-Motion Actuators
Point-Point Actuators
Point-Torque Actuators
Variable Actuators
Set Function
Set Activity
About Actuators
When used with appropriate feedback channels, actuators provide a very powerful method to control
your system.
Actuators differ from adjustable forces due to their behavior during dynamic analyses, with actuators
remaining active, whereas adjustable forces are either locked in place or replaced by a fixed joint.
If you create actuators as a symmetrical pair, then you can define separate left and right functions. You
can use the Function Builder to define functions.
Each actuator can have an application area and an identifier. The application area provides information
about the intended purpose of the actuator. The identifier should be used to describe the actuator instance
for this application area. A typical example would be:
Appl i cat i on ar ea = st eer i ng
I dent i f i er = st eer i ng_wheel _angl e ( e. g. f or a mot i on t ype
act uat or )
These two additional parameters support a more dynamic use of actuators. For example, to allow de-
/activation and function assignment on the assembly level by adding additional means for browsing and
filtering. Note that they are currently not required by your template-based product.
You can define limits for each actuator in the same way that you would define limits in a test laboratory
to prevent damage caused by excessive actuator force or travel. Although you can define limits for force,
displacement, velocity, and acceleration, it is not required that you do so.
121
Working with Components
You can define the activity of the actuator as either active or not active. You can define the activity either
from the dialog box or from the menu option Set Activity located under the Actuators menu. Learn about
defining the activity.
Joint-Force Actuators
A joint-force actuator defines either a translational or rotational single-component force acting between
two parts that a user-defined joint connects. You can select three types of joints:
Revolute joint - Selecting a revolute joint causes the Template Builder to automatically switch
to rotational and disable the Type of Freedom option. The single-component force will be a
rotational force acting between the two bodies that the revolute joint connects.
Translational joint - Selecting a translational joint causes the Template Builder to
automatically switch to translational and disable the Type of Freedom option. The single-
component force will be a translational force acting between the two bodies that the translation
joint connects.
Cylindrical joint - Selecting a cylindrical joint makes an additional text box active. Because
either the rotational or translational degree of freedom of the cylindrical joint can be used, you
must specify if the rotational or translational force will be used. This allows you to decide
between the creation of a torque or a force, based on the selection of either the rotational or
translational type of freedom.
Learn more about actuators, such as creating symmetrical pairs, using application area and identifier
attributes, and defining limits.
To create/modify a joint-force actuator:
1. From the Build menu, point to Actuators, point to Joint Force, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify J oint Force
Actuator.
3. Select OK.
Point-Point Actuators
A point-point actuator defines an action-reaction translational single-component force acting between
the two parts that I Part and J Part parameters specify. You define the direction of the resulting force by
selecting the two points of force application, which can be either hardpoint or construction frame
locations.
Learn more about actuators, such as creating symmetrical pairs, using application area and identifier
attributes, and defining limits.
To create/modify a point-point actuator:
1. From the Build menu, point to Actuators, point to Point Torque, and then select New/Modify.
Adams/Car

122
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Point Point
Actuator.
3. Select OK.
Joint-Motion Actuators
A joint-motion actuator defines either a translational or rotational motion acting between two parts that
a user-defined joint connects. You can select three types of joints:
Revolute joint - Selecting a revolute joint causes the Template Builder to automatically switch
to rotational and disable the Type of Freedom option. The motion will be a rotational motion
acting between the two bodies that the revolute joint connects.
Translational joint - Selecting a translational joint causes the Template Builder to automatically
switch to translational and disable the Type of Freedom option. The motion will be a
translational motion acting between the two bodies that the translational joint connects.
Cylindrical joint - Selecting a cylindrical joint makes an additional text box active. Because
either the rotational or translational degree of freedom of the cylindrical joint can be used, you
must specify if the rotational or translational motion will be used. This allows you to decide
between the creation of a rotational or a translational motion based on selection of either the
rotational or translational type of freedom.
Learn more about actuators, such as creating symmetrical pairs, using application area and identifier
attributes, and defining limits.
To create/modify a joint-motion actuator:
1. From the Build menu, point to Actuators, point to Joint Motion, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify J oint Motion
Actuator.
3. Select OK.
Point-Torque Actuators
A point-torque actuator defines an action-reaction or action-only rotational single-component torque
acting between the two parts that the I Part and J Part parameters specify. You define the direction of the
resulting torque within the dialog box. Many of the parametric functions discussed in Construction
Frames are available to define the position and orientation of the resulting actuator.
If you define the actuator as action only, then the J Part text box is disabled and no reaction is exerted.
Learn more about actuators, such as creating symmetrical pairs, using application area and identifier
attributes, and defining limits.
To create/modify a point-torque actuator:
1. From the Build menu, point to Actuators, point to Point Torque, and then select New/Modify.
123
Working with Components
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Point Torque
Actuator.
3. Select OK.
Variable Actuators
A variable actuator is a user-defined element consisting of a data element variable and a series of
additional elements, such as strings and arrays. A variable actuator can be particularly useful where
either parts or joints cannot be referenced. An example of a variable actuator is the velocity of a vehicle:
the function could define a changing velocity which is then referenced by several other modeling
components.
Learn more about actuators, such as creating symmetrical pairs, using application area and identifier
attributes, and defining limits.
To create/modify a variable actuator:
1. From the Build menu, point to Actuators, point to Variable, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Variable
Actuator.
3. Select OK.
Set Function
You can use the set function menu item to modify or replace the function that you defined.
You can use the Function Builder to define functions.
To set actuator function:
1. From the Build menu, point to Actuators, and then select Set Function.
2. Press F1 and then follow the instructions in the dialog box help for Actuator Set Function.
3. Select OK.
Set Activity
You can use the set activity menu option to set the actuator to be either active or not active. The not active
option is particularly useful when actuator elements are not required.
To set actuator activity:
1. From the Build menu, point to Actuators, and then select Set Activity.
2. Press F1 and then follow the instructions in the dialog box help for Actuator Set Activity.
3. Select OK.
Adams/Car

124
Condition Sensors
A condition sensor is a user-defined element that consists of a data element array and strings. It references
an existing variable class element (data element variable or measure solver computed), which is then tied
to the label and unit strings by the array. The array also encapsulates a request (for plotting convenience)
and a units conversion factor.
In essence, a condition sensor represents a relationship between a measurable solver quantity (the
variable class object) and a string label identifier that can be used in an event file (.xml) to define a
condition for Adams/Car full-vehicle analyses.
Use of Condition Sensors in Adams/Car
Adams/Car browses the assembly for condition sensor elements prior to each vehicle analysis and
updates the data element end_conditions_array with the derived list. At the beginning of the simulation,
the Standard Driver Interface (SDI) then uses the specified end condition measure string in the driver
control file to identify the associated variable class object in the dataset, that calculates the quantity the
end condition sensor should compare to the target value.
This architecture allows you to extend the provided set of standard end conditions. If, for example, a
ramp-steer like custom vehicle event should be ended when the turn radius falls short of a certain
threshold, you could:
add a variable class element to calculate the desired turn radius
variable name =.__MDI_SDI_TESTRIG.body_turn_radius
function =(vx
2
+vy
2
)
1.5
/ (vx*ay - vy*ax)
add a condition sensor referencing the variable above
label ="radius"
variable =.__MDI_SDI_TESTRIG.body_turn_radius
units =length
Then, you could use this new condition sensor with the following line in your driver control file:
( END_CONDI TI ONS)
{measur e t est val ue al l owed_er r or f i l t er _t i me del ay_t i me gr oup}
' RADI US' ' | <' 20000. 0 500. 0 0. 0 0. 0
Creating or Modifying Condition Sensors
To create/modify condition sensors:
1. From the Build menu, point to Condition Sensors, and then select New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify Condition
Sensor.
3. Select OK.
125
Working with Components
Feedback Channels
A feedback channel is a special user-defined element that contains a series of entities such as
Adams/Solver measures and Adams/View variables. Creating a feedback channel effectively
corresponds to creating a measure (Adams/Solver variable). It is then possible to display the measure.
For information on creating, displaying, and managing strip charts based on measures, see the
Adams/View online help.
Feedback channels are used in the __MDI_SUSPENSION_TESTRIG for the controller. Your template-
based product creates two channels:
Raw_channel - Controls an absolute value.
Offset_channel - Controls desired inputs for a deviation.
You can create feedback channels either as a symmetrical pair or individually.
Each feedback channel has an application area and a unique identifier. The application area provides
information about the intended purpose of the feedback channel. For example, you may want to specify
an application area for engine velocity with the identifier specifying that the velocity will be at the crank.
The following are possible naming schemes:
Appl i cat i on ar ea = engi ne_vel oci t y
I dent i f i er = engi ne_vel oci t y_cr ank
If you create feedback channels as a symmetrical pair, then you can define separate left and right
functions. You can use the Function Builder to define functions.
You can offset the raw signal of the feedback channel by a desired real value. Entering a real number in
this text box causes the Template Builder to create an additional measure whose function is the same as
the raw channel, but it is offset by the specified value.
Creating or Modifying User-Function Feedback Channel
To create or modify a user-function feedback channel:
1. From the Build menu, point to Feedback Channels, point to User Function, and then select
New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify User-Function
Feedback Channel.
Setting Function
You can use the set function menu to modify or replace the function that you defined. Note that you have
the option to specify a routine instead of a function.
To set feedback channel function:
1. From the Build menu, point to Feedback Channels, and then select Set Function.
Adams/Car

126
2. Press F1 and then follow the instructions in the dialog box help for Set Feedback Channel
Function.
Setting Offset
You can use the set offset menu to modify the offset applied to the raw measured channel. You can toggle
the activity of the offset on or off.
To set feedback channel offset:
1. From the Build menu, point to Feedback Channels, and then select Set Offset.
2. Press F1 and then follow the instructions in the dialog box help for Set Feedback Channel Offset.
127
Working with Components
Data Elements, Requests and Variables
General Data Elements
General data elements are elements whose values are stored in property files.
The general data elements group includes:
General Parameter
General Spline
General Variable
General Parameters
The general parameter is an Adams/View variable whose real value is based on a value stored in a
property file data block. The property file must be in the neutral file format of your template-based
product. When your template-based product reads the property files, it updates the general parameter
variable entity with the appropriate real value stored in the property file. The data block and attribute
names in the Create General Parameter dialog box identify the data that is being accessed from the
property file.
Adams/Car uses a general parameter to model the piston area within a steering system. The steering
system includes a data block as follows:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GENERAL_PARAMETER
[ GENERAL_PARAMETER]
USAGE = ' r ack_pi st on_ar ea'
SYMMETRY = ' si ngl e'
PROPERTY_FI LE =
' mdi ds: / / acar _shar ed/ st eer i ng_assi st s. t bl / mdi _st eer _assi st . st e'
DATA_BLOCK = ' STEERI NG_ASSI ST'
ATTRI BUTE_NAME = ' pi st on_ar ea'
The parameter DATA_BLOCK refers to the sub-block (steering_assist) in which the parameter can be
found. The USAGE keyword describes the name of the attribute whose value must be located. The
example below shows the data for the piston_area referenced above:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - STEERI NG_ASSI ST
[ STEERI NG_ASSI ST]
pi st on_ar ea <ar ea> = 490. 87
In this case, the general parameter variable (rack_piston_area) is set to 490.87.
If your template-based product does not find the specified data blocks in the selected property file, then
it issues a warning and the general parameter retains its default value (0.0).
Adams/Car

128
To create or modify a general parameter:
1. From the Build menu, point to General Data Elements, point to Parameter, and then select
New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify General
Parameter.
3. Select OK.
General Splines
The general spline is a spline whose values are stored in a property file. The property file must be in the
neutral file format of your template-based product. This method of creating splines allows great
flexibility: you can define the splines in your model depending on the numerical content of the selected
property files. When your template-based product reads the property files, it updates the spline entities
with the appropriate referenced values stored in the property files. The data that is being accessed from
the property file is identified by the data block and data sub-block names in the Create General Spline
dialog box. This allows for a very quick and efficient way to modify your data, without manually
modifying the data within an Adams spline.
For example, you could store the boost curve characteristics of many different steering systems in
separate property files and then test different steering systems by referencing those property files. If your
template-based product does not find the specified data blocks in the selected property file, then it issues
a warning and the spline retains its default values.
You can also create a spline using the Build ->Data Element ->Spline menus.This spline differs from
the general spline in a couple of subtle different ways:
A data element spline stores its data within the template and does not reference an external data
file defined by the neutral file format (TeimOrbit). Therefore, simple changes in data require that
you manually manipulate this spline in the Template Builder.
Because you cannot make variations to the spline data within the standard user environment, you
cannot carry out what-if scenarios, which you can easily do with the general spline.
Adams/Car uses a general spline to model steering characteristics. The steering subsystem includes a data
block as follows:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GENERAL_SPLI NE
[ GENERAL_SPLI NE]
USAGE = ' st eer i ng_assi st '
SYMMETRY = ' si ngl e'
TYPE = ' t wo_di mensi onal '
PROPERTY_FI LE =
' mdi ds: / / acar _shar ed/ st eer i ng_assi st s. t bl / mdi _st eer _assi st . st e'
CURVE_NAME = ' st eer i ng_assi st '
( COMMENTS)
{comment _l i ne}
' Exampl e of a st eer i ng assi st spl i ne'
129
Working with Components
The parameter steering_assist then refers to a sub-block of information within your property file. When
your product reads the property file, it populates the general spline with the data. The following shows
the data block for the steering_assist spline:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - STEERI NG_ASSI ST
[ STEERI NG_ASSI ST]
pi st on_ar ea <ar ea> = 490. 87
( XY_DATA)
{t bar _def l ect i on <angl e> del t a_pr essur e <MPa>}
- 3. 00 - 4. 00
- 2. 20 - 4. 00
- 1. 80 - 3. 60
- 1. 50 - 3. 00
- 1. 00 - 2. 00
- 0. 50 - 1. 00
0. 00 0. 00
0. 50 1. 00
1. 00 2. 00
1. 50 3. 00
1. 80 3. 60
2. 20 4. 00
3. 00 4. 00
This mechanism lets you generate and use both 2D and 3D splines with data stored within your database
structure by simply selecting the property file that stores the data and defining the data block.
To create or modify a general spline:
1. From theBuild menu, point to General Data Elements, point to Spline, and then select
New/Modify.
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify General Spline.
3. Select OK.
General Variables
The general variable is an Adams/Solver (data element) variable whose real value is stored in a property
file data block. The property file must be in the neutral file format of your template-based product. When
your template-based product reads the property files, it updates the general variable entity with the
appropriate real value stored in the property file. The data block and attribute names in the Create
General Variable dialog box identify the data that is being accessed from the property file.
The mechanism described for the general parameter is equally applicable to the general variable.
If your template-based product does not find the specified data blocks in the selected property file, then
it issues a warning and the general variable function retains its default value (0.0).
To create or modify a general variable:
1. From the Build menu, point to General Data Elements, point to Variable, and then select
New/Modify.
Adams/Car

130
2. Press F1 and then follow the instructions in the dialog box help for Create/Modify General
Variable.
3. Select OK.
Parameter Variables
You can use parameter variables to parameterize various elements and entities in your template-based
product. There are three types of parameter variables:
String - Does not contain units information, only a string value.
Integer - Does not contain units information, only an integer value.
Real - Can contain both a real value and a units specification.
Regardless of the parameter variable type, you can choose to hide the parameter variable from the
standard user. When you designate a parameter variable as hidden, the standard user will not be able to
access it using the Modify Parameter Variable dialog box in the Standard Interface.
Requests
You can use the Create Request dialog box to create a request statement and auxiliary variables used by
your template-based product. A request statement indicates a set of data you want Adams/Solver to
output in the request file (.req). You can explicitly do the following:
Output a set of displacements, velocities, accelerations, or forces with respect to existing
markers in your template. Learn about markers.
Define the generic request function
Use the user-written subroutine REQSUB to define nonstandard output. For information on user-
written subroutines, seeAdams/Solver Subroutines.
For information on creating requests, see the Adams/View online help.
Data Elements
Data elements include arrays, curves, splines, matrices, and strings.
For information on data elements, see the Adams/View online help
System Elements
System elements let you create general differential and/or algebraic equations.
For information on system elements, see the Adams/View online help
Working with Templates
Adams/Car

134
Template Basics
Your template-based product's library includes a variety of templates. Templates define the topology,
major role, and default parameters for subsystems. This tab includes template information that is specific
to your product.
For general template information, as well as information about the other files that make up model
architecture, see Building Models.
Conventions in Template Descriptions
For each template description, we provide the following:
Overview - A brief description of the template.
Template Name - The file name containing the template.
Major Role - The major role of the template.
Application - The types of analyses in which you can use the template.
Description - A complete description of the template and its use.
Limitations - Limitations of the template design that you should be aware of.
Files Referenced - The property or MNF files that the template uses to define such entities as
bushings, springs, and flexible bodies.
Topology - How the different entities of the template connect and how forces or torques are
transferred from one entity to another.
Parameter Variables - The parameter variables that store key information in the template. For
example, in templates, parameter variables often store angles for a suspension or the orientation
of axes.
Communicators - Communicators used in the template.
Notes - Miscellaneous information about the template.
When we refer to communicator and parameter names, we often use the notation [lr] to indicate that there
is both a left and right communicator or parameter of the specified name.
About Designing Templates
Adams/Car templates are parameterized models in which you define the topology of vehicle
components. Building a template means defining parts, how they connect to each other, and how the
template communicates information to other templates and the test rig.
At the template level, it is not crucial that you correctly define the parts, assign force characteristics, and
assign mass properties, because you can modify these values at the subsystem level. It is very important,
however, to correctly define part connectivity and exchange of information, because you cannot modify
them at the subsystem level.
135
Working with Templates
When building templates, keep in mind the assembly process. That is, make sure that your templates can
communicate to each other and can communicate to the test rigs you specify. In Adams/Car,
communicators define how models communicate.
Template Updates
The 2005 Driving Machine employs vehicle controllers developed by MSC.Software, commonly known
as Machine Control, which replaces DriverLite functionality, and Adams/SmartDriver. You must update
Adams/Car 2003 powertrain and body templates to make the compatible with the enhanced Driving
Machine in Adams/Car.
To better control speed and path, the 2005 Driving Machine needs additional information about the
vehicle. In particular, the speed controller uses a feed-forward function to ensure quick and accurate
response. However, this requires information about the available engine brake torque, engine drive
torque, brake torque, and aerodynamic drag. You supply this information by creating new output
communicators in your templates powertrain and body/aerodynamic templates. In addition, you must
also enter vehicle parameter data, such as overall steering ratio that is stored in the assembly file.
Powertrain Template Update
You should update powertrain templates by creating new output communicators to match the following
input communicators in the testrig used by the Driving Machine:
testrig.cis_max_engine_driving_torque
testrig.cis_max_engine_braking_torque
testrig.cis_engine_speed
testrig.cis_engine_map
Maximum engine driving and braking torques
For closed-loop machine control, the maximum engine driving and braking torques must be
communicated to the Driving Machine. The machine control uses these values in its feed forward
computations when determining the needed throttle and brake inputs to achieve a target longitudinal
acceleration. The Driving Machine expects powertrain templates to provide these torques as Solver
Variables. The torques should depend on the engine speed. You must add two output communicators to
your powertrain template and the corresponding entities that are output. The entities are data element
solver variables that compute the maximum driving and maximum braking torques the powertrain
subsystem produces at the current engine speed. Note that without this information machine control of
the vehicle speed and/or longitudinal acceleration will be unreliable.
In the powertrain.tpl and .powertrain_lt.tpl template files distributed in the shared car database, there are
Adams/Solver VARIABLEs with functions computing the maximum powertrain torque (fully open
throttle) and maximum powertrain brake torque (closed throttle):
AKI SPL( MAX( 0, VARVAL( engi ne_speed) / ucf _angl e_t o_r adi ans) , 1, gss_en
gi ne_t or que)
Adams/Car

136
AKI SPL( MAX( 0, VARVAL( engi ne_speed) / ucf _angl e_t o_r adi ans) , 0, gss_en
gi ne_t or que)
These functions interpolate the 3D engine map spline at the current engine speed for at full throttle (max
engine driving torque) and closed (0) throttle position (max engine braking torque).
The output communicators you create to output these Adams/Solver VARIABLE are:
Name: engine_driving_torque
Matching Name: engine_maximum_driving_torque
Entity Type: solver_variable
Minor Role: inherit
Entity: engine_driving_torque
Name: engine_braking_torque
Matching Name: engine_maximum_braking_torque
Entity Type: solver_variable
Minor Role: inherit
Entity: engine_braking_torque
Engine Map
If your powertrain contains an engine map spline (torque vs. engine speed and throttle position), you can
output the spline to the Driving Machine via an output communicator to achieve better control of speed
and longitudinal acceleration. However, the engine map is optional. Define the engine_map output
communicator as:
Name: engine_map
Matching Name: engine_map
Entity Type: spline
Minor Role: inherit
Entity: gss_engine_torque
In the templates powertrain.tpl and powertrain_lt.tpl distributed in the shared car database, the
engine_map output communicators reference the gss_engine_torque spline entity. In your own templates,
choose the appropriate spline.
The engine speed is a solver variable outputting the engine speed in radians/s.
Engine speed
In the case of a closed-loop controller on the vehicle forward velocity, you must define an output
communicator in your powertrain template, as follows:
Name: engine_speed
Matching Name: engine_speed
137
Working with Templates
Entity Type: solver_variable
Minor Role: inherit
Entity: engine_speed
The solver variable, engine_speed, represents the engine rotational velocity expressed in angular/time
units [rad/second]. In the powertrain template distributed in the shared car database , engine_speed is
defined as MAX(0,DIF(._powertrain.engine_omega)).
The __mdi_sdi_testrig references the output communicator you define and SmartDriver uses that
communicator in the smart_driver_controller_inputs_array. The SmartDriver controller input array
references various entities used to sense certain vehicle states. Adding the engine_speed communicator
enables the longitudinal controller so you can perform a constant-speed maneuver or any other type of
closed-loop machine control.
Aero Drag Force
If your vehicle model includes aerodynamic forces, then the drag force affects the longitudinal dynamics
of the vehicle. The feed-forward speed controller can account for the drag force when predicting the
throttle position needed to follow velocity or acceleration profile, if you create an output communicator
that passes the aerodynamic drag force to the __mdi_sdi_testrig. If your vehicle model does not include
aerodynamic forces, then you do not need to create an output communicator for the drag force.
The chassis template delivered in the shared car database, for example, has an aerodynamic force
modeled using a GFORCE. The GFORCEs drag (longitudinal) force component is measured in a solver
VARIABLE named aero_drag_force with this function expression:
GFORCE( aer o_f or ces, 0, 4, aer o_dr ag_r ef er ence_mar ker )
Then, the aerodynamic drag is output to the __mdi_sdi_testrig using output communicator of type solver
variable:
Name: aero_drag_force
Matching Name: aero_drag_force
Entity Type: solver_variable
Minor Role: inherit
Entity: aero_drag_force
Other Vehicle Parameters
Some sets of quantities that are used by the Adams/SmartDriver lateral and longitudinal controllers
cannot be easily inferred from the vehicle model. These quantities are defined in the test rig as parameter
variables and are easily accessible. To modify vehicle parameters, display the Set Full-Vehicle
Parameters dialog. From the Simulate menu, point to Full Vehicle Analysis, and then select Set Full-
Vehicle Parameters.
In the resulting dialog box, you can set the following ratios that affect the lateral dynamics of the vehicle,
providing Adams/SmartDriver information about the characteristics of the steering system. Bad values
Adams/Car

138
almost certainly guarantee solver failure in closed-loop events or, if successful, the vehicle will most
certainly be off course.
Steering Ratio - Dimensionless ratio between the steering wheel angle and the road wheel
angle. You can obtain this value by running a steering analysis on the front suspension and
steering assembly.
Steering Rack Ratio - Ratio (angle/length) between the steering hand wheel and the rack
displacement expressed in S.I. units. This parameter influences the response of the controller
only when driving by force/displacement.
The following parameters help Adams/SmartDriver in predicting and calculating the brake signal:
Max. Front/Rear Brake Torque - Maximum torque, expressed in model units, representing the
torque generated for each front/rear brake in condition of maximum brake demand, also
expressed in model units.
Brake Bias - Front to rear dimensionless ratio. It can be computed as max_front_brake_torque /
(max_front_brake_torque +max_rear_brake_torque).
These parameters are saved to the assembly file, as well as to the test rig in session.
Creating Topology for Your Templates
Topology in Adams/Car consists of creating elements, such as hardpoints, parts, attachments, and
parameters that define subsystems, as explained next:
Creating hardpoints - You first create hardpoints. Hardpoints are the Adams/Car elements that
define all key locations in your model. They are the most elementary building blocks that you
can use to parameterize locations and orientations for higher-level entities. Hardpoint locations
define most parts and attachments. Hardpoints are only defined by their coordinate locations.
Creating parts - Once youve defined hardpoints, you create parts and define them using the
hardpoints that you created. In this tutorial, you create two types of parts: general parts, such as
control arm and wheel carrier, and mount parts.
Creating attachments - Finally, you create the attachments, such as joints and bushings, and
parameters which tell Adams/Car how the parts react in relation to one another. You can define
attachments for the compliant and kinematic analysis modes. The compliant mode uses
bushings, while the kinematic mode uses joints.
Before you begin to build a template, you must decide what elements are most appropriate for your
model. You must also decide which geometries seem most applicable to each part or whether you want
any geometry at all. Once youve decided, you create a template and create the basic topology for it.
139
Working with Templates
Working with Communicators
You use communicators to exchange of information between subsystems, templates, and the test rig in
your assembly.
This topic includes information for Adams/Car communicators. For general information on
communicators, see the Build tab.
Learn more about working with communicators in Adams/Car:
Communicators in the Suspension Test Rig
Communicators in the SDI Test Rig
Matching Communicators with Test Rigs
Communicators in the Suspension Test Rig
The following tables describe the input and output communicators in the suspension test rig
(.__MDI_SUSPENSION_TESTRIG). In the tables, the notation:
[lr] indicates that there is both a left and right communicator of the specified name, as in
ci[lr]_camber_angle.
s indicates a single communicator, as in cis_steering_rack_joint.
Communicators in the Suspension Test Rig
The communicator:
Belongs to the
class:
From
minor
role: Receives:
ci[lr]_camber_angle parameter_real any Camber angle value from the suspension
subsystem. Sets the correct orientation of
the test rig wheels.
ci[lr]_diff_tripot location any Location of the differential.
ci[lr]_toe_angle parameter_real any Toe angle value from the suspension
subsystem. Sets the correct orientation of
the test rig wheels.
ci[lr]_suspension_mount mount any Part to which the test rig wheels can attach.
ci[lr]_suspension_upright mount any Upright part from suspension subsystem.
ci[lr]_jack_frame mount any Not matched (fixed to ground).
ci[lr]_wheel_center location any Location of the wheel center from the
suspension subsystem. Test rig wheels
attach to the suspension at that location.
Adams/Car

140
Output Communicators in Suspension Test Rig
Communicators in the SDI Test Rig
The following tables describe the input and output communicators in the SDI test rig
(.__MDI_SDI_TESTRIG). In the tables, the notation [lr] indicates that there is both a left and right
communicator of the specified name.
Input Communicators in SDI Test Rig
cis_driveline_active parameter_integer any Integer value stored in the suspension
template/subsystem that indicates the
activity of the drivetrain.
cis_powertrain_to_body mount any Part to which differential outputs are
constrained.
cis_leaf_adjustment_steps parameter_integer any Integer value stored in the leaf spring
template (currently not available).
cis_steering_rack_joint joint_for_motion any Steering-rack translational joint from the
steering subsystem.
cis_steering_wheel_joint joint_for_motion any Steering-wheel revolute joint from the
steering subsystem.
cis_suspension_parameters_ARRAY array any Array used in the suspension characteristic
calculations; comes from the suspension
subsystems.
The communicator:
Belongs to the
class:
From
minor
role: Receives:
The communicator:
Belongs to
the class:
From
minor
role: Outputs:
cos_leaf_adjustment_multiplier array any Leaf Spring toolkit. It is currently not supported in
the standard product.
cos_characteristics_input_ARRAY array any Suspension, vehicle, and test-rig parameters array
IDs used by suspension characteristics
calculations routines.
co[l,r]_tripot_to_differential mount any Outputs the ge[lr]_diff_output parts.
cos_tire_forces_array_left array any Outputs array of Adams IDs used by the
conceptual suspension module.
cos_tire_forces_array_right array any Outputs array of Adams IDs used by the
conceptual suspension module.
141
Working with Templates
The communicator:
Belongs to the
class:
From
minor
role: Receives:
cis_body_subsystem mount inherit Output from the body subsystem. It indicates
the part that represents the body.
cis_chassis_path_reference marker any Marker from the body subsystem. It is used to
measure path, roll, and sideslip error in a
constant radius cornering maneuver.
cis_driver_reference marker any Marker from the body subsystem. It is used in
Adams/Driver simulations.
cis_engine_rpm solver_variable any Adams/Solver variable for engine revolute
speed, in rotations per minute, from the
powertrain subsystem.
cis_engine_speed solver_variable any Adams/Solver variable for engine revolute
speed, in radians per second, from the
powertrain subsystem.
cis_measure_for_distance marker any Marker used to measure the distance traveled
in the forward direction of the vehicle, from
the body subsystem.
cis_diff_ratio parameter_real any Real parameter variable for final drive ratio,
from the powertrain subsystem.
cis_steering_rack_joint joint_for_motion front Steering-rack translational joint from the
steering subsystem.
cis_steering_wheel_joint joint_for_motion front Steering-wheel revolute joint from the
steering subsystem.
cis_max_brake_value parameter_real any Output from brake subsystem (maximum
brake signal value).
cis_max_engine_speed parameter_real any Output from powertrain subsystem (maximum
engine rpm value).
cis_max_gears parameter_intege
r
any Output from powertrain (maximum number of
allowed gears).
cis_max_rack_displacement parameter_real any Output displacement limits from steering
subsystem. Used by the Standard Driver
Interface.
cis_max_rack_force parameter_real any Output force limits from steering subsystem.
Used by the Standard Driver Interface.
cis_max_steering_angle parameter_real any Output angle limits from steering subsystem.
Used by the Standard Driver Interface.
Adams/Car

142
Output Communicators in SDI Test Rig
cis_max_steering_torque parameter_real any Output from steering subsystem.
cis_max_throttle parameter_real any Output from powertrain (maximum value of
throttle signal).
cis_min_engine_speed parameter_real any Output from powertrain subsystem (minimum
engine rpm value, used for shifting strategy).
cis_rotation_diff diff any Output from powertrain (it is a differential
equation used to measure crankshaft
acceleration; its integral is used for engine
rpm).
cis_transmission_spline spline any Spline for transmission gears (output from
powertrain: reduction ratios for every gear).
cis_transmission_input_omega solver_variable any The transmission input engine variable from
the powertrain template.
cis_clutch_diff diff any Clutch slip differential equation from the
powertrain template.
cis_clutch_displacement_ic solver_variable any The clutch initial displacement (engine
crankshaft torque at static equilibrium) from
the powertrain template.
ci[lr]_front_suspension_mount mount front The hub parts (wheel carriers) from
suspension templates (front and rear)
ci[lr]_rear_suspension_mount mount rear The hub parts (wheel carriers) from
suspension templates (front and rear)
The communicator:
Belongs to the
class:
From
minor
role: Receives:
The communicator:
Belongs to the
class:
From
minor
role: Outputs:
cos_brake_demand solver_variable any Brake demand to the brake subsystem.
cos_clutch_demand solver_variable any Clutch demand to the powertrain subsystem.
cos_desired_velocity solver_variable any Desired velocity Adams/Solver variable. Other
subsystems can reference it.
cos_initial_engine_rpm parameter_real any Initial engine RPM real variable to the powertrain
subsystem.
cos_throttle_demand solver_variable any Throttle demand to the powertrain subsystem.
143
Working with Templates
Matching Communicators with Test Rigs
When you create a template, you must meet the following conditions to ensure that an analysis will work
with your new template:
The template must be compatible with other templates and with the test rigs, for example, the
.__MDI_SUSPENSION_TESTRIG. The template must also contain the proper output
communicators.
If the template is a suspension template (for example, its major role is suspension), the template
must contain a suspension parameters array. The suspension parameters array identifies to the
suspension analysis how the steer axis should be calculated and whether the suspension is
independent or dependent.
For example, for a suspension template to be compatible with the suspension test rig, the suspension
template must contain either the mount or the upright output communicators. In the following table, the
notation [lr] indicates that there is both a left and right communicator of the specified name.
Output Communicators in Suspension Templates
The co[lr]_suspension_mount output communicators publish the parts to which the test rig wheels
should mount. As you create these communicators, ensure that you set their minor role to inherit. By
setting the minor role to inherit, the communicator takes its minor role from the minor role of the
subsystems that use your suspension template.
cos_transmission_demand solver_variable any Transmission (gear) demand to the powertrain
subsystem.
cos_sse_diff1 diff any Differential equation computed during quasi-
static prephase, used to control the vehicle
longitudinal dynamics.
cos_std_tire_ref location any X,Y,Z location of standard tire reference marker
(positioned appropriately at the correct height,
including 2% of road penetration).
The communicator:
Belongs to the
class:
From
minor
role: Outputs:
The communicator: Belongs to the class: From minor role: Receives:
co[lr]_suspension_mount mount inherit suspension_mount
co[lr]_suspension_upright mount inherit suspension_upright
co[lr]_wheel_center location inherit wheel_center
co[lr]_toe_angle parameter_real inherit toe_angle
co[lr]_camber_angle parameter_real inherit camber_angle
Adams/Car

144
The co[lr]_wheel_center output communicators publish the location of the wheel centers to the test rig
so the test rig can locate itself relative to the suspension. As you create these types of communicators,
make sure that you also leave their minor role set to inherit.
The toe and camber communicators (co[lr]_toe_angle and co[lr]_camber_angle) publish, to the test rig,
the toe and camber angles set in the suspension so the test rig can orient the wheels correctly.
145
Working with Templates
Templates
Disc-Brake System
Overview
The disc-brake system template represents a device that applies resistance to the motion of a vehicle.
Figure 1 Disc-Brake System
Template name
_brake_system_4Wdisk
Major role
Brake.
Application
Full-vehicle analysis to simulate the effect of braking on the dynamics of the vehicle.
Adams/Car

146
Description
The disc-brake system template represents a simple model of a brake system. It applies a rotational torque
between the caliper and the rotor.
Files referenced
None.
Topology
The caliper part is mounted to the suspension upright, while the rotor is mounted to the wheel. A
rotational SFORCE is applied between the two parts.
Parameters
The toe and camber values that the suspension subsystem publishes define the spin axis orientation. In
addition, the braking torque is expressed as a function of a number of parameters.
The following table lists the parameters in the template.
Limitations
The disc-brake template is a simple model of a brake system. It does not model the complex interaction
between the rotor and caliper.
The parameter: Takes the value: Its units are:
front_brake_bias Real No units
front_brake_mu Real No units
front_effective_piston_radius Real mm
front_piston_area Real mm2
front_rotor_hub_wheel_offset Real mm
front_rotor_hub_width Real mm
front_rotor_width Real mm
max_brake_value Real No units
rear_brake_mu Real No units
rear_effective_piston_radius Real mm
rear_piston_area Real mm2
rear_rotor_hub_wheel_offset Real mm
rear_rotor_hub_width Real mm
rear_rotor_width Real mm
147
Working with Templates
Communicators
Mount parts provide the connectivity between the template and suspension subsystems. Input
communicators receive information about the toe and camber suspension orientation and the wheel-
center location. Input to the brake system is brake demand.
The following table lists the communicators in the template.
The communicator: Belongs to the class: Has the role:
ci[lr]_front_camber_angle parameter_real front
ci[lr]_front_rotor_to_wheel mount front
ci[lr]_front_toe_angle parameter_real front
ci[lr]_front_wheel_center location front
ci[lr]_front_suspension_ upright mount front
ci[lr]_rear_rotor_ro_wheel mount rear
ci[lr]_rear_suspension_ upright mount rear
ci[lr]_rear_toe_angle parameter_real rear
ci[lr]_rear_camber_angle parameter_real rear
ci[lr]_rear_wheel_center location rear
cis_brake_demand solver_variable any
cos_max_brake_value parameter_real inherit
Adams/Car

148
Double-Wishbone Suspension
Overview
A double-wishbone suspension is one of the most common suspension designs. It uses two lateral control
arms to hold the wheel carrier and control its movements.
Notes: The torque on the rotor depends on a number of parameters. The front right torque function
is:
T = 2 x Pi st onAr ea x Br akeLi nePr essur e x x
Ef f ect i vePi st onRadi us x STEP
where:
BrakeLinePressure is calculated as follows:
Br akeLi nePr essur e = Br akeBi as * Br akeDemand * 0. 1
where:
BrakeBias defines the front and rear proportioning of the brake line pressure.
Note that although the term is constant, in reality, simple hydraulic systems
allow dynamic front and rear proportioning of the brake pressure depending on
a number of factors, including longitudinal slip angle of the tires and dynamic
load transfer.
BrakeDemand is the force on the pedal (N) as it is output from the analysis.
0.1 is a conversion factor that converts into pressure the force applied on the
pedal.
STEP is the function of the rotation of the rotor to wheel and suspension upright
markers. The function prevents backward spinning of the wheels. STEP is a simple
function that measures the WZ rotation of the marker on the rotor with respect to
the marker on the upright and reverses the sign of the applied torque if the wheel is
spinning backward.
149
Working with Templates
Figure 2 Double-Wishbone Suspension
Template name
_double_wishbone
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The double-wishbone template represents the most common design for doublewishbone suspensions.
You can use the template as a front steerable suspension or as a rear non-steerable suspension.
You can set subsystems based on this template to kinematic or compliant mode. In kinematic mode,
Adams/Car replaces the bushings that connect the control arms to the body mount part with a
corresponding purely kinematic constraint. Adams/Car also does this for the top mount and lower strut
mount.
Adams/Car

150
You can deactivate the subframe part, as well as the halfshafts. A spring acts between the upper mount
part and the lower strut. A bumpstop acts between the upper and lower strut parts.
Files referenced
Bushings, springs, dampers, and bumpstops property files
Topology
The lower wishbone connects to a subframe or to the mount if you've deactivated the subframe. The
upper wishbone connects to the body mount part. A spherical joint constrains the upright part to the upper
and lower arms.
A spherical joint also connects the tie rods to the uprights. Tie rods attach to mount parts through convel
joints. Convel joints also connect the tripots to the drive shafts. A static rotation control actuator locks
the rotational degree of freedom of the hub during quasi-static analyses.
Parameters
Toe and camber variables define wheel spin axis, spindle part, and spindle geometry. The following table
lists the parameters in the template.
The joint: Connects the part: To the part:
jklrev_lca gel_lower_control_arm ges_subframe
jolsph_lca_balljoint gel_upright gel_lower_control_arm
jolsph_tierod_outer gel_tierod gel_upright
jolcon_tierod_inner gel_tierod mtl_tierod_to_steering
josfix_subframe_rigid ges_subframe mts_subframe_to_body
jklhoo_top_mount_kinematic gel_upper_strut mtl_strut_to_body
jolsph_uca_balljoint gel_upper_control_arm gel_upright
jolcyl_lwr_upr_strut gel_lower_strut gel_upper_strut
jklrev_uca gel_upper_control_arm mtl_uca_to_body
jklhoo_lwr_strut_kinematic gel_lower_strut gel_lower_control_arm
joltra_tripot_to_differential gel_tripot mtl_tripot_to_differential
jolcon_drive_sft_int_jt gel_tripot gel_drive_shaft
jolcon_drive_sft_otr gel_drive_shaft gel_spindle
151
Working with Templates
Communicators
Mount parts provide connectivity from the template to body subsystems and the differential. Output
communicators publish toe, camber, steer axis, and wheel-center location information to the appropriate
subsystems and the test rig. The following table lists the input and output communicators.
The parameter: Takes the value: Its units are:
phs_driveline_active Integer No units
phs_kinematic_flag Integer No units
pvs_subframe_active Integer No units
pv[lr]_toe_angle Real Degrees
pv[lr]_camber_angle Real Degrees
pv[lr]_drive_shaft_offset Real mm
The communicator: Belongs to the class: Has the role:
ci[lr]_ARB_pickup location inherit
ci[lr]_strut_to_body mount inherit
ci[lr]_tierod_to_steering mount inherit
ci[lr]_tripot_to_differential mount inherit
ci[lr]_uca_to_body mount inherit
cis_subframe_to_body mount inherit
co[lr]_arb_bushing_mount mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_droplink_to_ suspension mount inherit
co[lr]_suspension_mount mount inherit
co[lr]_suspension_upright mount inherit
co[lr]_toe_angle parameter_real inherit
co[lr]_tripot_to_differential location inherit
co[lr]_wheel_center location inherit
cos_driveline_active parameter_integer inherit
cos_engine_to_subframe mount inherit
cos_rack_housing_to_suspension_subframe mount inherit
cos_suspension_parameters_ARRAY array inherit
Adams/Car

152
Flexible LCA Double-Wishbone Suspension
Overview
The flexible LCA double-wishbone suspension template is similar to the standard Double-Wishbone
Suspension. In the flexible template, however, a flexible representation replaces the rigid body lower
control arms.
Figure 3 Flexible LCA Double-Wishbone Suspension
Template name
_double_wishbone_flex
Major role
Suspension
Note: The integer parameter variables allow you to activate and deactivate the subframe part and
the driveshafts. The kinematic flag variable toggles between kinematic and compliant
mode.
153
Working with Templates
Application
Suspension and full-vehicle assemblies
Description
Flexible bodies replace the left and right rigid lower control arms.
MNF files referenced
LCA_left_shl.mnf and LCA_right_shl.mnf. In addition, because of the way the node IDs are numbered,
you can swap the default modal neutral files with LCA_left_tra.mnf and LCA_right_tra.mnf.
Topology
In addition to the general topology described for the Double-Wishbone Suspension, this template uses
interface parts to connect the flexible bodies to the rest of the suspension. Node IDs define the location
of interface parts.
Parameters
Refer to the Double-Wishbone Suspension.
Communicators
Refer to the Double-Wishbone Suspension.
ISO Road Course
Overview
The ISO road course template represents a closed circuit with an ISO lane-change section.
Adams/Car

154
Figure 4 ISO Road Course
Template name
_ISO_road_course
Major role
Environment
Application
With the optional Adams/Driver module
Description
The ISO road course template consists of shell elements and frustums, and represents a closed circuit
with an ISO lane-change section.
Files referenced
Geometry elements (shells) reference shell files stored in the Adams/Car shared database in the
shell_graphics.tbl directory. The shell files are Iso_road_inr.shl, Iso_road_otr.shl, and Iso_road_c.shl.
Topology
All the graphic elements are created on the ground part.
155
Working with Templates
Parameters
Contains no parametric information.
Communicators
Contains no communicators.
MacPherson Suspension
Overview
The MacPherson suspension design in this template is similar to the SLA geometry, and is probably the
most often used suspension for passenger cars in the world. It uses a telescopic strut incorporating a
damper element. The upper end is fixed to the body and the lower end is located by linkages. The
MacPherson design provides advantages in packaging, and it is generally used for front-wheel-drive
cars.
Note: The corresponding Adams/Driver representation of this course is available as a trace on the
x-y plane and lane width in the driver_roads.tbl directory. The file is called
ISO_road_course.drd. You can use the file to run full-vehicle analyses with Adams/Driver.
Including the ISO road course template in your full-vehicle assembly adds a graphical
representation of the circuit.
Adams/Car

156
Figure 5 MacPherson Suspension
Template name
_macpherson
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The MacPherson suspension template represents the most common design for MacPherson suspensions.
You can use the template as a front steerable suspension or as a rear non-steerable suspension.
You can set the subsystems based on this template to kinematic or compliant mode. In kinematic mode,
Adams/Car replaces the bushings with the corresponding kinematic constraints. The bushings connect
the control arm and the damper strut to the body mount parts. You can also activate or deactivate
driveshafts.
157
Working with Templates
A spring acts between the upper strut part and the lower strut. Bumpstops and reboundstops are also
present.
Files referenced
Bushings, springs, dampers, bumpstops, and reboundstops property files
Topology
The MacPherson suspension template represents a standard design employing a one-piece lower control
arm (also known as A-arm) and a subframe. The upright to which the wheel mounts is located by the
lower control arm, the tie rod, and the strut. The lower control arm regulates the fore-aft and lateral
motions of the upright. The tie rod controls steering rotation of the upright, and the strut controls the
vertical motion of the upright and the side and front view rotations, as well. A static rotation control
actuator locks the rotational degree of freedom of the hub during quasi-static analyses.
The following table lists the topological information of the left side of the MacPherson suspension.
Parameters
Toe and camber variables in the template define the wheel spin axis, spindle part, and spindle geometry.
The following table lists the parameters in the templates.
The joint: Connects the part: To the part:
jklrev_lca gel_lower_control_arm ges_subframe
jolsph_lca_balljoint gel_upright gel_lower_control_arm
jolcyl_strut gel_upright gel_upper_strut
jolsph_tierod_outer gel_tierod gel_upright
jolcon_tierod_inner gel_tierod mtl_tierod_to_steering
jksfix_subframe_rigid ges_subframe mts_subframe_to_body
jklhoo_top_mount_kinematic gel_upper_strut mtl_strut_to_body
joltra_tripot_to_differential gel_tripot mtl_tripot_to_differential
jolcon_drive_sft_int_jt gel_tripot gel_drive_shaft
jolcon_drive_sft_otr gel_drive_shaft gel_spindle
jolrev_spindle_upright gel_spindle gel_upright
The parameter: Takes the value: Its units are:
phs_driveline_active Integer No units
phs_kinematic_flag Integer No units
Adams/Car

158
Communicators
Mount parts provide the connectivity from the template to the body subsystems and differential. Output
communicators publish toe, camber, steer axis, and wheel-center location information to the appropriate
subsystems and test rig. The following table lists the input and output communicators in the template.
pv[lr]_toe_angle Real Degrees
pv[lr]_camber_angle Real Degrees
pv[lr]_drive_shaft_offset Real mm
The communicator: Belongs to the class: Has the role:
ci[lr]_ARB_pickup location inherit
ci[lr]_strut_to_body mount inherit
ci[lr]_tierod_to_steering mount inherit
ci[lr]_tripot_to_differential mount inherit
cis_subframe_to_body mount inherit
co[lr]_arb_bushing_mount mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_droplink_to_ suspension mount inherit
co[lr]_suspension_mount mount inherit
co[lr]_suspension_upright mount inherit
co[lr]_toe_angle parameter_real inherit
co[lr]_tripot_to_differential location inherit
co[lr]_wheel_center location inherit
cos_driveline_active parameter_integer inherit
cos_rack_housing_to_ suspension_subframe mount inherit
cos_suspension_parameters_ARRAY array inherit
The parameter: Takes the value: Its units are:
Note: The integer parameter variables let you activate and deactivate the driveshafts. The
kinematic flag variable toggles between kinematic and compliant mode replacing the joints
with the corresponding elastic elements. For example, Adams/Car replaces the revolute
joints that connect the lower control arms to the subframe with bushings
159
Working with Templates
Multi-Link Suspension
Overview
The multi-link suspension represents an independent suspension model for use as a rear suspension.
Figure 6 Multi-Link Suspension
Template name
_multi_link
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The multi-link suspension template represents a common rear independent suspension design. It includes
a subframe (represented by the outline graphics) that is connected to the upper arm, to the lateral links,
and to the track rod. The suspension is nonsteerable and intended to be used as a rear suspension only.
Adams/Car

160
Files referenced
Springs, dampers, and bushings property files
Topology
Spherical joints, which are active in kinematic mode, connect the uprights to links. Bushings connect the
trailing links to the mount parts. Springs and dampers act between the trailing links and the body. A static
rotation control actuator locks the rotational degree of freedom of the hub during quasi-static analyses.
The following table provides a topological map of the template.
Parameters
Toe and camber variables in the template define the wheel spin axis, spindle part, and spindle geometry.
The following table lists the parameters in the templates.
The joint: Connects the part: To the part:
jklsph_hub_tl gel_Upright gel_Trailing_Link
jklhoo_trailing_link_body gel_Trailing_Link mtl_trailing_link_body
jklrev_ula_sbf gel_upper ges_Subframe
joltra_dpr_upr_dpr_lwr gel_Damper_Upper gel_Damper_Lower
jklsph_dpr_lwr_tl gel_Damper_Lower gel_Trailing_Link
jklhoo_dpr_spring_seat_upper gel_Damper_Upper mtl_Spring_Seat_Upper
jksfix_sbf_body ges_Subframe mtl_body_sbf_front
jklsph_hub_ll gel_Upright gel_lateral
jklsph_hub_tr gel_Upright gel_Track_Rod
jklhoo_sbf_ll ges_Subframe gel_lateral
jklhoo_sbf_tr ges_Subframe gel_Track_Rod
jklsph_hub_ula gel_Upright gel_upper
joltra_tripot_to_differential gel_tripot mtl_tripot_to_differential
jolcon_drive_sft_int_jt gel_tripot gel_drive_shaft
jolcon_drive_sft_otr gel_drive_shaft gel_spindle
jolrev_spindle_upright gel_spindle gel_Upright
The parameter: Takes the value: Its units are:
phs_driveline_active Integer No units
phs_kinematic_flag Integer No units
pvs_subframe_active Integer No units
161
Working with Templates
Communicators
The following table lists the communicators in the template.
Parallel-Link Steering System
Overview
The parallel-link steering system template is essentially a four-bar mechanism consisting of a pitman
arm, center link, and idler arm.
pv[lr]_toe_angle Real Degrees
pv[lr]_camber_angle Real mm
pv[lr]_drive_shaft_offset Real mm
The communicator: Belongs to the class: Has the role:
ci[lr]_body_sbf_front mount inherit
ci[lr]_body_sbf_rear mount inherit
ci[lr]_Spring_Seat_Upper mount inherit
ci[lr]_trailing_link_body mount inherit
ci[lr]_tripot_to_differential mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_suspension_mount mount inherit
co[lr]_suspension_upright mount inherit
co[lr]_tripot_to_differential location inherit
co[lr]_wheel_center location inherit
cos_driveline_active parameter_integer inherit
cos_suspension_ parameters_ARRAY array inherit
The parameter: Takes the value: Its units are:
Note: The integer parameter variables let you activate and deactivate the subframe part and the
driveshafts. The kinematic flag variable toggles between kinematic and compliant mode.
Adams/Car

162
Figure 7 Parallel-Link Steering
Template name
_parallel_link_steering
Major role
Steering
Application
Suspension and full-vehicle assemblies
Description
A recirculating ball steering gear transmits motion from the steering wheel to the pitman arm. The pitman
arm rotates to impart motion to the center link and idler arm. The translation of the center link pulls and
pushes the tie rods to steer the wheels.
Files referenced
Steering assist and torsion bar deflection property file. The default property file is mdi_steer_assis.ste,
stored in the steer_assist.tbl directory of the shared Adams/Car database.
163
Working with Templates
Topology
The recirculating ball steering gear consists of three major parts:
Ball screw
Rack
Sector
The steering wheel rotates the steering input shaft. A torsion bar attaches the steering input shaft to a ball
screw. The ball screw imparts translational motion to the steering gear through a coupler. The steering
gear, in turns, rotates the sector through a coupler, which is connected directly to the pitman arm shaft.
The following table maps the topology of the template.
The joint: Connects the part: To the part:
joshoo_column_intermediate ges_steering_column ges_intermediate_shaft
joshoo_intermediate_shaftinput ges_intermediate_shaft ges_input_shaft
josrev_steering_wheel ges_steering_wheel ges_column_housing
joscyl_steering_column ges_steering_column ges_column_housing
josfix_column_housing_to_housing_
mount
ges_column_housing mts_steering_column_to_body
jolsph_centerlink_arm ges_center_link gel_arm
jolrev_pitman_arm_steering_gear gel_arm swl_steering_gear_mount
josrev_ball_screw_steering_gear ges_ball_screw swl_steering_gear_mount
josrev_input_shaft_steering_gear ges_input_shaft swl_steering_gear_mount
jostra_rack_steering_gear ges_rack swl_steering_gear_mount
josfix_steering_gear_housing ges_steering_gear_housing swl_steering_gear_mount
josper_centerlink_pitman_arm ges_center_link gel_arm
vfo_steering_assist ges_rack swl_steering_gear_mount
gksred_ball_screw_input_shaft_lock josrev_ball_screw_steering
_gear
josrev_input_shaft_steering_
gear
grsred_steering_wheel_column_lock josrev_steering_wheel joscyl_steering_column
grsred_ball_screw_rack josrev_ball_screw_steering
_gear
jostra_rack_steering_gear
grsred_pitman_arm_rack jolrev_pitman_arm_steerin
g_gear
jostra_rack_steering_gear
Adams/Car

164
Parameters
A parameter variable switches between kinematic and compliant mode, effectively defining the status of
the ball screw input shaft lock reduction gear.
Communicators
The following table lists the communicators in the template.
Pitman Arm Steering System
Overview
The pitman arm steering system template is a simple steering system derived from a parallel-link design.
It is commonly used in trucks. It consists of a three-bar mechanism: pitman arm, draglink, and tie rod.
The communicator: Belongs to the class: Has the role:
ci[lr]_steering_gear_to_body mount inherit
ci[lr]_steering_gear_to_suspension_subframe mount inherit
cis_steering_column_to_ body mount inherit
co[lr]_tierod_to_steering mount front
cos_max_rack_ displacement parameter_real inherit
cos_max_rack_force parameter_real inherit
cos_max_steering_angle parameter_real inherit
cos_max_steering_torque parameter_real inherit
cos_steering_rack_joint joint_for_motion inherit
cos_steering_wheel_joint joint_for_motion inherit
Note: The parallel-link steering template contains general spline elements. The general spline
element gss_torsion_bar spline provides torque as a function of the angular deflection of
the input shaft relative to the ball screw. A switch part is also present. It allows you to
explore two different topological solutions. You can rigidly connect the steering gear to the
body or to the suspension_subframe part.
165
Working with Templates
Figure 8 Pitman Arm Steering System
Template name
_pitman_arm
Major role
Steering
Application
Suspension and full-vehicle assemblies
Description
A recirculating ball steering gear transmits motion from the steering wheel to the pitman arm. The pitman
arm rotates to impart motion to the draglink. The draglink pulls and pushes the tie rod and steers the
wheels.
Files referenced
The point torque actuator references the torsion_bar datablock in the mdi_steering.ste property file,
stored in the Adams/Car shared database, under the steer_assists.tbl table or directory.
Topology
The recirculating ball steering gear consists of three major parts:
Adams/Car

166
Ball screw
Rack
Sector
The steering wheel rotates the steering input shaft. The steering input shaft attaches to the ball screw
through a torsion bar, currently locked by a coupler. The ball screw imparts translational motion to the
rack, through a coupler. The rack, in turns, rotates the sector through a coupler.
The sector is connected directly to the pitman arm shaft. The pitman arm drags the draglink, which is
directly connected to the right wheel, and pulls the tie rod, connected to the left wheel. Spherical joints
connect the draglink and tie rod.
The following table maps the topology of the template.
The joint: Connects the part: To the part:
joshoo_column_intermediate ges_steering_column ges_intermediate_shaft
joshoo_intermediate_shaft_i
nput
ges_intermediate_shaft ges_input_shaft
josrev_steering_wheel ges_steering_wheel ges_column_housing
joscyl_steering_column ges_steering_column ges_column_housing
josfix_column_housing_to_h
ousing_mount
ges_column_housing mts_steering_column_to_body
josrev_pitman_arm_steering
_gear
mts_steering_gear_to_suspension
_subframe
ges_idle_arm
jossph_centerlink_arm ges_idle_arm ges_draglink
josrev_input_shaft_steering_
gear
ges_input_shaft mts_steering_gear_to_suspension
_subframe
josrev_ball_screw_steering_
gear
ges_ball_screw mts_steering_gear_to_suspension
_subframe
jostra_rack_steering_gear ges_rack mts_steering_gear_to_suspension
_subframe
jossph_draglink_to_tierod ges_draglink ges_tierod
grsred_steering_wheel_colu
mn_lock
josrev_steering_wheel joscyl_steering_column
gksred_ball_screw_input_sh
aft_lock
josrev_ball_screw_steering_gear josrev_input_shaft_steering_gear
grsred_pitman_arm_rack josrev_pitman_arm_steering_gea
r
jostra_rack_steering_gear
grsred_ball_screw_rack josrev_ball_screw_steering_gear jostra_rack_steering_gear
167
Working with Templates
Parameters
A parameter variable switches between kinematic and compliant mode, effectively defining the status of
the ball screw input shaft lock reduction gear.
Communicators
The following table lists the communicators in the template.
Powertrain System
Overview
The Adams/Car shared database includes a powertrain template, powertrain.tpl. The template models an
engine, manual transmission, and a limited-slip differential that may be used for a front engine, front-
wheel-drive vehicle, or a rear engine, rear-wheel-drive vehicle.
The communicator: Belongs to the class: Has the role:
ci[lr]_steering_gear_to_suspension_subframe mount inherit
cis_steering_column_to_ body mount inherit
cos_tierod_to_steering mount front
cos_draglink_to_steering joint_for_motion inherit
cos_steering_wheel_joint joint_for_motion inherit
Note: The pitman arm steering system template does not interface with any of the Adams/Car
shared database suspension templates because those suspension templates have tie rods. To
correctly assemble the pitman arm steering to a suspension subsystem, you must remove
the tie rods from the suspension. The draglink and the tie rod have to be mounted to the left
and right upright parts.
Adams/Car

168
Figure 9 Powertrain
Template name
_powertrain
Major role
Powertrain
Application
Full-vehicle assemblies
Description
The powertrain system template represents an engine, clutch, transmission, and differential:
Engine model - Consists of a single part (ges_engine) representing the total mass and inertia of
the engine block, clutch housing, and transmission. A general spline element
(gss_engine_torque) represents the engine's steady-state torque versus engine speed and throttle
position. Before any analysis, gss_engine_torque is updated by reading the engine torque versus
engine speed and throttle from a powertrain property file. For example,
mdids://acar_shared/powertrains.tbl/V8_240HP_400Nm.pwr.
169
Working with Templates
To allow for larger integration time steps during simulation, the engine crankshaft is not
included as a part in the templates. Instead of a rotating crankshaft part, a differential equation
(engine_omega) integrates the engine crankshaft's rotational acceleration (Adams/Solver
requires one integration time step for each 60 degrees of part rotation). The engine crankshaft's
rotational acceleration is the difference between the engine torque and the clutch torque divided
by the engine rotational inertia.
Clutch model - The clutch torque is modulated by the clutch demand, which ranges in value
from zero (0) to one (1):
A clutch demand of zero means that the driver's foot is off the clutch pedal and the clutch is
closed.
A clutch demand of one means that the driver has pushed the clutch pedal completely to the
floor and the clutch is open.
You can set the values of clutch demand, for which the clutch is completely closed or open,
using the parameter variables pvs_clutch_closed and pvs_clutch_open.
The clutch develops torque only when it is at least partially closed and there is some slip
displacement or slip speed between the engine crankshaft and the transmission input shaft.
When the clutch is closed, it acts like a torsional spring-damper, except that the maximum clutch
torque developed is limited by the clutch capacity, which you can modify (pvs_clutch_capacity).
You also set the clutch's torsional stiffness and damping. When the clutch is partially closed, the
clutch stiffness and damping, as well as the clutch capacity (torque), are scaled by the clutch
demand.
The clutch slip speed is the difference between the engine crankshaft and the transmission input
shaft rotational speeds. When the clutch is closed, the clutch slip displacement is the integral of
the clutch slip speed. When the clutch is open, the clutch slip displacement decays to zero with a
time constant given by pvs_clutch_tau.
Transmission model - The transmission model is simple: it applies the gear ratio selected by the
gear demand, and has no rotating inertia. The clutch torque is multiplied by the selected gear
ratio and applied to the differential input shaft. The differential input shaft speed is likewise
multiplied by the same ratio to determine the transmission input shaft speed. You can set the
number of gears and the ratio for each gear:
A gear number of zero (0) represents neutral.
A gear number of minus one (-1) represents reverse.
Differential model - The differential model has rotating left and right output shaft parts that
connect to half-shafts in suspension subsystems. The differential input shaft speed is the average
of the left and right output shaft speeds multiplied by the final drive ratio you enter. Likewise,
the transmission output torque is multiplied by the final drive ratio and then split equally
between the two output shafts. A reaction torque is applied about the longitudinal axis to the
ges_engine part.
The differential model includes a limited slip torque that acts between the left and right
differential output shafts. The torque depends on the difference between the output shaft speeds.
The limited slip torque-speed characteristic is read from a property file in the differentials.tbl.
Adams/Car

170
Files referenced
The file, V12_engine_map.pwr, stored in the powertrains.tbl directory, defines the engine map. The
differential references the MDI_viscous.dif property file, stored in the differentials.tbl directory. The
MDI_viscous.dif property file defines the slip torque-speed relationship as a two-dimensional spline.
Topology
The powertrain template contains very simple topological information because it is a functional
representation of the powertrain. The only general rigid parts, besides the engine body, are the diff
outputs and the revolute joints that connect the rigid bodies to the engine body.
Parameters
The following table lists the powertrain system template parameters.
The parameter: Takes the value: Its units are: Description:
phs_kinematic_flag Integer No units When flag =1, engine is rigidly
mounted to chassis; when flag =
0, engine is mounted on bushings.
Set from the Adjust menu.
pvs_clutch_capacity Real Torque Maximum torque clutch can
sustain with zero slip speed.
pvs_clutch_close Real No units Value of clutch demand at which
clutch is fully closed. Value
should be less than
pvs_clutch_open and in the range
of 0 and 1.
pvs_clutch_damping Real Torsional_damping Clutch damping torque per unit of
clutch slip speed.
pvs_clutch_open Real No units Value of clutch demand at which
clutch open.
pvs_clutch_stiffness Real Torsional_stiffness Clutch torque developed per unit
of clutch slip.
pvs_clutch_tau Real Time Time constant for clutch slip
decay when clutch is open.
pvs_ems_gain Real No units Proportional gain used in EMS
idle speed control
pvs_ems_max_throttle Real No units Value of throttle demand that
corresponds to the maximum
capability of the EMS system
171
Working with Templates
Communicators
Mount parts provide the connectivity from the template to the body subsystems. Output communicators
publish information, such as engine RPM and transmission spline. The following tables list the input and
output communicators in the powertrain system template.
Input Communicators
pvs_ems_trottle_off Real No units Value of throttle demand at which
EMS system engages idle speed
control
pvs_engine_idle_speed Real RPM Engine idle speed in RPM.
pvs_engine_inertia Real Inertia Engine rotational inertia. Must be
greater than zero.
pvs_engine_rev_limit Real RPM Maximum engine speed in RPM.
pvs_final_drive Real No units Differential input shaft (pinion) to
ring gear ratio.
pvs_gear_[1-6] Real No units Transmission input shaft to output
shaft ratio for gears 1 through 6.
pvs_graphics_flag Integer No units 1 =include powertrain graphics; 0
=do not include powertrain
graphics
pvs_max_gears Integer No units Number of gear ratios in the
transmission.
pvs_max_throttle Real No units Value of throttle demand for
which throttle is fully open
(throttle demand =0 is throttle
closed).
The communicator: Entity class: From minor role: Matching name:
ci[lr]_diff_tripot location inherit tripot_to_differential
ci[lr]_tire_force force inherit tire_force
cis_clutch_demand solver_variable inherit clutch_demand
cis_engine_to_subframe mount inherit engine_to_subframe
cis_initial_engine_rpm parameter_real any initial_engine_rpm
cis_powertrain_to_body mount inherit powertrain_to_body
The parameter: Takes the value: Its units are: Description:
Adams/Car

172
Output Communicators
cis_sse_diff1 diff inherit sse_diff1
cis_throttle_demand solver_variable inherit throttle_demand
cis_transmission_demand solver_variable inherit transmission_demand
The communicator: Entity class: To minor role: Matching name:
co[lr]_output_torque force inherit output_torque
co[lr]_tripot_to_differential mount inherit tripot_to_differential
cos_clutch_displacement_ic solver_variable inherit clutch_displacement_ic
cos_default_downshift_rpm parameter_real inherit min_engine_speed
cos_default_upshift_rpm parameter_real inherit max-engine_speed
cos_diff_ratio parameter_real inherit diff_ratio
cos_engine_idel_rpm parameter_real inherit engine_idle_rpm
cos_engine_map spline inherit engine_map
cos_engine_max_rpm parameter_real inherit engine_revlimit_rpm
cos_engine_rpm solver_variable inherit engine_rpm
cos_engine_speed parameter_real inherit engine_speed
cos_max_engine_driving_torque solver_variable inherit engine_maximum_driving
_torque
cos_max_engine_braking_torqu
e
solver_variable inherit engine_maximum_brakin
g_torque
cos_max_gears parameter_integer inherit max_gears
cos_max_throttle parameter_real inherit max_throttle
cos_powertrain_gse gse inherit powertrain_gse
cos_transmission_input_omega solver_variable inherit transmission_input_omeg
a
cos_transmission_spline spline inherit transmission_spline
The communicator: Entity class: From minor role: Matching name:
173
Working with Templates
Quad-Link Axle Suspension
Overview
The quad-link axle suspension template is an example of a dependent suspension model. The wheels are
mounted at either end of a rigid beam so the movement of one wheel is transmitted to the opposite wheel
causing them to steer and camber together. Solid beam axle suspensions are commonly used on the front
of heavy trucks, where high-load carrying capacity is required.
Figure 10 Quad-Link Axle Suspension
Template name
_quad_link_axle
Note: The engine and clutch portion of the powertrain is implemented as a GSE (general state
equation) element in solver. The gsesub associated with this element is available here.
The solver_variable "analysis_type" indicates whether the analysis is steady-state or
dynamic. When the analysis_type is steady-state the engine torque map and transmission
gear ratios are ignored.
Adams/Car

174
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The quad-link axle suspension template represents a common design for solid axles suspensions. You can
use the template as a front steerable suspension or as rear nonsteerable suspension.
You can set subsystems based on this template to kinematic or compliant mode. In kinematic mode,
Adams/Car replaces the bushings that connect the lower and upper links to the body mount part with the
corresponding purely kinematic constraints.
Files referenced
Bushing, spring, and damper property files
Topology
Spherical joints connect the upper and lower links to the solid axle. The draglink is attached to the bell
crank. The bell crank moves the tie rod, which steers the wheels. Revolute joints connect the uprights to
the solid axle. A joint force actuator locks the hub to the wheel carrier. The following table maps the
topology of the template.
The joint: Connects the part: To the part:
jklhoo_lower_link_frame gel_lower_link mtl_lower_link_frame
jklhoo_upper_link_frame gel_upper_link mtl_lower_link_frame
jklsph_upper_link_axle gel_upper_link ges_axle
jklsph_lower_link_axle gel_lower_link ges_axle
jolrev_knuckle_axle gel_knuckle ges_axle
josrev_bell_crank_axle ges_bell_crank ges_axle
jossph_draglink_pitman_arm ges_draglink mts_draglink_steering
joshoo_draglink_bell_crank ges_draglink ges_bell_crank
jossph_tierod_knuckle ges_tierod gel_knuckle
jolrev_bearing gel_hub gel_knuckle
josinp_tie_rod_bell_crank ges_tierod ges_bell_crank
175
Working with Templates
Parameters
Toe and camber variables define wheel spin axis, spindle part, and spindle geometry. The following table
lists the parameters in the template.
Communicators
Mount parts provide the connectivity from the template to body subsystems and steering. Output
communicators publish toe, camber, steer axis, and wheel center location information to the appropriate
subsystems and the test rig. The following table lists the input and output communicators.
Rack and Pinion Steering System
Overview
The rack and pinion steering system is usually found in passenger cars. The pinion gear translates the
rotary motion of the steering wheel into the linear motion of the rack. The rack moves the tie rods back
and forth to steer the vehicle.
The parameter: Takes the value: Its units are:
phs_kinematic_flag Integer No units
pv[lr]_toe_angle Real Degrees
pv[lr]_camber_angle Real Degrees
The communicator: Belongs to the class: Has the role:
ci[lr]_lower_link_frame mount inherit
ci[lr]_spring_upper_to_body mount inherit
ci[lr]_upper_link_frame mount inherit
cis_draglink_steering mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_suspension_mount mount inherit
co[lr]_suspension_upright mount inherit
co[lr]_toe_angle parameter_real inherit
co[lr]_wheel_center location inherit
cos_suspension_ parameters_ARRAY any inherit
Note: The kinematic flag variable toggles between kinematic and compliant mode.
Adams/Car

176
Figure 11 Rack and Pinion Steering System
Template name
_rack_pinion_steering
Major role
Steering
Application
Suspension and full-vehicle assemblies
Description
A series of hooke joints, which connect the three steering column shafts, transmit motion from the
steering wheel to the pinion. A revolute joint connects the lower column shaft to the rack housing. A
bushing (torsion bar) connects the shaft to the pinion. A revolute joint connects the pinion to the rack
housing.
In kinematic mode, a reduction gear is active and connects the steering input shaft revolute joint to the
pinion revolute joint. The underlying Adams/View entity (a coupler) is active only in kinematic mode.
The reduction gear (pinion to rack) converts pinion rotational motion to the rack translational motion. A
177
Working with Templates
translational joint constrains the rack to the rack housing. An additional VFORCE provides the steering
assist force.
Files referenced
Property file, mdi_steer_assis.ste, stored in the steer_assist.tbl of the shared Adams/Car database. It
defines the steering assist vector force.
Topology
The following table maps the topology of the template.
Parameters
A parameter variable switches between kinematic and compliant mode. You can set the activity of the
steering assist vector force through the hidden parameter variable, steering_assist_active. A series of
parameters define the maximum values of angle, rack displacement, rack force, and steering-wheel
torque.
Communicators
The following table lists the input and output communicators.
The joint: Connects the part: To the part:
joshoo_column_intermediate ges_steering_column ges_intermediate_shaft
joshoo_intermediate_shaftinput ges_intermediate_shaft ges_steering_shaft
jostra_rack_to_rackhousing ges_rack ges_rack_housing
josrev_steering_wheel ges_steering_wheel mts_steering_column_to_body
josrev_pinion ges_pinion ges_rack_housing
joscyl_steering_column_to_body ges_steering_column mts_steering_column_to_body
josrev_steering_input_shaft ges_steering_shaft ges_rack_housing
jksfix_rigid_rack_housing_mount ges_rack_housing sws_rack_house_mount
steering_assist_vforce ges_rack ges_rack_housing
gksred_input_shaft_pinion_lock josrev_steering_input_shaft josrev_pinion
grsred_steering_wheel_column_lock josrev_steering_wheel joscyl_steering_column_to_bo
dy
grsred_pinion_to_rack josrev_pinion jostra_rack_to_rackhousing
Adams/Car

178
Rear Driveline System
Overview
The rear driveline system template provides an example model of a driveline for rear-wheel drive (RWD)
vehicles.
The communicator: Belongs to the class: Has the role:
cis_rack_housing_to_
suspension_subframe
mount inherit
cis_rack_to_body mount inherit
cis_steering_column_to_ body mount inherit
co[lr]_tierod_to_steering mount front
cos_max_rack_ displacement parameter_real inherit
cos_max_rack_force parameter_real inherit
cos_max_steering_angle parameter_real inherit
cos_max_steering_torque parameter_real inherit
cos_steering_rack_joint joint_for_motion inherit
cos_steering_wheel_joint joint_for_motion inherit
Note: The rack and pinion steering system template contains general spline elements. The
gss_torsion_bar spline gives the torque as a function of the angular deflection of the input
shaft relative to the pinion.
The template also contains a switch part, which lets you explore two different topological
solutions. You can connect the steering rack housing to the body or to the
suspension_subframe.
179
Working with Templates
Figure 12 Rear Driveline System
Template name
_driveline_rwd
Major role
Driveline
Application
Full-vehicle assemblies
Description
The rotational motion of the front propshaft is transmitted to the rear shaft and from there to the diff
outputs. Diff outputs should be connected to the driving wheels.
Files referenced
Bushing property files
Adams/Car

180
Topology
The rear driveline template consists of a two-piece propshaft, a slip yoke, and a differential. For
convenience, the template includes the propshaft input part for applying motion or torque. The propshaft
input part attaches to the powertrain through a revolute joint. A bearing supports it at its aft.
The front propshaft attaches to the support bearing through an inline joint primitive that prevents
translation of the front propshaft perpendicular to the propshaft's spin axis.
Hooke joints transmit the motion to the slip yoke part. The slip yoke supports and transmits torque to the
rear propshaft through a translational joint. The differential input shaft receives torque from the rear
propshaft through a hooke joint.
The differential is an open design rather than a limited slip. Four bushings mount it to the body. Setting
kinematic mode fixes the differential housing to the body and deactivates the bushings. The following
table maps the topology of the template.
Parameters
The parameter variable final_drive_ratio defines the pinion to ring ratio.
The joint: Connects the part: To the part:
josrev_diff_input ges_diff_input ges_diff_housing
jolrev_diff_output gel_diff_output ges_diff_housing
jorrev_diff_output ger_diff_output ges_diff_housing
joshoo_propshaft_at_diff ges_propshaft_rear ges_diff_input
joshoo_propshaft_input_to_ front ges_propshaft_input ges_propshaft_front
joscon_propshaft_front_to_ yoke ges_propshaft_front ges_slip_yoke
jostra_propshaft_rear_to_yoke ges_propshaft_rear ges_slip_yoke
josrev_propshaft_input_to_ trans ges_propshaft_input mts_propshaft_input_to_powertrai
n
jksfix_diff_housing_to_body ges_diff_housing mts_diff_housing_to_body
josinl_support_bearing_to_propshaft_f
ront
ges_support_bearing ges_propshaft_front
josori_support_bearing_orientation ges_support_bearing mts_propshaft_support_to_body
josinp_support_bearing_ location ges_support_bearing mts_propshaft_support_to_body
jksinl_support_bearing_to_ body ges_support_bearing mts_propshaft_support_to_body
grsdif_differential josrev_diff_input jolrev_diff_output
grsdif_differential josrev_diff_input jorrev_diff_output
grsdif_differential jolrev_diff_output jorrev_diff_output
181
Working with Templates
Limitations
The rear driveline template uses a number of rotating parts. If the driveline dynamics are not of interest
to you, then it is more efficient to apply direct drive torque to the wheels, because the rotating parts in
the template might slow the numerical integration during the analysis.
Communicators
Output communicators of the type mount publish the left and right differential output shafts to the
suspension templates and subsystems. The following table lists the input and output communicators.
Rigid Chassis
Overview
The rigid chassis template represents the base frame of a vehicle.
The communicator: Belongs to the class: Has the role:
ci[lr]_tripot_to_differential location rear
cis_diff_housing_to_body mount inherit
cis_driveline_torque solver_variable inherit
cis_propshaft_input_to_ powertrain mount inherit
cis_propshaft_support_to_ body mount inherit
co[lr]_tripot_to_differential mount rear
Adams/Car

182
Figure 13 Rigid Chassis
Template name
_rigid_chassis
Major role
body
Application
Suspensions, tires, and steering systems in full-vehicle assemblies
Description
A single rigid body part models the chassis.
Files referenced
Shell elements create the chassis graphic. All the shell files are stored in the Adams/Car shared database,
in the shell_graphics.tbl directory.
Topology
The ges_chassis part is unconstrained.
Parameters
The rigid chassis template defines a series of parameter variables, most of which are used to compute the
aerodynamic forces acting on the body. The following table lists the parameters in the template. For a
detailed description of the force function, see Force Function Description.
Force function description
Adams/Car expects air density and area parameter variables to be in model units.
As a result of an air stream interacting with the vehicle, forces and moments are imposed on the vehicle.
Out of the three forces and three moments, only the most relevant ones are modeled in the template. The
aerodynamic general force takes into consideration the drag force (longitudinal force) and torque
(pitching moment and torque along the y-axis of the vehicle, in the SAE coordinate system). In detail:
The parameter: Takes the value: Its units are:
pvs_aero_drag_active Integer No units
pvs_aero_frontal_area Real Area
pvs_air_density Real Density
pvs_drag_coefficient Real No units
183
Working with Templates
F = 0. 5 x Ai r Densi t y x Dr agCoef f x Ar ea x VX( chassi s)
2
T = F x DZ ( Ri deHei ght )
The pitching moment acts to transfer weight between the front and rear axles. It arises because the drag
does not act at the ground plane. Therefore, it accounts for the elevation of the drag force.
Limitations
The rigid body modeling of the chassis does not account for torsional stiffnesses and other effects. You
could create a more accurate representation of a chassis frame by connecting the multiple rigid bodies
though spring dampers to take into account torsional stiffnesses and using modal flexibility.
Communicators
The rigid chassis template defines a series of mount part communicators. The assembly process matches
them with the corresponding output communicators created in suspensions, steering, and other
subsystems. The following table lists the communicators. Note that the output communicator
tierod_to_steering (rear) allows the tierod_to_steering mount parts in the rear suspension to connect to
the chassis body.
The communicator: Belongs to the class: Has the role:
co[lr]_spring_to_body mount inherit
co[lr]_strut_to_body mount inherit
co[lr]_tierod_to_steering mount rear
co[lr]_tv_link mount inherit
co[lr]_uca_to_body mount any
co[lr]_upr_link_fr mount inherit
co[lr]_upr_link_rr mount inherit
cos_aero_drag_force force inherit
cos_body mount inherit
cos_body_subsystem mount inherit
cos_chassis_path_ reference mount inherit
cos_concept_to_body mount inherit
cos_diff_housing_to_body mount rear
cos_driver_reference mount inherit
cos_measure_for_distance mount inherit
cos_powertrain_to_body mount inherit
cos_propshaft_support_to_body mount rear
cos_rack_to_body mount inherit
Adams/Car

184
Simple Anti-Roll Bar System
Overview
The simple anti-roll bar system template represents a bar fitted transversely to the suspension. The bar is
made out of steel or a user-defined material. The bar is installed in a vehicle to reduce the roll of the
vehicle body as the vehicle takes a corner. It increases suspension roll rate.
Figure 14 Simple Anti-Roll Bar System
Template name
_antiroll_simple
cos_steering_column_to_ body mount inherit
cos_subframe_to_body mount inherit
cos_aero_force force inherit
The communicator: Belongs to the class: Has the role:
Note: The rigid chassis light template (_rigid_chassis_lt) is exactly the same as the rigid chassis
template (_rigid_chassis), but without the shell graphic geometry.
185
Working with Templates
Major role
Antiroll
Application
Suspension and full-vehicle analyses
Description
The anti-roll bar system template provides a simple model of anti-roll bar (also known as stabilizer bar).
It consists of two bar halves connected by a torsional spring-damper component.
Files referenced
Bushing property files
Topology
A revolute joint connects the two bar halves of the anti-roll bar system. Bushings then attach the bar
halves to the body or to the suspension subframe. Drop links transmit the suspension motion to the bar
ends. The drop links attach to the suspension with spherical joints and to the bar ends with convel joints.
The following table maps the topology of the anti-roll bar system template.
Parameters
A parameter variable (pvs_torsional_stiffness) defines the torsional stiffness of the spring-damper
component. The following table lists the parameter, its value, and units.
Limitations
The anti-roll bar system template represents a simple approximation of a stabilizer bar. For more
complex solutions, you would need to create a more accurate representation of the bar through the
discretization of rigid bodies, nonlinear rods, or flexible bodies.
The joint: Connects part: To part:
jo[lr]sph_droplink_ upper_bal ge[lr]_droplink mt[lr]_droplink_to_suspension
jo[lr]con_droplink_to_arb ge[lr]_droplink ge[lr]_arb
josrev_arb_rev_joint ger_arb gel_arb
arb_torsion_spring (rotational
spring)
ger_arb gel_arb
The parameter: Takes the value: Its units are:
pvs_torsional_stiffness Real variable Nmm/Degrees
Adams/Car

186
Communicators
Mount parts provide the connectivity to the suspension subsystems. An output communicator exports
information about the location of the ARB pick-up point.
The following table lists the communicators that the template uses.
Tire System
Overview
The tire system template provides three basic functions:
Supports vertical load.
Develops longitudinal forces for acceleration and braking.
Develops lateral forces for cornering.
The communicator: Belongs to the class: Has the role:
ci[lr]_arb_bushing_mount mount inherit
ci[lr]_droplink_to_suspension mount inherit
co[lr]_ARB_pickup location inherit
Notes: The spring-damper component applies a rotational action-reaction force between the two
bar halves. The following linear equation describes the torque applied at the i marker:
Ta = - C( da/ dt ) - Kt ( a - ANGLE) + TORQUE
where:
C is the damping term (defaults to 0 in the template).
Kt is the torsional stiffness.
a is the angle between the bar halves.
ANGLE is the initial angular displacement.
TORQUE is the torsional preload. Torque applied on the j marker is equal and
opposite to the torque on the i marker.
187
Working with Templates
Figure 15 Tire System
Template name
_handling_tire
Major role
Wheel
Application
Full-vehicle analyses
Description
The tire system template consists of wheel parts rigidly connected to mount parts. The tire contact patch
forces are transformed in forces and torques applied at the hub. A series of user-written subroutines
perform the force calculation depending on the tire property file that you selected. The contact type
(string element) and the road property file determine the road model. For additional information about
using Adams/Tire in Adams/Car, see the Adams/Tire online help.
Files referenced
The tire system template references a tire property file for each wheel part. The default tire property file
is mdi_tire01.tir, stored the tires.tbl directory of the Adams/Car shared database.
Adams/Car

188
Topology
A fixed joint connects the wheel part to the spindle mount part.
Communicators
Mount parts provide connectivity to the suspension subsystems, and output communicators publish
information about tire forces and wheel orientation.
The following table lists the communicators in the tire system template.
Torsion Bar Double-Wishbone Suspension
Overview
The torsion bar double-wishbone suspension template is a modified version of the standard Double-
Wishbone Suspension. In this template, however, a torsion bar spring replaces the coil spring.
The communicator: Belongs to the class: Has the role:
ci[lr]_camber_angle parameter_real inherit
ci[lr]_suspension_mount mount inherit
ci[lr]_toe_angle parameter_real inherit
ci[lr]_wheel_center location inherit
cis_driveline_active parameter_integer inherit
co[lr]_rotor_to_wheel mount inherit
co[lr]_wheel_orientation orientation rear
cos_tire_forces_array_left array inherit
cos_tire_forces_array_right array inherit
189
Working with Templates
Figure 16 Torsion Bar Double-Wishbone Suspension
Template name
_double_wishbone_torsion
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
In the torsion bar double-wishbone suspension template, a torsion bar spring replaces the coil spring used
in the standard Double-Wishbone Suspension. The torsion bar consists of two bar halves connected by
a rotational SFORCE (joint torque actuator). The rotational SFORCE exerted between the two bar halves
is a function of a torsional stiffness and of the relative rotation along the torsion bar longitudinal axis.
Files referenced
Refer to the Double-Wishbone Suspension.
Adams/Car

190
Topology
The torsion bar consists of two bar halves connected by a cylindrical joint and a joint torque actuator. The
first half is rigidly connected to the lower control arm, and the second half is fixed to the mount part and
gets rigidly connected to the chassis if you use the suspension in full-vehicle assemblies.
Parameters
The torsion bar double-wishbone suspension template includes additional parameter variables besides
those described in the Double-Wishbone Suspension. The variable defining the torsional stiffness defines
the torsion bar stiffness. Also, another parameter variable defines the torsional preload applied between
the lower control arm and the torsion bar.
The following table lists the additional parameters.
Communicators
Refer to the Double-Wishbone Suspension.
Trailing Arm Suspension
Overview
The trailing arm suspension template is one of the most simple and economical designs for independent
suspensions.
The parameter: Takes the value: Its units are:
pv[lr]_tbar_stiffness Real Nmm/Degrees
pvs_tbar_preload Real Nmm
Note: The torsion bar double-wishbone suspension template includes a toe adjustment. It uses an
adjustable force Adams/Car element to reach a desired toe angle at static equilibrium.
191
Working with Templates
Figure 17 Trailing Arm Suspension
Template name
_trailing_arm
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The trailing arm suspension template is a simple non-steerable suspension design. You can deactivate the
driveline simply by selecting inactive in the Toggle Driveline Activity dialog box. Note that it is possible
to define the spring concentric to the damper just by moving the spring upper- and lower-seat hardpoints.
Files referenced
Bushing, spring, damper, bumpstop, and reboundstop property files
Adams/Car

192
Topology
Trailing arms to the left and right sides mount to a rigid subframe that in turns connects to the body mount
part through bushings. The arms alone locate the wheel centers. Springs and dampers act between the
arms and the body mount parts. A static rotation control actuator locks the rotational degree of freedom
of the hub during quasi-static analyses.
You can set the suspension to kinematic or compliant mode. Kinematic mode allows purely kinematic
connections between the upper strut parts, arms, subframe, and mount parts, while compliant mode
replaces the kinematic joints with their corresponding elastic elements.
The following table maps the topology of the template.
Parameters
The driveline offset variable defines the driveline geometry. Toe and camber variables define wheel spin
axis, spindle part, and spindle geometry.
Communicators
Mount parts provide the connectivity from the template to the body subsystems. Output communicators
publish toe, camber, steer axis, and wheel-center location information to the appropriate subsystems and
the test rig. The following table lists the input and output communicators.
The joint: Connects the part: To the part:
jklhoo_upr_strut_to_body mtl_strut_to_body gel_upper_strut
jklrev_arm_inner_ pivot gel_arm ges_subframe
jksfix_subframe_to_body_fixed ges_subframe mts_subframe_to_body
jklhoo_lwr_strut_to_arm gel_lower_strut gel_arm
jolcyl_lwr_upr_ strut gel_upper_strut gel_lower_strut
joltra_tripot_to_ differential gel_tripot mtl_tripot_to_differential
jolcon_drive_sft_ int_jt gel_tripot gel_drive_shaft
jolrev_spindle_ upright gel_spindle gel_arm
The parameter: Takes the value: Its units are:
phs_kinematic_flag Integer No units
pv[lr]_toe_angle Real Degrees
pv[lr]_drive_shaft_offset Real mm
phs_driveline_active Integer No units
pv[lr]_camber_angle Real Degrees
193
Working with Templates
Twist Beam Suspension
Overview
The twist beam suspension is a dependent suspension model intended for use only as a rear suspension.
It does not include a panhard rod.
The communicator: Belongs to the class: Has the role:
ci[lr]_spring_to_body mount inherit
ci[lr]_strut_to_body mount inherit
ci[lr]_tripot_to_differential mount inherit
cis_subframe_to_body mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_suspension_mount mount inherit
co[lr]_suspension_upright mount inherit
co[lr]_toe_angle parameter_real inherit
co[lr]_tripot_to_differential location inherit
co[lr]_wheel_center location inherit
cos_driveline_active parameter_integer inherit
cos_suspension_
parameters_ARRAY
array inherit
Note: The kinematic flag variable toggles between kinematic and compliant mode.
Adams/Car

194
Figure 18 Twist Beam Suspension
Template name
_twist_beam
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
The twist beam suspension template represents a common rear dependent suspension design. It does not
include a subframe. The suspension is non-steerable and intended to be used as a rear suspension only.
The twist beam is a flexible body generated using shell elements. Interface parts connect the flexible
body to the rest of the suspension.
You can toggle the suspension between kinematic and compliant modes. In addition, you can deactivate
driveshafts.
195
Working with Templates
Files referenced
Springs, dampers, and bushings property files. Also, the flexible body references the file PonteV.mnf,
stored in the flex_bodies.tbl directory of the Adams/Car shared database.
Topology
A static rotation control actuator locks the rotational degree of freedom of the hub during quasi-static
analyses.
The following table maps the topology of the twist beam suspension.
Parameters
In the twist beam suspension, toe and camber variables parameterize wheel spin axis, spindle part, and
spindle geometry. The following table lists the parameters in the template.
Communicators
The following table lists the communicators in the template.
The joint: Connects the part: To the part:
jklhoo_upr_strut_to_body mtl_strut_to_body gel_upper_strut
jolcyl_lwr_upr_strut gel_upper_strut gel_lower_strut
joltra_tripot_to_differential gel_tripot mtl_tripot_to_differential
jolcon_drive_sft_int_jt gel_tripot gel_drive_shaft
jolcon_drive_sft_otr gel_drive_shaft gel_spindle
jolhoo_strut_to_beam gel_lower_strut ipl_damper_lwr
jklrev_beam_to_body ipl_beam_to_subframe mts_body
jolrev_spindle_to_beam gel_spindle ipl_spindle_to_beam
The parameter: Takes the value: Its units are:
phs_driveline_active Integer No units
phs_kinematic_flag Integer No units
pv[lr]_toe_angle Real Degrees
pv[lr]_camber_angle Real Degrees
pv[lr]_drive_shaft_offset Real mm
Adams/Car

196
The communicator: Belongs to the class: Has the role:
ci[lr]_spring_to_body mount inherit
ci[lr]_strut_to_body mount inherit
ci[lr]_tripot_to_differential mount inherit
cis_body mount inherit
co[lr]_camber_angle parameter_real inherit
co[lr]_suspension_mount mount inherit
co[lr]_toe_angle parameter_real inherit
co[lr]_tripot_to_differential location inherit
co[lr]_wheel_center location inherit
cos_driveline_active parameter_integer inherit
cos_suspension_parameters_ARRAY array inherit
Note: The integer parameter variables let you activate and deactivate the driveshafts. The
kinematic flag variable toggles between kinematic and compliant mode.
Reviewing Results
Adams/Car

206
Requests
Requests contain standard displacement, velocity, acceleration, or force information that can help you
investigate the results of simulations. You can also define other quantities (such as pressure, work,
energy, momentum, and more) that you want output during a simulation.
Adams stores the requests in request files (.req).
Setting Request Activity
By default, requests for each element type are active. You can, however, deactivate requests for a certain
element type. Any activity changes will only be retained during the current session.
Note that for the bushing element, the activity switch is saved in the subsystem/assembly file.
To set request activity:
1. From the Standard Interface's Tools menu, select Request Activity.
2. Press F1 and then follow the instructions in the dialog box help for Toggle Request Activity.
3. Select OK.
Storing Request Activity
To store the request activity, you should group activity using parameter variables, which are stored in
subsystem files.
To store request activity in Template Builder:
1. Create a parameter variable to store the activity of the request as a 1 for active, 0 for inactive.
For example, pvs_request_activity.
2. Create a group with command language:
Tools ->Command Navigator, group ->create
3. Add your requests to the group.
4. For the expr_active parameter of the group (1 =active, 0 =inactive), create a function that uses
the parameter variable in step 1.
The commands might look as follows:
gr oup cr eat e &
gr oup_name = . _my_t empl at e. my_r equest _act i vi t y
obj ect s_i n_gr oup = . _my_t empl at e. r equest 0, &
. _my_t empl at e. r equest 1, &
. _my_t empl at e. r equest 2, &
. _my_t empl at e. r equest 3, &
expr _act i ve = ( pvs_r equest _act i vi t y)
207
Reviewing Results
For more examples, investigate templates in the shared database that have the group
kinematic_mode_active, which is used for the Kinematic Mode option.
Request 907
Request 907 (req907) outputs displacement, velocity, accelerations, and body side-slip angle depending
on the value of par(2) in the parameter list. Req907 is compatible with both dynamic and steady-state
type analyses.
The definition of the parameters array and the resulting output is:
par ( 1) = Br anch Fl ag 907
par ( 2) = Request Type:
0 = Di spl acement ( Angl es i n r adi ans)
1 = Vel oci t i es
( Tr ansl at i onal vel . i n KPH)
( Angul ar vel oci t y i n r adi ans/ s)
2 = Accel er at i ons
( Tr ansl at i onal acc. G' s)
( Rot at i onal acc. i n r adi ans/ s/ 2)
3 = Body Si de Sl i p Angl e i n Radi ans
par ( 3) = i d I mar ker
par ( 4) = i d J mar ker
par ( 5) = i d RM mar ker
Any results with a magnitude less than 1e-7 are set to zero.
Adams/Car

208
Plot Configuration Files
You can plot the results of an analysis using the standard functionality in Adams/PostProcessor. To help
you manage your plots, however, your template-based product provides plot configuration files that
define a series of plots.
For information on Adams/PostProcessor, see the Adams/PostProcessor online help.
Learn more about plot configuration files:
About Plot Configuration Files
Creating Plots Using a Plot Configuration File
Creating Plot Configuration Files
Format of Plot Configuration Files
Renaming Plots in Plot Configuration Files
Example Plot Configuration File
About Plot Configuration Files
Plot configuration files tell your template-based product:
Which plots to create
The vertical and horizontal components that it should plot
General settings and preferences, such as titles, labels, horizontal and vertical spacings, scaling,
legend text, and more
The files currently support only one plot per page, which can contain multiple axes. You can cross-plot
multiple analyses of the same type using one plot configuration file.
Plot configuration files are TeimOrbit files and are stored in your database in the plot_configs.tbl
directory.
You can access the plot configuration file functionality in Adams/PostProcessor. Learn about creating a
plot configuration file through the interface. Learn about using plot configuration files.
Creating Plots Using a Plot Configuration File
After you've run an analysis, you can view the series of plots defined in a plot configuration file. If your
plot configuration file contains customization command keywords and it has created the plots and curves,
Note: To modify plots and curves, you can use the command statement in each block to invoke
macros, which must contain the modification commands. The macros must be contained in
your current binary file, which can be either private or site.
209
Reviewing Results
you can have your template-based product invoke the macro that contains a command keyword in its
user-entered command.
The plot configuration file specifies a subtitle for your plots. In addition, in the File Import dialog box
you can:
Add a title to all the plots.
Plot results of multiple analyses on one plot using the Cross Plotting option.
Change the look of your plot, such as fonts and size, using the option Execute Custom Macros.
To use this option, you must have a macro that defines the commands to be executed.
To view the plots defined in a plot configuration file:
1. From the Review menu, select Postprocessing Window or press F8.
2. From the File menu, point to Import, and then select Plot Config File.
The File Import dialog box appears.
3. In the Analyses text box, enter the analysis or analyses from which you want to view results.
4. In the Plot Configuration File text box, enter the name of the plot configuration file defining the
plots that you want to view.
5. In the Plot Title text box, enter the title to appear at the top of the plots.
6. Select Cross Plotting to plot analysis data on existing plots containing data from other analyses.
If you selected multiple analyses in the Analyses text box, your template-based product
automatically plots the data from the different analyses on the same plots.
7. If you have customization command keywords in the plot configuration file you selected in Step
4, then select Execute Custom Macro.
Your template-based product invokes the macro which executes any commands that customize
the plots.
8. Select OK.
Creating Plot Configuration Files
You can create a plot configuration file containing all of the plots currently in Adams/PostProcessor or
only a selected set of plots. Your template-based product stores the configuration files in the plot_config
table of your default writable database.
Note that you can create only one plot per page.
To create a plot configuration file:
1. From the Review menu, select Postprocessing Window or press F8.
2. Create and configure plots as desired, including specifying labels and spacing. For example, you
can create a set of plots and add subtitles to all of them that describe the type of analysis with
which the plots are associated.
Adams/Car

210
3. From the File menu, point to Export, and then select Plot Configuration File.
The Save Plot Configuration File dialog box appears.
4. In the Configuration File Name text box, enter the name for the plot configuration.
5. If you want to include all plots currently in the Plotting window, including every page, select All
Plots.
6. If you did not select All Plots, in the Plot Name(s) text box, enter the names of the plots that you
want to include in the plot configuration file.
7. In the Plots and Curves text boxes, enter command keyword to invoke the macro that customizes
the plots and curves.
Your template-based product saves the command keyword with your plotting configuration file.
After it creates the plots and curves, your plotting configuration file invokes the macro which
contains the commands.
8. Select OK.
Format of Plot Configuration Files
Plot configuration files consist of two data blocks:
Plot Data Block
Plot-Curve Data Block
Plot Data Block
The plot data block has the following structure:
NAME
SUBTI TLE
TI ME_LOWER_LI MI T
TI ME_UPPER_LI MI T
PLOT_AXES ( subbl ock)
COMMAND
command_keywor d
After your template-based product creates each plot, it executes the following commands if you defined
a command keyword:
acar cust om_pl ot s <command_keywor d> & pl ot _name=<pl ot _name>
The command acar custom_plots <command_keyword>must already be created in the current session,
either interactively or already present in the acar.bin, or aengine.bin file.
Plot-Curve Data Block
The plot-curve data block has the following structure:
NAME
PLOT
211
Reviewing Results
VERTI CAL_AXI S
HORI ZONTAL_AXI S
VERTI CAL_COMPONENT
HORI ZONTAL_COMPONENT
LEGEND_TEXT
COLOR
r ed, bl ue, yel l ow, magent a, cyan, bl ack, whi t e, skybl ue,
mi dni ght _bl ue, bl ue_gr ay, dar k_gr ay, si l ver , peach, mai ze
STYLE
sol i d, dash, dot dash, dot
SYMBOL
none, x, o, pl us, st ar , at
LI NE_WEI GHT
Real val ue f r om1- 4
COMMAND
command_keywor d
After your template-based product creates each curve, it executes the following commands if you defined
a command keyword:
acar cust om_pl ot s <command_keywor d> &
anal ysi s=<anal ysi s> &
pl ot _name=<pl ot _name> &
ver t i cal _dat a=<y> &
hor i zont al _dat a=<x> &
cur ve_name=<cur ve_name>
The command acar custom_plots <command_keyword>must already be created in the current session,
either interactively or already present in the acar.bin, aengine.bin or arail.bin file.
Renaming Plots in Plot Configuration Files
When Adams/PostProcessor creates plot configuration files, it assigns generic names to the plots: plot_1,
plot_2, and so on. In general, it's best to manually rename all the plots in each configuration file you
generate. This will prevent conflicts if you later create plots using multiple plot configuration files that
contain the same plot names.
To prevent conflict, simply rename the plots by manually editing the plot file. It is an ASCII file in your
private database in the plot_configs.tbl directory. Choose a descriptive name.
For example, in the AA_aircraft.plt file, the first plot has been renamed to aircraft_plot_1, the second
plot has been renamed to aircraft_plot_2, and so on. The plot names are entered on the lines that start
with the string, "NAME =". Be sure to also change the name of the plot in each section that describes a
curve that belongs to that plot (search for the lines starting with "PLOT ="). To make the changes all at
once, for this example, "aircraft_plot_" was globally substituted for "plot_".
Here is an example of renamed plots in the file, AA_aircraft.plt. These are the first three sections of the
file. Adams
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' pl t '
Adams/Car

212
FI LE_VERSI ON = 1. 0
FI LE_FORMAT = ' ASCI I '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PLOT
[ PLOT]
NAME = ' ai r cr af t _pl ot _1'
SUBTI TLE = ' Ai r cr af t Li near CG Accel er at i on i n Gr ound Coor di nat es'
TI ME_LOWER_LI MI T = 0. 0
TI ME_UPPER_LI MI T = 0. 0
( PLOT_AXES)
{axi s_name t ype l abel scal i ng di vi si ons l ow_l i mi t
up_l i mi t }
' vaxi s' ' ver t i cal ' ' Accel er at i on ( i nch/ sec**2) ' ' l i near ' 10 0 0
' haxi s' ' hor i zont al ' ' Ti me ( sec) ' ' l i near ' 4 0 0
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PLOT_CURVE
[ PLOT_CURVE]
NAME = ' cur ve_1'
PLOT = ' ai r cr af t _pl ot _1'
VERTI CAL_AXI S = ' vaxi s'
HORI ZONTAL_AXI S = ' haxi s'
VERTI CAL_COMPONENT = ' AC_CG_Acc_GRND. ACCx'
HORI ZONTAL_COMPONENT = ' AC_CG_Acc_GRND. TI ME'
LEGEND_TEXT = ' AC_CG_Acc_GRND. ACCx'
COLOR = ' r ed'
STYLE = ' sol i d'
SYMBOL = ' NONE'
LI NE_WEI GHT = 2. 5
Example Plot Configuration File
The following is an example of an Adams/Car plot configuration file:
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pl ot
[ PLOT]
NAME = ' t oe_angl e'
SUBTI TLE = ' Toe Angl e'
TI ME_LOWER_LI MI T = 1
TI ME_UPPER_LI MI T = 1e+10
( PLOT_AXES)
{axi s_name t ype l abel scal i ng di vi si ons l ower _l i mi t upper _l i mi t }
' vaxi s' ' ver t i cal ' ' Angl e' ' l i near ' 6 0 0
' haxi s' ' hor i zont al ' ' Wheel Tr avel ' ' l i near ' 10 0
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pl ot _cur ve
[ PLOT_CURVE]
NAME = ' t oe_angl e_r '
PLOT = ' t oe_angl e'
VERTI CAL_AXI S = ' vaxi s'
HORI ZONTAL_AXI S = ' haxi s'
VERTI CAL_COMPONENT = ' t oe_angl e. r i ght '
HORI ZONTAL_COMPONENT = ' wheel _t r avel . ver t i cal _r i ght '
LEGEND_TEXT = ' Ri ght '
COLOR = ' r ed' STYLE = ' sol i d'
SYMBOL = ' none'
LI NE_WEI GHT = 1. 5
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pl ot _cur ve
213
Reviewing Results
[ PLOT_CURVE]
NAME = ' t oe_angl e_l '
PLOT = ' t oe_angl e'
VERTI CAL_AXI S = ' vaxi s'
HORI ZONTAL_AXI S = ' haxi s'
VERTI CAL_COMPONENT = ' t oe_angl e. l ef t '
HORI ZONTAL_COMPONENT = ' wheel _t r avel . ver t i cal _l ef t '
LEGEND_TEXT = ' Lef t '
COLOR = ' bl ue' STYLE = ' dash'
SYMBOL = ' none'
LI NE_WEI GHT = 2. 0
Adams/Car

214
Running Analyses
Using Adams/Car to analyze a virtual prototype is much like ordering a test of a physical prototype. You
specify the virtual prototype by opening or creating an assembly that contains the appropriate
components, or subsystems, that make up the prototype. For example, you create suspension assembly
containing suspension and steering subsystems and the suspension test rig.
In Adams/Car, you can run suspension and full-vehicle analyses.
Adams/Car

216
Running Suspension Analyses
You perform suspension analyses, which in Adams/Car are quasi-static equilibrium analyses, to learn
how a suspension controls the wheel motions and transmits load from the wheels to the chassis. To
perform a suspension analysis, you first create or open a suspension assembly that contains the selected
subsystems and the test rig. To create a suspension assembly, you can select any subsystem that has either
a suspension or a steering major role.
Using Adams/Car, you can:
Easily modify the topology and the properties of the components of your suspension.
Run a standard set of suspension and steering maneuvers.
View suspension characteristics through plots. Learn about suspension characteristics.
For a suspension analysis, you can specify inputs to:
Move the wheels through bump-rebound travel and measure the toe, camber, wheel rate, roll
rate, side-view swing-arm length, and other characteristics.
Apply lateral load and aligning torque at the tire contact path and measure the toe change and
lateral deflection of the wheel.
Rotate the steering wheel from lock to lock and measure the steer angles of the wheels and the
amount of Ackerman, which is the difference between the left and right wheel steer angles.
You specify the inputs to the analysis by typing them directly into an analysis dialog box or by selecting
a loadcase file that contains the desired inputs.
During the analysis, the test rig articulates the suspension assembly in the specified number of steps and
applies the inputs you specified. At each step, Adams/Car calculates over 38 suspension characteristics,
such as toe and camber angle, track change, wheel-base change, wheel rate (vertical stiffness), and fore-
aft wheel center stiffness. You can plot these characteristics and use them to determine how well the
suspension controls the motions of the wheels. Based on the results, you can alter the suspension
geometry or spring rates and analyze the suspension again to evaluate the effects of the alterations.
The following figure shows an overview of the suspension analysis process.
217
Running Analyses
Setting up Suspension Analyses
Before you submit a suspension analysis, you must set the Suspension Parameters that Adams/Car uses
when calculating suspension characteristics.
To set parameters:
1. From the Simulate menu, point to Suspension Analysis, and then select Set Suspension
Parameters.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis:
Setup Parameters.
3. Select OK.
To set up suspension analyses:
1. From the Simulate menu, point to Suspension Analysis, and then select the analysis you want
to set up.
2. Enter the vertical wheel travel and the other parameters needed to control the analysis.
3. Optionally, select one or more loadcase files (.lcf) from an Adams/Car database. Loadcase files
are text files that contain the vertical wheel travel and other parameters needed to control a
suspension analysis. If you regularly perform several kinds of suspension analyses using the same
ranges of travel, you should consider creating loadcase files for these. You can then submit all the
analyses without having to reenter travel parameters each time.
As you perform an analysis for which you did not create a loadcase file, Adams/Car temporarily
creates one for you and deletes it after the analysis.
4. Specify the number of solution steps in the analysis.
5. Select OK.
External-File Analyses
You can perform two types of external-file analyses:
Loadcase Analysis
Wheel-Envelope Analysis
Loadcase Analysis
A loadcase analysis reads the analysis inputs (for example, vertical wheel travel, steering travel, and
static loads) from one or more existing loadcase files. When you supply more than one loadcase file,
Adams/Car performs one analysis for each loadcase file.
A loadcase analysis requires a suspension subsystem.
Each loadcase analysis produces a separate set of output files, such as .gra, .req, and .out.
Adams/Car

218
To set up a loadcase analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select External Files.
2. Enter the necessary parameters as explained in the dialog box help for External Files.
3. Select OK.
Wheel-Envelope Analysis
A wheel-envelope analysis generates wheel-center positions and orientations for use in packaging the
wheel/tire within the wheel well (fender). The analysis sweeps the wheels through their vertical and
steering travel in fixed increments based on information stored in a wheel-envelope input file (.wen). The
positions and orientations for the left and right wheel centers are output to a wheel-envelope output file
(.wev) for import into computer-aided design (CAD) packages.
A wheel-envelope analysis requires suspension and steering subsystems.
A wheel-envelope input file has the same format as a static loadcase file, however, Adams/Car ignores
columns three through ten: left and right lateral force, aligning torque, brake force, and driving force.
You can create or modify wheel-envelope input files using the Curve Manager.
To set up a wheel-envelope analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select External Files.
2. Specify one or more wheel-envelope input files that define the vertical wheel and steering inputs.
3. Press F1 and then follow the instructions in the dialog box help for External Files.
4. Select OK.
Roll & Vertical Force Analysis
A roll and vertical force analysis sweeps the roll angle while holding the total vertical force constant. The
total vertical force is the sum of the vertical forces on the left and right wheels. You can specify the total
vertical force used by the left and right actuators to move the wheels.
In contrast to the opposite wheel-travel analysis, the roll and vertical force analysis allows the wheels to
seek their own vertical position.
To set up a roll & vertical force analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Roll & Vertical Force.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis: Roll
& Vertical Force.
3. Select OK.
219
Running Analyses
Static Load Analysis
Depending on the type of load you input, the static load analysis applies static loads to the spindle and
the tire contact patches between the specified upper and lower load limits. A static load analysis requires
a suspension subsystem.
To set up a static load analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Static Load.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis:
Static Loads.
3. Select OK.
Steering Analysis
A steering analysis steers the wheels over the specified steering-wheel angle or rack travel displacement
from the upper to the lower bound. The application of steering motion results in a wheel displacement at
the specified wheel height.
A steering analysis requires a suspension and a steering subsystem.
To set up a steering analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Steering.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis:
Steering.
3. Select OK.
Wheel-Travel Analyses
A wheel-travel analysis allows you to look at how the characteristics of a suspension change throughout
the vertical range of motion of the suspension.
You can perform three types of wheel-travel analyses. As a minimum, all wheel-travel analyses require
a suspension subsystem. These analyses can also include a steering subsystem.
Opposite Wheel-Travel Analysis
Parallel Wheel-Travel Analysis
Single Wheel-Travel Analysis
The force limits for the left/right_vertical jack force are implemented as real numbers and are defaulted
to -2.0E+04 and 4.0E+04 Newton.
You can modify the force limits in the Template Builder using the actuator modify dialog box (because
actuators in Adams/Car are a topological element) or using the Command Navigator and modifying the
corresponding variables.
Adams/Car

220
For example, to modify the left-side actuator force limits from the default values in the Standard Interface
after having an assembly already opened, you go to: Tools ->Command Navigator ->Variable ->Modify.
In the Variable Modify dialog box, select the desired limit variable
(.assembly.testrig.jfl_jack_force.force_limits, in this case) and modify the values to the new force limits.
Opposite Wheel-Travel Analysis
An opposite wheel-travel analysis moves the left and right wheel through equal, but opposite, vertical
amounts of travel to simulate body roll. The left and right wheels move over the specified jounce and
rebound travel, 180o out of phase with each other. You specify the parameters to define the vertical wheel
travel and the fixed steer value when you submit the analysis.
To set up an opposite wheel-travel analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Opposite Wheel
Travel.
2. Enter the necessary parameters as explained in the dialog box help for Opposite Wheel Travel
Analysis.
3. Select OK.
Parallel Wheel-Travel Analysis
A parallel wheel-travel analysis keeps the left wheel and right wheel heights equal, while moving the
wheels through the specified bump and rebound travel.
To set up a parallel wheel-travel analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Parallel Wheel Travel.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis:
Parallel Travel.
3. Select OK.
Single Wheel-Travel Analysis
A single wheel-travel analysis moves one wheel, either the right or left, through the specified jounce and
rebound travel while holding the opposite wheel fixed in a specified position.
To set up a single wheel-travel analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Single Wheel Travel.
2. Enter the necessary parameters as explained in the dialog box help for Single Wheel-Travel
Analysis.
3. Select OK.
221
Running Analyses
Computation of Suspension and Steering Characteristics
During suspension analyses, Adams/Car computes 38 different characteristics. The suspension and
steering characteristics that Adams/Car computes are based on the suspension geometry, the suspension
compliance matrix, or both. Suspension geometry refers to the position and orientation of suspension
parts relative to ground as the suspension is articulated through its ride, roll, and steer motions. For
example, the orientation of the spindle axes is used to compute the toe and camber angles.
The suspension compliance matrix refers to incremental movements of the suspension due to the
application of incremental forces at the wheel centers. Adams/Car computes the suspension compliance
matrix at each solution position as the suspension is articulated through its motion. Characteristics such
as suspension ride rate and aligning torque camber compliance are computed based on the compliance
matrix.
The suspension and steering characteristics are based on:
Steer Axis Computation
Definition of Compliance Matrix
Definition of Compliance Matrix
The compliance matrix for a system, [C], is defined as the partial derivatives of displacements with
respect to applied forces:
[ C] = [ &par t ; X/ &par t ; F]
If a system is assumed to be linear, the compliance matrix can be used to predict the system movement
due to force inputs:
From this perspective, matrix element cij is the displacement of system degree of freedom i due to a unit
force at degree of freedom j.
Adams/Car uses a 12 x 12 matrix relating the motion of the left and right wheel centers to units forces
and torques applied to the wheel centers. This matrix has the form shown next:
X { } C [ ] F { } =
Adams/Car

222
For example, element C(3,3) is the vertical motion of the left wheel center due to a unit vertical force
applied at the left wheel center. Element C(3,9) is the vertical motion of the left wheel center due to a unit
vertical force applied at the right wheel center. For an independent suspension without a stabilizer bar,
C(3,9) is zero since a vertical force on the right wheel will not cause motion of the left wheel. The other
elements of the compliance matrix are defined similarly.
Steer Axis Computation
Adams/Car needs the steer axis of a suspension to compute suspension characteristics, such as caster
angle, kingpin inclination, scrub radius, and caster moment arm or caster trail. When you create a
suspension template in Adams/Car, you must select the method Adams/Car will use to compute the steer
axis and provide the necessary input information.
Adams/Car offers two methods for calculating suspension steer axes:
Geometric Method
Instant Axes Method
Both methods give accurate results, but the instant axis method is more general, because it can be used
when the steer axis cannot be determined geometrically, such as in a five-link suspension. Currently, for
a new suspension template the default is the geometric method.
223
Running Analyses
Geometric Method
Using the geometric method, Adams/Car calculates the steer axis by passing a line through two non-
coincident points located on the steer axis. To use the geometric method, you must identify a part or parts
and two hardpoints that fix the steer axis.
For example, in a double wishbone suspension you might identify the wheel carrier part and hardpoints
located at the upper and lower ball joints. For a MacPherson strut suspension, you might identify the
wheel carrier part and a hardpoint located at the lower ball joint for one point, and the strut rod and a
hardpoint located where the strut attaches to the body for the second point.
Instant Axes Method
Using the instant axes method, Adams/Car calculates the left and right steer axes from the suspension's
compliance matrix. While the calculation is performed numerically, it is best described in physical terms.
To calculate the steer axis at a given suspension position, Adams/Car first locks the spring travel and
applies an incremental steering torque or force in all directions (3 forces and 3 torques). Then, from the
resulting translation and rotation of the wheel carrier parts, Adams/Car calculates the instant axis of
rotation for each wheel carrier. The instant axes of rotation are the steer axes.
To use the instant axes method, you must identify a part and a hardpoint where Adams/Car should lock
the spring travel. Adams/Car locks the spring travel by locking the vertical motion of the part you
identify at the chosen hardpoint location. You can use any part and hardpoint, provided that locking the
vertical motion of that part at that location locks the spring travel. For example, in suspensions using coil
or leaf springs, a good choice is the lower spring seat (such as, the part and hardpoint where the spring
acts on the suspension). For a double wishbone suspension sprung by a torsion bar on the lower control
arm, choose the lower control arm at its connection to the wheel carrier. Locking the vertical motion of
the lower control arm at this location eliminates rotation in the torsion bar. Do not choose the wheel
center location and wheel carrier. If you do, Adams/Car calculates inaccurate steer axes.
In almost all suspensions, the wheel center lies outboard of the steer axis and the steer axis is angled
rearward (caster angle >0) and inward (kingpin inclination >0) relative to vertical. When the wheels are
steered (for example, rotated about the steer axis), the motion of the wheel centers has a vertical
component. Locking the vertical motion of the wheel carrier at the wheel center eliminates this vertical
component and gives an inaccurate steer axis.
When no steering subsystem is present, the steer axis that the instant axis method calculates is typically
inaccurate for a steerable suspension because the inner tie rods attach to ground and are not free to move
laterally. Therefore, when a steering subsystem is present, the motion Adams/Car excites by applying an
aligning torque to the wheel carrier is not comparable to the steering motion.
Output of Suspension Analyses
Adams/Car analyses output the following general suspension characteristics for all suspensions:
Aligning Torque - Steer and Camber Compliance
Camber Angle
Adams/Car

224
Caster Angle
Dive Braking/Lift Braking
Fore-Aft Wheel Center Stiffness
Front-View Swing Arm Length and Angle
Kingpin Inclination Angle
Lateral Force - Deflection, Steer, and Camber Compliance
Lift/Squat Acceleration
Percent Anti-Dive Braking/Percent Anti-Lift Braking
Percent Anti-Lift Acceleration/Percent Anti-Squat Acceleration
Ride Rate
Ride Steer
Roll Camber Coefficient
Roll Caster Coefficient
Roll Center Location
Roll Steer
Side-View Angle
Side-View Swing Arm Length and Angle
Suspension Roll Rate
Toe Angle
Total Roll Rate
Wheel Rate
For steered suspensions, Adams/Car analyses also output the following steering characteriscs:
Ackerman
Ackerman Angle
Ackerman Error
Caster Moment Arm (Mechanical Trail)
Ideal Steer Angle
Outside Turn Diameter
Percent Ackerman
Scrub Radius
Steer Angle
Steer Axis Offset
Turn Radius
225
Running Analyses
Aligning Torque - Steer and Camber Compliance
Camber Angle
Note: This help file is shared by several Adams products.
Description The aligning torque steer compliance is the change in steer angle due to unit
aligning torque on the wheel. The aligning torque camber compliance is the
change in camber angle due to a unit aligning torque on the wheel.
A positive aligning torque acts to steer the wheel to the left. For a positive
steer angle, the wheel turns to the left. For a positive camber angle, the top
of the wheel tilts away from the body.
Units degrees/(force*length)
Request Names alt_steer_compliance.left
alt_steer_compliance.right
alt_camber_compliance.left
alt_camber_compliance.right
Method al t _st eer _compl i ance. l ef t = C( 6, 6) + C( 6, 12)
al t _st eer _compl i ance. r i ght = C( 12, 6) + C( 12, 12)
al t _camber _compl i ance. l ef t = C( 4, 6) + C( 4, 12)
al t _camber _compl i ance. r i ght = - C( 10, 6) + C( 10, 12)
Figure 1 Aligning Torque Loading for Steer and Camber
Compliances
Note: This help file is shared by several Adams products.
Adams/Car

226
Caster Angle
Description Camber angle is the angle the wheel plane makes with respect to the vehicle's
vertical axis. It is positive when the top of the wheel leans outward from the
vehicle body.
Note that the inclination angle, a measurement available in full-vehicle analyses,
is the angle the wheel plane makes with respect to the road surface. The inclination
angle is used for tire calculations.
Units Degrees or angle
Request Names camber_angle.left
camber_angle.right
Inputs Wheel-center axis (spin axis) unit vectors, left and right
Method camber _angl e = - ar csi n
Figure 2 Camber Angle
S

( )
Note: This help file is shared by several Adams products.
227
Running Analyses
Dive Braking/Lift Braking
Description Caster angle is the angle in the side elevation (vehicle XZ plane) between the
steering (kingpin) axis and the vehicle's vertical axis. It is positive when the
steer axis is inclined upward and rearward.
Adams computes the steer axis using the geometric or instant axis method.
Units Degrees
Request Names caster_angle.left
caster_angle.right
Inputs Steer (kingpin) axis unit vectors - left and right
Road vertical unit vector (z)
Road longitudinal unit vector (x)
Method Adams uses the direction cosines in the x- and the z-directions of the kingpin
axis to calculate caster angle, such that:
sx = st eer _axi s r oad_x_axi s
sz = st eer _axi s r oad_z_axi s
cast er _angl e = r t od * ar ct an( sx/ sz)
Figure 3 Caster Angle
Note: This help file is shared by several Adams products.
Adams/Car

228
Description Dive braking is the amount of front suspension compression per G of vehicle
braking. Included in dive is suspension compression due to weight transfer plus
suspension extension due to brake forces. Positive dive indicates that the front
suspension compresses in braking.
Lift braking is the amount of rear suspension extension per G of vehicle braking.
Included in lift is suspension extension due to weight transfer plus compression
due to brake forces. Positive lift indicates that the rear suspension extends in
braking.
Units mm
229
Running Analyses
Fore-Aft Wheel Center Stiffness
Request Names dive.left
dive.right
Inputs Compliance matrix
Fraction of braking applied at this axle
Loaded tire radius
Tire stiffness
Whole vehicle CG height
Total vehicle weight
Wheelbase
Method Adams first computes the longitudinal force percentage due to braking:
F
l ef t
= F
r i ght
= Br ake Rat i o / 2. 0
and then the vertical force percentange due to weight transfer:
W
l ef t
= W
r i ght
= Whol e vehi cl e CG hei ght / ( 2 x
Wheel base)
For rear anti-lift, the weight transfer is a negative value.
These are forces at each wheel per unit total braking force.
Vertical deflections due to the vertical force are:
Zwl ef t = Wl ef t x C( 3, 3) + Wr i ght x C( 3, 9)
Zwr i ght = Wl ef t x C( 9, 3) + Wr i ght x C( 9, 9)
Vertical deflections due to tractive forces are as follows, where Rl is the loaded
radius of the tire:
ZF
l ef t
= F
l ef t
[ C( 3, 1) - R
l
x C( 3, 5) ] +
F
r i ght
[ C( 3, 7) - R
l
x C( 3, 11) ]
ZF
r i ght
= F
l ef t
[ C( 9, 1) - R
l
x C( 9, 5) ] +
F
r i ght
[ C( 9, 7) - R
l
x C( 9, 11) ]
The dive is:
di ve. l ef t = ( ZF
l ef t
+ ZW
l ef t
+ W
l ef t
/ K
t
) Vehi cl e
Wei ght
di ve. r i ght = ( ZF
r i ght
+ ZW
r i ght
+ W
r i ght
/ K
t
)
Vehi cl e Wei ght
Note: This help file is shared by several Adams products.
Adams/Car

230
Front-View Swing Arm Length and Angle
Description The stiffness of the suspension in the fore-aft direction is relative to the body,
measured at the wheel center.
Units Newtons/mm
Request Names fore_aft_wheel_center_stiffness.left
fore_aft_wheel_center_stiffness.right
Inputs Compliance matrix
Method Adams applies equal unit forces acting longitudinally at the wheel centers. It
calculates the fore-aft wheel center stiffness as follows:
f or e_af t _wheel _cent er _st i f f ness. l ef t = 1 /
C( 1, 1)
f or e_af t _wheel _cent er _st i f f ness. r i ght = 1 /
C( 7, 7)
Note: This help file is shared by several Adams products.
Description The swing arm is the imaginary arm extending from the wheel's front elevation
instant center of rotation to the wheel center. The swing arm has a positive
length when the instant center is inward of the wheel center. The angle of the
swing arm is the angle it makes to the horizontal. A positive angle is when the
arm slopes outward and upward from the center of rotation to the wheel center.
The magnitude of the swing-arm length is limited to a maximum of 1000 meters.
Units Length - mm; angle - degrees
Request Names fr_view_swing_arm_angle.left
fr_view_swing_arm_angle.right
fr_view_swing_arm_length.left
fr_view_swing_arm_length.right
231
Running Analyses
Inputs Compliance matrix
Method The change in vertical and lateral position and the front view rotation of the left
wheel center due to a unit vertical force at the left wheel center is:
The left front view swing arm length and angle are:
fr_view_swing_arm_length.left =
fr_view_swing_arm_angle.left =
The change in vertical and lateral position and the front view rotation of the right
wheel center due to a unit vertical force at the right wheel center is:
Y
left
C 2 3 , ( ) =
Z
left
C 3 3 , ( ) =

left
C 4 3 , ( ) =
Y
left
2
( Z
left
2
) +
1 2

left


1
Y
left
Z
left
( ) tan
Y
right
C 8 9 , ( ) =
Z
right
C 9 9 , ( ) =

right
C 10 9 , ( ) =
Adams/Car

232
Kingpin Inclination Angle
The right front view swing arm length and angle are:
fr_view_swing_arm_length.right =
fr_view_swing_arm_angle.right =
Figure 4 Instant Center Front View (Lateral, Vertical)
Y
right
2
( Z
right
2
) +
1 2

right

tan
1
Y
right
( ) Z
right
( ) ( )
Note: This help file is shared by several Adams products.
Description The kingpin inclination angle is the angle in the front elevation between the steer
axis (the kingpin axis) and the vehicle's vertical axis. It is positive when the steer
axis is inclined upward and inward.
Units Degrees
233
Running Analyses
Lateral Force - Deflection, Steer, and Camber Compliance
Request Names kingpin_incl_angle.left
kingpin_incl_angle.right
Inputs Kingpin axis unit vectors - left and right
Method Adams uses the direction cosines in the y-direction and the z-direction of the kingpin
axis to calculate the kingpin inclination angle:
ki ngpi n_i ncl _angl e. l ef t =
ki ngpi n_i ncl _angl e. r i ght =
Figure 5 Kingpin Angle ( is the Kingpin Angle)
tan
1
DCOSY DCOSZ ( )
tan
1
DCOSY DCOSZ ( )
Note: This help file is shared by several Adams products.
Adams/Car

234
Description The deflections at the wheel center due to unit lateral forces applied simultaneously at
the tire contact patches. The forces are oriented as if in a right turn. Adams reports the
lateral translational deflection, steer deflection (rotational deflection about the vertical
axis), and the camber deflection (rotational deflection about the longitudinal axis).
Positive deflection indicates a deflection to the right. Positive steer is a steer to the left.
Positive camber compliance is when the wheels lean outward at the top.
Units Deflection - mm; Camber and steer - degrees
235
Running Analyses
Lift/Squat Acceleration
Request
Names
lat_force_defl_compliance.left
lat_force_defl_compliance.right
lat_force_steer_compliance.left
lat_force_steer_compliance.right
lat_force_camber_compliance.left
lat_force_camber_compliance.right
Inputs Compliance matrix
Tire radius - loaded
Method When the force is applied at the tire contact patch, Adams computes the deflection due
to both the lateral force at the wheel center and the moment created around the wheel
center. The total compliances are:
lat_force_defl_compliance.left =+[C(2,2) +R
l
x C(2,4) +C(2,8) +R
l
x C(2,10)]
lat_force_defl_compliance.right =+[C(8,2) +R
l
x C(8,4) +C(8,8) +R
l
x C(8,10)]
lat_force_steer_compliance.left =+[C(6,2) +R
l
x C(6,4) +C(6,8) +R
l
x C(6,10)]
lat_force_steer_compliance.right =+[C(12,2) +R
l
x C(12,4) +C(12,8) +R
l
x C(12,10)]
lat_force_camber_compliance.left =+[C(4,2) +R
l
x C(4,4) +C(4,8) +R
l
x C(4,10)]
lat_force_camber_compliance.right =-[C(10,2) +R
l
x C(10,4) +C(10,8) +R
l
x C(10,10)]
Figure 6 Lateral Force Loading for Deflection, Steer, and Camber
Compliances
Note: This help file is shared by several Adams products.
Adams/Car

236
Description Lift is the amount of front suspension extension (rebound) per G of vehicle
acceleration. Squat is the amount of rear suspension compression (jounce) per
G of vehicle acceleration. Lift and squat arise when the suspension reacts to
longitudinal tractive forces, weight transfer forces, and, in dependent
suspensions, to the differential input and output torques.
Units mm
Request Names Front suspensions:
lift.left
lift.right
Rear suspensions:
squat_acceleration.left
squat_acceleration.right
237
Running Analyses
Inputs Compliance matrix
Suspension parameters array:
suspension_type (independent/dependent)
Vehicle parameters array:
sprung_mass
cg_height
wheelbase
loaded_tire_radius
tire_stiffness
axle_ratio (final drive ratio, pinion ring gear ratio)
drive_ratio (fraction of total drive torque directed to the suspension)
Suspension geometry:
Track
Acceleration due to gravity (A
g
)
Adams/Car

238
Method The suspension lift or squat during acceleration arises due to the tractive forces,
weight transfer, and, in live axles, due to the differential input and output
torques, as well. The longitudinal tractive forces at the tire contact patches are:
F
l ef t
= F
r i ght
= - dr i ve_r at i o / 2. 0
The vertical forces at the tire contact patch due to weight transfer are:
VW
l ef t
= VW
r i ght
= - cg_hei ght / ( 2 * Wheel base)
Live axles also react to the drive torques (input torque to the differential pinion
and the left and right output torque from the differential). Given the longitudinal
tractive forces, the input torque (TI) to the differential is:
TI = t i r e_l oaded_r adi us * abs( F
l ef t
+ F
r i ght
) / axl e_r at i o
And the vertical force at the tire contact patches due to the drive torque is:
VT
l ef t
= - VT
r i ght
= TI / Tr ack
The left and right output torque from the differential is:
TO
l ef t
= - t i r e_l oaded_r adi us * F
l ef t
TO
r i ght
= - t i r e_l oaded_r adi us * F
r i ght
The vertical deflections of the suspension due to drive torque are:
ZD
l ef t
= VT
l ef t
* C( 3, 1) + TO
l ef t
* C( 3, 5) + VT
r i ght

* C( 3, 7) + TO
r i ght
* C( 3, 11) + VT
l ef t
/
t i r e_st i f f ness
ZD
r i ght
= VT
l ef t
* C( 9, 1) + TO
l ef t
* C( 9, 5) +
VT
r i ght
* C( 9, 7) + TO
r i ght
* C( 9, 11) + VT
r i ght
/
t i r e_st i f f ness
Independent suspensions do not react to the drive torques. Therefore,
ZD
l ef t
= ZD
r i ght
= 0. 0
The vertical deflections of the suspension due to tractive forces are:
ZF
l ef t
= F
l ef t
* C( 3, 1) + F
r i ght
* C( 3, 7)
ZF
r i ght
= F
r i ght
* C( 9, 7) + F
l ef t
* C( 9, 1)
The vertical deflections of the suspension due to weight transfer forces are:
ZW
l ef t
= VW
l ef t
C( 3, 3) + VW
r i ght
C( 3, 9) + VW
l ef t
/
t i r e_st i f f ness
ZW
r i ght
= VW
l ef t
C( 9, 3) + VW
r i ght
C( 9, 9) + VW
r i ght
/
t i r e_st i f f ness
Finally, the lift/squat per G of acceleration is:
lift.left / squat_acceleration.left =(ZD
left
+ZF
left
+ZW
left
) * sprung_mass * A
g
l i f t . r i ght / squat _accel er at i on. r i ght =( ZDr i ght
+ ZFr i ght + ZWr i ght ) * spr ung_mass * Ag
239
Running Analyses
Percent Anti-Dive Braking/Percent Anti-Lift Braking
Note: This help file is shared by several Adams products.
Description Percent anti-dive braking for a front suspension and percent anti-lift braking for a
rear suspension are the ratio of vertical suspension deflections caused by braking
forces and torques to the deflections caused by weight transfer. During braking,
the vertical deflections in a suspension from weight transfer can, in part, be
cancelled by the vertical deflections caused by braking forces and torques in the
suspension. Suspensions that exhibit this characteristic are said to have anti-dive
or anti-lift geometry.
For front suspensions, percent anti-dive braking is positive when deflections
caused by braking forces and torques act to extend or rebound the suspension. For
rear suspensions, percent anti-lift braking is positive when the deflections caused
by the braking forces and torques act to compress or jounce the suspension.
Units %
Adams/Car

240
Request Names Front suspensions:
anti_dive_braking.left
anti_dive_braking.right
Rear suspensions:
anti_lift.left
anti_lift.right
Inputs Compliance matrix
Vehicle parameters array:
sprung_mass
cg_height
wheelbase
loaded_tire_radius
tire_stiffness
brake_ratio (fraction of braking done by the suspension)
acceleration due to gravity (A
g
)
241
Running Analyses
Percent Anti-Lift Acceleration/Percent Anti-Squat Acceleration
Method The brake forces at the tire contact patch per G of longitudinal deceleration are:
F
l ef t
= F
r i ght
= spr ung_mass * A
g
* br ake_r at i o / 2
The brake torques reacted that the suspension reacts to are:
BT
l ef t
= l oaded_t i r e_r adi us * F
l ef t
BT
r i ght
= l oaded_t i r e_r adi us * F
r i ght

The weight transfer forces that the suspension reacts to are:
WT
l ef t
= spr ung_mass * A
g
* cg_hei ght / wheel base /
2
WT
r i ght
= spr ung_mass * A
g
* cg_hei ght / wheel base
/ 2
The brake forces and torques that cause the suspension deflections are:
ZB
l ef t
= F
l ef t
* C( 3, 1) + F
r i ght
* C( 3, 7) + BT
l ef t
*
C( 3, 5) + BT
r i ght
* C( 3, 11) + F
l ef t
/ t i r e_st i f f ness
ZB
r i ght
= F
l ef t
* C( 9, 1) + F
r i ght
* C( 9, 7) + BT
l ef t
*
C( 9, 5) + BT
r i ght
* C( 9, 11) + F
r i ght
/ t i r e_st i f ness
The weight transfer forces that cause the suspension deflections are:
ZW
l ef t
= WT
l ef t
* C( 3, 3) + WT
r i ght
* C( 3, 9) + WT
l ef t

/ t i r e_st i f f ness
ZW
r i ght
= WT
l ef t
* C( 9, 3) + WT
r i ght
* C( 9, 9) +
WT
r i ght
/ t i r e_st i f f ness
Finally, the percent anti-dive and percent anti-lift are:
ant i _di ve_br aki ng. l ef t = ant i _l i f t . l ef t = 100 *
ZB
l ef t
/ ZW
l ef t
ant i _di ve_br aki ng. r i ght = ant i _l i f t . r i ght = 100 *
ZB
r i ght
/ ZW
r i ght
Note: This help file is shared by several Adams products.
Adams/Car

242
Description Percent anti-lift for a front suspension and percent anti-squat for a rear
suspension are the ratio of vertical suspension deflections caused by tractive
forces and drive torques to the deflections caused by weight transfer. During
acceleration, the vertical deflections in a suspension from weight transfer can,
in part, be cancelled by the vertical deflections caused by tractive forces and
drive torques in the suspension. Suspensions that exhibit this characteristic
are said to have anti-lift or anti-dive geometry. Note that a suspension that
does not transmit tractive forces and drive torques (drive_ratio =0.0) has zero
anti-lift or anti-squat.
For front suspensions, percent anti-lift is positive when deflections caused by
tractive forces and drive torques act to compress or jounce the suspension. For
rear suspensions, percent anti-squat is positive when the deflections caused by
the tractive forces and drive torques act to extend or rebound the suspension.
Units %
243
Running Analyses
Request Names Front suspensions:
anti_lift.left
anti_lift.right
Rear suspensions:
anti_squat.left
anti_squat.right
Inputs Compliance matrix
Suspension parameters array:
suspension_type (independent/dependent)
Vehicle parameters array:
sprung_mass
cg_height
wheelbase
loaded_tire_radius
tire_stiffness
axle_ratio (final drive ratio, pinion ring gear ratio)
drive_ratio (fraction of total drive torque directed to the suspension)
Suspension geometry:
Track
Acceleration due to gravity (A
g
)
Adams/Car

244
Method The longitudinal tractive forces at the tire contact patches are:
F
l ef t
= F
r i ght
= - dr i ve_r at i o / 2. 0
The vertical forces at the tire contact patch due to weight transfer are:
VW
l ef t
= VW
r i ght
= - cg_hei ght / ( 2 * Wheel base)
Live axles also react with the drive torques (input torque to the differential
pinion and output torque from the differential). Given the longitudinal tractive
forces, the input torque (TI) to the differential is:
TI = t i r e_l oaded_r adi us * abs( F
l ef t
+ F
r i ght
) /
axl e_r at i o
And the vertical force at the tire contact patches due to the drive torque is:
VT
l ef t
= - VT
r i ght
= TI / Tr ack
The left and right output torque from the differential is:
TO
l ef t
= - t i r e_l oaded_r adi as * F
l ef t
TO
r i ght
= - t i r e_l oaded_r adi as * F
r i ght
The vertical deflections of the suspension due to drive torque are:
ZD
l ef t
= VT
l ef t
* C( 3, 1) + TO
l ef t
* C( 3, 5) +
VT
r i ght
* C( 3, 7) + TO
r i ght
* C( 3, 11) + VT
l ef t
/
t i r e_st i f f ness
ZD
r i ght
= VT
l ef t
* C( 9, 1) + TO
l ef t
* C( 9, 5) +
VT
r i ght
* C( 9, 7) + TO
r i ght
* C( 9, 11) + VT
r i ght
/
t i r e_st i f f ness
Independent suspensions do not react to the drive torque. Therefore,
ZD
l ef t
= ZD
r i ght
= 0. 0
The vertical deflections of the suspension due to tractive forces are:
ZF
l ef t
= F
l ef t
* C( 3, 1) + F
r i ght
* C( 3, 7)
ZF
r i ght
= F
r i ght
* C( 9, 7) + F
l ef t
* C( 9, 1)
The vertical deflections of the suspension due to weight transfer forces are:
ZW
l ef t
= VW
l ef t
C( 3, 3) + VW
r i ght
C( 3, 9) + VW
l ef t
/
t i r e_st i f f ness
ZW
r i ght
= VW
l ef t
C( 9, 3) + VW
r i ght
C( 9, 9) + VW
r i ght
/ t i r e_st i f f ness
The left and right percent anti-lift for front suspensions and percent anti-squat for rear
suspensions are:
ant i _l i f t . l ef t / ant i _squat . l ef t = 100 *
( ZF
l ef t
+ ZD
l ef t
) / ZW
l ef t
ant i _l i f t . r i ght / ant i _squat . r i ght =100 *
( ZF
r i ght
+ ZD
r i ght
) / ZW
r i ght
245
Running Analyses
Ride Rate
Ride Steer
Note: This help file is shared by several Adams products.
Description Ride rate is the spring rate of the suspension relative to the body, measured at the
tire contact patch.
Units Newtons/mm
Request Names ride_rate.left
ride_rate.right
Inputs Compliance matrix
Tire stiffness
Method Adams computes ride rate as the equivalent rate of the wheel rate and tire rate in
series.
K
s
= Wheel r at e ( see Wheel Rate)
K
t
= Ver t i cal t i r e r at e
K
t ot al
= K
s
x K
t
/ ( K
s
+ K
t
)
Note: This help file is shared by several Adams products.
Description Ride steer is the slope of the steer angle versus the vertical wheel travel curve. Ride
steer is the change in steer angle per unit of wheel center vertical deflection due to
equal vertical forces at the wheel centers. Positive ride steer implies that the
wheels steer to the right, as the wheel centers move upward.
Units Degrees/mm
Request Names ride_steer.left
ride_steer.right
Adams/Car

246
Inputs Compliance matrix
247
Running Analyses
Method Change in Wheel Orientation
Using the compliance matrix, Adams first calculates the change in wheel
orientation (W) due to unit forces applied at both wheel centers:
Wl / dF = C( 4, 3) - C( 4, 9) , C( 5, 3) - C( 5, 9) , C( 6, 3)
- C( 6, 9)
Wr / dF = C( 10, 3) - C( 10, 9) , C( 11, 3) - C( 11, 9) ,
C( 12, 3) - C( 12, 9)
Change in Wheel-Center (Spin) Vector Orientation
The change in the left wheel-center (spin) vector (d(wcvl)) and the right wheel
(spin) vector (d(wcvr) are vectors of partial derivatives given by the cross product
of the change in wheel orientation with the wheel-center vector:
d( wcvl ) / dF = Wl x wcvl
d( wcvr ) / dF = Wr x wcvr
Change in Steer Angle
The change in steer angle due to a change in wheel-center vector orientation is also
a vector of partial derivatives given by:
d( st eer _angl el ) / d( wcvl ) = ( - 1. 0 / ( syl **2 +
sxl **2 ) ) { syl , - sxl , 0 }
d( st eer _angl er ) / d( wcvr ) = ( - 1. 0 / ( syr **2 +
sxr **2 ) ) { syr , - sxr , 0 }
where:
sxl = wcvl o x; The x component of t he l ef t wheel -
cent er ( spi n) vect or
syl = wcvl o y; The y component of t he l ef t wheel -
cent er ( spi n)
vect or \ sxr = wcvr o x; The x component of t he
r i ght wheel - cent er ( spi n) vect or
syr = wcvr o y; The y component of t he r i ght
wheel - cent er ( spi n) vect or
The change in steer angle due to unit vertical forces at both wheel centers is
computed by the chain rule:
d( st eer _angl el ) / dF = ( - d( st eer _angl el ) / d( wcvl )
) o ( d( wcvl ) / dF )
d( st eer _angl er ) / dF = ( - d( st eer _angl er ) / d( wcvr ) )
o ( d( wcvr ) / dF )
Adams/Car

248
Roll Camber Coefficient
Change in Wheel-Center Vertical Travel
The change in wheel-center vertical travel (dz) due to unit vertical forces applied
at both wheel centers is:
dzl / dF = { C( 3, 3) + C( 3, 9) }
dzr / dF = { C( 9, 3) + C( 9, 9) }
Using the chain rule one final time, the ride steer is:
r i de_st eer . l ef t = d( st eer _angl el ) / dzl =
d( st eer _angl el ) / dF/ ( dF/ dzl )
r i de_st eer . r i ght = d( st eer _angl er ) / dzr =
d( st eer _angl er ) / dF/ ( dF/ dzr )
Nomenclature Bold, uppercase text, such as Wl, are vectors.
Bold, lowercase text, such as wcvl, are unit vectors.
X is the vector cross product operator.
o is the vector dot product operator.
* is the scalar multiplication operator.
Note: This help file is shared by several Adams products.
Description Roll camber coefficient is the rate of change of wheel inclination angle with
respect to vehicle roll angle. Positive roll camber coefficient indicates an increase
in camber angle per degree of vehicle roll.
Units Unitless
249
Running Analyses
Request Names roll_camber_coefficient.left
roll_camber_coefficient.right
Inputs Compliance matrix
Tire stiffness
Track width
Method Adams applies opposing unit forces acting vertically at the tire contact patches.
The height difference between the tire contact patches is the following, where Kt
is the vertical tire rate:
DZ = C( 3, 3) - C( 3, 9) - C( 9, 3) + C( 9, 9) + 2/ K
t
The vehicle roll angle is the rotation of the line through the tire contact patches:
Av = DZ / t r ack
Adams measures the wheel inclination with respect to the line through the tire
contact patches, which has two components. The first is from the vertical
movement of the tire contact patch and is the same as the vehicle roll angle. The
second is from the rotational compliance at the wheel center due to the vertical
force:
Ac = - C( 4, 3) + C( 4, 9) ( l ef t si de)
= - C( 10, 3) + C( 10, 9) ( r i ght si de)
The total wheel inclination is then:
Ai = Av - Ac
The roll camber is then:
r ol l _camber _coef f i ci ent = ( Av - Ac) / Av = 1 - Ac / Av
Figure 7 Roll Camber
Adams/Car

250
Roll Caster Coefficient
Roll Center Location
Note: This help file is shared by several Adams products.
Description Roll caster coefficient is the rate of change in side view steer axis angle
with respect to vehicle roll angle. A positive roll caster coefficient indicates
an increase in caster angle per degree of vehicle roll.
This calculation assumes that the steer axis (kingpin) is fixed in the
suspension upright as in a double-wishbone or MacPherson strut
suspension. The calculation, however, is not valid for suspensions where
the steer axis is not fixed in the suspension upright, for example, a five-link
front suspension used in Audi A4.
Units Unitless
Request Names roll_caster_coefficient.left
roll_caster_coefficient.right
Inputs Compliance matrix
Tire stiffness
Track width
Method Adams applies opposing unit forces acting vertically at the tire contact
patches. The height difference between the tire contact patches is the
following, where Kt is the vertical tire rate:
DZ = C( 3, 3) - C( 3, 9) - C( 9, 3) + C( 9, 9) + 2/ K
t
The vehicle roll angle is the rotation of the line through the tire contact
patches:
Av = DZ / t r ack
The rotational compliance at the wheel center due to the vertical force is:
Ac = C( 5, 3) - C( 5, 9) ( l ef t si de)
= C( 11, 3) - C( 11, 9) ( r i ght si de)
The roll caster is then:
r ol l _cast er _coef f i ci ent = Ac / Av
Note: This help file is shared by several Adams products.
251
Running Analyses
Description Roll center location is the point on the body where the moment of the
lateral and vertical forces exerted by the suspension links on the body
vanishes.
Units
Adams/Car

252
Request Names roll_center_location.lateral_from_half_track
roll_center_location.vertical
roll_center_location.lateral_to_left_patch
roll_center_location.lateral_to_right_patch
Inputs Compliance matrix at contact patches
Contact patch location
Method Adams applies unit vertical forces (perpendicular to the road) at the tire
contact and measures the resulting contact patch displacements in the
vertical and lateral direction (front view). Adams projects lines
perpendicular to the contact patch displacements for both the left and right
patches. The roll center lies at the intersection of these lines.
Adams reports errors when the motions of the left and right patches are
parallel (just as it occurs with a fully trailing arm suspension). Therefore,
the projected lines have no intersection. Adams also reports an error when
the motion of the left and/or right patches is very small for a unit vertical
force (for example, the suspension is very stiff).
Finally, Adams limits the distance from the roll center to the left and right
patches to +/- 1000 meters.
Figure 8 Roll Center Location (Front View)
253
Running Analyses
Roll Steer
Note: This help file is shared by several Adams products.
Description Roll steer is the change in steer angle per unit change in roll angle, or the slope of
the steer-angle-verses-roll-angle curve. Roll steer is positive when for increasing
roll angle (left wheel moving up, right wheel moving down) the steer angle increases
(wheels steer toward the left).
Units Unitless
Request Names roll_steer.left
roll_steer.right
Inputs Wheel center spin axis unit vector (wcv) left and right
Track
Tire stiffness (K
t
)
Compliance matrix
Adams/Car

254
Method Using the compliance matrix, Adams first calculates the change in roll angle and the
change in the wheel-center vector orientation due to a roll moment (the roll moment
is a unit vertical force upward at the left contact patch and a unit force downward at
the right contact patch). Then, Adams calculates the change in steer angle due to the
change in wheel-center vector orientation. Finally, Adams applies the chain rule to
calculate the roll steer.
Change in Roll Angle
The change in roll angle is:
d( r ol l _angl e) / d( r ol l _moment ) = ( C( 3, 3) - C( 3, 9) -
C( 9, 3) + C( 9, 9) + 2. 0/ K
t
) / Tr ack
Change in Wheel-Center Spin Vector Orientation
The changes in orientation of the left wheel (W
l
) and of the right wheel (Wr) due to
a unit upward force at the left contact patch and a unit downward force at the right
contact patch are:
W
l
= { C( 4, 3) - C( 4, 9) , C( 5, 3) - C( 5, 9) , C( 6,
3) - C( 6, 9) }
W
r
= { C( 10, 3) - C( 10, 9) , C( 11, 3) - C( 11, 9) ,
C( 12, 3) - C( 12, 9) }
The change in the left wheel-center (spin) vector (d(wcvl)) and the right wheel (spin)
vector (d(wcvr) are vectors of partial derivatives:
d( wcv
l
) / d( r ol l _moment ) = W
l
x wcv
l
d( wcv
r
) / d( r ol l _moment ) = W
r
x wcv
r
Change in Steer Angle
The change in steer angle due to a change in wheel-center vector orientation is also
a vector of partial derivatives given by:
d( st eer _angl e
l
) / d( wcv
l
) = ( - 1. 0 / ( syl **2 + sxl **2
) ) { syl , - sxl , 0 }
d( st eer _angl e
r
) / d( wcv
r
) = ( - 1. 0 / ( syr **2 + sxr **2
) ) { syr , - sxr , 0 }
where:
sxl = wcv
l
o x; The x component of t he l ef t wheel -
cent er ( spi n) vect or
syl = wcv
l
o y; The y component of t he l ef t wheel -
cent er ( spi n) vect or
sxr = wcv
r
o x; The x component of t he r i ght wheel -
cent er ( spi n) vect or
syr = wcv
r
o y; The y component of t he r i ght wheel -
cent er ( spi n) vect or
255
Running Analyses
Side-View Angle
The change in steer angle for a change in roll moment is computed using the chain
rule:
d( st eer _angl e
l
) / d( r ol l _moment ) = (
d( st eer _angl e
l
) / d( wcv
l
) ) o (
d( wcv
l
) / d( r ol l _moment ) )
d( st eer _angl e
r
) / d( r ol l _moment ) = (
d( st eer _angl e
r
) / d( wcv
r
) ) o (
d( wcv
r
) / d( r ol l _moment ) )
Roll Steer
And applying the chain rule one last time, the roll steer is
r ol l _st eer . l ef t = ( d( st eer _angl e
l
) / d( r ol l _moment )
) / ( d( r ol l _angl e) / d( r ol l _moment ) )
r ol l _st eer . r i ght =( d( st eer _angl e
r
) / d( r ol l _moment )
) / ( d( r ol l _angl e) / d( r ol l _moment ) )
Request
Statements
REQUST/id, FUNCTION=USER(900,17,characteristics_input_array_id)
Nomenclature Bold, uppercase text, such as Wl, are vectors.
Bold, lowercase text, such as wcvl, are unit vectors.
X is the vector cross product operator.
o is the vector dot product operator.
* is the scalar multiplication operator.
Note: This help file is shared by several Adams products.
Description The side-view angle is the wheel carrier side-view rotation angle. It is
positive for a clockwise rotation, as seen from the left side of the vehicle.
Units Angle
Request Names side_view_angle.left
side_view_angle.right
Inputs Wheel bearing I marker and origo_y
Method si de_vi ew_angl e = az, mar ker I , mar ker J
Adams/Car

256
Side-View Swing Arm Length and Angle
Note: This help file is shared by several Adams products.
Description The swing arm is an imaginary arm extending from the wheel's side elevation
instant center of rotation to the wheel center. For front suspensions, the sign
convention is that when the instant center is behind the wheel center, the swing
arm has a positive length. For rear suspensions, the sign convention is the
opposite: when the instant center is ahead of the wheel center, the swing arm
has a positive length.
The angle of the swing arm is the angle it makes to the horizontal. A positive
angle for a positive length is when the arm slopes downward from the wheel
center. A positive angle for a negative length arm is when the arm slopes
upward from the wheel center.
The magnitude of the swing-arm length is limited to a maximum of 1000
meters.
Units Length - mm; angle - degrees
257
Running Analyses
Request Names side_view_swing_arm_angle.left
side_view_swing_arm_angle.right
side_view_swing_arm_length.left
side_view_swing_arm_length.right
Inputs Compliance matrix
Method The change in vertical and longitudinal position and the side view rotation of
the left wheel center due to a unit vertical force at the left wheel center is:
DX
l ef t
= C( 1, 3)
DZ
l ef t
= C( 3, 3)
D
l ef t
= C( 5, 3)
The left side view swing arm length and angle are:
side_view_swing_arm_length.left =(DX
left

2
+DZ
left

2
)
1/2
/ D
left
side_view_swing_arm_angle.left =tan
-1
(DX
left
/ DZ
left
)
The change in vertical and longitudinal position and the change in side view
rotation of the right wheel center due to a unit vertical force at the right wheel
center is:
DX
r i ght
= C( 7, 9)
DZ
r i ght
= C( 9, 9)
D
r i ght
= C( 11, 9)
The right side view swing arm length and angle are:
side_view_swing_arm_length.right =(DX
right

2
+DZ
right
2
)
1/2
/ D
right
side_view_swing_arm_angle.right =tan
-1
(DX
right
/ DZ
right
)
Figure 9 Instant Center Side View (Fore and Aft, Vertical)
Adams/Car

258
Suspension Roll Rate
Note: This help file is shared by several Adams products.
Description Suspension roll rate is the torque, applied as vertical forces at the tire contact
patches, per degree of roll, measured through the wheel centers.
Units Newton-mm/degree
Request Names susp_roll_rate.left
susp_roll_rate.right
Inputs Compliance matrix
Track width
Method Adams uses opposing unit forces as the applied torque:
T = F x t r ack = t r ack
The resulting vertical distance between wheel centers is:
The rotation of the line through the wheel centers is:

The roll rate is:
susp_r ol l _r at e = T / =
Figure 10 Roll Rate - Suspension
Z X 3 3 , ( ) X 3 ( 9) , X 9 ( 3) , X 9 ( 9) , + =
Z track =
track
2
Z
259
Running Analyses
Toe Angle
Note: This help file is shared by several Adams products.
Description Toe angle is the angle between the longitudinal axis of the vehicle and the line
of intersection of the wheel plane and the vehicle's XY plane.
Adams reports toe angle in radians. It is positive if the wheel front is rotated
in towards the vehicle body.
Units Degrees
Adams/Car

260
Total Roll Rate
RequestNames toe_angle.left
toe_angle.right
Inputs Wheel center axis unit vectors - left and right
Method Adams uses the direction cosines in the x- and y-directions of the wheel
center axis relative to the road to calculate toe angle, such that:
t oe_angl e. l ef t = t an
- 1
( DCOSX/ DCOSY)
t oe_angl e. r i ght = t an
- 1
( - DCOSX/ DCOSY)
Figure 11 Toe Angle
Note: This help file is shared by several Adams products.
261
Running Analyses
Total Track
Description Total roll rate is the torque, applied as vertical forces at the tire contact patches,
per degree of roll, measured at the tire contact patches.
Units Newton-mm/degreee
Request Names total_roll_rate.left
total_roll_rate.right
Inputs Compliance matrix
Tire stiffness
Track width
Method Adams uses opposing unit forces as the applied torque:
T = F x t r ack = t r ack
The resulting vertical distance between wheel centers is the following, where K
t

is the tire stiffnesses:
The rotation of the line through the tire contact patches is:
The roll rate is:
t ot al _r ol l _r at e = T/ =
Z C 3 3) , ( C 3 ( 9) , C 9 ( 3) , C 9 9) , ( 2 K
t
+ + =
Z track =
track
2
Z
Note: This help file is shared by several Adams products.
Adams/Car

262
Description Total track is the distance measured along the line passing through the left and
right tire contact points with the left and right road parts (pads) and then
projected onto the right road plane.
The tire contact point lies at the intersection of two lines:
The first line is formed by the intersection of the wheel plane with the
road plane.
The second line is perpendicular to the first and passes through the
wheel center.
The wheel plane is perpendicular to the wheel spin axis and passes through
the wheel center.
The left and right road planes behave differently, depending on your
coordinates:
In vehicle coordinates, the left and right road planes remain
perpendicular to the vehicle's vertical axis, but lie at different heights.
If you run an opposite wheel-travel using vehicle coordinates, the left
and right road planes remain un-rolled (flat) relative to the vehicle
body (ground in a suspension analysis).
In ISO coordinates, the left and right road planes form one plane that
rotates about the vehicle's longitudinal axis to simulate rolling of the
suspension relative to the road. If you run an opposite wheel-travel
analysis using ISO coordinates, the right road plane and left road
plane are identical, as if the suspension was rolled relative to a flat
road. The total_track (distance between tire contact points) projected
onto the right road plane is foreshortened, and therefore, is less than
the total track output.
Also, the distance from the road plane to the wheel center depends on the tire
deflection, which depends on the tire stiffness and the force required to deflect
the suspension to a given position.
Units Length
263
Running Analyses
Wheel Rate
Ackerman
Request Names total_track
Inputs Contact patch positions
Method The following is the equation used to compute total track:
T = ABS ( ROAD ( COMP, CPP
LEFT
) - ROAD ( COMP, CPP
RI GHT
) )
where:
ROAD is a data structure filled with a series of kinematic
characteristics of the suspension. ROAD (Y,CPP
LEFT
) returns, for
example, the Y component of the left contact patch position.
CPP represents the instantaneous coodinates of contact points
obtained as described above.
Note: This help file is shared by several Adams products.
Description Wheel rate is the vertical stiffness of the suspension relative to the body, measured
at the wheel center.
Units Newtons/mm
Request Names wheel_rate.left
wheel_rate.right
Inputs Compliance matrix
Method Adams computes suspension wheel rate as the inverse of the z-axis displacement
at the wheel center due to the vertical forces applied at both wheel centers
simultaneously.
wheel _r at e. l ef t = 1 / ( C( 3, 3) + C( 3, 9) )
wheel _r at e. r i ght = 1 / ( C( 9, 3) + C( 9, 9) )
Note: This help file is shared by several Adams products.
Adams/Car

264
Ackerman Angle
Description Ackerman is the difference between the left and right wheel steer angles. A
positive Ackerman indicates that the right wheel is being steered more to the
right than to the left.
Units Degrees
Request Names ackerman.left
ackerman.right
Inputs Steer angle (see Steer Angle)
Method Adams/Car computes Ackerman by subtracting the right steer angle from the
left steer angle:
acker man = Ri ght st eer angl e Lef t st eer angl e
Note: This help file is shared by several Adams products.
Description Ackerman angle is the angle whose tangent is the wheel base divided by the turn
radius. Ackerman angle is positive for right turns.
Units Degrees
265
Running Analyses
Ackerman Error
Request Names ackerman_angle.left
ackerman_angle.right
Inputs Turn radius (see Turn Radius)
Wheelbase
Method acker man_angl e = t an
- 1
( Wheel Base/ Tur n Radi us)
Figure 12 Ackerman Angle
Note: This help file is shared by several Adams products.
Adams/Car

266
Caster Moment Arm (Mechanical Trail)
Description Ackerman error is the difference between the steer angle and the ideal steer angle
for Ackerman geometry. Because Adams/Car uses the inside wheel to compute
the turn center, the Ackerman error for the inside wheel is zero.
For a left turn, the left wheel is the inside wheel and the right wheel is the outside
wheel. Conversely, for a right turn, the right wheel is the inside wheel and the left
wheel is the outside wheel. Positive Ackerman error indicates the actual steer
angle is greater than the ideal steer angle or the actual is steered more to the right.
Units Degrees
Request Names ackerman_error.left
ackerman_error.right
Inputs Steer angle (see Steer Angle)
Ideal steer angle (see Ideal Steer Angle)
Method ackerman_error.left =(left steer angle - left ideal steer angle)
ackerman_error.right =(right steer angle - right ideal steer angle)
Note: This help file is shared by several Adams products.
Description Caster moment arm is the distance from the intersection of the kingpin (steer)
axis and the road plane to the tire contact patch measured along the intersection
of the wheel plane and road plane. Caster moment arm is positive when the
intersection of the kingpin axis and road plane is forward of the tire contact
patch.
Units mm
267
Running Analyses
Request Names caster_moment_arm.left
caster_moment_arm.right
Inputs Kingpin axis position, a point on the kingpin axis (R
s
) - left and right
Kingpin (steer) axis unit vector (s) - left and right
Tire contact patch position (R
p
) - left and right
Wheel center axis unit vector (w) - left and right
The road normal unit vector (k)
Adams/Car

268
Ideal Steer Angle
Methods Adams/Car first finds the intersection of the kingpin axis and the road plane.
Note that by convention, the kingpin axis unit vector is directed upward, away
from the road, and the road plane has zero height. The intersection of the
kingpin axis and the road plane (R
kr
) is:
R
sr
= R
s
- ( R
s
o k) / ( s o k) s
Next, Adams/Car finds a unit vector (l) directed rearward along the line of
intersection between the wheel plane and the road plane:
l = k x w / | k x w | ( l ef t si de)
l = k x - w / | k x - w | ( r i ght si de)
The distance along l from the contact patch to the intersection of the kingpin
axis and the road plane is:
cast er _moment _ar m= ( R
p
- R
kr
) o l
Figure 13 Caster Moment Arm and Scrub Radius
Note: This help file is shared by several Adams products.
269
Running Analyses
Outside Turn Diameter
Description Ideal steer angle is the steer angle in radians that gives Ackerman steer geometry
or 100% Ackerman. For Ackerman steer geometry, the wheel-center axes for all
four wheels pass through the turn center. Note that Adams/Car uses the steer
angle of the inside wheel to determine the turn center for Ackerman geometry.
Therefore, the ideal steer angle and the steer angle are equal for the inside wheel.
When making a left turn, the left wheel is the inside wheel. Conversely, when
making a right turn, the right wheel is the inside wheel. A positive steer angle
indicates a steer to the right.
Units Degrees
Request Names ideal_steer_angle.left
ideal_steer_angle.right
Inputs Turn radius (see Steer Angle)
Tire contact patch position (R
p
) - left and right
Wheelbase
Method ideal_steer_angle.left =tan
-1
[Wheel Base/Turn Radius - R
p(left)
o )]
ideal_steer_angle.right =tan
-1
[Wheel Base/Turn Radius -R
p(right)
o )]
Note Right turns give positive angles and turn radii
Rp(left) o <0
Rp(right) o >0
|Inside wheel's ideal steer angle| >|outside wheel's ideal steer angle|
y
y

Note: This help file is shared by several Adams products.


Description Outside turn diameter is the diameter of the circle defined by a vehicle's outside
front tire when the vehicle turns at low speeds. Adams/Car determines the circle
by the tire's contact patch for a given steer angle. For a left turn, the right front
wheel is the outside wheel. For a right turn, the left front wheel is the outside
wheel.
Units mm
Adams/Car

270
Percent Ackerman
Scrub Radius
Request Names outside_turn_diameter.left
outside_turn_diameter.right
Inputs Turn radius (see Turn Radius)
Track width
Wheelbase
Method outside_turn_radius =2.0 [(| Turn Radius | +Track/2)
2
+(Wheel Base)
2
]
1/2
Note: This help file is shared by several Adams products.
Description Percent Ackerman is the ratio of actual Ackerman to ideal Ackerman expressed
as a percentage. Percent Ackerman is limited to the range from -999% to 999%.
Percent Ackerman is positive when the inside wheel's steer angle is larger than the
outside wheel's steer angle.
Units %
Request Names percent_ackerman.left
percent_ackerman.right
Inputs Steer angle (see Steer Angle)
Ideal steer angle (see Ideal Steer Angle)
Ackerman (see Ackerman)
Method ackerman =Right steer angle - Left steer angle
ideal_ackerman =Right ideal steer angle - Left ideal steer angle
percent_ackerman =100 x Ackerman/Ideal Ackerman
Note: This help file is shared by several Adams products.
271
Running Analyses
Description Scrub radius is the distance from the intersection of the kingpin (steer) axis and
the road plane to the tire contact patch measured along the projection of the
wheel-center axis into the road plane. Scrub radius is positive when the
intersection of the kingpin axis and the road plane is inboard of the tire contact
patch.
Units mm
Adams/Car

272
Request Names scrub_radius.left
scrub_radius.right
Inputs Kingpin axis position (R
s
) - left and right
Kingpin (steer) axis unit vector (s) - left and right
Tire contact patch position (R
p
) - left and right
Wheel-center axis unit vector (w) - left and right
The road normal unit vector (k)
273
Running Analyses
Steer Angle
Method Adams/Car first finds the intersection of the kingpin axis and the road plane.
Note that by convention the kingpin axis unit vector is directed upward, away
from the road, and the road plane has zero height. The intersection of the kingpin
axis and the road plane (R
kr
) is:
R
sr
= R
s
- ( R
s
o k) / ( s o k) s
Next Adams/Car finds the projection (m) of the wheel-center axis (w) onto the
road plane
M = ( k x w) x k
m = M / | M |
The distance from the contact patch to the intersection of the kingpin axis and
the road plane along m is:
scr ub_r adi us = ( R
p
- R
kr
) o m
Figure 14 Caster Moment Arm and Scrub Radius
Note: This help file is shared by several Adams products.
Adams/Car

274
Steer Axis Offset
Description Steer angle is the angle measured from the vehicle heading to the line formed
by the intersection of the wheel plane with the ground plane. Steer angle is
positive when a wheel is rotated to the right as if the vehicle were making a right
turn.
Units Degrees
Request Names steer_angle.left
steer_angle.right
Inputs Wheel-center axis unit vectors - left and right
Method Adams/Car uses the direction cosines of the x-direction and the y-direction of
the wheel-center axis constructed from the wheel-center orientation to calculate
steer angle:
st eer _angl e. l ef t = t an
- 1
( - DCOSX/ | DCOSY| )
st eer _angl e. r i ght = t an
- 1
( DCOSX/ | DCOSY| )
Note: This help file is shared by several Adams products.
275
Running Analyses
Description The steer axis offset is the shortest distance from the steer (kingpin) axis to
the wheel center. The steer axis offset is measured in the plane perpendicular
to the steer axis and passing through the wheel center. The steer axis offset is
always positive.
The steer axis offset-longitudinal is the component of the steer axis offset
along the intersection of the wheel plane with the plane perpendicular to the
steer axis and passing through the wheel center. The steer axis offset-
longitudinal is positive when the wheel center is forward of the steer axis.
The steer axis offset-lateral is the component of the steer axis offset along the
projection of the wheel-center axis into the plane perpendicular to the steer
axis and passing through the wheel center. The steer axis offset - lateral is
positive when the wheel center lies outboard of the steer axis.
Units mm
Request Names steer_axis_offset.off_left
steer_axis_offset.off_right
steer_axis_offset.lon_left
steer_axis_offset.lon_right
steer_axis_offset.lat_left
steer_axis_offset.lat_right
Inputs Wheel-center position (WCP) left and right
Wheel-center (spin) axis unit vector (wcv) left and right
Kingpin (steer) axis position (KPP) left and right
Kingpin (steer) axis unit vector (kpv) left and right
Adams/Car

276
Method First, define longitudinal and lateral directions in a plane perpendicular to the steer
(kingpin) axis using the kingpin axis vector and the wheel-center (spin) vector.
u_lon = ( wcv x kpv ) / | wcv x kpv |
and:
u_lat = ( kpv x u_lon ) / | kpv x u_lon |
Note that u_lat is the projection of the wheel-center vector (wcv) onto the plane
perpendicular to the kingpin axis.
The displacement vector (R) from a point on the kingpin (steer) axis to the wheel
center is:
R = WCP - KPP
The steer axis offset-longitudinal is:
st eer _axi s_of f set . l on_l ef t = -R o u_lon
st eer _axi s_of f set . l on_r i ght = R o u_lon
The steer axis offset-lateral is:
st eer _axi s_of f set . l at _l ef t = R o u_lat
st eer _axi s_of f set . l at _r i ght = R o u_lat
Finally, the steer axis offset is:
st eer _axi s_of f set . of f _l ef t = sqr t ( l on_l ef t
2
+
l at _l ef t
2
)
st eer _axi s_of f set . of f _r i ght = sqr t ( l on_r i ght
2
+
l at _r i ght
2
)
Figure 15 Steer Axis Offset (Top View)
277
Running Analyses
Turn Radius
Request Statements Offset:
REQUST/id, FUNCTION=USER(900,44,characteristics_input_array_id)\
Longitudinal offset:
REQUST/id, FUNCTION=USER(900,45,characteristics_input_array_id)\
Lateral offset:
REQUST/id, FUNCTION=USER(900,46,characteristics_input_array_id)\
Nomenclature Bold text in uppercase letters, such as R, shows vectors.
Bold text in lowercase letters, such as u_lon, shows unit vectors.
X is the vector cross product operator.
o is the vector dot product operator.
* is the scalar multiplication operator.
Note: This help file is shared by several Adams products.
Description The turn radius is the distance measured in the ground plane from the
vehicle center line to the turn center along the y-axis (see the figure for
Ackerman Angle). Turn radius is positive for right turns and negative for left
turns.
Units mm
Adams/Car

278
Example Suspension Loadcase File
In Adams/Car, you can use loadcase files to specify different types of suspension analyses. The following
is an example loadcase file.
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' l cf '
FI LE_VERSI ON = 4. 0
FI LE_FORMAT = ' ASCI I '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNI TS
[ UNI TS]
LENGTH = ' mm'
ANGLE = ' degr ees'
FORCE = ' newt on'
MASS = ' kg'
TI ME = ' second'
$
$Gener at i on Par amet er s: ( Do Not Modi f y! )
$ l oadcase = 1
$ nst eps = 10
$ bump_di sp = 100. 00 r ebound_di sp = - 100. 00
$ st eer i ng_i nput = angl e
$ st at _st eer _pos = 0. 00
$
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mode
[ MODE]
STEERI NG_MODE = ' angl e'
VERTI CAL_MODE = ' l engt h'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dat a
[ DATA]
$COLUMN: i nput t ype: t ype of i nput dat a: si de:
$ ( c1) wheel z di sp / f or ce l ef t
Request Names turn_radius.left
turn_radius.right
Inputs Steer angle (see Steer Angle)
Track width
Wheelbase
Wheel-center orientations - left and right
Method Adams/Car determines the inside wheel by checking the sign of the steer
angles. It computes turn radius using the inside tire orientation.
Left turn:
t ur n_r adi us. l ef t = - [ Wheel Base ( DCOSY/ DCOSX) +
Tr ack/ 2]
Right turn:
t ur n_r adi us. r i ght = [ Wheel Base x ( DCOSY/ DCOSX) +
Tr ack/ 2]
279
Running Analyses
$ ( c2) wheel z di sp / f or ce r i ght
$ ( c3) l at er al f or ce ( y) l ef t
$ ( c4) l at er al f or ce ( y) r i ght
$ ( c5 al i gni ng t or que ( z- axi s) l ef t
$ ( c6) al i gni ng t or que ( z- axi s) r i ght
$ ( c7) br ake f or ce ( y) l ef t
$ ( c8) br ake f or ce ( y) r i ght
$ ( c9) dr i vi ng f or ce ( y) l ef t
$ ( c10) dr i vi ng f or ce ( y) r i ght
$ ( c11) st eer i ng f or ce / st eer angl e / r ack t r avel
{ whl _z_l whl _z_r l at _l l at _r al i gn_l al i gn_r br ake_l br ake_r dr i ve_l dr i ve_r st eer }
- 100. 0000 - 100. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 80. 0000 - 80. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 60. 0000 - 60. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 40. 0000 - 40. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 20. 0000 - 20. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 000
20. 0000 20. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
40. 0000 40. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
60. 0000 60. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
80. 0000 80. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
100. 0000 100. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
Example Wheel-Envelope Input File
The following is an example of a wheel-envelope input file (.wen) that you can use to control a wheel-
envelope analysis.
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' wen'
FI LE_VERSI ON = 5. 0
FI LE_FORMAT = ' asci i '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNI TS
[ UNI TS]
LENGTH = ' mm'
FORCE = ' newt on'
ANGLE = ' deg'
MASS = ' kg'
TI ME = ' sec'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MODE
[ MODE]
STEERI NG_MODE = ' angl e'
VERTI CAL_MODE = ' l engt h'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GRI D
[ GRI D]
BOUNDARY_STEERI NG_GRI D = 100. 0
BOUNDARY_WHEEL_GRI D = 20. 0
I NTERI OR_STEERI NG_GRI D = 100. 0
I NTERI OR_WHEEL_GRI D = 20. 0
Note: For wheel-envelope input files, Adams/Car ignores columns three through ten: (left and
right) lateral force, aligining torque, brake force, and driving force.
Adams/Car

280
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DATA
[ DATA]
$COLUMN: i nput t ype: t ype of i nput dat a: si de:
$ ( c1) wheel z di sp / f or ce l ef t
$ ( c2) wheel z di sp / f or ce r i ght
$ ( c3) l at er al f or ce ( y) l ef t
$ ( c4 l at er al f or ce ( y) r i ght
$ ( c5) al i gni ng t or que ( z- axi s) l ef t
$ ( c6) al i gni ng t or que ( z- axi s) r i ght
$ ( c7) br ake f or ce ( y) l ef t
$ ( c8 br ake f or ce ( y) r i ght
$ ( c9) dr i vi ng f or ce ( y) l ef t
$ ( c10) dr i vi ng f or ce ( y) r i ght
$ ( c11) st eer i ng st eer angl e / r ack t r avel
$ {whl _z_l whl _z_r l at _l l at _r al i gn_l al i gn_r br ake_l br ake_r
dr i ve_l dr i ve_r st eer }
- 120. 0 - 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 500. 0
80. 0 80. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 500. 0
90. 0 90. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 300. 0
120. 0 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 200. 0
120. 0 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 200. 0
85. 0 85. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 350. 0
80. 0 80. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
60. 0 60. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
30. 0 30. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 450. 0
- 30. 0 - 30. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 450. 0
- 75. 0 - 75. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
- 120. 0 - 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
Example Wheel-Envelope Output File
A wheel-envelope output file (.wev) contains a header and a data table, as explained next.
The first three lines comprise the header and contain the following information, in this order:
Type of file
Adams dataset title
Date and time of file creation
The table that follows the header contains the following information:
The first column shows the solution step number
Columns 2-4 show the data for the left wheel center x, y, z
Columns 5-7 show the data for the left wheel axis point x, y, z
Columns 8-10 show the data for the right wheel center x, y, z
Columns 11-13 show the data for the right wheel axis point x, y, z
The following is an example of a wheel-envelope output file:
Adams/Car Wheel Envelope Analysis Output File - acar_v10.0
281
Running Analyses
Adams/Car Assembly
2000-01-19 16:41:21
Dynamic Analysis
A dynamic analysis actuates the suspension at the contact patch via user defined runtime function
expressions or by referencing existing RPC3 files.
It is also possible to define a runtime function expression for the steering motion, therefore combining
vertical excitation with steering sweeps.
Note that the Computation of Suspension and Steering Characteristics is currently not available for
dynamic suspension analyses.
To set up a dynamic analysis:
1. From the Simulate menu, point to Suspension Analysis, and then select Dynamic.
2. Enter the necessary parameters as explained in the dialog box help for Suspension Analysis:
Dynamic.
3. Select OK.
1 -4.2702 -673.57 205.00 -348.83 -1611.7 170.29 7.0293 670.69 205.00 303.63 1620.7 107.88
2 -4.6463 -681.45 225.00 -344.63 -1621.7 206.15 6.7629 678.55 225.00 307.97 1628.3 139.91
3 -4.9532 -687.82 245.00 -340.16 -1630.0 239.60 6.5706 684.92 245.00 311.28 1634.4 170.26
4 -5.2433 -692.82 265.00 -334.67 -1637.0 271.40 6.3755 689.93 265.00 314.35 1639.0 198.89
5 -5.5240 -696.55 285.00 -328.07 -1643.0 301.70 6.1779 693.66 285.00 317.43 1642.1 225.76
6 -5.7905 -699.08 305.00 -320.38 -1648.0 330.44 5.9864 696.18 305.00 320.67 1643.8 250.76
7 -6.0372 -700.45 325.00 -311.59 -1652.1 357.51 5.8099 697.55 325.00 324.25 1644.1 273.76
8 -6.2583 -700.71 345.00 -301.72 -1655.3 382.78 5.6583 697.79 345.00 328.31 1643.0 294.55
9 -6.4469 -699.89 365.00 -290.74 -1657.8 406.03 5.5424 696.93 365.00 333.04 1640.3 312.88
10 -6.5953 -698.01 385.00 -278.64 -1659.4 426.98 5.4752 695.00 385.00 338.63 1636.2 328.39
... .......
Adams/Car

282
Working with the Suspension Test Rig
Adams/Car uses the suspension test rig, named .__MDI_SUSPENSION_TESTRIG, in all its suspension
analyses. When you create a suspension assembly, Adams/Car assembles the suspension test rig with the
selected suspension and steering subsystems.
The suspension test rig inputs excitation as motions and forces to the suspension and steering subsystems.
The excitations are made up of one or more of the following:
Displacement for wheel bump and rebound vertical travel
Roll and vertical force
Steering travel at the steering wheel or rack
Forces or torques at the steering wheel or rack
Forces and torques at the contact patch and the hub
Learn about the suspension test rig:
Benefits of Using the Suspension Test Rig
Structure of Suspension Test Rig
Benefits of Using the Suspension Test Rig
You can use the suspension test rig to:
Include a deflecting tire in your suspension simulations so that suspension characteristics output
by Adams/Car are more accurate.
Swap a deflecting tire with a semi-rigid tire.
Specify additional loads acting through the tire on the suspension, in particular:
Lateral cornering force at the contact patch
Lateral damage force and damage radius (point of application of force)
Traction force acting at the wheel center (note that the traction torque is not reacted by the
suspension)
Braking force at the contact patch (creates a brake torque on the suspension)
Overturning moment at the contact patch
Aligning torque at the contact patch
Drive your suspension with a set of closed-loop controllers to vary:
Wheel-center displacements
Contact patch displacements
Wheel vertical forces
Perform roll angle sweeps at constant total vertical force (sum of vertical force on the left and
right wheels)
283
Running Analyses
Structure of Suspension Test Rig
You assemble your suspension and steering subsystems with the suspension test rig. Then, using the
resulting assembly, you simulate different suspension motions and loadcases to determine how your
suspension performs. To help you to assess the performance of your suspension, Adams/Car calculates
about forty characteristics, such as toe angle, camber angle, caster trail, roll center height, and aligning
torque camber compliance.
When you assemble your suspension subsystem to the suspension test rig, the suspension arms, struts,
links, and subframe that normally mount to the body, mount to ground. The test rig includes wheels and
tires that mount to the suspension hubs. The test rig drives the suspension motion by tables that contact
the tires, pushing the suspension up through the tires. Finally, if you include a steering subsystem, the
test rig couples to the rack and the steering wheel to drive steering motion.
When you submit a suspension analysis you can request the test rig to control the wheel center or the tire
contact patch positions. In some cases the test rig may not be able to achieve a desired position because
the suspension travel is limited, for example, by a bumper. In such a case, the vertical actuators saturate,
meaning they reach the maximum force they can apply. The forces and displacements the test rig can
apply to the suspension through the vertical actuators are limited to reasonable values for passenger cars.
For other vehicles, you may need to update the limits. To learn how to update the limits, see Vertical
Actuators.
To properly assemble with the test rig, your suspension template must include the following output
communicators:
suspension_mount (communicator entity class: mount) - Points to the parts (typically the hub,
also known as the spindle) in your suspension template to which the test rig wheel tires mount.
wheel_center_location (communicator entity class: location) - Contains the wheel-center
location that Adams/Car uses to locate the test rig relative to the suspension.
toe_angle and camber_angle (communicator entity class: parameter real) - Contain the static toe
and camber angles that Adams/Car uses to orient the test-rig wheels.
suspension_upright (communicator entity class: mount) - Points to the suspension upright in
your suspension template. The suspension test rig creates a perpendicular joint primitive
between the suspension mount (that is, the hub) and the suspension upright to lock wheel
rotation during suspension analyses.
The following make up the suspension test rig:
Vertical Actuators
Suspension Test Rig Tire
Static Loads
Loadcase Files
Adams/Car

284
Vertical Actuators
The left and right vertical actuators apply forces to drive the test-rig tables, and in turn, the suspension,
up and down. An integral controller computes the actuator force necessary to achieve the desired wheel
center or contact patch positions. However, the forces in the actuators are limited by default to -22,000
N in rebound and 40,000 N in jounce.
The vertical actuators are standard joint force actuators (pairs of action-only translational forces). You
can modify the force limits using the Adams/Car Template Builder through the menus Build ->Actuator
->Joint Force ->Modify.
Suspension Test Rig Tire
The suspension test rig includes left and right wheel and tire UDE instances that are compatible with
Adams/Tire. The test rig tables contact these tires to drive the suspension's vertical travel. These tires also
apply the contact patch loads (read from the loadcase spline) to the suspension. The suspension test rig
sets the simulation type string to SUSPENSION to inform Adams/Tire you are performing a
suspension analysis.
About RIGID_WHEEL and LIVE_TIRE
When working with these tires you can modify them to select either of the following:
RIGID_WHEEL - The tire transmits both compression and tension force allowing the test rig to
pull the suspension into rebound.
LIVE_TIRE - The tire only transmits compression force. Thus when the vertical force between
the tire and table goes to zero, the tire separates from the table. Therefore, when using a
LIVE_TIRE, the test rig cannot pull the suspension into rebound. However, the force of gravity
and the suspension spring will typically drive the suspension into rebound until the suspension
hits the rebound bumper.
For the equations for RIGID_WHEEL and LIVE_TIRE,
radius is the distance, measured in the plane of the wheel, from the wheel center to the contact
patch
r is the unit vector directed from the contact patch to the wheel center
n is the unit vector normal to the table
RIGID_WHEEL
When you select RIGID_WHEEL, you enter the tire stiffness and unloaded radius. Adams/Car sets the
tire property file string to RIGID_WHEEL and passes the stiffness and radius you entered to
Adams/Tire through an ARRAY statement. Adams/Tire calculates the tire vertical force using the
following equation:
f or ce = t i r e_st i f f ness*( unl oaded_r adi us - r adi us) ( r o n)
285
Running Analyses
LIVE_TIRE
When you select LIVE_TIRE, you must enter a tire property file. Adams/Tire opens the property file and
reads the unloaded radius and vertical stiffness. These values are automatically converted to the proper
units for your suspension assembly. Other parameters in the tire property file are ignored. Adams/Tire
calculates the tire vertical force using the following equation:
f or ce = max( 0. 0, t i r e_st i f f ness*( unl oaded_r adi us - r adi us) ( r o n) )
Static Loads
You can specify forces, torques, and displacements as inputs to your suspension analyses. These inputs
are stored in the loadcase spline. The loadcase spline contains a linear interpolation at discrete time
intervals, between the upper and lower values.
The following table shows how forces and torques are expressed in the reference frames :
Forces/Torques in Reference Frames
Loadcase Files
Adams/Car supports old suspension loadcase files (version 5) as follows:
Vertical Mode =Length - Corresponds to wheel_center_height
Vertical Mode =Force - Corresponds to an open-loop vertical force
Force/torque: Reference frame:
TYDEX H ISO-W contact
patch
TYDEX-C axis system
wheel center
Lateral force (cornering) x
Longitudinal force (braking) x
Longitudinal force (traction) x
Overturning moment x
Rolling resistance torque x
Aligning torque x
Adams/Car

286
Tire Test Rig
In Adams/Car the response of a single tire under various conditions and excitations can be evaluated in
the so-called Tire Testrig. The test rig can be activated by, after building an assembly, clicking on
Simulate - Full-Vehicle Analysis - Tire Testrig.
The tire testrig model exists of one tire (wheel) mounted on a spindle that can be suspended to ground by
a spring, or preloaded by an SFORCE, or fixed at a certain axle height.
The road can be fixed or moving (moving in x, y, z-direction, or rolling around x-axis), while the road it-
self can be flat with or without a cleat (pothole), or user-defined (road property file).
The wheel movements can enhance steering (slip angle variations), wheel rotations (longitudinal slip
variations), inclination with the road (camber), vertical and longitudinal wheel (center) displacements.
The initial wheel rotational speed can be calculated using the free tire radius in the tire property file and
the initial wheel longitudinal velocity
287
Running Analyses
Example testrig files, defining the testrig simulations, can be found in the loadcases folder of the
Adams/Car database. The user may define own testrig simulations or modify one of these examples.
Each analysis represents one simulation. By clicking on the analysis name, the simulation details can be
defined:
Adams/Car

288
Once all analysis details have been defined, clicking on 'Run It' starts the process of generating the model
files, run these with the solver and plotting a number of default characteristics in the postprocessor view.
Note: There are two points of attention when evaluating tire characteristics:
For analyzing steady state tire characteristics, please remember that the usemode
in the tire property file should be set to steady state (not transient)
Some tire models have a 'start-up' smoothing option. This causes the tire response
to start from zero up to the full tire force response during the first 0.1 seconds. For
analyzing tire characteristics it is often useful to disable this option.
289
Running Analyses
Running Full-Vehicle Analyses
You can take previously created suspension subsystems and integrate them with other subsystems to
create a full-vehicle assembly. You can then perform various analyses on the vehicle to test the design
of the different subsystems and see how they influence the total vehicle dynamics. All of the analyses,
except for the data-driven analyses, use the .__MDI_SDI_TESTRIG, and are therefore based on the
Driving Machine. You can also examine the influence of component modifications, including changes in
spring rates, damper rates, bushing rates, and anti-rollbar rates, on the total vehicle dynamics.
Each type of analysis you perform requires a minimum set of subsystems: front and rear suspension
subsystems, front and rear wheel subsystems, one steering subsystem, and one body subsystem. Before
you can create an assembly and perform an analysis in Adams/Car, you must open or create the minimum
set of subsystems required.
Using Adams/Car, you can:
Easily modify the geometry and the properties of the components of your subsystems.
Select from a standard set of vehicle maneuvers to evaluate handling characteristics of your
virtual prototype.
View the vehicle states and other characteristics through plots.
You can specify inputs to the analysis by typing them into an analysis dialog box or by selecting a driver
control file that contains the desired inputs.
After specifying the prototype assembly and its analysis, Adams/Car, like your company's testing
department, applies the inputs that you specified and records the results. To understand how your
prototype behaved during the analysis, you can plot the results. After viewing the results, you might
modify the prototype and analyze it again to see if your modifications improve its behavior.
The following figure shows an overview of the full-vehicle analysis process.
Setting up Full-Vehicle Analyses
Before you set up a full-vehicle analysis, you must assemble and check the vehicle, as explained next:
Assembling a Vehicle
Adams/Car

290
Checking a Vehicle
Setting up the Analysis
Assembling a Vehicle
Adams/Car creates a full-vehicle assembly from a set of subsystems that you select. An assembly lets
you quickly put together full vehicles from previously tested and verified subsystems and switch between
subsystems depending on the analysis that you want to perform.
The associated component property files, such as springs and bushings, must also exist in your database.
If a suspension subsystem uses mount parts, such as the spring top mounting to a subframe, you must
read the subframe subsystem into the assembly. If you do not read in the required mount subsystems,
Adams/Car connects any mount parts to the global ground part instead of the absent mount subsystem.
Therefore, the mount point cannot move with the full vehicle, which causes the Adams/Car analysis to
fail.
Checking a Vehicle
Before submitting your model for analysis, visually check its assembly. The Adams/Car default view is
front isometric view. From the front view, you should be able to see obvious assembly problems. You
should also check your vehicle from the side because it provides a more useful view for positioning the
subsystems.
As you view your assembly from different angles, check for obvious problems, such as:
Is the front suspension in the correct place?
Is the body graphic positioned correctly?
Are the wheels somewhere near the same height?
All the analyses currently available are based on the Driving Machine. Therefore, to perform open-loop,
closed-loop, and quasi-static analyses, you must select the .__MDI_SDI_TESTRIG in your assemblies.
Always check whether you selected the correct test rig for the analysis you want to perform. If you
selected an incorrect test rig, create another assembly using the correct test rig.
To check the test rig:
1. From the File menu, point to Info, and then select Assembly.
2. In the Assembly Name text box, enter the name of your assembly.
3. Select OK.
Adams/Car displays the Information window, with the test rig name listed at the top of the
window.
291
Running Analyses
Setting up the Analysis
To set up full-vehicle analyses:
1. From the Simulate menu, point to Full-Vehicle Analysis, and then select the analysis you want
to set up.
2. Enter the parameters needed to control the analysis.
3. Typically, each transient analysis can be preceded by a quasi-static prephase analysis before
running the transient analysis on your full-vehicle assemblies. A quasi-static prephase analysis
consists of a straight analysis or a skidpad analysis, depending on the type of analysis you
selected. If you do not select the quasi-static option, Adams/Car performs a SETTLE analysis.
For more information about the different quasi-static setup method keywords (such as SETTLE
and STRAIGHT), see Structure of Event Files.
4. For dialog box help, select F1.
5. Select OK.
Controlling Full-Vehicle Analyses
If you are an experienced Adams/Car user and you want to perform some non-standard full-vehicle
analyses, such as studying the linear behavior of your vehicle between two mini-maneuvers, you can use
an Adams/Solver control subroutine (Eventxxx) to do so.
When you run a full-vehicle analysis, Adams/Car writes a number of files to the current working
directory (as defined by File ->Select Directory). These files contain important information about the
details of the maneuver. In particular, two files are important in defining the scope of the maneuver.
These are the Adams/Solver control file (.acf) and the event file (.xml).
The following shows the typical contents of an .acf:
f i l e/ model =t est _st ep
pr ef er ences/ sol ver =F77
out put / nosep
cont r ol / r out i ne=abgVDM: : Event I ni t ,
f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
cont r ol / r out i ne=abgVDM: : Event RunAl l , f unct i on=user ( 0)
!
st op
In the .acf, note the following line:
cont r ol / r out i ne=abgVDM: : Event I ni t ,
f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
This line calls an Adams/Car-specific control subroutine (a consub). The consub sets up and initializes
the full-vehicle analysis. It does the following:
Reads the event file (or converts the TeimOrbit .dcf file into XML)
Performs a number of static analyses based on the content of the DcfStatic class in the event file
Adams/Car

292
Performs a dynamic analysis by running each of the mini-maneuvers listed in the DcfMini
classes in the event file
You can view and modify the event file (.xml) using the Event Builder. The Event Builder allows you to
modify existing parameters for the entire maneuver, such as step size and hmax, to modify specific mini-
maneuver information, and add mini-maneuvers.
The following line calls the control subroutine EventInit:
cont r ol / r out i ne=abgVDM: : Event I ni t , f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
The call to this subroutine passes 11 parameters, as described next. Note that each number in the array
(3,1,10,0,2,5,5,9,4,8, 17) is listed after the description of that parameter.
par ( 1) 3: I D of STRI NG st at ement cont ai ni ng . XML event f i l ename = 3
par ( 2) I D of ORI GO mar ker = 1
par ( 3) I D of ARRAY st at ement cont ai ni ng i ni t i al condi t i on SDI par amet er s =
10
par ( 4) I D of ARRAY st at ement cont ai ni ng i ds of par t s f or whi ch i ni t i al
vel oci t y ar e not set = 0
par ( 5) I D of ARRAY hol di ng Vehi cl e Par amet er s. = 2
par ( 6) I D of mai n Dr i vi ng Machi ne ARRAY. = 5
par ( 7) I D I SO EAS Mar ker = 7
par ( 8) I D of Dr i ver _Par amet er s_ARRAY_St eer i ng_Human = 9
par ( 9) I D of STRI NG st at ement cont ai ni ng Dr i ver Road Fi l ename = 4
par ( 10) I D of ARRAY cont ai ni ng Human Dr i ver Par amet er s = 8
par ( 11) I D of ARRAY cont ai ni ng t he i ds of ext ensi bl e end condi t i on sensor
el ement s = 17
If you look at the corresponding Adams/Solver dataset (.adm), you will see that STRING/3 contains the
name of the event file:
! adams_vi ew_name=' t est r i g_dcf _f i l ename'
STRI NG/ 3
, STRI NG =exampl e_cr c. xml
All standard Adams/Car events generate an event file in XML format, similar to the one referenced in
the example above, but .dcf files in TeimOrbit format are still supported, both in the Event Builder and
at the solver level. This means that you can replace the above string and reference a .dcf file in TeimOrbit
format. The file will be automatically converted to XML format.
By modifying the .acf file, you can now execute all mini-maneuvers defined in the event file, or just run
the initialization and then execute one mini-maneuver at a time. Full-vehicle analysis .acf files by default
call the Driving Machine initialization routine, then call the RunAll method. You can, however, modify
the .acf file and use the following commands for more control over your analysis:
control/ routine=abgVDM::EventRunAll, function=user(0) - Runs all the active mini-maneuvers
in the list of events
control/ routine=abgVDM::EventRunNext, function=user(0) - Runs the following mini-
maneuver in the list of the events
control/ routine=abgVDM::EventRunFor, function=user(double time) - Runs the current mini-
maneuver for duration of time [s]
293
Running Analyses
control/ routine=abgVDM::EventRunUntil, function=user(double time) - Runs the current mini-
maneuver until the desired absolute time [s]
Using this flexibility within the event control subroutine enables you to use the power of the acf language
to make changes and re-submit your solution to Adams/Solver. The language parameters for the .acf file
are documented in the Adams/Solver online help.
Running with External Adams/Solver
How you run Adams/Solver depends on the platform you are on:
On Windows - The location of your .acf, .adm, and event files is important. Open a DOS shell
(from the Start menu, point to Programs, point to Accessories, and then select Command
Prompt) and change directory to the location where your files are stored (cd temp\run).
On UNIX - Open a shell and change directory to the location of your files (cd
/usr/home/user/temp/run).
To run external Adams/Solver:
Issue the command:
adamsxx acar r u- sol ver f i l ename. acf
where:
xx corresponds to the version of Adams that you are using
filename.acf is the name of your acf file
Reading Results
After you run the analysis, you can use Adams/PostProcessor to animate and view the results.
How to perform an equilibrium-only simulation and view the solver iterations
1. Open an assembly
acar f i l es assembl y open
assembl y_name=mdi ds: / / acar _shar ed/ assembl i es. t bl /
MDI _Demo_Vehi cl e. asy"
2. Pick any full vehicle analysis and submit a files-only analysis to initialize the road for the tires
acar anal ysi s f ul l _vehi cl e i so_l ane_change submi t &
Note: To control the execution of the various mini-maneuvers defined in the XML event
file you need to issue the EventInit control subroutine command first. This
instructs Adams/Car to build a list of quasi-static and transient events as they are
defined in the event file.
To execute each mini-maneuver in the event file, you should issue a control/
routine=abgVDM::EventRunNext as described above.
Adams/Car

294
assembl y=. MDI _Demo_Vehi cl e &
out put =" bl ah" &
st ep_si ze=0. 01 &
comment =" " &
anal ysi s_mode=f i l es_onl y &
r oad_dat a_f i l e=" mdi ds: / / acar _shar ed/ r oads. t bl / 2d_f l at . r df " &
i ni t i al _vel oci t y=70 &
vel oci t y_uni t s=km_hr &
gear _posi t i on=3 &
qst at i c_pr ephase=yes &
l og_f i l e=yes
const r ai nt at t r i but es const r ai nt _name=t est r i g. j osi nl _body_st ake
act i ve=of f
const r ai nt at t r i but es const r ai nt _name=t est r i g. j osper _yaw_st ake
act i ve=of f
3. Set the display to show Adams/Solver iterations
si mul at i on si ngl e_r un set updat e=i t er at i on
4. Set the solver preference to "internal" so that the iterations can be shown (cannot be shown with
external)
si mul at i on set show_al l _messages=yes sol ver _pr ef er ence=i nt er nal
si mul at i on si ngl e set al er t = no
5. Submit the equilibrium simulation. This is used primarily for debugging.
si mul at i on si ngl e_r un equi l i br i um
3D Road Analysis
A 3D road analysis simulates your vehicle assembly traversing a three-dimensional road representation
and the obstacles or characteristics contained in that 3D road. The road file (.rdf/.xml) is used by both the
tire subsystems to compute contact patch forces/moments, and by the lateral controller. The Driving
Machine uses path information contained in the 3D road file to drive the vehicle along the specified
course centerline. Example 3D road files are distributed in the shared Adams/Car database (3d_road_*).
Note: not required, but if desired, you may want to deactivate the test rig joints used for quasi-
static setup.
Note: not required, but you can turn off the prompt that interrupts each iteration.
295
Running Analyses
For more information about the 3D road, see Using the Road Builder.
To set up a 3D road analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Course Events, and then select
3D Road.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: 3D
Road.
3. Select OK.
Cornering Analyses
You use cornering analyses to evaluate your vehicle's handling and dynamic responses during various
cornering-type maneuvers. Cornering analyses use both open- and closed-loop controllers of the
steering, throttle, brake, gear, and clutch signals to investigate various vehicle behaviors. You can
investigate both steady-state and limit cornering to characterize responses such as understeer/oversteer
gradients, weight transfer, and so on.
The cornering analyses include:
Braking-In-Turn
Constant-Radius Cornering
Cornering with Steer Release
Lift-off Turn-in
Power-off Cornering
Braking-In-Turn Analysis
The braking-in-turn analysis is one of the most critical analyses encountered in everyday driving. This
analysis examines path and directional deviations caused by sudden braking during cornering. Typical
results collected from the braking-in-turn analysis include lateral acceleration, variations in turn radius,
and yaw angle as a function of longitudinal deceleration.
In a braking-in-turn analysis, you can set the Driving Machine to drive your full vehicle, as follows:
Drive down a straight road, turn onto a skidpad, and then accelerate to achieve a desired lateral
acceleration
Run a quasi-static skidpad setup, which places the vehicle on a skidpad with predefined lateral
acceleration
Note: Adams/Car creates an event file (.xml) that defines the analysis. The Driving Machine uses
the event file to control the vehicle. Adams/Car stores the event file in the working
directory so you can refer to it as needed and examine it using the Event Builder.
Adams/Car

296
The Driving Machine holds the longitudinal speed and radius constant for a time to let any transients
settle. It then applies a brake signal to the vehicle to control the vehicle deceleration at a constant rate
(units in g).
Depending on the controller type, the Driving Machine does either of the following:
Open-loop - Locks the steering wheel
Closed-loop - Maintains the skidpad radius
The Driving Machine maintains the braking for the given duration of the maneuver or until the vehicle
speed drops below 2.5 meters/second.
You can use the plot configuration file, mdi_fva_bit.plt, in the shared Adams/Car database to generate
the plots that are typically of interest for this type of analysis.
To set up a braking-in-turn analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Cornering Events, and then
select Braking-In-Turn.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Braking-In-Turn.
3. Select OK.
Constant-Radius Cornering Analysis
For constant-radius cornering analysis, the Driving Machine drives your full vehicle down a straight
road, turns onto a skidpad, and then gradually increases velocity to build up lateral acceleration. One
common use for a constant radius cornering analysis is to determine the understeer characteristics of the
full vehicle.
To set up a constant-radius cornering analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Cornering Events, and then
select Constant Radius Cornering.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Constant-Radius Cornering.
3. Select OK.
Cornering with Steer Release Analysis
The vehicle performs a dynamic constant-radius cornering to achieve the prescribed conditions (radius
and longitudinal velocity or longitudinal velocity and lateral acceleration). After the steady state
prephase, the steering wheel closed-loop signal is released, simulating a release of the steering wheel.
The analysis focuses primary on the path deviation, yaw characteristics, steering-wheel measurements,
roll angle, roll rate, and side-slip angle.
297
Running Analyses
To set up an analysis of cornering with steer release:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Cornering Events, and then
select Cornering w/Steer Release.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Cornering Steer Release.
3. Select OK.
Lift-off Turn-in Analysis
This analysis examines path and directional deviations caused by suddenly lifting the throttle pedal
during cornering and applying an additional ramp steering input. Typical results collected from the lift-
off turn-in analyses include lateral acceleration, variations in turn radius, and yaw angle as a function of
longitudinal deceleration. Adams/Car drives the vehicle through two distinct phases:
Cornering pre-phase: Adams/Car uses quasi-static calculations to set the vehicle at the correct
initial conditions for the desired lateral acceleration at the given radius.
Lift-off turn-in: The steer is ramped from the last value of the previous mini-maneuver at the
desired rate. The throttle signal is set to zero; the clutch can be engaged or disengaged.
To set up a lift-off turn-in analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Cornering Events, and then
select Lift-Off Turn-In.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: Lift-
Off Turn-In.
3. Select OK.
Power-off Cornering Analysis
The purpose of this maneuver is to determine the power-off effect on course holding and directional
behavior of a vehicle, whose steady-state circular path is disturbed only by power-off. The Driving
Machine drives the vehicle through two distinct phases:
An initial quasi-static setup that achieves the initial conditions.
A power-off event where the throttle signal is stepped down from the value of the previous mini-
maneuver to zero.
The lateral acceleration and skidpad radius define the initial conditions. Note that the significance of the
results decreases with the skidpad radius. After reaching the initial steady-state driving conditions, the
steering signal is kept constant and the accelerator pedal is released with a step signal profile. The release
of the accelerator pedal is considered as the moment of power-off initiation, which you can define.
Typical results collected from power-off cornering analyses include variations in the heading direction
and longitudinal deceleration, as well as side-slip angle, yaw angle, and gradient.
Adams/Car

298
To set up a power-off cornering analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Cornering Events, and then
select Power-off Cornering.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Power-off Cornering.
3. Select OK.
Course Analyses
Course analyses are based on the Driving Machine and are of a course-following type, such as ISO lane
change.
In an ISO lane change analysis, the Driving Machine drives your full vehicle through a lane change
course as specified in ISO-3888: Double Lane Change. You specify the gear position and speed at which
to perform the lane change. The analysis stops after the vehicle travels 250 meters; therefore, the time to
complete the lane change depends on the speed you specify.
The course analyses include:
ISO Lane Change
3D Road
ISO Lane Change
During an ISO lane change analysis, a longitudinal controller maintains the chassis velocity to the desired
value, and a lateral controller module acts on the steering system to maintain the vehicle on the desired
ISO lane-change path.
Adams/Car uses an external file to define the path for the maneuver: iso_lane_change.dcd defines the
trace of the desired path on the x-y plane.
To set up an ISO lane change analysis:
1. From theSimulate menu, point to Full-Vehicle Analysis, point to Course Events, and then
select ISO Lane Change.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: ISO
Lane Change.
Note: Adams/Car creates an event file (.xml) that defines the analysis and the different
parameters. It uses the .xml file for the analysis and then leaves it in the working directory
so you can refer to it as needed. : Adams/Car creates an event file (.xml) that defines the
analysis and the different parameters. It uses the .xml file for the analysis and then leaves
it in the working directory so you can refer to it as needed. The file that defines the path is
stored in the shared_car_database, in the driver_data table, and is called
iso_lane_change.dcd.
299
Running Analyses
3. Select OK.
3D Road
A 3D road analysis simulates your vehicle assembly using a three-dimensional road representation. The
road file (.rdf) is used by both the tire subsystems to compute contact patch forces/moments, and by the
lateral controller. The standard driver interface (SDI) uses path information contained in the 3D road file
to drive the vehicle along the specified course. The shared car database includes several example 3D road
files.
To set up a 3D road analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Course Events, and then
select 3D Road.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: 3D
Road.
3. Select OK.
Open-Loop Steering Analyses
Adams/Car provides a wide range of open-loop steering analyses. In open-loop steering analyses, the
steering input to your full vehicle is a function of time.
The open-loop steering analyses include:
Drift
Fish-Hook
Impulse Steer
Ramp Steer
Single Lane-Change
Step Steer
Swept-Sine Steer
Drift Analysis
In a drift analysis, the vehicle reaches a steady-state condition in the first ten seconds. A steady-state
condition is one in which the vehicle has the desired steer angle, initial throttle, and initial velocity
values. In seconds 1 through 4 of the analysis, Adams/Car ramps the steering angle/length from an initial
value to a desired value. It then ramps the throttle from zero to the initial throttle value in seconds 5
through 10. Finally, it ramps the throttle value up to the desired value from a time of 10 seconds to the
desired end time.
Adams/Car

300
To set up a drift analysis:
1. From theSimulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Drift.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: Drift.
3. Select OK.
Fish-Hook Analysis
You use a fish-hook analysis is to evaluate dynamic roll-over vehicle stability.
A fish-hook analysis consists of two mini-maneuvers:
A quasi-static phase sets up the vehicle at the desired initial conditions.
The second mini-maneuver runs the actual fish-hook analysis in which Adams/Car computes the
steering signal as a combination of step functions, and disengages the clutch. The maneuver
provides a basis for evaluating a vehicle's transitional response and dynamic roll-over stability.
The most important factors for this evaluation are: steering-wheel angle, lateral acceleration,
yaw rate, and roll angle.
Adams/Car conducts the analysis by driving at a constant speed, putting the vehicle in neutral,
and turning one direction in a preselected steering-wheel angle and then turning the opposite
direction in another preselected steering-wheel angle.
To set up a fish-hook analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Fish Hook.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: Fish
Hook.
3. Select OK.
Impulse-Steer Analysis
In an impulse-steer analysis, the steering demand is a force/torque, single-cycle, sine input. The steering
input ramps up from an initial steer value to the maximum steer value. You can run with or without cruise
control. The purpose of the test is to characterize the transient response behavior in the frequency domain.
Typical metrics are: lateral acceleration, and vehicle roll and yaw rate, both in time and frequency
domain.
Note: Adams/Car creates an event file (.xml) that defines the analysis and the different parameters.
It uses the .xml file for the analysis and then leaves it in the working directory so you can
refer to it as needed.
301
Running Analyses
To set up a impulse-steer analysis:
1. From theSimulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Impulse Steer.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Impulse Steer.
3. Select OK.
Ramp-Steer Analysis
In a ramp-steer analysis, you obtain time-domain transient response metrics. The most important
quantities to be measured are: steering-wheel angle, yaw angle speed, vehicle speed and lateral
acceleration. During a ramp-steer analysis, Adams/Car ramps up the steering input from an initial value
at a specified rate.
To set up a ramp-steer analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Ramp Steer.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Ramp Steer.
3. Select OK.
Single Lane-Change Analysis
During a single lane-change analysis, the steering input goes through a complete sinusoidal cycle over
the specified length of time. The steering input can be:
Length, which is a motion applied to the rack of the steering subsystem.
Angle, which is angular displacements applied to the steering wheel.
Force applied to the rack.
Torque applied to the steering wheel.
To set up a single lane-change analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Single Lane Change.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Single Lane Change.
3. Select OK.
Step Steer Analysis
A step steer analysis yields time-domain transient-response metrics. The most important quantities to be
measured are:
Adams/Car

302
Steering-wheel angle
Yaw rate
Vehicle speed
Lateral acceleration
During a step steer analysis, Adams/Car increases the steering input from an initial value to a final value
over a specified time.
To set up a step steer analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Step Steer.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis: Step
Steer.
3. Select OK.
Swept-Sine Steer Analysis
Sinusoidal steering inputs at the steering wheel let you measure frequency-response vehicle
characteristics. This provides a basis for evaluating a vehicle transitional response, the intensity and
phase of which varies according to the steering frequency. The most important factors for this evaluation
are:
Steering-wheel angle
Lateral acceleration
Yaw rate
Roll angle
During a swept-sine steer analysis, Adams/Car steers the vehicle from an initial value to the specified
maximum steer value, with a given frequency. It ramps up the frequency of the steering input from the
initial value to the specified maximum frequency with the given frequency rate.
To set up a swept-sine steer analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Open-Loop Steering Events,
and then select Swept-Sine Steer.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Swept-Sine Steer.
3. Select OK.
Quasi-Static Analyses
Quasi-static analyses find dynamic equilibrium solutions for your full vehicle at increasing, successive
values of lateral acceleration. Quasi-static analyses, in contrast to open-loop and closed-loop analyses,
do not include transient effects and solve very quickly. For example, in a quasi-static analysis, a change
303
Running Analyses
in lateral acceleration from 0.1g to 0.5g does not show the lateral acceleration or yaw rate overshoot that
a similar open-loop and closed-loop analysis might show.
The following topics contain information on setting up quasi-static analyses, as well as a description of
the types of quasi-static analyses:
Quasi-Static Constant-Radius Cornering
Quasi-Static Constant-Velocity Cornering
Quasi-Static Force Moment Method
Quasi-Static Straight-Line Acceleration
Quasi-Static Constant-Radius Cornering Analysis
You perform a constant radius cornering analysis to evaluate your full vehicle's understeer and oversteer
characteristics. The constant radius cornering analysis holds the turn radius constant and varies the
vehicle velocity to produce increasing amounts of lateral acceleration.
This analysis:
Uses a force-moment method to balance the static forces to 0 at each time step.
Provides a faster solution than the corresponding dynamic analysis, but doesn't account for
transient effects, such as gear shifting.
Can be useful when exploring the limit handling characteristics of the vehicle due to a
combination of both the longitudinal and lateral acceleration.
Differs from the constant-velocity cornering analysis in that the turn radius is fixed and the
longitudinal velocity varies.
A CONSUB controls this analysis. For more information on CONSUB, see Welcome to Adams/Solver
Subroutines.
You can, for example, use the plot configuration file, mdi_fva_ssc.plt, in the shared Adams/Car database
to generate the plots that are typically of interest for this analysis. Otherwise, in Adams/PostProcessor,
you can create your own plots by selecting the desired requests and components.
To set up a constant-radius cornering analysis:
1. From theSimulate menu, point to Full-Vehicle Analysis, point to Quasi-Static Maneuvers, and
then select Constant-Radius Cornering.
2. Enter the necessary parameters as explained in the dialog box help for Quasi-Static Constant-
Radius Cornering.
3. Select OK.
Quasi-Static Constant-Velocity Cornering Analysis
You perform a constant velocity cornering analysis to evaluate your full vehicle's understeer and
oversteer characteristics. The constant velocity cornering analysis holds the vehicle velocity constant
Adams/Car

304
and varies the turn radius to produce increasing amounts of lateral acceleration. The input parameters for
this analysis are the same as the steady-state cornering analysis except that you specify the vehicle
longitudinal velocity instead of the turn radius.
This analysis:
Uses a force-moment method to balance the static forces to 0 at each time step.
Provides a faster solution than the corresponding dynamic analysis, but doesn't account for
transient effects, such as gear shifting.
Can be useful when exploring the limit handling characteristics of the vehicle due to a
combination of decreasing turn radius and longitudinal acceleration.
Differs from the constant-radius cornering analysis in that the turn radius is not fixed.
A CONSUB controls this analysis. For more information on CONSUB, see Welcome to Adams/Solver
Subroutines.
You can use the plot configuration file, mdi_fva_ssc.plt, in the shared car database to generate the plots
that are typically of interest for this analysis.
To set up a constant-velocity cornering analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Quasi-Static Maneuvers, and
then select Constant-Velocity Cornering.
2. Enter the necessary parameters as explained in the dialog box help for Quasi-Static Constant-
Velocity Cornering.
3. Select OK.
Quasi-Static Force-Moment Analysis
You perform a force-moment analysis to evaluate the stability and handling characteristics of your
vehicle model. During the analysis, Adams/Car drives the vehicle at constant longitudinal speed and
performs a series of analyses at different side-slip angles and steer angles. The analysis:
Represents a typical test in which the vehicle is constrained on a model flat-belt tire tester.
Is based on the assumption that most of the stability and control characteristics can be obtained
from a study of the steady-state force and moments acting on the vehicle.
You can present the results of a quasi-static force-moment analysis in tabular form or as diagrams and
plots representing the computed forces and moments from the simulated test. The diagram created from
the forces and moments acting on the vehicle is a portrait of the vehicle-maneuvering potential for
specific operating conditions.
A CONSUB controls this analysis. For more information on CONSUB, see Adams/Solver Subroutines.
To set up a force-moment analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Quasi-Static Maneuvers, and
then select Force-Moment Method.
305
Running Analyses
2. Enter the necessary parameters as explained in the dialog box help for Quasi-Static Force-
Moment Method.
3. Select OK.
Quasi-Static Straight-Line Acceleration Analysis
A quasi-static straight-line acceleration analysis uses the static solver to perform multiple static analyses
with each increasing time step representing an increase in straight line acceleration/deceleration. This
technique uses a force-moment method to balance the static forces to 0 at each time step. This method
provides a quicker solution than the dynamic analysis but doesn't have transient effects, because of such
events as gear shifting.
To set up a straight-line acceleration analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Quasi-Static Maneuvers, and
then select Straight-Line Acceleration.
2. Enter the necessary parameters as explained in the dialog box help for Quasi-Static Straight-Line
Acceleration.
3. Select OK.
Straight-Line Behavior Analyses
The analyses based on the Driving Machine focus on the longitudinal dynamics of the vehicle.
Adams/Car uses open- and closed-loop longitudinal controllers to drive your vehicle model.
The straight-line-behavior analyses include:
Acceleration
Braking
Power-off Straight Line
Acceleration Analysis
During an acceleration analysis, the Driving Machine ramps the throttle demand from zero at your input
rate (open loop) or you can specify a desired longitudinal acceleration (closed loop). You can specify
either free, locked, or straight-line steering. An acceleration analysis helps you study the anti-lift and
anti-squat properties of a vehicle.
Note: Adams/Car creates an event file (.xml) that defines the analysis and the different parameters.
It uses the .xml file for the analysis and then leaves it in the working directory so you can
refer to it as needed.
Adams/Car

306
To set up an acceleration analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Straight-Line Behavior, and
then select Acceleration.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Acceleration.
3. Select OK.
Braking Analysis
During a braking analysis, the Driving Machine ramps the brake input from zero at your input rate or lets
you specify a longitudinal deceleration (closed loop). You can also specify either free or locked steering.
The braking test analysis helps you study the brake-pull anti-lift and anti-dive properties of a vehicle.
To set up a braking analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, point to Straight-Line Behavior, and
then select Braking.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Braking.
3. Select OK.
Power-off Straight Line Analysis
This analysis allows you to examine operating behavior and directional deviations caused by suddenly
lifting off the throttle pedal during a straight-line analysis. Typical results collected from the power-off
straight-line analysis include variations in heading direction and longitudinal deceleration. Optionally,
you can depress the clutch during the throttle lift-off. In this case, you specify the duration that it takes
to depress the clutch.
The Driving Machine drives the vehicle through two distinct phases:
Quasi-static setup - The vehicle is set up in a straight line, to reflect the initial longitudinal
velocity condition.
Power-off event - The throttle signal is stepped down, from the value of the initial set mini-
maneuver, to zero.
To set up a power-off straight line analysis:
1. From theSimulate menu, point to Full-Vehicle Analysis, point to Straight-Line Behavior, and
then select Power-off Straight Line.
2. Enter the necessary parameters as explained in the dialog box help for Full-Vehicle Analysis:
Power-off Straight Line.
3. Select OK.
307
Running Analyses
File-Driven Analysis
The file-driven analysis lets you run an analysis described in an existing event file (.xml).
Having direct access to event files lets you perform non-standard analyses on your full-vehicle assembly
because all you have to do is generate a new event file describing the analysis.
Learn about the Driving Machine.
Learn about Event Files.
To set up a file-driven analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, and then select File Driven Events.
2. Enter an Output Prefix.
3. If necessary, select a new Road Data File.
Press F1 for more detailed information on any of the selections in this dialog box.
4. Right-click in the Driver Control Files text box and select an XML Event file from the file
selection dialog box.
5. Select OK.
Working with Event Files (.xml)
You use event files (.xml) to describe the maneuvers you want the Driving Machine to perform.
Event files (.xml) describe how you want the Driving Machine to drive your vehicle during a maneuver.
The event file instructs the Driving Machine how fast to drive the vehicle, where to drive the vehicle (for
example, on a 80 m radius skidpad), and when to stop the maneuver (for example, when lateral
acceleration =8 m/s2). Event files specify the kinds of controllers the Driving Machine should use for
each of the available control signals (steering, throttle, brake, gear, and clutch). An event file can
reference other files, primarily driver control data files (.dcd), to obtain necessary input data, such as
speed versus time. Learn about referencing .dcd files.
Event files organize complex maneuvers into a set of smaller, simpler steps called mini-maneuvers. An
event file defines the static-setup and a list of mini-maneuvers. For each mini-maneuver, the event file
specifies how the Driving Machine is to control the steering, throttle, brake, gear, and clutch.
Learn about event files:
Creating Event Files
Structure of Event Files
Creating Mini-Maneuvers
Referencing .dcd Files
Example Event Files
Adams/Car

308
Creating Event Files
Before you can run a Driving Machine full-vehicle analysis, you must create (or use) an event file that
contains one or more mini-maneuvers.
To set up Driving Machine mini-maneuvers:
1. From the Simulate menu, point to Full-Vehicle Analysis, and then select Event Builder.
The Event Builder dialog box has four major sections.
File name, initial speed and gear, and units used in a selected field (shown at the bottom of the
dialog box).
Static Set-up and Gear Shifting Parameters.
Mini-maneuver parameters on tabs for each of the five control signals with open-loop Control
Value, plus an additional tab for Conditions to end a mini-maneuver.
Closed-loop parameters (used when a control signal has its Control Method set to machine.
2. From the File menu, select New.
3. Enter the file name in the text box and click OK. The name appears in the Event File text box
with a .xml extension. Initial default values appear in other text boxes.
4. If required, you can modify the initial Speed and Gear.
5. If required, you can modify values specified in the Static Set-up tab (for more information, see
dialog box help for Event Builder).
6. Select the Gear Shifting Parameters tab. If required, you can modify values specified on this tab
(for more information, see dialog box help for Event Builder).
7. For MINI_1 (the default initial mini-maneuver), make selections for each of the control signal
tabs (Steering, Throttle, Braking, Gear, and Clutch). Enter the necessary parameters as explained
in the dialog box help for Event Builder to create the mini-maneuver.
8. Click the Conditions tab and enter the parameters required to end the mini-maneuver (for more
information, see Specifying Conditions).
9. To create additional mini-maneuvers, click the button to the left of the mini-maneuver
Name. This displays the Table Editor for mini-maneuvers.
10. In Table Editor mode, enter the name of your new mini-maneuver in the Name text box at the
bottom of Event Builder.
11. Click Add. This adds a row to the Table Editor. You can edit any of the values in the row by
clicking in the appropriate cell (for more information, see dialog box help for Event Builder).
12. Continue adding mini-maneuvers as necessary.
13. To return to Property Editor mode, either double-click a name (in the Name column), or select
the name, right-click, and then select Modify with Property Editor.
14. When you've finished creating your event file, select Save.
After you create the file, you use it to run a file-driven analysis.
309
Running Analyses
Using Event Files
After you use the Event Builder to create or modify an event file, you use that event file to run a file-driven
analysis.
Creating Mini-Maneuvers
A mini-maneuver is a set of smaller, simpler analysis steps, such as a straight-line mini-maneuver. Mini-
maneuvers are contained in event files (.xml).
To create a mini-maneuver, you must specify controls signals (steering, throttle, braking, gear, and
clutch) and its conditions. For each control signal, you specify the following:
Actuator type (steering only)
Control method
Control type
Control mode
Learn more:
Specifying an Actuator Type
Specifying a Control Method
Specifying a Control Type
Specifying a Control Mode
Specifying Conditions
Specifying an Actuator Type
When defining the steering control for a mini-maneuver, you must specify an actuator type. You use the
actuator type to specify whether the Driving Machine steers the vehicle at the steering wheel or steering
rack and whether the Driving Machine uses a force or motion. For example, when you set Actuator Type
to rotation, the Driving Machine steers using a motion on the steering wheel.
The actuator type you select for steering determines how the Driving Machine interprets the units of
other parameters associated with the steering signal. For example, if you set Actuator Type to torque, the
Driving Machine interprets the amplitude argument for an open-loop sinusoidal input as torque (with
units of length*force). If you set Actuator Type to rotation, however, the Driving Machine interprets the
amplitude as an angle.
Arguments
force Driving Machine steers the vehicle by applying a force to the steering rack.
Adams/Car

310
Specifying a Control Method
When defining any mini-maneuver, you must specify a control method for each control signal.
Arguments
Open
Machine
SmartDriver
Open Control Method
The Driving Machine output for the control signal is a function of time, and you must specify the function
using the Control Type argument.
You cannot switch from an open-loop control mini maneuver to a human control mini maneuver. You
can, however, switch from human control in a preceding mini maneuver to open-loop control in a
subsequent mini maneuver.
Machine Control Method
Setting Control Method to machine specifies the vehicle path, speed profile, and other parameters used
by machine control.
If you set machine control for gear and clutch, you must also supply the maximum and minimum engine
speed. Machine control up-shifts to keep engine speed less than maximum and down-shifts to keep
engine speed greater than minimum.
If you set Control Method to machine for steering, then you should specify the target path, using the Steer
Control argument.
If you set Control Method to machine for throttle or brake, then you should specify the target speed
profile, using the Speed Control argument.
Arguments
rotation Driving Machine steers the vehicle using a MOTION statement on the steering-wheel
revolute joint.
torque Driving Machine steers the vehicle by applying torque to the steering wheel.
trans Driving Machine steers the vehicle using a motion on the steering rack translational
joint.
Note: If you set Speed Control to lat_accel, then you must set Steer Control to skidpad.
Machine control for throttle requires the use of machine control for braking.
Likewise, machine control for clutch requires machine control for gear.
311
Running Analyses
Adams/Car

312
Steer Control You can select one of the following:
ay_s_map/ay_t_map - To define these closed-loop steering conditions, you can use a
Table/Plot editor that you access by selecting the Table Editor button.
file -
File Name - Enter the name of a file that contains the path data.
path_map - To define this closed-loop steering condition, you can use a Table/Plot editor
that you access by selecting the Table Editor button. To define this closed-loop steering
condition, you can use a Table/Plot editor that you access by selecting the Table Editor
button.
skidpad -
Entry Distance - Specifies the length of the straight path preceding the turn. Note that
all paths are relative to the position of the vehicle at the end of the preceding mini-
maneuver. If the preceding mini-maneuver was a skidpad and you want the vehicle to
continue on the same circle in the current mini-maneuver, then specify zero (0) for Entry
Distance.
Radius - Specifies the radius of the skidpad.
Turn Direction - Specifies which way the vehicle turns when traveling forward.
straight - The vehicle travels forward from its current position along the tangent of the path
from the preceding mini-maneuver. If the vehicle was under open-loop steering control in
the preceding mini-maneuver, then the vehicle travels forward in the direction of its current
velocity. You don't need to specify additional arguments.
313
Running Analyses
Speed Contro You can select one of the following:
ax_s_map
ax_t_map
file
File Name - Enter the name of a file that contains the closed-loop data.
lat_accel - Be sure to set Steer Control to skidpad.
Lat. Acc. - Enter a value for the lateral acceleration.
lon_accel
Start Time
Long. Acc - Enter a value for the longitudinal acceleration.
maintain - The Driving Machine maintains the ending speed of the vehicle from the
previous mini-maneuver. If this mini-maneuver is the first in the experiment, then the
Driving Machine maintains the initial speed set in the EXPERIMENT block.
Velocity
speed_s_map
speed_t_map
vel_polynomial
Velocity - Specifies the vehicle speed as polynomial of time. The Driving Machine
computes the speed using the following relation:
I F ( Ti me < START_TI ME) :
SPEED = VELOCI TY
I F ( TI ME START_TI ME ) :
SPEED = VELOCI TY +
ACCELERATI ON*( TI ME - START_TI ME) +
1/ 2*J ERK*( TI ME- START_TI ME) **2
where START_TIME is the starting time relative to the beginning of the mini-maneuver.
Specify the following arguments:
VELOCI TY = val ue <l engt h/ t i me>
ACCELERATI ON = val ue <l engt h/ t i me2>
J ERK = val ue <l engt h/ t i me3>
START_TI ME = val ue <t i me>
Note that J ERK is the time rate of change of acceleration. J ERK =d(acceleration)/dt.
Acceleration
Jerk
Start Time
You can use a Table/Plot editor to define the various maps of speed and acceleration expressed as a
function of time or distance traveled.
Adams/Car

314
SmartDriver Control Method
When you set Control Method to SmartDriver, you must also specify the Control Mode, the task, course
file, as well as the maximum driving, braking, and turning accelerations.
Arguments
Specifying a Control Type
For any of the control signals (steering, throttle, braking, and so on), when you set Control Method to
open, Adams/Car enables the Control Type option.
Arguments
Task Select one of the following:
user_defined - Set your own vehicle limits.
vehicle_limits - Use the maximum vehicle limits.
Course File Displays the name of a .xml or .drd file that describes the path over which the
Driving Machine or Adams/SmartDriver drive the vehicle.
Select to choose a course file.
Max Driving Acc Enter the maximum driving acceleration index. Valid values are 0 to 100.
Max LH Turn Acc Enter the maximum left turn acceleration index. Valid values are 0 to 100.
Max Braking Acc Enter the maximum braking acceleration index. Valid values are 0 to 100.
Max Braking Acc Enter the maximum braking acceleration index. Valid values are 0 to 100.
Max RH Turn Acc Enter the maximum right turn acceleration index. Valid values are 0 to 100.
constant The Driving Machine inputs a constant signal to your vehicle model.
Control Value - Enter a real number.
data_drive
n
Specifies that the control signal comes from a driver control data file (.dcd), which you
specify. The Driving Machine opens the .dcd file and reads the appropriate data.
Dcd Filename - Enter the name of a .dcd file.
data_map Lets you specifies a series of discrete values as a function of time. Click the Open Loop
Demand Map button that appears to enter values and view a plot of the values you enter.
function Specifies that you should use any valid Adams/Solver function expression based on time.
Function - Enter a time-based function. For example:
C20. 0*SI N( 2*PI *TI ME)
where TI ME is the simulation time.
315
Running Analyses
impulse The Driving Machine outputs an impulse to your vehicle constructed from a pair of cubic
step functions. To define the impulse, you must specify the following arguments:
Start Time - The starting time of the impulse relative to the beginning of the
mini-maneuver. For example, if the mini maneuver starts at 1.2 seconds
simulation time and Start Time =0.3 seconds, then the impulse begins at 1.5
seconds simulation time.
Duration - The length in time of the impulse.
Maximum Value - The height of the impulse. The impulse reaches its
maximum value relative to the start time at half the duration.
Adams/Car computes the IMPULSE function as follows:
Let T1 = ( TI ME - START_TI ME ) / DURATI ON/ 2. 0
Let T2 = ( TI ME - ( START_TI ME + DURATI ON/ 2. 0) ) /
DURATI ON/ 2. 0
I F ( T1 < 0. 0 ) :
OUTPUT = 0. 0
I F ( 0 < T1 < 1. 0 ) :
OUTPUT = MAXI MUM_VALUE * ( 3. 0 - 2. 0*T1) *T1*T1
I F ( T1 > 1. 0 and T2 < 1. 0 )
OUTPUT = MAXI MUM_VALUE( 1. 0 - ( 3. 0 - 2. 0*T2) *T2*T2 )
I F ( T2 > 1. 0 ) ;
OUTPUT = 0. 0
The following plot illustrates the I MPULSE function:
Adams/Car

316
ramp The Driving Machine supplies a ramp input. To define the ramp, you must supply the
following arguments:
Start Time
Ramp Value
Adams/Car computes the RAMP function as follows:
If ( time <START_TIME ) input =INITIAL_VALUE
if ( time >START_TIME ) then
input =INITIAL_VALUE +( time - START_VALUE) * RAMP_VALUE
Note: When using the RAMP function, the output value grows for the duration of the
mini-maneuver.
317
Running Analyses
sine The Driving Machine outputs a single-cycle sinusoid to your vehicle smoothed at the
beginning and end by cubic-step functions. The duration of each cubic-step function is
1/100*CYCLE_LENGTH.
Start Time - The starting time of the sinusoid relative to the beginning of the
mini-maneuver. For example, if the mini-maneuver starts at 2.1 seconds
simulation time and Start Time =0.3 seconds, then the sinusoid begins at 2.4
seconds simulation time.
Amplitude - The amplitude of the sinusoid.
Cycle Length - The length of time to complete one cycle of the sinusoid.
Adams/Car computes the SINE function as follows:
Let T1 = ( TI ME - START_TI ME) / CYCLE_LENGTH / 100. 0
Let T2 = ( TI ME - ( START_TI ME + 0. 99*CYCLE_LENGTH) ) /
CYCLE_LENGTH / 100. 0
I F ( T1 < 0. 0 ) :
OUTPUT = I NI TI AL_VALUE
I F ( 0 < T1 < 1. 0 ) :
OUTPUT = I NI TI AL_VALUE + AMPLI TUDE *
SI N( 2. 0*PI *( TI ME - START_TI ME) / CYCLE_LENGTH) * ( 3. 0 -
2. 0*T1) *T1*T1
I F ( T1 > 1. 0 and T2 < 0. 0 )
OUTPUT = I NI TI AL_VALUE + AMPLI TUDE *
SI N( 2. 0*PI *( TI ME - START_TI ME) / CYCLE_LENGTH)
I F ( T1 > 1. 0 and 0. 0 < T2 < 1. 0 )
OUTPUT = I NI TI AL_VALUE + AMPLI TUDE *
SI N( 2. 0*PI *( TI ME - START_TI ME) / CYCLE_LENGTH) ( 1. 0 - ( 3. 0
- 2. 0*T2) *T2*T2)
I F ( T2 > 1. 0:
OUTPUT = I NI TI AL_VALUE
The following plot illustrates the SI NE function:
Adams/Car

318
step The Driving Machine inputs a STEP5 function to your vehicle model based on the
following input parameters, which you must supply:
Start Time
Duration
Final Value
Adams/Car computes the STEP function as follows:
If ( time <START_TIME ) then input =INITIAL_VALUE
if ( START_TIME <time <START_TIME +DURATION ) then
Let T =(TIME - START_TIME)/DURATION
input =INITIAL_VALUE +( FINAL_VALUE - INITIAL_VALUE)*( 3 - 2*T)*T**2
if ( time >START_TIME +DURATION ) then input =FINAL_VALUE
Note that START_TIME is relative to the beginning of the mini-maneuver.
319
Running Analyses
Specifying a Control Mode
If you set Control Method to open, you must also define the Control Mode as either absolute or relative.
If Control Method is not open, Control Mode is always absolute. With all open-loop maneuvers, the
value of the preceding mini maneuver is used as the starting point for the next mini-maneuver. This is
irrespective of whether you set Control Mode to relative or absolute. For example, your vehicle is driving
on a skid pad at 30 mph, with 20o of steering wheel, when the first mini-maneuver is finished. The
steering-wheel angle for the next mini maneuver will be 20o.
You can set Control Mode for the following open-loop control types:
constant
data_driven
data_map
step
swept_sine Sweeps the frequency of the output from the initial frequency to a maximum frequency
at a given rate. Once the maximum frequency is achieved, the frequency remains
constant. The amplitude of the swept sine function is fixed. To define swept sine, you
must supply the following parameters:
Start Time - The starting time of the function, measured from the beginning of
the mini-maneuver.
Amplitude - The amplitude of the swept-sine function.
Initial Frequency - The starting frequency of the swept-sine function in
<cycles/time>.
Frequency Rate - The rate the frequency is swept from the initial frequency to
the maximum frequency <cycles/time/time>.
Max Frequency - The maximum frequency of the swept sine function in
<cycles/time>.
The following plot illustrates the SWEPT_SINE open-loop function:
Adams/Car

320
For these control types, Control Mode changes the meaning of the FINAL_VALUE input in the .xml.
Control Mode has no effect on the rest of the Control Types, nor on machine, human, and SmartDriver
control methods.
The relative and absolute methods allow you to define the steering-wheel angle for the end of the next
mini maneuver.
Arguments
Here is another example. If at the beginning of the mini-maneuver the steering is 20
o
, the steering Control
Method is set to open, the Control Type is set to step, and the FINAL_VALUE =90.0, then
FINAL_VALUE is relative to INITIAL_VALUE, and the steering angle at the end of the step input is
110
o
. If, however, Control Mode is set to Absolute, then the steering angle at the end of the step input
equals the FINAL_VALUE of 90
o
Specifying Conditions
Conditions specify when one mini-maneuver ends so the next one can begin. For example, you might end
a mini-maneuver when the vehicle speed reaches 100 kph. You can also group end conditions together.
For example, you might end a mini-maneuver when the vehicle speed reaches 100 kph and the lateral
acceleration exceeds 5 m/s2.
The event file supports conditions based on time, distance, velocity, acceleration, and many other vehicle
control variables. Conditions reference a measure or solver variable by name to measure a given quantity
in the model.
The Conditions tab of the Event Builder shows one possible condition at a time in Property Editor mode.
To add conditions or view other defined conditions, click the button to the left of the condition name to
enter Table Editor mode. In Table Editor mode, you can see all defined conditions, add new conditions,
modify conditions, or delete conditions. The Table Editor mode also lets you see the full set of arguments
available for each condition.
Arguments
Absolute Indicates that the final value is absolute. For example, for a step input to the steering
where the initial steering is 10 degrees and the final value is 50 degrees, the steer at the
end of the step equals 50 degrees.
Relative Indicates that the final value is relative to the initial value. For example, for a step input
to the steering where the initial steering is 10 degrees and the final value is 50 degrees,
the steer at the end of the step equals 60 degrees.
321
Running Analyses
Then, the end condition is satisfied if:
5 - 0. 1 < Lat er al accel er at i on < 5 + 0. 1
Adams/Car

322
323
Running Analyses
Name Filter Filters the listed conditions based on the substring you specify.
Name Shows the condition name (not editable).
Adams/Car

324
Type Quantity that is measured. Can be:
curvature - Curvature of the vehicle trajectory
distance - Total distance traveled by the vehicle during a mini-maneuver
engine_speed - Angular velocity of the engine crankshaft in number of
revolutions per minute (rpm)
lat_accel - Vehicle lateral acceleration
lat_dis - Vehicle lateral displacement with respect to the global reference
system
lat_velocity - Vehicle lateral velocity
loc_accel - Vehicle longitudinal acceleration
lon_dis- Vehicle longitudinal displacement with respect to the global
reference system.
pitch_angle - Angular displacement about the vehicle's lateral axis
pitch_rate - Time derivative of pitch angle
rack_tra_vel - Time derivative of rack displacement
rack_travel - Displacement in the steering rack joint
radius - Radius of vehicle trajectory
roll_angle - Angular displacement about the vehicle's longitudinal axis
roll_rate - Time derivative of vehicle roll angle
side_slip_ang - Angle between the ground-plane projections of the vehicle's
longitudinal axis and its velocity vector
stee_ang_vel - Time derivative of steering angle
steering ang - Angular displacement in the steering-wheel joint
time - Simulation time
user_defined - Not implemented
velocity - Vehicle longitudinal velocity
vert_accel - Vertical acceleration of driver reference frame with respect to
origo marker
vert_dis - Vehicle vertical displacement with respect to the global reference
system
vert_velocity - Vehicle vertical velocity with respect to the global reference
system
yaw_accel - Angular acceleration about the vehicle's vertical axis
yaw_angle - Angular displacement about the vehicle's vertical axis
yaw_rate - Angular velocity about the vehicle's vertical axis
325
Running Analyses
Referencing .dcd Files
You can reference driver control data (.dcd) files through XML event files to specify data for the method
of control of the vehicle. When referencing .dcd files, event files can obtain two types of data:
Open-loop data - Includes steering-wheel angle, throttle position, brake pressure, gear, and
clutch position tabulated against time or distance traveled.
Test == - Equal to trigger value
>> - Greater than the trigger value
<< - Less than the trigger value
|==| - Absolute type value is equal to the trigger value
|<<| - Absolute type value is less than the trigger value
|>>| - Absolute type value is greater than the trigger value
Trigger Value The value against which the measure is tested to determine if the end condition is
satisfied. Except for ENGINE_SPEED, which uses RPMs, you must specify the
value in modeling units as defined in the event file.
Error The allowed difference between measure and value that still satisfies the test. Error
must be positive and be specified in modeling units as defined in the event file
(except engine_speed, which is in RPMs). For example, if the cells of the table are:
Filter Time The test must be satisfied continuously over the filter time to satisfy the end
condition. filter time must be positive.
Delay Time Once the end condition is satisfied, delay the end of the mini-maneuver by delay
time.
Group Name You specify a name to group conditions together. All conditions having the same
group name must be satisfied simultaneously to end a mini-maneuver. For example,
you might specify two end conditions:
Longitudinal velocity equal to 20 m/s
Lateral acceleration greater than 5 m/s/s Then you place the specified end
conditions in the group mygroup. To end the mini-maneuver, the
longitudinal velocity must be 20 m/s and the lateral acceleration must be
greater than 5 m/s/s.
Condition Type Select a condition type:
abort - When met, it causes the simulation to stop.
end - When met, it causes the simulation to proceed to the next mini-
maneuver, if one is defined.
info - Not yet implemented
warning - Not yet implemented
Adams/Car

326
Closed-loop data - Uses data from the dcd file to fix the vehicle path and speed for a mini-
maneuver. Examples of closed-loop data are the vehicle position {x, y} versus time (t) or path
{x, y} versus distance traveled (s). Closed-loop data can also include vehicle speed and lateral
acceleration which the Machine Control integrates to determine the desired vehicle path and
speed.
You reference .dcd files in your event files by selecting Machine for Steering/Throttle and Braking and
browsing your databases for dcd files in the File Name text box. That is, using the file option for Machine
Control means that you want to obtain control data from a .dcd file.
Example Event Files
In Adams/Car, XML became the default file format for Driving Machine analyses. Although Adams/Car
still supports driver control files (.dcf), it now automatically converts them to .xml. The .xml files are
referred to as event files. Although the contents of the two files types look different, they contain the same
event information. You work with .xml files through the Event Builder.
In the shared Adams/Car database, we provide files in both .dcf and .xml format. These files are stored
in the driver_controls.tbl directory/table.
Adams/SmartDriver Analysis
The Adams/SmartDriver analysis lets you run an analysis described in an existing event file (.xml). You
can drive the vehicle at the acceleration limits or some percentage of those limits.
To set up an Adams/SmartDriver analysis:
1. From the Simulate menu, point to Full-Vehicle Analysis, and then select Adams/SmartDriver.
2. Press F1 and then follow the instructions in the dialog box help for Full-Vehicle Analysis:
SmartDriver.
3. Select OK.
327
Running Analyses
Using the Driving Machine
You use the Driving Machine to perform full-vehicle analyses. The Driving Machine drives your virtual
vehicle according to your instructions much like a test driver would drive an actual vehicle. The Driving
Machine steers the vehicle, applies the throttle and brake, and shifts gears (using the clutch). You can
instruct the Driving Machine to switch between open- and closed-loop (Machine Control and
SmartDriver) control during a simulation.
Using open-loop control, the Driving Machine can, for example, input a swept-sinusoid to the steering
or play back recorded steering, throttle, brake, gear, and clutch signals as input to your virtual vehicle.
This lets you use data acquired in real tests as input to your virtual vehicle.
Using Machine Control, which replaced DriverLite, the Driving Machine can, for example, steer a
vehicle around a skid-pad, while gradually increasing speed. You use Machine Control to have the
vehicle follow a path and maintain a specified longitudinal speed or acceleration. Inputs to Machine
Control are the target path the vehicle should follow and/or a target speed or longitudinal acceleration vs
time or distance.
Using Adams/SmartDriver, you can determine the maximum performance of a vehicle as it follows a
specified path. Adams/SmartDriver is an extra-cost, add-on product that lets you specify a desired
performance criterion (for example, 100%, 80%, 50% of vehicle limits) for the vehicle as it follows the
defined path. Adams/SmartDriver then creates a target longitudinal speed along the path that meets the
desired performance criterion.
Adams/Car stores your instructions to the Driving Machine in an XML event file. You can use the Event
Builder (or any text editor) to create or modify an event file.
Driving Machine reads recorded open-loop signals and vehicle path and velocity data from text files
named driver control data files (.dcd).
To help you calculate the control signals, Adams/Solver passes vehicle information such as position,
velocity, and acceleration, to the Driving Machine. The Driving Machine provides a means for defining
and passing sets of command signals, feedback signals, and parameters for each of the five control
signals (steering, throttle, brake, gear, and clutch).
The following figure shows how the Driving Machine works in a virtual prototyping model.
Note: We changed the Driving Machine architecture to support XML files as the default, while
maintaining support for legacy dcf files. If you specify a dcf file, Driving Machine
automatically converts it to an XML file in the working directory so you can use the Event
Builder to review and modify the event.
Adams/Car

328
Learn more about the Driving Machine:
What You Can Do with the Driving Machine
How You Benefit from Using the Driving Machine
Steps in Using the Driving Machine
Creating Paths for Driving Machine
Data Flow in Driving Machine
Template Updates
Limitations to the Driving Machine
329
Running Analyses
What You Can Do with the Driving Machine
Using the Driving Machine, you can:
Input the vehicle path {x, y} and speed, and use closed-loop, Machine Control, to steer a vehicle
along a path or follow a desired velocity or both (the table, Closed-Loop Data in .dcd Files, lists
all potential inputs).
Input a variety of open-loop functions, such as swept-sine and impulse, to the steering, throttle,
or brake.
Input recorded steering, throttle, brake, gear, and clutch signal to your model.
Stop a simulation, switch controllers, and change output-step size based on reaching a target
lateral acceleration, longitudinal velocity, or distance traveled.
With the optional Adams/SmartDriver closed-loop control, you can specify a desired vehicle
performance level, such as 100% or 50%, and input a path and speed as you would for Machine
Control.
How You Benefit from Using the Driving Machine
When working with the Driving Machine, you have the following benefits:
You save the time you previously needed to set proper gains for closed-loop controllers. The
Driving Machine incorporates proprietary control algorithms from MSC.Software.
You shorten simulation times by ending simulations based on targets for lateral acceleration,
longitudinal velocity, and distance traveled.
You gain flexibility in how you input vehicle paths and desired velocity profiles, choosing from
recorded data stored in external files or parametrically generated paths and profiles based on a
few simple inputs.
Steps in Using the Driving Machine
Follow these steps to use the Driving Machine:
1. Assemble a full-vehicle model with the .__MDI_SDI_TESTRIG test rig or open an existing full-
vehicle assembly.
2. Do either of the following:
Use a predefined analysis (from the Simulate menu, point to Full-Vehicle Analysis, and then
point and select the predefined analysis you want).
Create your own event file to perform your specific set of simulations (from the Simulate
menu, point to Full-Vehicle Analysis, and then select Event Builder).
Adams/Car

330
Tips on Creating Paths for Driving Machine
Applies to Machine Control and SmartDriver
The following are tips for creating paths for the Driving Machine.
Remove Excess Noise
The path referenced in the event file is the TARGET path used by the steering controller with no
smoothing or other manipulation to alter the path shape. Therefore, any irregularities included in the path
description, such as the noise coming from telemetry data, are seen by the steering controller and can
produce a quickly changing steering input. Further, because the Driving Machine computes the steering
input at discrete time steps (equal to the selected output step), and the steering input is typically applied
through a MOTION on the steering wheel, a quickly changing steering input will produce a noisy
steering torque signal. Therefore, to minimize noise in the steering torque you may want to preprocess
the path data to remove noise and/or add corner cutting, and then store the resulting path in a .dcd file.
Path Point Spacing Important
In addition, path points spaced too far apart can also produce a noisy steering torque. To obtain the best
results from the controller with the lowest level of noise, we recommend that the largest distance between
points in the path be less than the minimum distance traveled by the vehicle in one output step. That is,
the distance travelled between two consecutive output steps should be greater than the distance between
any two path points. For example, if the maneuver minimum velocity is 10 m/s and the recommended
time step size is used (0.01 seconds), the suggested path point spacing is 0.1 meter. We recommend that
you create your paths for the lowest speed you expect to run, because small path point spacing is suitable
for both low- and high-speed events.
Also, note that if the distance between path points is greater than 0.5 meters, the controller re-samples
the path to a path point spacing of 0.5 meters. (This is the current default. You can use an API to modify
this setting.)
The following plots show the effect on steering input and steering torque using path point spacings of 0.5
m and 0.05 m at low and high speed:
Figure 1 - Path following at low speed (around 5 m/s, output step size 0.01 seconds)
Figure 2 - Path following at standard speed (from 20 to 40 m/s, output step size 0.01 seconds)
331
Running Analyses
Low Speed Test
Standard-speed Test
When speed increases, the difference in path point spacing has no effect.
Adams/Car

332
Data Flow in Driving Machine
When you submit a simulation using the Driving Machine, Adams/Car generates an Adams/Solver
command file (.acf), an Adams/Solver dataset file (.adm), and an XML event file. The .acf file instructs
Adams/Car Solver to read the dataset file and event file (using abgVDM::EventInit CONSUB). It also
instructs Adams/Car Solver to perform maneuvers described in the event file (using
abgVDM::EventRunAll CONSUB). Adams/Car Solver then provides the standard output files: .msg,
.res, .gra, and .out.
The event file (.xml) describes the maneuver you want to perform as a list of mini-maneuvers. The event
file can reference one or more driver control data (.dcd) files. Driver control data files contain either
closed-loop or open-loop data. An example of closed-loop data is vehicle path and speed (the table,
Closed-Loop Data in .dcd Files, lists all potential inputs). Open-loop data are steering, throttle, brake,
gear, and/or clutch signals versus time.
The following figure summarizes the data flow specific to the Driving Machine.
Template Updates
The 2005 Driving Machine employs vehicle controllers developed by MSC.Software, commonly known
as Machine Control, which replaces DriverLite functionality, and Adams/SmartDriver. To better control
333
Running Analyses
speed and path, the 2005 Driving Machine needs additional information about the vehicle. In particular,
the speed controller uses a feed-forward function to ensure quick and accurate response. However, this
requires information about the available engine brake torque, engine drive torque, brake torque, and
aerodynamic drag. You supply this information by creating new output communicators in your
templates. In addition, you must also enter vehicle parameter data, such as overall steering ratio that is
stored in the assembly file.
For more information, see Working with Templates->Template Updates.
Limitations of the Driving Machine
The Driving Machine has the following limitations:
It can only accurately steer a vehicle when positive steer inputs steer the vehicle to the left.
It can only drive the vehicle within the vehicle's limits of lateral and longitudinal acceleration,
and longitudinal velocity.
Working with Driver Control Data Files (.dcd)
You use driver control data (.dcd) files to specify:
The closed-loop data, such as path and speed you want a vehicle to follow.
The open-loop data, which is the steering, throttle, brake, gear, and clutch signals versus time
you want to input to a vehicle.
To use a .dcd file, you must reference it from an event file (.xml).
Driver control data files contain data for use by the Driving Machine. To instruct the Driving Machine
to use the data from a .dcd file, you must reference the file in an event file (.xml). An excerpt from a .xml
showing a reference to a .dcd file looks like the following:
( STEERI NG)
METHOD = ' OPEN'
CONTROL_TYPE = ' DATA_DRI VEN'
FI LE_NAME = ' my_dat a. dcd'
Driver control data files hold two types of data:
Open-loop data - Data that is played back as input to the vehicle without concern for how fast
or where the vehicle goes. Such data includes: steering-wheel angle, throttle, brake, gear, and
clutch signals. Examples of open-loop data include steering-wheel angle versus time, and
throttle position versus time.
Closed-loop data - Data that specifies exactly where and how fast the vehicle should go. An
example of closed-loop data is vehicle x and y position versus time. You can specify closed-loop
data in several forms. For example, curvature and velocity versus distance traveled, or lateral
acceleration and longitudinal acceleration versus time. You specify the type of data using the
SPEED_CONTROL and STEERING_CONTROL arguments in the .dcd file.
Adams/Car

334
Learn about .dcd files:
Structure of .dcd Files
Specifying Closed-Loop Data
Creating .dcd Files
Example .dcd File
Structure of Event Files
Event files contain the following type of information:
Name of Event File
Speed
Gear Number
Static Setup
Gear Shifting Parameters
Mini-Maneuvers for the Experiment
Name of Event File
When you assign a name to the event file, Adams/Car automatically generates a file with extension .xml
in the working directory and updates the Event File text box with the file name you entered.
Speed
Represents the initial vehicle speed for the maneuver.
Gear Number
Represents the initial gear position for the maneuver.
Static Setup
You can specify static-setup analyses that remove start-up transients that can eliminate mini-maneuvers
that you might normally use to set up a vehicle for cornering maneuvers. For example, in the past, to
perform a brake-in-turn analysis you might have run a transient mini-maneuver to have the vehicle turn-
in and reach static-setup on given turn, at a given speed/lateral acceleration, before starting to brake the
vehicle. This approach is equivalent to a test driver on a proving ground, driving at a steady speed and in
a steady-state condition (vehicle has no transients) before starting a dynamic maneuver (braking,
acceleration, steering, and so on). Now you can perform a much faster (less CPU time) static-setup
analysis.
You can set static setup to any of the arguments described next.
335
Running Analyses
Arguments
none Adams/Car does not perform a static equilibrium analysis. Rather, it locks the wheel
rotations and then performs an acceleration initial-conditions analysis, which
initializes Adams/Tire. Adams/Car then deactivates the wheel lock joint primitives
before executing the first mini-maneuver.
normal Locks the wheel rotations using joint primitives, but leaves the body free to move in
the fore-aft, lateral, and yaw directions. Soft springs (1 N/m and 10 N m/radian),
introduced by Adams/Tire just for static equilibrium, acting in all directions
between each wheel center and ground limit, but do not prevent, body yaw, fore-aft,
and lateral displacements. Then, before executing the first mini-maneuver,
Adams/Car deactivates the joint primitives to unlock the wheel rotations, and
Adams/Tire removes the soft springs.
The transitional and torsional stiffnesses supplied by the tire act in all directions
(x,y,z). Without these stiffnesses, the vehicle would have a neutral equilibrium
position in the x-y plane of the road.
Note that Adams/Chassis does not support normal.
Adams/Car

336
Gear-Shifting Parameters
Define the gear-shifting properties and the shape of the upshift and downshift curves for throttle and
clutch signals.
settle Locks the body's fore-aft, lateral, and yaw displacement using joint primitives and
performs a static equilibrium to settle the vehicle on the road. Then, before
executing the first mini-maneuver, Adams/Car deactivates the joint primitives.
For example selecting settle and specifying an initial velocity of 27777.78 mm/s is
equivalent to driving a stake vertically through the vehicle body and constraining the
body to move vertically about the stake. It allows the vehicle to roll (cornering) and
pitch (braking), but does not allow rotation about the axis of the stake (Yaw). When
the vehicle is released from this condition, it should be relatively well balanced to
remove initial transient effects. An imbalance in the tire forces could, however,
cause a slight steering effect. If you want to remove this effect, we recommend that
you use straight.
skidpad Locks the body's fore-aft and lateral position using a joint primitive. Adams/Car
adjusts the steering and throttle so the vehicle's yaw rate, lateral acceleration, and
speed match those prescribed by the initial radius, initial turn direction, and the
initial lateral acceleration or initial speed. You must specify the initial radius and
turn direction. Also, you must supply either the initial lateral acceleration or the
initial speed.
For example, selecting skidpad and specifying an initial radius, turn direction, and
initial speed effectively performs a settle static setup followed by a straight static
setup. Then, Adams/Car adjusts the steering and throttle so that the vehicle's yaw
rate, lateral acceleration, and speed match those prescribed in the event file. By
carefully observing the .msg file Adams/Solver produces, you can see the model
manipulation occur.
straight Locks the body's fore-aft and lateral position using a joint primitive. Adams/Car
adjusts the steering (so that the vehicle's yaw rate and lateral acceleration are zero)
and the throttle and/or brake (to balance any aerodynamic drag and scrub that the
tires produce and to match the specified initial longitudinal acceleration). Then,
before executing the first mini-maneuver, Adams/Car deactivates the joint
primitives.
The maneuver has two separate static analyses: the first uses the settle method, the
second uses a force balance on the vehicle body to ensure that the net lateral force
is negative (the vehicle is traveling in a straight line) and that longitudinal forces are
zero. The values for steering-wheel angle, throttle position, and so on, are used as
initial conditions for the subsequent dynamic analysis.
337
Running Analyses
Arguments
Mini-Maneuvers
The Driving Machine runs each mini-maneuver in the order listed, until the list is ended or a mini-
maneuver is terminated.
For each mini maneuver, you must specify a name for the mini-maneuver, the control signals (steering,
throttle, braking, gear, and clutch), as well as the condition for ending the mini maneuver.
Structure of .dcd Files
Driver control data (.dcd) files use a TeimOrbit format similar to other Adams/Car property files. Driver
control data files must contain these data blocks:
MDI_HEADER block - Identifies the file as a .dcd file and provides version information.
UNITS block - Identifies the units of the data contained in the .dcd file.
The driver control data file must also contain at least one of two data blocks:
OPEN_LOOP block - Specifies the steering, throttle, brake, gear, and clutch inputs to the
vehicle.
CLOSED_LOOP block - Specifies the path or the speed of the vehicle, or both.
The following is an example .dcd file:
[ MDI _HEADER]
FI LE_NAME = i so_l ane_change. dcd
FI LE_TYPE = ' dcd'
FI LE_VERSI ON = 1. 0
FI LE_FORMAT = ' ASCI I '
Throttle Fall Time Delta time of the step function for the descending curve of the throttle
signal (>0.0)
Clutch Fall Time Delta time of the step function for the descending curve of the clutch signal
(>0.0)
Throttle Raise Time Delta time of the step function for the ascending curve of the throttle signal
(>0.0)
Clutch Raise Time Delta time of the step function for the ascending curve of the clutch signal
(>0.0)
Shift Time Duration of the gear shifting event (>0.0)
RPM Control Enables an algorithm for RPM limiting during gear shifting
Note: Driver control data files can contain both open-loop and closed-loop blocks.
Adams/Car

338
( COMMENTS)
{comment _st r i ng}
' Exampl e . dcd f i l e cont ai ni ng st eer i ng pat h f or i so l ane change'
[ UNI TS]
LENGTH = ' met er s'
FORCE = ' newt on'
MASS = ' kg'
TI ME = ' sec'
ANGLE = ' r adi ans' [ CLOSED_LOOP]
STEERI NG_CONTROL = ' pat h'
SPEED_CONTROL = ' none'
( DATA)
{ X Y }
0. 0 0. 000
- 45. 0 0. 000
- 52. 5 0. 000
60. 0 0. 000
90. 0 3. 586
- 102. 0 3. 586
- 115. 0 3. 586
- 140. 0 0. 172
- 147. 0 0. 172
- 155. 0 0. 172
- 162. 0 0. 172
- 170. 0 0. 172
- 200. 0 0. 172
- 300. 0 0. 172
[ OPEN_LOOP]
ORDI NAL = ' t i me'
( DATA)
{ t i me st eer i ng t hr ot t l e br ake gear cl ut ch }
0. 0000E- 01 0. 1465E- 02 0. 3016E- 02 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 1000E- 01 0. 1465E- 02 0. 3016E- 02 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 2000E- 01 0. 1541E- 02 0. 3193E- 02 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 3000E- 01 0. 1633E- 02 0. 3748E- 02 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 4000E- 01 0. 1730E- 02 0. 5697E- 02 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 5000E- 01 0. 1865E- 02 0. 1197E- 01 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 6000E- 01 0. 1959E- 02 0. 2062E- 01 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 7000E- 01 0. 2108E- 02 0. 4782E- 01 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 8000E- 01 0. 2190E- 02 0. 8150E- 01 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 9000E- 01 0. 2180E- 02 0. 1329E+00 0. 0000E+00 0. 3000E+01 0. 0000E+00
0. 1000E+00 0. 2011E- 02 0. 2006E+00 0. 0000E+00 0. 3000E+01 0. 0000E+00
Specifying Closed-Loop Data
When reading the following specification you should observe the following rules:
[ ] =Data block
( ) =Sub-block
339
Running Analyses
{ } =Data header
|| =Options, and means OR
&& =And
The nomenclature is:
lon_vel =Vehicle longitudinal velocity
lon_acc =Vehicle longitudinal acceleration
lat_acc =Vehicle lateral acceleration
distance =Arc-length or distance traveled along the path
curvature, k=1/radius
x =X position of vehicle relative to ISO-Earth Axis System
y =Y position of vehicle relative to ISO-Earth Axis System
{ } =Set of inputs
The following table summarizes the closed-loop data that a .dcd file can contain:
The columns represent speed-control options from the driver parameters array.
The rows represent the steering control options from the driver parameters array.
The intersections give the data contained in the .dcd file and, therefore, the data input to the
funnel to produce {x, y, lon_vel} as needed by Driving Machine.
p1 refers to the first parameter in the steering and throttle (speed) driver parameters arrays
(initial conditions arrays) in the dataset Adams/Car outputs.
Closed-Loop Data in .dcd Files
SPEED_CONTROL
STEERING_CONTROL none lon_vel (p1=0)
lon_acc
(p1=1)
lat_acc
(p1=2)
path
(p1=3)
none NOT
VALID
{(distance or
time), lon_vel}
{(distance
or time),
lon_acc}
NOT VALID NOT
VALID
curvature (p1 = 0) {distance,
curvature}
{(distance or
time), curvature,
lon_vel}
{(distance
or time),
curvature,
lon_acc}
{(distance or
time),
curvature,
lat_acc}
NOT
VALID
path (p1 = 1) {x, y} {x, y, lon_vel} {x, y,
lon_acc}
{x, y, lat_acc} {x, y,
time}
lat_acc (p1 = 2) NOT
VALID
{distance or time,
lat_acc, lon_vel}
{distance
or time,
lat_acc,
lon_acc}
NOT VALID NOT
VALID
Adams/Car

340
Creating .dcd Files
You can use the sample .dcd files that we provide or you can create your own .dcd files.
To create .dcd files:
1. You can use one of three methods to create .dcd files:
Run a physical or virtual test and record the data that you obtain from the five actuator
application areas.
In a text editor, modify the sample .dcd files that we provide for you.
Create a .dcd file using a text editor and following the specifications and format shown in
Specifying Closed-Loop Data and Example .dcd File Architecture.
2. Save the file and reference it when running File-Driven Analyses.
Example .dcd File
The following shows the architecture of a .dcd file and all the options you can set for a .dcd file. It
contains options, logic, and general rules that you must follow when creating a .dcd file.
[ MDI _HEADER]
FI LE_NAME = f i l ename. dcd
FI LE_TYPE = ' dcd'
FI LE_VERSI ON = 1. 0 FI LE_FORMAT = ' ASCI I '
( COMMENTS)
{comment _st r i ng}
' Any comment '
[ UNI TS]
LENGTH = ' met er ' | | ' mi l l i met er ' | | ' cent i met er ' | | ' ki l omet er ' | | et c.
FORCE = ' newt on' | | ' ki l ogr am_f or ce' | | et c.
ANGLE = ' deg' MASS = ' kg'
TI ME = ' sec'
[ CLOSED_LOOP]
comment = st r i ng
st eer i ng_cont r ol = ' none' | | ' cur vat ur e' | | ' pat h' | | ' l at _acc'
speed_cont r ol = ' none' | | ' l on_vel ' | | ' l on_acc' | | ' l at _acc' | | ' pat h'
or di nal = ' di st ance' | | ' t i me'
l on_vel _max = f l oat
l on_vel _mi n = f l oat
l on_acc_max = f l oat
l on_acc_mi n = f l oat
l at _acc_max = f l oat
l at _acc_mi n = f l oat
( DATA)
$ st eer i ng, speed
$ 1 Case{none, none} - - nul l case, no dat a r equi r ed! !
$ 2 Case{none, l on_vel }
$ 3 Case{none, l on_acc}
$ 4 Case{none, l at _acc} - - NOT VALI D
$ 5 Case{none, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && ( l on_vel | | l on_acc ) }
$ 6 Case{cur vat ur e, none} - - Must have di st ance wi t h cur vat ur e
{ di st ance && cur vat ur e }
$ 7 Case{cur vat ur e, l on_vel }
$ 8 Case{cur vat ur e, l on_acc}
$ 9 Case{cur vat ur e, l at _acc}
341
Running Analyses
$10 Case{cur vat ur e, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && cur vat ur e && ( l on_vel | | l on_acc | | l at _acc ) }
$11 Case{pat h, none}
$12 Case{pat h, l on_vel }
$13 Case{pat h, l on_acc}
$14 Case{pat h, l at _acc}
{ x && y && ( l on_vel | | l on_acc | | l at _acc ) }
$15 Case{pat h, pat h}
{ x && y && t i me }
$16 Case{l at _acc, none} - - NOT VALI D
$17 Case{l at _acc, l on_vel }
$18 Case{l at _acc, l on_acc}
$19 Case{l at _acc, l at _acc} - - NOT VALI D
$20 Case{l at _acc, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && l at _acc && ( l on_vel | | l at _acc ) }
[ OPEN_LOOP]
or di nal = ' t i me' | | ' di st ance'
{di st ance | | t i me st eer i ng t hr ot t l e br ake gear cl ut ch}*
0. 0 0. 0 0. 0 0. 0 2 0. 0
0. 1 0. 0 0. 0 0. 0 2 0. 0
*You can select distance or time and any combination of steering, throttle, brake, gear, and clutch.
Example corresponding to $ 2 Case{none,lon_vel}:
. . . . .
[ CLOSED_LOOP]
STEERI NG_CONTROL = ' NONE'
SPEED_CONTROL = ' LON_VEL'
ORDI NAL = ' TI ME'
( DATA)
{ TI ME, LON_VEL }
0. 0 27. 777
0. 1 27. 777
0. 2 27. 776
0. 3 27. 775
0. 4 27. 774
0. 5 27. 773
. . . . .
Example corresponding to $ 7 Case{curvature,lon_vel}:
. . . . .
[ CLOSED_LOOP]
STEERI NG_CONTROL = ' CURVATURE'
SPEED_CONTROL = ' LON_VEL'
ORDI NAL = ' DI STANCE'
( DATA)
{ DI STANCE, CURVATURE, LON_VEL }
0. 0 0. 000 27. 777
1. 0 0. 002 27. 777
2. 0 0. 004 27. 777
3. 0 0. 006 27. 776
4. 0 0. 008 27. 775
5. 0 0. 010 27. 774
6. 0 0. 010 27. 773
7. 0 0. 010 27. 774
8. 0 0. 010 27. 774
Adams/Car

342
9. 0 0. 010 27. 774
10. 0 0. 010 27. 774
11. 0 0. 010 27. 774
12. 0 0. 010 27. 774
13. 0 0. 010 27. 774
. . . . .
Machine Control Basics
Machine Control is a vehicle controller that you can use to simulate the control actions of a driver. You
simulate the actions of a driver by operating the steering, pedals, and gears of a simulated vehicle.
Machine Control is tightly integrated with Adams/Car, and Adams/Chassis, but can also be used with
non-MSC.Software products, such as MATLAB.
Machine Control determines control actions such that a simulated vehicle can follow a specified path
along a 2D or 3D road, while simultaneously following a specified longitudinal velocity or acceleration.
Machine Control's control action combines a reference trajectory planner and a model-predictive
controller (MPC), sometimes known as a feed-forward plus feedback controller.
At the trajectory planning stage, your targets for the vehicle and driver behavior and some basic
parameters describing the characteristics of the simulated vehicle are taken into account, and a realistic
trajectory that most closely satisfies your targets is identified (for example, path, speed, and acceleration).
Machine Control uses simple mathematical models of vehicle dynamics, such as a bicycle model, a
particle model, and a kinematic drivetrain model, to estimate the necessary control actions, such as the
steering angle and throttle position. Machine Control applies these estimated controls as inputs to the
simulated vehicle in a feed-forward manner, such that approximately correct control actions are applied
without delay.
Differences between the behavior of the simulated vehicle and the expected behavior (that is, the
behavior of the idealized models employed by the controller) are corrected continuously using feedback
controllers, which adjust the control actions to minimize the error between the reference trajectory and
the actual vehicle behavior.
Learn more about Machine Control:
Feed-Forward Control
Trajectory Planning
Feedback Control
Computation of Controls
Feed-Forward Control
Feed-Forward Lateral Control
Global axes, x-y, local axes, X-Y,
343
Running Analyses
vehicle path and global yaw angle,
The projection of the vehicle path onto the ground plane is related to the velocities and global heading
as:
where:
( ) Global position of the vehicle
(V
X
, V
Y
) Velocities of the vehicle relative to vehicle-fixed axes
Global heading of the vehicle

V
X
cos V
Y
sin =
y

V
X
sin V
Y
cos =

Adams/Car

344
The feed-forward component of the lateral control action is computed by assuming that your simulated
vehicle responds as a bicycle model. The simplicity of the bicycle model allows the analytical
identification of the relationship between the geometry of the path and the necessary control action
(steering angle), and vice-versa.
In a bicycle model, the lateral forces from both tires on an axle are assumed to act in the same direction,
and the left and right steer angles are assumed to be the same. In other words, Ackerman steering
geometry is not considered. With these assumptions, the tires may be lumped together into a single tire
representation, and the model is guided by a single steer angle.
This simplified model is used to identify the necessary steer angle required for the vehicle to follow the
connecting contour.
345
Running Analyses
Simplification of a vehicle to the bicycle model
The form of the bicycle model employed by Machine Control assumes pure rolling of the front and rear
tires with no kinematic or compliance-steer effects, and therefore, no lateral velocity at the rear axle.
Note that this does not imply zero sideslip at the center of mass.
If the origin of the vehicle-fixed local axis system shown above is selected to be the center of the rear
axle (not the center of mass), then the lateral velocity V
Y
is now always assumed to be zero, and the
assumed path of the vehicle simplifies to:
Adams/Car

346
where:
In this case, the center of the turn always lies on a line through the rear axle. The steer angle required to
yield a certain path curvature is then always equal to the Ackerman angle, and is independent of the
vehicle speed V
X
:
where:
and, therefore, this single steer angle input to the bicycle model controls the radius of turn and the
curvature of the path. A simple inversion of this equation enables an estimate of the necessary steer angle
to be calculated and applied to the simulated vehicle in a feed-forward sense.
Feed-Forward Longitudinal Control
To control either the velocity or acceleration of the simulated vehicle such that they match the reference,
a particle model, a simple aerodynamic drag model, and a kinematic drivetrain model are used to predict
the relationship between the wheel torque and the acceleration response of the vehicle.
The force or torque required to accelerate or decelerate the vehicle is expressed as a wheel torque, that
the engine and brakes must apply to one or more wheels. The maginitude of the required torque is
computed from the vehicle drag and inertia:
T
w
= T
inertial
+ T
aero-drag
where:
Rate of change of the direction of the path at the rear axle (note that this is
not equal to the yaw rate of the vehicle).
E Wheelbase of the vehicle
R Radius of the turn at the rear axle
Curvature of the path of the rear axle
347
Running Analyses
where:
Gear Shifting
Gear shifts are triggered on the basis of engine speed thresholds, and the gear is incremented according
to the following strategy:
where:
T
w
Total net wheel torque required to follow the reference
T
inertial
Component that is required to accelerate the vehicle inertia
T
aero-drag
Required to overcome aerodynamic resistance
me Mass of the vehicle
a
ref
Target (reference) vehicle acceleration
V
ref
Target (reference) vehicle speed
R
eq
Average rolling radius of the wheels
Density of air
C
D
Nominal drag coefficient of the vehicle
A Frontal area of the vehicle
g Current gear selection
g' Revised gear selection

A
Adams/Car

348
Trajectory Planning
Connecting Contour
For the lateral control of the vehicle, a simple model of the vehicle (a bicycle model) is used to compute
the control action that should cause the vehicle to follow the intended path. The simulated vehicle,
however, may not exactly follow the target path because of differences between the simplified model and
the simulated vehicle, or external factors (road roughness and aerodynamic disturbances).
Therefore, the potential for offset between the instantaneous vehicle location and heading, and the
location and heading of the path must be considered. In considering the location and heading of the path,
Machine Control builds a connecting contour between the current vehicle position (wherever it may be)
and some point on the target path, along which the vehicle will be steered to later bring it back to the
target path:
Figure 16 Connecting contour
The function that describes the connecting contour is parameterized such that one end of the connecting
contour matches the position and direction of the vehicle (at the vehicle rear axle) and the other end of
the connecting contour matches the path (at the preview distance, where the contour connects with the
target path), as shown in the above figure.
w
min
Minimum engine speed allowed before a downshift is triggered
w
max
Maximum engine speed allowed before an up-shift is triggered
g
min
Highest available gear, or the number of available gears
Note: Driving Machine will not shift into neutral.
349
Running Analyses
The connecting contour then becomes the reference trajectory (path) for the lateral control of the vehicle,
and the vehicle is steered by both feed-forward and feedback controllers, such that it should follow this
connecting contour. The connecting contour is updated each time the Machine Control controller is
called.
Longitudinal Trajectory Planning
The longitudinal trajectory planning essentially consists of constructing either a target velocity against
distance traveled along the track centerline, or a target acceleration against distance traveled, according
to your description of the target (for example, acceleration against distance traveled, velocity against
time).
Feedback Control
Yaw Rate Feedback
The yaw rate feedback component of the controller corrects for the difference between the yaw rate
response of the simulated vehicle and that of the bicycle model. Errors between the yaw rate reference
and the yaw rate of the simulated vehicle are quickly corrected, such that the simulated vehicle follows
the intended trajectory as closely as possible, even if the feed-forward control identified from the bicycle
model is significantly in error.
The yaw rate error is determined by considering the curvature that would result if the current yaw rate
were a steady-state value, and is corrected using a feedback controller, whose output is also fed into the
steering angle.
Lateral Displacement Feedback
The connecting contour approach does not include any term to correct for steady-state lateral
displacement error. This is preferred in most situations, because the resulting control actions tend to be
more realistic and robustly stable. Once the vehicle is close to the target path, an additional controller
acting on the distance Lo (the offset of the projected vehicle centerline from the path) adjusts the lateral
displacement of the vehicle:
where is a flag indicating whether the lateral displacement controller is activated, that is
whether the lateral displacement error L
o
is small:
Adams/Car

350
Note that in the above, positive L
o
indicates a vehicle to the left of the target path, requiring a positive
steering correction.
Longitudinal Velocity Feedback
Errors in longitudinal velocity are compensated using a PID controller:
where the velocity error is:
V
e
= V
ref
(s) - V
actual
where:
Anti-windup
To improve the stability of the control in conditions of actuator (usually engine torque) saturation, the
input to the integral term of the controller is set to zero. This prevents wind-up of the integral term when
the vehicle is unable to provide any more torque, such that the feedback component of the torque demand
becomes:
where a
w
= 0 when saturation of the available torque is detected, a
w
= 1 otherwise.
s Distance along the reference path
V
ref
(s) Reference velocity
V
actual
=V
x
Longitudinal component of the vehicle velocity
351
Running Analyses
Computation of Controls
Summation of Feed-Forward and Feedback Terms
Simple summation of the feed-forward and feedback terms gives the total demand from the lateral and
longitudinal controllers (steer angle and net wheel torque):
Mapping Net Wheel Torque Demand to Control Actions
Once the required total net wheel torque, T
w
has been estimated, basic knowledge of the brake system
and driveline are used to identify the necessary control actions (throttle and brake) that must be applied,
such that the vehicle delivers the required net wheel torque.
The range of available net wheel torque is related to the available engine torque and the gearing of the
vehicle. Neglecting driveline inertia, the ratio of the gearbox and the differential defines the relationship
between the net wheel torque (T
w
), and the engine torque (T
e
), at any instant:
such that the upper and lower limits T
m
and T
M
on the net wheel torque, T
w
(w
e
) can be identified from
the upper and lower limits on T
e
(w
e
):
where:
w
e
Current engine speed (supplied as an input to
Machine Control)
Minimum engine output torque (from the user
engine map)
Adams/Car

352
The maximum brake torque, T
B
, is assumed to be constant.
Net wheel torque limits as a function of engine speed, and maximum brake torque
The above figure shows the user-supplied engine model, scaled according to the gearing of the vehicle,
to yield:
The maximum available net wheel torque, T
M
(normally positive for all w
e
)
The minimum available net wheel torque T
m
(usually negative, especially at high engine speed
w
e
, since it includes frictional and pumping losses due to throttling).
To define these limits, you can do either of the following:
Supply a detailed nonlinear engine map, relating throttle to engine torque,
Maximum engine output torque (from the user
engine map)
R
d
Mean differential (final drive) ratio (from the
basic vehicle knowledge)
R
g
Gearbox ratio (from the basic vehicle
knowledge)
353
Running Analyses
(therefore, adding a third dimension to the figure above)
Supply only the maximum and minimum engine torques,
and choose Machine Control to employ a linear model of throttle response:
or
If a throttle map is provided, then this is mathematically inverted, so that the necessary throttle position
can be identified from the required net wheel torque T
w
, provided it is feasible for the engine to deliver
this torque at the current engine speed :
Adams/Car

354
If the linear model is selected, then the feed-forward throttle and brake signals can be determined directly
from the required torque:
355
Running Analyses
Control Modulation During Gearshift and Wheel-lift Events
Throttle and clutch modulation during gear-shifting
During a gear-change, the control actuation is open-loop, except for the optional closed-loop rpm control
as the clutch is re-engaged. In the following plots, which show the form of the control actions, the origin
of the time base is set to be the instant of triggering the gearshift event (see Gear Shifting).
The action of the clutch is determined, and the throttle signal, computed by the feedback and feed-
forward controllers, is modulated according to the following parameters:
Gear change time (not the time of the whole event, but the time for which the clutch is not fully
engaged)
Adams/Car

356
Clutch raise and fall time
Throttle raise and fall time
DT1 (the delay between clutch disengagement and throttle release)
DT2 (the delay between that start of clutch re-engagement and start of throttle reapplication)
The following plot shows the influence of the parameters DT1 and DT2:
The following plot shows the influence of the throttle raise and fall time parameters:
357
Running Analyses

The following plots show the effect of changing a single parameter from this baseline:
Adams/Car

358
Changing clutch raise time:
359
Running Analyses
Changing clutch fall time:
Adams/Car

360
Changing throttle raise time:
361
Running Analyses
Changing throttle fall time:
Adams/Car

362
Changing DT1:
363
Running Analyses
Changing DT2:
Adams/Car

364
RPM control during clutch re-engagement
During a gear change, between the time when the new gear is selected and the clutch is fully engaged,
the engine RPM w
e
can optionally be controlled in a feedback sense, by another classical PID controller
with anti-windup. The error on which this controller acts is:
w
er r or
= w
e
- w
t
where w
t
is the transmission RPM with which the engine must be synchronized to avoid jerk when the
clutch is re-engaged.
This controller acts on the throttle input only.
Wheel-lift compensation
Controller-induced wheel-spin-up or wheel-lock is prevented by detecting when the loads on the driven
wheels go to zero (that is, the driven wheels are not in contact with the road). In this case, the throttle and
365
Running Analyses
brake are released (set to zero) and the clutch is depressed. The clutch action ensures that when the
vehicle lands, the wheels spin up to the correct velocity as quickly as possible.
Adams/Car

366
Controlling Analysis Output Files
Your template-based product lets you control the type and content of files an analysis outputs. You can
specify whether an analysis outputs a graphics file or results file. Graphics files contain time-dependent
data describing the position and orientation of each part in the model. Results files contain a basic set of
state variable information that Adams/Solver calculates during a simulation.
Your template-based product automatically reads the files that an analysis outputs.
If any subsystems within the assembly being analyzed contain flexible bodies, your template-based
product automatically outputs a results file, regardless of the specifications you made.
To specify analysis output files:
1. From the Settings menu, point to Solver, and then select Output Files.
The Output Files dialog box appears.
2. Select the types of files you want to output.
3. Select OK.
367
Running Analyses
Controlling Analyses Using CONSUBs
Adams/Car makes extensive use of the CONTROL command and associated CONSUB user subroutines
to perform specific analysis tasks in Adams/Solver. These include moving suspension models from the
design position to full jounce while suppressing output and running quasi-static steady-state analyses
like constant radius cornering. If you customize Adams/Car or if you want to better understand the
contents of the Adams Command Files (.acf) that Adams/Car writes, then the table below describing the
purpose of these CONSUBS along with the links to further documentation of the input parameters, will
be of use to you.
Controlling Full-Vehicle Analyses
If you are an experienced Adams/Car user and you want to perform some non-standard full-vehicle
analyses, such as studying the linear behavior of your vehicle between two mini-maneuvers, you can use
an Adams/Solver control subroutine (Eventxxx) to do so.
When you run a full-vehicle analysis, Adams/Car writes a number of files to the current working
directory (as defined by File ->Select Directory). These files contain important information about the
ID Description
900 Runs one or more static solutions to, for example, to adjust tie rod length to
set desired toe angle. Adams/Car adds a call to this consub when the
assembly contains adjustable forces.
910 Set part velocity and wheel rotational velocity.
917 Set part velocity and wheel rotational velocity.
950 For a suspension assembly, run a quasi-static simulation from time zero (0)
to time one (1) to position the suspension at the first point in the loadcase
file. Output from Adams/Solver to the request, graphics, and results files is
suppressed so that plots generated for suspension characteristics verses
wheel travel do not have duplicate points
1010 Fixed Body Equilibrium. This is also know as a "settle" analysis.
1020 Steady State Straight Line Equilibrium and Static Steady State
Acceleration/Braking. Note in Adams/Car the auxiliary column joint is not
used.
1021 Quasi-Static Steady State Acceleration/Braking. This sweeps the
longitudinal acceleration between 0 and an ending value.
1030 Static Steady State Cornering Equilibrium
1031 Quasi-Static Steady State Cornering Equilibrium
1032 Quasi-Static Steady State Swept Steer Equilibrium
1060 Quasi-Static Milliken Moment Method Analysis
Adams/Car

368
details of the maneuver. In particular, two files are important in defining the scope of the maneuver. These
are the Adams/Solver control file (.acf) and the event file (.xml).
The following shows the typical contents of an .acf:
f i l e/ model =t est _st ep
pr ef er ences/ sol ver =F77
out put / nosep
cont r ol / r out i ne=abgVDM: : Event I ni t ,
f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
cont r ol / r out i ne=abgVDM: : Event RunAl l , f unct i on=user ( 0)
!
st op
In the .acf, note the following line:
cont r ol / r out i ne=abgVDM: : Event I ni t ,
f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
This line calls an Adams/Car-specific control subroutine (a consub). The consub sets up and initializes
the full-vehicle analysis. It does the following:
Reads the event file (or converts the TeimOrbit .dcf file into XML)
Performs a number of static analyses based on the content of the DcfStatic class in the event file
Performs a dynamic analysis by running each of the mini-maneuvers listed in the DcfMini
classes in the event file
You can view and modify the event file (.xml) using the Event Builder. The Event Builder allows you to
modify existing parameters for the entire maneuver, such as step size and hmax, to modify specific mini-
maneuver information, and add mini-maneuvers.
The following line calls the control subroutine EventInit:
cont r ol / r out i ne=abgVDM: : Event I ni t ,
f unct i on=user ( 3, 1, 10, 0, 2, 5, 7, 9, 4, 8, 17)
The call to this subroutine passes 11 parameters, as described next. Note that each number in the array
(3,1,10,0,2,5,5,9,4,8, 17) is listed after the description of that parameter.
par ( 1) 3: I D of STRI NG st at ement cont ai ni ng . XML event f i l ename = 3
par ( 2) I D of ORI GO mar ker = 1
par ( 3) I D of ARRAY st at ement cont ai ni ng i ni t i al condi t i on SDI
par amet er s = 10
par ( 4) I D of ARRAY st at ement cont ai ni ng i ds of par t s f or whi ch i ni t i al
vel oci t y ar e not set = 0
par ( 5) I D of ARRAY hol di ng Vehi cl e Par amet er s. = 2
par ( 6) I D of mai n Dr i vi ng Machi ne ARRAY. = 5
par ( 7) I D I SO EAS Mar ker = 7
par ( 8) I D of Dr i ver _Par amet er s_ARRAY_St eer i ng_Human = 9
par ( 9) I D of STRI NG st at ement cont ai ni ng Dr i ver Road Fi l ename = 4
par ( 10) I D of ARRAY cont ai ni ng Human Dr i ver Par amet er s = 8
par ( 11) I D of ARRAY cont ai ni ng t he i ds of ext ensi bl e end condi t i on
sensor el ement s = 17
369
Running Analyses
If you look at the corresponding Adams/Solver dataset (.adm), you will see that STRING/3 contains the
name of the event file:
! adams_vi ew_name=' t est r i g_dcf _f i l ename'
STRI NG/ 3
, STRI NG =exampl e_cr c. xml
All standard Adams/Car events generate an event file in XML format, similar to the one referenced in
the example above, but .dcf files in TeimOrbit format are still supported, both in the Event Builder and
at the solver level. This means that you can replace the above string and reference a .dcf file in TeimOrbit
format. The file will be automatically converted to XML format.
By modifying the .acf file, you can now execute all mini-maneuvers defined in the event file, or just run
the initialization and then execute one mini-maneuver at a time. Full-vehicle analysis .acf files by default
call the Driving Machine initialization routine, then call the RunAll method. You can, however, modify
the .acf file and use the following commands for more control over your analysis:
control/ routine=abgVDM::EventRunAll, function=user(0) - Runs all the active mini-
maneuvers in the list of events
control/ routine=abgVDM::EventRunNext,function=user(0) - Runs the following mini-
maneuver in the list of the events
control/ routine=abgVDM::EventRunFor,function=user(time) - Runs the current mini-maneuver
for duration of time [s]
control/ routine=abgVDM::EventRunUntil, function=user(time) - Runs the current mini-
maneuver until the desired absolute time [s]
Using this flexibility within the event control subroutine enables you to use the power of the acf language
to make changes and re-submit your solution to Adams/Solver. The language parameters for the .acf file
are documented in the Adams/Solver online help.
Adams/Car

370
Configuring Your Product
Adams/Car
354
About the Management Tasks
When you start your template-based product, it automatically creates the necessary files for you to begin
working immediately. As you become more familiar with your template-based product, you may find that
you want to set up custom private versions of it or change the way it is configured. In addition, you may
want to set up custom site versions that several users can share.
The template-based products let you do these different management tasks depending on the type of user
access you have been assigned. You should give one user, who has expert-user access, the responsibility
of managing the site version, if you have one, of your template-based product so only one user, the site
manager, makes changes.
The following table lists the different management tasks that you can perform depending on your user
access. You can perform many of these tasks using the menus in your template-based product. Other tasks
require you to set variables in different configuration files.
Management Tasks by User Type
To access management tools:
Your access to management tools depends on your user access:
Standard users - You can access your template-based product's tools that let you manage your
private database. The tools are under the Tools menu.
Expert user - You can access the management tools from the Tools menu.
This type of
user: Can:
Standard user Create and set up private databases in which to store files, such as
subsystems and property files, with which you are working.
Make copies of files in your private database or copy the entire database
to share with other users.
Configure the operation of your template-based product for your private
use.
Expert user Perform the same tasks as a standard user.
Publish a template so all users can use it.
Site manager Set up site databases in which general project information is stored.
Define the access that users can have to functionality.
Set up a custom version of your template-based product and configure its
operation.
Assigns access to common databases to allow read and write permissions
for standard and expert users.
355
Configuring Your Product
To get expert-user access, modify your private .acar.cfg configuration file and change your user mode to
EXPERT. Learn about setting your product's environment.
Adams/Car
356
About Database Management
The template-based products define assemblies using several different files. The files define the topology,
dynamic element characteristics, analysis information, and more. Your template-based product stores
these files in hierarchical databases.
The template-based products provide two types of default databases:
Private database for each user - A private database is for your personal use. You can store and
retrieve data from your private database. In addition, you can share your private database with
others. If a private database does not exist, your template-based product creates the private
database at the beginning of a session.
Shared database for all users - A shared database provides all users with access to standard,
accurate data. To prevent loss of data or the storing of inaccurate data in a shared database,
standard users can only retrieve data from a shared database. Typically, only the site manager has
the permissions necessary to create files in a shared database. An example of a shared database is
distributed with your template-based product, and it is usually placed in the installation
directory.
Learn more about databases:
Database Structure
About the Database Search List
Database Structure
Each database consists of one directory (*.cdb) and several subdirectories (*.tbl), called tables. Each
subdirectory contains files for specific types of components, such as springs and dampers, or files for
performing tests, such as loadcases and wheel envelopes. The number of tables varies, but you can define
the number in the shared and private configuration files.
By default, your template-based product divides a database into the following table elements:
Models and topological information (templates, assemblies, subsystems, and flexible bodies)
Analysis information (such as analysis scripts, loadcases, driver loadcases, and suspension
curves)
Postprocessing (plot configuration files)
In Adams/Car, driver files (such as driver inputs and roads)
In Adams/Car, tires and roads
Property files (such as springs, dampers, and remaining tables)
Each type of file that a table stores has a unique three-letter extension that identifies its contents. For
example, all files stored in the assembly table contain a .asy extension.
357
Configuring Your Product
An example of the default structure of a database for Adams/Car is shown in the Information window. The
information window shows all the tables in the database, their names, the type of files they store, and the
file extension of the files that they store.
You can also add your own tables since the database is an open-architecture file repository. For example,
you might want to create a table that stores data files for an analysis that is specific to your company.
Learn about managing tables.

About the Database Search List
During startup, your template-based product stores any databases that are defined in your private, site,
and shared configuration files in its search list. The databases in the search list are the only databases that
appear in dialog boxes when you select to display databases and files, such as subsystem or property. For
example, when you want to change the database to which you can write files, your template-based
product only displays those databases in its search list in the dialog box.
Your template-based product searches the databases in its search list using a search order that you can
modify.
You can change the databases in the search list and their search order either by using the menus or by
editing the configuration files directly. All configuration files can define the databases, including the
private, site, and shared configuration files.
Adams/Car
358
For your template-based product to be able to store a database in its search list, the file system to which
the database points must be accessible on the current file system of the computer.
Learn about setting up the search list and the order in which databases are searched.
359
Configuring Your Product
Managing Databases
Select a topic to learn about the operations you can perform on databases:
Creating Databases During a Session
Setting the Writable Database
Managing Tables in a Database
Creating Tar Files of Databases
Creating Databases During a Session
You can create a new database anytime during a session. When you create a database, your template-
based product adds it to its search list and places the database at the lowest level in its database search
order. Your template-based product also creates database tables within the new database according to the
table information stored in your private, site, and shared configuration files. Learn about search order.
You should create a database for every project on which you are working. By creating separate databases
for each project, you can ensure that the property files belonging to different subsystems are kept
separate.
When you create a database, you define two elements for it:
Name - You use the name, or database alias, to select the database from the search list in dialog
boxes.
Path - The location of the database in the file system.
To create a database:
1. From the Tools menu, point to Database Management, and then select Create Database.
2. Press F1 and then follow the instructions in the dialog box help for Create New Database.
3. Select OK.
Note: Unless you save database changes to your private configuration file, Adams/Solver will
not be able to access the databases you added or created in a session
Note: You can also create databases directly using the configuration files. Learn about managing
databases through configuration files.
Adams/Car
360
Setting the Writable Database
You can set up one of your active databases as the repository for templates, subsystems, and property
files. This database is called your default writable database. The default writable database is defined in
your private configuration file, but you can change it at anytime during a session. You can select any
database in the search list as your default writable database, as long as you have permission to write to
the file system to which the database points.
To create a database:
1. From the Tools menu, point to Database Management, and then select Set Default Writable.
2. Press F1 and then follow the instructions in the dialog box help for Set Default Writable Database.
3. Select OK.
Managing Tables in a Database
You can add your own tables to a database. You use the configuration files to define the tables that you
want to include in a database. Learn more about configuration files and table definitions in them.
Creating Tar Files of Databases
On UNIX, you can create a tar file of any database that is listed in the search list. When you create a tar
file of a database, your template-based product groups together all of the database's subdirectories and
files into one tar file. It then writes the tar file to the default writable database using the name
database_name.tar, where database_name is the name of the database you saved.
Saving a database as a tar file is an efficient way to save a snapshot of the current state of a database or
to transfer the database to an external file system. You can easily transfer the databases through e-mail
or through a file transfer protocol (ftp) process.
As you create a tar file, you can select to encode and compress the database using standard UNIX
compression and encoding techniques.
To create a tar file of a database in UNIX:
1. From the Tools menu, point to Database Management, and then select Bundle Database.
2. Press F1 and then follow the instructions in the dialog box help for Bundle Database.
3. Select OK.
361
Configuring Your Product
Setting Up the Search List and Order
As explained in About the Database Search List, your template-based product stores in its search list, all
the databases currently defined in your configuration files. When you request a file from the databases,
your template-based product uses a defined search order to search the databases for the requested file.
See the following topics to learn more about the search order, how it impacts you, and how you set it up:
About Search Order
Adding Databases to the Search List
Removing Databases from the Search List
Changing the Search Order
About Search Order
During a session, you can have many databases listed in the search list. Your template-based product
assigns to each database in the search list a numerical value representing its place in the search order. For
example, if there are three databases in your search list, your template-based product numbers them 1,
2, and 3, with 1 representing the first database it searches.
When you request a file, such as a property file, your template-based product searches the databases in
the specified search order. It first tries to open the file as specified. If the filename has a database alias,
your template-based product expands it to a full file system path.
If your template-based product cannot find the file in the specified database, it begins searching the other
databases in its search list in the search order. Your template-based product begins with the first database
in the search order. It continues through all the databases in the search order until it finds a matching
filename.
Your private configuration file sets the search order of these databases, but you can change it at anytime
during a session.
Note that in many cases changing the database search order can cause your template-based product to
find a different file. For example, if two databases contain a file with the same name but with different
data, changing the search order may change which file your template-based product uses. You may find
Note: By default, your template-based product doesn't search all defined databases when it
cannot locate a file. You can, however, re-enable the searching by setting the
MDI_CDB_SEARCH environment variable to yes. In the Command Navigator, you can
issue the following command:
var i abl e set var i abl e_name=do_sear ch &
i nt eger _val ue=( put env( " MDI _CDB_SEARCH" , " yes" ) )
For more information, see the Adams/Car release notes.
Adams/Car
362
this helpful in many cases, but it can produce unintended results when you change the search order
without realizing that you can access different files. The database search order is also important if you
specify the database path incorrectly.
To avoid using the search order to find a file, which can result in longer searches and unintended results,
you can specify the database name (its alias) directly in the associated property file to ensure that your
template-based product searches the correct database.
You can look at the search order of the databases in the search list using the Database Info command, as
shown in Viewing Database and Table Information. Your template-based product displays the current list
of databases, showing the search order level of each database in the first column. Learn about displaying
database information.
Adding Databases to the Search List
As you are working with your template-based product, you can add databases to the current search list.
Your template-based product adds the databases to the end of the search order. Learn about changing the
search order.
To add a database to the search list:
1. From the Tools menu, point to Database Management, and then select Add to Search.
2. Press F1 and then follow the instructions in the dialog box help for Add Database to Search.
3. Select OK.
Removing Databases from the Search List
You can remove a database from the search list so that your template-based product does not search for
files in it. Removing a database from the search list does not remove the database from the file system.
If you want to remove the current default writable database from the search list, you must first specify
another database as the default writable database.
To remove a database from the search list:
1. From the Tools menu, point to Database Management, and then select Remove from Search.
2. Press F1 and then follow the instructions in the dialog box help for Remove Database from
Search.
3. Select OK.
Changing the Search Order
You can change the order in which your template-based product searches databases for files. Learn about
search order.
363
Configuring Your Product
To change the search order:
1. From the Tools menu, point to Database Management, and then select Change Search Order.
2. Press F1 and then follow the instructions in the dialog box help for Change Database Search
Order.
3. Select OK.
Adams/Car
364
Saving and Publishing Database Information
Viewing Database and Table Information
You can view the current set of databases in the search list. The information includes the database names,
file system paths, and levels in the current search order. You can also view the table structure of the
current writable database.
To view database information:
1. From the Tools menu, point to Database Management, and then select Database Info.
2. View the database information, and then select Close.
To view the tables in the writable database:
From the Tools menu, point to Database Management, and then select Table Info.
View the table information, and then select Close.
Saving Database Management Changes
At any point during a session, you can save the list of databases that is currently available during the
session and the search order to your private configuration file. Learn about private configuration files.
To save database management changes:
From the Settings menu, select Save <product name> Configuration.
Publishing Subsystems
When you publish a subsystem, you copy the subsystem file and all its associated property files to the
target database, which is the database where your template-based product saves all files. You can also
select to publish the subsystem's template file. As you publish the subsystem, you can choose to write
over existing files or create backups of the files.
You can also select to update the in-session subsystem data to point to the target database or to have the
subsystem retain the existing references.
The subsystem you are publishing must be currently opened in the standard interface, and the target
database must be writable. Learn about setting the writable database.
You can also publish an entire assembly. Learn about publishing an assembly.
To publish a subsystem:
1. From the Tools menu, point to Database Management, and then select Publish Subsystem.
2. Press F1 and then follow the instructions in the dialog box help for Publish an Open Subsystem.
3. Select OK.
365
Configuring Your Product
Publishing Assemblies
When you publish an assembly, you copy each subsystem file included in the assembly definition,
including the associated property files for each subsystem, to the target database, which is the database
where your template-based product saves all files. You can also select to publish each subsystem's
template file. As you publish the assembly, you can select to write over existing files or create backups
of the files.
You can also select to update the in-session assembly data to point to the target database or to have the
assembly retain the existing references.
The assembly you are publishing must be currently opened in the standard interface, and the target
database must be writable. Learn about setting the writable database.
You can choose to publish only a subsystem, not an entire assembly. Learn about publishing a subsystem.
To publish an assembly:
1. From the Tools menu, point to Database Management, and then select Publish Assembly.
2. Press F1 and then follow the instructions in the dialog box help for Publish an Open Assembly.
3. Select OK.
Adams/Car
366
About Configuration Files
Your template-based product's configuration file contains information that your template-based product
reads during startup to correctly initialize the session. Your template-based product looks for the
following configuration files when it starts up: shared, site (if it exists), and private configuration files,
in that order.
The private configuration file contains personal settings that are then merged with the general settings
defined in the shared or site configuration file. Together, the settings define your work environment. The
shared and private configuration files are required, while the site configuration file is optional. You use
the site configuration file only if you want to set up a custom version that all users can access.
To personalize the settings in the configuration files, you edit the configuration file using a text editor.
You can, however, use the menus to set up the databases without having to directly edit the configuration
files. Learn about managing databases.
Each of the configuration files is explained in the next topics:
About Private Configuration Files
About Site Configuration File
About Shared Configuration File
About Plugin Configuration Files
About Private Configuration Files
As an expert or standard user, you have your own private configuration file with a default name of
.acar.cfg. Your template-based product accesses this file at the beginning of every session. The private
configuration file is found at $HOME/.acar.cfg, where $HOME is the location of your home directory.
If you have more than one private configuration file, you can choose the file you want to use for a given
session. Depending on the platform you are using, you do the following:
On UNIX - You use the Registry Editor on the Adams Toolbar to choose the file you want to
use. The registry setting name for your private configuration file is privateCfg.
On Windows - You can specify the private configuration file using an environment variable.
You can set this environment variable using the System option from the Control Panel, just as
you would for any other variable. Depending on your template-based product, you can specify
the following environment variables:
For Adams/Car, enter MDI_ACAR_PRIVATE_CFG
For Adams/Driveline, enter MDI_ADRV_PRIVATE_CFG
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation.
367
Configuring Your Product
You should set up your private configuration file so it contains information specific to the work you are
performing. For example, you can set up your own tables in databases in which to store project data. You
can also override many of the default settings provided in the shared and site configuration files.
About the Site Configuration File
If you create a site configuration file, you call it <your_product_name>.cfg, and place it in the template-
based product site repository. You can have only one site configuration file for a site installation of your
template-based product. The site configuration file provides settings common to users at a particular site.
For example, your company may have engineers working across a network, each wanting to access some
common information, such as files and variables. You could set up the site configuration file so that when
they run the site version, each engineer's session is configured to access the common information.
We recommend that only the site manager changes the site configuration file. You should make any
personal modifications using private configuration files.
About the Shared Configuration File
The shared configuration file is called <your_product_name>.cfg, and is generally found in the
installation directory. See your system administrator for location details.
Only one shared configuration file exists for an installation of your template-based product. The shared
configuration file contains predefined information common to all users.
We recommend that no one changes the shared configuration file. You should make any personal
modifications using private configuration files, and any common changes for multiple users in site
configuration files.
About Plugin Configuration Files
Many plugins that work with the Template Builder have their own shared and site configuration files.
Your template-based product follows the same logic for processing the plugin configuration files as it
does for any other configuration file.
Format of Configuration Files
A configuration file is divided into the blocks listed below. An example of the blocks in a configuration
file are shown in figure Configuration File Blocks. In the example, ! indicates comments.
Environment Variables - The first block in a configuration file sets up the environment of your
template-based product. For example, it identifies the type of user associated with the
configuration file. It also sets the mode in which your template-based product starts, Standard
Interface or Template Builder, and any other environment settings.
Adams/Car
368
Databases - The second block defines the databases in which users store files, the order in which
your template-based product searches databases, and the database to which files are written by
default.
Table Directories - The third block defines the list of personal table directories. For example,
you could create a table in which to store examples.
Property Files - The fourth block contains a listing of default property files. When a dialog box
requires a property file, it automatically knows to load the desired files if you enter property files
in the property file block. You usually define property files in the shared configuration file. If
you enter values in your private configuration file, your template-based product overrides the
shared files with your personal property files.
Test Rigs - The fifth block defines the default test rig for a given assembly class. When a dialog
box requires a test rig, it automatically knows to load the desired test rigs. You usually define test
rigs in the shared configuration file.
Configuration File Blocks
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! *************** Adams/ X Conf i gur at i on Fi l e *************** !
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! - Li st of per sonal envi r onment var i abl es
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
ENVI RONMENT MDI _ACAR_USERMODE exper t
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! - Li st of per sonal dat abase di r ect or i es
! Dat abase name Pat h of Dat abase
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
DATABASE pr i vat e / usr / pr i vat e. cdb
DATABASE st af f / st af f / pr i vat e. cdb
DEFAULT_WRI TE_DB pr i vat e
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! - Li st of per sonal t abl es di r ect or i es
! Type cl ass Name of t abl e Ext ensi on
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! Exampl e t abl e ent r y:
! TABLE l i st 2+ exampl e. t bl exa
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! - Li st of per sonal def aul t pr oper t y f i l es
! Type cl ass Def aul t pr oper t y f i l e
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !
! Exampl e pr oper t y f i l e ent r y:
! PROPFI LE assembl y <pr i vat e>/ assembl y. t bl / myf i l e. dpr
!
! Exampl e t est r i g ent r y:
! TESTRI G f our _post . __MY_FOURPOST
369
Configuring Your Product
Setting Up the Environment Through Configuration
Files
To work efficiently with your template-based product, you must set a standard set of environment
variables in a configuration file. The environment variable has the following format:
ENVI RONMENT VARI ABLE_NAME VARI ABLE_VALUE
We've set up default environment variables in the shared configuration file, but we recommend that you
redefine them in the private or site configuration file to customize the work environment of your
template-based product. You can also define your own environment variables for use with user-written
subroutines or macros.
Learn about the standard environment entries that you can set and how to create your own environment
variables:
Setting User Access
Accessing Adams/View
Setting Defaults and Display of the Welcome Dialog Box
Replacing the Image on the Welcome and Exit Dialog Boxes
Setting Up Side Preferences
Setting the Orientation of the Global Reference Frame
Managing Result File Output
Redefining Environment Variables
Defining Your Own Environment Variables
Editing Files Using a Text Editor
Setting User Access
You use the MDI_ACAR_USERMODE keyword in your private configuration file to set your user
access, which determine you access to the Template Builder and other development tools. Your private
configuration file is found at $HOME/.acar.cfg, where $HOME is the location of your home directory.
You can set USERMODE to:
STANDARD - User can only access the Standard Interface.
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation.
Adams/Car
370
EXPERT - User can access the Template Builder and create and modify templates. User can
access the Template Builder and other development tools that are located under the Tools menu.
Expert users can use the MDI_ACAR_PLUS_AVIEW keyword in the private configuration file
to access Adams/View. Learn about accessing Adams/View.
To change the value of this keyword, you must edit the private configuration file (.acar.cfg) using a text
editor and modify the corresponding string. The following gives you expert access:
! Desi r ed user mode ( st andar d/ exper t )
ENVI RONMENT MDI _ACAR_USERMODE EXPERT
When you start a new session, your template-based product reflects the changes to the private
configuration file.
Accessing Adams/View
If you are an expert user, you can use the MDI_ACAR_PLUS_AVIEW environment variable in the
private configuration file to obtain access to Adams/View.
MDI_ACAR_PLUS_AVIEW has the following format:
ENVI RONMENT
MDI _ACAR_PLUS_AVI EW ( yes, no)
To access Adams/View:
1. Set MDI_ACAR_PLUS_AVIEW to yes.
2. From the Tools menu, select Adams/View Interface.
To return to your template-based product:
From the Tools menu, point to Select Mode, and then select the interface mode to which you
want to return: Standard Interface or Template Builder.
Setting Full Vehicle Solver Preference/Solver Preference
You can set your solver preferences, either from the settings menu or in your private configuration file.
Setting HHT Integrator Preferences
If using Adams/Solver (C++), you can also set a preference for using the HHT integrator as the the
default integrator, as explained next.
To set HHT integrator preference:
1. In a text editor, such as J ot or Notepad, open .acar.cfg in your home directory.
2. Add the following line to set HHT as the default integrator:
ENVIRONMENT
371
Configuring Your Product
MDI_AENG_HHT_ERROR 1e-5
This sets the HHT integrator as the default integrator with a default error tolerance of 1e-5 when
using Adams/Solver (C++).
3. Start a new session.
Setting Defaults and Display of the Welcome Dialog Box
Setting Defaults
You can use the MDI_ACAR_INITMODE environment variable to set the default selection in the
Welcome dialog box when the user has expert-user access. MDI_ACAR_INITMODE has the following
format:
ENVI RONMENT
MDI _ACAR_I NI TMODE ( t empl at e_bui l der , st andar d_i nt er f ace)
In Adams/Driveline for example, if you set MDI_ACAR_INITMODE to standard_interface, the
Welcome dialog box sets the selection of Standard Interfaceas the default, as shown next.
Setting the Display
You can use the MDI_ACAR_MODEPROMPT environment variable to set your template-based
product so that it does not display the Welcome dialog box at start up. MDI_ACAR_MODEPROMPT
has the following format:
ENVI RONMENT
MDI _ACAR_MODEPROMPT ( yes, no)
Setting it to yes displays the Welcome dialog box; setting it to no turns off the display of the Welcome
dialog box.
Adams/Car
372
Replacing the Image on the Welcome and Exit Dialog Boxes
You can replace the image on the Welcome and Exit dialog boxes with another image.
To replace the image:
1. Create a color X pixmap image (.xpm) with a size of approximately 197 x 192 pixels.
2. Copy the new pixmap file to a designated directory.
3. Add the following entry in your .acar configuration file:
ENVI RONMENT MDI _ACAR_LOGO_BMP <your _di r ect or y/ f i l ename>
Setting Up Side Preferences
You can use the MDI_ACAR_SIDE_PREF environment variable to define the preferred side for
creation. When you set the side preferences:
The creation dialog box in the Template Builder sets the default type based on the side
preference you set.
The guesses in the pop-up menus in dialog boxes only contain left and single or right and
single entities based on the side preference. Your template-based product does this to limit the
number of guesses.
The MDI_ACAR_SIDE_PREF environment variable has the following format:
ENVI RONMENT MDI _ACAR_SI DE_PREF ( r i ght , l ef t )
Setting the Orientation of the Global Reference Frame
You can set the orientation of the global reference frame using direction cosines. You use either of the
following environment variables to define the orientation:
ENVI RONMENT MDI _ACAR_VEHI CLE_REAR 1, 0, 0
ENVI RONMENT MDI _ACAR_VEHI CLE_LEFT 0, - 1, 0
Managing Result File Output
Result files include all the simulation output from an analysis. The following environment variable sets
the default attribute of whether the result file is output during the analysis. If the assembled model
contains flexible bodies, your template-based product automatically outputs a result file regardless of the
environment variable setting.
If the assembled model does not contain flexible bodies, use the following command (example is for
Adams/Car) to indicate that you want your template-based product to output a result file:
ENVI RONMENT
MDI _ACAR_WRI TE_RES ( yes, no)
373
Configuring Your Product
If a result file exists, your template-based product will automatically read it in with the analysis, if you
run an interactive simulation.
If you run the simulation externally (background, files_only), you can read in the result file using either
of these two methods:
Review ->Analysis Management ->Read
File ->Import ->Adams Results File (*.res)
Redefining Environment Variables
We've set up default environment variables in the shared configuration file, but we recommend that you
redefine them in the private or site configuration file to customize the work environment of your
template-based product.
To redefine environment variables, use the format below. Your template-based product initializes the
variables at startup.ENVIRONMENT VARIABLE_NAME VARIABLE_VALUE
The following gives you expert access to your template-based product:
ENVI RONMENT MDI _ACAR_USERMODE exper t
Defining Your Own Environment Variables
You can define your own environment variables in the private and site configuration files for use with
user-written subroutines or macros. For example, you can define a variable named debug_mode in your
private or site configuration file. Then, in your own macros, you can query for the value of debug_mode,
and execute some instructions depending on its value. The example below shows a portion of the macro
that would query for the value of debug_mode:
I F condi t i on =( get env( "debug_mode" ) ==" yes")
def aul t command echo=on
END
.
.
.
To define your own environment variables, use the format below. Your template-based product initializes
the variables at startup
ENVI RONMENT VARI ABLE_NAME VARI ABLE_VALUE
For the previous example, you would use the following:
ENVI RONMENT debug_mode yes
Adams/Car
374
Editing Files Using a Text Editor
You can use an environment variable to edit files from within your template-based product. Creating this
environment variable in your .acar.cfg file causes the View Property File tool to launch your text
editor instead of the Information window. In the variable, simply specify the location of your preferred
text editor executable.
For example, an Adams/Car user who wants to launch Wordpad would set up the environment variable
as follows:
ENVI RONMENT MDI _ACAR_USE_EDI TOR C: \ Pr ogr am
Fi l es\ Wi ndowsNT\ Accessor i es\ wor dpad. exe
375
Configuring Your Product
Managing Databases Through Configuration Files
You can use two environment variables to manage your template-based product's databases in the
configuration file:
DATABASE - Sets up databases.
DEFAULT_WRITE_DB - Sets the default writable database.
You can place DATABASE entries in the private, site, or shared configuration files. The
DEFAULT_WRITE_DB, however, is reserved for the private and site configuration files.
Note that you can also set up databases through menus, as explained in Managing Databases. You may
find it more convenient to use the menus.
Learn more about managing databases through configuration files:
Setting Up Databases
Specifying Default Writable Database
Setting Up Databases
You can define databases in your template-based product using the keyword DATABASE. A
DATABASE keyword entry has the following format:
DATABASE DB_NAME DB_PATH
In the format, DB_NAME is the name assigned to the database and DB_PATH is the location of the
database in your file system. You can add any database to the DATABASE definition in any
configuration file. If the database does not exist, your template-based product creates it in the specified
location and adds it to the database list.
Specifying Default Writable Database
You can specify the database that you want to use as the database to which all files are written. You use
the environment variable DEFAULT_WRITE_DB to define the default writable database. The
DEFAULT_WRITE_DB environment variable has the following format:
DEFAULT_WRI TE_DB DB_NAME
The environment variable defines the initial database that you want as the default location for writing
files. Usually, you define the default writable database in your private configuration file, although you
can set the writable database in any configuration file. You can change it during the session as explained
in Setting the Writable Database. Note that you will need permission to write to the file system location
to which the DEFAULT_WRITE_DB points.
Adams/Car
376
Managing Tables Through Configuration Files
As explained in Database Structure, a template-based product's database is comprised of a number of
directories or tables in which you store files. In addition to the standard set of table directories, you can
create your own tables.
Generally, you only add table directories to the databases defined in your private configuration file. As
the site manager, you may decide to add tables for general use in the site configuration file.
Learn more about creating tables and the standard table entries:
Creating Tables
Standard TABLE Directory Entries
Creating Tables
At start up, your template-based product determines when to create new table directories as follows:
1. Your template-based product verifies that all database directories defined in the private
configuration file contain table directories for the corresponding table directories also defined in
the private configuration file.
2. If a table directory does not exist inside the database, your template-based product creates one.
3. If a site configuration file exists, your template-based product ensures that for any table directory
specified in the site configuration file, a corresponding table directory exists for all database
directories defined in both the site and private configuration files.
4. Your template-based product ensures that for all table directories specified in the shared
configuration file, a corresponding table directory exists for all database directories defined in the
private, site (if it exists), and shared configuration files.
The TABLE keyword entry for creating tables has the format:
TABLE TABLE_CLASS
TABLE_NAME
TABLE_EXTENSI ON
where:
TABLE_CLASS - A string identifying the table.
TABLE_NAME - The name that you want used to access the table.
TABLE_EXTENSION - The three-character extension of files stored in the table. Your
template-based product only recognizes files in the table that have the extension that you specify.
For exampl e, t he f ol l owi ng cr eat es a t abl e t hat st or es aer odynami c f or ces:
TABLE aer of or ces / st af f / my_name/ my_db. cdb/ aer of or ces. t bl aer
Adding the table definition shown above in the configuration file causes your template-based product to
recognize and correctly access files stored in that particular database table.
377
Configuring Your Product
Standard TABLE Directory Entries
The TABLE directory entries in the shared configuration file are briefly explained in the following
tables:
Adams/Car Standard TABLE Entries
They are the standard set of tables that are distributed with your template-based product's database. You
cannot reconfigure TABLE entries. Changing these values disables your template-based product's ability
to assign properties to a class of entities.
Managing Property Files Through Configuration Files
A PROPFILE environment variable in the configuration file assigns a default property file used when
creating the following entity types: bumpstop, bushing, damper, reboundstop, spring, and tire.
A PROPFILE environment variable in a configuration file has the following format:
PROPFI LE PROPFI LE_CLASS PROPFI LE_NAME
where:
PROPFILE_CLASS is a string that identifies the property file.
PROPFILE_NAME is the name of the property file.
For example:
PROPFI LE bushi ng mdi ds: / / shar ed/ bushi ngs. t bl / mdi _0001. bus
You can define the property files in the private, site, or shared configuration files.
Managing Test Rigs Through Configuration Files
A TESTRIG environment variable in the configuration file assigns a default test rig to a particular class
of assemblies.
A TESTRIG environment variable in a configuration file has the following format:
TESTRI G TESTRI G_CLASS TESTRI G_NAME
where:
ASSEMBLY_CLASS is a string that identifies the type of assemblies which correspond to the
test rig.
TESTRIG_NAME is the name of the test rig model.
For example:
TESTRI G f our _post . __MY_FOURPOST
You can define the default test rigs in the private, site, or shared configuration files.
Adams/Car
378
Customizing Your Product
Adams/Car 380
Overview
If you are an expert user or site manager, you can customize your template-based product to your
company's needs and preferences. You can extend your template-based product by adding new
functionality, modifying standard functionality, or tailoring its appearance to fit the needs of your work
environment. Customizing your template-based product lets you create a familiar environment in which
users can work.
You can typically modify your template-based product in three main areas. These require different levels
of understanding, ranging from the Adams macro language, Standard Developer Kit (Adams/SDK),
through FORTRAN and C solver routines, as described next.
Customizing the interface - Involves creating or modifying interface objects, such as macros,
dialog boxes, menus, and windows. This uses Adams command language to modify the look and
feel of the interface. It can be used to automate recurring tasks, using the scripting language, but
has limitations in terms of speed and would not be used to generate computationally complex
objects (1000 parts located and oriented to generate a chain). For these tasks, you would use an
Adams/View library written in C.
Creating a custom Adams/View library - Takes advantage of user-written subroutines and
functions to automate highly repetitive and computationally complex tasks in an efficient
manner, using C. Using functions delivered in the SDK, you can quickly generate and
manipulate Adams elements.
Creating a custom Adams/Solver library - Create user-written subroutines and functions to
extend the functionality of your template-based product in terms of the solver. You save them in
custom libraries for later use.
Once you have finalized your customization of your template-based product, you can store your
customized dialog boxes, macros (binary files), Adams/View and Adams/Solver libraries in a site
Note: You cannot customize all dialog boxes and tools. For example, you cannot customize the
Plugin Manager or the Information window. The Dialog-Box Builder's Dialog Box ->
Open menu provides access to those dialog boxes, containers, and toolbars that you can
customize.
Note: You save interface objects and macros in custom binaries.
Note: For Adams/Driveline - Because of the plugin structure of Adams/Driveline, you cannot
create a custom version. You can, however, create a custom Adams/Car version, adding
your own custom elements, analyses, and so on, and then load in the standard
Adams/Driveline plugin.
381
Customizing Your Product
directory, for use by all users, or in a private directory for personal use. You can extend this hierarchy to
support multiple operating systems from one installation.
Select an entry on the left to learn how to efficiently customize the environment of your product.
Adams/Car 382
Customizing the Interface
All of the menus, windows, and dialog boxes that you see in your template-based product are interface
objects that you can modify easily. Most of the interface customization that you'll do involves creating
new dialog boxes, modifying existing ones, or modifying menus and push buttons. Learn about saving
changes to interface objects.
A template-based product stores the interface objects in its modeling database along with all the other
modeling objects (such as parts, models, and markers). You access the interface objects through the
Database Navigator. The objects have a defined hierarchy, which you can also view through the Database
Navigator. You use the Adams/View Dialog-Box Builder to access and edit the interface objects that you
can include in a dialog box, such as labels, fields, and buttons.
For an overview of all aspects of customizing an Adams product interface, including menus, and using
the Dialog-Box Builder, see the Adams/View online help.
Learn more about customizing the interface:
Naming Conventions
Using Libraries
Creating and Modifying Dialog Boxes
Creating and Modifying Macros
Creating Dialog Boxes for Templates
Adding a Minor Role
Adding a Major Role
Creating Menus for Template Builder
Automatically Loading Interface Changes
Saving Interface Changes
Naming Conventions
We recommend that you use a naming convention when you create and modify interface objects or
macros. A naming convention reduces the chances of naming conflicts and provides a simple method for
organizing files, macros, and dialog boxes.
The naming convention that we recommend is the same one that template-based products currently use.
The naming convention uses the abbreviation of the object (for example, mac for macro) followed by a
set of characters that identify the commands or functionality that the object executes or performs. The
naming conventions for macros and dialog boxes are explained next.
Macro naming convention - The macro naming convention uses the abbreviation mac for
macro followed by the first three characters of each command in the user-entered command that
executes the macro. For example, if the user-entered commands for a macro are as shown below
(the first three characters are highlighted in boldface type):
383
Customizing Your Product
acar anal ysi s suspensi on singl e_t r avel submi t
Then, the name of the macro is:
mac_ana_sus_si n_sub
Dialog box naming convention - The naming convention for dialog boxes uses the abbreviation
dbox for dialog box followed by the first three characters of the words that identify the
functionality of the dialog box. For example, if a dialog box is the interface through which a user
creates a hardpoint, then the words that define its functionality are:
templ at e_bui l der hardpoi nt creat e
and, its name is:
dbox_t em_har _cr e
If, however, the dialog box performs two or more functions, as many dialog boxes do, then the
dialog box name does not include the words for the function. For example, if a dialog box lets a
user both create and modify a spring damper, the words that define its functionality are:
templ at e_bui l der damper cr eat e/ modi f y
and, its name is:
dbox_t em_dam
Using Libraries
We recommend that you use libraries to store the interface objects and macros that you create. Libraries
are repositories for Adams/View objects such as variables, assembly instances, macros, and dialog
boxes. Using libraries allows you to easily find, retrieve, or remove specific custom objects. You can add
to your template-based product as many libraries as you need. You can also have libraries within
libraries.
Your template-based product stores all its objects in libraries, named as follows:
You can view the objects in the library using the Database Navigator.
To create libraries, execute the following command either in your .cmd file or during an interactive
session. In the following command, MY_LIBRARY is the name of the library that will be created:
l i br ar y cr eat e l i br ar y_name=. MY_LI BRARY
Alternatively, you can add the command in the file you use to generate the site or private custom binary.
The files are named as follows:
Product name: Library name:
Adams/Car .ACAR
Adams/Car 384
Learn more about those files.
Libraries can also be nested. For example:
l i br ar y cr eat e l i br ar y_name=. MY_LI BRARY. var i abl es
l i br ar y cr eat e l i br ar y_name=. MY_LI BRARY. var i abl es. t or ques
Creating and Modifying Dialog Boxes
The template-based products use dialog boxes to provide you with an easy way to input data or perform
operations. A dialog box is usually an entry point to a custom or standard macro. The dialog box collects
data from you, manipulates it, and then communicates the data to a macro or to an Adams/View function,
which performs an operation using the data. Learn about macros.
Although you can set up a dialog box so that commands perform a particular task within the dialog box,
we recommend that you use the dialog box as an entry point to a macro or a set of macros. By making
the dialog box an entry point to a macro, you:
Are consistent with the standard dialog boxes in template-based products.
Take advantage of the Adams powerful macro language programming.
Note that we supply many examples of how to code dialog boxes. You can find those examples in their
respective libraries. For example, acar.dboxes.
The next topics explain more about creating dialog boxes. For a general overview of creating and editing
dialog boxes in Adams products, see the Adams/View online help, under the Customize tab.
Dialog Box Objects
Layout and Sizing of Dialog Boxes
Commands in Dialog Boxes
Dialog Box Error Handling
Start, Execute, and Finish Commands
OK, Apply, and Cancel Buttons
When you have finished modifying your dialog boxes, review the options for saving your changes and
having them automatically included in your own version of your template-based product. Learn about
saving dialog boxes.
Accessing Dialog Box Programming Tools
You use the Dialog Box command on the Tools menu to create and modify dialog boxes.
Product name: File name:
Adams/Car acar_build.cmd
385
Customizing Your Product
To view, change, and create dialog boxes, you must have expert user access to your template-based
product.
Dialog Box Objects
Dialog boxes are a combination of different interface objects that you can modify using the Dialog-Box
Builder. These include the following:
List of Common Dialog Box Objects
The following figure shows some of the different objects.
The objects: Are:
Containers Subregions in a dialog box that can hold objects.
Text boxes Boxes in which you can enter information.
Pull-down menus Menus that display a list of options from which you can select only
one option.
Radio boxes Toggles that set a state or mode. You can only select one state or
mode.
Toggle buttons (Check boxes) Toggles that indicate an active state. You can select more than one
state.
Push buttons Buttons that execute a command or set a state.
Sliders A continuous range of possible values from which you can select one
value.
Adams/Car 386
Layout and Sizing of Dialog Boxes
When you create dialog boxes, always try to minimize the amount of screen area that they take up. To be
consistent with the other dialog boxes in your template-based product, you should use the size
specifications listed in tables Standard Interface Dialog Box Specifications and Template Builder Dialog
Box Specifications. The specifications also include where on the screen dialog boxes should appear, so
they always appear in the same location on the screen.
We also recommend that you fix the height of dialog boxes. In most cases, only the ability to change the
width of a dialog box is useful to a user because he or she may want to stretch the dialog box to see the
full name of an object in a particular text box. This isn't really necessary for the height of a dialog box.
To fix the height of a dialog box, include the parameters height_minimum and height_maximum in the
interface command that creates the dialog box. You must do this directly in the command file that
contains the commands to create the dialog box. You cannot do this through the Dialog-Box Builder. For
example, for Adams/Car, you can enter:
i nt er f ace di al og modi f y &
di al og=. ACAR. dboxes. dbox_t em_har _mod &
hei ght =150. 0 hei ght _mi numum=150. 0 hei ght _maxi mum=150. 0
When building dialog boxes, always test to ensure that the resizing attributes of each object in the dialog
box are appropriate. Under Resizing in the Dialog-Box Builder, there are resizing attributes for interface
objects. These attributes describe how the size of the objects on a dialog box are affected if the width or
height of the dialog box changes. You should set the resizing attributes of the objects on a dialog box so
that if the size of the dialog box changes, the general look of the dialog box remains the same. For
example, if all the text boxes in a dialog box are right justified along the edge of the dialog box, the text
boxes should all remain right justified if you increase or decrease the width of the dialog box.
Standard Interface Dialog Box Specifications
Template Builder Dial og Box Specifications
For the dialog box attribute: Set its position or size to:
Location 33, 154
Width 370
Label width 150
Label height 25
Text box width 240
For the dialog box attribute: Set its position or size to:
Location 15, 150
Width 404
387
Customizing Your Product
Commands in Dialog Boxes
All of the objects in dialog boxes can execute commands when a user acts on the object. For example, a
button can execute a command when a user pushes on it, and an option choice can execute a command
when a user selects that option from a pull-down menu. Having an object execute a command gives you
great flexibility in how your dialog box works.
For example, you can set up your dialog box so that the commands assigned to a particular database
object field can:
Check to determine whether the object that the user selects exists in the database
Issue a warning message if it does not exist
You can also have commands operate on other objects in dialog boxes, which causes the dialog box to
change its appearance when a user makes a selection from an object. For example, when a user selects
an option from a pull-down menu, the dialog box changes to display objects for entering values for the
selected option as shown next.
Label width 150
Label height 25
Text box width 244
For the dialog box attribute: Set its position or size to:
Adams/Car 388
Dialog Box Error Handling
Each dialog box that you create should have a variable, named errorFlag, that represents the error
condition of the dialog box. You should use the start commands of a dialog box to create the variable and
set its initial value to zero or no error condition, as shown next:
var i abl e set var i abl e_name=$_sel f . er r or Fl ag i nt =0
You should also reference the variable in the OK command that executes the dialog box.
For information on:
Variables, see Using Local Variables.
$_self, see Using Commands in Dialog Boxes.
OK command, see OK, Apply, and Cancel Buttons.
389
Customizing Your Product
Start, Execute, and Finish Commands
You can assign start, execute, and finish commands to higher-level objects, such as containers, and to the
dialog box itself. The commands are described below.
Start commands - Your template-based product automatically executes start commands
associated with a particular interface object when that object is displayed. The start commands
ensure, for example, that the dialog box is displayed properly based on the display parameters.
You should use the start commands to set an errorFlag variable to an initial value of zero, or no
error condition, as shown next:
var i abl e set var i abl e_name=$_sel f . er r or Fl ag i nt =0
Template Builder dialog boxes usually have two possible startup parameters, which you should
set up in the start commands when a dialog box is displayed. The states are:
mode - Mode has two states, which represent the creation or modification states of a dialog
box. The states are create and modify.
object - Object used with the state modify.
An example of using the states in a start command for Adams/Car:
i nt er f ace di al og di spl ay di al og=. ACAR. dboxes. dbox_t em_dam&
par amet er s=" modi f y" , " . t empl at e1. dal _r i de_damper "
Execute commands - The execute commands of a dialog box usually work with OK and Apply
buttons. You should limit the execute commands to calling macros because we recommend that
you use dialog boxes as a front-end to macros. Using dialog boxes as input mechanisms to
macros ensures consistency and upgradeability.
Finish commands - Your template-based product automatically executes finish commands
when an object is no longer displayed. You use them to clean up after a macro, delete
unnecessary objects, such as temporary variables, and so on.
To clean up variables:
You can use the command:
variable delete variable_name=(eval(db_children($_self, "variable")))
To clear the text boxes of a dialog box:
You can use the command:
f or var =$_sel f . l oopobj
obj ect ( eval ( db_chi l dr en( $_sel f , " gr aphi c_i nt er f ace_f i el d" ) ) )
i nt er f ace f i el d set
f i el d=( eval ( $_sel f , " gr aphi c_i nt er f ace_f i el d" ) ) )
st r i ng=" " execut e=no
end
OK, Apply, and Cancel Buttons
Each dialog box in your template-based product has three standard buttons:
Adams/Car 390
OK - Executes the commands associated with the dialog box, and if it executes the command
successfully, it exits the dialog box.
Apply - Executes the commands associated with the dialog box but leaves the dialog box open
so that you can execute the command again.
Cancel or Close - Exits the dialog box without executing a command or executing only a
selected command. Only dialog boxes that have an Apply button have a Close button.
Button Size
To keep your dialog boxes consistent with the dialog boxes of your template-based product, you should
always keep the size of these buttons to 25 pixels high and 76 pixels wide.
Error Handling
Make sure that the commands associated with the OK button reference the dialog box error variable
(errorFlag). By referencing the error variable you ensure that the dialog box will not be closed if an
errorFlag was set during the execution of the dialog box commands. Because the following commands
are generic, you can use them to reference the errorFlag with any dialog box:
i nt er f ace di al og execut e di al og=$_par ent undi spl ay=no
i f condi t i on=( ! $_par ent . er r or Fl ag)
i nt er f ace di al og undi spl ay di al og=$_par ent
end
Learn about error handling in dialog boxes.
Creating and Modifying Macros
A macro is a collection of single commands that enable you to perform a series of actions during a
session. You write commands using the Adams/View command language.
You can modify the existing macros or add customized macros to your template-based product so your
users work smarter in their template-based product. For example, in Adams/Car you can write a macro
to perform a particular full-vehicle analysis. By implementing the macro, a user only needs to enter the
requested values for the analysis in a dialog box and push a button. The button executes the macro, which
performs the full-vehicle analysis.
You can use macros to:
Automate repetitive procedures.
Build general-purpose extensions, such as custom analyses, to your template-based product.
See an example of creating a macro. Although this is an Adams/Car example, you can use the general
concepts to create a macro for any template-based product.
For a complete overview of creating macros, see About Creating Macros.
Learn more about adding macros to your template-based product:
Accessing Macro Programming Tools
391
Customizing Your Product
Viewing Existing Macros
Using Parameters
Using the Echo Command
Using Local Variables
Macro Error Handling
When you have finished modifying your macros, review the options for saving your changes and having
them automatically included in your own version of your template-based product. Learn about saving
macros.
Accessing Macro Programming Tools
You use the Macro command on the Tools menu to create and modify macros. For information on the
Macro command, see Editing and Creating Macros Using the Macro Editor.
To view, change, and create macros, you must have expert user access to your template-based product.
Viewing Existing Macros
Because macro programming is so well developed in your template-based product, you may find it
helpful to look at existing macros. Once you find a macro that most closely meets your needs, use it as
the basis of customization.
As you look at the existing analysis macros within your template-based product, notice that all of them
have the same basic structure.
To view existing macros:
1. From the Tools menu, point to Macro, point to Edit, and then select Modify.
The Database Navigator appears.
2. Select a macro to view.
The Macro Editor appears with the macro commands of the selected macro in the Commands text
area.
Using Parameters
Parameters are placeholders for information that users provide when they execute a macro in a template-
based product. You write parameters in a macro as a $ followed by the name of the parameter. Parameters
let you make macros very flexible. When you create a macro, your template-based product scans the
command text to identify all the parameters.
When you issue the command to execute the macro, you provide values for the parameter or the
parameters assume default values. Your template-based product substitutes the values in place of the
parameters in the macro and executes the macro commands.
You identify parameters in macros using qualifiers. Qualifiers define a parameter's type, range, count
(number of values), and defaults.
Adams/Car 392
The following is an example of a list of parameters and their qualifiers for a macro:
! $par t _name: t =st r i ng
! $l ocat i on: t =l ocat i on
! $t ype: t =st r i ng
! $or i ent at i on: t =or i ent at i on
! $mass: t =r eal
! $cm_l ocat i on_f r om_par t : t =l ocat i on: d=0, 0, 0
! $I xx: t =r eal
! $I yy: t =r eal
! $I zz: t =r eal
! $I xy: t =r eal : d=0
! $I zx: t =r eal : d=0
! $I yz: t =r eal : d=0
! END_OF_PARAMETERS
Using the Echo Command
The command echo=on, which is the default, is a very helpful command because it lets you review the
full log of the macro execution in the command window or echoed in the acar log file.
To use the echo command, you can add the following line at the top of your macro:
def aul t command echo=on
You will find it very helpful for debugging purposes.
Using Local Variables
You can create Adams/View variables to be used in your macros. A variable is storage location that can
contain data. Once you define a variable, you can use it in any parameter, macro, or function in your
template-based product.
You can define a variable as a child of any modeling object, including a macro. Defining a variable as a
child of a macro is helpful in macro programming when you need to create auxiliary Adams/View
variables, such as variables that call an Adams/View function or that act as a return variable from a called
macro. Being able to create these variables as children of the macro results in a cleaner macro.
As a child of the macro object, the variable inherits the object's name. Therefore, the text $_SELF
evaluates to the name of the parent object, which is the macro.
In addition, most often you will want to delete these auxiliary variables when the macro is finished.
Creating these variables under the macro simplifies this cleanup procedure.
You can delete local variables very easily as shown next:
To use local variables:
You should do the following:
var i abl e set var i abl e_name=$_sel f . f i l ename &
st r i ng_val ue=" t mpf i l e. cmd"
393
Customizing Your Product
To clean up local variables:
You should do the following:
var i abl e del et e var i abl e_name=( eval ( db_chi l dr en( $_sel f , " var i abl e" ) ) )
For more information on variables and the commands to create and clean them up, see the help in the
Command Navigator associated with the command variable.
Macro Error Handling
Each macro that you create should have checks to:
Identify inappropriate or invalid user-entered values.
Ensure that the values specified by the user for specific parameters are realistic.
The following Adams/Car example shows how error handling works in a macro. The acar toolkit
warning utility macro displays a message in a window, informing you that it encountered an error
condition. The window remains open until you close it.
! - - - - Ensur e a br ake subsyst emexi st s - - - -
i f condi t i on=( ! subsyst em_r ol e_exi st s( $assembl y, " br ake_syst em" ) )
acar t ool ki t war ni ng &
war ni ng=" Thi s assembl y does not have a br ake subsyst em! "
var i abl e set var i abl e_name=$er r or _var i abl e i nt eger =1
r et ur n
end
You can use the acar toolkit in all template-based products.
Creating Dialog Boxes for Templates
In your template-based product's Template Builder, you can create your own dialog boxes to access
parameters within a template that you may want to modify on a regular basis.
After you create a custom dialog box, you can attach it to a particular template. When you save the
template to your default writable database, your product saves the dialog box with the template. You can
also export dialog boxes as command files, and later import them into other templates.
We recommend using your template-based product's dialog boxes as a starting point to understand what
you can achieve with the Dialog-Box Builder.
To create a custom dialog box for templates:
1. From the Build menu, point to Custom Gui, point to Dialog Box, and then select Create.
Your product displays an empty dialog box named dbox_1, along with the Dialog-Box Builder.
2. Add buttons and commands as explained in Customizing Dialog Boxes Using the Dialog-Box
Builder in the Adams/View online help.
3. To close the Dialog-Box Builder, from the Dialog-Box Builder's Dialog Box menu, select Exit.
Adams/Car 394
To validate your dialog box:
From the Dialog-Box Builder's Option menu, select Test Box.
To permanently attach the dialog box to a template:
1. From the Build menu, point to Custom Gui, point to Dialog Box, and then select Attach.
2. Select << Add.
3. In the Selections dialog box, double-click the name of your dialog box. In this case, dbox_1. If
you have multiple dialog boxes you want to store, repeat these steps for each dialog box.
4. Select OK.
To verify that your product stored your dialog box:
1. From the Build menu, point to Custom Gui, point to Dialog Box, and then select Display.
2. In the Selections dialog box, double-click the name of the dialog box you want to display.
Your product displays the dialog box.
To export a custom dialog box:
From the Dialog Box Builder's Dialog Box menu, point to Export, and then select Command
File.
To import a dialog box:
To import a dialog box from a command file and attach it to a template, you must manually
rename every entity in the command file for .ACAR.custom. For example:
MY_LIBRARY.dboxes.dbox_1 becomes .ACAR.custom.dbox_1
MY_LIBRARY.dboxes.dbox_1.field_1 becomes .ACAR.custom.dbox_1.field_1
Adding Minor Roles
The file <product_name>BS.cmd is a command file that your template-based product automatically
reads in when you start a new session. You use this type of file to add a new minor or major role to your
template-based product.
To add a new minor role in your template-based product:
1. Create a command file named <product_name>BS.cmd (where product_name is the
abbreviation for your product). The contents of the command file should be similar to the contents
of the following Adams/Car command file:
! - - - Add a new mi nor r ol e - - - -
Note: If you do not attach your dialog box to a template, the dialog box will be lost when you
close the current session.
395
Customizing Your Product
var i abl e modi f y var i abl e=. ACAR. var i abl es. mi nor _r ol es &
st r i ng_val ue=( eval ( . ACAR. var i abl es. mi nor _r ol es) ) , " r ear 2"
2. Place the command file in your home directory.
3. When your template-based product starts, it automatically reads in <product_name>BS.cmd. The
command file will expand the minor roles available in your template-based product. The
minor_roles variable is referenced everywhere in the underlying software and is the only change
required to allow you to create new subsystems with minor roles different than the default.
4. Create a new subsystem with the new minor role. (File -> New -> Subsystem).
Notice the new entry in the Minor Role option menu.
Keep in mind the new minor role you define when you are creating/matching communicators.
Adding Major Roles
The file <product_name>BS.cmd is a command file that your template-based product automatically
reads in when you start a new session. You use this type of file to add a new minor or major role to your
template-based product.
Learn how to add minor roles.
To add a new major role in your template-based product:
1. Create a command file named <product_name>BS.cmd (where product_name is the
abbreviation for your product). The contents of the command file should be similar to the contents
of the following Adams/Car command file:
! - - - Add a new maj or r ol e - - - -
var i abl e modi f y var i abl e=. ACAR. var i abl es. maj or _r ol es &
st r i ng_val ue=( eval ( . ACAR. var i abl es. maj or _r ol es) ) , " subf r ame"
2. Place the command file in your home directory.
3. When your template-based product starts, it automatically reads in <product_name>BS.cmd. The
command file will expand the major_roles available in your template-based product. The
major_roles variable is referenced everywhere in the underlying software and is the only change
required to allow you to create new subsystems with major roles different than the default.
4. Create a new template with the new major role. (File -> New).
5. Notice the new entry in the Major Role option menu.
Creating Menus for Template Builder
You can modify your template-based product to add custom menus and buttons to the Template Builder:
Submenu - You can create submenus using the Build menu. A submenu provides a container
that you can use to collect push buttons (in this context, think of push buttons as options located
under a submenu). For example, under the Build menu, Hardpoint is a submenu containing five
push buttons/options (Modify, Table, New, Info, and Delete), as shown next.
Adams/Car 396
Push button - You can use a push button to execute a command such as displaying a dialog box
or executing a macro.
When creating menus, we recommend that you first think about the structure of what you are trying to
achieve. By using a hierarchical approach, you can use submenus to categorize different buttons.
In the following example we assume that you have created a custom dialog box named dbox_1. We are
first going to create a submenu named Example.
To create a submenu:
1. From the Build menu, point to Custom Gui, point to Menu, point to Submenu, and then select
Create.
Your product displays the Create Custom Submenu dialog box.
2. Enter the label that you want to use, in this case Example, and then reference the template in
which this custom menu will be stored.
3. Select OK.
Now you create a push button that resides as a child of submenu, and call the button Display. You then
execute a command to display the custom dialog box, dbox_1.
To create a push button:
1. From the Build menu, point to Custom Gui, point to Menu, point to Push Button, and then
select Create.
Your product displays the Create Custom Push Button dialog box.
2. Enter the label that you want to use, in this case Display.
397
Customizing Your Product
3. Set Parent Menu to menu1, which is the submenu Example you created above. Note that as you
create submenus, your product references them internally as menu1, menu2, and so on, rather
than by name (in this case, Example). If you created several submenus and lost track of their
names, you can use the Info command to see how your product names them: from the Build
menu, point to Custom Gui, point to Menu, and then select Info.
4. The execution command is highly dependent on what you want to achieve. In this example, you
want to display the custom dialog box, dbox_1, so in the Commands text box enter:
i nt er f ace di al og_box di spl ay di al og_box_nam= . ACAR. cust om. dbox_1
If, however, you wanted to view the front view of your model, you would enter a command
similar to the following:
acar i nt er f ace vi ew_r est or e vi ew_or i ent at i on = f r ont
5. Select OK.
6. To validate that the push button works, from the Build menu, point to Example, and then select
Display. Your template-based product should display your dialog box.
To change the order of your submenus:
1. From the Build menu, point to Custom Gui, point to Menu, and then select Reorder.
2. Press F1 and then follow the instructions in the dialog box help for Reorder Custom Menus.
To get information about your custom menu structure:
From the Build menu, point to Custom Gui, point to Menu, and then select Info.
Your product displays the information in the Information window.
Automatically Loading Interface Changes
You can configure the user interface by automatically reading one of the start-up scripts for your
template-based product. Learn more.
The following is an example command file, acar_build.cmd, that customizes Adams/Car. It changes the
title at the top of the Adams/Car window and reads in menu and dialog box command files that customize
the Adams/Car interface. If this file is located in the start-up directory used by your template-based
product, then your template-based product will read and execute it automatically. Although this file can
be used to configure the product at startup, we recommend that you save either a site or private binary,
as they are more efficient at startup.
You can customize the other template-based products in a similar way, using the appropriate build
command files listed in table File Names. In this example, we assume that the environment variable
MDI_ACAR_SITE is set.
! Adams/ Car
! Copyr i ght ( C) 1995- 2005 MSC. Sof t war e
! Al l Ri ght s Reser ved. !
! ****************************************************
! - - - - Modi f y t he wi ndow t i t l e - - - -
Adams/Car 398
i nt er f ace wi ndow modi f y &
wi ndow_name=. gui . mai n &
t i t l e="Adams/ Car : Company XYZ" &
i con_l abel =" A/ XYZ"
! - - - - Set - up l i br ar i es and var i abl es - - - -
f i l e command r ead
f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / bui l d_gui / l i br ar i es. cmd" )
! - - - - I nt er f ace Menus - - - -
f i l e command r ead
f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / i nt er f ace/ menus_i nt . cmd" )
! - - - - Di al og Boxes - - - -
f i l e command r ead
f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / dboxes/ dbox_ana_1. cmd" )
f i l e command r ead
f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / dboxes/ dbox_ana_2. cmd" )
If you decide to build either a site or private binary file, then you must place this file at the top level, as
defined by the path in MDI_ACAR_SITE or MDI_ACAR_PRIVATE.
Saving Interface Changes
All the changes that you make to the interface are active as long as you stay in your current session. This
includes changes to interface objects and macros. You can save the changes for yourself in your private
directory or you can make the changes so that all users can access them from the site directory.
There are many ways to save the changes. The most efficient is to create a private or a site binary that
contains the changes. You can then instruct your template-based product to read the changes when it
starts up. The following procedure summarizes the steps you would perform to save the changes in a
binary. For more information, see the references noted in each step. In addition, for an overall description
of creating binaries for your template-based product, see Running and Configuring Adams.
To save changes as a binary:
1. Export the new or modified macro as a command file:
From the Tools menu, point to Macro, and then select Write.
In the Macro Name text box, enter the name of a macro you have created or modified.
Note that it's not mandatory to provide a file name for the macro. If you name the macro
.MY_LIBRARY.macros.mac_ana_ful_tst_sub, then Adams/Car saves it as
mac_ana_ful_tst_sub.cmd, automatically adding the .cmd extension.
2. Export the new or modified dialog box, as a command file:
From the Tools menu, point to Dialog Box , and then select Modify, to open the Database
Navigator.
Select the dialog box you want to export.
Adams/Car displays the dialog box in build mode, along with the Dialog Box Builder.
From the Dialog Box Builder's Dialog Box menu, point to Export, and then select Command
File.
399
Customizing Your Product
Adams/Car writes a command file to your file system. The name of the resulting command
file will be derived from the dialog box name. If the dialog box is named
dbox_ana_ful_tst_sub, then the dialog box will be saved as dbox_ana_ful_tst_sub.cmd.
3. Create a command file, named as shown in table File Names, that reads in the command files that
customize the interface. See an example of an acar_build.cmd file.
4. Add commands to that command file that automatically reads the macro and dialog box. The
following would read the macro and dialog box, as saved in the steps above.
! - - - - - - Read a macr o- - - - -
macr o r ead &
macr o_name = . MY_LI BRARY. mac_ana_f ul _t st _sub &
f i l e_name = " C: \ t emp\ mac_ana_f ul _t st _sub. cmd" &
user _ent er ed = " Anal ysi s f ul l - vehi cl e t est submi t " &
wr ap_i n_undo = no &
cr eat e_panel = no
! - - - - - - Read a di al og box- - - - -
f i l e command r ead &
f i l e_name = " C: \ t emp\ abox_ana_f ul _t st _sub. cmd
5. Store the file in the desired private or site file repository. Learn about private and site file
repositories.
6. Create a private or a site-specific binary, including the saved interface objects, as explained in
Creating Binary Files in the guide Running and Configuring Adams
Adams/Car 400
Introducing Adams/View Libraries
Libraries let you use your user-written subroutines and compiled functions. User-written subroutines and
compiled functions let you tailor your template-based product to your needs and go beyond the functions
you can define using macros. For more on compiled functions, see Compiled Functions in the guide,
Using the Adams/View Function Builder.
You will find subroutines most helpful when the operations to be performed are heavily recursive or
require file input or output.
To use your custom subroutines and functions, you create an Adams/View library. An Adams/View
library extends the functionality of your template-based product during the design phase and during
plotting. Using an Adams/View library, you can create compiled functions in C and use them in an
Adams/View expression just as you would use standard, built-in Adams/View functions.
You register the user-written functions by calling a subroutine built into Adams/View. You must place
this subroutine call in the registration subroutine supplied in source-code form in Adams/View. To
automate tasks, you can write a custom Adams/View library in C. As an example, you might want to
create a wavefront file that given a number of macro parameters, such as road width, length, and color,
can be used to define a road graphic. In such an example, you would create a C file that when combined
with some macro-wrapping code can be set up to pass parameters from the macro to your custom C
routine. The following example shows five parameters (road_width, road_length, color, shell_file,
error_flag) being passed to a routine named create_a_road:
var i abl e set var i abl e_name = $_sel f . gener at e_r oad &
i nt eger _val ue = ( eval ( cr eat e_a_r oad( " $r oad_wi dt h" , " r oad_l engt h" , " col or " ,
" shel l _f i l e" , " er r or _f l ag" ) ) )
If successful, this execution results in the generation of a wavefront file based on the input parameter
contained in shell_file (as an example, my_road.obj).
In this case, you call a function (create_a_road) in your Adams/View library. You can set up this code to
return a Boolean flag, such as 0 if it failed and 1 if it was successfully executed. You can check this flag
to see if the operation was successful or not, and take action based on the result.
After you check the error flag, you can execute a read Wavefront file in the macro, specifying the
shell_file file as generated by the Adams/View library:
f i l e wavef r ont r ead &
f i l e_name = ( eval ( $_sel f _shel l _f i l e) ) &
por t _name = $assembl y_gr ound
Learn more about Adams/View libraries:
Requirements for Creating Custom Libraries
Creating and Using Adams/View Libraries
Requirements for Creating Custom Libraries
To be able to create Adams/View or Adams/Solver libraries, you must meet the following requirements:
401
Customizing Your Product
To link Adams/Solver (run-time) routines, you must have a FORTRAN or C compiler.
To link Adams/View (design-time) routines, you must have a C compiler.
You can input C or FORTRAN source files to create Adams/Solver user libraries and only C source files
to create Adams/View user libraries. You must compile these subroutines before linking them with an
Adams product. See the hardware and software specifications that come with your Adams product for
the type of compiler you need
(http://www.mscsoftware.com/support/prod_support/adams/?Q=135&Z=144&Y=174). Also refer to your
compiler documentation for details.
Therefore, you can write an Adams/Solver routine in FORTRAN or C, but keep in mind that:
The solver subroutine is expected to be in FORTRAN.
If the solver subroutine is written in C, you must make it emulate a FORTRAN subroutine, as
specified in Knowledge Base Article 8384, at
http://support.adams.com/kb/faq.asp?ID=kb8384.dasp. If you write an Adams/Solver routine in
C, it requires a FORTRAN header, and also requires a FORTRAN compiler (linker).
You must have the linkers from the FORTRAN compilers to create a library, even if the
subroutine is in C.
Creating and Using Adams/View Libraries
An Adams/View library is a custom piece of C code that you can use to extend the functionality of the
interface. See a simple example to automatically create a Wavefront file based on a number of input
parameters from a macro.
Modifying vc_init_usr_c
You can find the file vc_init_usr.c in the distribution of Adams, under /aview/usersubs. This file provides
an interface between Adams/View and user-defined functions. For this example, you'll assume that a
user-defined function, named create_road, is going to be used. Following the instructions in
vc_init_usr.c, you would do the following:
1. Copy vc_init_usr.c and mdi_c.h to your local working directory.
2. Modify vc_init_usr.c to suit your function (create_road). The file includes help inside comment
blocks.
3. Create a C file containing the function create_road. Use the parameters that are passed to and
from the function.
4. Compile the two files using the appropriate compile flags (can be found by opening an advanced
session):
On Windows:
From the Start button, point to Programs, point to MSC.Software, point to MD Adams R3,
point to your template-based product (in this case, ACar), and then select Advanced.
At the prompt, enter cr-acarprivate, and then press Enter.
Adams/Car 402
Press Enter again to select the default, which tells the compiler not to build debug libraries.
Your template-based product displays the compile options.
On UNIX:
At the prompt, enter mdi -c acar cr-acarprivate, and then press Enter.
Press Enter again to select the default, which tells the compiler not to build debug libraries.
Your template-based product displays the compile options.
5. To end this session, type Exit, and then press Enter.
6. Once the files have been compiled, repeat this process, this time specifying the two object files
that were compiled. If everything is successful, you will now have a .dll file (.so on UNIX).
Using the Custom Adams/View Library
For the custom Adams/View library to be automatically loaded, see the notes for organizing your custom
code. Once you've loaded the library into your template-based product, you should be able to reference
your custom function. You can reference your function using the Function Builder or macro code.
403
Customizing Your Product
Introducing Adams/Solver Libraries
Custom Adams/Solver libraries let you use your user-written subroutines with Adams/Solver. User-
written subroutines let you tailor your template-based product to your needs and go beyond the
functionality provided with Adams/Solver and the specific solver functionality delivered with your
product. For general information about subroutines, see:
Using Adams/Solver Subroutines
Running and Configuring Adams
For example, you want to create a force element that represents an aircraft landing-gear damper, then you
could create a custom Adams/Solver library to define the calculations used to produce that force. Inputs
to the damper might include damper velocity, damper displacement, and operating temperature. Output
could be force.
To use your custom Adams/Solver subroutine, you first compile your C or FORTRAN code. You then
link those files into an Adams/Solver library (*.dll or *.so (on UNIX)). The resulting file is stored in a
location defined by either MDI_ACAR_SITE or MDI_ACAR_PRIVATE_DIR. When you invoke the
site or private solver, the library is automatically loaded and the functions become available (dispatched
using the auto-generated code in dispatch.f). A statement in the solver dataset, for the aircraft damper
mentioned above, may look like this:
SFORCE/ 1
, TRANSLATI ONAL
, I = 1
, J = 2
, FUNCTI ON = USER ( 2001, 1, 2, 3)
where:
2001 is the branch ID of your sfo subroutine (your function in your subroutine would be
sfo2001(par, npar)
1 is the ID of the variable measuring damper_velocity
2 is the ID of the variable measuring damper_displacement
3 is the ID of the variable measuring temperature
This function would provide the force to the damper element. Assuming that a subroutine named sfo2001
is included in your custom solver code, the general dispatcher will call this subroutine, pass information
to the subroutine, and return the force from the subroutine.
Learn more about Adams/Solver libraries:
Requirements for Creating Custom Libraries
Creating and Using Adams/Solver Libraries
Requirements for Creating Custom Libraries
To be able to create Adams/View or Adams/Solver libraries, you must meet the following requirements:
Adams/Car 404
To link Adams/Solver (run-time) routines, you must have a FORTRAN or C compiler.
To link Adams/View (design-time) routines, you must have a C compiler.
You can input C or FORTRAN source files to create Adams/Solver user libraries and only C source files
to create Adams/View user libraries. You must compile these subroutines before linking them with an
Adams product. See the hardware and software specifications that come with your Adams product for
the type of compiler you need
(http://www.mscsoftware.com/support/prod_support/adams/?Q=135&Z=144&Y=174). Also refer to your
compiler documentation for details.
Therefore, you can write an Adams/Solver routine in FORTRAN or C, but keep in mind that:
The solver subroutine is expected to be in FORTRAN.
If the solver subroutine is written in C, you must make it emulate a FORTRAN subroutine, as
specified in Knowledge Base Article 8384, at
http://support.adams.com/kb/faq.asp?ID=kb8384.dasp. If you write an Adams/Solver routine in
C, it requires a FORTRAN header, and also requires a FORTRAN compiler (linker).
You must have the linkers from the FORTRAN compilers to create a library, even if the
subroutine is in C.
Creating and Using Adams/Solver Libraries
Before writing user subroutines, make sure you understand the concepts presented in Introducing
Adams/Solver Libraries and Requirements for Creating Custom Libraries, and more importantly the
requirements for the Adams/Solver dataset and the naming conventions for the subroutines and files
containing subroutines. To review some of those concepts, assume that you have an Adams/Solver
statement similar to the following:
REQUEST/ 1, FUNCTI ON = USER( 123, . . . , . . . )
Then, you would need to generate a file named REQ123.f, which would contain a subroutine named
req123. For example:
C Request subr out i ne t o cal cul at e Yaw angl e
subr out i ne r eq123 ( par , npar )
If you follow this convention, generating your own custom libraries should be easy.
To generate a custom library:
1. Make a list of files that you want to include in your custom Adams/Solver library.
2. Save this list in a text file named sub_list.lst. The following is an example list:
r eq123
sf o456
con789
3. Build your custom Adams/Solver Library:
On Windows:
405
Customizing Your Product
From the Start button, point to Programs, point to MSC.Software, point to MD Adams R3,
point to your template-based product (for example, Adams/Car), and then select Advanced.
At the prompt, type cr-solverprivate, and then press Enter.
Press Enter again to select the default, which tells the compiler not to build debug libraries.
Type @sub_list.lst to provide the list of files you want to include in your custom
Adams/Solver library.
Press Enter.
On UNIX:
At the prompt, type mdi -c acar cr-solverprivate, and then press Enter.
Press Enter again to select the default, which tells the compiler not to build debug libraries.
Your template-based product displays the compiler options for the C and FORTRAN
compilers. Make a note of the options.
Type @sub_list.lst to provide the list of files you want to include in your custom
Adams/Solver library.
Press Enter.
4. Alternatively, from the command line you can create your custom library by typing the following
command:
mdi -c acar cr-solverpr n @sub_list.lst -n
Adams/Car 406
After you created the private Adams/Solver library, modify an existing Adams/Solver dataset to verify
that your custom functions are working. You might find it helpful to write basic 'write' statements in your
FORTRAN code to verify that the code is being executed.
Using the Dispatcher (GENDISP)
Adams/Car has a unique utility for dealing with FORTRAN user subroutines called the generalized
dispatcher or GENDISP. GENDISP automatically creates the necessary subroutines (REQSUB,
SFOSUB, and so on) with all the branches to your routines as part of the linking of a library. The
branching for each category of a subroutine (RESQUB, SFOSUB, and so on) are written into a single
FORTRAN file named dispatch.f. In the topics that follow you will learn more about how this mechanism
works.
Learn why you'll find it valuable to create subroutines and functions and how to create libraries that
reference them:
Overview of GENDISP
Conventions for Using GENDISP
Note: Adams/Car writes the resulting acarsolver.dll (the name of the file is dependent on
your template-based product) to the directory defined by the environment variable
MDI_ACAR_PRIVATE_DIR.
If you are having difficulty building your custom code, we recommend using a
DOS prompt and the command adamsmdr3 acar cr-solverprivate n @sub_list.lst.
This allows for output to be readable.
If you want to create a site solver library, you can replace the command cr-
solverprivate with cr-solversite. Your template-based product stores the generated
library in the directory defined by the environment variable MDI_ACAR_SITE.
Your compiled files and sub_list.lst are stored in a working directory. Your
template-based product does not necessarily start in that directory. If there is a
mismatch between the two directories, your template-based product is unable to
locate your files and will fail.To make the working directory default to the correct
location, do the following:
On Windows:
From the Start button, point to Programs, point to MSC.Software, point to
MD Adams R3, point to your template-based product (for example,
Adams/Car), and then right-click Advanced.
Select Properties.
In the Start in text box, enter the location of your files (for example, c:\temp).
On UNIX, move into the directory where sub_list.lst is located (for example, cd
/usr/home/my_home/work).
407
Customizing Your Product
User-Written Subroutines that GENDISP Supports
Adding GENDISP Support For New Subroutine Types
Example of Using GENDISP
How GENDISP Works
Overview of GENDISP
When you write a standard REQSUB subroutine, you often need to process output in more than one way.
You might have one subroutine that computes toe, camber, and caster angle, and another that computes
lateral acceleration and body sideslip angle. In your dataset you may have the following requests, which
reference two user subroutines to calculate toe, camber, and caster, and in the second subroutine lateral
acceleration and body sideslip.
REQUEST/ 111 ! t oe, camber , cast er
FUNCTI ON = USER(1, 1, 2, 3)
REQUEST/ 222 ! l at er al accel er at i on, body si desl i p
FUNCTI ON = USER(2, 4, 5, 6)
The parameters of interest are USER(1, and USER(2, where the values 1 and 2 correspond to PAR(1) in
the expression that follows. In your REQSUB, you must have logic to branch to the different subroutines
as shown next:
I F ( NI NT( PAR( 1) ) . EQ. 1 ) THEN
CALL TCCREQ( I D, TI ME, PAR, NPAR, I FLAG, RESULT )
ELSE I F ( NI NT( PAR( 1) ) . EQ. 2 ) THEN
CALL BSAREQ( I D, TI ME, PAR, NPAR, I FLAG, RESULT )
.
.
.
In the above example, if PAR(1) is equal to 1 (as defined by REQUEST/111), then the subroutine
TCCREQ is called. Likewise, if PAR(1) is equal to 2 (as defined by REQUEST/222), then the subroutine
BSAREQ is called.
Each time you add a new subroutine, you must rewrite your REQSUB to call that subroutine. If your
company has a standard REQSUB, you have to create a local version for yourself and then add your
subroutines to it.
With the template-based products, however, if you follow a simple naming convention for your user-
written subroutines, GENDISP automatically creates a REQSUB, SFOSUB, and so on, with all the
branches to your routines as part of the linking of a library. GENDISP places these subroutines in an
automatically generated file, named dispatch.f.
For example, if you rename the subroutine TCCREQ to REQ001 and the subroutine BSAREQ to
REQ002, then GENDISP creates a REQSUB for you with branches to REQ001 and REQ002 as shown
next:
I F ( NI NT( PAR( 1) ) . EQ. 1 ) THEN
CALL REQ001( I D, TI ME, PAR, NPAR, I FLAG, RESULT )
ELSEI F ( NI NT( PAR( 1) ) . EQ. 2 ) THEN
Adams/Car 408
CALL REQ002( I D, TI ME, PAR, NPAR, I FLAG, RESULT )
.
.
.
Using GENDISP makes the generation of dispatcher routines a fully automated process, allowing you to
concentrate primarily on the content of your solver subroutines.
Conventions for Using GENDISP
To use GENDISP correctly, you must do the following:
Name your user subroutines using the convention that the first three characters must be the same
as the calling user subroutine and the last three characters of the subroutine name must be
numbers. For example, the subroutine called by a REQSUB, must be named REQ001, REQ002,
and so on. Another example would be naming GFORCE user subroutines called from a
GFOSUB names like GFO241, GFO534, and so on.
Name your source code or object code files according to this convention. For GENDISP to work,
the source code or object code files must have the same root name as the subroutine (for
example, req001.f or req001.o). Note that GENDISP ignores case. Therefore, REQ001.f is the
same as req001.f or ReQ001.f. GENDISP generates branches based on the root file name.
GENDISP does not examine the contents of a file for names matching the convention.
When invoking a user subroutine from your Adams model, make sure that the first user
parameter matches the subroutine you want to call. For example, the following sensor statement
generates a call to SEN743:
SENSOR/ 1, FUNC=USER( 743, . . . . . . . ) \
Remember to always reserve the first parameter for branching when writing your user
subroutines.
Number all your routines in the 001 to 799 range (for example, REQ300 and SFO465). The
range 900+is reserved for standard Adams user subroutines.
User-Written Subroutines that GENDISP Supports
GENDISP supports the following Adams/Solver user-written subroutines. Learn about subroutines.
Adams/Solver User-Written Subroutines that GENDISP Supports
Name: Description:
CONSUB Control command
COUSUB Coupler subroutine and partial derivatives
COUXX Coupler first partial derivatives subroutine (CXX100)
COUXX2 Coupler second partial derivatives subroutine (CXD100)
CURSUB Curve statement
409
Customizing Your Product
GENDISP supports the following Adams/Car user-written subroutine types:
Adams/Car Subroutine Types That GENDISP Supports
Adams/Tire now supports dynamic loading (dispatching) of tire (TYRSUB) and road contact
(ARCSUB) subroutines. Support for standard driver interface (SDISUB) for lack of usage.
DIFSUB Differential equation statement
DMPSUB Modal damping subroutine
FIESUB Field statement
GFOSUB Gforce statement
GSESUB General state equation subroutine
Adams/Car provides generic GSEYU, GSEXU, GSEXX and GSEYX
subroutines that numerically difference a GSE subroutine. The general
dispatcher, however, does not provide support for the revised GSE
implementation using the GSE_DERIV, GSE_UPDATE, GSE_OUTPUT,
and GSE_SAMP subroutines.
MFORCE Modal force subroutine
MOTSUB Motion statement
REQSUB Request statement
SENSUB Sensor statement
SFOSUB Sforce statement
TIRSUB Tire statement subroutine (to be discontinued)
UCOSUB Ucon (user constraint) statement
VARSUB Variable statement
VFOSUB Vforce statement
VTOSUB Vtorque statement
Name: Description:
BRASUB Brake demand
STRSUB Steering demand
THRSUB Throttle demand
Name: Description:
Adams/Car 410
Adding GENDISP Support For New Subroutine Types
To add support for a new subroutine type, you modify the file dispatch.dat to add the new type. You can
find a copy of dispatch.dat in the directory install_dir/product_name/dispatch.dat, where install_dir is the
directory in which you installed your template-based product and product_name is acar, aengine, aircraft,
or arail, according to the product you are using.
The file, dispatch.dat, is a TeimOrbit format file containing a block for each supported subroutine type
and follows these rules:
Block names are limited to three characters. For example, [MYU] is valid, but [MYUT] is not.
Branching is always based on PAR(1) in the generated source code. So PAR must either be an
array passed to the user subroutine as in REQSUB or PAR must be created using the
(CODE_BEFORE_BRANCH) option as Example of Using GENDISP.
Code in the (CODE_BEFORE_BRANCH) sub-block is output literally to the generated source
code, and must follow FORTRAN's strict formatting rules. For example, executable code on a
line must be indented six spaces.
For exampl e, t he bl ock f or REQSUBs l ooks l i ke:
$********************************************
[ REQ]
( PARAMETERS)
{t ype name}
' I NTEGER' ' I D'
' DOUBLE PRECI SI ON' ' TI ME'
' DOUBLE PRECI SI ON' ' PAR( *) '
' I NTEGER' ' NPAR'
' LOGI CAL' ' I FLAG'
' DOUBLE PRECI SI ON' ' RESULT( 8) '
$********************************************
Wi t h t hi s bl ock i n di spat ch. dat and gi ven a l i st of f i l es names
cont ai ni ng r eq900, r eq901, and r eq221, GENDI SP woul d cr eat e t he
f ol l owi ng sour ce code i n t he f i l e di spat ch. f :
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
subr out i ne r eqsub( I D,
& TI ME,
& PAR,
& NPAR,
& I FLAG,
& RESULT )
C Thi s i s a di spat cher r out i ne wr i t t en by gendi sp
I NTEGER I D
DOUBLE PRECI SI ON TI ME
DOUBLE PRECI SI ON PAR( *)
I NTEGER NPAR
LOGI CAL I FLAG
DOUBLE PRECI SI ON RESULT( 8)
C Local var i abl es
char act er *( 80) er r msg
I F ( NI NT( PAR( 1) ) . EQ. 900 ) THEN
CALL r eq900 ( I D,
411
Customizing Your Product
& TI ME,
& PAR,
& NPAR,
& I FLAG,
& RESULT )
ELSE I F ( NI NT( PAR( 1) ) . EQ. 901 ) THEN
CALL r eq901 ( I D,
& TI ME,
& PAR,
& NPAR,
& I FLAG,
& RESULT )
ELSE I F ( NI NT( PAR( 1) ) . EQ. 221 ) THEN
CALL r eq221 ( I D,
& TI ME,
& PAR,
& NPAR,
& I FLAG,
& RESULT )
ELSE
WRI TE ( ERRMSG, ' ( A, I 4. 4) ' )
& ' Er r or i n di spat cher subr out i ne r eqSUB: I nval i d
PAR( 1) : ' ,
& NI NT( PAR( 1) )
CALL ERRMES( . TRUE. , ERRMSG, 0, ' STOP' )
ENDI F
RETURN
END
Each block for a subroutine in dispatch.dat must contain a (PARAMETERS) sub-block that defines the
subroutine parameter types. Optionally, a block may contain a (CODE_BEFORE_BRANCH) sub-block
as illustrated in the example MYUSUB shown in Example of Using GENDISP.
Using GENDISP
The following procedure is only applicable if you want to extend the libraries that GENDISP dispatches.
Here we provide an overview of how to test additions to the dispatch.dat file. The result of this procedure
should be a fully populated dispatch.f file, which you can examine to verify that valid subroutines have
been written. In normal circumstances, this procedure should not required because this process is
automated by the acarcom and acarsolvercom scripts. We provide this procedure as a means to validate
that you correctly modified the dispatch.dat file.
GENDISP is invoked when linking private or site libraries. A list of standard template-based product file
names, plus file names you supply, are passed to GENDISP. GENDISP examines the list of files for
names matching the supported subroutine types given in the file dispatch.dat. For each matching name,
GENDISP creates a branch in the appropriate user subroutine and outputs the source code file dispatch.f
to the working directory.
The file dispatch.f can contain multiple subroutines, but only one of each type (for example, one
REQSUB or one CURSUB). The acarcom and acarsolvercom scripts include dispatch.f when linking.
The files dispatch.f and dispatch.o are left in the working directory so you can look at them.
Adams/Car 412
For testing or other purposes, you can execute GENDISP yourself. You can find GENDISP at the
following location, where install_dir is the installation directory, and product_name is the name of your
template-based product:
$i nst al l _di r / $pr oduct _name/ $MDI _CPU/ gendi sp
For example, the location of GENDISP might be:
/ usr / mdi 12/ acar / i r i x32/ gendi sp
You invoke GENDISP with the following arguments:
gendi sp f i l e. l st di spat ch. f di spat ch. dat
where:
file.lst - File containing a list of user subroutine filenames for GENDISP processing.
dispatch.f - Source code file name output by GENDISP.
dispatch.dat - TeimOrbit format file defining the supported subroutine types and their parameter
lists.
Example of Using GENDISP
The following example uses GENDISP to generate a MYUSUB that branches to subroutines named
myu532, myu253, and so on. It also branches to these subroutines based on an integer argument named
SWITCH.
SUBROUTI NE MYUSUB( SWI TCH, NDPAR, DPAR, VECTOR )
C
C GLOBAL VARI ABLES
C
I NTEGER SWI TCH
I NTEGER NDPAR
DOUBLE PRECI SI ON DPAR( NDPAR)
DOUBLE PRECI SI ON VECTOR( 3)
C
C LOCAL VARI ABLES
C
CHARACTER*( 80) ERRMSG
I NTEGER PAR( 2)
C
PAR( 1) = SWI TCH
I F ( NI NT( PAR( 1) ) . EQ. 532 ) THEN
CALL MYU532 ( SWI TCH, NDPAR, DPAR, VECTOR )
ELSE I F ( NI NT( PAR( 1) ) . EQ. 253 ) THEN
CALL MYU253 ( SWI TCH, NDPAR, DPAR, VECTOR )
ELSE
WRI TE ( ERRMSG, ' ( A, I 4. 4) ' )
& ' ERROR i n di spat cher subr out i ne MYSSUB: i nval i d swi t ch: ' ,
& NI NT( PAR( 1) )
CALL ERRMES( . TRUE. , ERRMSG, 0, ' STOP' )
ENDI F
RETURN
413
Customizing Your Product
END
To dispatch.dat, you add a block for MYSSUB that looks like the following:
$********************************************
[ MYU]
( PARAMETERS)
{t ype name}
' I NTEGER' ' SWI TCH'
' I NTEGER' ' NDPAR'
' DOUBLE PRECI SI ON' ' DPAR( NDPAR) '
' DOUBLE PRECI SI ON' ' VECTOR( 3) '
( CODE_BEFORE_BRANCH)
{code}
' I NTEGER PAR( 2) '
' PAR( 1) = SWI TCH'
$********************************************
The code GENDISP generates for MYUSUB looks a little different then the example above, but
functions in the same way:
Ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subr out i ne myusub( SWI TCH,
& NDPAR,
& DPAR
, & VECTOR )
C Thi s i s a di spat cher r out i ne wr i t t en by gendi sp
I NTEGER SWI TCH
I NTEGER NDPAR
DOUBLE PRECI SI ON DPAR( NDPAR)
DOUBLE PRECI SI ON VECTOR( 3)
C Local var i abl es
char act er *( 80) er r msg
I NTEGER PAR( 2)
PAR( 1) = SWI TCH
I F ( NI NT( PAR( 1) ) . EQ. 532 ) THEN
CALL myu532 ( SWI TCH,
& NDPAR,
& DPAR,
& VECTOR )
ELSE I F ( NI NT( PAR( 1) ) . EQ. 253 ) THEN
CALL myu253 ( SWI TCH,
& NDPAR,
& DPAR,
& VECTOR )
ELSE
WRI TE ( ERRMSG, ' ( A, I 4. 4) ' )
& ' Er r or i n di spat cher subr out i ne myuSUB: I nval i d
PAR( 1) : ' ,
& NI NT( PAR( 1) )
CALL ERRMES( . TRUE. , ERRMSG, 0, ' STOP'
) ENDI F
RETURN
END
Adams/Car 414
Utility Functions
This topic lists utility functions that help you extend the Adams/View macro language. The functions
help you access information that is not easy to access using the standard Adams/View macro language.
You can use the utility functions in macros and in dialog boxes.
The following functions are used by the template-based products. To see information on all functions
available in the Function Builder, see the Function Builder online help.
Units-Conversion Functions
String Functions
Database Functions
File Functions
Database Lookup Functions
Miscellaneous Functions
Units-Conversion Functions
The units-conversion functions convert an input value to a different unit system. The units-conversion
functions are:
convert_from_units
convert_units
convert_to_radians
units_to_mks
convert_from_units
Definition
convert_from_units converts the input value from a unit type to the equivalent modeling units. It accepts
any valid units string (for example, mm, newton, or inch) for the unit type. It returns the converted value.
Format
REAL convert_from_units (STRING from_units, REAL in_value)
Arguments
from_units A string specifying the current units of the argument in_value.
in_value A real number to be converted.
415
Customizing Your Product
Examples
The following example converts the current length units, which are in inches (inch), to millimeters (mm):
var i abl e set var i abl e=uni t s_conver t &
r eal _val ue=( eval ( CONVERT_FROM_UNI TS( " i nch" , 1. 0) ) )
uni t s_conver t = 25. 4
convert_units
Definition
convert_units returns the conversion factor necessary to convert a value from the current units
(from_units) to the desired units (to_units). It accepts any valid units string (for example, mm, newton,
or inch) for the units strings. The units should be equivalent modeling units of length, force, mass, time,
or angle.
Format
REAL convert_units (STRING from_units, REAL to_units)
Arguments
Examples
The following example returns the conversion factor necessary to convert miles to millimeters:
var i abl e set var i abl e=conver t _f act or &
r eal _val ue=( CONVERT_UNI TS( " mi l e" , " mm" ) )
conver t _f act or = 1. 609344E+06
convert_to_radians
Definition
convert_to_radians converts an angle from degrees to radians. You specify the input value in current
modeling angular units.Format
REAL convert_to_radians (REAL in_value)
Arguments
from_units A string specifying the current units.
to_units A string specifying the desired units.
in_value A real number to be converted.
Adams/Car 416
Examples
The following example converts the current modeling angular units, which are in degrees, to radians:
var i abl e set var i abl e=angl e_r adi ans &
r eal _val ue=( CONVERT_TO_RADI ANS( 90) )
angl e_r adi ans = 1. 5707963268
units_to_mks
Definition
units_to_mks returns the conversion factor from user units to database units (meters, kilograms, seconds,
radians, or mks).Format
REAL units_to_mks (INTEGER units)
Arguments
Examples
The following example returns the conversion factor necessary to change degrees to database units:
var i abl e ser var i abl e=myvar 1 &
r eal _val ue=90. 0 uni t s=angl e
var i abl e set var i abl e=myvar 2 &
r eal _val ue=( UNI TS_TO_MKS( myvar 1. uni t s ) )
myvar 2 = 1. 7453. . . E- 02
String Functions
The string functions allow you to manipulate character strings. The string functions are:
str_assembly_class
str_char_swap
str_filename
str_model_class
str_prefix
str_remove
str_replace
str_typecheck
units An integer value.
417
Customizing Your Product
str_assembly_class
Definition
str_assembly_class returns the assembly class of an assembled model. Your template-based product
stores the returned information in the assembly_class variable under all assemblies. For Adams/Car,
typical assembly classes include suspension and full_vehicle. You can also extend the assembly classes.
If no assembly variable exists within the assembled model, str_assembly_class returns an empty string.
Format
STRING str_assembly_class (OBJ ECT assembled_model)
Arguments
Examples
var i abl e set var i abl e=cur r ent _cl ass &
st r i ng_val ue=( STR_ASSEMBLY_CLASS( . susp_assy) )
cur r ent _cl ass = " suspensi on"
str_char_swap
Definition
str_char_swap changes a single character in a string (object_name) at a particular location (index) to
another character string. It changes the characters as specified in swap_str.
str_char_swap compares the strings and changes them only in the string following the last . in
object_name. In addition, swap_str must be two or more characters long and contain an even number of
characters.
The first half of swap_str determines the characters to be changed ("from characters") and the second
half of swap_str determines the characters to which the characters are to be changed ("to characters"). If
str_char_swap does not change any characters, it returns the original object_name string.
Format
STRING str_char_swap (STRING object_name, STRING swap_str, INT index)
assembled_model Name of the assembled model.
Adams/Car 418
Arguments
Examples
In the following Adams/Car example, lrrl is the string that defines what should be changed. The first half
of the string (lr) represents the valid "from characters." The second half of the string (rl) represents the
"to characters."
If the example finds one of the "from characters" at position 3 in the string
._front_susp.ground.hpl_lca_front, it replaces the "from characters" with the corresponding "to
characters." In this example, l would change to r.
var i abl e set var i abl e=symmet r i c_name &
st r i ng_val ue=( STR_CHAR_SWAP( " . _f r ont _susp. gr ound. hpl _l ca_f r ont " ,
" l r r l " , 3) )
symmet r i c_name = " . _f r ont _susp. gr ound. hpr _l ca_f r ont "
str_filename
Definition
str_filename strips an input string (in_str) to a base file name (with extension) and then substitutes a new
string (new_str) for the old string (old_str) if the old string exists in the base name. If old_str occurs more
than once in the input string, str_filename only replaces the last occurrence.
Format
STRING str_filename (STRING in_str, STRING old_str, INT new_str)
Arguments
Examples
var i abl e set var i abl e=base_f i l ename &
st r i ng_val ue=( STR_FI LENAME( " / usr / car . cdb/ t est . t pl " , " t pl " , " sub" ) )
base_f i l ename = " t est . sub"
object_name A string that usually contains an object's name.
swap_str A string that describes the rules for character changing.
index An integer that specifies the index of the character to be changed.
in_str The input string, which is usually a file path.
old_str The string to be replaced.
new_str The string to replace old_str.
419
Customizing Your Product
str_model_class
Definition
str_model_class returns a model's model class. This information is stored in the model_class variable
under all models. If no such variable exists within the model, str_model_class returns an empty string.
Typical model classes include template, subsystem, and assembly.
Format
STRING str_model_class (OBJ ECT model)
Arguments
Examples
var i abl e set var i abl e=cur r ent _cl ass &
st r i ng_val ue=( STR_MODEL_CLASS( . _f r ont _susp) )
cur r ent _cl ass = " t empl at e"
str_prefix
Definition
str_prefix returns the generic prefix for a given string (object_name). The length of the return string is
always four characters long. str_prefix also pares the input down to only the string following the last . in
object_name.
Format
STRING str_prefix (STRING object_name)
Arguments
Examples
var i abl e set var i abl e=name_pr ef i x &
st r i ng_val ue=( STR_PREFI X( " . _f r ont _susp. gr ound. hpl _l ca_out er " ) )
name_pr ef i x = " hps_"
model A model entity.
object_name A string that usually contains an object's name.
Adams/Car 420
str_remove
Definition
str_remove trims an input string (in_str) by removing a string (begin_str) from the beginning of in_str
and a string (end_str) from the end of in_str.
str_remove removes begin_str before removing end_str so if the beginning and ending string in in_str
overlap, str_remove only removes begin_str.
Format
STRING str_remove (STRING in_str, STRING begin_str, STRING end_str)
Arguments
Examples
var i abl e set var i abl e=t r i m_st r i ng &
st r i ng_val ue=( STR_REMOVE( " abcdef " , " ab" , " ef " ) )
t r i m_st r i ng = " cd"
var i abl e set var i abl e=t r i m_st r i ng &
st r i ng_val ue=( STR_REMOVE( " abcdef " , " " , " ef " ) )
t r i m_st r i ng=" abcd"
str_replace
Definition
str_replace replaces a string (old_str) with a new string (new_str) in the string in_str. If there are multiple
occurrences of old_str, str_replace replaces the last occurrence.
Format
STRING str_replace (STRING in_str, STRING old_str, STRING new_str)
Arguments
in_str The input string.
begin_str A string to be removed from the beginning of in_str.
end_str A string that defines where to truncate the input string.
in_str The input string.
old_str The string to be replaced.
new_str The string to replace old_str.
421
Customizing Your Product
Examples
var i abl e set var i abl e=ot her _f i l ename &
st r i ng_val ue=( STR_REPLACE( " / usr / car . cdb/ t est . t pl " , " t est " ,
" j unk" ) )
ot her _f i l ename = " / usr / car . cdb/ j unk. t pl "
str_typecheck
Definition
str_typecheck returns a 1 if a list of characters (type) matches the third character in the base name of an
object's name (object_name). str_typecheck always pares down the input to only the string following the
last . in object_name.
You can specify more than one character in type.
Format
STRING str_typecheck (STRING object_name, STRING type)
Arguments
Examples
var i abl e set var i abl e=check_t ype &
st r i ng_val ue=( STR_TYPECHECK( " . _f r ont _susp. gr ound. hpl _l ca_out er " ,
" l s" ) )
check_t ype = 1
var i abl e set var i abl e=check_t ype &
st r i ng_val ue=( STR_TYPECHECK( " . _f r ont _susp. gr ound. hpl _l ca_out er " ,
" r ") )
check_t ype = 0
Database Functions
The database functions let you manage and access the databases of your template-based product. The
database functions are:
cdb_alias2path
cdb_path2alias
cdb_input2base
cdb_input2ext
cdb_input2file
object_name A string that usually contains an object's name.
type A list of characters to match. Allowed characters are l, r, and s.
Adams/Car 422
cdb_input2path
cdb_input2full
cdb_search_file
cdb_runtime_path_port
cdb_alias2path
Definition
cdb_alias2path returns the full path associated with a given table path alias or cdb_name. If
cdb_alias2path does not find the full table path corresponding to the alias, it returns the input string. By
returning the input string, you can input normal path names and filenames, and cdb_alias2path returns
them without modification.
Format
STRING cdb_alias2path (STRING path_alias)
Arguments
Examples
This example finds the file system path associated with database prototype:
var i abl e set var i abl e=a2p &
st r i ng_val ue=( eval ( cdb_al i as2pat h( " pr ot ot ype" ) ) )
a2p = " / l ocal / pr ot o. cdb"
cdb_path2alias
Definition
cdb_path2alias returns the path alias associated with a given table path alias or cdb_name. If
cdb_path2alias does not find a path alias corresponding to the full path name, it returns the input string.
By returning the input string, cdb_path2alias allows you to enter normal path names and filenames, and
returns them without modification.
Format
STRING cdb_path2alias (STRING path)
path_alias Alias used for internal reference to database.
Note: When comparing strings, UNIX is case sensitive. Windows is not.
423
Customizing Your Product
Arguments
Examples
This example finds the database alias associated with database:
var i abl e set var i abl e=p2a &
st r i ng_val ue=( eval ( cdb_pat h2al i as( " / l ocal / pr ot o. cdb" ) ) )
p2a = " pr ot ot ype"
cdb_input2base
Definition
cdb_input2base returns the base name of a file (input_name). It strips the input_name of both its file
system path prefixes and extension or suffix, if any.
Format
STRING cdb_input2base (STRING input_name)
Arguments
Examples
This example finds the base name for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=i 2b &
st r i ng_val ue( eval ( cdb_i nput 2base( " / l ocal / pr ot o. cdb/ bushi ngs. t bl / m
y_bush. bus" ) ) )
i 2b = " my_bush"
cdb_input2ext
Definition
cdb_input2ext returns the extension or suffix of a file (input_name). It returns an empty string if it finds
no extension
Format
STRING cdb_input2ext (STRING input_name)
path File system path of the database.
input_name File system path to be converted to base name.
Adams/Car 424
Arguments
Examples
This example finds the extension for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=i 2e &
st r i ng_val ue=( eval ( cdb_i nput 2ext ( " / l ocal / pr ot o. cdb/ bushi ngs. t bl / my
_bush. bus" ) ) )
i 2e = "bus"
cdb_input2file
Definition
cdb_input2file returns the filename contained in input_name. cdb_input2file strips input_name of any
file system path prefix and returns the result.
Format
STRING cdb_input2file (STRING input_name)
Arguments
Examples
This example finds the filename for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=i 2f i l e &
st r i ng_val ue=( eval ( cdb_i nput 2f i l e( " / l ocal / pr ot o. cdb/ bushi ngs. t bl / my_bush
. bus" ) ) )
i 2f i l e = " my_bush. bus"
cdb_input2path
Definition
cdb_input2path returns the file system path prefix of a filename. If the path prefix is not present,
cdb_input2path returns an empty string.
Format
STRING cdb_input2path (STRING input_name)
input_name File system path to be converted to extension.
input_name File system path to be converted to filename.
425
Customizing Your Product
Arguments
Examples
This example finds the file system path prefix for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=i 2p &
st r i ng_val ue=( eval ( cdb_i nput 2pat h( " / l ocal / pr ot o. cdb/ bushi ngs. t bl / my_bush
. bus" ) ) )
i 2p = " / l ocal / pr ot o. cdb/ bushi ngs. t bl "
cdb_input2full
Definition
cdb_input2full returns the file system path of a filename containing a database alias. If cdb_input2full
finds no database alias present, it returns the input string.
Format
STRING cdb_input2full (STRING input_name)
Arguments
Examples
This example finds the file system path for the file mdids://prototype/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=i 2f ul l &
st r i ng_val ue=( eval ( cdb_i nput 2f ul l ( " mdi ds: / / pr ot ot ype/ bushi ngs. t bl /
my_bush. bus" ) ) )
i 2f ul l = " / l ocal / pr ot o. cdb/ bushi ngs. t bl / my_bush. bus"
cdb_search_file
Definition
cdb_search_file returns the file system path of the input file (filename). First, it checks to determine if
the filename as input corresponds to an existing file. It expands any database alias to its corresponding
file system path, and looks for the filename at the resultant location. If it finds no file, it removes any file
system path prefix from the filename, and begins its to search the different databases in the specified
search order.
Remember that search order may be important. If two identically named files exist in different databases,
the search order determines which of these files cdb_search_file finds and returns.
input_name Filename to be converted into file system path prefix.
input_name Filename with database alias to be converted to file system path.
Adams/Car 426
cdb_search_file returns an empty string if it does not find the requested filename after searching the
databases.
Format
STRING cdb_search_file (STRING class_name, STRING filename, INT level)
Arguments
Examples
This example finds the file system path for file my_bush.bus:
var i abl e set var i abl e=sf i l e &
st r i ng_val ue=( eval ( cdb_sear ch_f i l e( " bushi ng" , " my_bush. bus" , 1) ) )
sf i l e=" / l ocal / pr ot o. cdb/ bushi ngs. t bl / my_bush. bus"
cdb_runtime_path_port
Definition
cdb_runtime_path_port returns the filename of the input string (input_name) converted to the appropriate
operating system format. You will find cdb_runtime_path_port useful when you are sharing filenames
between UNIX and Windows file systems. It also lets you use a database alias instead of a full file system
path.
Format
STRING cdb_runtime_path_port (STRING input_name)
Arguments
Examples
This example returns the Windows version of the filename for the file
mdids://prototype/bushings.tbl/my_bush.bus:
var i abl e set var i abl e=r pp &
st r i ng_val ue=( eval ( cdb_r unt i me_pat h_por t ( mdi ds: / / pr ot ot ype/ bushi ngs. t bl /
class_name The type class name for the table in which to search for the file. It is defined in the
configuration files.
filename The filename, either with or without any path prefix, to be found.
level The level in the search list at which to start searching. The value is usually 1, which
indicates a full search.
input_name File system path to be converted to an operating-system specific filename.
427
Customizing Your Product
my_bush. bus) ) )
r pp = " mdi ds: / / pr ot ot ype\ bushi ngs. t b\ my_bush. bus"
File Functions
The file functions return information about the major and minor roles of templates and subsystems:
template_hdr_major_role
subsystem_hdr_major_role
subsystem_hdr_minor_role
template_hdr_major_role
Definition
template_hdr_major_role returns the major role of a template. Your template-based product stores the
major role information in the header information of all template files (.tpl). template_hdr_major_role
automatically opens a template file, retrieves the information from the file header, and closes the file.
Format
STRING template_hdr_major_role (STRING filename)
Arguments
Examples
This is an example of the header information that is stored in an Adams/Car template file:
$- - - - - - - - - - - - - - - - - - - - - - - - TEMPLATE_HEADER- - - - - - - - - - - - - - - - - - - - - - $
[ TEMPLATE_HEADER]
MAJ OR_ROLE = ' suspensi on'
TI MESTAMP =' 1999/ 02/ 04, 13: 13: 38'
HEADER_SI ZE = 5
The following example returns the major role of a template, which it obtains from the header information
shown above:
var i abl e set var i abl e=t pl _maj or _r ol e &
st r i ng_val ue=( TEMPLATE_HDR_MAJ OR_ROLE
( " mdi ds: / / shar ed/ t empl at e. t bl / _dbl _wi sh. t pl " ) )
t pl _maj or _r ol e = " suspensi on"
filename String that contains the full path of the template file.
Adams/Car 428
subsystem_hdr_major_role
Definition
subsystem_hdr_major_role returns the major role of a subsystem. Your template-based product stores the
major role information in the header information of all subsystem files (.sub). subsystem_hdr_major_role
automatically opens a subsystem file, retrieves the information from the file header, and closes the file.
Format
STRING subsystem_hdr_major_role (STRING filename)
Arguments
Examples
This is an example of the header information that is stored in an Adams/Car subsystem file:
$- - - - - - - - - - - - - - - - - - - - - - - - - - SUBSYSTEM_HEADER - - - - - - - - - - - - - - - - - - - - - - - $
[ SUBSYSTEM_HEADER]
TEMPLATE_NAME = mdi ds: / / shar ed/ t empl at es. t bl / _doubl e_wi shbone. t pl
MAJ OR_ROLE = suspensi on
MI NOR_ROLE = f r ont
TI MESTAMP = 1999/ 02/ 04, 17: 18: 18
The following example returns the major role of an Adams/Car subsystem, which it obtains from the
header information shown above:
var i abl e set var i abl e=sub_maj or _r ol e &
st r i ng_val ue=( SUBSYSTEM_HDR_MAJ OR_ROLE( " mdi ds: / / shar ed/ subsyst em. t bl /
f r ont _susp. sub") )
sub_maj or _r ol e = " suspensi on"
subsystem_hdr_minor_role
Definition
subsystem_hdr_minor_role returns the minor role of a subsystem. Your template-based product stores the
minor role information in the header information of all subsystem files (.sub).
subsystem_hdr_minor_role automatically opens a subsystem file, retrieves the information from the file
header, and closes the file.
Format
STRING subsystem_hdr_minor_role (STRING filename)
filename String that contains the full path of the subsystem file.
429
Customizing Your Product
Arguments
Examples
This is an example of the header information that is stored in an Adams/Car subsystem file:
$- - - - - - - - - - - - - - - - - - - - - - - - SUBSYSTEM_HEADER - - - - - - - - - - - - - - - - - - - - - - $
[ SUBSYSTEM_HEADER]
TEMPLATE_NAME = mdi ds: / / shar ed/ t empl at es. t bl / _doubl e_wi shbone. t pl
MAJ OR_ROLE= suspensi on
MI NOR_ROLE= f r ont
TI MESTAMP= 1999/ 02/ 04, 17: 18: 18
The following example returns the minor role of an Adams/Car subsystem, which it obtains from the
header information shown above:
var i abl e set var i abl e=sub_mi nor _r ol e &
st r i ng_val ue=( SUBSYSTEM_HDR_MI NOR_ROLE( " mdi ds: / / shar ed/ subsyst em
. t bl / f r ont _susp. sub" ) )
sub_mi nor _r ol e = " f r ont "
Database Lookup Functions
The database lookup functions find specified models or subsystems based on their classes or roles during
a session.
model_class_exists
subsystem_lookup
subsystem_role_exists
model_class_exists
Definition
model_class_exists lets you easily determine if a model of a particular model class exists in the current
session. model_class returns a 1 if a model of the specified model class exists.
Your template-based product stores the model class information in the model_class variable under all
models. Typical model classes include template, subsystem, and assembly.
Format
INT model_class_exists (STRING model_class)
filename String that contains the full path of the subsystem file.
Adams/Car 430
Arguments
Examples
i f condi t i on=( model _cl ass_exi st s( " assembl y" ) == 0)
! No Assembl i es !
end
subsystem_lookup
Definition
subsystem_lookup returns the subsystem contained in the assembled model with the specified major and
minor role. If no such subsystem exists, subsystem_lookup returns no object or NONE.
Format
OBJ ECT subsystem_lookup (OBJ ECT model, STRING major_role, STRING minor_role)
Arguments
Examples
var i abl e set var i abl e=f r ont _susp_subsyst em&
obj ect _val ue=( eval ( SUBSYSTEM_LOOKUP( . susp_assy, " suspensi on" ,
" f r ont " ) ) )
f r ont _susp_subsyst em= . susp_assy. TR_Fr ont _Suspensi on
subsystem_role_exists
Definition
subsystem_role_exists lets you easily determine if a subsystem of a particular role exists in an assembled
model. subsystem_role_exists returns a 1 if the assembled model contains such a subsystem. Your
template-based product stores the role information in the role variable that exists in each subsystem.
Format
INT subsystem_role_exists (OBJ ECT model, STRING role)
model_class String containing the model class.
model Name of the assembled model.
major_role String containing the major role to look up.
minor_role String containing the minor role to look up.
431
Customizing Your Product
Arguments
Examples
i f condi t i on=( subsyst em_r ol e_exi st s( . f veh_assembl y, " br ake_syst em" )
== 0)
! No Br akes !
end
Miscellaneous Functions
This topic lists utility functions that help you extend the Adams/View macro language. The functions
help you access information that is not easy to access using the standard Adams/View macro language.
You can use the utility functions in macros and in dialog boxes.
ac_info_mass
ac_info_mass
Definition
ac_info_mass computes the aggregate mass of the assembly.
Format
ac_info_mass(OBJ ECT model)
Arguments
Examples
var i abl e set var i abl e_name=t ot al _mass &
r eal _val ue=( EVAL( ac_i nf o_mass( . model _name) ) )
Organizing Custom Code
You can set up private and site repositories for storing:
Binaries that contain interface changes and macros
Libraries that contain linked subroutines and compiled functions
model Name of the assembled model.
role String containing the role to look up.
model Name of the assembled model.
Adams/Car 432
For example, when a group of users needs to access the same information or are working on the same
project, you can create a custom site repository. By having a site repository, they can share site-specific
versions of the template-based product and configuration files.
Also, a private repository is a convenient way for a single user to create several custom versions of a
template-based product or to work on different projects. Private locations let you create an unlimited
number of site binaries and libraries.
In the site or private repository, your template-based product creates a directory structure that mimics the
installation directory structure. The directory contains subdirectories for each platform for which you
created a binary or a library.
You control the location of the private repository using the privateDir setting. The privateDir setting tells
Adams where to locate the appropriate files and where to store the resulting files. The default location of
the private repository is as follows:
Default Location of Private Repository
Where $HOME represents your user home directory when you log on to your computer.
Defining Site Repositories
To define the site repository in UNIX:
In Adams Toolbar, change the siteDir setting in the Adams/Car preferences. For example,
change it to:
/ usr / peopl e/ someone/ acar _si t e
You can also change the siteDir setting using the Registry Shell Tool from the command line.
For example, at the command line enter:
mdi - c r t ool
set / MDI / ACar / Pr ef er ences/ si t eDi r / usr / peopl e/ someone/ acar _si t e
To define the site repository in Windows:
1. From the Start menu, point to Programs, point to MSC.Software, point to MD Adams R3, and
then select Adams - Settings.
2. Double-click the name of your product (ACar).
Product name: File name:
Adams/Car $HOME/acar_private
Note: The following procedures show how you can define the site and private repositories for
Adams/Car. Follow the same basic procedures to define the site repository for your
template-based product.
433
Customizing Your Product
3. Select Preferences.
4. To the right of siteDir, in the Value column, enter (or right-click to browse for) a directory path,
such as d:\acar_custom.
5. Select Apply or OK.
Defining Private Repositories
To define the private repository in UNIX:
In Adams Toolbar, change the privateDir setting in the Adams/Car preferences. For example,
change it to:
/ usr / peopl e/ someone/ new_pr i vat e
You can also change the privateDir setting using the Registry Shell Tool from the command
line. For example, at the command line enter:
mdi - c r t ool
set / MDI / ACar / Pr ef er ences/ pr i vat eDi r / usr / peopl e/ someone/ new_pr i vat e
To define the private repository in Windows:
1. From the Start menu, point to Programs, point to MSC.Software, point to MD Adams R3, and
then select Adams - Settings.
2. Double-click the name of your product (ACar).
3. Select Preferences.
4. To the right of siteDir, in the Value column, enter (or right-click to browse for) a directory path,
such as d:\acar_custom.
5. Select Apply or OK.
For more information on the directories, creating the binaries and libraries, and the Adams Toolbar, see
Running and Configuring Adams.
Adams/Car 434
Example Four-Post Analysis
Although this is an Adams/Car example, you can use the general concepts presented here to create a
macro for any template-based product.
Building and Running an Analysis: Teaches the expert user how to build and run a full-vehicle
analysis with the four-post test rig.
Creating and Running a Macro: Introduces the concepts of creating and running a macro for the
scenario given above.
Setting Up and Running an Analysis
Learn about building and running an analysis:
Extracting the Files
Test Description
Test Rig Description
Loading an Assembly with the Test Rig
Running a Test
Extracting the Files
To get started with the example four-post test rig, extract the files located in the directory
install_dir/acar/examples/fourpost (for example,
C:\MSC.Software\Adams\MDR2\acar\examples\fourpost). Then, use the file acar_build.cmd to create a
site binary that contains the test rig and corresponding macros. To create a site binary file that contains
the appropriate test rig and analysis macro files, you must perform the following steps:
1. Set the following environment variable to the location where your files are stored:
MDI_ACAR_SITE.
On Windows, it might look like:
C:\MSC.Software\Adams\MDR2\acar\examples\fourpost\customization_example.
On UNIX, it might look like:
/usr/MSC.Software/MDR2acar/examples/fourpost/customization_example.
Make sure you have write permissions within this directory.
2. Build the Adams/Car site binary file as follows:
On Windows: From the Start menu, point to Programs, point to MSC.Software, point to
MD Adams R3, and then select Adams - Command. In the command window, typeacar;
cr-sitebin
On UNIX: Type adamsmdr3; type acar, and then type cr-sitebin
Adams/Car automatically executes acar_build.cmd and builds all the appropriate entities and
libraries into a site version of the Adams binary file.
435
Customizing Your Product
3. To run the site binary file, follow the steps outlined above, but replace the cr-sitebin command
with ru-site.
Test Description
You can use the four-post test rig to investigate the vertical dynamics of the full vehicle and its
suspension systems. You can then plot the time-based results and study them in the frequency domain to
understand the various ride modes and their respective damping levels. The investigation will also help
you learn more about the influences of the vehicle's vertical dynamics effects on handling behavior by
studying the system's dynamic responses, which includes:
Front-to-rear modal balance
Suspension-to-body transfer function gain and phase
Suspension-to-tire transfer function gain and phase
Tire contact patch vertical load variation
The test involves assembling a standard full-vehicle model to a four-post test rig. The test rig is defined
by four parts representing the tire pads that support the vehicle. The tire pads are constrained to move
only in the vertical direction and a displacement actuator, or motion controller, controls their vertical
motion.
The only constraint between the pads and the vehicle's tires is the friction of the tires.
Not all tire models have adequate zero speed modeling for being used with the four-post rig test: a rolling
tire acts as a damper because the force response depends on tire slip speeds; a non-rolling tire should act
as a spring and forces must depend on tire deflection.
The following tire models support the four-post rig test:
PAC2002, in transient mode, USE_MODE >10
PAC-TIME, in transient mode, USE_MODE >10
PAC-MC, in transient mode, USE_MODE >10
UA-Tire, in transient mode, USE_MODE =2
Ftire
An analytical function controls the vertical actuators. Analytical functions also describe the
displacement profile of the actuator in the time domain and they are limited to constant amplitude
sinusoidal input that sweeps over a predetermined frequency range in a set amount of time. When using
the analytical function control, users can use four excitation modes:
Heave - All tire pads move vertically in phase.
Note: By default, the PAC2002 tire model is not used in the assembly packed in the examples
directory. The simulation will not succeed if the default Pacejka '89 tire is used.
Adams/Car 436
Pitch - The front tire pads move 180o out of phase with the rear tire pads.
Roll - The left tire pads move 180o out of phase with the right tire pads.
Warp - The left-front and right-rear tire pads move 180o out of phase with the right-front and
left-rear pads.
Test Rig Description
We created the test rig four_post_rig.tpl in Adams/Car Template Builder. Its major role is analysis and it
contains four general parts for each of the pads, and four actuators for each of the vertical translation
joints on each pad. The location of all of the pads and their respective constraints, such as actuators, are
parameterized in the ground plane (x and y) to a wheel-center location communicator that comes from
the suspension systems. The vertical location is parameterized to the z location of the marker std_tire_ref.
The marker std_tire_ref has its z height set automatically during the assembly process so that it represents
the average tire contact patch height of the vehicle.
Four-Post Test Rig
Loading an Assembly with the Test Rig
Once you have successfully built the site binary file and started the site version of Adams/Car, you must
open the assembly that we have also provided in the examples directory (cdb.cdb) mentioned in
Extracting the Files.
If you have not already added the database to your .acar.cfg file, you should do the following:
From the Tools menu, point to Database Management, and then select Add to Session.
437
Customizing Your Product

We recommend that you add the database to your configuration file. Otherwise, when you submit
an analysis, the solver does not know about this new database search path, and consequently will
not read the appropriate tire files.
Open the assembly contained in the cdb database as follows:
1. From the File menu, point to Open, and then select Assembly.
2. Open the MDI_Vehicle_4PostRig.asy.
You can also create a new assembly by doing the following:
1. From the File menu, point to New, and then select Full-Vehicle Assembly.
2. Select the appropriate subsystem files.
3. Change the vehicle test rig from __MDI_SDI_TESTRIG to __acme_4PostRig.
4. Select OK.
Running a Test
You should have a full-vehicle assembly mounted to the four-post test rig as shown next.
You can find these tires in the supplied database shipped in the examples directory. Failure to switch
these tires will result in a solver failure while trying to run an analysis.
Note: You must change the tires from Pacejka '89 model to one of the following tire models:
PAC2002, in transient mode, USE_MODE >10
PAC-TIME, in transient mode, USE_MODE >10
PAC-MC, in transient mode, USE_MODE >10
UA-Tire, in transient mode, USE_MODE =2
Ftire
Adams/Car 438
Because we have not provided a custom dialog box or interface to submit one of the tests outlined above,
you must use the autogenerated dialog box associated with the Command Navigator:
1. To open the Command Navigator, from the Tools menu, select cp10 Navigator.
2. To run a full-vehicle analysis with the four-post test rig, you must select acme ->analysis ->
full_vehicle ->four_post ->submit (double-click).
Adams/Car displays the following dialog box (without the values, which we added for your
convenience):
439
Customizing Your Product
3. After the analysis is completed, review the results using the animation and post-processing tools.
Creating and Running a Macro
This topic introduces the concepts of creating and running a macro. While many of the code excerpts are
contained in this topic, we also included the appropriate files in the examples directory
(install_dir\acar\examples\fourpost\customization_example\analysis\macros).
You can modify the macro in this directory and then rebuild it in to your Adams/Car site binary file. This
allows you to make changes and experiment with macro changes.
User-Input Parameters
About the Simulation Process
Creating the Macro
Adding the Four-Post Analysis Macro to a Binary
Testing the New Analysis Macro
Customizing the Four-Post Analysis Dialog Box
Adams/Car 440
User-Input Parameters
Analysis input parameters are the values that you enter to control a simulation or some other event in the
template-based products. Analysis input parameters can be grouped into two categories:
Parameters common to all analyses:
Output prefix
End time
Number of steps
Type of analysis (interactive, background)
Analysis log file (yes, no)
Parameters specific to this four-post test rig. You use the four-post simulation input parameters
to define the boundary conditions of the desired vertical excitation test. The parameters are:
Peak displacement
Displacement units (such as m, mm, inch)
Frequency range (units hardcoded to Hz)
Excitation mode (heave, pitch, roll, or warp)
About the Simulation Process
The following steps outline the simulation process. The simulation process for the vehicle and test rig is
similar to any other suspension or full-vehicle simulation.
The simulation process steps are:
1. Perform a check to ensure that the assembly has the correct test rig.
2. Check if an analysis of the same name already exists.
3. Read in the property files.
4. Assign the z location of the marker std_tire_ref based on the average contact patch location of all
of the tires to the four wheel pads.
5. Modify the analytical functions of the actuator (jms_left_front_actuator,
jms_right_front_actuator, and so on), according to the user-input data:
Based on the analytical drive signal, you must assign the following functions to each actuator:
Left Front - LF_phase*Peak_Amplitude*sin(1/2*360D*Freq_Range/End_Time*Time**2)
Right Front - RF_phase*Peak_Amplitude*sin(1/2*360D*Freq_Range/End_Time*Time**2)
Left Rear - LR_phase*Peak_Amplitude*sin(1/2*360D*Freq_Range/End_Time*Time**2)
Right Rear - RR_phase*Peak_Amplitude*sin(1/2*360D*Freq_Range/End_Time*Time**2)
where the following values are assigned to the phase variables in the function:
Heave Mode - LF_Phase, RF_Phase, LR_Phase, RR_Phase =1.0
Pitch Mode - LF_Phase, RF_Phase =1.0 & LR_Phase, RR_Phase =-1.0
441
Customizing Your Product
Roll Mode - LF_Phase, LR_Phase =1.0 & RF_Phase, RR_Phase =-1.0
Warp Mode - LF_Phase, RR_Phase =1.0 & RF_Phase, LR_Phase =-1.0
The simulation process involves submitting the simulation to Adams/Solver using a process similar to
the full-vehicle simulation process. The simulation needs:
One static equilibrium
An initial velocity of 0.0
A dynamic simulation equal to the end time (specified by user)
To avoid aliasing of the input during the simulation, users should set the maximum time step that the
integrator is allowed to take (HMAX argument on the integrator) to at least 1/10 of the maximum
frequency range. For example, if the frequency range you set is 20 Hz, then the HMAX should be
1/10*1/20 =1/200 (0.005).
Creating the Macro
This four-post vertical excitation example provides instructions to help you create your own macro based
on a given user scenario. The objective of the analysis is described in Test Description.
Creating the macro involves the following:
Defining Parameters
Handling Errors
Reading Property Files
Setting Up the Assembly and Test Rig
Submitting the Analysis
Logging the Analysis Results
Finishing up the Macro
Defining Parameters
We determined the parameters for the four-post analysis macro from User-Input Parameters (for a
description of the parameters whose values are important for the success of the four-post simulation, see
the table Parameter Descriptions):
! $assembl y: t =model
! $out put _pr ef i x: t =st r i ng
! $comment : t =st r i ng: d=" "
! $end_t i me: t =r eal : gt =0
! $number _of _st eps: t =i nt eger : gt =0
! $anal ysi s_mode: t =l i st ( i nt er act i ve, gr aphi cal , backgr ound) : d=i nt er act
i ve
! $peak_di spl acement : t =r eal : gt =0
! $uni t s: t =l i st ( mm) : d=mm
! $f r equency_r ange: t =r eal : gt =0
! $exci t at i on_mode: t =l i st ( heave, pi t ch, r ol l , war p) : d=heave
! $l oad_r esul t s: t =l i st ( yes, no) : u=yes
Adams/Car 442
! $l og_f i l e: t =l i st ( yes, no) : u=yes
! $er r or _var i abl e: t =var i abl e: d=. ACAR. var i abl es. er r or Fl ag
Parameter Descriptions
Handling Errors
With this macro, users must perform the four-post analysis with the .__acme_4PostRig test rig described
in Test Rig Description. The assembly and test rig perform actions based on the elements that exist in the
.__acme_4PostRig test rig. Therefore, as part of error checking, the macro checks for the correct test rig.
For a description of the setup of the assembly and test rig, see About the Simulation Process.
In addition to verifying that the user is using the correct test rig, the macro also checks if the analysis
name is unique for this assembly. Notice that we use indenting and comments to make the macro easier
to read; as with all programming languages, this is a good practice to get into.
var i abl e set var i abl e_name=$er r or _var i abl e i nt eger =0
! - - - - Check t o ensur e t he assembl y has t he pr oper t est r i g - - - -
i f condi t i on=( $assembl y. or i gi nal _t est r i g_name ! = " __acme_4Post Ri g" )
acar t ool ki t war ni ng &
w=" Anal ysi s cannot be submi t t ed! " , &
Parameter name: Description:
assembly String value that specifies an existing model. t=model; t specifies type;
examples could include real, integer, and so on.
output_prefix String value that specifies the name of the analysis. This name is used to write
the analysis files (.adm, .acf, and so on) to the file system and also when the
solver files are read back into Adams/Car.
comment Stores comments in the Adams dataset, d=" "; d specifies default, which is an
empty string.
end_time Real value that tells Adams/Solver the end time of the four-post analysis. gt=0;
gt specifies greater than.
number_of_steps Integer value that tells Adams/Solver the number of output steps.
analysis_mode String value that specifies the mode of the analysis. The three valid modes are
interactive, background, or graphical; the list specifies the valid options.
peak_displacement Indicates the maximum amplitude of the shaker pad vertical displacement.
units Hardcoded to millimeters for tutorial, but you can expand it to include other
units.
frequency_range Real value indicating the frequency range of the actuator motion functions.
excitation_mode List value that indicates the direction of the shaker pad motions.
load_results Specifies whether to load the results once Adams/Solver has finished the
analysis. The default is yes.
log_file Indicates if Adams/Car should generate an analysis log file.
443
Customizing Your Product
" The assembl y does not have t he pr oper t est r i g. Thi s anal ysi s onl y" , &
" wor ks wi t h assembl i es usi ng t he ' __acme_4Post Ri g' t est r i g. "
var i abl e set var i abl e_name=$er r or _var i abl e i nt eger =1
r et ur n
end
! - - - - Check i f anal ysi s name al r eady exi st s - - - -
i f condi t i on=( db_exi st s( " $assembl y. $' out put _pr ef i x' _f our post " ) )
i f condi t i on=( al er t ( " quest i on" , " An anal ysi s cal l ed
\ ' $' out put _pr ef i x' _f our post \ ' &
al r eady exi st s. Over wr i t e i t ?" , " Yes" , " No" , "" , 2) == 2)
var i abl e set var i abl e_name=$er r or _var i abl e i nt eger =1
r et ur n
end
end
Reading Property Files
After the macro validates the assembly, it reads in and assigns the property file information, using the
following code fragment:
! - - - - Cl ear out message wi ndow - - - -
acar t ool ki t message &
message=" " append=no di spl ay=no cl oseabl e=yes echo_t o_l ogf i l e=no
! - - - - Read pr oper t y f i l es - - - -
acar t ool ki t r ead pr oper t y_f i l es &
assembl y=$assembl y &
ver bose=yes &
er r or _var i abl e=$er r or _var i abl e
i f condi t i on=( $er r or _var i abl e ! = 0)
r et ur n
end
Setting Up the Assembly and Test Rig
In this section of the macro, you modify elements of the test rig and assembly to match the values and
information entered by the user.
The code fragments for the four-post setup are shown next, with a description for each section, as needed.
! - - - - Set up t he assembl y f or t he maneuver - - - -
acar t ool ki t message &
message=" Set t i ng up vehi cl e assembl y f or f our - post shaker . . . "
You must assign the tire reference markers to the appropriate test pad on the shaker table. The naming
conventions for the communicator variables for the reference markers are considered fixed, in that the
macro looks for the communicators known to exist in the four-post test rig. Note that the setup of the tire
Adams/Car 444
reference markers only occurs once for a particular assembly. If you use the same assembly for multiple
four-post analyses, the initial setup will be valid for each analysis.
For each wheel, the tire reference marker is assigned to a shaker pad. The first step is to find each tire in
the full-vehicle assembly. The reassignment occurs through an output communicator in the test rig. The
communicator holds the name of the part on the shaker pad where you should attach the tire reference
marker.
i f condi t i on=( ! db_exi st s( " $assembl y. f our post Set up" ) )
! - - - Par amet er i ze t he 4post pad hei ght t o t he gl obal r oad hei ght mar ker
j ust pr evi ousl y adj ust ed - - -
mar ker modi f y &
mar ker _name=$assembl y. t est r i g. gr ound. st d_t i r e_r ef &
l ocat i on=( $assembl y. gr ound. st d_t i r e_r ef . l ocat i on) &
r el at i ve_t o=$assembl y. t est r i g. gr ound
var i abl e set var i abl e=$_sel f . f r ont Wheel &
obj ect _val ue=( eval ( subsyst em_l ookup( $assembl y, " wheel ", " f r ont ") ) )
var i abl e set var i abl e=$_sel f . l ef t Fr ont Wheel &
obj ect _val ue=( eval ( db_f i l t er _name( db_chi l dr en( $_sel f . f r ont Wheel [ 1] , " ac_t i
r e" ) , " t i l _*" ) ) )
var i abl e set var i abl e=$_sel f . r i ght Fr ont Wheel &
obj ect _val ue=( eval ( db_f i l t er _name( db_chi l dr en( $_sel f . f r ont Wheel [ 1] , " ac_t i
r e" ) , " t i r _*" ) ) )
var i abl e set var i abl e=$_sel f . r ear Wheel &
obj ect _val ue=( eval ( subsyst em_l ookup( $assembl y, " wheel ", " r ear " ) ) )
var i abl e set var i abl e=$_sel f . l ef t Rear Wheel &
obj ect _val ue=( eval ( db_f i l t er _name( db_chi l dr en( $_sel f . r ear Wheel [ 1] , " ac_t i r
e" ) , " t i l _*" ) ) )
var i abl e set var i abl e=$_sel f . r i ght Rear Wheel &
obj ect _val ue=( eval ( db_f i l t er _name( db_chi l dr en( $_sel f . r ear Wheel [ 1] , " ac_t i r
e" ) , " t i r _*" ) ) )
mar ker modi f y &
mar ker _name=( eval ( $_sel f . l ef t Fr ont Wheel . obj ect _val ue. r ef _mar ker . obj ect _va
l ue) ) &
new_mar ker _name=
( eval ( $assembl y. t est r i g. col _f r ont _pad_mount [ 1] / / " . " / / $_sel f . l ef t Fr ont Wheel . o
bj ect _val ue. r ef _mar ker . obj ect _val ue. name) )
mar ker modi f y &
mar ker _name=( eval ( $_sel f . r i ght Fr ont Wheel . obj ect _val ue. r ef _mar ker . obj ect _v
al ue) ) &
new_mar ker _name=( eval ( $assembl y. t est r i g. cor _f r ont _pad_mount [ 1] / /
" . " / / $_sel f . r i ght Fr ont Wheel . obj ect _val ue. r ef _mar ker . obj ect _val ue. name) )
mar ker modi f y &
mar ker _name=( eval ( $_sel f . l ef t Rear Wheel . obj ect _val ue. r ef _mar ker . obj ect _val
ue) ) &
new_mar ker _name=( eval ( $assembl y. t est r i g. col _r ear _pad_mount [ 1] / / " . " / / $_sel
f . l ef t Rear Wheel . obj ect _val ue. r ef _mar ker . obj ect _val ue. name) )
mar ker modi f y &
mar ker _name=( eval ( $_sel f . r i ght Rear Wheel . obj ect _val ue. r ef _mar ker . obj ect _va
l ue) ) &
new_mar ker _name=( eval ( $assembl y. t est r i g. cor _r ear _pad_mount [ 1] / / " . " / / $_sel
f . r i ght Rear Wheel . obj ect _val ue. r ef _mar ker . obj ect _val ue. name) )
var i abl e set var i abl e=$assembl y. f our post Set up &
i nt eger _val ue=1
end
You must reset the motion actuators driving the displacement of the shaker pads for each individual four-
post analysis. This is in contrast to the tire reference marker setup, described in the previous paragraphs,
445
Customizing Your Product
which needs to occur only once for a particular assembly, and remains valid for all successive four-post
analyses.
Each of the four shaker pads will have the same magnitude of motion, but a specific excitation mode will
determine the direction of the motion:
Heave mode - All four shaker pads move in the same direction.
Pitch mode - The front and rear tires move in opposite directions.
Roll mode - The left and right tires move in opposite directions.
Warp mode - The left front and right rear tires move opposite to the direction traveled by the
right front and left rear tires.
You set the different excitation modes by specifying a 1 or -1 multiplier at the beginning of the actuator
function definition, as shown next:
! - - - - Assi gn act uat or f unct i ons based on exci t at i on mode - - - -
! - Heave Exci t at i on
i f condi t i on=( " $exci t at i on_mode" == " heave" )
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _f r ont _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _f r ont _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _r ear _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _r ear _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
! - - Pi t ch Exci t at i on
el sei f condi t i on=( " $exci t at i on_mode" == " pi t ch" )
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _f r ont _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _f r ont _act uat or &
f unct i on="1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _r ear _act uat or &
f unct i on="-
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _r ear _act uat or &
f unct i on="-
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
! - - Rol l Exci t at i on
el sei f condi t i on=( " $exci t at i on_mode" == " r ol l " )
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _f r ont _act uat or &
Adams/Car 446
f unct i on=" 1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _f r ont _act uat or &
f unct i on=" -
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _r ear _act uat or &
f unct i on=" 1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _r ear _act uat or &
f unct i on=" -
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
! - - War p Exci t at i on
el sei f condi t i on=( " $exci t at i on_mode" == " war p")
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _f r ont _act uat or &
f unct i on=" 1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _f r ont _act uat or &
f unct i on=" -
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_l ef t _r ear _act uat or &
f unct i on=" -
1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i me*t i me**2) "
acar t empl at e_bui l der act uat or set f unct i on &
act uat or =$assembl y. t est r i g. j ms_r i ght _r ear _act uat or &
f unct i on=" 1*$peak_di spl acement *si n( . 5*360d*$f r equency_r ange/ $end_t i m
e*t i me**2) "
end
Submitting the Analysis
After the macro sets up the assembly, you set up the macro to submit the assembly for the four-post
analysis. Since this is a full-vehicle assembly, you use the corresponding full-vehicle submission utility
macro. Note that the syntax for calling this macro is practically the same as that used in the standard
Adams/Car full-vehicle analyses. In this case, two additional parameters are specified to have non-
default values for the four-post simulation: generate_road_geometry and simulation_type.
The following shows the code fragment for calling the full-vehicle submission utility macro:
! - - - - Per f or mt he anal ysi s - - - -
acar anal ysi s f ul l _vehi cl e submi t &
assembl y=$assembl y &
anal ysi s_name=" $' out put _pr ef i x' _f our post " &
end_t i me=$end_t i me &
number _of _st eps=$number _of _st eps &
anal ysi s_mode=$anal ysi s_mode &
l oad_r esul t s=$l oad_r esul t s &
br i ef =$br i ef &
r oad_dat a_f i l e=" BEDPLATE" &
gener at e_r oad_geomet r y=no &
si mul at i on_t ype=f our post
447
Customizing Your Product
The following table describes the important parameters associated with the four-post full-vehicle
submission macro.
Logging the Analysis Results
Once the analysis completed, the macro logs the results to a file. In addition, you can set up the macro
so it displays final diagnostic messages to the message window, as follows:
i f condi t i on=( $l og_f i l e)
acar anal ysi s f ul l _vehi cl e l og &
assembl y=$assembl y &
anal ysi s_name=" $' out put _pr ef i x' _f our post " &
anal ysi s_t ype=" Four Post Shaker Test " &
anal ysi s_l og_f i l e=" $' out put _pr ef i x' _f our post . l og" &
comment =$comment &
end_t i me=$end_t i me &
number _of _st eps=$number _of _st eps &
r oad_dat a_f i l e=" BEDPLATE" &
i ni t i al _vel oci t y=0. 0 &
vel oci t y_uni t s=" m_sec" &
i nput _par amet er s=" gener al i nput " &
par amet er _val ues=( " $number _of _st eps" )
end
i f condi t i on=( " $anal ysi s_mode" ! = " backgr ound" )
acar t ool ki t message &
message=" Si mul at i on i s compl et e. "
end
Finishing up the Macro
Delete all local variables created in the macro using the $_self nomenclature:
var i abl e del et e var i abl e_name=( eval ( db_chi l dr en( $_sel f , " var i abl e" ) ) )
Parameter name: Description:
load_results String value that specifies if the results of the analysis should be read in
after the analysis is complete. Expected values are yes or no.
road_data_file Hardcoded to BEDPLATE to indicate that the car will not be driven across
a road surface. Adams/Car internally interprets and understands this
hardcoded value.
generate_road_geometry Set to no to indicate that Adams/Car should not generate a geometric
representation of the data found in the road_data_file.
simulation_type Hardcoded to fourpost to indicate that the full-vehicle will be attached to
a four-post shaker table. Adams/Car internally interprets and understands
this hardcoded value to produce the correct .adm and .acf files.
Adams/Car 448
Adding the Four-Post Analysis Macro to a Binary
You can add the four-post analysis macro to either the private or site binary. The command shown next
creates the macro by reading in the command file found at the location you specified. Place the command
in the file acar_build.cmd as described in Configuring Your Product.
macr o r ead macr o_name=. acme. macr os. mac_ana_f ul _f ou &
f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / anal ysi s/ macr os/ mac_ana_f ul _f ou_s
ub. cmd") &
user _ent er ed_command=" acme anal ysi s f ul l _vehi cl e f our _post submi t " &
wr ap_i n_undo=no &
cr eat e_panel =no
Testing the New Analysis Macro
The easiest way to test the four-post analysis macro is to access it from the Command Navigator. The
command you should use is the user_entered_command specified in the acar_build.cmd file shown in
Adding the Four-Post Analysis Macro to a Binary.
When you access the four-post macro from the Command Navigator, Adams/Car automatically creates
a dialog box based on the parameters in the macro. Users can use this dialog box, shown next, to execute
the macro and submit the four-post analysis.
449
Customizing Your Product
Macro-Generated Dialog Box
Customizing the Four-Post Analysis Dialog Box
Now that you created the four-post analysis macro, the custom graphical interface is also almost
complete. When you access the four-post macro using the Command Navigator, Adams/Car displays a
default dialog box associated with that macro, as shown in figure Macro-Generated Dialog Box. Compare
this dialog box to the one shown in figure Customized Dialog Box. The customized dialog box illustrates
an example of what you might want to do with the default dialog box generated using the Command
Navigator:
Change the dialog box title.
Remove the Comments and Error Variable text boxes (they will take on their default values as
defined in the macro).
Modify the Load Results pull-down menu to be radio boxes, and then decrease the area they
occupy.
Shorten the Brief and Log File pull-down menus to match the Load Results radio boxes.
Adams/Car 450
Learn about customizing the interface.
Customized Dialog Box

You can add the four-post custom dialog box to either the private or site binary (or interactively read it
in during your Adams/Car session). The command shown next creates the dialog box by reading in the
command file found at the location you specify or we have provided an example dialog box in the
examples directory (install_dir\acar\examples\fourpost\customization_example\analysis\dboxes).
We have also provided dboxes_ana.cmd in the example, which contains the following code.
You must place these commands either in the acar_build.cmd file as described in Configuring Your
Product or place a command in the macros_ana.cmd file to read the dboxes_ana.cmd file.
! - - - - Check i f di al og box exi st s and del et e i t i f i t does - - - -
i f condi t i on=( db_exi st s( " . acar . dboxes. dbox_ana_f ul _f ou_sub" ) )
i nt er f ace di al og_box del et e
di al og_box_name=. acar . dboxes. dbox_ana_f ul _f ou_sub
end
! - - - - Read t he Foui r Post shaker di al og box - - - -
451
Customizing Your Product
f i l e command r ead &

f i l e_name=( get env( " MDI _ACAR_SI TE" ) / / " / anal ysi s/ dboxes/ dbox_ana_f ul _f ou_sub. c
md" )
! - - - - Check i f menu but t on exi st s and del et e i t i f i t does - - - -
i f
condi t i on=( db_exi st s( " . gui . mai n. aca_st a_mbar . si mul at e. f ul l _vehi cl e_anal ysi s.
ACME_Four Post " ) )
i nt er f ace push_but t on del et e &
push_but t on_name =
. gui . mai n. aca_st a_mbar . si mul at e. f ul l _vehi cl e_anal ysi s. ACME_Four Post
end
! - - - - Add a menu opt i on - - - -
i nt er f ace push_but t on cr eat e &
push_but t on_name =
. gui . mai n. aca_st a_mbar . si mul at e. f ul l _vehi cl e_anal ysi s. ACME_Four Post &
enabl ed = yes &
hel p_t ext = " Si mul at e a f ul l - vehi cl e on t he ACME Four Post t est r i g" &
uni t s = r el at i ve &
hor i z_r esi zi ng = scal e_al l &
ver t _r esi zi ng = scal e_al l &
l ocat i on = 0. 0, 0. 0 &
l abel = " &ACME Four post . . . " &
commands = " i nt er f ace di al og_box di spl ay
di al og=. acar . dboxes. dbox_ana_f ul _f ou_sub" &
def aul t = f al se
Adams/Car 452
Adams/Car Ride
Adams/Car Ride

12
Welcome to Adams/Car Ride
Adams/Car Ride, part of the MD Adams R3

suite of software, is a plugin to Adams/Car. You can use


Adams/Car Ride to model and simulate the ride quality of ground vehicles. It contains modeling elements
important for ride quality that you can use in Adams/Car models. You can also analyze the modeling
elements independently from other systems using a modeling-element test rig.
In addition, Adams/Car Ride includes a four-post test rig for four-wheeled Adams/Car vehicle models.
The four-post test rig supports a variety of time-domain analyses, as well as frequency-domain analyses
with Adams/Vibration.
About Adams/Car Ride
Using Adams/Car Ride, you can quickly create Adams/Car assemblies of suspensions and full vehicles,
including Adams/Car Ride-provided components important for ride quality, and then analyze them to
understand their performance and behavior.
The Adams/Car Ride components are:
Monroe damper
Hydromount
Frequency-dependent bushing
You can analyze each component independently from other systems using a component test rig. You can
also use a parameter identification tool for the hydromount component, to quickly determine model
parameters that will accurately reproduce test data.
Using the Adams/Car Ride four-post test rig for four-wheeled Adams/Car vehicle models you can
simulate a vehicle traveling over a rough road or simulate a vehicle on a real four-post shaker test
machine. You can play displacement or force RPC III file data into the test rig, make your own bumps
with table-lookup functions and drive over them, or create and drive over a road-profile surface using a
mathematical model for generating road roughness. In the time domain, the four-post test rig also
supports sinusoidal sweeps (displacement, velocity, acceleration, or force) and arbitrary Adams/Solver
functions.
Benefits of Adams/Car Ride
Adams/Car Ride enables you to work faster and smarter, letting you have more time to study and
understand how design changes affect vehicle performance.
Using Adams/Car Ride you can:
Explore the performance of your design and refine your design before building and testing a
physical prototype.
Analyze design changes much faster and at a lower cost than physical prototype testing would
require. For example, you can change springs with a few mouse clicks instead of waiting for a
mechanic to install new ones in your physical prototype before re-evaluating your design.
13
Adams/Car Ride
Vary the kinds of analyses faster and more easily than if you had to modify instrumentation, test
fixtures, and test procedures.
Work in a more secure environment without the fear of losing data from instrument failure or
losing testing time because of poor weather conditions.
Run analyses and what-if scenarios without the dangers associated with physical testing.
Perform a repeatable set of tests on a global basis, ensuring that you work with common data,
tests, and, most important, results.
Starting Adams/Car Ride
Because Adams/Car Ride is a plugin to Adams/Car, you first start Adams/Car and then load Adams/Car
Ride.
In the Windows environment, you start Adams/Car from the Start button. In the UNIX environment, you
start Adams/Car from the Adams Toolbar. For information, see the Running and Configuring online help.
To start Adams/Car Ride:
1. Start Adams/Car as explained in Starting Adams/Car.
2. From the Tools menu, select Plugin Manager.
3. In the list of plugin names, find Adams/Car Ride, and then select one or both of the following:
Load - Loads Adams/Car Ride in the current session.
Load at Startup - Instructs Adams/Car to load Adams/Car Ride in all future Adams/Car
sessions.
4. Select OK.
Adams/Car loads Adams/Car Ride. The interface now includes a new menu, Ride.
Adams/Car Ride

14
Running Analyses
Introducing Analyses
Adams/Car Ride allows you to create virtual prototypes of vehicle subsystems, and analyze the virtual
prototypes much like you would analyze the physical prototypes.
Using Adams/Car Ride to analyze a virtual prototype is much like requesting a test of a physical
prototype. When testing in Adams/Car Ride, you specify the following:
The virtual prototype to be tested - You specify the virtual prototype by opening or creating an
assembly that contains the appropriate components, or subsystems, that make up the prototype.
For example, you create a full-vehicle assembly containing suspension, steering, body, brakes,
wheels, and so on.
The kind of analysis you'd like performed - Depends on the type of model and test rig that you
have opened. You can perform analyses of components (using the component test rig), fourpost
and vibration analyses (using the fourpost test rig).
The analysis inputs to be used - You specify the inputs to the analysis by typing them directly
into an analysis dialog box or by selecting a loadcase file that contains the desired inputs from an
Adams/Car Ride database. Learn about loadcase files.
After specifying the prototype assembly and its analysis, Adams/Car Ride, like your companys testing
department, applies the inputs that you specified and records the results. To understand how your
prototype behaved during the analysis, you can plot the results. After viewing the results, you can modify
the prototype and analyze it again to see if your modifications improved its behavior.
Each kind of analysis that you perform requires a minimum set of subsystems. For example, a full-vehicle
analysis requires front and rear suspension subsystems, front and rear wheel subsystems, one steering
subsystem, and one body subsystem. Before you can create an assembly and perform an analysis in
Adams/Car Ride, you must open or create the minimum set of subsystems required.
Setting up Component Analyses
You can use a component analysis to calculate the dynamic stiffness and loss angle of a frequency-
dependent bushing or damper.
To set up a component analysis:
1. From the Ride menu, point to Component Analysis, and then select Component-Model Test
Rig.
2. Press F1 and then follow the instructions in the dialog box help for Component Analysis.
3. Select OK.
Setting up Full-Vehicle Analyses
You can use a full-vehicle analysis to investigate a car's ride-quality characteristics.
15
Adams/Car Ride
To set up a full-vehicle analysis:
1. From the Ride menu, point to Full-Vehicle Analysis, and then select Four-Post Test Rig.
2. Press F1 and then follow the instructions in the dialog box help for Full-Vehicle Analysis:
ARIDE_FOUR_POST_TESTRIG.
3. Select OK.
Setting up Full-Vehicle Vibration Analyses
You can use a full-vehicle vibration analysis to analyze the behavior of your linearized vehicle model in
the frequency domain. This includes analyses of vibration transmission frequency responses, natural
frequencies, mode shapes, and damping ratios.
To set up a vibration full-vehicle analysis:
1. From the Ride menu, point to Full-Vehicle Vibration Analysis, and then select Four-Post Test
Rig.
2. Press F1 and then follow the instructions in the dialog box help for Full-Vehicle Vibration Analysis:
ARIDE_FOUR_POST_TESTRIG.
3. Select OK.
Controlling Analysis Output Files
Your template-based product lets you control the type and content of files an analysis outputs. You can
specify whether an analysis outputs a graphics file or results file. Graphics files contain time-dependent
data describing the position and orientation of each part in the model. Results files contain a basic set of
state variable information that Adams/Solver calculates during a simulation.
Your template-based product automatically reads the files that an analysis outputs.
If any subsystems within the assembly being analyzed contain flexible bodies, your template-based
product automatically outputs a results file, regardless of the specifications you made.
To specify analysis output files:
1. From the Settings menu, point to Solver, and then select Output Files.
The Output Files dialog box appears.
2. Select the types of files you want to output.
3. Select OK.
Setting up Full-Vehicle A2N Analyses (MKB matrices export to
Nastran)
You can use a full-vehicle a2n analysis for exporting to Nastran the Mass, Stiffness and Damping
matrices of your linearized vehicle model in order to provide a Modal and/or Frequency Response
Adams/Car Ride

16
Analysis in the Fe code. Referring to Adams/Vibration help for full details, using Adams/Vibration
Adams2Nastran (A2N) feature, you can define the operating point at which exporting the Mass, Stiffness
and Damping matrices of the full linearized model and then performing Nastran modal or frequency
response analysis: the operating point has been achieved running Adams/Solver, taking into account all
the nonlinearities of the system and with the possibility to easily change any parameter or variable for
exploring different model configuration and, consequently, to easily recreate full Nastran equivalent
model. The Mass, Stiffness and Damping matrices are exported as Nastran DMIG and connected to the
system using MPC (Multi Point Constraint) while the location of input channels and output channels
(Adams Markers) are exported as Nastran GRIDs and generalized degrees of freedom as SPOINTs.
The feature is limited in the sense that A2N input and output channels are automatically created, located
and defined and the user can only decide actuator force values and phases, type of Nastran analysis
(Modal or FRF), and how many Nastran subcases have to be created.
It has been provided an embedded and limited solution principally for showing the capability of
Adams2Nastran feature. A more complete solution will be provided with the next Adams releases.
To set up a A2N full-vehicle analysis:
1. From the Ride menu, point to Full-Vehicle Vibration Analysis, and then select MKB matrices
export.
2. Press F1 and then follow the instructions in the dialog box help for Full-Vehicle A2N setup: Four
Poster_Testrig.
3. Select OK.
Ride Index ISO 2631-1:1997(E)
It has been proven that vibration results in musculoskeletal disorders of the hand and arms, the neck and
the back. There are two types of occupational vibration: segmental and whole body. Segmental vibration
is transmitted through the hands and arms, while to whole body vibration (WBV) is transmitted through
the body's supporting surfaces such as the legs, the back and the buttocks. Human bodies are exposed to
WBV from various sources such as standing on a vibration platform, floor surface, driving, construction,
manufacturing and transportation. Along with musculoskeletal problems, exposure to occupational
whole body vibration also presents a health risk to the psychomotor, physiological, and psychological
systems of the body.
The primary purpose here is to provide computational means for quantifying WBV as described in ISO
2631/1 procedure in relation to: human health, comfort and perception. Response to WBV depends on
the frequency of vibration, acceleration (or magnitude) of vibration, number of contact points and the
exposure time.
Frequency weighting of acceleration spectra: To calculate frequency weighted RMS acceleration,
RIDE_WARMS (RIDE Weighted Acceleration RMS) function is implemented in Adams/Car Ride plug-
in. This function is part of Adams expression builder and is listed under miscellaneous category. The use
cases and calling syntax for health, comfort and perception are listed below.
RIDE_WARMS (ARRAY, ARRAY, ARRAY, ARRAY, ARRAY): The first real array is time or
frequency sampling, second, third and fourth real arrays is acceleration signals at given location (feet,
17
Adams/Car Ride
sheet or back rest) in three directions X, Y and Z respectively. The array size of these first four real arrays
should be same.
The orientation of marker at given location should strictly follow the ISO guidelines for basicentric axes
of the human body and the acceleration signals should be strictly passed to RIDE_WARMS in above
specified order. The last character array (called Logic henceforth) is the key to select weighting curves
and telling program about the domain of sampled data point (FREQ: Frequency, TIME: Time). The
following example will give more insight in the function:
Example for Health:
Seat Surface: Logic ={"TIME", "Wd", "Wd", "Wk"}
Seat Back: Logic ={"TIME", "Wc", "Wu", "Wu"}
Feet: Logic ={"TIME", "Wu", "Wu", "Wu"}
Example for Comfort:
Seat Surface: x-y-z axis Logic ={"TIME", "Wd", "Wd", "Wk"}
Seat Surface: rx-ry-rz axis Logic ={"TIME", "We", "We", "We"}
Seat Back: Logic ={"TIME", "Wc", "Wd", "Wd"}
Feet (sitting): Logic ={"TIME", "Wk", "Wk", "Wk"}
Standing Vertical Recumbent (except head): Logic ={"TIME", "Wu", "Wu", "Wk"}
Standing Horizontal Recumbent: Logic ={"TIME", "Wd", "Wd", "Wu"}
Vertical recumbent (head): Logic ={"TIME", "Wj", "Wj", "Wj"}
Vertical recumbent (head, under pelvis): Logic ={"TIME", "Wk", "Wd", "Wd"}
Example for Perception:
Seat Surface: x-y-z axis Logic ={"TIME", "Wd", "Wd", "Wk"}
Seat Surface: rx-ry-rz axis Logic ={"TIME", "We", "We", "We"}
Seat Back: Logic ={"TIME", "Wc", "Wu", "Wu"}
Standing Vertical Recumbent (except head): Logic ={"TIME", "Wu", "Wu", "Wk"}
Standing Horizontal Recumbent: Logic ={"TIME", "Wd", "Wd", "Wu"}
Vertical recumbent (head): Logic ={"TIME", "Wj", "Wj", "Wj"}
Vertical recumbent (head, under pelvis): Logic ={"TIME", "Wk", "Wd", "Wd"}
This function returns the real array of size four. The components of this return array are: The first
component of this array is weighted acceleration vector sum of signal. The next three components are
simply frequency weighted RMS acceleration values in three orthogonal directions X, Y and Z. You can
directly use these returned real array as input to RIDE_INDEX function as discussed below.
Combining vibrations in more than one direction:
The vibration total value (PVTV: Point Vibration Total Value and OVTV: Overall Vibration Total Value)
of weighted acceleration, determined from vibration co-ordinate can be calculated using RIDE_INDEX
function that is implemented in Adams/Car Ride plug-in. This function is part of Adams expression
builder and is listed under miscellaneous category. The use cases and calling syntax for health, comfort
and perception are listed below.
RIDE_INDEX (ARRAY, ARRAY, ARRAY, ARRAY, ARRAY): The first three real arrays list
frequency weighted acceleration RMS values at three different locations (feet, seat and back rest) in three
different directions X, Y and Z respectively. The first component of every first three array is weighted
Adams/Car Ride

18
acceleration vector sum of signal. The next three components are simply frequency weighted RMS
acceleration values in three orthogonal directions X, Y and Z. The array size of these first three real arrays
should be four. You can directly use the return array of function RIDE_WARMS as input for these first
three arrays. The fourth real array should be of size twelve and lists multiplying factors kx, ky and kz as
suggested in ISO document for every location in the sequence feet, seat, back-rest and for OVTV
respectively. The last string array should be of size greater than one. The RIDE_INDEX function is smart
enough to return the real array of same size of this last array. The components of this last string array are
listed here and you can pass them in any order you like:
MAX_WARMS: Returns maximum component value out of first three arrays
MIN_WARMS: Returns minimum component value out of first three arrays
PVTV_FEET: Returns vibration total value of weighted RMS acceleration at feet location
PVTV_SEAT: Returns vibration total value of weighted RMS acceleration at seat location
PVTV_BACK: Returns vibration total value of weighted RMS acceleration at seat back location
OVTV: Returns overall vibration total value
To calculate Ride Index for Full-Vehicle Analysis:
1. From the Ride menu, point to Full-Vehicle Analysis, and then select ISO Ride index.
2. Press F1 and then follow the instructions in the dialog box help for ISO Ride Index.
3. Select OK.
To calculate Ride Index for Full-Vehicle Vibration Analysis:
1. From the Ride menu, point to Full-Vehicle Vibration Analysis, and then select ISO Ride index.
2. Press F1 and then follow the instructions in the dialog box help for ISO Ride Index.
3. Select OK.
Examples of Ride Index
Example 1
Time domain health analysis: zero contribution from X and Y direction
{a} = RIDE_WARMS(
CREATE_ARRAY (0.0, 0.125, 1.0),
ZEROA (9),
ZEROA (9),
SINA (CREATE_ARRAY (0.0, 45.0, 360.0), 1.0),
{"TIME", "Wd", "Wd", "Wk"}
)
{a} ={aVRMS, aXRMS, aYRMS, aZRMS}
Example 2
Time domain health analysis by considering back-rest effect: zero contribution from feet,
sine curve in Z direction and cosine curve at X and Y directions at seat.
19
Adams/Car Ride
{a} =RIDE_INDEX( RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
ZEROA (9),
ZEROA (9),
ZEROA (9),
{"TIME", "Wu", "Wu", "Wu"}),
RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
COSA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
COSA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
SINA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
{"TIME", "Wd", "Wd", "Wk"}),
RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
ZEROA (9),
ZEROA (9),
ZEROA (9),
{"TIME", "Wc", "Wu", "Wu"}),
{1.0, 1.0, 1.0,
1.4, 1.4, 1.0,
1.0, 1.0, 1.0,
1.0, 1.0, 1.0},
{"PVTV_SEAT"}
)
OR
{a} =RIDE_INDEX( RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
ZEROA (9),
ZEROA (9),
ZEROA (9),
{"TIME", "Wu", "Wu", "Wu"}),
RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
COSA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
COSA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
SINA (CREATE_ARRAY(0.0,45.0,360.0),1.0),
{"TIME", "Wd", "Wd", "Wk"}),
RIDE_WARMS (CREATE_ARRAY (0.0, 0.125, 1.0),
ZEROA (9),
ZEROA (9),
ZEROA (9),
{"TIME", "Wc", "Wu", "Wu"}),
{1.0, 1.0, 1.0,
1.4, 1.4, 1.0,
1.0, 1.0, 1.0,
Adams/Car Ride

20
1.0, 1.0, 1.0},
{"PVTV_SEAT", "PVTV_SEAT", "PVTV_FEET",
"MAX_WARMS", "MIN_WARMS", "OVTV"}
)
Example 3
Other useful functions to create 1/3 octave frequencies and validate ISO weighting curves
{fc} =POWA (CREATE_ARRAY (-17/3, 1/3, 26/3), 2.0) OR
{fc} =POWA (CREATE_ARRAY (-17, 1, 26), 2.0^(1/3))
{Wk} =RIDE_WEIGHTING ({fc},"Wk")
{Wd} =RIDE_WEIGHTING ({fc},"Wd")
Remarks:
1. You can pass SPLINES for experimental data and/or arrays form simulation that you get after
four-post simulation of full vehicle assembly.
2. The data passed to these functions must be in MKS units
3. The OVTV for translation and rotation should be calculated separately.
21
Adams/Car Ride
Examples of Using Adams/Car Ride
The following Adams/Car Ride examples are available:
Getting Started Using Adams/Car Ride
Example Input Hydromount Property File
Example Output Hydromount Property File
Adams/Car Ride

22
Working with Components
General Frequency-Dependent Element
Component Name
ac_general_f_d_element
Source Directory
/$MDI_RIDE_PLUGIN/template_builder/udes/ac_general_f_d_element
Description
This component is a six degrees-of-freedom force, having each component modeled by three linear
springs and three linear dampers; the elements of the single component can be connected in different
ways and eventually deactivated to create the following:
1. Linear Pfeffer element (one spring in parallel with a series damper - parallel spring damper)
2. Simple FD damper (one spring in parallel with a series spring damper)
3. Simple FD bushing (one spring in series with a parallel spring damper)
4. General element (one parallel spring damper in parallel with a series of two parallel spring
dampers)
You can also specify a preload for each force component.
Using the replace feature in Standard Interface, you can create a general frequency-dependent element as
a replacement for a standard Adams/Car bushing. In the replacement element dialog box, select a
property file, setting preload, and activity for each component.
Specifications
.ARIDE.forcess.ac_general_f_d_element
Parameters
Parameter: Type: Function:
property_file string variable Name of property file
X_type string variable X component element type
T_preload_x real variable Element translational preload x
X_C1 real variable
Adams/Car Ride

16
X_K1 real variable
X_C2 real variable
X_K2 real variable
X_C3 real variable
X_K3 real variable
Y_type string variable Y component element type
T_preload_y real variable Element translational preload y
Y_C1 real variable
Y_K1 real variable
Y_C2 real variable
Y_K2 real variable
Y_C3 real variable
Y_K3 real variable
Z_type string variable Z component element type
T_preload_z real variable Element translational preload z
Z_C1 real variable
Z_K1 real variable
Z_C2 real variable
Z_K2 real variable
Z_C3 real variable
Z_K3 real variable
AX_type string variable AX component element type
R_preload_x real variable Element rotational preload x
AX_C1 real variable
AX_K1 real variable
AX_C2 real variable
AX_K2 real variable
AX_C3 real variable
AX_K3 real variable
AY_type string variable AY component element type
R_preload_y real variable Element rotational preload y
AY_C1 real variable
AY_K1 real variable
Parameter: Type: Function:
17
Adams/Car Ride
Input Parameters
Output Parameters
none
AY_C2 real variable
AY_K2 real variable
AY_C3 real variable
AY_K3 real variable
AZ_type string variable AZ component element type
R_preload_z real variable Element rotational preload z
AZ_C1 real variable
AZ_K1 real variable
AZ_C2 real variable
AZ_K2 real variable
AZ_C3 real variable
AZ_K3 real variable
X_active integer variable
Y_active integer variable
Z_active integer variable
AX_active integer variable
AY_active integer variable
AZ_active integer variable
I_geo_marker object variable
J _geo_marker object variable
geo_radius real variable
geo_length real variable
Bushing_jfloat object variable
Input parameter: Type: Function:
i_marker object variable Action marker
j_marker object variable Reaction marker
Parameter: Type: Function:
Adams/Car Ride

18
Objects:
Request Definition
disp_request
Object: Type:
Force single_component_force
Gse general_state_equation
U_var_x state variable
U_var_y state variable
U_var_z state variable
U_var_ax state variable
U_var_ay state variable
U_var_az state variable
State_array X_state_array
Output_array Y_output_array
Ic_array IC_array
Input_array U_input_array
KC_array IC_array
Disp_Request request
Velo_Request request
Acc_Request request
Force_Request request
Component name: Component units: Definition:
DX Length Distance between i_marker and j_marker
along j_marker X
DY Length Distance between i_marker and j_marker
along j_marker Y
DZ Length Distance between i_marker and j_marker
along j_marker Z
AX Angle Angle between i_marker and j_marker X
AY Angle Angle between i_marker and j_marker Y
AZ Angle Angle between i_marker and j_marker Z
19
Adams/Car Ride
velo_request
acc_request
Component name: Component units: Definition:
VX Velocity Relative velocity between i_marker and
j_marker along j_marker X
VY Velocity Relative velocity between i_marker and
j_marker along j_markerY
VZ Velocity Relative velocity between i_marker and
j_marker along j_marker Z
WX Angular Velocity Relative angular velocity between i_marker
and j_marker X
WY Angular Velocity Relative angular velocity between i_marker
and j_marker Y
WZ Angular Velocity Relative angular velocity between i_marker
and j_marker Z
Component name: Component units: Definition:
AX Acceleration Relative acceleration between
i_marker and j_marker along j_marker
X
AY Acceleration Relative acceleration between
i_marker and j_marker along j_marker
Y
AZ Acceleration Relative acceleration between
i_marker and j_marker along j_marker
Z
WDTX Angular Acceleration Relative angular acceleration between
i_marker and j_marker X
WDTY Angular Acceleration Relative angular acceleration between
i_marker and j_marker Y
WDTZ Angular Acceleration Relative angular acceleration between
i_marker and j_marker Z
Adams/Car Ride

20
force_request
Design Parameters
Macros
Create Macro: (call: acar template_builder instance ac_general_f_d_element create) Adams/Car Ride
executes this macro when you create an instance of the definition ac_general_f_d_element.
Modify Macro: (call: acar template_builder instance ac_general_f_d_element modify) Adams/Car Ride
executes this macro when you modify an instance of the definition ac_general_f_d_element.
Single Component Frequency-Dependent Elements
Component Name
ac_single_f_d_element
Source Directory
/$MDI_RIDE_PLUGIN/template_builder/udes/ac_single_f_d_element
Description
This component is a one degree of freedom force modeled by three linear springs and three linear
dampers; the elements may be connected in different ways and eventually deactivated in order to create
the following:
1. Linear Pfeffer element (one spring in parallel with a series damper - parallel spring damper)
Component name: Component units: Definition:
FX Force Force between i_marker and j_marker
along j_marker X
FY Force Force between i_marker and j_marker
along j_marker Y
FZ Force Force between i_marker and j_marker
along j_marker Z
TX Torque Torque between i_marker and j_marker X
TY Torque Torque between i_marker and j_marker Y
TZ Torque Torque between i_marker and j_marker Z
Parameter: Type: Function:
scaling_factor real variable Scaling factor (DOE)
21
Adams/Car Ride
2. Simple FD damper (one spring in parallel with a series spring damper)
3. Simple FD bushing (one spring in series with a parallel spring damper)
4. General element (one parallel spring damper in parallel with a series of two parallel spring
dampers)
Using the replace feature in Standard Interface, you can create a general frequency-dependent element
as a replacement for a standard Adams/Car bushing. In the replacement element dialog box, select a
property file and setting preload for the component.
Specifications
.ARIDE.forcess.ac_single_f_d_element
Parameters
Input Parameters
Output Parameters
none
Objects:
Parameter: Type: Function:
property_file string variable Name of property file
preload real variable Element preload
type string variable Element type
scale_factor real variable Force scale factor
geo_scale real variable Geometry scale
Input parameter: Type: Function:
i_marker object variable Action marker
j_marker object variable Reaction marker
Object: Type:
C1 real variable
K1 real variable
C2 real variable
K2 real variable
Adams/Car Ride

22
Request Definition
request
user (904,i_marker,j_marker)
Design Parameters
Macros
Create Macro: (call: acar template_builder instance ac_single_f_d_element create) Adams/Car Ride
executes this macro when you create an instance of the definition ac_single_f_d_element.
C3 real variable
K3 real variable
F01 real variable
F03 real variable
Uvar state variable
Outvark1c1 state variable
State_array X_state_array
Output_array Y_output_array
Ic_array IC_array
Input_array U_input_array
Force single_component_force
Gse general_state_equation
Request request
Graphic geometry
Dm_calc real variable
Component name: Component units: Definition:
Displacement length Distance between i_marker and j_marker
Velocity velocity Relative velocity of i_marker and j_marker
Force force Force between i_marker and j_marker
Parameter: Type: Function:
scaling_factor real variable Scaling factor (DOE)
Object: Type:
23
Adams/Car Ride
Modify Macro: (call: acar template_builder instance ac_single_f_d_element modify) Adams/Car Ride
executes this macro when you modify an instance of the definition ac_single_f_d_element.
Bushings
Component Name
ac_frequency_bushing
Source Directory
/$MDI_RIDE_PLUGIN/template_builder/udes/ac_frequency_bushing
Description
This component is based on a FIELD element such as the standard ac_bushing. The damping coefficients
of the FIELD are interpreted as the loss angles. The forces in the x- and y-plane and the moments along
the x- and y-axis are interpolated elliptical. The z force and moment are mapped directly from the splines.
Specifications
.ARIDE.parts.ac_frequency_bushing
Parameters
Parameter: Type: Function:
property_file string variable name of property file
t_preload_x real variable translational preload
t_preload_y real variable translational preload
t_preload_z real variable translational preload
r_preload_x real variable rotational preload
r_preload_y real variable rotational preload
r_preload_z real variable rotational preload
t_offset_x real variable translational offset
t_offset_y real variable translational offset
t_offset_z real variable translational offset
r_offset_x real variable rotational offset
r_offset_y real variable rotational offset
r_offset_z real variable rotational offset
i_geoMarker marker geometry ref marker
Adams/Car Ride

24
Input Parameters
Output Parameters
none
Objects
j_geoMarker marker geometry ref marker
geoRadius real variable geometry radius
geoLength real variable geometry length
Input parameter: Type: Function:
i_marker object variable action marker
j_marker object variable marker whose parent is the reaction part and
reference marker
Object: Type: Function:
data_array Adams array array to pass the preloads, offsets, damping
coefficients to the field subroutine
fx_spline Adams spline force spline
fy_spline Adams spline
fz_spline Adams spline
tx_spline Adams spline torque spline
ty_spline Adams spline
tz_spline Adams spline
i_graphic revolution graphics on I part
j_graphic cylinder graphics on J part
disp_request request displacement request
velo_request request velocity request
force_request request force request
field field frequency dependent bushing field subroutine as part
of the plugin ride_solver::FREQUENCY_BUS
Parameter: Type: Function:
25
Adams/Car Ride
Request Definition
disp_request
user (905,1,i_marker,j_marker,field)
velo_request
user (905,2,i_marker,j_marker,field)
force_request
user (905,3,i_marker,j_marker,field)
Component name: Component units: Definition:
dx length x-distance between i_marker and j_marker
dy length y-distance between i_marker and j_marker
dz length z-distance between i_marker and j_marker
dm length magnitude
ax angle angle about x
ay angle angle about y
az angle angle about z
amag angle magnitude
Component name: Component units: Definition:
vx velocity x-velocity between i_marker and j_marker
vy velocity y-velocity between i_marker and j_marker
vz velocity z-velocity between i_marker and j_marker
vm velocity magnitude
wx angular_velocity
wy angular_velocity
wz angular_velocity
wm angular_velocity magnitude
Adams/Car Ride

26
Subsystem Parameters
Design Parameters
Macros
Create Macro: (call: acar template_builder instance ac_frequency_bushing create) Adams/Car Ride
executes this macro when you create an instance of the definition ac_frequency_bushing.
Modify Macro: (call: acar template_builder instance ac_frequency_bushing modify) Adams/Car Ride
executes this macro when you modify an instance of the definition ac_frequency_bushing.
Component name: Component units: Definition:
bushing_fx force x-force between i_marker and j_marker
bushing_fy force y-force between i_marker and j_marker
bushing_fz force z-force between i_marker and j_marker
fm force magnitude
bushing_tx torque
bushing_ty torque
bushing_tz torque
tm torque magnitude
Top level: Sub level:
property_file
t_preload_(x-z)
r_preload_(x-z)
t_offset_(x-z)
r_offset_(x-z)
Parameter: Type: Function:
fx_scaling_factor real variable scaling factor (DOE)
fy_scaling_factor real variable scaling factor (DOE)
fz_scaling_factor real variable scaling factor (DOE)
tx_scaling_factor real variable scaling factor (DOE)
ty_scaling_factor real variable scaling factor (DOE)
tz_scaling_factor real variable scaling factor (DOE)
27
Adams/Car Ride
Delete Macro: (call: acar template_builder instance ac_frequency_bushing delete) This macro deletes all
the entities which have been created exclusively for the instance.
About the Bushing Model
Below is an outline of the frequency-dependent bushing model.

with
with

F1 C1 x =
F2 C2 z d2 z

+ d1 x

( ) = =
F
lin
F1 F2 + =

C2
C1
-------
d2
d1
------
d1
C1
------- = ; = ; =
F
lin
C1 x d1 x

( ) + C1 x
d1
C1
------- x

( ) +


C1 x x

( ) + ( ) = = =
z

1
1 +
------------ x

--- z


=
Adams/Car Ride

28
Constant stiffness in frequency-dependent term of F
lin
:
The static forces are computed by the splines from the property file; this is the first term, , of
. But the second term, , is computed with a constant value C1, obtained at the zero
position of the spline.
Reference frequency at 15 Hz for loss angle
The coefficients alfa, beta, gamma are linear scaled to obtain the loss angle at 15 Hz. The dynamic
stiffness can not be controlled. The stiffening factor is coupled with the loss angle. For example:
Loss Angle [Deg]: Stiffening factor:
5 1.17
10 1.34
C1 x
F
lin
C1 x

( )
29
Adams/Car Ride

GSE Dampers
To use a GSE damper, you must have a license for Adams/Controls.
Adams's system modeling elements enable the modeling and importing of external dynamic systems.
Those elements make it possible for users to define transfer functions, linear state equations, and
nonlinear state equations outside of Adams, and then input them for use with Adams. Among those, the
general state equation (GSE) is designed to model and import nonlinear external dynamic systems, such
as a damper.
The GSE damper provided with Adams/Car Ride illustrates a simple ride-based damper that has been
created within MathworksSimulinkand exported using Mathworks RealTime Workshop(RTW).
The GSE damper provides a framework that you can use to import proprietary damper models into
Adams/Car Ride.
For more information on importing the object code of the damper, see the guide, Getting Started Using
Adams/Controls.
Adams/Car Ride

30
Learn more about GSE dampers:
Scope
Results
Parametric Studies
Solver Background
Benefits of External Dynamic System Import
Scope
Provided with Adams/Car Ride is a complete set of files that you can use with Mathworks Simulink and
Adams/Car Ride to incorporate and test the functionality of the GSE damper. A license of Mathworks
Simulink and appropriate compilers is required to carry out this process. If, however, another user
provides you with a library (.dll, .so, or .sl, depending on your platform), you will only need a license of
Adams/Controls and Adams/Car Ride to run an analysis within Adams.
This topic provides a guide to using the GSE damper component. It does not explain how to use
Mathworks Simulink or how to export a library using RTW.
Results
When you create a GSE damper, Adams/Car Ride automatically creates some associated REQUEST
statements. These requests measure the displacement, velocity, and force across the damper.
Parametric Studies
As with all elements, in Adams/Car Ride you can study the parametric behavior of components. You can
modify a number of parameters for use in Adams/Insight. The parameter data is stored in the
corresponding subsystem file.
Solver Background
A General State Equation (GSE) is an Adams element designed for time-variant, nonlinear, continuous
or discrete dynamic systems, which can be mathematically represented as follows:
(1)
(2)
(3)
....
The definition of GSEs contains two portions:
GSE statement in the model: Provides the interface with Adams model, and specifies the
attributes of the imported dynamic system.
x
c

f
c
x
c
u t , , ( ) = x
c
t
0
( ) x
c0
=
x
d
n 1 +
f
d
x
d
n
u t , , ( ) = x
d
t
0
( ) x
d0
=
y g x
c
x
d
u t , , , ( ) =
31
Adams/Car Ride
GSE library: A library of code written to the Adams GSE specification. For more information on
general state equations, see the online help for Adams/Solver.
Benefits of External Dynamic System Import
Embedding external dynamic systems into Adams allows the use of a unified platform for multi-domain
analyses, and provides the following advantages over a cosimulation-based approach:
Faster speed: Powerful Adams integrators can simulate the stiff combined systems at a speed
unmatched by function-evaluation mode in Adams/Controls.
Higher accuracy: Because the external dynamic systems and the Adams model are incorporated
into one formulation, the dynamic coupling between them can be precisely represented, and its
effect is taken into account during the simulation. The accuracy achieved with external dynamic
systems imported is unparalleled compared to those from cosimulation and function-evaluation
mode.
DOE with Adams/Insight
Protecting proprietary code: Because the external dynamic systems can be imported in the form
of an object file and demand-loaded library, the proprietary code is not exposed.
However, to create both the GSE statement and the demand-load library manually, you need a high level
of programming skills and a deep understanding of Adams/Solver. To facilitate the creation of the GSE,
an external system import utility is designed as a feature of the GSE damper element to import the
external dynamic systems code.
GSE Creation Utility
The GSE creation utility performs the following steps:
1. Creates a library.
2. Queries the library to be imported for the information used to update the GSE statement of the
GSE damper element. The external dynamic system library should provide information, such as
number of states, inputs and outputs, and the tunable parameter.
3. Performs an error check to ensure that the external system complies with the standard required
by the GSE damper element.
4. Generates a property file in the default writable database, which contains the parameters of your
Simulink model.
During the simulation, the demand-loaded library is loaded into and called by Adams/Solver to provide
derivatives of states and output for Adams/Solver to integrate.
A set of example files is located in the shared_ride_database.cdb/gse_damper.tbl.
Adams/Car Ride

32
Interface Functions
The code must contain the following functions to comply with the standard API supported by the GSE
import functionality
:
Order Function: Description:
1 char* RTT_GetModelName() Returns the name of the control system to be
imported. It should be the same as the name of the
DLL. The string in this function should be either
static or global to guarantee that the content is not
destroyed after calling the function to get the string.
This name string will be used to create a STRING
statement in Adams, which will be passed to the
GSE driver to load the DLL with the same root
name.
2 double RTT_GetStepSize() Returns the maximum output step size to have
enough resolution to get the sampled output results.
If all, there is no sampled and discrete state, and it
should return 0.0.
3 int RTT_GetNumU() Returns the number of input signals.
4 int RTT_GetNumY() Returns the number of output signals.
5 int RTT_GetNumX() Returns the number of continuous states.
6 int RTT_GetNumDiscX() Returns the number of discrete states. For sampled
systems, it should be 1.
7 int RTT_GetNumParameters() Returns the number of parameters for the GSE.
8 real_T* RTT_GetParameter() Returns a list of real parameters for the GSE. You
can modify these parameters to perform a design
study of the model.
9 char*
RTT_GetParameterName(int i)
Returns the name string of the parameters.
10 void RTT_SetParameter(int
numpara, double* para)
Allows you to change the parameters for the GSE.
11 double *RTT_GetDX(double
time, double *U, double *X,
double *value)
Given input U, state X and time, this function returns
the derivative of states. For sampled systems, the
*value is 0.
12 double *RTT_GetY(double
time, double *U, double *X,
double *value)
Given input U, state X and time, this function returns
the output signals.
33
Adams/Car Ride
Simulink Damper Model
The damper model must have three inputs, in this order: the displacement between the I and J markers,
the velocity, and the acceleration. Inputs not required by the Simulink model must be terminated with a
terminator block. The model must have one output, which is the force of the damper to be applied in the
Adams model. The inputs and output are in Adams modeling units.
Mathworks RTW does not support some blocks and constructs for code generation. The most commonly
used, but unsupported, block is the solve block (algebraic constraint). The most commonly used, but
unsupported, construct is the algebraic loop. Note this limitation when designing the Simulink model. To
break up algebraic loops, you can use a transfer function block or, in some cases, a memory block. This
will influence the results depending on the chosen block parameters, and the step size Adams can take.
Parameterize the SIMULINK model
You can fine-tune or conduct a DOE on the RTW-GSE without rebuilding the model, by exporting the
parameters of interest.
To export the parameters, you perform the following:
1. Explicitly define the tunable parameters in MATLAB Workspace.
2. Reference the defined tunable parameters in the Simulink model.
3. Define the proper storage class for the tunable parameters.
Simulink Example
This example uses the example_damper model from the gse_damper table of the aride shared database.
13 double *RTT_GetDiscY(double
time, double *U, double *X,
double *value)
Given input U, state X and time, this function returns
the value of output signal at sampling time. This
function behaves like RTT_GetY, but it forces the
discrete state to be updated with the discrete
integrator turned on. For continuous systems, this
function is the same as RTT_GetY.
14 double *RTT_GetDiscX(double
*DiscX)
Gets the discrete states.
15 double RTT_tNext(double time) Gets the time duration to next sampling time.
Order Function: Description:
Notes: These functions are automatically created when exporting code using RTW.
An example C code, which illustrates the usage of the functions, can be found in
the Adams/Car Ride shared database in the gse_damper table.
Adams/Car Ride

34
In this example, you will change the 100 in the constant block, ReboundDamping, and 200 in the constant
block, CompressionDamping.
1. Define the parameters in MATLAB workspace by issuing the following:
ReboundDamping = 100;
CompressionDamping = 200;
You can access the two MATLAB variables from the Simulink model
2. Reference ReboundDamping in the Simulink model by double-clicking ReboundDamping.
Here, you can see the constant with a value of 100
35
Adams/Car Ride
.
3. Reference CompressionDamping in the Simulink model by double-clicking
CompressionDamping. Here, you can see the constant with a value of 200.
4. Define the proper storage class for parameter export as follows:
In the Simulink model window, select Tools->Real-Time Workshop->Options. In the
Simulation Parameters dialog box, select the Advanced tab. The window should look as
follows (make sure Inline parameters is selected)
Adams/Car Ride

36
:
Select Configure, and then select ReboundDamping and CompressionDamping by
highlighting them and selecting Add to Table. The window should look as follows:
37
Adams/Car Ride
Be sure that Storage class is set to SimulinkGlobal(Auto), as shown in the figure above.
To close the Model Parameters Configuration window, select OK.
In the Simulink Parameters window, select the Real-time Workshop tab.
5. Generate the code. For details on code generation for Adams, refer to the guide, Getting Started
Using Adams/Controls.
After the code is generated, you will find the following segment of code in file
damper_example_tf_common.h
t ypedef st r uct Par amet er s_t ag {
r eal _T Compr essi onDampi ng; / * Var i abl e: Compr essi onDampi ng
* Ext er nal Mode Tunabl e: yes
Adams/Car Ride

38
* Ref er enced by bl ock:
* <Root >/ Compr essi onDampi ng
*/
r eal _T ReboundDampi ng; / * Var i abl e: ReboundDampi ng
* Ext er nal Mode Tunabl e: yes
* Ref er enced by bl ock:
* <Root >/ ReboundDampi ng
*/
} Par amet er s;
Adams wrapper code recognizes this structure and the initial values are exported. The modified
values for those parameters can be passed into RTW code using the arguments to GSE.
Replacing Dampers
This topic describes how you can replace an existing damper within your model with a GSE damper.
To replace a damper:
1. Right-click the existing damper, and then select Replace.
2. Decide whether you want to replace all entities, entities of the same name, or just the selected
entity.
3. From the list of available dampers, select gse_damper, and then select OK.
Adams/Car Ride replaces the damper with a gse_damper and displays the Modify GSE_Damper
dialog box. By default, the damper references a property file contained in the shared database.
Until you reference a RealTime Workshop (RTW) library, however, the element is physically
meaningless. To select a library, continue this procedure.
4. Select .
Adams/Car Ride displays the GSE Damper Code Import dialog box.
5. Fill in the dialog box, and then select OK.
Adams/Car Ride imports the library using the controls RTW and analyzes the supplied library
for parameters that can be adjusted, and then writes those parameters to the new property file.
Adams/Car Ride then copies the supplied library to the default writable database (the new
property file is stored in the same location). The GSE statement within the GSE damper is
modified to reflect parameters that are contained in the RTW library. Adams/Car Ride then
populates the Modify GSE Damper dialog box to reference the new property file.
6. To finish the process, select OK in the Modify GSE Damper dialog box.
You can now use the GSE damper, with underlying code from RTW.
39
Adams/Car Ride
Exporting a MATLAB Simulink RTW Model into Adams/Car
Ride
The damper model must have three inputs, in this order: the displacement between the I and J markers,
the velocity, and the acceleration. Inputs not required by the Simulink model must be terminated with a
terminator block. The model must have one output, which is the force of the damper to be applied in the
Adams model. The inputs and outputs are in Adams modeling units.
Mathworks RTW block does not support some blocks and constructs for code generation. The most
commonly used, but unsupported, block is the solve block (algebraic constraint). The most commonly
used, but unsupported, construct is the algebraic loop. Note this limitation when designing the Simulink
model. To break up algebraic loops, you can use the transfer function block or, in some cases, a memory
block. This will influence the results depending on the chosen block parameters, and the step size Adams
can take.
The export process involves the following steps:
Setting the working environment
Creating control system for code generation
Generating code for the control system
Setting the Working Environment
Before starting with MATLAB you need to set up the working environment.
The first step is to customize the makefile template and source code template so that when you generate
code from Simulink, it is created in a way that Adams understands. The name of these templates depends
on whether you are using a UNIX or Windows system (grt_unix.tmf, grt_vc.tmf, and grt.tlc). Once this
step is complete, the templates can be used to generate a demand-loaded library for use in Adams.
To set the working environment:
1. Set the MATLAB_ROOT environment variable to the MATLAB installation directory. For
example:
On Windows (DOS shell): set MATLAB_ROOT=c:\Matlab
On UNIX (c shell): setenv MATLAB_ROOT /usr/Matlab/
On UNIX (korn shell): export MATLAB_ROOT=/usr/Matlab/
2. Create a working directory and change to that directory:
On Windows (DOS shell): cd c:\users\user
On UNIX: CD /usr/user
3. In the directory where your Adams model resides, issue the following command:
On Windows: adams05 python ($adams_dir)\controls\utils\process.py -v 651 exit
On UNIX: adams05 -c python ($adams_dir)/controls/utils/process.py -v 651 exit
Adams/Car Ride

40
This generates the necessary templates for the export of Simulink code from the Real Time Workshop in
a format that can be used by Adams. These files are generated in the working directory.
Creating Control System for Code Generation
Here you will start MATLAB and create a Simulink model for control system design.
To create the control system:
1. Start MATLAB in the same directory as the one the model and Simulink files reside.
2. Define your compiler using the mex -setup command. The choice of compiler is platform specific
3. Define the working directory to be the same as the one set above. If you don't perform this step,
the required templates will not be loaded, and the Real-time Workshop export will be incorrect.
To do this, type the following in the MATLAB command window:
On Windows: CD 'c:\users\user'
On UNIX: CD '/usr/user'
4. To open the Simulink model, from the File menu, select Open.
5. Select damper_example_tf.mdl and then select Open.
The model appears as shown next:
Note: The argument -v 651 stands for MATLAB 6.5.1 (R14). For other supported MATLAB
releases and their associated arguments, run the python script with the argument -h.
41
Adams/Car Ride
6. Set the values in the MATLAB workspace, by typing the following in the command window:
ReboundDamping = 100;
CompressionDamping = 200;
You should see something like:
7. Double-click the ReboundDamping and CompressionDamping blocks to verify that the
variables are referenced, as shown next:
Adams/Car Ride

42
Generating Code for the Control System
First you will create code from the Simulink model, then you will create the Simulink object file.
1. From the Tools menu, point to Real-time Workshop, and then select Options.
2. Verify that Generate code only is not selected.
You will now reference the templates that we created earlier in this tutorial.
3. Perform one of the following:
On Windows: Enter grt_vc.tmf in the Template makefile text box.
43
Adams/Car Ride
On UNIX: Enter grt_unix.tmf in the Template makefile text box.
4. Perform one of the following:
For MATLAB R13.1 and below, select the Solver tab.
For MATLAB R14, from the treeview on the left side of the window, select Solver.
5. Set Solver options Type to Fixed-step.
6. Perform one of the following:
For MATLAB R13.1 and below, set Mode to SingleTasking.
For MATLAB R14, set Tasking mode for periodic sample times to SingleTasking.
7. Select a continuous integrator (because the control system has continuous states).
8. Perform one of the following:
For MATLAB R13.1 and below, select the Advanced tab and verify that Inline
parameters is selected.
For MATLAB R14, from the treeview on the left side of the window, select Optimization,
and verify that Inline parameters is selected.
9. Select the Real-time Workshop tab.
10. To begin code generation and build the RTW library select Build.
Messages will appear in the MATLAB command window indicating a successful code generation and
RTW library creation. You can safely ignore any error messages that follow, such as:
ERROR execut i ng bui l d command: Er r or usi ng - > make_r t w
Er r or usi ng - > r t w_c
Er r or ( s) encount er ed whi l e bui l di ng model " gse_t empl at e"
The demand-loaded library (.dd, .sl, or .so, depending on your platform) will be created in the working
directory.
Hydromounts
Component Name
ac_hydro_bushing
Source Directory
/$MDI_RIDE_PLUGIN/template_builder/udes/hydro_bushing
Description
This component is based on the Weber model, which consists of a hydro path, a parallel spring, and a
parallel damper.
Adams/Car Ride

44
Nonlinear Model
The nonlinear model consists of up to eight parameters:
CouplingStiffness
RubberStiffness
LinearFluidDamping
RubberDamping
EffectiveFluidMass
CouplingStiffnessDeclining
QuadraticFluidDamping
Clearance
Specifications
.ARIDE.parts.ac_hydro_bushing
Parameters
Parameter: Type: Function:
property_file string variable name of property file
bushing_property_file string variable name of the bushing property file
super_impose_bushing integer variable togggle if the spline from the original bushing
property file will be superimposed in the direction
of the hydro component
hydro_coordinate string variable hydro direction coordinate
t_preload_x real variable translational preload
t_preload_y real variable translational preload
t_preload_z real variable translational preload
r_preload_x real variable rotational preload
r_preload_y real variable rotational preload
r_preload_z real variable rotational preload
t_offset_x real variable translational offset
t_offset_y real variable translational offset
t_offset_z real variable translational offset
r_offset_x real variable rotational offset
r_offset_y real variable rotational offset
r_offset_z real variable rotational offset
45
Adams/Car Ride
Input Parameter
s
Output Parameters
none
Objects
i_geoMarker Marker geometry ref marker
j_geoMarker marker geometry ref marker
geoRadius real variable geometry radius
geoLength real variable geometry length
Input parameter: Type: Function:
i_marker object variable action marker
j_marker object variable marker whose parent is the reaction part and
reference marker
Object: Type: Function:
data_array Adams array array to pass the scaling factors and
preloads to the field subroutine
fx_spline Adams spline force spline set to 0, depent on
Hydro_Direction
fy_spline Adams spline set to 0, depent on Hydro_Direction
fz_spline Adams spline set to 0, depent on Hydro_Direction
tx_spline Adams spline torque spline
ty_spline Adams spline
tz_spline Adams spline
hydro_test_data_cdyn Adams spline stiffness
hydro_test_data_phase Adams spline angle
hydro_identification_data_cdyn Adams spline stiffness
hydro_identification_data_phas
e
Adams spline angel
i_graphic revolution graphics on I part
j_graphic cylinder graphic on J part
disp_request request displacement request
Parameter: Type: Function:
Adams/Car Ride

46
Request Definition
disp_request
user (905,1,i_marker,j_marker,field)
velo_request request velocity request
force_request request force request
output_request request hydroForce, Fluidvelocity,
Fluiddisplacement
field field standard bushing field subroutine (900)
hydro_force_i sforce force representing the hydro path in z
direction (action only)
hydro_force_j sforce hydro_force_i
hydro_disp state variable displacement difference between force
marker and channel fluid displacement
including clearance
hyrdo_diff_channel_disp diff displacement state of fluid in channel
hydro_Direction string acting direction of hyrdo force: values : 'x' |
'y' | 'z'
hydro_DirectionMarker marker direction for hydro_force_i and _j
hydro_RubberStiffnes real_variable units: translational stiffness [N/mm]
hydro_RubberDamping real_variable units: translational damping [Ns/mm]
hydro_CouplingStiffness real_variable units: translational stiffness [N/mm]
hydro_LinearFluidDamping real_variable units: translational damping [Ns/mm]
hydro_QuadraticFluidDamping real_variable units: translational damping [Ns/mm]
hydro_CouplingStiffnessDeclini
ng
real_variable units: [1/mm]
hydro_EffectiveFluidMass real_variable units: [kg]
hyrdo_Clearance real_variable units: [mm]
Component name: Component units: Definition:
dx length x-distance between i_marker and j_marker
dy length y-distance between i_marker and j_marker
dz length z-distance between i_marker and j_marker
dm length magnitude
Object: Type: Function:
47
Adams/Car Ride
velo_request
user (905,2,i_marker,j_marker,field)
force_request
user (905,3,i_marker,j_marker,field)
ax angle angle about x
ay angle angle about y
az angle angle about z
amag angle magnitude
Component name: Component units: Definition:
vx velocity x-velocity between i_marker and j_marker
vy velocity y-velocity between i_marker and j_marker
vz velocity z-velocity between i_marker and j_marker
vm velocity magnitude
wx angular_velocity
wy angular_velocity
wz angular_velocity
wm angular_velocity magnitude
Component name: Component units: Definition:
bushing_fx force x-force between i_marker and j_marker
bushing_fy force y-force between i_marker and j_marker
bushing_fz force z-force between i_marker and j_marker
fm force magnitude
bushing_tx torque
bushing_ty torque
bushing_tz torque
tm torque magnitude
Component name: Component units: Definition:
Adams/Car Ride

48
output_request
Subsystem Parameters
Design Parameters
Component:
Component
name:
Component
units: Definition:
f2 hydroForce force force on i-marker of sforce hydro_force_i
f3 Fluidvelocity velocity state of hydro_diff_channel_velo
f4 Fluiddisplacement displacement state of hydro_diff_channel_disp
Top level: Sub level:
property_file
t_preload_(x-z)
r_preload_(x-z)
t_offset_(x-z)
r_offset_(x-z)
Parameter: Type: Function:
fx_scaling_factor real variable scaling factor (DOE)
fy_scaling_factor real variable scaling factor (DOE)
fz_scaling_factor real variable scaling factor (DOE)
tx_scaling_factor real variable scaling factor (DOE)
ty_scaling_factor real variable scaling factor (DOE)
tz_scaling_factor real variable scaling factor (DOE)
Hydro_RubberStiffnes_scaling_factor real_variable scaling factor (DOE)
Hydro_RubberDamping_scaling_factor real_variable scaling factor (DOE)
Hydro_CouplingStiffness_scaling_factor real_variable scaling factor (DOE)
Hydro_LinearFluidDamping_scaling_factor real_variable scaling factor (DOE)
Hydro_QuadraticFluidDamping_scaling_factor real_variable scaling factor (DOE)
Hydro_CouplingStiffnessDeclining_scaling_factor real_variable scaling factor (DOE)
Hydro_EffectiveFluidMass_scaling_factor real_variable scaling factor (DOE)
Hydro_Clearance_scaling_factor real_variable scaling factor (DOE)
49
Adams/Car Ride
Macros
Create Macro: (call: acar template_builder instance ac_hydro_bushing create) Adams/Car Ride executes
this macro when you create an instance of the definition ac_hydro_bushing.
Modify Macro: (call: acar template_builder instance ac_hydro_bushing modify) Adams/Car Ride
executes this macro when you modify an instance of the definition ac_hydro_bushing.
Delete Macro: (call: acar template_builder instance ac_hydro_bushing delete) This macro deletes all the
entities which have been created exclusively for the instance.
About Input Hydromount Property Files
The block [MDI_HEADER] must be exactly the same as in the example input hydromount property file.
In the block [UNITS] you could modify LENGTH to be either m or mm.
The block [GENERAL] must contain all parameters listed in the sample file.
The DEFINITION is always '.ride.attachment.ac_hydro_bushing'.
The HYDRO_COORDINATE can be x, y or z. This parameter determines the acting direction
of the hydro force with respect to the ac_hydro_bushing reference system.
The BUSHING_PROPERTY_FILE is a standard ac_bushing property file that defines all six
stiffness and damping components of a bushing.
The SUPER_IMPOSE_BUSHING parameter can be set to:
Off - The bushing component with the same direction as the hydro force component is set to
zero.
On - The bushing component is superimposed. The superimpose option is useful because it
lets you add an impact stiffness to the hydro force component. During the identification
process, the bushing stiffness and damping coefficients are not considered.
The block [HYDRO_TEST_DATA] contains four columns of data. These are the measured data
of the hydromount. For every amplitude you must have the same frequencies. The number of
amplitudes is not fixed. You could also use a property file including the hydro parameters, which
you can edit manually, or use a file that was written by a previous identification process. This
allows you to first use rather larger error tolerances to speed up the process with relatively rough
results before you run the identification process using those results as initial values with a
smaller error tolerance. Or you could add additional test data later and redo the identification
based on previously identified parameters.
Example Input Hydromount Property File
The following is a sample input hydromount property file (extension .hbu). This sample file contains the
minimum set of required data.
Learn about input hydromount property files.
Adams/Car Ride

50
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' hbu'
FI LE_VERSI ON = 1. 0
FI LE_FORMAT = ' ASCI I '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UNI TS
[ UNI TS]
LENGTH = ' mm'
FORCE = ' newt on'
ANGLE = ' degr ees'
MASS = ' kg'
TI ME = ' second'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GENERAL
[ GENERAL]
DEFI NI TI ON = ' . r i de. at t achment . ac_hydr o_bushi ng'
HYDRO_COORDI NATE = ' z'
BUSHI NG_PROPERTY_FI LE = ' <r i de>/ bushi ngs. t bl / mdi _0001. bus'
SUPER_I MPOSE_BUSHI NG = ' of f '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HYDRO_TEST_DATA [ HYDRO_TEST_DATA]
{ampl i t ude f r equency cdyn phase}
0. 100000 5. 000000 620. 0 7. 7
0. 100000 8. 000000 652. 0 16. 2
0. 100000 10. 000000 776. 0 20. 4
0. 100000 12. 000000 911. 0 20. 2
0. 100000 15. 000000 1038. 0 12. 9
0. 100000 20. 000000 963. 0 5. 5
0. 100000 25. 000000 902. 0 4. 0
0. 100000 30. 000000 881. 0 4. 3
0. 100000 40. 000000 841. 0 5. 3
0. 100000 50. 000000v 838. 0 6. 6
0. 800000 5. 000000 620. 0 9. 9
0. 800000 8. 000000 620. 0 20. 9
0. 800000 10. 000000 691. 0 29. 1
0. 800000 12. 000000 855. 0 32. 4
0. 800000 15. 000000 1085. 0 25. 2
0. 800000 20. 000000 1142. 0 12. 0
0. 800000 25. 000000 1100. 0 7. 0
51
Adams/Car Ride
Example Output Hydromount Property File
The following is an example output hydromount property file. We left out the data for frequencies 4 - 39
Hz.
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER] FI LE_TYPE = ' hbu'
FI LE_VERSI ON = 1. 0
FI LE_FORMAT = ' ASCI I '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNI TS
[ UNI TS]
LENGTH = ' mm'
FORCE = ' newt on'
ANGLE = ' degr ees'
MASS = ' kg'
TI ME = ' second'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GENERAL
[ GENERAL]
DEFI NI TI ON = ' . r i de. at t achment . ac_hydr o_bushi ng'
HYDRO_COORDI NATE = ' z'
BUSHI NG_PROPERTY_FI LE = ' <r i de>/ bushi ngs. t bl / mdi _0001. bus'
SUPER_I MPOSE_BUSHI NG = ' of f '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HYDRO_PARAMETERS [ HYDRO_PARAMETERS]
RUBBER_STI FFNESS = 406. 544598
RUBBER_DAMPI NG = 0. 29298822
COUPLI NG_STI FFNESS = 282. 526692
COUPLI NG_STI FFNESS_DECLI NI NG = 0. 071232
LI NEAR_FLUI D_DAMPI NG = 1. 10642663
QUADRATI C_FLUI D_DAMPI NG = 0. 01834762
EFFECTI VE_FLUI D_MASS = 51. 416425
CLEARANCE = 0. 0
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HYDRO_I DENTI FI CATI ON_DATA
[ HYDRO_I DENTI FI CATI ON_DATA]
0. 800000 30. 000000 1068. 0 5. 4
0. 800000 40. 000000 1020. 0 5. 3
0. 800000 50. 000000 1031. 0 5. 6
{ampl i t ude f r equency cdyn phase}
0. 100000 1. 000000 404. 863819 1. 243071
0. 100000 2. 000000 399. 691551 2. 618614
0. 100000 3. 000000 388. 455029 4. 605679
. . . cont i nue
0. 100000 40. 000000 713. 285910 6. 099968
{ampl i t ude f r equency cdyn phase}
Adams/Car Ride

52
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HYDRO_TEST_DATA
[ HYDRO_TEST_DATA]
$OBJ ECTI VE_FUNCTI ON = 1. 5051
$I NTEGRATOR_ERROR = 0. 0050
$STEADY_STATE_ERROR = 0. 0100
$CONVERGENCE_TOLERANCE = 0. 0050
$*** OPTI MI ZATI ON ABORTED ***
0. 500000 1. 000000 404. 772004 1. 302907
0. 500000 2. 000000 399. 309176 2. 830528
0. 500000 3. 000000 389. 903747 4. 774778
. . . cont i nue
0. 500000 40. 000000 716. 810500 6. 126563
1. 000000 1. 000000 404. 777324 1. 347649
1. 000000 2. 000000 399. 296585 3. 024592
1. 000000 3. 000000 390. 207932 5. 272207
. . . cont i nue
1. 000000 40. 000000 700. 288389 6. 281555
{amplitude frequency cdyn phase}
0.100000 1.000000 392.000000 1.900000
0.100000 2.000000 393.000000 3.800000
0.100000 3.000000 393.000000 4.800000
... continue
0.100000 40.000000 773.000000 4.700000
0.500000 1.000000 389.000000 2.800000
0.500000 2.000000 386.000000 4.100000
0.500000 3.000000 385.000000 5.800000
... continue
0.500000 40.000000 734.000000 4.800000
1.000000 1.000000 379.000000 3.100000
1.000000 2.000000 377.000000 4.800000
1.000000 3.000000 378.000000 6.900000
... continue
1.000000 40.000000 700.000000 4.700000
{ampl i t ude f r equency cdyn phase}
Tools
Adams to Nastran Module
ADM2NAS, the Adams-to-Nastran module in Adams/Car Ride, allows you to easily create an
MSC.Nastran model of a vehicle from an existing Adams/Car full-vehicle assembly.
Because Adams is the most widely used mechanical simulation program for dynamics of rigid and
flexible structures and MSC.Nastran is the most widely used mechanical simulation program for
structural analysis, there is often a requirement for iterating a component design in MSC.Nastran based
on reliable information on linearized dynamics of mechanical elements. ADM2NAS provides a direct
link between the two programs, giving you a unique opportunity for a comprehensive dynamic
investigation of a complex mechanical system.
ADM2NAS features two operative modes:
Direct export - A direct translation of existing Adams/Car elements (parts, constraints,
attachments, forces) is realized, creating a full system finite element model ready to be run in
MSC.Nastran. The power of this approach is that the Adams/Car model topology is maintained
in MSC.Nastran, and the FE analyst can easily modify the model characteristics (geometric
entities, stiffness properties, and so on). As a drawback, some elements (such as forces including
user subroutines or function expressions) cannot be translated automatically. In these cases,
dummy MPC elements, which make the simulation fail, are created to trace the failed complete
translation. The Adams/Car model can be exported in design or static equilibrium conditions.
RBE and/or beam elements can be created to connect the part's center of gravity with nodes
where connectors (constraints and attachments) are located.
Linear export - If you have the MSC.Nastran model of a vehicle component or subassembly
(chassis, suspension, sub-frame, and so on), ADM2NAS allows you to select an Adams/Car part
and create a linearized MSC.Nastran model of the full vehicle, excluding the selected part.
ADM2NAS converts the linearized model as MSC.Nastran bulk data input, which then can be
assembled with a structural component model as shown next.
Adams/Car Ride

16

The following outlines the process for extracting the linear model:
1. The Adams model is exported to MSC.Nastran. All of the connections (kinematic joints and
bushings) acting between the selected part and the rest of the assembly are replaced with forces
to ground. These forces ensure the model congruence, while removing kinematic dependency of
the assembly degrees of freedom on selected parts.
2. At the first simulation step, forces between the selected part and ground, and between the
attachments parts and ground, are calculated as elastic forces based on the relative displacement
of broken connections points.
3. The computed force values are stored, and then used in place of the elastic ones. Then, the states
are exported.
4. The system trimming is the same (original) full-system equilibrium configuration, without
coupling between the attachments and selected part states.
The following is an example of an Adams model force layout:

17
Adams/Car Ride
Output Files
ADM2NAS produces the following output files
:
Using ADM2NAS
To export your MD Adams model to MSC.Nastran:
1. In Adams/Car, from the Ride menu, point to Adams to Nastran, then select Run.
2. Press F1 and then follow the instructions in the dialog box for Adams to Nastran Export.
3. Select OK.
Hydromount-Parameter Identification Tool
You can use this tool to identify the parameters of a hydromount model for given measurements of
dynamic stiffness and loss angle dependent on frequency. The model used for the identification is
File type: File name: Description:
MSC.Nastran bdf 'output_prefix'_a2n.bdf
(linear export option)
'output_prefix'_'export_confi
g'.bdf (direct export option)
MSC.Nastran input for exported entities and
graphics to be included in MSC.Nastran bulk
data.
State-space matrices 'output_prefix'_a2n_matlab'a,
b,c,d,st,pi,po'
State-space matrices from the linearization of
the system in Matlab format (available from
linear export option).
Map 'output_prefix'_a2n.map
(linear export option)
'output_prefix'_'export_confi
g'.map (direct export option)
When using the linear export option, the file is
in TeimOrbit format and contains mapping
(IDs, state variable index, and so on) and other
information (wheel/other graphic entity
locations) from the state-space matrices to
MSC.Nastran objects.
Using the direct export option, the file has plain
text format and contains the list of the Adams
part IDs and MSC.Nastran grid IDs assigned
during translation.
Analysis 'output_prefix'_a2n.'adm,acf,
nam' (linear export option)
'output_prefix'_'export_confi
g'.'adm,acf, nam' (direct
export option)
Adams/Solver input files
Adams/Car Ride

18
identical to the model included in Adams. The output of the identification process is a property file that
contains all the parameters of the Adams element.
If the start conditions have not been defined through manual input or through the property file, the
identification routine starts with a linear model of the hydromount to determine the proper start
conditions for the nonlinear model.
Learn more about the hydromount-parameter identification tool:
About Hydromount Models
Identification Process
Identifying Hydromount Parameters
Calculate Frequency Response
About Hydromount Models
You can use two kinds of hydromount models:
Linear models - Consist of five parameters and do not include the clearance, quadratic fluid
damping, and coupling stiffness declining terms, which are included in the complete nonlinear
model.
Coupling Stiffness
Rubber Stiffness
Linear Fluid Damping
Rubber Damping
Effective Fluid Mass
Nonlinear models - Consist of up to eight parameters. The additional parameters to the linear
model are:
Coupling Stiffness Declining
Quadratic Fluid Damping
Clearance
19
Adams/Car Ride
M
k
Effective_Fluid_Mass
x Displacement(i_mar,j_mar,j_mar) - dz0
x

Velocity(i_mar,j_mar,j_mar)
x1 Displacement(M
k
)
v1 Velocity(M
k
)
K
quad
Coupling_Stiffness_Declining
K
b
Linear_Coupling_Stiffness
D
k
Linear_Fluid_Damping
D
k_quad
Quadratic_Fluid_Damping
K
t
Rubber_Stiffness
C
t
Rubber_Damping
Coupling_Stiffness_Displacement_ x :
x
x clearance + x clearance + 0 < ( )& x 0 < ( )
x clearance x clearance 0 > ( )& x 0 > ( )
0;else

=
Nonlinear_Coupling_Stiffness_Factor_q:
q
1 K
quad
* x * x ( ) K
quad
0 < ( )
1 K
quad
0 = ( )
1 1 K
quad
* x * x + ( ) K
quad
0 > ( )

=
Nonlinear_Fluid_Damping_Factor_c:
c D
k
D
k_quad
* v
1
+ =
Coupling_Force:
F
coupl
x1 x ( )*K
b
*q =
Adams/Car Ride

20
Differential_Equation_Fluid_Mass:
v
1

1 M
k
* v
1
*c F
coupl
+ ( ) =
x
1

v
1
=
hydro_force K
t
* x C
t
* x

F
coupl
+ =
21
Adams/Car Ride
Note: The model is valid up to 100 Hz, depending on the quality of the input data. The frequency
range of the input data should start below the first eigen frequency of the hydromount. The
data supplied must be consistent. That is, for the first amplitude range there has to be a
range of frequencies, for the next amplitude range the frequencies must be the same as the
first amplitude range, and there must be the same number of rows of data, and so on. For
example:
amplitude frequency
0.1 5
0.1 10
0.1 15
0.2 5
0.2 10
0.2 15
Adams/Car Ride

22
Identification Process
The identification tool has three start conditions that determine the identification process:
Without any Initial Parameters - All seven input parameters are zero.
With Five initial Parameters - Five parameters are nonzero and the two nonlinear parameters are
zero.
With Seven initial Parameters - All seven input parameters are nonzero.
Identification Without any Initial Parameters
All input parameters in the interface are zero. Adams/Car Ride automatically sets all parameters to zero
after loading a property file without the block [HYDRO_PARAMETERS]. . After you select Go, the
process uses the linear model to identify the following five parameters:
Rubber stiffness
Rubber damping
Coupling stiffness
Linear fluid damping
Effective fluid mass
The parameters are initial values for the complete model. The process continues with an initial guess of
the nonlinear parameters: quadratic fluid damping and coupling stiffness declining, to fit the nonlinear
behavior of the hydro force. The clearance remains at zero. At this point, you can stop the optimizer and
modify any parameter. To check frequency response, select Calculate Frequency Response. You can
repeat the process at any time.
Identification With Five Initial Parameters
You can enter the hydro parameters in the dialog box, or have them load from the property file (if it
contains a block [HYDRO_PARAMETERS]). In this case, the process also starts based on the linear
model and continues with the nonlinear model as described in the identification process without any
initial parameters.
Identification With Seven Initial Parameters
You can enter the hydro parameters in the dialog box, or have them load from the property file (if it
contains a block [HYDRO_PARAMETERS]). In this case, the process directly uses the complete
nonlinear model. In this final part of the identification process, all seven parameters are varied and only
the clearance remains fixed.
23
Adams/Car Ride
Identifying Hydromount Parameters
To identify hydromount parameters:
1. Let Adams_install denote your Adams installation directory. For example, on Windows, this
might be: "C:\MSC.Software\MD_Adams\R3\".
2. Do one of the following:
On Windows, enter the following:
adamsmdr2 python "Adams_install\python\win32\Lib\site-packages\mscarideidtool.py"
On UNIX, let platform_name denote the Adams name of your platform
(you can find this by simply looking in the 'Adams_install/python/' directory). Then, enter:
adamsmdr2 -c python <Adams_install>/python/<platform_name>/lib/python2.2/site-
packages/mscarideidtool.py
3. Press F1 and then follow the instructions in the dialog box help for Hydromount-Parameter
Identification.
4. Select Go.
Calculate Frequency Response
After each iteration step, Adams/Car Ride automatically calculates the frequency response and updates
the plots and parameters. You can manually modify each input parameter and calculate their frequency
response.
Road-Profile Generation Tool
The Adams/Car Ride tool for generating road profiles with roughness uses a mathematical model
developed by Sayers [1, 2]. The model is empirical: it is based on the observed characteristics of many
measured profiles of roads of various types. The model also provides for the synthesis of profiles for both
the left and right wheeltracks.
Learn more about the road-profile generation tool:
About the Road-Profile Generation Tool
Parameter Variables for Sayers Roughness Model
Generating a Road Profile
References
About the Road-Profile Generation Tool
For a single wheeltrack, the model assumes that the power-spectral density (PSD) of the displacement
(elevation) of a road profile, , is a function of wavenumber, , given by the equation: G
d

Adams/Car Ride

24
: (1)
Therefore, it is assumed that roughness comes from three components. Each is obtained from an
independent source of white noise, that is, random numbers.
The first component, with amplitude , is white-noise elevation.
The second, with amplitude , is white-noise slope (velocity) that is integrated once with
respect to time.
The third, with amplitude , is white-noise acceleration that is integrated twice with respect to
time.
The letter above denotes Gaussian. Each sequence of random numbers is assumed to have a Gaussian
distribution with a mean value of zero and a standard deviation, , of:
: (2)
where:
is a white-noise amplitude for one of the three terms in Equation 1 ( )
is the interval between samples, expressed in the inverse units of those used for wavenumber
As explained in Reference 2, profiles for the left and right wheeltracks are obtained by the following
method, which maintains the proper coherence between them:
1. Filtering and summing white-noise sources generates three uncorrelated profiles, as described
statistically by the specified wheeltrack PSD, that is, the specified values of , , and .
Adams/Car Ride scales them such that their PSD amplitudes are half of the wheeltrack PSD. The
first of these is designated . It is not filtered further. The remaining two profiles are
subsequently processed by filtering.
2. A cut-off wavenumber, , is established for the subsequent filtering as
: (3)
where is the correlation baselength. The recommended value for is 5.0 (m).
3. The second uncorrelated profile is filtered with a low-pass filter with cut-off wavenumber .
The resulting profile is designated .
4. The third uncorrelated profile is filtered with a high-pass filter with cut-off wavenumber . The
resulting profile is designated .
G
d
v ( ) G
e
G
s
2 ( )
2
-----------------
G
a
2 ( )
4
----------------- + + =
G
e
G
s
G
a
G

G
2
------- =
G G
e
, G
s
, G
a

G
e
G
s
G
a
Z
v1

2
1
L
B
2
-------------- =
L
B
L
B

2
Z
v2

2
Z
c
25
Adams/Car Ride
5. The left and right wheeltrack profiles, and , are then obtained from these three
components:
(4)
(5)
Parameter Variables for Sayers Roughness Model
Example values for the parameters , , and . are shown in the following table, which is taken
from Appendix E of Reference 1. The terms flexible and rigid, as descriptions of surface types,
approximately correspond to asphalt and Portland-cement concrete (PCC) roads, respectively. The
symbol IRI in the table denotes International Roughness Index, which is a widely used road-roughness
standard that was developed with The World Bank. The IRI is discussed in detail in Reference 3.
Table 1 Example Parameter Values for the Sayers Roughness Model
As explained in Reference 1, the range of values shown for the slope coefficient mainly reflects the
roughness range covered by the roads in each category. The other two coefficients describe additional
roughness increasing for very short and very long wavelengths. Amplitudes of very long wavelengths,
indicated by nonzero values of , might be associated with the quality of grading performed in
building the road. High amplitudes of very short wavelengths, typified by nonzero values of , are
commonly caused by surface defects that are extremely localized, such as faults, tar strips, and potholes.
IRI G
e
G
s
G
a
Surface type

Smooth
Flexible
75 1184 0 6 0
Flexible 150 2367 0 12 0.17
Rough
Flexible
225 3551 0.003 20 0.20
Smooth
Rigid
80 1263 0 1 0
Rigid 161 2541 0.1 20 0.25
Rough Rigid 241 3804 0.1 35 0.3
Z
L
Z
R
Z
L
Z
v1
Z
v2
Z
c
+ + =
Z
R
Z
v1
Z
v2
Z
c
+ =
G
e
G
s
G
a
in
mi
------


mm
km
---------


m
3
cycle
-------------- 10
6

m
cycle
-------------- 10
6

1
m cycle ( )
----------------------------- 10
6

G
a
G
e
Adams/Car Ride

26
Generating a Road Profile
To generate a road profile:
1. From the Ride menu, point to Tools, and then select Road-Profile Generation.
2. Press F1 and then follow the instructions in the dialog box help for Road-Profile Generation.
3. Select OK.
References
Gillespie, T.D., et.al., "Effects of Heavy-Vehicle Characteristics on Pavement Response and
Performance." NCHRP Report 353, Transportation Research Board, Washington D.C., 1993, 126 pp.
Sayers, M.W., "Dynamic Terrain Inputs to Predict Structural Integrity of Ground Vehicles." UMTRI
Report No. UMTRI-88-16, April 1988, 114 pp.
Sayers, M.W. and Karamihas, S.M., "Interpretation of Road Roughness Profile Data." Final Report SPR-
2 (159), Federal Highway Administration, Contract No. DTFH 61-92-C00143, J anuary 1996.
MTS Systems Corporation: www.mts.com/rpc3/file_formats or Adams/Durability online help:
Referencing Test Data
Tutorials and Examples
For tutorials of overall product use, see:
Getting Started Using Adams/Car
Adams/Car

148
Example Four-Post Analysis
Although this is an Adams/Car example, you can use the general concepts presented here to create a
macro for any template-based product.
Setting Up and Running an Analysis: Teaches the expert user how to build and run a full-vehicle
analysis with the four-post test rig.
Creating and Running a Macro: Introduces the concepts of creating and running a macro for the
scenario given above.
149
Tutorials and Examples
Example Event Files
In Adams/Car, XML became the default file format for Driving Machine analyses. Although Adams/Car
still supports driver control files (.dcf), it now automatically converts them to .xml. The .xml files are
referred to as event files. Although the contents of the two files types look different, they contain the
same event information. You work with .xml files through the Event Builder.
In the shared Adams/Car database, we provide files in both .dcf and .xml format. These files are stored
in the driver_controls.tbl directory/table.
Adams/Car

150
Example .dcd File
The following shows the architecture of a .dcd file and all the options you can set for a .dcd file. It
contains options, logic, and general rules that you must follow when creating a .dcd file.
[ MDI _HEADER]
FI LE_NAME = f i l ename. dcd
FI LE_TYPE = ' dcd'
FI LE_VERSI ON = 1. 0 FI LE_FORMAT = ' ASCI I '
( COMMENTS)
{comment _st r i ng}
' Any comment '
[ UNI TS]
LENGTH = ' met er ' | | ' mi l l i met er ' | | ' cent i met er ' | | ' ki l omet er ' | | et c.
FORCE = ' newt on' | | ' ki l ogr am_f or ce' | | et c. ANGLE = ' deg' MASS = ' kg'
TI ME = ' sec'
[ CLOSED_LOOP]
comment = st r i ng
st eer i ng_cont r ol = ' none' | | ' cur vat ur e' | | ' pat h' | | ' l at _acc'
speed_cont r ol = ' none' | | ' l on_vel ' | | ' l on_acc' | | ' l at _acc' | | ' pat h'
or di nal = ' di st ance' | | ' t i me'
l on_vel _max = f l oat
l on_vel _mi n = f l oat
l on_acc_max = f l oat
l on_acc_mi n = f l oat
l at _acc_max = f l oat
l at _acc_mi n = f l oat
( DATA)
$ st eer i ng, speed
$ 1 Case{none, none} - - nul l case, no dat a r equi r ed! !
$ 2 Case{none, l on_vel }
$ 3 Case{none, l on_acc}
$ 4 Case{none, l at _acc} - - NOT VALI D
$ 5 Case{none, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && ( l on_vel | | l on_acc ) }
$ 6 Case{cur vat ur e, none} - - Must have di st ance wi t h cur vat ur e
{ di st ance && cur vat ur e }
$ 7 Case{cur vat ur e, l on_vel }
$ 8 Case{cur vat ur e, l on_acc}
$ 9 Case{cur vat ur e, l at _acc}
$10 Case{cur vat ur e, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && cur vat ur e && ( l on_vel | | l on_acc
| | l at _acc ) }
$11 Case{pat h, none}
$12 Case{pat h, l on_vel }
$13 Case{pat h, l on_acc}
$14 Case{pat h, l at _acc}
{ x && y && ( l on_vel | | l on_acc | | l at _acc ) }
$15 Case{pat h, pat h}
{ x && y && t i me }
$16 Case{l at _acc, none} - - NOT VALI D
151
Tutorials and Examples
$17 Case{l at _acc, l on_vel }
$18 Case{l at _acc, l on_acc}
$19 Case{l at _acc, l at _acc} - - NOT VALI D
$20 Case{l at _acc, pat h} - - NOT VALI D
{ ( di st ance | | t i me ) && l at _acc && ( l on_vel | | l at _acc ) }
[ OPEN_LOOP]
or di nal = ' t i me' | | ' di st ance'
{di st ance | | t i me st eer i ng t hr ot t l e br ake gear cl ut ch}*
0. 0 0. 0 0. 0 0. 0 2 0. 0
0. 1 0. 0 0. 0 0. 0 2 0. 0
*You can select distance or time and any combination of steering, throttle, brake, gear, and clutch
.Example corresponding to $ 2 Case{none,lon_vel}:
. . . . .
[ CLOSED_LOOP]
STEERI NG_CONTROL = ' NONE'
SPEED_CONTROL = ' LON_VEL'
ORDI NAL = ' TI ME'
( DATA)
{ TI ME, LON_VEL }
0. 0 27. 777
0. 1 27. 777
0. 2 27. 776
0. 3 27. 775
0. 4 27. 774
0. 5 27. 773
. . . . .
Example corresponding to $ 7 Case{curvature,lon_vel}:
. . . . .
[ CLOSED_LOOP]
STEERI NG_CONTROL = ' CURVATURE'
SPEED_CONTROL = ' LON_VEL'
ORDI NAL = ' DI STANCE'
( DATA)
{ DI STANCE, CURVATURE, LON_VEL }
0. 0 0. 000 27. 777
1. 0 0. 002 27. 777
2. 0 0. 004 27. 777
3. 0 0. 006 27. 776
4. 0 0. 008 27. 775
5. 0 0. 010 27. 774
6. 0 0. 010 27. 773
7. 0 0. 010 27. 774
8. 0 0. 010 27. 774
9. 0 0. 010 27. 774
10. 0 0. 010 27. 774
11. 0 0. 010 27. 774
12. 0 0. 010 27. 774
13. 0 0. 010 27. 774
. . . . .
Adams/Car

152
Example Suspension Loadcase File
In Adams/Car, you can use loadcase files to specify different types of suspension analyses. The following
is an example loadcase file.
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' l cf '
FI LE_VERSI ON = 4. 0
FI LE_FORMAT = ' ASCI I '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNI TS
[ UNI TS]
LENGTH = ' mm'
ANGLE = ' degr ees'
FORCE = ' newt on'
MASS = ' kg'
TI ME = ' second'
$
$Gener at i on Par amet er s: ( Do Not Modi f y! )
$ l oadcase = 1
$ nst eps = 10
$ bump_di sp = 100. 00 r ebound_di sp = - 100. 00
$ st eer i ng_i nput = angl e
$ st at _st eer _pos = 0. 00
$
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mode
[ MODE]
STEERI NG_MODE = ' angl e'
VERTI CAL_MODE = ' l engt h'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dat a
[ DATA]
$COLUMN: i nput t ype: t ype of i nput dat a: si de:
$ ( c1) wheel z di sp / f or ce l ef t
$ ( c2) wheel z di sp / f or ce r i ght
$ ( c3) l at er al f or ce ( y) l ef t
$ ( c4) l at er al f or ce ( y) r i ght
$ ( c5 al i gni ng t or que ( z- axi s) l ef t
$ ( c6) al i gni ng t or que ( z- axi s) r i ght
$ ( c7) br ake f or ce ( y) l ef t
$ ( c8) br ake f or ce ( y) r i ght
$ ( c9) dr i vi ng f or ce ( y) l ef t
$ ( c10) dr i vi ng f or ce ( y) r i ght
$ ( c11) st eer i ng f or ce / st eer angl e / r ack t r avel
{ whl _z_l whl _z_r l at _l l at _r al i gn_l al i gn_r br ake_l br ake_r dr i ve_l dr i ve_r st eer }
- 100. 0000 - 100. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 80. 0000 - 80. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 60. 0000 - 60. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 40. 0000 - 40. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
- 20. 0000 - 20. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 000
20. 0000 20. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
40. 0000 40. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
60. 0000 60. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
80. 0000 80. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
100. 0000 100. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000 0. 0000
153
Tutorials and Examples
Example Wheel-Envelope Input File
The following is an example of a wheel-envelope input file (.wen) that you can use to control a wheel-
envelope analysis.
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MDI _HEADER
[ MDI _HEADER]
FI LE_TYPE = ' wen'
FI LE_VERSI ON = 5. 0
FI LE_FORMAT = ' asci i '
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNI TS
[ UNI TS]
LENGTH = ' mm'
FORCE = ' newt on'
ANGLE = ' deg'
MASS = ' kg'
TI ME = ' sec'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MODE
[ MODE]
STEERI NG_MODE = ' angl e'
VERTI CAL_MODE = ' l engt h'
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GRI D
[ GRI D]
BOUNDARY_STEERI NG_GRI D = 100. 0
BOUNDARY_WHEEL_GRI D = 20. 0
I NTERI OR_STEERI NG_GRI D = 100. 0
I NTERI OR_WHEEL_GRI D = 20. 0
$- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DATA
[ DATA]
$COLUMN: i nput t ype: t ype of i nput dat a: si de:
$ ( c1) wheel z di sp / f or ce l ef t
$ ( c2) wheel z di sp / f or ce r i ght
$ ( c3) l at er al f or ce ( y) l ef t
$ ( c4 l at er al f or ce ( y) r i ght
$ ( c5) al i gni ng t or que ( z- axi s) l ef t
$ ( c6) al i gni ng t or que ( z- axi s) r i ght
$ ( c7) br ake f or ce ( y) l ef t
$ ( c8 br ake f or ce ( y) r i ght
$ ( c9) dr i vi ng f or ce ( y) l ef t
$ ( c10) dr i vi ng f or ce ( y) r i ght
$ ( c11) st eer i ng st eer angl e / r ack t r avel
$ {whl _z_l whl _z_r l at _l l at _r al i gn_l al i gn_r br ake_l br ake_r
dr i ve_l dr i ve_r st eer }
- 120. 0 - 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 500. 0
80. 0 80. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 500. 0
90. 0 90. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 300. 0
120. 0 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 - 200. 0
Note: For wheel-envelope input files, Adams/Car ignores columns three through ten: (left and
right) lateral force, aligining torque, brake force, and driving force.
Adams/Car

154
120. 0 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 200. 0
85. 0 85. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 350. 0
80. 0 80. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
60. 0 60. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
30. 0 30. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 450. 0
- 30. 0 - 30. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 450. 0
- 75. 0 - 75. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
- 120. 0 - 120. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 0. 0 500. 0
155
Tutorials and Examples
Example Wheel-Envelope Output File
A wheel-envelope output file (.wev) contains a header and a data table, as explained next.
The first three lines comprise the header and contain the following information, in this order:
Type of file
Adams dataset title
Date and time of file creation
The table that follows the header contains the following information:
The first column shows the solution step number
Columns 2-4 show the data for the left wheel center x, y, z
Columns 5-7 show the data for the left wheel axis point x, y, z
Columns 8-10 show the data for the right wheel center x, y, z
Columns 11-13 show the data for the right wheel axis point x, y, z
The following is an example of a wheel-envelope output file:
Adams/ Car Wheel Envel ope Anal ysi s Out put Fi l e - acar _v10. 0
Adams/ Car Assembl y
2000- 01- 19 16: 41: 21
1 -4.2702 -673.57 205.00 -348.83 -1611.7 170.29 7.0293 670.69 205.00 303.63 1620.7 107.88
2 -4.6463 -681.45 225.00 -344.63 -1621.7 206.15 6.7629 678.55 225.00 307.97 1628.3 139.91
3 -4.9532 -687.82 245.00 -340.16 -1630.0 239.60 6.5706 684.92 245.00 311.28 1634.4 170.26
4 -5.2433 -692.82 265.00 -334.67 -1637.0 271.40 6.3755 689.93 265.00 314.35 1639.0 198.89
5 -5.5240 -696.55 285.00 -328.07 -1643.0 301.70 6.1779 693.66 285.00 317.43 1642.1 225.76
6 -5.7905 -699.08 305.00 -320.38 -1648.0 330.44 5.9864 696.18 305.00 320.67 1643.8 250.76
7 -6.0372 -700.45 325.00 -311.59 -1652.1 357.51 5.8099 697.55 325.00 324.25 1644.1 273.76
8 -6.2583 -700.71 345.00 -301.72 -1655.3 382.78 5.6583 697.79 345.00 328.31 1643.0 294.55
9 -6.4469 -699.89 365.00 -290.74 -1657.8 406.03 5.5424 696.93 365.00 333.04 1640.3 312.88
10 -6.5953 -698.01 385.00 -278.64 -1659.4 426.98 5.4752 695.00 385.00 338.63 1636.2 328.39
... .......
Adams/Car

156
Example Plot Configuration File
The following is an example of an Adams/Car plot configuration file:
$------------------------------------------------------------plot
[ PLOT]
NAME = ' t oe_angl e'
SUBTI TLE = ' Toe Angl e'
TI ME_LOWER_LI MI T = 1
TI ME_UPPER_LI MI T = 1e+10
( PLOT_AXES)
{axi s_name t ype l abel scal i ng di vi si ons l ower _l i mi t upper _l i mi t }
' vaxi s' ' ver t i cal ' ' Angl e' ' l i near ' 6 0 0
' haxi s' ' hor i zont al ' ' Wheel Tr avel ' ' l i near ' 10 0
$------------------------------------------------------------plot_curve
[ PLOT_CURVE]
NAME = ' t oe_angl e_r '
PLOT = ' t oe_angl e'
VERTI CAL_AXI S = ' vaxi s'
HORI ZONTAL_AXI S = ' haxi s'
VERTI CAL_COMPONENT = ' t oe_angl e. r i ght '
HORI ZONTAL_COMPONENT = ' wheel _t r avel . ver t i cal _r i ght '
LEGEND_TEXT = ' Ri ght '
COLOR = ' r ed' STYLE = ' sol i d'
SYMBOL = ' none'
LI NE_WEI GHT = 1. 5
$------------------------------------------------------------plot_curve
[ PLOT_CURVE]
NAME = ' t oe_angl e_l '
PLOT = ' t oe_angl e'
VERTI CAL_AXI S = ' vaxi s'
HORI ZONTAL_AXI S = ' haxi s'
VERTI CAL_COMPONENT = ' t oe_angl e. l ef t '
HORI ZONTAL_COMPONENT = ' wheel _t r avel . ver t i cal _l ef t '
LEGEND_TEXT = ' Lef t '
COLOR = ' bl ue' STYLE = ' dash'
SYMBOL = ' none'
LI NE_WEI GHT = 2. 0
157
Tutorials and Examples
Adams/Car Dynamic Suspension Analysis
This example demonstrates the ability to carry out Dynamic Suspension Analysis. Earlier, the Suspension
Assembly was limited to carry out only quasi-static simulation. Now, your suspension assembly is
simulated with Adams/Solver Simulate/Dynamic command.
This feature allows you to directly provide a RPCIII file or define View Functions to specify J ack and
Steering motion as a function of displacement, force etc.
Model Description
Investigate the model and carry out a Dynamic Analysis
Here you first analyze a double wishbone suspension with rigid lower control arm
1. Start Adams/Car, Select Standard Interface.
2. Extract the Dynamic_Suspension.cdb to your hard drive. Add this to your session by going to
Tools - Database Management - Add to Session. In the Database Alias Field enter
Dynamic_Suspension and browse to the location on your disk where you extracted the
Dynamic_Suspension.cdb.
A Suspension Assembly consisting of a
double wishbone suspension and a rack
and pinion steering system is provided.
A dynamic suspension analysis is carried
out to actuate the wheel pads across a
range of frequencies. We are interested in
looking at the lower control arm bushing
force and how the force changes by
replacing the rigid lower control arm by
a flexible body. In addition, we use the
flex body swap dialog box to switch a
rigid lower control arm with a flexible
one. We then plot the stress on the
flexible body node and visualize it.
Adams/Car

158
3. Create a new Suspension assembly: File - New - Suspension Assembly. Fill the dialog box as
indicated below. To select the subsystems, Right-click - Search - <acar_shared> to open the file
browser.
4. The suspension assembly should be displayed.
5. To simulate using the Dynamic Solver Statements, go to Simulate - Suspension Analysis -
Dynamic.
6. You will use View Functions to define the vertical displacement of the J ack. The function below
steps up the amplitude from 10 mm in bounce and rebound to 30 mm respectively with a
frequency of 4 Hz.
159
Tutorials and Examples
(Tire Forces can be added using the function like Static Loads Analysis)
7. To animate the results, from the Review menu, select Animation Controls. Animate the model
and observe the change in the suspension travel.
Review the results
Plot the bushing force in the lca_front bushing:
1. Hit theF8 key in Adams/Car to switch to Adams/PostProcessor.
Adams/Car

160
2. Locate the bkl_lca_front_force and bkr_lca_front_force REQUEST under user-defined
REQUESTs:
The fz_front component corresponds to magnitude of the force in the Z direction. Plot this quantity to
obtain a figure similar to the following:
Change Rigid Lower Control arm to be a Flexible Body
Here you use the Flex body Swap dialog box feature available in the Standard interface to replace the
left rigid lower control arm with a flexible body. The MNF file used for representing this flex body is
created in Nastran.
To replace the lower control arm:
1. Go to Adjust - General Part - Rigid to Flex. This displays the flex body swap dialog box.
161
Tutorials and Examples
2. Right click the Current Part Field - Pick and select the Left Lower control arm. In the MNF File
field, Right-click - Search - <dynamic_suspension>\flexbodys.tbl and select the
left_lca_mnf_input.mnf mnf file.
3. Click on the Connections tab next and highlight the Move column and click Preserve
Expression button and click OK.
Adams/Car

162
4. A dialog box will pop up warning you that orientation parameterization will be lost. Click OK.
Now, the rigid lower control arm in red is replaced by the white flexible body.
Simulate the Model
You again carry out a dynamic analysis with this model now containing a flexible body.
1. Go to Simulate - Suspension Analysis - Dynamic.
2. Name the Output Prefix to be Rigid_Flex and keep the remaining dialog box unchanged.
After the simulation is successful, animate the model to make sure it is behaving as expected.
Review & Compare Results
Here you plot the bushing force for the lower control arm and compare the force on left and right side.
To review the results:
1. Locate the bkl_lca_front_force and bkr_lca_front_force REQUEST under user-defined
REQUESTs:
163
Tutorials and Examples
2. Because of the left lower control arm being a flexible body, note the difference in the bushing
force.
Optional: Load Durability Plugin to display Stresses and Identify the Hotspots
Here you will load the Durability Plugin and identify the hot-spots on the flexible lower control arm and
also plot the nodal stresses. For better visualization, in the Adams/Car Standard Interface change the
background color from Black to Gray (Settings - View Background Color).
To Display Stresses and animate the flex body:
1. Change to Adams/Postprocessor and switch to Animation mode.
2. Go to View - Load Animation - select Rigid_Flex_dynamic to load the animation.
3. Go to Tools - Plugin Manager and check the load Adams/Durability option.
4. In the Animation tab right click the Component field and select the flexible body
gel_lower_control_arm_flex. This only displays the flexible body and not the whole model.
Adams/Car

164
5. Select the Contour Plots tab; set Contour Plot Type to Von Mises Stress and check Display
Legend.
6. Select the Hot Spots tab; check Display HotSpots and fill the dialog box as shown below. You
are interested in looking at the top 2 hotspots on the flexible body.
7. Play the animation; you would observe the change in stress with the hot spots being identified.
8. From the above exercise, you can note that Node with ID 709 experiences the maximum Von
Mises Stress. You can now, plot the stress at this node. Go to Durability menu at the top and
select Nodal Plots. The dialog for Nodal Plots pops up. In the Select Node List field, fill in 709,
Check Von Mises and click OK.
165
Tutorials and Examples
9. Switch back to Plotting mode in the Adams/PostProcessor, Set the Source to be Result Sets;
select gel_lower_control_arm_flex_Stress and component to be node_709_Von_Mises. Your
plot should look something like shown below.
Remarks
The above example, demonstrates a simple use of applying a non standard excitation to a
suspension assembly. You could use an RPCIII file from test data to actuate your suspension or
use other Adams/View functions. An example RPCIII file (roadprofile_lr_channels.drv) has
been provided in the shared car database with your Adams installation
(install_dir\acar\shared_car_database.cdb\loadcases.tbl).
While animating or during plotting of the hot spots/stresses for the first time, you may see a
progress bar. This is showing the caching of the Flex Cache Files for improving performance for
future animation and post processing.
Adams/Car

166
Adding the vertical setup mode of A/Car Suspension
Testrig
This example demonstrates the enhancement of MDI_SUSPENSION_TESTRIG for quasi-static
suspension analysis. The vertical mode named "VERTICAL_MODE_FOR_SETUP" in loadcase file is
added to the suspension testrig. "VERTICAL_MODE_FOR_SETUP" means the vertical control method
at time=0. Early the user could select only the "VERTICAL_MODE" for the simulation. This feature
allows you to set the vertical mode method at the both condition the setup phase(time=0) and the
simulation phase.
This new mode is very important for the model including adjustable force. Because when the user
correlates with test data, it is important for users how the initial condition is setup in real world and in the
simulation.
Model Description
Performing the analysis in order to investigate the vertical setup mode.
Here you first analyze a double wishbone suspension including adjustable force.
1. Start MD Adams R3, Select Standard Interface.
A Suspension Assembly consisting of a
double wishbone suspension including
adjustable force and a rack and pinion
steering system is provided.
We carry out quasi-static suspension
analysis with two setup mode for
vertical control. One is
"wheel_center_height". Other is
"contact_patch_height. And we then
plot the toe angle in order to make sure
the differences.
167
Tutorials and Examples
2. Create a new Suspension assembly: File - New - Suspension Assembly. Fill the dialog box as
indicated below. To select the subsystems, Right-click - Search - <acar_shared> to open the
file browser.
3. The suspension assembly should be displayed.
4. Go to Adjust - Adjustable Force. And select
".frontsusp_acforce.TR_Front_Suspension_torsional.afl_toe_adjustment" for the "Adjustable
Force" field. Then you can see the desired value (-0.5). This value means that the toe angle is
adjusted to -0.5 at setup phase.
5. Go to Simulate - Suspension Analysis - Parallel Wheel Travel
Adams/Car

168
6. Set up the analysis as follows. In this case, the vertical travel of the wheel is controlled to keep
0mm in setup phase.
7. Select OK.
8. Go to Simulate - Suspension Analysis - Parallel Wheel Travel again
169
Tutorials and Examples
9. Set up the analysis as follows for the second analysis. In this case, the vertical travel of the
contact patch is controlled to keep 0mm in setup phase.
10. Select OK.
Review the results
Plot the toe angle in two analyses:
1. Hit the F8 key in Adams/Car to switch to Adams/PostProcessor.
2. From the simulation list, select the two analyses.
3. From the right of the dashboard, set Independent Axis to Data. (The Independent Axis Browser
appears. You perform the next four steps in the browser.)
4. From the Request list, select wheel travel. You might have to scroll down to see this entry.
Note: "Absolute" at "Control Mode" means that the vertical displacement is controlled the
displacement with absolute value. "Relative" means that the displacement is relative to the
position at the setup phase.
Adams/Car

170
5. From the Component list, select vertical_left.
6. Select OK.
7. Locate the testrig.toe_angle REQUEST under user-defined REQUESTs. And select left in
component list.
8. Select Add curve. You can see the plot of wheel_travel vs toe_angle.
The toe angle in Red line(case1...) should be -0.5 by adjustable force when wheel_travel is 0.
9. Create New page.
10. From the right of the dashboard, set Independent Axis to Data. And select jfl_jack_force_data
in request list and displacement in component list.
11. Plot the toe angle again. You can see the plot of contact_patch_height vs toe_angle.
171
Tutorials and Examples
The toe angle in Blue line(case2...) should be -0.5 by adjustable force when contact_patch_height
is 0.
Remarks
"VERTICAL_SETUP_MODE" is available with all quasi-static suspension analysis. When you
create the loadcase file, the setup mode is described as follows in loadcase file.
[ MODE]
STEERI NG_MODE = ' angl e'
$ wheel_center_height/ contact_patch_height
VERTICAL_MODE_FOR_SETUP = 'contact_patch_height'
VERTI CAL_MODE = ' wheel _cent er _hei ght '
VERTI CAL_TYPE = ' absol ut e'
COORDI NATE_SYSTEM = ' vehi cl e'
"Control Mode" is also described as follows in loadcase file.
[ MODE]
STEERI NG_MODE = ' angl e'
$ wheel _cent er _hei ght / cont act _pat ch_hei ght
VERTI CAL_MODE_FOR_SETUP = ' cont act _pat ch_hei ght '
VERTI CAL_MODE = ' wheel _cent er _hei ght '
VERTICAL_TYPE = 'absolute'
COORDI NATE_SYSTEM = ' vehi cl e'
Adams/Car

172
Adding the length mode for roll analysis of A/Car
Suspension Testrig
This example demonstrates the enhancement of MDI_SUSPENSION_TESTRIG for quasi-static
suspension analysis. The length mode is added to roll analysis of the suspension testrig. The length mode
means that the user can define the vertical length of the center of the table for roll analysis. Early the user
could set only vertical total force. This feature allows you to set the vertical mode the either of Force or
Length for roll analysis.
Model Description
Performing the roll analysis in order to investigate the vertical mode.
Here you first analyze a double wishbone suspension including adjustable force.
1. Start MD Adams R3, Select Standard Interface.
2. Create a new Suspension assembly: File - New - Suspension Assembly. Fill the dialog box as
indicated below. To select the subsystems, Right-click - Search - <acar_shared> to open the file
browser.
A Suspension Assembly consisting of a
double wishbone suspension including
adjustable force and a rack and pinion
steering system is provided.
We carry out roll analysis in quasi-
static suspension analysis with two
setup mode for vertical control. One is
"Force". Other is "Length". And we
then plot some requests in order to
make sure the differences.
173
Tutorials and Examples
3. The suspension assembly should be displayed.
4. Go to Adjust - Adjustable Force. And select
".frontsusp_acforce.TR_Front_Suspension_torsional.afl_toe_adjustment" for the "Adjustable
Force" field. Then you can see the desired value (-0.5). This value means that the toe angle is
adjusted to -0.5 at setup phase.
5. Go to Simulate - Suspension Analysis - Roll & Vertical Force
Adams/Car

174
6. Set up the analysis as follows. In this case, the vertical mode is controlled with Force mode
during the simulation.
7. Select OK.
8. Go to Simulate - Suspension Analysis - Roll & Vertical Force again
175
Tutorials and Examples
9. Set up the analysis as follows. In this case, the vertical mode is controlled with Length mode
during the simulation.
10. Select OK.
Review the results
1. Hit the F8 key in Adams/Car to switch to Adams/PostProcessor.
2. From the simulation list, select the first analyses named "mode_Force_roll_angle".
3. From the right of the dashboard, set Independent Axis to Time.
Adams/Car

176
4. Locate the left_tire_force and right_force REQUEST under user-defined REQUESTs. And
select normal in component list.
5. Select Add curve. The sum of two curves is always 6000N.
6. Create New page.
7. From the simulation list, select the first analyses named "mode_Length_roll_angle".
8. Locate the jfl_jack_force_data and jfr_jack_force_data REQUEST under user-defined
REQUESTs. And select displacement in component list.
177
Tutorials and Examples
9. Select Add curve. The sum of two curves is constant. This means that the center of the table is
constant during simulation.
Remarks
When you create the loadcase file for roll analysis, the vertical setup mode is described as
follows in loadcase file.
[ MODE]
STEERI NG_MODE = ' angl e'
VERTI CAL_MODE_FOR_SETUP = ' wheel _cent er _hei ght '
$ roll_angle / roll_angle_disp
VERTICAL_MODE = 'roll_angle_disp'
COORDI NATE_SYSTEM = ' i so'
Adams/Car

178
General Actuation Analysis feature examples
Extended description:
Perform actuation analysis on assemblies.
Create and modify RPC request map files in a much easier fashion.
Create and modify actuator setting files (actuator input files) to "import/export" actuator settings.
Modify actuator parameters in an assembly.
Submitting an actuation analysis
For submitting an actuation analysis, do the following,
1. Open a valid assembly for analysis. The example assembly (actuation_example.asy) provided
with the installation may be used as an example.
2. Open the 'General Actuation Analysis' dialog from the menu. (Simulate - General Actuation
Analysis - Submit Analysis). Note that all valid assemblies open in a session can be accessed
through the drop down provided.
3. Enter the required parameters in the dialog. Note that the input parameters can be categorized into
3 classes (output control, simulation, actuator setup) as shown in the figure above.
Output control parameters: To define the output files generated as part of the analysis.
Simulation parameters: To define the simulation length, mode etc.
179
Tutorials and Examples
Actuator setup: To setup the actuator parameters.
Note that the actuator setup is done through the 'RPC request map file' and the 'Actuation input
file'. Sample files have been provided with the installation and may be used as an example.
4. Hit the OK or Apply button of the dialog, when all parameters have been input.
5. The simulation progress will be indicated by verbose messages displayed in the message
window.
6. The end of the simulation will be indicated as shown in the snapshot below,
Adams/Car

180
7. Once the analysis is finished, open the post processor (F8) and import the RPC file generated as
part of the simulation output. The RPC would be located in the current working directory of the
session. Plot the results. An example plot is shown in the figure below,
Setting actuator parameters
The user is provided with the option of using a wizard of a tabular interface for editing actuator data.
These options can be accessed through the Adjust - Actuators - Table/Wizard menus.
181
Tutorials and Examples
The wizard interface is as shown in the figure below,
The desired assembly can be selected from the drop down list of valid assemblies open in the session.
Upon selection, all actuators in that assembly are populated in the Actuator drop down.
The desired actuator can be selected either through the drop down or using the up-down arrow buttons.
Parameter data related to the selected actuator is displayed in the dialog below and can be set by the user.
The settings are saved to the assembly, using the OK/button. Facility is provided to switch to the "table
view" from the wizard.
Adams/Car

182
The "table view" for setting actuator parameters is shown below,
The table like interface provides the user with an easy way of looking at a list of actuators at once and
activating/deactivating an entire selection. As shown in the figure the desired set of actuators is selected
first. Using the 'Activate Selection' and 'De-activate Selection' buttons, the selected set can be activated
and de-activated at once.
Besides this, the user can choose to edit the list of selected actuators in the wizard view, using the 'Edit
Selection in Wizard' button.
The actuator settings can be saved to a file using the Request map editor functionality, described later.
Request map editor
The request map editor allows the user to work with (view or edit) requests that are defined in the
database or import a request map file and edit the requests defined there.
183
Tutorials and Examples
In the "database mode", the user can select to display all browse for a set of requests from the assembly
to select (Using the All and Browse buttons respectively).
In order to edit the request data in the table, the user needs to explicitly switch to the edit mode, using
the corresponding check button provided.
The request data is displayed to the user in the tabular form and can be sorted, which makes it easier to
locate and edit the desired request(s). The user may choose to apply the changes to the assembly directly,
or alternatively, save the data to a request map file.
Opening/Saving an actuation input map file
An actuation input map file contains a series of parameter-value pairs corresponding to one or more
actuators in an assembly. The parameters include major and minor roles of the actuator, scale factor,
offset, time offset, RPC function etc. Such a file provides an easy way of setting up a large number of
actuators at once.
Adams/Car

184
A facility has been provided to the user to view/open an actuation input map file or create one using
actuator data from a valid assembly. The open/save functionality can be accessed from the menu-group
Simulate - General Actuation Analysis - Actuation Input File.
It's not necessary to have any valid active assemblies open in a session, in order to view an existing
actuation input file. Select the desired file and click on the button with a magnifying glass, in order to
open the file. Note that the file gets opened in the user set editor as defined by the optional environment
variable MDI_ACAR_USE_EDITOR. If the variable is not defined, then the file is opened in the
message window.
If a valid assembly is open in the session, then the verify functionality is available, by which the user can
compare the actuator data in an assembly, with that in the file. The comparison reports actuators present
in the file that are absent in the assembly as well as incorrect roles set for the actuator, if any. A sample
comparison message is shown below,
185
Tutorials and Examples
Alternatively, a valid assembly can be opened and the actuator settings can be changed manually for each
desired actuator. Using these settings, an actuation input map file can be generated as follows,
A facility to export the settings of actuators that belong to the specific type is provided. By default data
belonging to all actuators within an assembly is exported. Specify the file name and the database location
to save the file and hit the OK/Apply button to create the file.
Adams/Car

186
Path optimization feature example
Extended description:
Path optimization is a tool that builds a path around a closed road course that approximates the optimum
or fastest path for a given vehicle. With this tool, we can visualize the input road file overlaid with the
centre line for the optimized path.
In ACar, use Simulate->Full Vehicle Analysis->Path Optimization command to launch the tool. The
dialog for path optimization in ACar looks like the one as below
The input road file can be visualized when the "Show" button is pressed. The mandatory fields on this
dialog are the "Input Road Data File" and the "Output Path File Name". The road specified by input file
can be optimized by providing values for mandatory fields and hitting the OK/Apply button. The output
file generated contains the optimized road.
After the optimized road file is generated, the centerline for the optimized path is shown overlaid with
the input road. The figure below shows input road file overlaid with the red line, which is the centre line
for the optimized path.
187
Tutorials and Examples
In AChassis, use Utilities->Path Optimization command to launch the tool. The dialog for path
optimization in AChassis looks like the one as below
Adams/Car

188