Professional Documents
Culture Documents
2 Adams/Car
About Adams/Car
About Adams/Car
Adams/Car, part of the MD Adams 2010® 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.
Welcome to Adams/Car 3
About 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.
4 Adams/Car
About Adams/Car
Learning the Basics
6 Adams/Car
Starting Adams/Car
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. For more information, see Running and Configuring Adams.
This topic describes how you start the two Adams/Car Interface Modes, standard interface or template
builder.
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 entity’s type from the entity’s 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.
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation
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
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.
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 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.
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. Learn more with Display
Attribute dialog box.
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 object’s transparency,
consider setting the object’s render mode to wireframe.
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.
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.
Part ground
Is connected to:
LINK_1 via JOINT_2 (Revolute Joint)
LINK_6 via JOINT_1 (Revolute Joint)
LINK_1 via FORCE_1 (Single_Component_Force)
Part LINK_1
Is connected to:
LINK_5 via JOINT_3 (Revolute Joint)
ground via JOINT_2 (Revolute Joint)
ground via FORCE_1 (Single_Component_Force)
Learning the Basics 17
Navigating Through a Modeling Database
Part LINK_5
Is connected to:
LINK_1 via JOINT_3 (Revolute Joint)
LINK_6 via JOINT_4 (Revolute Joint)
Part LINK_6
Is connected to:
LINK_5 via JOINT_4 (Revolute Joint)
ground via JOINT_1 (Revolute Joint)
Unconnected Parts:
LINK_1
Each time you select a different part in the Tree list of the Database Navigator, the graphical display
changes to show the select part at its center.
• Select .
Constraints tool .
Learning the Basics 21
Working with the Information Window
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
Tip: You may want to zoom in on the object on the screen to more easily place the cursor
over just that object.
22 Adams/Car
Working with the Information Window
To use the Database Navigator to display information about objects in the Information
window:
1. On the Status bar, 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.
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.
This Character:
* (asterisk) Zero or more characters
? Any single character
[ab] Any one of the characters in the brackets
Learning the Basics 25
Working with the Information Window
This Character:
[^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
Setting Preferences
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.
5. Select OK.
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.
Learning the Basics 31
Setting Display Options
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.
32 Adams/Car
Setting Display Options
4. On the Window menu in the View Accessories dialog box, select Exit.
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.
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.
The sections below explain how to work with 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.
Tip: Press the F4 key to toggle the display of the coordinate window.
Command Navigator
Enables you to enter Adams/View commands without having to know the entire syntax of the commands.
See Command Navigator dialog box help.
The Command Navigator displays a list of all Adams/View command Keywords. 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.
About Commands
The commands that you enter in the command window or Command Navigator are made up of keywords,
parameters for the keywords, and parameter values as shown next:
{keywords} {parameters=values}
In a command:
• Keywords correspond to menu selections.
• Parameters correspond to dialog box choices.
• Parameter values correspond to values you enter or select in the dialog boxes.
For example, the following command contains the keyword constraint followed by other keywords, then
by parameters, such as the name of the joint. In the example, an ! indicates a comment and an & at the
end of a line indicates that the command continues onto the next line.
constraint create joint revolute & !{keywords}
joint_name=.model_1.JOINT_1 & !{parameter=value}
i_marker_name=.model_1.PART_1.MAR_3 & !”&” for continuation
j_marker_name=.model_1.ground.MAR_1 &
friction_enabled = no
To help you enter commands correctly, your template-based product checks for syntax errors whenever
you enter a space, comma, or equal sign (except in a string or expression) in the command window. If it
detects an error, it displays a message above the command information area. You cannot proceed until
you correct the error.
Learning the Basics 37
Using Template-Based Product Tools
Continuing Commands
You can continue a command you enter in the command window for as many lines as necessary. To
continue a command, place an ampersand (&) at the end of a line and then continue the command on the
next line. Note that a command must be entered all at once.
To create: Enter:
A comment alone on one line !comment <CR>
A command followed by a comment on one line command !comment<CR>
A command followed by a comment on one line, with the command continuing on &!comment<CR>
the next line command continue
command
A command followed by a comment on one line, with the comment continuing on &!comment<CR>
the next line, and the command continuing on the following line command &!comment<CR>
continue
command
Entering Abbreviations
You can enter abbreviations for commands and parameters when you are entering commands directly in
the command window. You should always use full keywords for macros and command files to avoid any
future compatibility problems. Also note that if you use abbreviations, your template-based product takes
longer to execute your commands because it must substitute an abbreviation with its full command.
Reviewing Commands
You can use the scroll bar at the side of the command information area to view the last 50 commands that
were entered.
Learning the Basics 39
Using Template-Based Product Tools
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 Adams/View command files.
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
Learning the Basics 41
Using Template-Based Product Tools
Learn about:
• Displaying Object Information and Accessing Information Window
• Viewing Model Topology Map Through Information Window
• Verifying Your Model
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.
42 Adams/Car
Using Template-Based Product Tools
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.
Note: You can change the name of the log file through the initialization file .mdi_init. For more
information, see Running and Configuring Adams.
44 Adams/Car
Files and Commands
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.
Learning the Basics 45
Files and Commands
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 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.
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. See Generating a Subsystem.
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
Building Models 49
Subsystems
• 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.
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.
2. Press F1 and then follow the instructions in the dialog box help for New Subsystem.
50 Adams/Car
Subsystems
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.
To add a subsystem:
1. From the File menu, point to Manage Assemblies, and then select Add Subsystem.
Building Models 51
Subsystems
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 the File 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 the File 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.
• Reassembles the assembly, which includes re-assigning the communicators.
52 Adams/Car
Subsystems
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 File Format and XML File Format.
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.
To save a subsystem:
• While viewing a subsystem, from the File menu, do one of the following:
Building Models 53
Subsystems
• 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 Analysis and Kinematic Analysis.
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
54 Adams/Car
Subsystems
identify how your product should use the subsystem when creating an assembly of subsystems for
Analysis.
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.
Building Models 55
Assemblies
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.
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.
Building Models 57
Assemblies
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.
58 Adams/Car
Property Files
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 .
Learn about Modifying Component Property File.
Building Models 59
Templates
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. See Generating a Subsystem.
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.
60 Adams/Car
Templates
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.
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.
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.
Saving Templates
Using the Template Builder, you can save your files in ASCII or Binary File 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.
Building Models 61
Templates
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 the Major 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.
62 Adams/Car
Test-Rig Templates
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. Just 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.
3. Select OK.
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.
{comment_string}
'Simple Double Wishbone Suspension'
$--------------------------------------------TEMPLATE_HEADER
[TEMPLATE_HEADER]
MAJOR_ROLE = 'suspension'
TIMESTAMP = '1999/07/15,17:21:32'
HEADER_SIZE = 5
You should remove all the lines from the beginning of the file up to, and including, the line containing
the HEADER_SIZE attribute.
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:
variable create &
variable_name = .__acme_4PostRig.role &
string_value = "analysis" &
comments = "Memory for Adams/Car major role"
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.
Building Models 65
Test-Rig Templates
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:
variable create &
variable_name = .__acme_4PostRig.model_class &
string_value = "testrig" &
comments = "Memory for Adams/Car model class"
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:
variable create &
variable_name = .__acme_4PostRig.testrig_class &
string_value = "full_vehicle" &
comments = "Memory for Adams/Car testrig class"
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.
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
This template-based
product: Has these communicator minor roles:
Adams/Car • any (see Communicator Minor Role: Any )
• inherit (see Communicator Minor Role: Inherit )
• front (see Communicator Minor Role: Front, Rear, Middle)
• rear (see Communicator Minor Role: Front, Rear, Middle)
• trailer
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.
70 Adams/Car
Communicators
• 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.
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
Building Models 71
Communicators
The pair: Belongs to the class: From minor role: To minor role:
col_strut_mount mount front
cil_strut_mount mount front
col_strut_mount mount any
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.
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.
72 Adams/Car
Communicators
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
74 Adams/Car
Introducing the Components
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
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.
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
Note: You can only change a limited number of parameters in the Standard Interface.
Note: In Adams/Car you can change the component definition only in the Standard Interface.
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 don’t.
• 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
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 Builder’s 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
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
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 part’s 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.
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.
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
86 Adams/Car
Parts
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.
Nonlinear Beams
A nonlinear beam consists of one cylindrical/rectangular segment or several segments connected to each
other at Coordinate References. The cylindrical 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.
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.
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.
See Switch Part Example for Adams/Car.
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.
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 part’s 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.
• 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.
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.
92 Adams/Car
Geometry
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.
Attachments
When working with template-based products, you can use two types of attachments:
• Joints
• Bushings
Joints
Joints 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):
You can use different parametric orientation options to define the location and direction of the joint.
Nonlinear Bushings
Linear Bushings
qk = rk
q k = m sgn r k
D
2
with m = rl
l=1
and r k = Hk xk – Qk
where the Adams internal variables are:
Hk - Horizontal (displacement) scaling for the kth direction (disp_scale); can be used to perform unit
conversions
Qk - Displacement offset for the kth 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)
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, Qk, to determine the transformed
displacement vector, qk, which becomes the lookup point in the selected stiffness force characteristic (see
next).
The Stiffness Force, f
f k = G k – V k y k q k' v k
f k = G k – V k w k y k q k' v k
rk
with w k = ------- .
m
Working with Components 97
Attachments
fk - Stiffness component of the force in the kth direction, determined by accounting for preload,
scaling factors, and inter-axial coupling
yk - Force returned internally by the user-defined (positive-positive) bushing stiffness
characteristic for the kthdirection
wk - Weighting of the returned force for the kth direction (0 to 1, for coupled directions only)
See the following sections for the precise mathematical descriptions of the two alternative coupling
formulations.
Note about the scaling factors, V and H:
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.
y i q i' v i = y i q i = k i q i
Piecewise Linear
The piecewise linear characteristic is defined as:
98 Adams/Car
Attachments
m–1
y q v = y q = k 1 q +
kl + 1 – kl q – bl q bl
l=1
where:
l+1 l
Note that bi b i is a necessary condition for all n.
A typical characteristic from this formulation looks similar to the following:
m–1 0 l 0
dy spw 2
------------- = k 1 +
dq kl + 1 – kl l 3 – 2l 0 l 1
l=1 1 l 1
with:
e
q – b l – ---
2
l = ----------------------------
e
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.
l+1 l
Note that as with the piecewise formulation, b i b i is a necessary condition for all n. Setting e to
zero collapses this formulation to the piecewise formulation.
100 Adams/Car
Attachments
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):
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:
y i q i' v i = y i q i = AKISPL q i 0 ID i
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 = AKISPL q i v i ID i
where:
Working with Components 101
Attachments
v i = STEP p i – P – 1 P 1
with:
p i = A i x· i – E i
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:
y i q i' v i y i q i = AKISPL q i 0 ID i
102 Adams/Car
Attachments
The following is an example of the typical behavior of a hysteretic bushing, excited to increasing
amplitude:
Displacement Force
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:
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.
104 Adams/Car
Attachments
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:
A typical characteristic from this formulation will look similar to the following:
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.
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)
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.
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.
Working with Components 107
Attachments
Linear (stiffness_type = 1)
For a linear characteristic, the parameter stiffness_value should be set equal to the required stiffness, k.
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.
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.
where:
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.
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.
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
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.
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.
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.
110 Adams/Car
Attachments
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.
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.
Forces
You can build the following types of forces in Template Builder:
• Springs
• Dampers
• Bumpstops
• Reboundstops
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
112 Adams/Car
Forces
Nonlinear Springs
Linear Springs
• 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
, FUNCTION=AKISPL(OffsetCalc + DM(I_id, J_id), 0, Spline)\
, TRANSLATIONAL
• 1117 - Branch ID
Working with Components 115
Forces
• trimLength - The desired displacement, as specified in the property file, which you can edit
using the Property File Editor.
• I/J marker - The air spring's I and J markers of the SFORCE.
• AKSIPL - Is the Adams/Solver function that interpolates data using Akima’s 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.
Nonlinear Dampers
Linear Dampers
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.
You can also specify gas preload force for nonlinear dampers using XML-format property files.
To specify gas preload:
1. Right-click a damper, point to its name, and then select Modify.
The Modify Damper dialog box appears.
2. Specify an XML property file.
3. Select the Curve Manager tool .
4. Select the Properties tab.
5. Under Gas Preload, select one:
• None - No preload is added to the damper force calculations.
• Constant - A constant force is added to damper force calculations.
• Nonlinear - Preload is calculated by interpolating a spline. The independent value of the spline
is the relative displacement between the I and J markers.
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.
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:
dmCalc - Clearance
where:
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:
Fdamping = STEP MAX(0, impact_length - DM(i,j)), 0, 0, 0.1, -
dampingRate * VR ( marker i, marker 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 damping = STEP MAX(0, impact_length - DM(i,j)), 0, 0, 0.1, -
120 Adams/Car
Forces
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.
Working with Components 121
Forces
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:
dmCalc + Clearance
where:
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 elastic = POLY(MAX(0,DM(i, j) - impact_length),0,0,- linearRate,-
quadraticRate,-cubicRate)
• nonlinear (spline based) - The force is interpolated using Akima's method based on force vs.
deflection data.
F elastic = -1.0*(AKISPL(MAX(0,DM( i , j ) - impact_length),0,Spline))
122 Adams/Car
Forces
The damping force always acts in opposition to the velocity. In an XML (XML File Format) 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.
Fdamping = STEP (MAX(0, DM(I,J) - impact_length), 0, 0, 0.1, -dampingRate
* VR ( marker i, marker j ))
• nonlinear (spline based) - The damping force is interpolated using Akima’s 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 damping = STEP (MAX(0, DM(I,J) - impact_length), 0, 0, 0.1, -AKISPL
VR ( marker i, marker j ), 0, dampingSpline ))
• TeimOrbit (TeimOrbit File Format) reboundstop property files (extension .reb) - Standard
TeimOrbit reboundstop property files correspond to nonlinear elastic forces with linear damping
equal to 0 formulation. Learn more with Reboundstop dialog box help.
• XML (XML File Format) 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.
124 Adams/Car
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.
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.
Working with Components 125
Wheels, Adjustable forces and Gears
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.
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:
input motion = reduction ratio * (input shaft - output shaft)/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 Joint 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:
input motion = reduction_ratio * output motion
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.
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
• Joint-Force Actuators
• Joint-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:
Application area = steering
Identifier = steering_wheel_angle (e.g. for a motion type
actuator)
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.
128 Adams/Car
Actuators
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.
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.
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.
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.
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.
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.
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.
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.
Then, you could use this new condition sensor with the following line in your driver control file:
(END_CONDITIONS)
{measure test value allowed_error filter_time delay_time group}
'RADIUS' '|<' 20000.0 500.0 0.0 0.0
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.
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.
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.
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 = 'rack_piston_area'
SYMMETRY = 'single'
PROPERTY_FILE =
'mdids://acar_shared/steering_assists.tbl/mdi_steer_assist.ste'
DATA_BLOCK = 'STEERING_ASSIST'
ATTRIBUTE_NAME = 'piston_area'
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:
$----------------------------------------------------STEERING_ASSIST
[STEERING_ASSIST]
piston_area <area> = 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).
Working with Components 135
Data Elements, Requests and Variables
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_SPLINE
[GENERAL_SPLINE]
USAGE = 'steering_assist'
SYMMETRY = 'single'
TYPE = 'two_dimensional'
PROPERTY_FILE =
'mdids://acar_shared/steering_assists.tbl/mdi_steer_assist.ste'
CURVE_NAME = 'steering_assist'
(COMMENTS)
{comment_line}
'Example of a steering assist spline'
136 Adams/Car
Data Elements, Requests and Variables
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:
$----------------------------------------------------STEERING_ASSIST
[STEERING_ASSIST]
piston_area <area> = 490.87
(XY_DATA)
{tbar_deflection <angle> delta_pressure <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.
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).
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, see Adams/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
138 Adams/Car
Data Elements, Requests and Variables
Working with Templates
140 Adams/Car
Template Basics
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.
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.
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.
AKISPL(MAX(0,VARVAL(engine_speed)/ucf_angle_to_radians),0,gss_en
gine_torque)
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
Working with Templates 143
Template Basics
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.
From
Belongs to the minor
The communicator: class: 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.
146 Adams/Car
Working with Communicators
From
Belongs to the minor
The communicator: class: role: Receives:
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.
From
Belongs to minor
The communicator: the class: 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.
From
Belongs to the minor
The communicator: class: 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/SmartDriver 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 any Output from powertrain (maximum number of
r 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.
148 Adams/Car
Working with Communicators
From
Belongs to the minor
The communicator: class: role: Receives:
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)
From
Belongs to the minor
The communicator: class: 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.
Working with Templates 149
Working with Communicators
From
Belongs to the minor
The communicator: class: role: Outputs:
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 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.
150 Adams/Car
Working with Communicators
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.
Working with Templates 151
Templates
Templates
Disc-Brake System
Overview
The disc-brake system template represents a device that applies resistance to the motion of a vehicle.
Template name
_brake_system_4Wdisk
Major role
Brake.
Application
Full-vehicle Analysis to simulate the effect of braking on the dynamics of the vehicle.
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.
152 Adams/Car
Templates
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.
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.
Working with Templates 153
Templates
Notes: The torque on the rotor depends on a number of parameters. The front right torque function
is:
T = 2 x PistonArea x BrakeLinePressure x µ x
EffectivePistonRadius x STEP
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.
Working with Templates 155
Templates
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.
Template name
_double_wishbone
Major role
Suspension
Application
Suspension and full-vehicle assemblies
156 Adams/Car
Templates
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.
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.
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.
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.
Working with Templates 159
Templates
Template name
_double_wishbone_flex
Major role
Suspension
Application
Suspension and full-vehicle assemblies
Description
Flexible bodies replace the left and right rigid lower control arms.
160 Adams/Car
Templates
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.
Template name
_ISO_road_course
Working with Templates 161
Templates
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.
Parameters
Contains no parametric information.
Communicators
Contains no communicators.
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.
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
162 Adams/Car
Templates
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.
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
Working with Templates 163
Templates
the control arm and the damper strut to the body mount parts. You can also activate or deactivate
driveshafts.
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.
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.
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
166 Adams/Car
Templates
Multi-Link Suspension
Overview
The multi-link suspension represents an independent suspension model for use as a rear 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.
Working with Templates 167
Templates
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.
Communicators
The following table lists the communicators in the template.
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.
Working with Templates 169
Templates
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.
170 Adams/Car
Templates
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.
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.
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.
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.
172 Adams/Car
Templates
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.
Working with Templates 173
Templates
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:
• 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.
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.
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.
Working with Templates 175
Templates
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.
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:
176 Adams/Car
Templates
• 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. See Torque versus Engine Speed
and Throttle Position for this property file.
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.
Working with Templates 177
Templates
• 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.
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.
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.
Working with Templates 179
Templates
Input Communicators
Output Communicators
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.
Working with Templates 181
Templates
Template name
_quad_link_axle
Major role
Suspension
Application
Suspension and full-vehicle assemblies
182 Adams/Car
Templates
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.
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.
Note: The kinematic flag variable toggles between kinematic and compliant mode.
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
Working with Templates 185
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.
186 Adams/Car
Templates
Communicators
The following table lists the input and output communicators.
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.
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
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.
188 Adams/Car
Templates
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.
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.
Working with Templates 189
Templates
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.
Template name
_rigid_chassis
190 Adams/Car
Templates
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.
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
192 Adams/Car
Templates
tierod_to_steering (rear) allows the tierod_to_steering mount parts in the rear suspension to connect to
the chassis body.
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.
Working with Templates 193
Templates
Template name
_antiroll_simple
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.
194 Adams/Car
Templates
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.
Communicators
Mount parts provide the connectivity to the suspension subsystems. An output communicator exports
information about the location of the ARB pick-up point.
Working with Templates 195
Templates
The following table lists the communicators that the template uses.
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:
Tire System
Overview
The tire system template provides three basic functions:
• Supports vertical load.
• Develops longitudinal forces for acceleration and braking.
196 Adams/Car
Templates
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.
Working with Templates 197
Templates
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.
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
Working with Templates 199
Templates
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.
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.
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.
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
Working with Templates 201
Templates
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.
Note: The kinematic flag variable toggles between kinematic and compliant mode.
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.
204 Adams/Car
Templates
You can toggle the suspension between kinematic and compliant modes. In addition, you can deactivate
driveshafts.
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.
Note: The integer parameter variables let you activate and deactivate the driveshafts. The
kinematic flag variable toggles between kinematic and compliant mode.
206 Adams/Car
Templates
Reviewing Results
204 Adams/Car
Requests
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).
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) = Branch Flag 907
par(2) = Request Type:
0 = Displacement(Angles in radians)
1 = Velocities
(Translational vel. in KPH)
(Angular velocity in radians/s)
2 = Accelerations
(Translational acc. G's)
(Rotational acc. in radians/s/2)
3 = Body Side Slip Angle in Radians
par(3) = id I marker
par(4) = id J marker
par(5) = id RM marker
Any results with a magnitude less than 1e-7 are set to zero.
206 Adams/Car
Plot Configuration Files
The files now support multiple plots per page, and each plot 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. See TeimOrbit File Format.
Reviewing Results 207
Plot Configuration Files
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.
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.
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.
13. Select OK.
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.
14. This exports the plot configuration file with the specified name. If you specify images for the
header/footer of any page, these image files are copied to the location where the plot configuration
file is saved.
PLOT_AXES_FORMAT (subblock)
PLOT_AXES_LABELS (subblock)
PLOT_AXES_TICS (subblock)
PLOT_AXES_NUMBERS (subblock)
COMMAND
command_keyword
After your template-based product creates each plot, it executes the following commands if you defined
a command keyword:
acar custom_plots <command_keyword> & plot_name=<plot_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, file.
The command acar custom_plots <command_keyword> must already be created in the current
session, either interactively or already present in the acar.bin, file.
HORIZONTAL_EXPRESSION = 'steer_angle.TIME'
HORIZONTAL_COMPONENT = 'steer_angle.TIME'
VERTICAL_EXPRESSION = 'steer_angle.right'
VERTICAL_COMPONENT = 'steer_angle.right'
Y_UNITS = 'no_units'
X_UNITS = 'time'
LEGEND_TEXT = '1031:Steer Angle.right'
COLOR = 'blue'
STYLE = 'dash'
SYMBOL = 'NONE'
LINE_WEIGHT = 2.0
HOTPOINT = 0.0
INCREMENT_SYMBOL = 1.0
214 Adams/Car
Plot Configuration Files
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.
214 Adams/Car
Running Suspension Analyses
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.
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. See an Example Suspension 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.
216 Adams/Car
Running Suspension Analyses
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. See an Example Wheel-Envelope Input
File and Example Wheel-Envelope Output File.
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.
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.
218 Adams/Car
Running Suspension Analyses
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.
X = C F
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:
220 Adams/Car
Running Suspension Analyses
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.
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.
Running Analyses 221
Running Suspension 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.
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.
222 Adams/Car
Running Suspension Analyses
Note that the Computation of Suspension and Steering Characteristics is currently not available for
dynamic suspension analyses.
-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
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.
$--------------------------------------------MDI_HEADER
[MDI_HEADER]
FILE_TYPE = 'wen'
FILE_VERSION = 5.0
FILE_FORMAT = 'ascii'
$--------------------------------------------UNITS
[UNITS]
LENGTH = 'mm'
FORCE = 'newton'
ANGLE = 'deg'
MASS = 'kg'
TIME = 'sec'
$--------------------------------------------MODE
[MODE]
STEERING_MODE = 'angle'
VERTICAL_MODE = 'length'
$--------------------------------------------GRID
[GRID]
BOUNDARY_STEERING_GRID = 100.0
BOUNDARY_WHEEL_GRID = 20.0
INTERIOR_STEERING_GRID = 100.0
INTERIOR_WHEEL_GRID = 20.0
$--------------------------------------------DATA
[DATA]
$COLUMN: input type: type of input data: side:
$ (c1) wheel z disp / force left
$ (c2) wheel z disp / force right
$ (c3) lateral force (y) left
$ (c4 lateral force (y) right
$ (c5) aligning torque (z-axis) left
$ (c6) aligning torque (z-axis) right
$ (c7) brake force (y) left
$ (c8 brake force (y) right
$ (c9) driving force (y) left
224 Adams/Car
Running Suspension Analyses
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
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
Running Analyses 225
Running Suspension Analyses
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
... .......
226 Adams/Car
Output of Suspension Analyses
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
Running Analyses 227
Output of Suspension Analyses
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 alt_steer_compliance.left = C(6,6) + C(6,12)
alt_steer_compliance.right = C(12,6) + C(12,12)
alt_camber_compliance.left = C(4,6) + C(4,12)
alt_camber_compliance.right= -C(10,6) + C(10,12)
Camber 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.
Caster Angle
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 = steer_axis road_x_axis
sz = steer_axis road_z_axis
caster_angle = rtod * arctan(sx/sz)
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
Request Names • dive.left
• dive.right
Running Analyses 231
Output of Suspension Analyses
These are forces at each wheel per unit total braking force.
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:
fore_aft_wheel_center_stiffness.left = 1 /
C(1,1)
fore_aft_wheel_center_stiffness.right = 1 /
C(7,7)
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.
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:
Y left = C 2, 3
Z left = C 3, 3
left = C 4, 3
The left front view swing arm length and angle are:
2 2 12
fr_view_swing_arm_length.left = – Y left + Z left left
–1
fr_view_swing_arm_angle.left = – tan Y Z left
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 right = C 8, 9
Z right = C 9, 9
right = C 10, 9
234 Adams/Car
Output of Suspension Analyses
The right front view swing arm length and angle are:
2 2 12
fr_view_swing_arm_length.right = Y right + Z right right
–1
fr_view_swing_arm_angle.right = tan Y right Z right
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
Request Names • kingpin_incl_angle.left
• kingpin_incl_angle.right
Running Analyses 235
Output of Suspension Analyses
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
236 Adams/Car
Output of Suspension Analyses
Request • lat_force_defl_compliance.left
Names • 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:
Lift/Squat Acceleration
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
Inputs Compliance matrix
• 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 (Ag)
238 Adams/Car
Output of Suspension Analyses
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:
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.
• anti_dive_braking.left
• anti_dive_braking.right
Rear suspensions:
• anti_lift.left
• anti_lift.right
240 Adams/Car
Output of Suspension Analyses
• sprung_mass
• cg_height
• wheelbase
• loaded_tire_radius
• tire_stiffness
• brake_ratio (fraction of braking done by the suspension)
• acceleration due to gravity (Ag)
Method The brake forces at the tire contact patch per G of longitudinal deceleration are:
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.
• anti_lift.left
• anti_lift.right
Rear suspensions:
• anti_squat.left
• anti_squat.right
242 Adams/Car
Output of Suspension Analyses
• 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 (Ag)
Running Analyses 243
Output of Suspension Analyses
Method The longitudinal tractive forces at the tire contact patches are:
Ride Rate
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.
Ride Steer
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
Running Analyses 245
Output of Suspension Analyses
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:
ride_steer.left = d(steer_anglel)/dzl =
d(steer_anglel)/dF/(dF/dzl)
ride_steer.right = d(steer_angler)/dzr =
d(steer_angler)/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.
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
Request Names • roll_camber_coefficient.left
• roll_camber_coefficient.right
Running Analyses 247
Output of Suspension Analyses
Av = DZ / track
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:
Ai = Av - Ac
The roll camber is then:
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:
Av = DZ / track
The rotational compliance at the wheel center due to the vertical force is:
roll_caster_coefficient = Ac / Av
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
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
250 Adams/Car
Output of Suspension Analyses
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.
Roll Steer
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 (Kt)
• Compliance matrix
252 Adams/Car
Output of Suspension Analyses
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.
d(wcvl)/d(roll_moment) = Wl x wcvl
d(wcvr)/d(roll_moment) = Wr x wcvr
The change in steer angle for a change in roll moment is computed using the chain
rule:
d(steer_anglel)/d(roll_moment) = (
d(steer_anglel)/d(wcvl) ) o (
d(wcvl)/d(roll_moment) )
d(steer_angler)/d(roll_moment) = (
d(steer_angler)/d(wcvr) ) o (
d(wcvr)/d(roll_moment) )
Roll Steer
And applying the chain rule one last time, the roll steer is
roll_steer.left = ( d(steer_anglel)/d(roll_moment)
) / ( d(roll_angle)/d(roll_moment) )
roll_steer.right = ( d(steer_angler)/d(roll_moment)
) / ( d(roll_angle)/d(roll_moment) )
Request REQUST/id, FUNCTION=USER(900,17,characteristics_input_array_id)
Statements
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.
Side-View Angle
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 side_view_angle = az, marker I, marker J
254 Adams/Car
Output of Suspension Analyses
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.
DX left = C(1,3)
DZ left = C(3,3)
DØ left = C(5,3)
The left side view swing arm length and angle are:
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 right = C(7,9)
DZ right = C(9,9)
DØ right = C(11,9)
The right side view swing arm length and angle are:
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 track = track
The resulting vertical distance between wheel centers is:
Z = X 3, 3 – X 3 , 9 – X 9 , 3 + X 9 , 9
The rotation of the line through the wheel centers is:
= Z track
The roll rate is:
2
susp_roll_rate = T / Ø = track Z
Toe Angle
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
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:
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 track = track
The resulting vertical distance between wheel centers is the following, where Kt
is the tire stiffnesses:
Z = C 3, 3 – C 3 , 9 – C 9 , 3 + C 9, 9 + 2 K t
The rotation of the line through the tire contact patches is:
= Z track
Total Track
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 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:
Wheel Rate
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.
Ackerman
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:
Ackerman Angle
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
Request Names • ackerman_angle.left
• ackerman_angle.right
262 Adams/Car
Output of Suspension Analyses
Ackerman Error
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
Running Analyses 263
Output of Suspension Analyses
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
Request Names • caster_moment_arm.left
• caster_moment_arm.right
264 Adams/Car
Output of Suspension Analyses
Inputs • Kingpin axis position, a point on the kingpin axis (Rs) - left and right
• Kingpin (steer) axis unit vector (s) - left and right
• Tire contact patch position (Rp) - left and right
• Wheel center axis unit vector (w) - left and right
• The road normal unit vector (k)
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 (Rkr) is:
l = k x w / | k x w | (left side)
l = k x -w / | k x -w | (right side)
The distance along l from the contact patch to the intersection of the kingpin
axis and the road plane is:
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 (Rp) - left and right
• Wheelbase
Method ideal_steer_angle.left = tan-1 [Wheel Base/Turn Radius - Rp(left) o y )]
ideal_steer_angle.right = tan-1 [Wheel Base/Turn Radius -Rp(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|
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
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
Percent Ackerman
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
Scrub Radius
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
268 Adams/Car
Output of Suspension Analyses
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:
Steer Angle
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:
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
272 Adams/Car
Output of Suspension Analyses
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.
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:
steer_axis_offset.lon_left = -R o u_lon
steer_axis_offset.lon_right = R o u_lon
The steer axis offset-lateral is:
steer_axis_offset.lat_left = R o u_lat
steer_axis_offset.lat_right = R o u_lat
Finally, the steer axis offset is:
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.
Turn Radius
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
Request Names • turn_radius.left
• turn_radius.right
274 Adams/Car
Output of Suspension Analyses
Left turn:
To properly assemble with the test rig, your suspension template must include the following output
communicators (see Communicator Entity Class):
• 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
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
Running Analyses 277
Working with the Suspension Test Rig
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.
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:
force = tire_stiffness*(unloaded_radius - radius) (r o n)
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
278 Adams/Car
Working with the Suspension Test Rig
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:
force = max(0.0, tire_stiffness*(unloaded_radius - radius) (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
Reference frame:
TYDEX H ISO-W contact TYDEX-C axis system wheel
Force/torque: patch center
Lateral force (cornering) x
Longitudinal force (braking) x
Longitudinal force (traction) x
Overturning moment x
Rolling resistance torque x
Aligning torque x
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
Running Analyses 279
Tire Test Rig
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.
Running Analyses 281
Tire Test Rig
Each analysis represents one simulation. By clicking on the analysis name, the simulation details can be
defined:
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 three 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.
• The plots created for the Adams Postprocessor will be in MMKS units (mm,
Newton, seconds, Kilogram).
282 Adams/Car
Running Full-Vehicle Analyses
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.
• 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.
• 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:
control/ routine=abgVDM::EventInit, function=user(3,1,10,0,2,5,7,17)
The call to this subroutine passes 8 parameters, as described next. Note that each number in the array
(3,1,10,0,2,5,5,17) is listed after the description of that parameter.
par(1) 3: ID of STRING statement containing .XML event filename = 3
par(2) ID of ORIGO marker = 1
par(3) ID of ARRAY statement containing initial condition SDI parameters = 10
par(4) ID of ARRAY statement containing ids of parts for which initial
velocity are not set = 0
par(5) ID of ARRAY holding Vehicle Parameters. = 2
par(6) ID of main Driving Machine ARRAY. = 5
par(7) ID ISO EAS Marker = 7
par(8) ID of ARRAY containing the ids of extensible end condition sensor
elements = 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_view_name='testrig_dcf_filename'
STRING/3
, STRING =example_crc.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]
• control/ routine=abgVDM::EventRunUntil, function=user(double time) - Runs the current mini-
maneuver until the desired absolute time [s]
286 Adams/Car
Running Full-Vehicle Analyses
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.
Reading Results
After you run the analysis, you can use Adams/PostProcessor to animate and view the results.
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.
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_*).
For more information about the 3D road, see Using the Road Builder.
Running Analyses 287
Running Full-Vehicle Analyses
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.
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.
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
288 Adams/Car
Running Full-Vehicle Analyses
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.
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
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. 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.
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.
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 and initial velocity values. In seconds 1
through 5 of the analysis, Adams/Car ramps the steering angle/length from the initial value to the desired
value using a STEP function. In seconds 5 through the desired end time, it linearly ramps the throttle at
the desired ramp rate.
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.
292 Adams/Car
Running Full-Vehicle Analyses
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 (see Creating 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.
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.
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.
During a step steer analysis, Adams/Car increases the steering input from an initial value to a final value
over a specified time.
294 Adams/Car
Running Full-Vehicle Analyses
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.
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
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
Running Analyses 295
Running Full-Vehicle Analyses
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.
• 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.
provides a quicker solution than the dynamic analysis but doesn't have transient effects, because of such
events as gear shifting.
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.
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.
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.
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.
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
force Driving Machine steers the vehicle by applying a force to the steering rack.
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.
302 Adams/Car
Running Full-Vehicle Analyses
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.
Running Analyses 303
Running Full-Vehicle Analyses
Arguments
304 Adams/Car
Running Full-Vehicle Analyses
• 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:
IF (Time < START_TIME):
SPEED = VELOCITY
IF ( TIME START_TIME ):
SPEED = VELOCITY +
ACCELERATION*(TIME - START_TIME)+
1/2*JERK*(TIME-START_TIME)**2
where START_TIME is the starting time relative to the beginning of the mini-maneuver.
Specify the following arguments:
VELOCITY = value <length/time>
ACCELERATION = value <length/time2>
JERK = value <length/time3>
START_TIME = value <time>
Note that JERK is the time rate of change of acceleration. JERK = 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.
306 Adams/Car
Running Full-Vehicle Analyses
constant The Driving Machine inputs a constant signal to your vehicle model.
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:
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:
Note: When using the RAMP function, the output value grows for the duration of the
mini-maneuver.
Running Analyses 309
Running Full-Vehicle 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:
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:
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:
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
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.
Here is another example. If at the beginning of the mini-maneuver the steering is 20o, 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
110o. If, however, Control Mode is set to Absolute, then the steering angle at the end of the step input
equals the FINAL_VALUE of 90o
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.
Running Analyses 313
Running Full-Vehicle Analyses
Arguments
Name Filter Filters the listed conditions based on the substring you specify.
Name Shows the condition name (not editable).
314 Adams/Car
Running Full-Vehicle Analyses
• 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.
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.
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.
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).
318 Adams/Car
Using the Driving Machine
The following figure shows how the Driving Machine works in a virtual prototyping model.
Standard-speed Test
When speed increases, the difference in path point spacing has no effect.
322 Adams/Car
Using 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
Running Analyses 323
Using the Driving Machine
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.
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.
Running Analyses 325
Using the Driving Machine
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.
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.
326 Adams/Car
Using the Driving Machine
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.
Gear-Shifting Parameters
Define the gear-shifting properties and the shape of the upshift and downshift curves for throttle and
clutch signals.
Arguments
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)
Running Analyses 327
Using the Driving Machine
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. Learn more
about Creating Mini-Maneuvers.
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.
Note: Driver control data files can contain both open-loop and closed-loop blocks.
(COMMENTS)
{comment_string}
'Example .dcd file containing steering path for iso lane change'
[UNITS]
LENGTH = 'meters'
FORCE = 'newton'
MASS = 'kg'
TIME = 'sec'
ANGLE = 'radians'[CLOSED_LOOP]
STEERING_CONTROL = 'path'
SPEED_CONTROL = 'none'
328 Adams/Car
Using the Driving Machine
(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]
ORDINAL = 'time'
(DATA)
{ time steering throttle brake gear clutch }
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
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.
SPEED_CONTROL path
STEERING_CONTROL none lon_vel (p1=0) lon_acc (p1=1) lat_acc (p1=2) (p1=3)
none NOT {(distance or time), {(distance or time), NOT VALID NOT
VALID lon_vel} lon_acc} VALID
curvature (p1 = 0) {distance, {(distance or time), {(distance or time), {(distance or time), NOT
curvature} curvature, lon_vel} curvature, lon_acc} curvature, lat_acc} 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 {distance or time, {distance or time, NOT VALID NOT
VALID lat_acc, lon_vel} lat_acc, lon_acc} VALID
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
The projection of the vehicle path onto the ground plane is related to the velocities and global heading
as:
x· = V X cos – V Y sin
y· = V X sin – V Y cos
where:
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.
334 Adams/Car
Using the Driving Machine
This simplified model is used to identify the necessary steer angle required for the vehicle to follow the
connecting contour.
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.
Running Analyses 335
Using the Driving Machine
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 VY is now always assumed to be zero, and the
assumed path of the vehicle simplifies to:
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).
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 VX:
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.
V ref
T inertial = m e ------------- R eq = m e a ref R eq
t
1 2
T aero – drag = --- A C D AVref R eq
2
where:
Gear Shifting
Gear shifts are triggered on the basis of engine speed thresholds, and the gear is incremented according
to the following strategy:
Running Analyses 337
Using the Driving Machine
where:
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:
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.
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.
Feedback Control
where is a flag indicating whether the lateral displacement controller is activated, that is whether
the lateral displacement error Lo is small:
Running Analyses 339
Using the Driving Machine
Note that in the above, positive Lo indicates a vehicle to the left of the target path, requiring a positive
steering correction.
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:
Computation of Controls
such that the upper and lower limits Tm and TM on the net wheel torque, Tw (we) can be identified from
the upper and lower limits on Te (we):
where:
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, TM (normally positive for all we)
• The minimum available net wheel torque Tm (usually negative, especially at high engine speed
we, since it includes frictional and pumping losses due to throttling).
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 Tw, provided it is feasible for the engine to deliver
this torque at the current engine speed :
Running Analyses 343
Using the Driving Machine
If the linear model is selected, then the feed-forward throttle and brake signals can be determined directly
from the required torque:
• Gear change time (not the time of the whole event, but the time for which the clutch is not fully
engaged)
• 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:
Running Analyses 345
Using the Driving Machine
The following plot shows the influence of the throttle raise and fall time parameters:
346 Adams/Car
Using the Driving Machine
The following plots show the effect of changing a single parameter from this baseline:
Running Analyses 347
Using the Driving Machine
• Changing DT1:
352 Adams/Car
Using the Driving Machine
• Changing DT2:
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
Running Analyses 353
Using the Driving Machine
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.
354 Adams/Car
Controlling Analysis Output Files
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. See Align or Adjust Suspension.
910 Set part velocity and wheel rotational velocity. See Part Velocity Setting.
917 Set part velocity and wheel rotational velocity. See Set Part 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
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:
file/model=test_step
preferences/solver=F77
output/nosep
control/ routine=abgVDM::EventInit,
function=user(3,1,10,0,2,5,7,9,4,8, 17)
control/ routine=abgVDM::EventRunAll, function=user(0)
!
stop
In the .acf, note the following line:
control/ routine=abgVDM::EventInit,
function=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:
control/ routine=abgVDM::EventInit,
function=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: ID of STRING statement containing .XML event filename = 3
par(2) ID of ORIGO marker = 1
par(3) ID of ARRAY statement containing initial condition SDI
parameters = 10
par(4) ID of ARRAY statement containing ids of parts for which initial
velocity are not set = 0
par(5) ID of ARRAY holding Vehicle Parameters. = 2
par(6) ID of main Driving Machine ARRAY. = 5
par(7) ID ISO EAS Marker = 7
par(8) ID of Driver_Parameters_ARRAY_Steering_Human = 9
par(9) ID of STRING statement containing Driver Road Filename = 4
par(10) ID of ARRAY containing Human Driver Parameters = 8
par(11) ID of ARRAY containing the ids of extensible end condition
sensor elements = 17
Running Analyses 357
Controlling Analyses Using CONSUBs
If you look at the corresponding Adams/Solver dataset (.adm), you will see that STRING/3 contains the
name of the event file:
! adams_view_name='testrig_dcf_filename'
STRING/3
, STRING =example_crc.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.
358 Adams/Car
Controlling Analyses Using CONSUBs
Configuring Your Product
366 Adams/Car
About the Management Tasks
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.
Configuring Your Product 367
About Database Management
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.
368 Adams/Car
About Database Management
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.
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.
370 Adams/Car
Managing Databases
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
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
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.
Note: You can also create databases directly using the configuration files. Learn about managing
databases through configuration files.
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.
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.
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:
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
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.
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.
376 Adams/Car
Saving and Publishing Database Information
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.
Configuring Your Product 377
About Configuration Files
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation.
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. Learn about
Adams Registry Editor.
• 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
378 Adams/Car
About Configuration Files
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.
When you set up your private configuration file using the Adams Registry editor, the location specified
for privateCfg is saved in a file $HOME/.msca/msca_MDx.reg. Where x represents version number and
$HOME is the home directory; for example, C:/.msca/msca_MD2010.reg for MD Adams 2010. This
enables you to specify a different location when you use a different version of Adams. For example; if a
new location is specified for the privateCfg when using Adams 2008 r1; this setting is stored in the file
$HOME/.msca/msca_2008r1.reg and each subsequent usage of Adams 2008r1 will use the privateCfg
file specified in this file.
Note: The private configuration file is not located in the installation directory. Never change the
acar.cfg file located in the installation.
• 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.
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:
ENVIRONMENT
MDI_ACAR_PLUS_AVIEW (yes, no)
To access Adams/View:
1. Set MDI_ACAR_PLUS_AVIEW to yes.
2. From the Tools menu, select Adams/View Interface.
ENVIRONMENT
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.
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)
and specifies the following path for textEditor field using Adams Settings utility as described above.
C:\Program Files\WindowsNT\Accessories\wordpad.exe
Configuring Your Product 387
Managing Databases Through Configuration Files
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.
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_EXTENSION
where:
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.
Configuring Your Product 391
Managing Tables Through Configuration Files
For example:
PROPFILE bushing mdids://shared/bushings.tbl/mdi_0001.bus
You can define the property files in the private, site, or shared configuration files.
• 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:
TESTRIG four_post .__MY_FOURPOST
You can define the default test rigs in the private, site, or shared configuration files.
392 Adams/Car
Managing Tables Through Configuration Files
Customizing Your Product
392 Adams/Car
Overview
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. Learn about Setting User Access.
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.
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.
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.
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
Customizing Your Product 393
Overview
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.
394 Adams/Car
Customizing the Interface
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):
Customizing Your Product 395
Customizing the Interface
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. See About 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:
library create library_name=.MY_LIBRARY
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:
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.
To view, change, and create dialog boxes, you must have expert user access to your template-based
product. Learn about Setting User Access.
Customizing Your Product 397
Customizing the Interface
The following figure shows some of the different objects. Learn more about Interface objects.
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:
interface dialog modify &
dialog=.ACAR.dboxes.dbox_tem_har_mod &
height=150.0 height_minumum=150.0 height_maximum=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.
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
Label width 150
Label height 25
Text box width 244
Customizing Your Product 399
Customizing the Interface
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
400 Adams/Car
Customizing the Interface
an option from a pull-down menu, the dialog box changes to display objects for entering values for the
selected option as shown next.
To clean up variables:
• You can use the command:
variable delete variable_name=(eval(db_children($_self, "variable")))
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.
Customizing Your Product 403
Customizing the Interface
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.
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.
404 Adams/Car
Customizing the Interface
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. Learn about Parameter Qualifiers and Formats.
The following is an example of a list of parameters and their qualifiers for a macro:
! $part_name:t=string
! $location:t=location
! $type:t=string
! $orientation:t=orientation
! $mass:t=real
! $cm_location_from_part:t=location:d=0,0,0
! $Ixx:t=real
! $Iyy:t=real
! $Izz:t=real
! $Ixy:t=real:d=0
! $Izx:t=real:d=0
! $Iyz:t=real:d=0
!END_OF_PARAMETERS
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.
!---- Ensure a brake subsystem exists ----
if condition=(!subsystem_role_exists($assembly,"brake_system"))
acar toolkit warning &
warning="This assembly does not have a brake subsystem!"
variable set variable_name=$error_variable integer=1
return
end
You can use the acar toolkit in all template-based products.
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.
Note: If you do not attach your dialog box to a template, the dialog box will be lost when you
close the current session.
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.
• 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.
• 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 Sub-Menu 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.
2. Enter the label that you want to use, in this case Display.
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:
interface dialog_box display dialog_box_nam = .ACAR.custom.dbox_1
If, however, you wanted to view the front view of your model, you would enter a command
similar to the following:
acar interface view_restore view_orientation = front
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.
For private binaries, please substitute "acar_init_site" with "acar_init_private". You will need one 'acar
toolkit initialization ...' command for each plugin you want to include in your private or site
customization. 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.
• From the Dialog Box Builder's Dialog Box menu, point to Export, and then select Command
File.
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 macro-----
macro read &
macro_name = .MY_LIBRARY.mac_ana_ful_tst_sub &
file_name = "C:\temp\mac_ana_ful_tst_sub.cmd" &
user_entered = "Analysis full-vehicle test submit" &
wrap_in_undo = no &
create_panel = no
!------Read a dialog box-----
file command read &
file_name = "C:\temp\abox_ana_ful_tst_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
412 Adams/Car
Introducing Adams/View Libraries
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:
variable set variable_name = $_self.generate_road &
integer_value = (eval(create_a_road("$road_width", "road_length", "color",
"shell_file", "error_flag" )))
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:
file wavefront read &
file_name = (eval($_self_shell_file)) &
port_name = $assembly_ground
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.
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
2010, point to your template-based product (in this case, ACar), and then select Advanced.
• At the prompt, enter cr-acarprivate, and then press Enter.
414 Adams/Car
Introducing Adams/View Libraries
• 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 mdadams2010 -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).
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
,TRANSLATIONAL
,I = 1
,J = 2
,FUNCTION = 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
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.
• From the Start button, point to Programs, point to MSC.Software, point to MD Adams
2010, 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 mdadams2010 -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:
418 Adams/Car
Introducing Adams/Solver Libraries
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 mdadams2010 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 2010, 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).
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.
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 !toe, camber, caster
FUNCTION = USER(1, 1, 2, 3)
REQUEST/222 !lateral acceleration, body sideslip
FUNCTION = 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:
IF (NINT( PAR(1)) .EQ. 1 ) THEN
CALL TCCREQ( ID, TIME, PAR, NPAR, IFLAG, RESULT )
ELSE IF (NINT( PAR(1)) .EQ. 2 ) THEN
CALL BSAREQ( ID, TIME, PAR, NPAR, IFLAG, 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:
IF (NINT( PAR(1)) .EQ. 1 ) THEN
CALL REQ001( ID, TIME, PAR, NPAR, IFLAG, RESULT )
420 Adams/Car
Introducing Adams/Solver Libraries
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
Customizing Your Product 421
Introducing Adams/Solver Libraries
Name: Description:
DIFSUB Differential equation statement
DMPSUB Modal damping subroutine
FIESUB Field statement
GFOSUB Gforce statement
GSESUB General state equation subroutine
Name: Description:
BRASUB Brake demand
STRSUB Steering demand
THRSUB Throttle demand
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.
422 Adams/Car
Introducing Adams/Solver Libraries
& NPAR,
& IFLAG,
& RESULT )
C This is a dispatcher routine written by gendisp
INTEGER ID
DOUBLE PRECISION TIME
DOUBLE PRECISION PAR(*)
INTEGER NPAR
LOGICAL IFLAG
DOUBLE PRECISION RESULT(8)
C Local variables
character*(80) errmsg
IF ( NINT(PAR(1)).EQ.900 ) THEN
CALL req900 ( ID,
Customizing Your Product 423
Introducing Adams/Solver Libraries
& TIME,
& PAR,
& NPAR,
& IFLAG,
& RESULT )
ELSE IF ( NINT(PAR(1)).EQ.901 ) THEN
CALL req901 ( ID,
& TIME,
& PAR,
& NPAR,
& IFLAG,
& RESULT )
ELSE IF ( NINT(PAR(1)).EQ.221 ) THEN
CALL req221 ( ID,
& TIME,
& PAR,
& NPAR,
& IFLAG,
& RESULT )
ELSE
WRITE (ERRMSG,'(A,I4.4)')
& 'Error in dispatcher subroutine reqSUB: Invalid
PAR(1): ',
& NINT( PAR(1) )
CALL ERRMES( .TRUE., ERRMSG, 0, 'STOP')
ENDIF
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.
424 Adams/Car
Introducing Adams/Solver Libraries
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:
$install_dir/$product_name/$MDI_CPU/gendisp
For example, the location of GENDISP might be:
/usr/mdi12/acar/irix32/gendisp
You invoke GENDISP with the following arguments:
gendisp file.lst dispatch.f dispatch.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.
END
To dispatch.dat, you add a block for MYSSUB that looks like the following:
$********************************************
[MYU]
(PARAMETERS)
{type name}
'INTEGER' 'SWITCH'
'INTEGER' 'NDPAR'
'DOUBLE PRECISION' 'DPAR(NDPAR)'
'DOUBLE PRECISION' 'VECTOR(3)'
(CODE_BEFORE_BRANCH)
{code}
' INTEGER PAR(2)'
' PAR(1) = SWITCH'
$********************************************
The code GENDISP generates for MYUSUB looks a little different then the example above, but
functions in the same way:
Ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine myusub( SWITCH,
& NDPAR,
& DPAR
, & VECTOR )
C This is a dispatcher routine written by gendisp
INTEGER SWITCH
INTEGER NDPAR
DOUBLE PRECISION DPAR(NDPAR)
DOUBLE PRECISION VECTOR(3)
C Local variables
character*(80) errmsg
INTEGER PAR(2)
PAR(1) = SWITCH
IF ( NINT(PAR(1)).EQ.532 ) THEN
CALL myu532 ( SWITCH,
& NDPAR,
& DPAR,
& VECTOR )
ELSE IF ( NINT(PAR(1)).EQ.253 ) THEN
CALL myu253 ( SWITCH,
& NDPAR,
& DPAR,
& VECTOR )
ELSE
WRITE (ERRMSG,'(A,I4.4)')
& 'Error in dispatcher subroutine myuSUB: Invalid
PAR(1): ',
& NINT( PAR(1) )
CALL ERRMES( .TRUE., ERRMSG, 0, 'STOP'
) ENDIF
RETURN
END
426 Adams/Car
Utility Functions
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
Examples
The following example converts the current length units, which are in inches (inch), to millimeters (mm):
variable set variable=units_convert &
real_value=(eval(CONVERT_FROM_UNITS("inch", 1.0)))
units_convert = 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:
variable set variable=convert_factor &
real_value=(CONVERT_UNITS( "mile" , "mm" ))
convert_factor = 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
Examples
The following example converts the current modeling angular units, which are in degrees, to radians:
variable set variable=angle_radians &
real_value=(CONVERT_TO_RADIANS(90))
angle_radians = 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:
variable ser variable=myvar1 &
real_value=90.0 units=angle
variable set variable=myvar2 &
real_value=(UNITS_TO_MKS( myvar1.units ))
myvar2 = 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
Customizing Your Product 429
Utility Functions
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 (OBJECT assembled_model)
Arguments
Examples
variable set variable=current_class &
string_value=(STR_ASSEMBLY_CLASS(.susp_assy))
current_class = "suspension"
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)
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.
variable set variable=symmetric_name &
string_value=(STR_CHAR_SWAP("._front_susp.ground.hpl_lca_front",
"lrrl", 3))
symmetric_name = "._front_susp.ground.hpr_lca_front"
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
variable set variable=base_filename &
string_value=(STR_FILENAME("/usr/car.cdb/test.tpl", "tpl","sub"))
base_filename = "test.sub"
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.
Customizing Your Product 431
Utility Functions
Format
STRING str_model_class (OBJECT model)
Arguments
Examples
variable set variable=current_class &
string_value=(STR_MODEL_CLASS(._front_susp))
current_class = "template"
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
variable set variable=name_prefix &
string_value=(STR_PREFIX("._front_susp.ground.hpl_lca_outer"))
name_prefix = "hps_"
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)
432 Adams/Car
Utility Functions
Arguments
Examples
variable set variable=trim_string &
string_value=(STR_REMOVE("abcdef", "ab", "ef"))
trim_string = "cd"
variable set variable=trim_string &
string_value=(STR_REMOVE("abcdef", "", "ef"))
trim_string="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
Examples
variable set variable=other_filename &
string_value=(STR_REPLACE("/usr/car.cdb/test.tpl", "test",
"junk"))
other_filename = "/usr/car.cdb/junk.tpl"
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.
Customizing Your Product 433
Utility Functions
Format
STRING str_typecheck (STRING object_name, STRING type)
Arguments
Examples
variable set variable=check_type &
string_value=(STR_TYPECHECK("._front_susp.ground.hpl_lca_outer",
"ls"))
check_type = 1
variable set variable=check_type &
string_value=(STR_TYPECHECK("._front_susp.ground.hpl_lca_outer",
"r"))
check_type = 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
• 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.
434 Adams/Car
Utility Functions
Format
STRING cdb_alias2path (STRING path_alias)
Arguments
Examples
This example finds the file system path associated with database prototype:
variable set variable=a2p &
string_value=(eval(cdb_alias2path("prototype")))
a2p = "/local/proto.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)
Arguments
Examples
This example finds the database alias associated with database:
variable set variable=p2a &
string_value=(eval(cdb_path2alias("/local/proto.cdb")))
p2a = "prototype"
Customizing Your Product 435
Utility Functions
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:
variable set variable=i2b &
string_value(eval(cdb_input2base("/local/proto.cdb/bushings.tbl/m
y_bush.bus")))
i2b = "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)
Arguments
Examples
This example finds the extension for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
variable set variable=i2e &
string_value=(eval(cdb_input2ext("/local/proto.cdb/bushings.tbl/my
_bush.bus")))
i2e = "bus"
436 Adams/Car
Utility Functions
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:
variable set variable=i2file &
string_value=(eval(cdb_input2file("/local/proto.cdb/bushings.tbl/my_bush
.bus")))
i2file = "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)
Arguments
Examples
This example finds the file system path prefix for the file /local/proto.cdb/bushings.tbl/my_bush.bus:
variable set variable=i2p &
string_value=(eval(cdb_input2path("/local/proto.cdb/bushings.tbl/my_bush
.bus")))
i2p = "/local/proto.cdb/bushings.tbl"
Customizing Your Product 437
Utility Functions
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:
variable set variable=i2full &
string_value=(eval(cdb_input2full("mdids://prototype/bushings.tbl/
my_bush.bus")))
i2full = "/local/proto.cdb/bushings.tbl/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.
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)
438 Adams/Car
Utility Functions
Arguments
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.
Examples
This example finds the file system path for file my_bush.bus:
variable set variable=sfile &
string_value=(eval(cdb_search_file("bushing","my_bush.bus",1)))
sfile="/local/proto.cdb/bushings.tbl/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:
variable set variable=rpp &
string_value=(eval(cdb_runtime_path_port(“mdids://prototype/bushings.tbl/
my_bush.bus”)))
rpp = "mdids://prototype\bushings.tb\my_bush.bus"
File Functions
The file functions return information about the major and minor roles of templates and subsystems:
• template_hdr_major_role
Customizing Your Product 439
Utility Functions
• 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
filename String that contains the full path of the template file.
Examples
This is an example of the header information that is stored in an Adams/Car template file:
$------------------------TEMPLATE_HEADER----------------------$
[TEMPLATE_HEADER]
MAJOR_ROLE = 'suspension'
TIMESTAMP ='1999/02/04,13:13:38'
HEADER_SIZE = 5
The following example returns the major role of a template, which it obtains from the header information
shown above:
variable set variable=tpl_major_role &
string_value=(TEMPLATE_HDR_MAJOR_ROLE
("mdids://shared/template.tbl/_dbl_wish.tpl"))
tpl_major_role = "suspension"
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)
440 Adams/Car
Utility Functions
Arguments
filename String that contains the full path of the subsystem file.
Examples
This is an example of the header information that is stored in an Adams/Car subsystem file:
$--------------------------SUBSYSTEM_HEADER -----------------------$
[SUBSYSTEM_HEADER]
TEMPLATE_NAME = ’mdids://shared/templates.tbl/_double_wishbone.tpl’
MAJOR_ROLE = ’suspension’
MINOR_ROLE = ’front’
TIMESTAMP = ’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:
variable set variable=sub_major_role &
string_value=(SUBSYSTEM_HDR_MAJOR_ROLE("mdids://shared/subsystem.tbl/
front_susp.sub"))
sub_major_role = "suspension"
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)
Arguments
filename String that contains the full path of the subsystem file.
Examples
This is an example of the header information that is stored in an Adams/Car subsystem file:
$------------------------SUBSYSTEM_HEADER ----------------------$
[SUBSYSTEM_HEADER]
TEMPLATE_NAME = ’mdids://shared/templates.tbl/_double_wishbone.tpl’
MAJOR_ROLE= ’suspension’
MINOR_ROLE= ’front’
TIMESTAMP= ’1999/02/04,17:18:18’
Customizing Your Product 441
Utility Functions
The following example returns the minor role of an Adams/Car subsystem, which it obtains from the
header information shown above:
variable set variable=sub_minor_role &
string_value=(SUBSYSTEM_HDR_MINOR_ROLE("mdids://shared/subsystem
.tbl/front_susp.sub"))
sub_minor_role = "front"
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)
Arguments
Examples
if condition=(model_class_exists("assembly") == 0)
! No Assemblies !
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.
442 Adams/Car
Utility Functions
Format
OBJECT subsystem_lookup (OBJECT model, STRING major_role, STRING minor_role)
Arguments
Examples
variable set variable=front_susp_subsystem &
object_value=(eval(SUBSYSTEM_LOOKUP(.susp_assy, "suspension",
"front")))
front_susp_subsystem = .susp_assy.TR_Front_Suspension
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 (OBJECT model, STRING role)
Arguments
Examples
if condition=(subsystem_role_exists(.fveh_assembly, "brake_system")
== 0)
! No Brakes !
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.
Customizing Your Product 443
Utility Functions
• ac_info_mass
ac_info_mass
Definition
ac_info_mass computes the aggregate mass of the assembly.
Format
ac_info_mass(OBJECT model)
Arguments
Examples
variable set variable_name=total_mass &
real_value=(EVAL(ac_info_mass(.model_name)))
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:
444 Adams/Car
Utility Functions
Where $HOME represents your user home directory when you log on to your computer.
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.
mdadams2010 -c rtool
set /MDI/ACar/Preferences/privateDir /usr/people/someone/new_private
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.
All Adams/Tire tire models support the four-post rig test when used in transient mode. For most tire
models this means that the USE_MODE in the tire property file must be larger then 10. The exceptions
are:
• UA-Tire, USE_MODE must be set to 2
• The Basic and Enhanced tire model property files must specify a RELAXATION_LENGTH
larger then zero.
• FTire is in transient mode by default.
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.
• 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.
448 Adams/Car
Example Four-Post Analysis
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.
Customizing Your Product 449
Example Four-Post Analysis
Running a Test
You should have a full-vehicle assembly mounted to the four-post test rig as shown next.
Use the Command Navigator to submit an analysis using the auto-generated dialog box:
1. To open the Command Navigator, from the Tools menu, select Command 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).
450 Adams/Car
Example Four-Post Analysis
Adams/Car displays the following dialog box (without the values, which we added for your
convenience):
3. After the analysis is completed, review the results using the animation and post-processing tools.
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)
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
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).
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):
! $assembly:t=model
! $output_prefix:t=string
! $comment:t=string:d=""
! $end_time:t=real:gt=0
! $number_of_steps:t=integer:gt=0
! $analysis_mode:t=list(interactive,graphical,background):d=interacti
ve
Customizing Your Product 453
Example Four-Post Analysis
! $peak_displacement:t=real:gt=0
! $units:t=list(mm):d=mm
! $frequency_range:t=real:gt=0
! $excitation_mode:t=list(heave,pitch,roll,warp):d=heave
! $load_results:t=list(yes,no):u=yes
! $log_file:t=list(yes,no):u=yes
! $error_variable:t=variable:d=.ACAR.variables.errorFlag
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.
454 Adams/Car
Example Four-Post Analysis
!---- Check to ensure the assembly has the proper test rig ----
if condition=($assembly.original_testrig_name != "__acme_4PostRig")
acar toolkit warning &
warning="Analysis cannot be submitted!", &
"The assembly does not have the proper testrig. This analysis only", &
"works with assemblies using the '__acme_4PostRig' testrig."
variable set variable_name=$error_variable integer=1
return
end
verbose=yes &
error_variable=$error_variable
if condition=($error_variable != 0)
return
end
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
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.
if condition=(!db_exists("$assembly.fourpostSetup"))
!--- Parameterize the 4post pad height to the global road height marker
just previously adjusted ---
marker modify &
marker_name=$assembly.testrig.ground.std_tire_ref &
location=($assembly.ground.std_tire_ref.location) &
relative_to=$assembly.testrig.ground
variable set variable=$_self.frontWheel &
object_value=(eval(subsystem_lookup($assembly,"wheel","front")))
variable set variable=$_self.leftFrontWheel &
object_value=(eval(db_filter_name(db_children($_self.frontWheel[1],"ac_ti
re"),"til_*")))
variable set variable=$_self.rightFrontWheel &
object_value=(eval(db_filter_name(db_children($_self.frontWheel[1],"ac_ti
re"),"tir_*")))
variable set variable=$_self.rearWheel &
object_value=(eval(subsystem_lookup($assembly,"wheel","rear")))
variable set variable=$_self.leftRearWheel &
object_value=(eval(db_filter_name(db_children($_self.rearWheel[1],"ac_tir
e"),"til_*")))
variable set variable=$_self.rightRearWheel &
object_value=(eval(db_filter_name(db_children($_self.rearWheel[1],"ac_tir
e"),"tir_*")))
marker modify &
marker_name=(eval($_self.leftFrontWheel.object_value.ref_marker.object_va
lue)) &
new_marker_name=
(eval($assembly.testrig.col_front_pad_mount[1]//"."//$_self.leftFrontWheel.o
bject_value.ref_marker.object_value.name))
marker modify &
marker_name=(eval($_self.rightFrontWheel.object_value.ref_marker.object_v
alue)) &
new_marker_name=(eval($assembly.testrig.cor_front_pad_mount[1]//
"."//$_self.rightFrontWheel.object_value.ref_marker.object_value.name))
marker modify &
marker_name=(eval($_self.leftRearWheel.object_value.ref_marker.object_val
ue)) &
new_marker_name=(eval($assembly.testrig.col_rear_pad_mount[1]//"."//$_sel
f.leftRearWheel.object_value.ref_marker.object_value.name))
marker modify &
marker_name=(eval($_self.rightRearWheel.object_value.ref_marker.object_va
lue)) &
new_marker_name=(eval($assembly.testrig.cor_rear_pad_mount[1]//"."//$_sel
f.rightRearWheel.object_value.ref_marker.object_value.name))
variable set variable=$assembly.fourpostSetup &
integer_value=1
end
456 Adams/Car
Example Four-Post Analysis
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,
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:
!---- Assign actuator functions based on excitation mode ----
!-Heave Excitation
if condition=("$excitation_mode" == "heave")
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_left_front_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_right_front_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_left_rear_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_right_rear_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
!-- Pitch Excitation
elseif condition=("$excitation_mode" == "pitch")
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_left_front_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_right_front_actuator &
function="1*$peak_displacement*sin(.5*360d*$frequency_range/$end_tim
e*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_left_rear_actuator &
function="-
1*$peak_displacement*sin(.5*360d*$frequency_range/$end_time*time**2)"
acar template_builder actuator set function &
actuator=$assembly.testrig.jms_right_rear_actuator &
function="-
1*$peak_displacement*sin(.5*360d*$frequency_range/$end_time*time**2)"
Customizing Your Product 457
Example Four-Post Analysis
road_data_file="BEDPLATE" &
generate_road_geometry=no &
simulation_type=fourpost
The following table describes the important parameters associated with the four-post full-vehicle
submission macro.
if condition=("$analysis_mode" != "background")
acar toolkit message &
message="Simulation is complete."
end
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.
460 Adams/Car
Example Four-Post Analysis
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\analysis\dboxes).
We have also provided dboxes_ana.cmd in the example, which contains the following code.
!---- Check if dialog box exists and delete it if it does ---- if
condition=(db_exists(".acar.dboxes.dbox_ana_ful_fou_sub"))
interface dialog_box delete dialog_box_name=.acar.dboxes.dbox_ana_ful_fou_sub
end
!---- Read the Four Post shaker dialog box ---- file command read &
file_name=(getenv("MDI_ACAR_SITE")//"/analysis/dboxes/dbox_ana_ful_fou_sub.cmd")
(COMMENTS)
{comment_string}
'Any comment'
[UNITS]
LENGTH = 'meter' || 'millimeter' || 'centimeter' || 'kilometer' || etc.
FORCE = 'newton' || 'kilogram_force' || etc. ANGLE = 'deg' MASS = 'kg'
TIME = 'sec'
[CLOSED_LOOP]
comment = string
steering_control = 'none' || 'curvature' || 'path' || 'lat_acc'
speed_control = 'none' || 'lon_vel' || 'lon_acc' || 'lat_acc' || 'path'
ordinal = 'distance' || 'time'
lon_vel_max = float
lon_vel_min = float
lon_acc_max = float
lon_acc_min = float
lat_acc_max = float
lat_acc_min = float
(DATA)
$ steering, speed
$ 1 Case{none, none} -- null case, no data required!!
$ 2 Case{none, lon_vel}
$ 3 Case{none, lon_acc}
$ 4 Case{none, lat_acc} -- NOT VALID
$ 5 Case{none, path} -- NOT VALID
{ ( distance || time ) && ( lon_vel || lon_acc ) }
$ 6 Case{curvature, none} -- Must have distance with curvature
{ distance && curvature }
$ 7 Case{curvature, lon_vel}
$ 8 Case{curvature, lon_acc}
$ 9 Case{curvature, lat_acc}
$10 Case{curvature, path} -- NOT VALID
{ ( distance || time ) && curvature && ( lon_vel || lon_acc
|| lat_acc ) }
$11 Case{path, none}
$12 Case{path, lon_vel}
$13 Case{path, lon_acc}
$14 Case{path, lat_acc}
{ x && y && ( lon_vel || lon_acc || lat_acc ) }
$15 Case{path, path}
{ x && y && time }
$16 Case{lat_acc, none} -- NOT VALID
Tutorials and Examples 469
Example .dcd File
[OPEN_LOOP]
ordinal = 'time' || 'distance'
{distance || time steering throttle brake gear clutch}*
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
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.
$--------------------------------------------MDI_HEADER
[MDI_HEADER]
FILE_TYPE = 'wen'
FILE_VERSION = 5.0
FILE_FORMAT = 'ascii'
$--------------------------------------------UNITS
[UNITS]
LENGTH = 'mm'
FORCE = 'newton'
ANGLE = 'deg'
MASS = 'kg'
TIME = 'sec'
$--------------------------------------------MODE
[MODE]
STEERING_MODE = 'angle'
VERTICAL_MODE = 'length'
$--------------------------------------------GRID
[GRID]
BOUNDARY_STEERING_GRID = 100.0
BOUNDARY_WHEEL_GRID = 20.0
INTERIOR_STEERING_GRID = 100.0
INTERIOR_WHEEL_GRID = 20.0
$--------------------------------------------DATA
[DATA]
$COLUMN: input type: type of input data: side:
$ (c1) wheel z disp / force left
$ (c2) wheel z disp / force right
$ (c3) lateral force (y) left
$ (c4 lateral force (y) right
$ (c5) aligning torque (z-axis) left
$ (c6) aligning torque (z-axis) right
$ (c7) brake force (y) left
$ (c8 brake force (y) right
$ (c9) driving force (y) left
$ (c10) driving force (y) right
$ (c11) steering steer angle / rack travel
$ {whl_z_l whl_z_r lat_l lat_r align_l align_r brake_l brake_r
drive_l drive_r steer}
-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
472 Adams/Car
Example Wheel-Envelope Input File
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
Tutorials and Examples 473
Example Wheel-Envelope Output File
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
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
... .......
474 Adams/Car
Example Plot Configuration File
[PAGE]
PAGE_LAYOUT = 11.0
NUMBER_OF_PLOTS = 1.0
PAGE_NAME = page_1
HEADER_LEFT_LINES = 1.0
HEADER_LEFT_LINE_0_TEXT = 'Header Left'
HEADER_LEFT_TEXT_FONT_SIZE = 9.0
HEADER_LEFT_LINES = 1.0
HEADER_LEFT_COLOR = 788529153.0
FOOTER_RIGHT_LINES = 1.0
FOOTER_RIGHT_LINE_0_TEXT = 'Footer Right'
HEADER_LEFT_LINES = 1.0
HEADER_LEFT_LINE_0_TEXT = 'Header Left'
FOOTER_RIGHT_TEXT_FONT_SIZE = 9.0
FOOTER_RIGHT_COLOR = 788529153.0
$----------------------------------------------------------------------PLOT
[PLOT]
INDEX = 0.0
NAME = 'plot_1'
TIME_LOWER_LIMIT = 0.0
TIME_UPPER_LIMIT = 0.0
AUTO_DATE_STAMP = 1.0
AUTO_ANALYSIS_NAME = 1.0
AUTO_SUBTITLE = 0.0
AUTO_TABLE_HEADER = 1.0
(LEGEND)
{placement xloc yloc zloc fill }
2 55.46 85.03 0.00 1
(PLOT_BORDER)
{color line_style line_weight}
788529153 1 1.0
(PRIMARY_GRID)
{color line_style line_weight}
788529165 1 0.5
(SECONDARY_GRID)
{color line_style line_weight}
788529165 1 0.5
(LEGEND_BORDER)
{color line_style line_weight}
788529153 1 1.0
(NOTES)
NUMBER_OF_NOTES = 3.0
(NOTE_1)
{name font color autopos rotation alignment xloc yloc zloc isDate isAnalysis
numStrings}
'analysis' 9 788529153 0 0.0 2 54.3200 4.7836 0.0000 0 1 0 1
STRING_1_TEXT = 'Analysis: test1_parallel_travel'
(NOTE_2)
{name font color autopos rotation alignment xloc yloc zloc isDate isAnalysis
numStrings}
'date' 9 788529153 0 0.0 2 117.8513 4.7836 0.0000 1 0 0 1
STRING_1_TEXT = '15:52:54 11-MAY-98'
(NOTE_3)
Tutorials and Examples 475
Example Plot Configuration File
{name font color autopos rotation alignment xloc yloc zloc isDate isAnalysis
numStrings}
'NOTE_3' 10 788529163 1 0.0 4 82.6197 56.0575 0.0000 0 0 0 1
STRING_1_TEXT = 'This is my note'
(PLOT_AXES)
{axis_name type label scaling divisions low_limit up_limit color font
rotation alignment placement axis_offset axis_color label_autopos
label_offset label_xloc label_yloc tic_color minor_divs auto_divs use_divs
incs trailing_zeros dec_places sci_lower sci_upper num_font num_color}
'vaxis' 'vertical' 'No Units' 'linear' 8 0 0 788529153 9 90.0 3 0 0.0
788529153 0 10.9 43.4 49.3 788529153 2 1 1 1.0 0 4 -4 5 9.0 788529153
'haxis' 'horizontal' 'Time (sec)' 'linear' 3 0 0 788529153 9 0.0 2 3 0.0
788529153 0 6.5 86.1 4.8 788529153 2 1 1 5.0 0 4 -4 5 9.0 788529153
$----------------------------------------------------------------PLOT_CURVE
[PLOT_CURVE]
NAME = 'curve_1'
PLOT = 'plot_1'
VERTICAL_AXIS = 'vaxis'
HORIZONTAL_AXIS = 'haxis'
HORIZONTAL_EXPRESSION = 'toe_angle.TIME'
VERTICAL_EXPRESSION = 'toe_angle.right'
Y_UNITS = 'no_units'
X_UNITS = 'time'
LEGEND_TEXT = 'Right'
COLOR = 'red'
STYLE = 'solid'
SYMBOL = 'none'
LINE_WEIGHT = 2.0
HOTPOINT = 0.0
INCREMENT_SYMBOL = 1.0
476 Adams/Car
Adams/Car Dynamic Suspension Analysis
Model Description
6. To animate the results, from the Review menu, select Animation Controls. Animate the model
and observe the change in the suspension travel.
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:
3. Click on the Connections tab next and highlight the Move column and click Preserve
Expression button and click OK.
Tutorials and Examples 481
Adams/Car Dynamic Suspension Analysis
4. Now, the rigid lower control arm in red is replaced by the white flexible body.
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.
Tutorials and Examples 483
Adams/Car Dynamic Suspension Analysis
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.
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.
484 Adams/Car
Adams/Car Dynamic Suspension Analysis
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.
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.
Tutorials and Examples 485
Adams/Car Dynamic Suspension Analysis
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.
486 Adams/Car
Adding the vertical setup mode of Adams/Car Suspension Testrig
Model Description
7. Select OK.
8. Go to Simulate - Suspension Analysis - Parallel Wheel Travel… again
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.
Tutorials and Examples 489
Adding the vertical setup mode of Adams/Car Suspension Testrig
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.
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.
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]
STEERING_MODE = 'angle'
$ wheel_center_height/ contact_patch_height
VERTICAL_MODE_FOR_SETUP = 'contact_patch_height'
VERTICAL_MODE = 'wheel_center_height'
VERTICAL_TYPE = 'absolute'
COORDINATE_SYSTEM = 'vehicle'
Model Description
7. Select OK.
8. Go to Simulate - Suspension Analysis - Roll & Vertical Force… again
Tutorials and Examples 495
Adding the length mode for roll analysis of Adams/Car Suspension Testrig
9. Set up the analysis as follows. In this case, the vertical mode is controlled with Length mode
during the simulation.
4. Locate the left_tire_force and right_force REQUEST under user-defined REQUESTs. And
select normal in component list.
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]
STEERING_MODE = 'angle'
VERTICAL_MODE_FOR_SETUP = 'wheel_center_height'
$ roll_angle / roll_angle_disp
VERTICAL_MODE = 'roll_angle_disp'
COORDINATE_SYSTEM = 'iso'
498 Adams/Car
General Actuation Analysis feature examples
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.
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. Note that the
environment variable MSC_FLATTEN_ADM should not be set.
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,
500 Adams/Car
General Actuation Analysis feature examples
7. Once the analysis is finished, open the post processor (F8) and import the RPC file (extension
.rsp) 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,
Tutorials and Examples 501
General Actuation Analysis feature examples
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.
The "table view" for setting actuator parameters is shown below,
Tutorials and Examples 503
General Actuation Analysis feature examples
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.
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.
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,
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,
506 Adams/Car
General Actuation Analysis feature examples
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.
Tutorials and Examples 507
Path optimization feature example
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.
508 Adams/Car
Path optimization feature example
In AChassis, use Utilities->Path Optimization command to launch the tool. The dialog for path
optimization in AChassis looks like the one as below
Tutorials and Examples 509
Path optimization feature example
510 Adams/Car
Path optimization feature example
Dialog Box - F1 Help 507
Adams/Car can automatically adjust the mass properties of an assembly to match the mass properties you
input. Learn about Assemblies.
To adjust the aggregate mass, you enter the mass, Centroidal Inertias, and the center-of-mass location
relative to a marker. Learn about Markers.
You also select a part that Adams/Car modifies to match the desired mass properties.
Generally, you use the automatic mass adjustment for vehicle assemblies, but
you can use it with any existing assembly.
Relative to Marker Specify a marker that defines the reference location of the new CG of the
assembly. This marker is only used for the CG Location, not the inertias.
CG Location Enter three coordinates that define the position of the new center of gravity (CG)
of the assembly with respect to the marker you specify in the Relative to Marker
text box.
Modify Part Specify a part whose mass and inertia properties Adams/Car will update to
achieve the desired total mass and inertia properties. We recommend that you set
this text box to chassis or body of the vehicle so Adams/Car can reduce the mass
or inertia, if desired.
This dialog box is experimental functionality and should be used with caution because it has not been
tested to meet the required quality metrics. You can use this dialog box to automatically upgrade a
database from one version, such as 11.0, to another, such as 12.0.
If the input joint and output joint you specified are either both left
or both right entities, Adams/Car creates a symmetric reduction
gear pair. For any other combination of left/right/single joints,
Adams/Car creates a single reduction gear.
If you input a cylindrical joint in the Output Joint text box, Adams/Car enables the following option:
Output Type of Freedom Because a reduction gear can work with either of the two degrees
of freedom in a cylindrical joint, you must specify if the rotational
or translational motion will be the output for the gear.
Reduction Ratio Enter the real value to be used for the reduction ratio in the
following motion equation:
• Instant axis - Requires one part and one hardpoint. When using this
method, it is very important that you select the correct part and
hardpoint information. You can use any part and hardpoint, provided
that locking the vertical motion of the part at that hardpoint location
actually locks the spring travel. Learn about Hardpoints.
• Geometric - Requires two parts and two coordinate references.
Adams/Car creates markers that belong to the specified parts at the
desired location (the ones defined by the coordinate references).
Learn about Markers.
The geometric method is more intuitive, but sometimes is not
applicable (for example, in a suspension where the geometrical
information that defines the steer axis is not obvious; where it is
impossible to identify the position of the steer axis).
Note: Both methods give accurate results, but the instant axis is more
general, because it can be used when the steer axis cannot be
determined geometrically (for example in a multi-link
suspension).
Suspension Type Select a suspension type:
Note: * For geometric, the steer axis is the line connecting the two markers at the location
specified in the coordinate reference field.
Dialog Box - F1 Help 515
Delete Road Geometry
Deletes the graphics associated with the road. This can be useful when you are using 'fit' commands and
the default model becomes very small in relation to the road graphic. Deleting road geometry does not
affect the results of the full-vehicle Analysis or your ability to animate the results.
Tip: If you right-click in the main window, away from any modeling elements, and select Fit -
no ground, Adams/Car resizes the window, allowing you to see the enlarged default model
without worrying about the size of the road graphic.
Dependency Control
Supported only in previous releases
If the data is not in the suspension characteristic file (.scf) file, Adams/Car
automatically turns off the corresponding dependency. Adams/Car will,
therefore, consider a data block in the calculation of a given primary
dependency if the data block exists and the corresponding dependency switch
is set to 1 in the Dependency_Flags array.
Dialog Box - F1 Help 517
Event Builder
Event Builder
(Standard Interface) Simulate Full-Vehicle Analysis Event Builder
You use the Event Builder to create or modify an XML event file (previously referred to as a driver
control file, see XML File Format). Using the Event Builder, you create a series of mini-maneuvers that
define a file-driven (see File-Driven Analysis), full-vehicle analysis (see Full-Vehicle Analysis:
SmartDriver).
You can start Event Builder in new file mode or in modify mode. The first time you start Event Builder
from the Adams/Car Standard Interface, it appears in new file mode. If you want to generate a new event
file, from the File menu select New. If you want to edit an existing event file, from the File menu, select
Open.
Opening Event Builder again automatically loads the XML file that you were last using.
Adams/Car automatically generates event files when you submit any of the standard events, such as step
steer. You can use the Event Builder to modify these files or view them to understand their content.
However, you can't view existing TiemOrbit form driver control files (.dcf) without first converting them
to XML event files. The shared car database includes sample event files.
If you want to convert existing .dcf files to .xml, from the Tools menu, point to Database Management,
point to Version Upgrade, and then select TO XML.
When Linear is set to yes, a linear analysis is performed after each static equilibrium analysis during
the pre-phase.
Note that values computed during Skidpad or Straight static setup overwrite initial steer/throttle
signals, in case you selected skidpad or straight.
Gear Shifting Parameters tab - Defines the gear-shifting properties and the shape of the upshift and
downshift curves for throttle and clutch signals. (see Structure of Event Files)
Gear Shift Duration of the gear shifting event (> 0.0).
Throttle Raise Delta time of the step function for the ascending curve of the throttle signal
(> 0.0).
Clutch Raise Delta time of the step function for the ascending curve of the clutch signal (>
0.0).
Throttle Fall Delta time of the step function for the descending curve of the throttle signal
(> 0.0).
Clutch Fall Delta time of the step function for the descending curve of the clutch signal
(> 0.0).
Clutch Off Throttle On Delay between clutch off and throttle on (>0.0).
Delay
Clutch On Throttle Off Delay between clutch on and throttle off (>0.0).
Delay
RPM Control Enable a feedback PID controller to eliminate jerk and synchronize engine
rotational speed.
Controller Parameters tab – Specify Machine Control’s control actions (see Machine Control Basics)
Rax Saturation When set to true and the vehicle velocity is far from the target, the
corresponding acceleration reference profile is altered to let the vehicle reach
the target faster [true, false].
Yaw Correction Enables the internal yaw rate controller that operates on the steering, to
compensate unpredicted yaw rate events (that is, oversteering) [true, false].
Tire Fz Control When set to true, the Machine Control checks if the driving tires are lifted,
and in such a case, cuts throttle [true/false].
Kick-down Control Gear shifting method that chooses the gear that would give the maximum
vehicle acceleration [true/false].
Dialog Box - F1 Help 519
Event Builder
Once the required steering wheel angle to follow a specified path is calculated by Machine Control (by
the feedforward controller and feedback PID controller using the PID gains as shown above), the PID
Steering output controller calculates the Force or Torque required to obtain such a steering wheel angle.
SteFrc P Proportional gain for calculation of steering force output (>0.0).
SteFrc I Integral gain for calculation of steering force output (>0.0).
SteFrc D Derivative gain for calculation of steering force output (>0.0).
SteTrq P Proportional gain for calculation of steering torque output (>0.0).
SteTrq I Integral gain for calculation of steering torque output (>0.0).
SteTrq D Derivative gain for calculation of steering torque output (>0.0).
Dialog Box - F1 Help 521
Event Builder
Note that at the bottom of the Table Editor, you can add a new mini-maneuver
by entering a string in the Name text box and then selecting Add.
Active Set a mini-maneuver to active (yes) or inactive (no). Adams/Car only
performs active mini-maneuvers.
Abort Time Specify the relative time from the beginning of the mini-maneuver when the
Driving Machine stops the mini-maneuver. It executes the next mini-
maneuver if defined. Value must be > 0.0.
Step Size Specify the Adams/Solver Output step size.
H-Max Specify Adams/Solver maximum integration step size.
Note that the actuator types do not necessarily correspond to the actuators
defined in your vehicle model. The Event Builder cannot browse your model
and populate the Actuator Type option with the actuators actually defined in
your model.
522 Adams/Car
Event Builder
• Table Editor - Add new end conditions to the mini-maneuver you are creating. To display,
The Table Editor mode gives you access to the complete set of parameters. Learn more about
Specifying Conditions.
Note that the conditions do not necessarily correspond to the condition defined in your vehicle
model. This is an extensive list but the Event Builder cannot browse your model and populate
the Type option menu with the condition actually defined in your model.
• Property Editor - Define parameters for the condition. To display, you can do either of the
following:
• Double-click the mini-maneuver name
• Right-click the mini-maneuver name and select Modify with Property Editor
Current Field Unit Shows the current units of the quantity you are entering. For example, if you
specify the vehicle speed, this text box loads the corresponding unit string
[velocity (meter/s)].
Environment variables for Longitudinal and Lateral Machine Control PID Controller
gains.
Following environment variables can be used to overwrite default values for the longitudinal and lateral
Machine Control PID Controller gains. The default values are used for PID controller gains when
converting .dcf format Event files, which do not contain the PID controller gains, to .xml format Event
files. Also, the environment variables are used to overwrite default values in the Event Builder when
creating a new Event. Existing .xml Event files that contain the longitudinal and lateral Machine Control
PID Controller gains will not be affected by the environment variables.
External Files
(Standard Interface) Simulate Suspension Analysis External Files
Performs an analysis that corresponds to the loadcase or wheel-envelope file(s) specified for the analysis
itself. To determine what kind of analysis will be performed, see the header of the file itself.
Learn about External-File Analyses.
Learn about:
You can also use a 3D road in this context. Make sure that the vehicle
remains on the road, because 3D roads are not as wide as 2D flat roads.
Initial Velocity Enter the initial speed of the vehicle in the units specified in the pull-down
menu to the right of the Initial Velocity text box.
Start Time Enter a real value that specifies the time at which the analysis is to start.
Open-Loop/Closed- Select a mode for the Longitudinal Acceleration Controller:
Loop Brake
• Open loop - Specify a final brake value and a duration of step
value. The brake will step from its initial value to the final value in
the specified duration.
• Closed loop - Specify a longitudinal deceleration.
If you select Open-Loop Brake, Adams/Car displays the following option:
Final Brake Enter the final value of the brake demand. This value will depend on how
your brake system is modeled and the default units that have been used.
534 Adams/Car
Full-Vehicle Analysis: Braking
Clear its selection to force the same gear to remain active during the
entire analysis.
Dialog Box - F1 Help 541
Full-Vehicle Analysis: Constant-Radius Cornering
Note: For both of the following two options, you can select the units you want to use. Adams/Car
will convert the units you specify to model units; for example, 100 km/hr = 27777.78 mm/s.
Radius Enter a value for the radius of the circular path.
Longitudinal Velocity Enter a value for the vehicle target longitudinal velocity. Adams/Car
calculates the target lateral acceleration of the vehicle accordingly.
Dialog Box - F1 Help 543
Full-Vehicle Analysis: Cornering Steer Release
Note: For both of the following two options, you can select the units you want to use. Adams/Car
will convert the units you specify to model units; for example, 1 g = 9.81 m/s.
Lateral Acceleration Enter the target lateral acceleration. Adams/Car calculates the skidpad
radius accordingly.
Longitudinal Velocity Enter the vehicle's target longitudinal velocity.
Quasi-Static Skidpad Select to perform a quasi-static prephase analysis before running the
Setup transient analysis on your full-vehicle assemblies.
• Force - Indicates that the steering inputs are forces applied to the
rack of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to the
steering wheel.
• Angle - Indicates that the steering inputs are steering wheel
angular displacements.
• Length - Indicates that the steering inputs are rack displacements.
Quasi-Static Straight- Select to perform a quasi-static prephase analysis before running the
Line Setup transient analysis on your full-vehicle assemblies.
To learn more about event files see Using the Driving Machine.
Create Analysis Log File Select if you want Adams/Car to write information about the assembled
model and analysis to an Analysis Log File.
Select to display a dialog box where you can add multi-line comments to
any entity, to describe its purpose and function. Adams/Car displays
different comments dialog boxes, depending on the entity type for which
you want to record comments:
Learn about:
• Force - Indicates that the steering inputs are forces applied to the
rack of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to the
steering wheel.
• Angle - Indicates that the steering inputs are steering wheel angular
displacements.
• Length - Indicates that the steering inputs are rack displacements.
Cruise Control Select if you want Adams/Car to try to maintain the specified Initial Velocity
throughout the analysis, using the longitudinal controller inside the Driving
Machine. Learn about Using the Driving Machine.
For more information about the different quasi-static setup method keywords
(such as SETTLE and STRAIGHT), see Structure of Event Files.
For more information about the different quasi-static setup method keywords
(such as SETTLE and STRAIGHT), see Structure of Event Files.
• Force - Indicates that the steering inputs are forces applied to the
rack of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to the
steering wheel.
• Angle - Indicates that the steering inputs are steering wheel angular
displacements.
• Length - Indicates that the steering inputs are rack displacements.
Cruise Control Select if you want Adams/Car to try to maintain the specified Initial Velocity
throughout the analysis, using the longitudinal controller inside the Driving
Machine. Learn about Using the Driving Machine.
For more information about the different quasi-static setup method keywords
(such as SETTLE and STRAIGHT), see Structure of Event Files.
The Driving Machine, when operating in closed-loop mode, must know a series of vehicle-specific
parameters to correctly scale the output values.
• Force - Indicates that the steering inputs are forces applied to the
rack of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to
the steering wheel.
• Angle - Indicates that the steering inputs are steering wheel
angular displacements.
• Length - Indicates that the steering inputs are rack
displacements.
Dialog Box - F1 Help 575
Full-Vehicle Analysis: Single Lane Change
• Driver Course
• 3D Road
If you set Course Type to Driver Course, Adams/Car displays the following options:
Road Data File Select a road data file (*.rdf) used by the tire subsystem.
Course Data File Select a course data file (*.drd) whose centerline defines the path
that your vehicle will attempt to follow.
If you set Course Type to 3D Road, Adams/Car displays the following option:
3D Road Data File Select a 3D road data file. The extension is the same as that of other
road data files, but its content is different: it contains information
about the road's three-dimensional profile and it is used by the
steering controller. For more information, see Road Models in
Adams/Tire.
Initial Velocity Enter the initial speed of the vehicle in the units specified in the pull-
down menu to the right of the Initial Velocity text box.
Dialog Box - F1 Help 577
Full-Vehicle Analysis: SmartDriver
• None
• Normal
• Settle
• Straight
• Skidpad
Road Data File Enter the name of a file that contains road data information. The tire
subsystems use this information to calculate the tire/road interaction
forces.
• Force - Indicates that the steering inputs are forces applied to the
rack of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to the
steering wheel.
• Angle - Indicates that the steering inputs are steering wheel angular
displacements.
• Length - Indicates that the steering inputs are rack displacements.
Cruise Control Select if you want Adams/Car to try to maintain the specified Initial
Velocity throughout the analysis, using the longitudinal controller inside the
Driving Machine. Learn about Using the Driving Machine.
• Force - Indicates that the steering inputs are forces applied to the rack
of the steering subsystem.
• Torque - Indicates that the steering input is a torque applied to the
steering wheel.
• Angle - Indicates that the steering inputs are steering wheel angular
displacements.
• Length - Indicates that the steering inputs are rack displacements.
Cruise Control Select if you want Adams/Car to try to maintain the specified Initial Velocity
throughout the analysis, using the longitudinal controller inside the Driving
Machine. Learn about Using the Driving Machine.
For more information about the different quasi-static setup method keywords
(such as SETTLE and STRAIGHT), see Structure of Event Files.
Generates a loadcase file and stores it in the Default Writable Database. Learn about loadcase files at
Setting up Suspension Analyses.
• Wheel Travel
• Steering
• Static Load
• Roll & Vert. Force
The dialog box changes as you select the different types of analyses.
The following options are common to all types of loadcase files for suspension analyses:
Number of steps Enter the number of steps.
File Name Enter a name for the loadcase file.
After you fill in the dialog box and select OK, Adams/Car creates a loadcase file with the extension .lcf,
and places it in the default writable database. You can then submit a suspension analysis and use the
loadcase file you just created.
Note: Adams/Car writes all the information used to generate a loadcase file in the DATA block
of the file itself.
588 Adams/Car
Modify Force Elements
Modify Gear
(Standard Interface) Right-click component Modify
Differential gear
Creates a new full-vehicle assembly from the specified subsystems. See Assemblies.
Rear Wheel Subsystem • To select a subsystem that is open in the current session,
Body Subsystem
select . The icon changes to and the text box
is replaced by a pull-down menu from which you can
select a subsystem.
Powertrain Subsystem If you want to include a powertrain subsystem in your assembly,
select the toggle to the left of the text box. Then, do one of the
following:
Creates a new suspension assembly from the specified subsystems. See Assemblies and Subsystems.
box next to .
box next to .
Defines a group of parts which should not have any initial translational velocity automatically set during
analysis setup.
The standard behavior for Adams/Car is to set the initial velocity of any part to the vehicle speed in the
global X-direction, and 0 (zero) in the global Y- and Z-directions. If a rotating part does not have it's
Center of Mass marker on the rotational axis, then the initial velocity of this part will be overwritten by
the default behavior. The same happens to pistons, conrods, and so on which not only travel with the
vehicle, but also in other global directions, and should have their initial velocity set accordingly.
Including the part, in the No Initial Velocity group avoids this problem.
For example, if you specify 10 steps and -100 mm rebound and 100 mm
jounce, Adams/Car temporarily creates a loadcase file that contains left
vertical wheel displacement inputs of -100, -60, -20, 20, 60, and 100 mm
and right vertical wheel displacement inputs of 100, 60, 20, -20, -60, and -
100 mm as shown next:
Typical vehicles can reach a lateral acceleration between 0.4 and 1.0 g.
• positive value = road banks into corner (that is, outside of turn is
higher than inside of turn).
• negative value = road is off-cambered and banks out of corner (that
is, inside of turn is higher than outside of turn).
Create Analysis Log File Select if you want Adams/Car to write information about the assembled
model and analysis to an Analysis Log File.
Select to display a dialog box where you can add multi-line comments to
any entity, to describe its purpose and function. Adams/Car displays
different comments dialog boxes, depending on the entity type for which
you want to record comments:
For example, if you specify five solution steps, 0 degrees as the initial
side-slip angle, and 10 degrees as the final angle, Adams/Car performs six
quasi-static analyses, corresponding to the following side slip angles: 0,
2, 4, 6, 8, and 10.
Steering Amplitude Enter the angle amplitude of the steering wheel. The steering-wheel angle
will be a sinusoidal signal with the specified amplitude.
Steering Cycle Duration Enter the duration of each side-slip angle analysis. The sinusoidal
steering-wheel signal will sweep an entire cycle within the specified
duration.
Dialog Box - F1 Help 603
Quasi-Static Force-Moment Method
• positive value - Road banks into corner (that is, outside of turn is
higher than inside of turn).
• negative value - Road is off-cambered and banks out of corner
(that is, inside of turn is higher than outside of turn).
Create Analysis Log File Select if you want Adams/Car to write information about the assembled
model and analysis to an Analysis Log File.
Select to display a dialog box where you can add multi-line comments to
any entity, to describe its purpose and function. Adams/Car displays
different comments dialog boxes, depending on the entity type for which
you want to record comments:
Allows you to specify different Road Data Files for individual wheels, to specify different friction
parameters or different wheel inputs.
• Left - The value in the Fixed Wheel Center text box value fixes the
right wheel.
• Right - The value in the Fixed Wheel Center text box value fixes
the left wheel.
Fixed Wheel Center Enter a real value that fixes the opposite wheel-center vertical
displacement. For example, if you choose set Side to Left and enter 50 mm
in this text box, Adams/Car fixes the right side wheel-center vertical wheel
center as 50 mm above design position, and moves the left wheel from the
lower to the upper bound.
610 Adams/Car
Single Wheel-Travel Analysis
For example, if you specify 500 solution steps for duration of 5.0 seconds,
your output step size will be 0.01 seconds.
Mode of Simulation Select interactive, graphical, background, or files only .
Create Analysis Log File Select if you want Adams/Car to write information about the assembled
model and analysis to an Analysis Log File.
614 Adams/Car
Suspension Analysis: Dynamic
Performs a series of parallel, single travel, and static load analyses on a multibody suspension assembly
(see Assemblies), to generate a suspension characteristic file (scf).
The resulting scf file defines the left and right data blocks for a dependent suspension.
See Notes About Dependent/Independent Suspension Curves.
Performs a series of steering, parallel, single travel, and static load analyses on the multibody suspension
assembly (see Assemblies), to generate a suspension characteristic file (scf).
See Notes About Dependent/Independent Suspension Curves.
For example, if you specify five solution steps, -10 degree and 10
degree roll-angle sweep, the loadcase file that Adams/Car
automatically generates will contain roll displacement inputs of -10,
-6, -2, 2, 6, and 10 degrees.
Mode of Simulation Select interactive, background, or files only.
Calculates suspension characteristics. You must set Suspension Parameters before you can run a
suspension analysis. See Running Suspension Analyses.
• User Defined
• Property File
If you set Tire Model to User Defined, Adams/Car enables the following two options:
Tire Unloaded Radius Enter a value for the unloaded radius.
Tire Stiffness Enter a positive number that defines the tire stiffness at the input position of
the suspension assembly.
If you set Tire Model to Property File, Adams/Car enables the following option:
Tire Property File Enter a tire property file.
Learn about:
Note: • Adams/Car uses the parameters cg_height, wheelbase, sprung_mass, and tire
stiffness when calculating:
• Percent anti-dive
• Dive
• Percent anti-lift
• Lift
• Percent anti-squat
• Roll center height
• Adams/Car uses the tire stiffness when calculating:
• Suspension rates
• Total roll rate
Dialog Box - F1 Help 625
Suspension Analysis: Static Loads
Notes: • Positive values for bump and rebound travel move the wheel centers upward from
the design position. Negative values move the wheel centers downward.
• Positive steering-wheel angle rotates the steering wheel counter-clockwise as if
making a left turn.
• Positive rack displacement moves the rack toward the right side of the vehicle.
• Forces and torques are expressed as follows:
Force: Point of application: Reference frame:
Lateral force (cornering) Contact patch TYDEX H ISO-W
Longitudinal force (braking) Contact patch TYDEX H ISO-W
Longitudinal force (acceleration) Wheel center TYDEX C ISO-C
Overturning moments Contact patch TYDEX H ISO-W
Rolling resistance torque Contact patch TYDEX H ISO-W
Aligning torque Contact patch TYDEX H ISO-W
Dialog Box - F1 Help 629
Suspension Analysis: Steering
When comparing the results obtained from the iso coordinate system
and vehicle system, the results will be identical if the wheel heights are
the same. The results will vary if the wheel heights are different. This
is because of the way the tire forces are calculated in different
coordinate systems, and specifically because the different orientation
of the road-tire vector for each analysis.
Dialog Box - F1 Help 631
Suspension Analysis: Steering
Toggles the driveline (Drivelines) activity of a suspension subsystem, if a driveline is part of the
suspension template.
Adams/Car Solver
The Adams/Car Solver is a demand-loaded library that consists of automotive-specific solver elements
that are not supported in the standard Adams/Solver. Some of the elements modeled in the Adams/Car
Solver include springs, dampers, bushings, conceptual susp
ension analyses, and suspension characteristics.
When the standard Adams/Solver is started and specific routines are required, the Adams/Car Solver is
automatically loaded as an extension. You can also add your own extension by creating user-defined
libraries as explained in Introducing Adams/Solver Libraries.
Appendix 641
Adams/Car Standard Interface
Centroidal Inertia
Centroidal inertia is inertia measured about the center of mass.
Appendix 645
Course Marker
Course Marker
When you create the assembly, Adams/Car creates a marker on the ground part. (Learn about Markers.)
Because Adams/SmartDriver uses this marker to determine the position, velocities, and accelerations of
the vehicle, the orientation of this marker is critical.
You should orient it depending on the road data file that you want to use for your Analysis: the positive
x-axis of the course marker should point towards the positive direction of travel in the road data file.
646 Adams/Car
Data-Driven Analysis
Data-Driven Analysis
The inputs for a data-driven analysis are defined in the driver_loadcase_file used in the analysis. A driver
loadcase specifies inputs to the vehicle as: steering value, desired velocity, braking pressure, and so on.
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.
See Working with Event Files (.xml).
Appendix 647
Drivelines
Drivelines
If you modeled a driveline in the suspension template, you can toggle the driveline between active and
inactive states.
648 Adams/Car
Error Checks
Error Checks
To avoid nonphysical conditions, you must carefully select the desired mass and inertia values.
Sometimes, Adams/Car cannot match the desired aggregate mass properties you input because the
properties result in negative mass or in negative principal inertias for the part you select to modify.
For example, assume the aggregate mass of the model is 2000 kg, and the mass of the part is 400 kg. If
you input a desired aggregate mass of 1500kg, then to match the desired mass the modified part must
have a mass of (400+(1500-2000))=-100 kg, which is nonphysical. Two conditions lead to error:
• If the calculated mass for the part < 0, Adams/Car cancels the adjustment.
• If the principal inertias < 0, Adams/Car adjusts the mass and the location of the center of gravity
(CG) of the part (so that the overall location of the CG of the model is the one you entered), but
does not modify the moments of inertia.
Appendix 649
Full-Vehicle Assembly
Full-Vehicle Assembly
A full-vehicle assembly is comprised of:
• Front suspension and front wheel subsystems
• Rear suspension and rear wheel subsystems
• Steering subsystem
• Body subsystem
It can also consist of many other subsystems and nonstandard subsystems. For example, you may want
to create an assembly that contains particular control systems.
650 Adams/Car
General Parts
General Parts
General parts are rigid parts that you define using their location, orientation, mass, inertia, and center of
gravity. If you want to, you can add geometry to general parts. Adams/Car uses either geometry-based or
user-entered information to determine mass properties for general parts.
Appendix 651
Interface Part
Interface Part
An interface part is a massless general rigid part that is rigidly fixed to a specified node. You can use
interface parts to connect flexible bodies to the rest of your mechanism.
652 Adams/Car
Keyword
Keyword
A word that represents a command or parameter.
Appendix 653
Loadcase Files
Loadcase Files
Loadcase files are text files that contain the vertical wheel travel and other parameters needed to control
a suspension analysis.
654 Adams/Car
Longitudinal Acceleration Controller
Longitudinal Deceleration
This parameter controls the brake signal: a longitudinal closed-loop controller acts on the brake to
maintain the desired rate of change of longitudinal velocity.
656 Adams/Car
Mode of Simulation: Graphical
Mount Parts
Mount parts are massless parts that attach to other parts. By default, mount parts are fixed to ground.
Mount parts represent the vehicle body or subframe and act as place holders.
When you create a mount part, Adams/Car automatically creates an input communicator for it of class
mount. The input communicator requests the name of the part to which the mount part should connect.
If Adams/Car finds a matching communicator during assembly, it replaces the mount part with the part
that the output communicator indicates. The replacement part is from another subsystem. If Adams/Car
finds no matching output communicator, it replaces the mount part with the ground part.
658 Adams/Car
Notes About Dependent/Independent Suspension Curves
The generate_scf.exe utility uses one of the .nam files, that Adams/Car creates, as the key to determine
the request ID corresponding to a given result name; to successfully execute generate_scf.exe, the name
file *_pw0.nam must be in the working directory.
The type of results and components that generate_scf.exe is looking for in the different requests is
predetermined, and you cannot change it. It relies on the definition of the suspension characteristic
requests as they are formulated in the .__MDI_SUSPENSION_TESTRIG.
Dependent and independent suspension curves are very different. Adams/Car does not know if your
suspension is dependent or independent. It is up to you to use the appropriate dialog box that generates
suspension curves.
Appendix 659
Road Data File
Creates a roll and vertical force loadcase file (see Loadcase Files).
Roll Angle
Roll angle is measured by the inclination of the Test Rig tables.
662 Adams/Car
Setting Initial Toe and Camber Variables
Static Load
(Standard Interface) Simulate -> Suspension Analysis -> Create Loadcase -> Select Loadcase Type = Static Load
Creates a static load loadcase file. Learn about loadcase files with Setting up Suspension Analyses.
Steer Axis
You need the steer axis of a suspension to compute suspension characteristics such as caster angle,
kingpin inclination, scrub radius, and caster moment arm.
When you create a suspension template in Adams/Car, you must select the method that Adams/Car will
use to compute the steer axis, and provide the necessary input information. You can use two methods to
calculate suspension steer axes:
• Geometric - Adams/Car calculates the steer axis by passing a line through the points you
selected in the Coordinate Reference text boxes.
• Instant axis - Adams/Car calculates the steer axis as the instant axis of rotation of the wheel
carrier parts. To calculate the steer axis, in physical terms, Adams/Car first locks the spring
travel and applies incremental steering torque or force. Then, from the resulting translation and
rotation of the wheel carrier part, it is able to calculate the instant axis of rotation for each wheel.
The instant axis of rotation corresponds to the steer axis.
666 Adams/Car
Steering
Steering
(Standard Interface) Simulate -> Suspension Analysis -> Create Loadcase -> Select Loadcase Type = Steering
Creates a steering loadcase file. Learn about loadcase files with Setting up Suspension Analyses.
Suspension Assembly
An suspension assembly is comprised of suspension and steering subsystems and a suspension Test Rig.
A steering subsystem, however, does not have to be present in a suspension assembly. For example, a rear
suspension assembly, in most circumstances, would not contain a steering subsystem.
668 Adams/Car
Suspension Parameters
Suspension Parameters
Suspension parameters describe the vehicle in which you want to use the suspension. Adams/Car uses,
for example, the parameters wheelbase, cg_height, and sprung mass to calculate the fore-aft weight
transfer during braking and acceleration. Adams/Car then uses weight transfer to calculate dive and lift
suspension characteristics.
Once you set the parameters in an Adams/Car session, Adams/Car uses those settings for all suspension
analyses until you reset the parameters.
Appendix 669
Torque versus Engine Speed and Throttle Position
Wheel Travel
(Standard Interface) Simulate -> Suspension Analysis -> Create Loadcase -> Select Loadcase Type = Wheel Travel
Creates a wheel travel loadcase file. Learn about loadcase files with Setting up Suspension Analyses.
• Left
• Right
672 Adams/Car
Wheel Travel