MotionView 2019 Tutorials
MotionView 2019 Tutorials
Tutorials
altairhyperworks.com
Contents
Access the Model Files ...................................................................................................... 1
MV-100: Introduction to the MotionView Environment ........................................................... 2
MV-1000: Interactive Model Building and Simulation ...........................................................25
MV-1012: Analytical Contact Simulation using MotionView and MotionSolve ...........................57
MV-1015: Using Spline3D to Model Combustion Forces in an Engine ......................................72
MV-1020 Modeling 2D Rigid to Rigid Contact Simulation .......................................................87
MV-1023: Using Python Subroutines in MotionView Model Building ...................................... 108
MV-1025: Modeling Point-to-Curve (PTCV) Higher-Pair Constraint ....................................... 125
MV-1026: Modeling Curve-to-Curve (CVCV) Higher-Pair Constraint...................................... 142
MV-1027: Modeling Point-to-Deformable-Curve (PTdCV) Higher-Pair Constraint .................... 160
MV-1028: Modeling Point-to-Deformable-Surface (PTdSF) Higher-Pair Constraint .................. 169
MV-1029: Modeling Point-to-Deformable-Surface Force (PTdSF) ......................................... 177
MV-1030: Creating a System Definition Using the MotionView GUI ...................................... 184
MV-1032: Model Building and Simulation using Wizards ..................................................... 196
MV-1040: Model Building using Tcl .................................................................................. 205
MV-1050: Automation Using TCL ..................................................................................... 214
MV-1060: Introduction to MDL ........................................................................................ 217
MV-1070: Creating a Simple Pendulum System using MDL ................................................. 231
MV-1080: Creating an Analysis using MDL ........................................................................ 248
MV-1090: Creating a Dataset using MDL .......................................................................... 254
MV-2040: Load Estimation for a Fore Canard Actuator Mechanism under Aero-dynamic Loads 259
MV-2100: Introduction to Non-Linear Finite Element (NLFE) Analysis in MotionSolve ............. 279
MV-2110: Using an NLFE Helical Spring in a Cam-Follower Mechanism ................................. 299
MV-3020: Optimization of a Two Spring Mass System ........................................................ 317
MV-3021: Optimization of an Impact Absorber .................................................................. 329
MV-3022: Optimization of a 4-bar Model .......................................................................... 337
MV-3023: Optimization of a Suspension ........................................................................... 351
MV-3030: Load Export ................................................................................................... 359
MV-3040: Durability and Fatigue Tools ............................................................................. 366
MV-4000: Eigen Analysis using ADAMS/Linear .................................................................. 374
MV-4010: Working with ADAMS ...................................................................................... 379
MV-4020: Solver Neutral Modeling .................................................................................. 383
MV-4030: Flexible Bodies for MotionView with Abaqus ....................................................... 386
MV-5000: Rigid body Animation - Basic ............................................................................ 395
MV-5010: Rigid body Animation - Advanced ..................................................................... 401
MV-6000: Plotting Basics ................................................................................................ 406
MV-7007: Adding Friction to Joints .................................................................................. 411
MV-8000: Open Loop Events........................................................................................... 429
MV-8001: Path and Velocity Following .............................................................................. 447
MV-8002: Multi-Maneuver Events .................................................................................... 462
MV-8003: Gear and Clutch Control .................................................................................. 468
MV-8050: Using the Leaf Spring Builder ........................................................................... 473
MV-8100: Tire Modeling ................................................................................................. 502
MV-8500: Using the Truck Library ................................................................................... 518
Intellectual Property Rights Notice
Copyrights, Trademarks, Trade Secrets, Patents & Third Party Software Licenses
Note: Pre-release versions of Altair software are provided ‘as is’, without warranty of any
kind. Usage of pre-release versions is strictly limited to non-production purposes.
Altair Feko™ ©1999-2014 Altair Development S.A. (Pty) Ltd.; ©2014-2019 Altair Engineering Inc.
Note:
Compute Manager™ ©2012-2017 is now part of Altair Access
PBS Desktop™ ©2008-2012 is now part of Altair Access, specifically Altair Access
desktop, which also has Altair Access web and Altair Access mobile
Altair intellectual property rights are protected under U.S. and international laws and treaties.
Additionally, Altair software is protected under patent #6,859,792 and other patents pending. All other
marks are the property of their respective owners.
ALTAIR ENGINEERING INC. Proprietary and Confidential. Contains Trade Secret Information.
Not for use or disclosure outside of Altair and its licensed clients. Information contained in Altair
software shall not be decompiled, disassembled, “unlocked”, reverse translated, reverse engineered,
or publicly displayed or publicly performed in any manner. Usage of the software is only as explicitly
permitted in the end user software license agreement. Copyright notice does not imply publication.
Altair Engineering Inc. and its subsidiaries and affiliates reserve the right to embed software security
mechanisms in the Software for the purpose of detecting the installation and/or use of illegal copies of
the Software. The Software may collect and transmit non-proprietary data about those illegal copies.
Data collected will not include any customer data created by or used in connection with the Software
and will not be provided to any third party, except as may be required by law or legal process or to
enforce our rights with respect to the use of any illegal copies of the Software. By using the Software,
each user consents to such detection and collection of data, as well as its transmission and use if an
illegal copy of the Software is detected. No steps may be taken to avoid or detect the purpose of any
such security mechanisms.
To contact an Altair support representative, reference the following table or the information available on
the HyperWorks website: www.altairhyperworks.com/ClientCenterHWSupportProduct.aspx.
Israel [email protected]
Malaysia [email protected]
For questions or comments about this help system, send an email to [email protected].
In addition, the following countries have resellers for Altair Engineering: Colombia, Czech Republic,
Ecuador, Israel, Russia, Netherlands, Turkey, Poland, Singapore, Vietnam, Indonesia
Official offices with resellers: Canada, China, France, Germany, India, Malaysia, Italy, Japan, Korea,
Spain, Taiwan, United Kingdom, USA
1. To access model files, visit Altair Connect or the Altair Client Center.
A user ID and password are required to access the model files. Follow the instructions at the
website to obtain login credentials.
2. Select the required file package and download it onto your system.
Note that the files may require unzipping before proceeding with the tutorials. When extracting
zipped files, preserve any directory structure included in the file package.
Invoking MotionView:
• In Windows - go through the Start Menu (Start Menu > Programs > Altair
HyperWorks installation > MotionView).
OR
MotionView is one of the clients that reside under the HyperWorks Desktop (HWD)
framework. The framework provides a common layout for all clients. Other clients that
are available under this framework are: Hypermesh, HyperView, HyperGraph 2D,
HyperGraph 3D, MediaView, TextView, and TableView. The client is selected, or
changed, using the Client selector drop-down menu:
The image below shows the HWD graphical user interface with MotionView activated as
the client:
The HWD graphical user interface can be broadly categorized into six segments:
Main Menu
The Main menu bar includes all functionalities that are available through the various toolbars.
Additionally, the Main menu contains other useful utilities like FlexPrep, Import CAD/FEM, Macros,
etc.
Note - The Main menu varies between the different clients of HyperWorks Desktop.
The following table summarizes the functionalities available in the Main menu of MotionView:
• Assembly Wizard
• Attachment Wizard
• Implicit Graphics
• Data Summary
• Topology Summary
• Task Wizard
• View Reports
• Check Model
• CG/Inertia Summary
• Custom Wizards
• Reports
• Templex Functions
• Options
Toolbars provide quick access to commonly used features. HyperWorks Desktop toolbars are
static and will not change, regardless of which application is active. Some of the toolbars become
inactive when different clients are selected. In the table below, all of the HWD toolbars are
introduced. Please be sure to note the toolbars that are not applicable to the MotionView client.
Note - To navigate
through different pages of
a session, use the
Previous Page or
Reports Options to
Create/Open/Define
Report Templates.
Scripting Options to
Create/Open/Debug/Run
Tcl and HyperMath
scripts.
Note - Not available in MotionView.
Note - Please refer to the Hyperworks Desktop User’s Guide > Graphical User Interface > Toolbars topic
for a detailed explanation of each toolbar listed above.
Client specific toolbars provide access to options required for pre- or post-processing of FEA/MBD
models. MotionView has a set of toolbars for building an MBD model. Each MotionView toolbar group
provides access to entities with similar characteristics. For example, all entity such as Joints and
Motions are grouped in the Constraint toolbar. The table below shows MotionView toolbars with a
brief explanation of their usage.
A left click on an entity icon sets the filter to select that particular entity from the graphic
screen, while a right-click on a toolbar icon enables adding that entity to the model (see the
Points example below):
Browsers
Tab Area
The tab area docks different browsers, the purpose of the browsers is to navigate through the
hierarchy tree and execute some operations specific to the selected items. Available for all clients is
the Session Browser, which allows you to browse to the different pages or windows in an HWD
session, as well as execute certain page and window operations. In addition to the Session
Browser, client specific browsers are shown based on the active window. For example, when the
MotionView is active client in the working window, the MotionView Project Browser is shown;
similarly, when HyperView is active, the Results Browser is shown. Specifically, the MotionView
Project Browser helps you browse/select different modeling entities, in addition to executing
certain modeling operations. Other browsers include the Organize Browser (used for data
management and collaboration) and the Process Manager (used for process automation). Please
refer to the client specific online help regarding the available browsers. Finally, browsers can be
placed on either side of the graphic window (Left/Right/Both) through the Menu bar by using the
View > Tab Area menu options.
A left mouse click on an entity in the Project Browser selects that entity and the details of entity
are displayed in the Panel area (see the example below):
A right click on an object brings up a context menu with options that are relevant to the selected
object.
For example, a right click on a Point entity brings up a context menu that provides options to either
Deactivate, Rename, Add, Delete, or Cut the point entity along with options to filter entities.
Similarly, a right mouse click on the Model (the topmost folder in the browser hierarchy) displays
up a context menu with options useful in model building.
Panel Area
Below the client specific toolbar is the panel area where you can view and modify the various values
and properties of a selected entity. Panels may have several tabs which organize the various
properties and values of the entity type selected. For example, the Spring Damper panel has the
connectivity information and properties displayed in three tabs (as shown below):
Connectivity tab: Allows you to specify the type of spring, the bodies to attach, and the
attachment points.
Properties tab: Allows you to set the stiffness and damping properties of a spring.
Preload tab: Allows you to set a 'preload' on a spring by specifying a force value or spring free
length.
Graphics Window
Graphics window is the model visualization area where you can interactively work on the model.
The following table illustrates the various mouse clicks available for model visualization:
Operation Action
Left click on an entity like a Point, Selection (the selected entity is highlighted by
Graphic, etc. (while the Entity Selector a white boarder around it).
and an entity icon is depressed in the
toolbar).
Hold the left mouse button and move Displays the entity name on the mouse tooltip
over the model (while the Entity and selects the entity upon releasing mouse
Selector and an entity icon is button.
depressed in the toolbar).
Ctrl + Left mouse button Rotates the model (observe the mouse
tooltip).
The controls for the mouse can be found under Tools > Options > Mouse:
Note - The items under the Main Menu, Browser, and Client specific toolbars differ from client to
client.
Exercise:
In this exercise you will learn to:
− In Windows - go through the Start Menu (Start Menu > Programs > Altair
HyperWorks installation > MotionView).
OR
3. From the Open Model dialog, locate and select the model definition file
SingleCylinderEngine_model.mdl, located in your working directory.
4. Click Open.
The single cylinder engine model displays in the graphics window (fit to the window).
5. Upon successful loading of a model into MotionView, the status bar will display the
Ready message (in the lower left corner of the screen). The Project Browser lists
all of the entities in the model. Click on the Expand /Collapse button of each
entity (Bodies, Points, Joints, Motions, etc.) to browse through the entities. Use
the mouse controls in the graphics area to rotate, pan, and zoom the model.
6. Expand the Bodies folder in Project Browser by clicking on the next to Bodies
( ).
7. Click on the CRANK_SHAFT body from the bodies listed to review its properties.
Note Each entity will have a label and a unique variable name. For example, the
crank shaft body has a label of CRANK_SHAFT and a variable name of
b_CRANKSHAFT.
The corresponding entity panel (Bodies in this case) is displayed in the bottom of
the window.
8. From the Properties tab, observe the Mass and Inertia properties of the body.
9. Click on CM Coordinates tab to review the CM point of the body and its orientation.
The Origin point defines the body CG location and the orientation is defined with
respect to global reference frame using direction cosines DxDyDz.
1. Left click the Motion icon on the Constraint toolbar to change the graphical
selection to a motion entity. Move the cursor in the graphics area with left mouse
button pressed to identify the motion CrankShaft Rotation and release the mouse
button to select it.
OR
− Browse to the Motions entity in Project Browser and click on next to Motions
and select CrankShaft Rotation.
Note Implicit graphics are displayed for all applicable entities, allowing you to
visualize their location and orientation. See the MotionView User’s Guide
for details about controlling the visualization of implicit graphics.
Note You can also click the Save Model icon, , on the Standard toolbar to
the save the file in working directory with the existing name. If the model
is new, you will be prompted to input the name of the model.
3. Click Save.
Upon clicking Run, MotionSolve is invoked and solves the model. The HyperWorks
Solver View window appears which shows the progress of the solution along with
messages from the solver (Run log). This log is also written to a file with the
extension .log to the solver file base name.
Note Please note that the Add Page option adds a page with the current client
(MotionView in this case).
2. From the Select application drop-down menu, select HyperView to change the
current window to HyperView.
3. From the Load Model panel, click on the Select file icon next to Load model.
4. Browse to your working directory and select the animation results file
SingleCylinderEngine_model_10rad_per_sec.h3d.
Note H3D is an Altair binary file for HyperView. The H3D file contains both model
and results data from a solver run. Please see the Appendix (below) for
various use cases of H3D files in MotionView/MotionSolve.
7. Rotate, pan, and zoom the model using the mouse controls for better visualization
and understanding of the results.
10. From the Page Controls toolbar, click the arrow next to the Page Window Layout
button and select the two window layout from the pop-up menu.
11. Click in the graphics area of second window in order to make it the active window.
12. Use the Select application drop-down menu to change the application from
HyperView to HyperGraph 2D .
Note The Client selector displays the icon of the current client (HyperGraph in
this case).
14. From the Build Plots panel, click the Open File icon, , next to Data file.
15. Browse to your working directory and select the MotionSolve results file
SingleCylinderEngine_model_10rad_per_sec.abf.
Note ABF is the Altair Binary File for HyperGraph. Other output files from
MotionSolve (.mrf and .plt) can also be used for reading results into
HyperGraph.
19. From the Animation toolbar, click the Start/Pause Animation button to
animate the results.
21. Observe the top right corner of the page which displays the current page (2 of 2).
2. Browse to your working directory and specify the File name as mywork.mvw.
Note A session file saves the complete HWD data (the page, window, client, and
results information). Please refer to the Appendix below for details
regarding the different types of HyperWorks Desktop files.
3. Click Save.
Click Yes to the message asking if you would like to discard all of the current
session data and start new session.
3. Browse to your working directory and select the session file saved in previous step
mywork.mvw.
4. Click Open.
5. Browse through the pages to look at the model, plots, and animation that you
worked on during the exercise using the icons.
Appendix
HyperWorks Desktop file types:
The following table summarizes the different file types in HWD and the location where the file can
be loaded and saved.
H3D is an Altair format for storing model and result information. In general, an H3D file is used for
post-processing results in HyperView; however the H3D file has a few other use cases in
MotionView/MotionSolve.
Graphic H3D File This type of H3D contains Model information only. A graphical H3D
file is an imported geometry into MotionView for visualization of a
body.
Flexbody H3D File This type of H3D contains Model and Flexible body information.
Therefore, MotionView can use it as a graphic, as well as to represent
a deformable body by accessing the modes, mass, and inertia
information. HyperView can read it as both Model and Results, and
also animate the mode shapes, modal displacements, stresses, etc.
(if available).
Results H3D File This type of H3D is written by MotionSolve. It contains Model and
Results information. HyperView can read it as both Model and
Results, and also animate the position, deformation, stresses, forces,
etc.
MBD Modeling
A classical MBD formulation uses a rigid body modeling approach to model a mechanism.
A rigid body is defined as a body in which deformation is negligible.
In general, in order to solve an MBD problem, the solver requires following information:
The trunk-lid shown in the image above uses a four-bar mechanism for its opening and
closing motions.
The four links (bodies) in four-bar mechanism are namely; Ground Body, Follower,
Coupler, and Input Link. In this example, the Ground Body is the car body and Input
Link is the trunk-lid body. The remaining two bodies (Follower and Coupler) form the
part of the mechanism used to aid the opening and closing of car trunk-lid.
• Points
• Bodies
• Constraints (Joints)
• Graphics
• Input (Motion or Force)
• Output
Copy trunk.hm and trunklid.hm, located in the mbd_modeling\interactive folder, to
the <working directory>.
Exercise
− From the Project Browser, right-click on Model and select Add > Reference
Entity > Point from the context menu.
OR
Note Other entities like Bodies, Markers, etc. can also be created using either of
the methods listed above (Project Browser or toolbar).
The label allows you to identify an entity in the graphical user interface, while the
variable name is used by MotionView to uniquely identify an entity.
Note When using the Add "Entity" dialog for any entity, you can use the label
and variable defaults. However as a best modeling practice, it is
recommended that you provide meaningful labels and variables for easy
identification of the entities. For this exercise, please follow the prescribed
naming conventions.
5. Click OK.
The Points panel is displayed. Point A is highlighted in the Points list of the
Project Browser.
6. Enter the values for the X, Y, and Z coordinates for point A, listed in the table
below.
The table below lists the coordinates of the points needed for this model:
Point Location
Label Variable X Y Z
Point Location
− Repeat steps 2 through 4 and click Apply to create points B through I. Remember
to substitute B, C, etc., for A when entering the label and variable names in the
Add Point or PointPair dialog. Clicking the Apply button allows you to continue
to add points without exiting the Add "Entity" dialog.
− After keying in the label and variable name for Point I, click OK to close the dialog.
− Click the Data Summary... button located in the upper right corner of the Points
panel.
The Data Summary dialog shows the table of points and you can enter all the
coordinates in this table.
− Since the Y value of all the points are the same, you can parameterize the value
for the points Point B to Point I to the Y value of Point A as follows:
Expression Builder
➢ Copy the above expression and paste it into the Y coordinate field of other
remaining points.
➢ Click Close.
8. Change the view to left, by clicking on the XZ Left Plane View icon on the
Standard Views toolbar.
2. Specify the label as Input Link and the variable name b_inputlink.
3. Click OK.
The Bodies panel is displayed. The new body that you just added is highlighted in
the model tree of the Project Browser.
− Mass = 1
− Click the CM Coordinates tab to specify the location of the center of mass of the
body.
A cyan border appears around the collector indicating that the collector is now active
for selection.
8. From the graphics area, select Point G on the model by using the left click of the
mouse. While selecting, keep the left mouse button pressed and move the cursor
over the points to see the label. Release the mouse button when Point G is located.
OR
− Click OK.
Point G is selected as the origin of the center of mass marker for the input link.
Note - The above-mentioned methods for selecting a point can also be applied to
other entities such as: body, joint, etc. For selecting the Ground Body or
the Global Origin, you can click on the triad representing the Global
− Retain the default orientation scheme (Orient two axes) and accept the default
values for .
9. Repeat steps 1 through 8 to create the two remaining links with the following label
and variable names:
Follower b_follower
Coupler b_coupler
10. Specify the mass and inertia for these links as:
− Mass = 1
11. Specify points B and D as the origin of the center of mass marker for Follower and
Coupler, respectively.
12. Retain the default orientation (Global coordinate system) for the CM marker.
1. From the Project Browser, right-click on Model and select Add > Constraint >
Joint from the context menu.
OR
4. Click OK.
The Joints panel is displayed. The new joint you added is highlighted in the model
tree in the Project Browser.
5. Under the Connectivity tab, double click the first Body collector .
6. From the model tree, select Bodies from the left-hand column and Follower from
the right-hand column.
7. Click OK.
Notice that in the Joints panel the Follower Body is selected for and the
cyan border moves to .
8. Click in the graphics window. With the left mouse button pressed move the cursor to
9. Release the left mouse button when Ground Body is displayed in the graphics
window.
13. To specify an axis of rotation, under Alignment Axis, click the downward pointing
arrow next to Point and select Vector.
14. Specify the Global Y axis vector as the axis of rotation of the revolute joint.
15. Repeat steps 1 through 14 to create the three remaining revolute joints: points C, E,
and F.
1. From the Project Browser, right-click on Model and select Add > Constraint >
Motion from the context menu.
OR
2. Specify the label as Motion_Expression and the variable name as mot_expr for the
new motion.
3. Click OK.
The Motion panel is displayed. The new motion is highlighted in the model tree in
the Project Browser.
5. From the model tree, select the revolute joint at Point F (Input-Ground) that you
created in the previous step.
6. Click OK.
7. From the Properties tab, select Expression by clicking on the downward arrow
next to Linear.
9. Click on the button to open the Expression Builder and enter following
expression between the back quotes `60d*sin(2*0.1*PI*TIME)`.
Note This method of creating an expression can also be used for specifying non-
linear properties for other entities like Force, Spring Damper, Bushing, etc.
• Add a displacement output between two bodies using the default entities.
• Add another output to record the displacement of a particular point G on the
input link relative to the global frame based on Expressions.
1. From the Project Browser, right-click on Model and select Add > General MDL
Entity > Output from the context menu.
OR
2. Specify the label as Input Link Displacement and the variable name as o_disp for
the new output.
3. Click OK.
− For Body 1 and Body 2, select Input Link and Ground Body, respectively.
− For Pt on Body 1 and Pt on Body 2, select point I and the Global Origin point,
respectively.
5. Add one more output with the label as Input Link CM Displacement and the
variable name as o_cm_disp to calculate the X displacement between the CM
markers Input Link and the global origin:
− Select idstring.
− From the Properties tab, expand the following items in the tree:
Markers/Global Frame.
− Select idstring.
6. Click OK.
7. To check for errors, go to the Tools menu and select Check Model. Any errors in
your model topology are listed in the Message Log.
The above function DX measures the distance between Input Link’s CM (center of
mass) marker and marker representing the Global Frame in the X direction of the
Global Frame. Refer to the MotionSolve Reference Guide for more details regarding
the syntax and usage of this function.
Note The back quotes in the expression are used so that the MDL math parser
evaluates the expression. Entity properties like idstring, value, etc. get
evaluated when they are placed inside curly braces {}, otherwise they are
understood as plain text. Refer to the Evaluating Expressions in MotionView
topic to learn more about various kinds of expressions and form of
evaluation adopted by MotionView.
In this step you will add graphics for visualization of a mechanism. MotionView graphics
can be broadly categorized into three types: implicit, explicit, and external graphics.
Implicit Graphics The small icons that you see in the MotionView interface when you
create entities like points, bodies, joints, etc. are called implicit
graphics. These are provided only for guidance during the model
building process and are not visible when animating simulations.
Explicit Graphics These graphics are represented in form of a tessellation, are written
to the solver deck and subsequently available in the results. Explicit
graphics are of two types.
Primitive Graphics These graphics help in better visualization of the model and are also
visible in the animation. The various types of Primitive Graphics in
MotionView are Cylinder, Box, Sphere, etc.
External Graphics One can import in various CAD formats or Hypermesh files into
MotionView. The ‘Import CAD or FE using HyperMesh..’ utility in
MotionView can be used to convert a CAD model or a Hypermesh
model to h3d graphic format which can be imported into MotionView.
One can also import .g, ADAMS View .shl and wavefront .obj files
directly into MotionView.
MotionView allows you to turn on and off implicit graphics for some of the commonly
used modeling entities.
Note - Implicit graphics of Individual entities can be turned on or off by using the
Visible check box for each entity.
− Click Close.
The state of the implicit graphics (whether on or off) is not saved in your model
(.mdl) or session (.mvw) files. MotionView uses its default settings when:
− From the Project Browser, right click on Model and select Add > Reference
Entity > Graphic from the context menu.
OR
2. In the Add Cylinder or CylinderPair dialog, enter the label as Follower Cylinder
and the variable name as gcyl_follower.
Note The name of the dialog changes with the graphic type. For example, the
dialog name changes to Add Box or BoxPair when the Box graphic type is
selected.
Note The cylinder graphic can also be used to create a conical graphic. By
default, the Radius 2 field is parameterized with respect to Radius 1, such
that Radius 2 takes the same value of Radius 1. Specify different radii to
create a conical graphic.
10. For the remaining bodies in your model, follow steps 2 through 9 to create the
appropriate explicit graphics for other links.
After the addition of cylinder graphics for all three links, the Model will look as shown below:
In this step, you will use this conversion utility to convert a HyperMesh file of a car trunk
lid into the H3D format.
2. Activate the Import CAD or Finite Element Model Only radio button.
4. Click the browser button next to Input File and select trunklid.hm, located in
<working directory>, as your input file.
Note The H3D file format is a neutral format in HyperWorks. It finds wide usage
such as graphics and result files. The graphic information is generally
stored in a tessellated form.
6. When the import is complete the Message Log appears with the message
"Translating/Importing the file succeeded!". Clear the Message Log.
7. Use steps 1 through 6 to import the trunk graphics by converting the trunk.hm file
to trunk.h3d.
Step 8: Attach H3D objects to the input link and ground bodies.
In this step, you will attach the trunk lid H3D object to the input link and the trunk H3D
object to Ground.
3. In the Connectivity tab, double click the Body collector under Parent.
Select Input Link from the Select a Body list.
4. Click OK.
Note Observe the change in the trunk lid graphic color to the Input Link body
color.
5. Similarly, select the newly created g_trunk_graphic graphic from the Project
Browser and set the as Ground Body.
If the model is new you will be prompted to input the name of the model, otherwise
the model will be saved in the working directory with the existing name.
Note Existing models can be saved to another file using the Save As > Model
option located in the File menu.
7. From the Save As Model dialog, browse to your working directory and specify the
File name: as trunklid_mechanism.mdl.
8. Click Save.
Trunk-lid mechanism
In this step, you will use MotionSolve to perform a kinematic simulation of the
mechanism for a simulation time of 5 seconds, with a step size of 0.01 second.
2. Click on the Check Model button on the Model Check toolbar to check the
model for errors.
3. From the Main tab of the Run panel, specify Transient as the Simulation type.
4. In the field located to the right of the Save and run current model option, specify
the name for the XML file as trunklid_mechanism_run.
MotionView uses the base name of your XML file for other result files generated by
MotionSolve. See the MotionView User’s Guide for details about the different result
file types.
5. Activate the Export MDL snapshot check box (in order to save the model at the
stage in which the Run is executed).
6. Specify an End time of 5 for your simulation and a Print interval of 0.01 (the time
unit is second by default).
Note - You can access the Units form from the Forms panel, .
7. Click the Run button located on the right side of the panel to solve the model using
MotionSolve.
Upon clicking Run, MotionSolve is invoked and solves the model. The HyperWorks
Solver View window appears which shows the progress of the solution along with
messages from the solver (Run log). This log is also written to a file with the
extension .log to the solver file base name.
9. Review the window for solution information and be sure to watch for any
warnings/errors.
Step 10: View animation and plot results on the same page.
Once the run is successfully complete, both the Animate and Plot buttons are active.
This opens HyperView in another window and loads the animation in that window.
2. To start the animation, click the Start/Stop Animation icon, , on the toolbar.
This opens HyperGraph and loads the results file in a new window.
Y Component DM (Magnitude)
8. Click Apply.
This plots the magnitude of the displacement of Point I relative to the Global
Origin.
3. Click Save.
Appendix
This type of field can contain a real number or the parametric expression that should
evaluate to a real number. This type of field is found in Points, Bodies , Force – Linear.
Note that only the value of the expression as evaluated goes into the solver deck and not
the parametric equation.
This type of field can contain a string or a parametric expression that should evaluate to a
string. This type of field is found in entity such as DataSets with strings as Datamember,
SolverString etc. As in case of Linear field, only the value of the expression as evaluated
goes into the solver deck and not the parametric expression.
Example: b_inputlink.label
Integer
This type of field can contain an integer or a parametric expression that evaluates to an
integer. This type of field is found such as DataSets with an integer as Datamember.
Even in this case, only the value of the expression as evaluated goes into the solver deck
and not the parametric equation.
Templex Parser
A math program available in HyperWorks that can perform more complex programming than the
math parser, other than evaluating a MotionView expression.
The following type of fields in MotionView are evaluated by the templex parser that evaluates a
parameterized expression:
Expressions
This type of field is different than the three listed above because it can contain a
combination of text and parametric expression. It is generally used to define a solver
function (or a function that is recognized by the solver). This type of expression is
embedded within back quotes ( ` ` ) and any parametric reference is provided within
curly braces {}. The presence of back quotes suggests the math parser to pass the
expression through Templex. Templex evaluates any expression within curly braces while
retaining the other text as is.
These fields are available in entity panels such as: Bushings, Motions, Forces with
properties that toggle to Expression, Independent variable for a curve input in these
entities, and Outputs of the type Expression.
Introduction
This tutorial will guide you through the new analytical 3-D rigid body contact capabilities
in MotionSolve. When one or both of the rigid bodies in contact are primitive spheres,
MotionSolve uses a semi-analytical or fully analytical contact method respectively to
calculate the penetration depth(s) and subsequently the contact force(s). This is
explained in the table below:
A semi-analytical contact
method that computes contact
Primitive Sphere Mesh Sphere – Mesh between the primitive sphere
(Body I) and the tessellated
geometry (Body J).
There are several 3D contact applications that involve spherical geometries (ball
bearings, re-circulating ball systems etc.) – using the analytical approach for computing
the contact forces in such scenarios offers several benefits:
1. The simulation time is reduced when using the semi-analytical or fully analytical
approach.
2. The simulation is more robust since the dependence on the mesh quality is
removed.
3. The simulation results are often more accurate since there are no or lesser effects
of mesh discretization.
A typical ball bearing geometry with six balls. A cutaway section shows how the balls are in contact with the
outer and inner races.
The geometries for all surfaces except the balls are meshed in this geometry. Only the
six balls are defined as primitive spheres.
The figure above shows the model as it is setup in MotionView. This model has all the
necessary contacts defined except for a few which you will setup next. The following
table describes the components present in this model.
Rim Rigid Body The rim body that keeps the balls in
place
Solver Units Data Set The solver units for this model. These
are set to Newton, Millimeter, Kilogram,
Second
Outer Race Graphic Graphic The graphic that represents the outer
race body. This is a tessellated graphic
Inner Race Graphic Graphic The graphic that represents the inner
race body. This is a tessellated graphic
Ball 1 – Primitive, …, Ball 6 - Graphic The graphics that represent the ball
Primitive bodies. These are primitive geometries
Inner Race Rev Revolute Joint Revolute joint defined between the
Inner Race and Ground Body
Outer Race Fixed Fixed Joint Fixed joint defined between the Outer
Race and Ground Body
Input Motion to Inner Race Motion A motion defined on the Inner Race Rev
joint that actuates the mechanism
4. Verify that 3D Rigid To Rigid Contact is selected in the drop-down menu and click
OK.
5. From the Connectivity tab, resolve Body I to Ball 6 and Body J to Rim. This will
automatically select the graphics that are attached to these bodies.
6. To make sure that the geometries are well defined for contacts, the normals of the
surface mesh should be along the direction of contact and there should be no open
edges or T-connections in the geometries. To make sure the normals are oriented
correctly, activate the Highlight contact side box. This will color the geometries
specified for this contact force according to the direction of the surface normals.
You should make sure both geometries are completely red i.e. there are no blue
patches for either geometry. To see this clearly, you may have to deactivate the
Outer Race graphic. This is illustrated in the figures below.
7. Next, you can check for open edges or T-connections. If the associated graphics
mesh has any open edges or T-connections, the Highlight mesh errors option
would be active. Activate the box for Highlight mesh errors if there are any mesh
errors. Doing this will highlight any open edges or T Connections in the geometry.
The graphics associated in this contact entity don’t have mesh errors. Hence you
should see Highlight mesh errors grayed out.
8. Next, you need to specify the contact properties. To do this, click on the Properties
tab to bring up the Normal Force and the Friction Force property tabs within the
Contact panel. In this model you will use an Impact model with the following
properties:
Stiffness 500.0
Exponent 3.0
Damping 1.0
9. Repeat steps 1 – 3 for creating contact between the Ball 6 body and the Outer
Race body and also between the Ball 6 body and the Inner Race body. The
details for these are listed in the table below:
1. To setup a transient analysis, navigate to the Run panel by clicking on the Run
button in the toolbar .
2. From the Run panel, change the Simulation type to Transient and specify an end
time of 2.0 seconds.
3. Further, to obtain accurate results, you will need to specify a smaller step size than
the default. Click on the Simulation Settings button and navigate to the
Transient tab.
5. Specify a name for your XML model and click the Run button. This will start the
transient simulation.
6. In the HyperWorks Solver View window that pops up, a message is displayed
from the solver that confirms that the semi-analytical contact method is being used
for the contact calculations.
As you may have noticed, you did not have to explicitly specify the contact force method
to be used. MotionSolve automatically detects if one or both the bodies in contact are
primitive spheres and accordingly changes the contact force method being used.
1. Motionview makes available an automated report for model containing contacts. The
report automatically adds animation and plots to the session. The report can be
accessed through Analysis > View Reports menu option.
2. The report item, Contact Report, for the last submitted run will be listed at the top.
Select that item and click OK.
3. Additional pages are added to the report. Use the Page Navigation buttons
(located at the upper right corner of the window, below the menu bar area and
above the graphics area) to view these pages.
Contact Overview
MotionSolve writes out a static load case to the H3D file that can be used to view the
maximum penetration on all the geometry in contact throughout the length of the
simulation. This enables you to inspect your results to see where the maximum
penetration depth occurred in your geometry/geometries. You may hide one or more
parts to view this clearly in the graphic area.
Note You may Fit the graphic area in case the graphics are not visible in the Graphics
area.
1. From the Results browser select the components Ball 1 – Primitive to Ball 6 –
Primitive.
3. Similarly, Hide the Rim graphic and Inner Race graphic in order to visualize the
contours on the Outer Race graphic.
2. You can visualize the contours individually on the components by isolating the
components. For example, to visualize the contours on the Inner Race graphic,
select the component in the Results browser, right-click and select Isolate from
the context menu.
1. Navigate to the next page , which shows a transient animation of the contact
forces.
3. Select Transparent Element and Feature Lines from the toolbar options.
5. Activate the Display tab and change the Size Scaling option to By Magnitude and
use a value of 5.
Animating the total contact force (the outer race graphic is turned off for better visualization)
Note You may turn off curves from the Plot browser to look at individual force plots.
2. Go to the next page , which has a HyperGraph plot of all the contact force
magnitudes.
Summary
In this tutorial, you learned how to setup semi-analytical contact between a primitive
spherical geometry and a meshed geometry. Further, you were able to inspect the
geometry to make sure the surface normals were correct and there were no open edges
or T connections.
You were also able to setup a transient analysis to calculate the contact forces between
these geometries and post-process the results via vector and contour plots, in addition
to plotting the contact force requests.
Finally, you were able to compare the analysis time between a fully meshed
representation of the spheres and the model that you created. A significant speedup
was observed which makes the semi-analytical contact method the first choice for
solving 3D contact models when applicable.
Spline3Ds are reference data plotted in three-dimensional coordinates which have two
independent vectors or axis. These can be visualized as a number of 2D Splines
(Curves) placed at regular intervals along a third axis. For instance, a bushing is
generally characterized by a Force versus the Displacement curve. Let’s say, the Force
versus displacement also varies with temperature. Effectively, there are two
independent variables for the bushing force - Displacement and Temperature. Another
example is the Engine Pressure (or Force) versus the Crank angle map (popularly known
as P-Theta diagram). The P-theta map will vary at different engine speeds (or RPM).
Such a scenario can be modeled using Spline3D.
Exercise
In this exercise, an engine mechanism is simulated where the combustion force that
varies with regard to the crank angle and engine speed is modeled using Spline3D.
− The model has two systems: System Cyl1 and System Flywheel.
Motion Panel - Properties Tab (with Expression referring to the Curve using AKISPL function)
− The curve Crank_RPM indicates the time history of crank speed during the
simulation. The speed ramps up to 500 RPM and then to 1000, 1500, and 2000
RPM.
Curve Crank_RPM
− Two Solver Variables: Crank_angle (deg) and Crank_RPM keep track of the
angular rotation (in degrees) and velocity (in RPM) of the crank respectively.
− In System Cyl1:
− From the Project Browser, right-click on System Cyl1 and select Add >
Reference Entity > Spline3D from the context menu.
OR
− Select System Cyl1 in the Project Browser and then right-click on the
Spline3D icon on the Reference Entity toolbar.
2. Enter F_ThetaSpline for the Label and spl3d_F_ThetaSpline for the Variable.
The Spline3D panel is displayed in the panel area with the Properties tab active.
The data for the spline can be defined using either the File or Value methods. For
the File type, a reference to an external file in .csv format must be provided. In
case of the Value type, the values can be imported from a .CSV file (using Import)
or they can be entered in manually. In this tutorial, we will import the values from
an external file.
5. Click the Import button to display the Import Values From File dialog.
6. Browse to the FTheta.csv file in your <working directory> and click OK.
The .csv file that is to be used as the source for Spline3D needs to be in the
following format:
• The first column must hold the X-axis values (shown in blue below) which is
the first independent variable.
• The top row holds the Z-axis values (shown in red below) which is the second
independent variable.
• The other columns must have the Y-axis values (shown in green below) with
each column belonging to the particular Z-axis values heading that column.
Note The same format is applicable when using the File input type.
8. Once imported, the values are populated in the panel. You may review these by
clicking on the Expansion button in the panel to open the Spline Values
Table Data window.
9. When manually keying in the values, context menus are available which allow you to
Insert/Delete/Append row and column data. You can access these menus by
right-clicking on any of the row or column headers. If the right-click is made on the
last row/column, an Append option will also be available.
10. Click Close to close the Spline Values Table Data table.
11. Activate the Linear Extrapolation check box. This will ensure that the values are
extrapolated if the Solver starts looking for values beyond the range of the user
provided data.
12. To visualize the spline graphically, click on the Show Spline button to display the
Spline3D viewer dialog.
The imported values are Combustion Force on Piston vs Theta (crank angle)
diagrams at different speeds (as shown below). The F-Theta profiles vary slightly at
different engine or crank speeds. The same plot was visualized in the previous
section in the Spline3D viewer by placing the four different plots along the Z-axis.
− From the Project Browser, right-click on System Cyl1 and select Add > Force
Entity > Force from the context menu.
OR
− Select System Cyl1 in the Project Browser and then right-click on the Force
icon on the Force Entity toolbar.
The Force panel is displayed in the panel area with the Connectivity tab active.
3. From the Connectivity tab, use the Force drop-down menu to change the type to
Action reaction.
4. Resolve the connections as shown in the image below, either through picking in the
graphics area or using the model tree (by double clicking on the input collector).
7. Select System Cyl1 in the model tree and then navigate to and select the
F_ThetaSpline Spline3D (which will then be displayed in the right pane).
11. Click the Check Model button on the Model Check toolbar to check the model
for errors.
Note The solver function MOD() used in Independent variable X refers to the
solver variable Crank_angle (deg) in System Flywheel (via attachment
arg_Crank_angle_SolVar to System Cyl1). This function calculates the
remainder of the division of first argument value (value of the solver
variable) by the second argument value (720); thereby resetting the
value of Independent variable X every 720 degrees.
12. Save the model with a different name (File > Save As > Model).
1. To solve the model, invoke the Run panel using the Run Solver button on the
General Actions toolbar.
2. Since the crank RPM input data is for 40 seconds, enter 40 in the End time field and
change the Print interval to 0.001.
3. Assign a name and location for the MotionSolve XML file using the browser icon .
4. The Run panel with the inputs from the previous steps is shown below:
5. Click the Run button in the panel to invoke MotionSolve and solve the model.
7. Click the Animate button in the panel (now active) to load the animation results in
a HyperView window.
9. Visualize forces on the Piston using the Vector panel (select the Piston graphics
for the Assemblies collector).
You may also set all graphics to be transparent for easy visualization using the
WireFrame/Transparent Elements and Feature Lines option located on the
Visualization toolbar.
10. From the Page Controls toolbar, click the Add Page icon to add a new page.
11. Use the Select application drop-down menu to change the client on the new page
to HyperGraph 2D.
12. From the Page Controls toolbar, click the arrow next to the Page Window Layout
button and select the three window layout .
13. From the Build Plots panel, use the Data file browser to load the .plt file from
the MotionSolve run.
14. In the first window (top left), plot the Crank_angle (deg) by selecting the
following:
− Y Component = f3
15. Next, click in the graphics area of the second window (top right) to make it the
active window and plot the CombustionForce in the Z direction:
− Y Type = Force
− Y Component = Z
16. Finally, we will plot the Force vs Theta plots at different speeds as applied on the
piston (this will demonstrate the usage of Spline3D input used in Step 2 of this
tutorial). Click in the graphics area of the third window (bottom) to make it the
active window.
19. Click in the Curve field and rename the curve as 500 RPM.
21. Enter the expressions shown below to extract the data from the curve in the first
and the second window respectively between 6 and 7 seconds.
− x = p2w1c1.y[subrange(p2w1c1.x,6,7)]
− y = p2w2c1.y[subrange(p2w2c1.x,6,7)]
Note p2w1c1 refers to the Curve 1 plotted on Page 2, Window 1. If for any
reason the page, window, or curve numbering is different, suitable
modifications should be made to the expression.
The subrange function returns the indices of the vector within a specified
range. For more information on the subrange function, please refer to the
Templex and Math Reference Guide.
23. Similarly, add three more plots for 1000, 1500, and 2000 RPM. Use time values
of: 16, 17; 26, 27; and 36, 37 respectively (in place of 6, 7 shown in the expression
above).
24. Assign different colors to these curves using the Curve Attributes panel , or by
selecting the curves in the Plot Browser and changing the color in the Properties
table.
25. After completing the plots, compare them with the input data for the Spline3D plot
in Step 2. A comparison is shown below:
Introduction
This tutorial will guide you through the new 2D rigid body contact capabilities in
MotionSolve which can be used when contact occurs in a plane. In this tutorial, we will
model a roller type cam-follower mechanism with the help of 2D rigid to rigid contact as
there are no out-of-plane contact forces that are expected.
Exercise
Copy the files Cam_Follower_Input.mdl, CamProfile.h3d, Cam_Fixed.csv and
Cam_Variable.csv from the location
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive\ to
your <Working directory>.
1. Launch MotionView.
Or
3. From the Open model dialog, select the file Cam_Follower_Input.mdl from your
working directory and click Open.
Once the model is loaded it will look as it does below. Review the model for its
bodies, graphics, markers, joints and motion.
4. In the Run panel , click the Save and run current model browser button
5. Click the Run button. Once the simulation is completed, close the solver window
and the Message Log.
6. From the Run panel, review the results animation by clicking on Animate button.
Notice that the FollowerRoller is not in contact with the Cam since there is no
contact defined in the model.
1. From the Project browser right-click on Model and select Add Reference Entity >
Curve (or right-click the Curves icon on the MotionView-Reference Entity
toolbar).
2. For Label, enter Roller_Curve. For Variable, enter crv_roller and click OK (as
shown in the image below).
3. From the Properties tab, use the first drop-down menu to change the curve from
2D Cartesian to 3D Cartesian.
Note Only 3D Cartesian types of Curve Entities are supported for the Curve
Graphics.
4. Use the fourth drop-down menu to change the curve from Open Curve to Closed
Curve.
5. From the Properties tab, click on the x radio button. Select Math from the second
drop-down menu on the left. Enter 5*SIN(2*PI*(0:1:0.01)) in the Expression
Builder and hit Enter on the keyboard.
Note Now having created the Curve Entity, let us create a Curve Graphics to
graphically represent the FollowerRoller body on the screen and later use it to
define 2D Contact.
7. From the Project browser right-click on Model and select Add Reference Entity >
Graphic (or right-click the Graphic icon on the MotionView-Reference Entity
toolbar).
9. For Label, enter Roller_Curve. For Variable, enter gcrv_roller and click OK (as
shown in the image below).
Note The Body/Point option (Parent type) has been selected by default on the
Connectivity tab.
11. Now the Point collector is highlighted by default , click once on the same.
12. Similarly choose Roller_Curve using the Curve collector . Leave the
rest of the options on the panel as default. The panel should look as shown in the
image below.
Note At this point we can deactivate (or delete) the original cylinder graphics used to
represent FollowerRoller.
13. To deactivate the FollowerRoller graphics from the Project browser; right-click on
FollowerRoller > Deactivate as shown in the image below.
The variable portion of cam will be controlled by the coordinates of some points in our
model.
1. Right-click the Curves icon to insert a new Curve Entity and provide
Cam_Fixed_Curve for the Label and crv_cam_fix for the Variable.
2. From the Properties tab, use the first drop-down menu to change the curve from
2D Cartesian to 3D Cartesian.
3. Retain the default selection for the fourth drop-down menu to Open Curve.
4. From the Properties tab, click on the x radio button. Retain the default File option
in the second drop-down menu on the left.
5. Click on the file browser icon and select Cam_Fixed.csv from the working
directory. Click Open.
6. Select Column 1 for the Component. Retain all other options on the panel to its
default values. The panel should look like the image below:
7. Similarly click on the y radio button, the same file should be selected by default.
This time, select Column 2 for the Component.
8. Click on the z radio button, the same file should be selected by default. This time,
select Column 3 for the Component.
Note Now, having created the Curve Entity, let us create a Curve Graphics to just
graphically visualize and make sure that the imported data is located as per our
requirement.
9. Insert a new Curve Graphic by following Steps 7 - 13 of Step 2 of this tutorial with
input details as listed in the table below:
Variable Value
Label: Cam_Fixed_Curve
Variable: gcrv_cam_fix
Body: Cam
Curve: Cam_Fixed_Curve
Note Curve Graphics representing the fixed portion of Cam should now be
graphically visible as shown in the image below.
Firstly, let us create some points in the model using Menu > Macros > Create Points >
using Coordinates.
1. From Main menu, click Macros > Create Points > using Coordinates (or click
Create Points using Coordinates button from the MotionView Toolbar >
Point Macros toolbar).
2. Click on the file browser icon and select Cam_Variable.csv from the working
directory. Click Open. Click OK to create 10 points (Point 0 to Point 9).
Note Now that we have fixed portion Curve Graphics representing Cam, we can
deactivate (or delete) the original H3D file graphics used to represent Cam.
3. To deactivate the Cam graphics, from the Project browser; right-click on Cam >
Deactivate as shown in the image below.
Now let us use the newly created points to create the variable portion of the cam profile
using the Create Curve from Points/Nodes macro.
4. From the Main menu, click Macros > Create Curve from Points/Nodes (or click
the Create Curve from Points/Nodes macro button from the MotionView
toolbar > Point Macros toolbar).
6. Edit the Labels prefix for the new Curve Entity as well as the Curve Graphics to be
created to Cam_Variable_Curve.
OR
Note The selected Point 0 is highlighted in the graphics screen and also listed in
the panel.
8. Now repeat the above step to pick all the points from Point 1 to Point 9.
Note A node associated with File graphic H3D can also be picked. However, the
curve created would not be parametrically linked with the node. Picking a
point retains the parametric relation between the point and the curve.
A new Curve Entity and a new Curve Graphics (Cam_Variable_Curve) has been
added to the model as shown in the image below.
Note The newly created Curve Graphics representing the variable portion of Cam
should now be graphically visible as shown below.
Note Review the newly created Curve Entity by selecting it from the model tree
as shown in the image below. Notice (by clicking as shown in the image
below) how the X, Y and Z values in the panel are parametrically pointing to
the points selected while using the macro. Thus, by changing the
coordinates of these Points in the model, the curve can be modified.
1. Insert a new Curve Entity by following Steps 1 - 4 of Step 2 of this tutorial with
input details as listed in the table below:
Variable Value
Label: Cam_Curve
Variable: crv_cam
Curve 3D Cartesian
Type:
Open/Clos Closed
ed:
2. From the Properties tab, click on the x radio button. Select Math from the second
drop-down menu on the left. Enter {CAT(crv_cam_fix.x, crv_0.x)} in the
Expression Builder and hit Enter on the keyboard.
Note By using CAT function, we are able to append the data-points of variable
portion of cam to the data-points of fixed portion of cam. The panel should
display merged data of both fixed and variable portions of cam profile as
shown in the image below.
Note Now having created the Curve Entity, let us create Curve Graphics to graphically
represent the Cam body on the screen and later use it to define 2D Contact.
4. From the Project browser right-click on Model and select Add Reference Entity >
Graphic (or right-click the Graphic icon on the MotionView-Reference Entity
toolbar).
6. For Label, enter Cam_Curve. For Variable, enter gcrv_cam and click OK.
Note The Body/Point option (Parent type) has been selected by default on the
Connectivity tab. This time, let us use the Marker option since we already have
a CamMarker in the model which is associated with Cam (Body) and PivotPoint
(Point).
7. From the Connectivity tab, select the drop-down menu of Parent and change it to
Marker.
Note The panel should now look like shown in the image below.
Note Curve Graphics representing the Cam should now be graphically visible on
screen as shown in the image below.
4. From the Connectivity tab, click the Body I collector once to activate it and then
select the Cam body from the screen by picking its Curve Graphics as shown in the
image below.
5. Next, the Body J collector will be highlighted automatically. Click once and select
the FollowerRoller body from the Select a Body dialog box.
Note Fixed and Variable Curve Graphics are selected by default since they are
associated with Cam body. Let us remove the same from the contact
definition as they are not required.
Now, let us review the side of selected curves that will be in contact.
Note The arrow display indicates the inside of Cam and FollowerRoller as
contacting side. This needs to be corrected.
8. Click the Flip Contact Side check box for both Body I and Body J curves.
Note The highlighted contact side for both the bodies should now be as shown in
the image below.
9. Review the Properties tab, the default selections are fine for the model.
10. Review the Advanced tab, turn on the Find precise contact event and Change
simulation max step size options with its default values.
2. From the Save As Model dialog, browse to your working directory and specify the
File name: as Cam_Follower.mdl.
At this point, you are ready to run your model. We expect a lot quicker run using 2D
curve contact as compared to an equivalent model using 3D contact where the solver
has to work harder to determine contact for a 3D tessellated geometry.
3. Navigate to the Run panel by clicking on the Run button in the toolbar .
Note To obtain accurate results, a smaller step size and a finer print interval
have been selected in this model. You can review the same by checking
Simulation Settings… button.
4. Specify a new name for your results by clicking on file browser icon
Cam_Follower.xml and click the Save button as shown in the image below.
Note You can even plot the graph of FollowerShaft vertical displacement during the
entire simulation using HyperGraph. To do the same, follow the steps mentioned
below.
3. In the MotionView window, from the Run panel click the Plot button.
4. Use the Build Plot tool and for Y Type (Axis) select Body, FollowerShaft, Y ,
and click Apply as shown in the image below.
The objective of this tutorial is to replace several entities in a MotionView model with
Python user subroutines. You will run a model initially, and then edit the file to
incorporate Python scripts in place of MotionView entities and compare the results from
each simulation.
This tutorial will show you how to replace five MotionView entities with their
corresponding usersubs.
Copy the model file required for this exercise, engine_baseline.mdl, along with all of
the H3D files located in the mbd_modeling\motionsolve\python_usersub folder to your
<working directory>.
The model we are using is a single cylinder engine, and uses a curve, an output, a force,
and a motion entity. The system also uses default damping.
• The curve is read from a CSV file, and gives a force value based on the angular
displacement of the connecting rod.
• The output returns the displacement magnitude of the piston.
• The force entity uses the angle of the connecting rod and the curve to apply a
variable pressure force to the piston.
• The motion entity applies an angular motion to the Crank_Grnd revolute joint.
• The default damping of the system is 1, however it can be changed in the Bodies
panel.
The following is a list of the entities and usersubs we will be using in this tutorial, along
with a brief description of their usage:
2. Click on the folder icon located next to the Save and run current model option,
and browse to your <working directory>. Specify the name as
engine_baseline.xml for the MotionSolve input XML file.
3. Check your model for errors, and then click the Run button to run your model.
This will give you result files to compare with your usrsub results.
Python can use many MotionSolve functions and inputs when certain syntax rules are
followed. When using a MotionSolve function such as AKISPL or SYSFNC, the string “py_”
must be added to the beginning. For example, “py_sysfnc(…” would be the correct
usage of SYSFNC in Python. When defining a usersub function in Python, the name of the
function and the inputs must match those outlined in the MotionSolve online help pages
exactly. When accessing model data in python through a function such as SYSFNC, use
the exact property name in quotations as the “id” input. Model properties that are
passed into Python in the function definition can be accessed throughout the script, and
do not need additional defining to use. An example of these syntax rules being used is
shown below:
def REQSUB(id, time, par, npar, iflag):
[A, errflg] = py_sysfnc(“DX”,[par[0],par[1]])
return A
1. Open a new Python file, and define a function with the name SPLINE_READ using
“def SPLINE_READ():", giving the appropriate inputs and outputs. The inputs and
outputs used are: id, file_name, and block_name.
2. Import the Python CSV package by including import csv after the function
definition.
3. Open pressure_curve.csv in the function, and read the file to your Python script as
a variable. This can be done with “variable = open(‘pressure_curve.csv’,
’r’)”.
4. Change the format of this variable from csv by defining a new variable, and using
csv.reader() to read your variable file.
5. Define an empty list, “L”, to store the pressure_curve data values. Iterate through
the list using “for item in curv:”. Append each item as a separate list value with
“L.append(item)”.
6. Remove the headers from the csv file by redefining the list from the second value till
the end of the list. This can be done with “L = L[1:]”.
7. Define a counter variable to be used later. Define two lists that are half the length of
“L”, and set them equal to zero. To do this, use “x = 16*[0.0]” twice; once with
the x value and once with the y value.
8. Create a while loop dependent on your counter variable being less than the length of
your list, minus one.
9. In each iteration of the loop, define your x and y data values for the index “i” as a
floating value of each half of your “L” data sets. This should look like “x[i] =
float(L[i][0])” and “y[i] = float(L[i][1])”. Increase your counter variable
by 1.
10. Define a z variable with a floating value of 0.0, and close the csv file. Defining a z
variable is necessary, as the next function we will use requires an x, y, and z
variable.
11. Use the put_spline MotionSolve function, and return the “id”, as well as the lists
containing the first and second column of values and the z variable. This should be
done with “errflg = py_put_spline(id,x,y,z)” followed by “return errflg”.
import csv
ifile= open('pressure_curve.csv','r') ## opens data file as
readable variable
curv = csv.reader(ifile) ## reads csv data, stores as
useable var.
x = 16*[0.0]
y = 16*[0.0] ## splits list into x and y lists
while i < (len(L)-1):
x[i] = float(L[i][0]) ## changes values from str to float
y[i] = float(L[i][1])
i+=1 ## counter increment
4. Click on the User-Defined tab, and use the File name file browser to select the
pressure_curve.csv file.
5. Change the Function Type in the drop-down menu from DLL to Python, and
ensure the function name is SPLINE_READ. You do not need to enter anything for
the Block name, as it is not needed in this tutorial.
6. Check the box marked Use local file and function name. Use the Local File file
browser (the folder button to the right) to locate and select the nonlin_spline.py
file.
1. Create another Python file, and define a function named REQSUB with the appropriate
inputs and outputs. The syntax for this is “def REQSUB(id, time, par, npar,
iflag)”.
2. Use the sysfnc utility to implement the “DM” (or displacement magnitude) function
on the first and second input parameters, and define a variable and an error flag by
writing “[D, errflg] = py_sysfnc(“DM”,[par[0],par[1]])”.
3. Return a list of eight values, where the second value is your variable, and the rest
are equal to 0. This will be your result variable, and should look like “result =
[0,D,0,0,0,0,0,0]”.
2. From the Properties tab, select User Defined from the first drop-down menu.
3. Click in the text field labeled Output, and then click on the button to open the
Expression Builder.
4. In the text field of the Expression Builder, click inside the parentheses and add
“{},{}”.
5. From the Expression Builder, locate and select the j_0.i.idstring (located in the
Joints folder in the directory) and insert this id string into the expression by
positioning the cursor inside a set of braces and clicking the Add button. In
addition, add the j_1.i.idstring into the expression by repeating this same process.
7. Check the Use local file and function name box, and select Python from the
Function Type drop-down menu.
8. Use the Local File file browser to locate and select the req_nonlin.py script, and
make sure that the Function name text field reads REQSUB.
1. Open a new Python file, and define the function GFOSUB by typing “def GFOSUB(id,
time, par, npar, dflag, iflag):”.
2. Import "pi" from the Python “math” library using “from math import pi”.
3. Use the “AZ” function for angle in the z direction with the sysfnc command, to save
it as a variable. To do this, type “[A, errflg] =
py_sysfnc(“AZ”,[par[1],par[2]])”.
4. The angle will be measured in radians by default, so change the variable defined in
the previous step to degrees. As the model extends from the origin into the
negative y direction, you will need to multiply by -1. The method used in this
tutorial is “B = ((-1)*A*180)/pi”.
5. Define another variable using the “akispl” utility, which interpolates the force
values from the curve. You will need input arguments of your angle “B”, zero to
specify a two dimensional curve, and zero for the curve input and the order. This
line is written as “[C, errflg] = py_akispl(B,0,par[0],0)”.
6. Return a list three elements long, where the second element is the variable defined
with the Akima interpolation function. The data from interpolation is stored in the
first column, so use “return [0,C[0],0]”.
3. From the User-Defined tab, edit the Force value with the Expression Builder to
include the curve idstring, the ground marker idstring, and the crank marker
idstring.
5. Check the Use local file and function name box, and select Python from the
Function Type drop-down menu.
1. Open a new python file, and define the MOTSUB function, including the required
inputs. The correct syntax for this is “def MOTSUB(id, time, par, npar, iord,
iflag):”.
2. The MOTSUB user subroutine requires a function or expression, and its first and
second order derivatives. Create conditional statements using the function order
variable “iord” to define the function and its first and second derivatives with “if
iord==0:”, “elif iord==1:” and “else:”.
3. The function and its derivatives should be defined with the same variable name.
The function used in this tutorial is “A = 10.0461*time”. This makes the first
derivative equal to “A = 10.0461”, and the second derivative equal to “A = 0.0”.
if iord==0: ## function
A = 10.0461*time
elif iord==1: ## first derivative
A = 10.0461
else: ## second derivative
A = 0.0
return A ## returns function based on iord input
1. In the directory tree on the left side of the HyperWorks desktop, locate the
Motion_Crank motion and click on it.
Because we defined the function in the Python script, we do not need to modify
USER() text field.
4. Check the box labeled Use local file and function name, select Python from the
Function Type drop-down menu.
5. Use the Local File file browser to locate and select the mot_nonlin.py file.
1. Open a new Python file and define the DMPSUB function with “def DMPSUB():”,
giving it the following inputs: “id, time, par, npar, freq, nmode, h”.
3. Create an “if” statement to iterate along the list of modes in the flexbody. The
“xrange()” function can be used here, resulting in “for I in xrange(nmode):”.
4. In each iteration of the loop, set each index in your variable equal to 1 by adding
“cratios[i] = 1.0”.
5. At the end of your script, return the list variable with “return cratios”.
for i in xrange(nmode):
cratios[i] = 1.0 ## sets marker damping to 1
1. In the directory tree on the left side of the HyperWorks desktop, locate the Conrod
body and click on it (this is a flexbody in the model).
2. From the Properties tab, click on the Modes… button (located in the lower right
corner of the panel) to display the Modes dialog.
3. Use the drop-down menu to select the User Function Damping option.
5. Change the End time to 5.0, and the Print interval to 0.01.
6. Now, export the MotionSolve file using File > Export > Solver Deck.
Note Currently there is no GUI option available to specify the DAMPSUB file defining
flexbody damping, therefore the dmp_nonlin.py must be manually added to the
MotionSolve file (*.xml) by adding following statements to the flexbody
definition:
is_user_damp = "TRUE"
usrsub_param_string = "USER()"
interpreter = "Python"
script_name = "dmp_nonlin.py"
usrsub_fnc_name = "DMPSUB"
usrsub_fnc_name = "DMPSUB"
flexdata_id = "30104"
animation_scale = "1."
/>
1. Go to the Run panel , click on/activate the Run MotionSolve file radio button.
the Client Selector drop-down menu (located on the left-most end of the
Client Selector toolbar).
3. In HyperGraph, click the Build Plots panel button on the Curves toolbar.
4. In the Build Plots panel, locate your baseline results from your working directory
using the Data file file browser. Select the file baseline.abf, and click Open.
5. The x and y axes options are be shown below. The default x variable is Time. For
the y variable: select Marker Displacement for Y Type, leave the default for Y
Request, and select DM for Y Component.
6. Click the Apply button (located on the far right side of the panel).
7. For your usersub results, repeat steps 4 through 6, using REQSUB and RESULT(2)
for Y Type and Y Component respectively.
8. Click Apply.
2. Switch the application from HyperGraph 2D to HyperView using the Client Selector
drop-down menu.
4. Locate your baseline.h3d results file in your working directory, and click Open.
5. Click Apply.
6. Open the Entity Attributes panel , and click the Off button next to the Display
option. Make sure that the Auto apply mode check box is checked.
7. In the model window, click on the piston head, and both crank components.
10. Click the Apply button (located in the lower middle portion of the panel).
11. Next, click on the Tracking Systems panel button located on the Results
toolbar.
12. From the Track drop-down menu, select Component, then click on the flexbody in
your model window.
13. Separate your model window into two halves using the Page Window Layout drop-
14. In the blank model window, repeat steps 3 through 12 for your usersub h3d file.
15. Click on the Start/Pause button on the Animation toolbar to animate your
models.
In this tutorial, we will model a knife-edge cam follower mechanism with the help of a
PTCV joint.
Exercise
Copy all the files from the mbd_modeling\interactive folder to your <Working
directory>.
1. Start a new MotionView Session. We will work with the default units (kg, mm, s, N).
2. From the Project Browser right-click on Model and select Add Reference Entity
> Point (or right-click the Points icon on the Model-Reference toolbar).
5. Click on the Properties tab and specify the coordinates as X = 0.0 , Y = 0.0, and Z
= 0.0.
6. Follow the same procedure and create the points specified in the following table:
Point X Y Z
1. From the Project Browser right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
3. From the Project Browser right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
5. From the Properties tab, specify the following for the two bodies:
6. For the Cam body, under the CM Coordinates tab, check the Use center of mass
coordinate system box.
The Select a Point dialog is displayed. Choose CamCM and click OK.
9. For the Follower body, under the CM Coordinates tab, check the Use CM
Coordsys box.
The Select a Point dialog is displayed. Choose FollowerCM and click OK.
1. From the Project Browser right-click on Model and select Add Constraint >
Joint (or right-click the Joints icon on the Model-Constraint toolbar).
The Select a Body dialog is displayed. Choose Cam and click OK.
The Select a Body dialog is displayed. Choose Ground Body and click OK.
The Select a Point dialog is displayed. Choose PivotPoint and click OK.
7. For Axis click on the arrow and choose Vector. Now click on Vector.
The Select a Vector dialog is displayed. Choose Global Z and click OK.
8. From the Project Browser right-click on Model and select Add Constraint >
The Select a Body dialog is displayed. Choose Follower and click OK.
The Select a Body dialog is displayed. Choose Ground Body and click OK.
The Select a Point dialog is displayed. Choose FollowerJoint and click OK.
14. For Axis click on the arrow and choose Vector. Now click on Vector.
The Select a Vector dialog is displayed. Choose Global Y and click OK.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Marker (or right-click the Markers icon on the Model-Reference toolbar).
4. The Select a Body dialog is displayed. Choose Cam and click OK.
6. The Select a Point dialog is displayed. Choose PivotPoint and click OK.
selecting Add Reference Entity > Marker (or right-click the Markers icon on
the Model-Reference toolbar).
11. The Select a Body dialog is displayed. Choose Follower and click OK.
13. The Select a Point dialog is displayed. Choose FollowerPoint and click OK.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Graphic (or right-click the Graphics icon on the Model-Reference toolbar).
4. Click on the file browser icon and select CamProfile.h3d from the model folder.
The Select a Body dialog gets displayed. Choose Cam and click OK.
10. Click on the browser icon and select FollowerProfile.h3d from the model folder.
The Select a Body dialog gets displayed. Choose Follower and click OK.
Next, we will add some joint graphics for better visualization and aesthetics.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Graphic (or right-click the Graphics icon on the Model-Reference toolbar).
2. For Label, enter PivotGraphicOne (the first graphic to show the cam pivot).
The Select a Body dialog gets displayed. Choose Ground Body and click OK.
The Select a Point dialog is displayed. Choose PivotPoint and click OK.
6. Click on the arrow below Direction and select the Vector option.
7. Click on Vector.
The Select a Vector dialog is displayed. Choose Global Z and click OK.
Property Value
Length 7.5
Offset -3.75
Radius 1 4.000
Radius 2 4.000
10. Add another graphic by right-clicking on Model in the Project Browser and
selecting Add Reference Entity > Graphics (or right-click the Graphics icon on
the Model-Reference toolbar).
11. For Label, enter PivotGraphicTwo (the second graphic to show the cam pivot).
12. Choose Cylinder from the drop-down menu and click OK.
The Select a Body dialog gets displayed. Choose Cam and click OK.
The Select a Point dialog is displayed. Choose PivotPoint and click OK.
15. Click on the arrow below Direction and select the Vector option.
The Select a Vector dialog is displayed. Choose Global Z and click OK.
Propert Value
y
Length 7.6
Offset -3.8
Radius 1 2.000
Radius 2 2.000
19. Add another graphic by right-clicking on Model in the Project Browser and
selecting Add Reference Entity > Graphics (or right-click the Graphics icon
on the Model-Reference toolbar). Add.
20. For Label, enter FollowerJointGraphic (the graphic for the follower translational
joint).
21. Choose Box from the drop-down menu and click OK.
The Select a Body dialog gets displayed. Choose Ground Body and click OK.
The Select a Point dialog gets displayed. Choose FollowerJoint and click OK.
25. For axis orientation, use the vector Global Z as the Z-axis and the vector Global X,
to define the ZX plane.
Property Value
Length X 15
Length Y 10
Length Z 10
At the end of this step, your model should look like the one shown in the figure
below:
1. From the Project Browser right-click on Model and select Add Reference Entity
> Curve (or right-click the Curves icon on the Model-Reference toolbar).
3. From the Properties tab, use the first drop-down menu to change the curve from
2D Cartesian to 3D Cartesian.
5. Click on the file browser icon and select CamProfile.csv. Click Open.
8. Click on the file browser icon and select CamProfile.csv. Click Open.
11. Click on the file browser icon and select CamProfile.csv. Click Open.
12. Choose the properties of the curve as shown in the figure below:
13. From the Properties tab, use the fourth drop-down menu to set the curve type to
Closed Curve.
1. From the Project Browser right-click on Model and select Add Constraint >
Advanced Joint (or right-click the Advanced Joints icon on the Model-
Constraint toolbar).
The Select a Body dialog gets displayed. Choose Follower and click OK.
The Select a Point dialog gets displayed. Choose FollowerPoint and click OK.
The Select a Curve dialog gets displayed. Choose CamProfile and click OK.
The Select a Marker dialog gets displayed. Choose CamMarker and click OK.
1. From the Project Browser right-click on Model and select Add Constraint >
Motions (or right-click the Motions icon on the Model-Constraint toolbar).
3. From the Connectivity tab, double-click on Joint. Choose CamPivot and click OK.
Direction Value
X 0
Y -9810
Z 0
1. From the Project Browser right-click on Model and select Add General MDL
Entity > Output (or right-click the Outputs icon on the Model-General
toolbar).
3. From the Properties tab, choose Expressions from the drop-down menu.
7. Click OK.
8. Repeat the process for F3, F4, F6, F7, and F8 by changing the 3rd parameter to 3,
4, 6, 7, and 8 accordingly.
The PTCV(id, jflag, comp, ref_marker) function returns the reaction on the PTCV
joint:
4. Click on the browser icon and specify a file name of your choice.
5. Click Save.
6. Click Check Model button on the Model Check toolbar to check the model for
errors.
The icon can be used to start the animation, and the icon can be used to
stop/pause the animation.
One would also like to inspect the displacement profile of the follower in this
mechanism. For this, we will plot the Y position of the center of mass of the follower.
2. Use the Page Layout drop-down menu on the Page Controls toolbar to
3. Highlight the lower right window and use the Select application drop-down menu
to change the application from MotionView to HyperGraph 2D .
7. Click Apply.
8. The profile for the Y-displacement of the follower should look like the one shown
below:
9. If we set the X-axis properties to zoom in on one cycle, the profile looks as shown
below:
The profile of the cam has been designed to obtain the above Y-profile for the
follower.
Now, we come to the discussion regarding ‘lift-offs’. In some cases, the dynamics of the
system may cause the follower to lose contact with the cam. This is called ‘lift-off’. In
such cases, modeling the system using a PTCV joint will give us incorrect results. This is
because the PTCV joint constrains the follower point to be always on the curve and
hence cannot model lift-offs. For such cases, contact modeling has to be used (refer
tutorial MV-1010 for contact modeling). However, one would like to start with a PTCV
model since modeling a PTCV joint is a lot easier than modeling contact. Given this
scenario, the following modeling steps should be followed:
2. Monitor the PTCV joint reaction. If the reaction on the follower is a ‘pulling’ reaction,
it means lift-off would have occurred and one needs to go for a contact model.
Otherwise, the PTCV model is good enough.
Now, let’s check if our PTCV model is good enough. For this, we need to plot the
reaction profile on the follower. Since the follower is moving along the Y-axis, any
negative reaction along the Y-axis is a ‘pulling’ reaction. So, let’s plot the Y-reaction
on the follower. For this:
3. Add a new page to the session by clicking on the Add Page icon .
7. Click Apply.
If we zoom in on one cycle by scaling the X-axis, the profile looks like this:
We see that the Y component of the PTCV reaction on the follower is always positive
and hence it is never a ‘pulling’ reaction. Thus, our PTCV model is good enough to
model the dynamics since there is no expected lift-off.
In this tutorial, we learned how to model a PTCV joint and use it to model a cam-follower
mechanism. We also discussed lift-offs and ways of verifying the suitability of a PTCV
joint model for modeling the dynamics of a particular system.
In this tutorial, we will model a roller type cam-follower mechanism with the help of a
CVCV constraint.
Exercise
Copy the files CamProfile.h3d and CamProfile.csv , located in the
mbd_modeling\interactive folder, to your <Working directory>.
1. Start a new MotionView Session. We will work in the default units (kg, mm, s, N).
2. From the Project Browser right-click on Model and select Add Reference Entity
> Point (or right-click the Points icon on the Model-Reference toolbar).
5. Click on the Properties tab and specify the coordinates as X = 0.0 , Y, = 0.0, and Z
= 0.0
6. Follow the same procedure for the points specified in the following table:
Point X Y Z
1. From the Project Browser right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
3. Right-click on Bodies in the Project Browser and select Add Body to define a
second body.
5. Right-click on Bodies in the Project Browser and select Add Body to define a
third body.
7. From the Properties tab, specify the following for the three bodies:
8. For the Cam body, under the CM Coordinates tab, check the Use CM Coordsys
box.
11. For the FollowerShaft body, under the CM Coordinates tab, check the Use CM
Coordsys box.
14. For the FollowerRoller body, under the CM Coordinates tab, check the Use CM
Coordsys box.
1. From the Project Browser right-click on Model and select Add Constraint >
7. For Axis click on the arrow and choose Vector. Now click on Vector.
8. Right-click on Joints in the Project Browser and select Add Joint to define a
second joint.
14. For Axis, click on the arrow and choose Vector. Now click on Vector.
15. Right-click on Joints in the Project Browser and select Add Joint to define a third
joint.
21. For Axis click on the arrow and choose Vector. Now click on Vector.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Marker (or right-click the Markers icon on the Model-Reference toolbar).
6. Right-click on Markers in the Project Browser and select Add Marker to define a
second marker.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Graphic (or right-click the Graphics icon on the Model-Reference toolbar).
4. Click on the browser icon and select CamProfile.h3d from the model folder.
7. Right-click on Graphics in the Project Browser and select Add Graphic to define
a second graphic.
12. Click on the arrow below Direction and select the Vector option.
Property Value
Length 75
Offset -37.5
Radius 1 2.000
Radius 2 2.000
16. Right-click on Graphics in the Project Browser and select Add Graphic to define
a third graphic.
18. Choose Cylinder from the drop-down menu and click OK.
21. Click on the arrow below Direction and select the Vector option.
Property Value
Length 5.0
Offset -2.5
Radius 1 5.000
Radius 2 5.000
Next, we will add some joint graphics for better visualization and aesthetics.
1. Right-click on Graphics in the Project Browser and select Add Graphic to define
another graphic.
2. For Label, enter CamPivotGraphicOne (first graphic to show the cam pivot).
6. Click on the arrow below Direction and select the Vector option.
7. Click on Vector.
Property Value
Length 7.5
Offset -3.75
Radius 1 4.000
Radius 2 4.000
10. Right-click on Graphics in the Project Browser and select Add Graphic to define
another graphic.
11. For Label, enter CamPivotGraphicTwo (second graphic to show the cam pivot).
12. Choose Cylinder from the drop-down menu and click OK.
15. Click on the arrow below Direction and select the Vector option.
Property Value
Length 7.6
Offset -3.8
Radius 1 2.000
Radius 2 2.000
Repeat this process for the FollowerRevJoint and label the graphics as:
and
19. Right-click on Graphics in the Project Browser and select Add Graphic to define
another graphic.
20. For Label, enter FollowerTransJointGraphic (the graphic for the translational
joint).
21. Choose Box from the drop-down menu and click OK.
25. For axis orientation, use the vector Global Z as the Z-axis and the vector Global X
to define the ZX plane.
Property Value
Length X 15
Length Y 10
Length Z 10
At the end of this step, your model should look like the one shown in the figure
below:
1. From the Project Browser right-click on Model and select Add Reference Entity
> Curve (or right-click the Curves icon on the Model-Reference toolbar).
3. From the Properties tab, use the first drop-down menu to change the curve from
2D Cartesian to 3D Cartesian.
5. Click on the file browser icon and select CamProfile.csv. Click Open.
8. Click on the file browser icon and select CamProfile.csv. Click Open.
11. Click on the file browser icon and select CamProfile.csv. Click Open.
12. Choose the properties of the curve as shown in the figure below:
Notice the different column numbers used for the x, y and z properties.
13. From the Properties tab, use the fourth drop-down menu to set the curve type to
Closed Curve.
14. Right-click on Curves in the Project Browser and select Add Curve to define
another curve.
16. From the Properties tab, use the first drop-down menu to change the curve from
2D Cartesian to 3D Cartesian.
18. Select Math from the second drop-down menu on the left.
21. Select Math from the second drop-down menu on the left.
24. Select Math from the second drop-down menu at the left.
26. From the Properties tab, use the fourth drop-down menu to change the curve from
Open Curve to Closed Curve.
1. From the Project Browser right-click on Model and select Add Constraint >
Advanced Joint (or right-click the Advanced Joints icon on the Model-
Constraint toolbar).
1. Click the Project Browser right-click on Model and select Add Constraint >
3. From the Connectivity tab, double-click on Joint. Choose CamPivot and click OK.
Direction Value
X 0
Y -9810
Z 0
1. From the Project Browser right-click on Model and select Add General MDL
Entity > Output (or right-click the Outputs icon on the Model-General
toolbar).
3. From the Properties tab, choose Expressions from the drop-down menu.
7. Click OK.
8. Repeat the process for F3, F4, F6, F7, F8 by changing the third parameter to 3, 4,
6, 7, and 8 accordingly.
The CVCV (id, jflag, comp, ref_marker) function returns the reaction on the
CVCV joint:
4. Click on the browser icon and specify a file name of your choice.
5. Click Save.
6. Click the Check Model button on the Model Check toolbar to check the model
for errors.
The icon can be used to start the animation, and the icon can be used to
stop/pause the animation.
One would also like to inspect the displacement profile of the follower in this
mechanism. For this, we will plot the Y position of the center of mass of the
follower.
2. Use the Page Layout drop-down menu on the Page Controls toolbar to
select the three-window layout .
3. Highlight the lower right window and use the Select application drop-down menu
to change the application from MotionView to HyperGraph 2D .
7. Click Apply.
The profile for the Y-displacement of the follower should look like the one shown
below:
If we set the X-axis properties to zoom in on one cycle, the profile will look as shown
below:
The profile of the cam has been designed to obtain the above Y-profile for the
follower.
Now, we come to the discussion on ‘lift-offs’. In some cases, the dynamics of the
system may cause the follower to lose contact with the cam - this is called ‘lift-off’. In
such cases, modeling the system using a CVCV joint will give us incorrect results. This is
because the CVCV joint constrains the follower point to be always on the curve. For
such cases, contact modeling has to be used. However one would like to start with a
CVCV model whenever applicable, since modeling a CVCV joint is a lot easier than
modeling contact. Given this scenario, the following modeling steps should be followed:
2. Monitor the CVCV joint reaction. If the reaction on the follower is a ‘pulling’
reaction, it means that 'lift-off' would have occurred and one needs to go for a
contact model. Otherwise, the CVCV model is good enough.
Now, let’s check if our CVCV model is good enough. For this, we need to plot the
reaction profile on the follower roller. Since the follower is moving along the Y-axis,
any negative reaction along the Y-axis is a ‘pulling’ reaction. So, let’s plot the Y-
reaction on the follower roller. For this:
3. Add a new page to the session by clicking on the Add Page icon .
We are plotting the Y profile of the CVCV reaction on the follower roller.
7. Click Apply.
If we zoom in on one cycle by scaling the X-axis, the profile looks like this:
We see that the Y component of the CVCV reaction on the follower is always
positive, and hence it is never a ‘pulling’ reaction. Thus, our CVCV model is good
enough to model the dynamics since there is no expected lift-off.
In this tutorial, we learned how to model a CVCV joint and use it to model a cam-
follower mechanism. We also discussed 'lift-offs' and ways of verifying the suitability of
a CVCV joint model for modeling the dynamics of a particular system.
Exercise
Copy the file KG_N_MM_S_50elems2.h3d, located in the mbd_modeling\interactive
folder, to your <working directory>.
1. Start a new MotionView Session. We will work with the default units (kg, mm, s, N).
2. From the Project Browser right-click on Model and select Add Reference Entity
> Point (or right-click the Points icon on the Model-Reference toolbar).
5. Click on the Properties tab and specify the coordinates as X = 152.4, Y, = 0.0,
and Z = 0.0.
6. Follow the same procedure for the other points specified in the table below:
Point X Y Z
Point X Y Z
1. From the Project Browser right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
For the remainder of this tutorial - accept the default names that are provided for
the rest of the variables that you will be asked for.
5. Click on the Graphic file browser icon , select KG_N_MM_S_50elems2.h3d from the
<working directory> and click Open.
The same path will automatically appear next to the H3D file browser icon .
8. From the Properties tab, specify the following for the Ball:
9. For the Ball body, under the CM Coordinates tab, check the Use center of mass
coordinate system box.
13. For the Ball body, from the Initial Conditions tab - check the Vx box under
Translational velocity and enter a value of 100 into the text box.
This sets a value of 100 for the translational velocity of the ball in the X-direction. A
somewhat high value of Vx is introduced to make the motion of the ball clearly
visible in the animation.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Marker (or right-click the Markers icon on the Model-Reference toolbar).
7. Right-click on Markers in the Project Browser and select Add Marker to define a
second marker. Continue adding markers until Marker10 is reached.
8. For subsequent labels; enter Marker1, Marker2, etc. until Marker10 is reached.
9. From the Properties tab, always select the Beam (after double-clicking on Body
each time).
10. From the Properties tab, select Point0 through Point8, and finally
PointbeamInterface2 for Marker10 (by double-clicking on Point every time).
0 Beam PointbeamInterface1
1 Beam Point0
2 Beam Point1
3 Beam Point2
4 Beam Point3
5 Beam Point4
6 Beam Point5
7 Beam Point6
8 Beam Point7
9 Beam Point8
10 Beam PointbeamInterface2
1. From the Project Browser right-click on Model and select Add Constraint >
Joint (or right-click the Joints icon on the Model-Constraint toolbar).
10. Right-click on Joints in the Project Browser and select Add Joint to define a
second joint.
1. Click the Project Browser tab, right-click on Model and select Add Reference
Entity > Deformable Curve (or right-click the Deformable Curves icon on the
Model-Reference toolbar).
3. From the Properties tab, select Marker for Data type, and NATURAL for Left
end type and Right end type.
4. Check the box just to the left of the Marker collector (which situated to the far right
of Data Type).
5. Enter 10 into the text box located just to the right of the Insert button, and then
click on the Insert button.
7. Select all the markers one by one, starting from Marker 0 to Marker 10.
1. From the Project Browser right-click on Model and select Add Constraint >
Advanced Joint (or right-click the Advanced Joints icon on the Model-
Constraint toolbar).
1. Click the Project Browser tab, right-click on Model and select Add Reference
Entity > Graphic (or right-click the Graphics icon on the Model-Reference
toolbar).
3. For Type, choose Sphere from the drop-down menu and click OK.
8. From the Properties tab, enter 2.0 as the radius of the Ball.
2. For the beam which has already been defined, click on the Nodes button.
3. Uncheck the Only search interface nodes box and then click on Find All.
At the end of these steps your model should look like the one shown in the figure
below:
5. Click Save.
6. Click the Check Model button on the Model Check toolbar to check the model
for errors.
The icon can be used to start the animation, and the icon can be used to
stop/pause the animation.
One would also like to inspect the displacement profile of the beam and the ball. For
this, we will plot the Z position of the center of mass of the ball.
3. Use the Select application drop-down menu to change the application from
MotionView to HyperGraph 2D .
7. Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
Exercise
Copy the files membrane.h3d and membrane.fem, located in the
mbd_modeling\interactive folder, to your <working directory>.
1. Start a new MotionView Session. We will work with the default units (kg, mm, s, N).
2. Click the Project Browser tab, right-click on Model and select Add Reference
Entity > Point (or right-click the Points icon on the Model-Reference
toolbar).
5. Click on the Properties tab and specify the coordinates as X = 0.0, Y = 0.0, and Z
= 0.0.
6. Follow the same procedure for the other points specified in the following table:
Point X Y Z
1. From the Project Browser, right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
For the remainder of this tutorial - accept the default names for the rest of the
variables that you will be asked for.
5. Click on the Graphic file browser icon and select membrane.h3d from the
<working directory>.
The same path will automatically appear next to the H3D file browser icon .
6. Right-click on Bodies in the Project Browser and select Add Body to define a
second body.
8. From the Properties tab, specify the following for the Ball:
9. For the Ball body, under the CM Coordinates tab, check the Use center of mass
coordinate system box.
13. For the Ball body, from the Initial Conditions tab - check the Vx box under
Translational velocity and enter a value of 1 into the text box.
This sets a value of 1 for the translational velocity of the ball in the X direction.
1. From the Macros menu, select Create Markers For Deformable Surface.
The Create Markers For Deformable Surface utility is displayed at the bottom of
the screen.
2. For Select the body, use the Body input collector to select Membrane.
3. Click on the Select the FEM file file browser icon and select the membrane.fem file.
4. Use the default values for the Maximum number of marker rows and Maximum
number of marker columns.
1. From the Project Browser, right-click on Model and select Add Constraint >
Joint (or right-click the Joints icon on the Model-Constraint toolbar).
10. Repeat the same procedure for the other three joints.
1. From the Project Browser, right-click on Model and select Add Constraint >
Advanced Joint (or right-click the Advanced Joints icon on the Model-
Constraint toolbar).
− PointToDeformableSurface Joint
1. From the Project Browser, right-click on Model and select Add Reference Entity
> Graphic (or right-click the Graphics icon on the Model-Reference toolbar).
3. For Type, choose Sphere from the drop-down menu and click OK.
8. Under the Properties tab, enter 1.0 as the radius of the Ball.
2. For the membrane which has already been defined, click on the Nodes button.
3. Uncheck the Only search interface nodes box and then click on Find All.
At the end of these steps your model should look like the one shown in the figure
below:
4. Click the Transient tab and as specify the Maximum step size as 0.001 (as the
solution is not converged for the default step size of 0.01):
6. Verify that the Save and run current model radio button is selected.
7. Click on the browser icon and save the file as result.xml in the <working
directory>.
8. Click Save.
9. Click the Check Model button on the Model Check toolbar to check the model
for errors.
10. To run the model, click the Run button on the panel.
The icon can be used to start the animation, and the icon can be used to
stop/pause the animation.
One would also like to inspect the displacement profile of the beam and the ball. For
this, we will plot the Z position of the center of mass of the ball.
3. Use the Select application drop-down menu to change the application from
MotionView to HyperGraph 2D .
5. Click on the browser icon and load the result.abf file from the <working
directory>.
7. Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
Exercise
Copy the following files Plate.h3d and membrane.fem, located in the
mbd_modeling\interactive folder, to your <working directory>.
1. Start a new MotionView Session. We will work with the default units (kg, mm, s, N).
2. From the Project Browser right-click on Model and select Add Reference Entity
> Point (or right-click the Points icon on the Model-Reference toolbar).
5. Click on the Properties tab and specify the coordinates as X = 0.0, Y = 0.0, and Z
= 50.0.
6. Follow the same procedure for the other points specified in the following table:
Point X Y Z
We will have two bodies apart from the ground body in our model visualization: the
membrane and the ball. Pre-specified inertia properties will be used to define the ball.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Body (or right-click the Body icon on the Model-Reference toolbar).
For the remainder of this tutorial - accept the default names that are provided for
the rest of the variables that you will be asked for.
4. From the Properties tab, check the Flex Body (CMS) box.
5. Click on the Graphic file browser icon and select Plate.h3d from the <working
directory>.
The same path will automatically appear next to the H3D file browser icon .
8. From the Properties tab, specify the following for the Ball:
9. For the Ball body, under the CM Coordinates tab, check the Use center of mass
coordinate system box.
1. From the Macros menu, select Create Deformable Surface From FEM.
2. For Select the Body, use the Body input collector to select Membrane.
3. Click on the Select the FEM file file browser icon and select the membrane.fem file.
4. For Create entity in, double click on the System collector and select the Model
system.
5. Use the default values for the Maximum number of marker rows and Maximum
number of marker columns.
1. From the Project Browser right-click on Model and select Add Constraint >
10. Repeat the same procedure for the other three joints.
1. From the Project Browser right-click on Model and select Add Force Entity >
4. From the Connectivity tab; select Ball for Body, BallCM for Point, and
DeformableSurface 1 for DeformableSurface.
5. Click on the Properties tab and enter 10 for Radius, 1000 for Stiffness, and 0.2 for
Damping.
1. From the Project Browser right-click on Model and select Add Reference Entity
> Graphic (or right-click the Graphics icon on the Model-Reference toolbar).
3. For Type, choose Sphere from the drop-down menu and click OK.
4. Uncheck the Only search interface nodes box and then click on Find All.
At the end of these steps your model should look like the one shown in the figure
below:
4. Click on the browser icon and save the file as result.xml in the <working
directory>.
5. Click Save.
6. Click the Check Model button on the Model Check toolbar to check the model
for errors.
8. Once the run is complete, Close the solver window and Clear the Message Log.
The can be used to start the animation, and the icon can be used to
stop/pause the animation.
One would also like to inspect the displacement profile of the membrane and the
ball. For this, we will plot the Z position of the center of mass of the ball.
2. Return to the MotionView window and click on the Plot button in the Run panel.
3. Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
We can also plot the penetration distance for this flexible contact.
6. Click Apply.
7. The penetration profile as a function of time looks like the one shown below:
In the earlier exercise, you learned about MDL and authoring a definition using the MDL
language through a text editor. In general, many of the definitions (such as systems,
datasets, and analyses) are created using the MotionView graphical user interface. This
tutorial demonstrates how to create a system using the GUI and save its definition to a
file, which is an alternate way of creating a definition other than using the text editor.
OR
4. Click OK.
The Pendulum system is added to the model and its corresponding panel is
displayed.
2. Specify the Label as Attachment Point and arg_p for the Variable, select Point
(from the drop-down menu), and verify that the Type is set to Single only.
3. Click OK.
4. Add another attachment with the Label as Attachment Body and Variable as
arg_b, select Body from the drop-down menu, and specify the Type as Single
only.
We have created two attachments to the Pendulum system which will be used to
attach this system to other entities of a model.
Notice that the both of the newly created attachments are Unresolved, which
means that the attachments are not yet referring to another entity in the model.
6. Select Global Origin from the list on the right side of the dialog and click OK.
7. Similarly, click the collector, select Ground Body from the model
tree, and click OK.
OR
3. Specify the Label as Mass CG, Variable as p_cg, and the Type as Single.
4. Click OK.
5. From the Properties tab, click in the X Coordinate field and click on the button
on the Expression bar.
The Expression Builder is displayed.
6. Delete 0.0 from the Expression area (located at the top of the dialog).
7. From the model tree, expand the Pendulum > Attachments > Attachment Point
folders and select x (x is one of the property attributes of the point entity
Attachment point).
Through the above steps the point Mass CG is parameterized with regard to the X
coordinate of the point Attachment Point and is placed at a distance of 50 length
units in the X direction.
11. Repeat the above steps for the Y and Z Coordinates, by selecting attribute y and z
respectively in the expression bar. Specify the expression for the Y Coordinate as
arg_p.y and arg_p.z+100 for the Z Coordinate.
Note The background color of the field changes for parametric expressions.
12. Right-click on the Pendulum system in the Project Browser and select Add >
Reference Entity > Body.
13. Enter Mass for the Label and b_mass for the Variable, and click OK.
14. From the Properties tab specify the Mass as 1 and the Inertia properties as 1000
for Ixx, Iyy and Izz respectively.
15. Click on the CM Coordinates tab and check the Use center of mass coordinate
system option. Pick the point Mass CG as the Origin.
16. Right-click on the Pendulum system in the Project Browser and select Add >
Reference Entity > Graphic.
17. Specify the Label as Rod, the Variable as gcyl_rod, the Type as Cylinder, and
click OK.
18. From the Connectivity tab; double click on the Body collector for Parent and pick
Mass in the Pendulum system, click on the Point collector and pick Mass CG as
Origin, and for Direction double click the Point collector and select the attachment
to the system Attachment Point.
20. Next, add a Sphere graphic by right-clicking on the Pendulum system in the
Project Browser and selecting Add > Reference Entity > Graphic.
21. Specify the Label as Mass, the Variable as gsph_mass, the Type as Sphere, and
click OK.
22. Pick Mass for the Parent body and Mass CG as the Origin.
24. Right-click on the Pendulum system in the Project Browser and select Add >
Constraint > Joint.
25. Select Revolute Joint from the drop-down menu, specify the Label as Pivot, the
Variable as j_pivot, the Type as Single, and click OK.
26. From the Connectivity tab, double click on and select Mass from the
Select a Body dialog (model tree). For the second body, click on the
collector and browse through the model tree (Model > Pendulum > Attachments)
and select Attachment Body.
Note Alternatively, you can click on the Global Triad (at the bottom left of the
triad) to pick Ground Body via the Attachment Body.
27. Similarly, for Origin select Attachment Point (located under Model > Pendulum
> Attachments). Use the Alignment axis drop-down menu to change from Point
to Vector and select Global Y for the Alignment axis.
3. Click on the Select file file browser and browse to your <working directory>.
4. Specify the name of the file as sys_pend_gui.mdl by clicking on the folder icon and
clicking on Save.
Note The Export option is only available for Systems and Analyses. For other
definitions like Datasets or Templates, the definition can be copied from the
model .mdl file.
3. Click on the Select file file browser and browse to your <working directory>.
6. Select def_sys_pendu.
8. Click OK.
10. Go to the Attachments tab and resolve the attachments in the following manner:
The same system definition can be reused to instantiate several times either within
the same model or in a different model.
4. Click Next.
6. Click Next.
7. From the Primary Systems for Front end of vehicle dialog, specify the following:
− Powertrain = None
8. Click Next.
11. From the Select springs, dampers and stabilizer bars dialog, select the
following:
13. From the Select jounce and rebound bumpers dialog, set the options to None,
and click Next.
14. From the Select Driveline Systems dialog, set the Front Driveline to
Independent Forward, and click Next.
All of the required systems that are necessary to build a front suspension model
have now been selected.
15. Click Next to load the assembled model and bring up the Attachment Wizard.
The Attachment Wizard shows the attachment choices which are available for
each sub-system. In this exercise, we will simply review the options in each sub-
system and accept the default selections.
16. From the Attachment Wizard, review the choices for each sub-system and click
Next until the last page of the dialog is reached.
This model represents a front end suspension of a vehicle with a Short Long Arm type
(also known as Wishbone) of suspension and a steering system. The vehicle body is
fixed to ground. The upper and lower control arms of the suspension are attached to the
vehicle body at one end through bushings, while they are connected to a knuckle on the
other end through ball joints. A wheel hub (no graphics for this body are in the model)
is mounted on the knuckle through a revolute joint. The wheel is fixed to the wheel hub.
The steering system consists of a rack with a translation joint with a rack housing
(through a dummy body). The ends of the rack are connected to a tie rod at each end
through ball joints and the other end of the tie rod is connected to the steer arm of the
knuckle through ball joints. The rack gets its movement from the steering column
through a coupler constraint between the rack and the pinion.
Step 2: Adding a static ride analysis task using the Task Wizard.
The Analysis Task Wizard allows you to assign an event analysis to the model using a
wizard. This default suspension wizard is configured such that the available analyses
choices are dependent on the system selections made in the Assembly Wizard. Since
this is a half-vehicle model, only events that are applicable for a half-vehicle model are
available. A full vehicle model would contain a different set of analysis events.
In this step, we will add a static ride analysis for the suspension assembly. Through this
analysis, the kinematic characteristic of the suspension can be studied for varying
vertical positions of the wheels. Both wheels are exercised such that they move
vertically along the same direction.
2. In the Task Wizards – Front end tasks dialog select the Front end task as
Static Ride Analysis from the pull down menu.
3. Click Next.
5. Click Finish.
The static ride analysis event consists of a pair of jacks that are attached to the
wheels at the tire contact patch location. The jacks are actuated through Actuator
Forces that exercises them in the vertical direction in a sinusoidal fashion.
The model tree in the Project Browser now includes an analysis called Static ride
analysis. It is possible to add many different analysis tasks to the same model,
however only one analysis task may be active at one time.
7. Go to the Project Browser, right-click on Model and select Rename (or left click
on Model and press F2 on the keyboard).
9. Expand the Static ride analysis folder and also the Forms folder (located
underneath) by clicking the + sign next to each folder in the Project Browser.
11. Change the values for Jounce travel (mm) and Rebound travel (mm) to 50.0.
12. Click and save the model as sla_ride.mdl in your <working directory>.
4. After the job is completed, close the Run window and the Message Log.
6. Select Front Ride-MSolve SDF based Report My Front SLA Supsension and
click OK.
This analysis comes with a Standard Report Template that plots the results and
loads the animation in subsequent pages.
7. Once the process of adding the pages is complete, use the Previous Page/Next
Page buttons (located at the upper right corner of the window, below the
menu bar area and above the graphics area) to navigate and review the plots and
animation pages.
8. The last page is the TextView client with an open Suspension Design Factors (SDF)
report. This report lists the suspension factors at each time interval of the
simulation.
The path to the .reports file can also be set by selecting the Set Wizard path option
under the Model menu.
When View Reports from the Analysis menu is selected, MotionView displays the
contents of the .reports file in the Reports dialog. When you select a report from the
dialog, MotionView loads the requested report definition file into your session.
E:/Altair/hw/mdl/mdllib/Libs/Tasks/adams/Front/Ride/ms_rep_kc_front.tpl
The first line contains the report label, model label, and the date and time when the
solver input files were saved. This information is contained in the Reports dialog. It is
recommended that you give your models specific names, otherwise they will be labeled
Model.
Line 2 contains the name of the report definition file that the report is to be derived
from.
Line 3 contains an MDL statement called *Report(). This statement specifies the report
definition variable name along with the required parameters. Refer to the MDL online
help for more information.
2. Right-click on Frnt SLA susp (1 pc. LCA) in the Project Browser and select Data
Summary.
3. Change the X and Y coordinates of LCA frnt bush by -5 and +5 respectively (for
example, if the existing value of X is 932.15, append -5 to it so that the expression
is 932.15-5).
5. Click on the Bushings tab and change the KZ values of LCA frnt bush and UCA
frnt bush by -200 and +200 respectively.
7. Go to the Run panel , and specify sla_ride_change.xml as the new file name
for the xml file.
9. After the job is completed, close the Run window and the Message Log.
11. Select the latest report (the report located at the top of the list) and click OK.
The results from the latest run will be overlayed in the plot and animation windows.
Compare the plots.
12. In the Hyperview client (page 17 of the session), use the Change Model drop-
down menu (located in the Results Browser) to change the active result to
sla_ride_baseline.h3d as shown below:
13. Click the Entity Attributes panel button on the Visualization toolbar to enter
the Entity Attributes panel.
14. Activate the Auto apply mode check box (located in the middle portion of the
panel).
15. Select a color from the color palette and click the All button.
All graphics belonging to the active result will change to the selected color.
17. From the Animation toolbar, click the Start/Pause Animation button to
animate the results.
View the animation and observe the differences between the two overlayed models.
18. Navigate back to the MotionView page and save the model .
19. Click the Save Session icon on the Standard toolbar and save your session as
my_susp_analysis.mvw in your working directory.
The model, plot, and animation information is saved in the session file.
• Learn the advantages of using Tcl programming to save time and effort in MBD
model building with MotionView
• Work with the HyperWorks Desktop – Tcl interface
• Build a simple model using Tcl commands
About Tcl
Tool Command Language or Tcl (typically pronounced as "tickle" or "tee-see-ell") is a
scripting language that is commonly used for quick prototyping, scripted applications,
GUIs, and testing.
Once the session handle is retrieved, it can be used to access all objects in the
HyperWorks database as shown below:
Windows are retrieved as shown below. Windows are assigned a client type, which can
be modified.
A window's client type cannot be changed after the client handle has been retrieved. The
client handle must be released and retrieved again if the window's client type is
changed.
The top level hwi command object supports the following utility commands:
Note Putting a ‘#’ character in the beginning of any line makes it a comment and that
line is not evaluated. In addition, all HyperWorks Tcl commands are case
sensitive.
The structure of every Tcl script created for HyperWorks Desktop products
should follow the following structure:
hwi OpenStack
Obtain All necessary handles
Perform some function
Release All obtained handles individually
hwi CloseStack
3. A TkCon window opens up and displays the version of Tcl and Tk installed with
Hyperworks.
The prompt prints sess as the command output if the command is successful. This
command assigns the Session Handle to the variable "sess".
5. To view all the option/commands available with the hwi class type in hwi
ListMethods at the command prompt. This will list all the options available under
hwi.
6. Now, type:
sess GetProjectHandle proj
This command will assign the Project handle to the variable "proj".
7. The next step is to obtain the Page handle, the command for it is:
proj GetPageHandle page 1
The variable "page" now points to the page handle of the first page of the session.
Note Please refer the "Programming with Tcl/Tk Commands" online help under the
"HyperView, MotionView and HyperGraph" Reference Guide for the explanation
on the syntax of these commands.
8. To get the control of the window we need to get the window handle the command
for that is:
page GetWindowHandle win 1
This assigns the window handle of the first window to the variable "win".
10. To be able to set different views and fit the model in the graphics window the view
control handle is required, the command to get view control handle is:
win GetViewControlHandle vch
11. To start with a new blank model we will run the command:
mc CreateBlankModel
12. To obtain the handle of the model just created in the previous step type in the
command:
mc GetModelHandle m
Note Once the model handle is obtained we can now start creating entities using the
InterpretEntity and InterpretSet statements.
Where:
13. To start with Add a point for the pendulum pivot with variable p_0 and label Pivot
with a command:
m InterpretEntity p Point p_0 "\"Pivot\""
14. Now to set the properties of the point just created, the command is:
m InterpretSet SetPoint p_0 0.0 0.0 0.0
15. p is the Point handle for Tcl and is released with p ReleaseHandle command:
p ReleaseHandle
16. To create a point for the location of the pendulum mass and set the property for it,
the set of commands are:
m InterpretEntity p Point p_1 "\"Mass\""
m InterpretSet SetPoint p_1 p_0.x+100 p_0.y p_0.z
p ReleaseHandle
17. Add the pendulum body and set its mass and inertia properties type in the following
commands:
m InterpretEntity b Body b_0 "\"Pendulum\"" p_1
m InterpretSet SetBodyInertia b_0 0.5 100 100 100
m InterpretSet SetOrientation b_0.cm TWOAXES ZX
b ReleaseHandle
18. To add the graphics on the body for visualization the three graphic entities are
added using the commands:
m InterpretEntity g Graphic gra_0 "\"Graphic_Pivot\"" CYLINDER B_Ground
p_0 V_Global_Y 1 1 10 -5 CAPBOTH
g ReleaseHandle
m InterpretEntity g Graphic gra_1 "\"Graphic_Pendulum_Cylinder\""
CYLINDER b_0 p_0 p_1 1 CAPBOTH
g ReleaseHandle
m InterpretEntity g Graphic gra_2 "\"GraphicMass_Cylinder\"" CYLINDER
b_0 p_1 V_Global_Y 5 5 3 -2 CAPBOTH
g ReleaseHandle
19. The pendulum will need to be connected to the ground with a revolute:
m InterpretEntity j RevJoint j_0 "\"Joint_Pivot_Rev\"" B_Ground b_0 p_0
V_Global_Y
j ReleaseHandle
20. After adding any entity to the model the database has to be updated by using the
evaluate command:
m Evaluate
22. The model is ready to be run. Go to the Run panel, specify a name for the result file
and click on the Run button to run the model using MotionSolve. Use the Animate
button to view the animation.
23. The handles obtained through the commands in the above steps now have to be
released using the ReleaseHandle command. Type in the following:
m ReleaseHandle;
mc ReleaseHandle;
win ReleaseHandle;
page ReleaseHandle;
proj ReleaseHandle;
sess ReleaseHandle;
24. In a text editor paste all the above Tcl commands and save the file as pendulum.tcl
in the working directory. This file can be "sourced" and the model can be built in one
step. The complete script is given below for your reference (please see the bottom
of the tutorial).
Note You can also use the file pendulum.tcl located in the automation folder.
6. This will build the complete model by sequentially running the commands in the file
line by line.
Note Please refer to online help if you need to know more about the syntax.
6. Click Register.
10. You should see a new menu My Scripts in the modeling client. This should be
available every time you open the MotionView session as long you have the
preference file registered.
11. Click on My Scripts -> Build Simple Pendulum menu and run the script.
## Adding the Revolute joint between the Ground and the pendulum body
m InterpretEntity j RevJoint j_0 "\"Joint_Pivot_Rev\"" B_Ground b_0
p_0 V_Global_Y
j ReleaseHandle
m Evaluate
vch Fit
after 1000
## End of Script
• Invoke a TCL script from MotionView. The TCL script automates the model
building, solver runs and post processing in MotionView.
• Link the script to a Menu Item on the menu bar in MotionView.
3. Right-click in the Command Window and select File > Load File.
5. Click Open.
Note You can also invoke the script by using the following steps:
A preference file is a special script file that is read each time the program is
started. It specifies default user settings such as the order in which colors are
assigned, the default printer, default page layout, the autosave interval, and so
on. Custom menu options in MotionView can be added using a preference file.
To learn more about the preference file, type ‘preference file’ under the Index
tab under the Help menu.
To learn more about the preference file statements, type ‘preference
statements’ under the Index tab under the Help menu.
4. In MotionView, go to the File menu and select Load > Preference File.
5. Click Register.
8. A menu called MotionView Tutorial Script is added to the Menu bar, under which
you will find the Menu item Tutorial Script.
9. Once this preference file is set, the new menu will appear every time HyperWorks
Desktop is invoked.
10. Start a new session of HyperWorks Desktop by pressing the SHIFT + F9 on your
keyboard.
12. Click the Tutorial Script under MotionView Tutorial Script menu to invoke the
script simple_auto.tcl which in turn will make MotionView to perform the
scripted operations.
Note If you no longer want your new menu item to appear on the menu bar, you can
un-set the preference file by going to the File menu and selecting Load >
Preference File. From the Preferences dialog, select
script_invoke_menu.mvw and click on the Unregister button. This will make
MotionView unload the preference file.
• General Entities
• Definition Based Entities
General Entities
• Have one statement to define the entity. They may have one or more statements
to set their properties.
• Some examples include points, bodies, joints, etc.
• Each general entity has certain properties consistent with its type. For example,
a point has the properties x-coordinate, y-coordinate, z-coordinate, label, state,
and varname (variable name).
Definition Based Entities
• Are defined through a block statement, called definition, and its instance is
created in a model by an instantiation statement.
• The block generally begins with a *Define() statement and end with a
*EndDefine() statement.
• The entity (or block) is comprised of a series of other MDL entities or members.
• These entities are reusable. Once defined, the same entity-definition may be
instantiated several times within the same model or different model files.
Some of the commonly used user-defined entities are outlined in the table below:
Entity Description
Note The system, assembly, and analysis are together referred to as container entities
(or simply containers).
This list of entities and their properties is not comprehensive. For a complete list, refer
to the MDL Language Reference on-line help.
ActionReactionForce frc_ b1, b2, fx, fy, fz, id, tx, ty, tz
To access entity properties; use the entity varname, followed by a dot separator,
followed by the property. Below are some examples:
MotionView comes with Global Variables, by default, which are available for use
anywhere in the model. These variables are case sensitive.
The table below lists some commonly used keywords and what they represent:
Keyword Refers to
These are statements that define an entity and establish topological relation between
one entity and the other. For example, *Body(b_body, “Body”, p_cg). In this example,
the *Body statement defines a body having its CG at point p_cg. Through this statement
the body (b_body) is topologically connected to point p_cg.
These statements assign properties to the entities created by topological entities. For
example, *SetBody() is a property statement that assign mass and inertia properties to
a body defined using *Body(). Since most of the property statements begin with “*Set”,
they are generally referred as Set statements.
Building upon the concept of a definition block, these terminologies are used specifically
with regard to container entities such as Systems, Assembly, and Analysis.
The block of statements when contained within a *Define() block are termed as a
Definition. The statements within the block may include:
2. Set statements that assign properties. These Set statements within a definition
block are called "Default Sets", as they are considered as default values for the
entities in the definition.
Any statements or block that resides outside the context of *Define() block are termed
as Data. These include:
• The syntax of the MDL statement is an asterisk (*) followed by a valid statement
with its arguments defined.
• Statements without a leading asterisk (*) are considered comments. In this
tutorial, comment statements are preceded by // to improve readability. The
comments are not read in by the MotionView graphical user interface and are
removed if the model MDL is saved back or saved to a different file.
MDL accepts statements in any order, with a few exceptions.
To help you learn this language, the code in the tutorial examples will follow this
structure:
//comments about the MDL file
*BeginMDL(argument list)
//Topology section
*Point…
*Body…
*System(…)
// definitions sub-section
*DefineSystem(..)…
..
.*EndDefine()
//Property of entities directly in *BeginMDL()//Property section for
entities within Systems and analysis
*BeginContext()
..
..
*EndContext()
.
*EndMDL
• *BeginMdl()
• *EndMdl()
• *Point()
• *Body()
• *Graphic() - cylinder
• *Graphic() - sphere
• *RevJoint()
• *SetPoint()
• *SetBody()
2. Create a *BeginMdl() - *EndMdl() block to signify the beginning and end of the
MDL model file. Create all other MDL model file statements between these block
statements:
where
It is strongly recommended that you look for the syntax of the corresponding
statements by invoking the online Help and typing the statement in the Index. In
MDL statements, only the keywords are case sensitive.
where:
2. Using the same *Point statement create another point which would be pendulum
center of mass:
*Point(p_pendu_cm, "Pendulum CM")
3. Use the *Body() statement to define the ball’s body. The syntax is:
*Body(body_name, "body_label", [cm_origin], [im_origin], [lprf_origin],
[body_num])
where:
4. Define the graphics for the body for visualization. To attach graphics to the body,
use the *Graphic() statement for spheres and cylinder to display the link and the
sphere.
where:
For this exercise, use all of the arguments. The statement is:
//Graphics for sphere
*Graphic(gr_sphere, "pendulum sphere graphic", SPHERE, b_link,
p_pendu_cm, 1)
orient_entity The variable name of the entity for orienting the cylinder.
CAPEND]
For this exercise, use all of the arguments. The statement is:
//Graphics for cylinder
*Graphic(gr_link, "pendulum link graphic", CYLINDER, b_link
p_pendu_pivot, POINT, p_pendu_cm, 0.5, CAPBOTH )
where:
POINT|VECTO Keyword to suggest the method of orientation for the joint using a
R point or vector.
point|vecto A point or vector that defines the rotational axis of the revolute
r joint.
6. Create an entity output statement. The syntax for *Output - output on entities
is:
*Output(out_name, "out_label", DISP|VEL|ACCL|FORCE, entity_type,
ent_name, [ref_marker], [I_MARKER|J_MARKER|BOTH_MARKERS])
where:
In order to obtain the displacement versus time output of the falling ball, you will
use the *Output() statement as follows.
//Output
*Output(o_pendu, "Disp Output", DISP, BODY, b_link)
7. Set property values for the entities you created in your MDL model file. This is done
in the property data section of the MDL model file. For this problem, use the
*SetSystem(), *SetPoint(), and *SetBody() statements.
//Property data section
*SetPoint(p_pendu_pivot, 0, 5, 5)
*SetPoint(p_pendu_cm, 0, 10, 10)
*SetBody(b_link, 1, 1000, 1000, 1000, 0, 0, 0)
Your MDL model file will look like the file below (it summarizes the key sections of
the MDL model file for this exercise):
//Pendulum Model
//05/31/XX
*BeginMDL(pendulum, "Pendulum Model")
//Topology information
//declaration of entities
//Points
*Point(p_pendu_pivot, "Pivot Point")
//Bodies
*Body(b_link, "Ball", p_pendu_cm)
//Graphics
*Graphic(gr_sphere, "pendulum sphere graphic", SPHERE, b_link,
p_pendu_cm, 1)
*Graphic(gr_link, "pendulum link graphic", CYLINDER, b_link,
p_pendu_pivot, p_pendu_cm, 0.5, CAPBOTH)
//Revolute Joint
*RevJoint(j_joint, "New Joint", B_Ground, b_link, p_pendu_pivot, VECTOR,
V_Global_X)
//Output
*Output(o_pendu, "Disp Output", DISP, BODY, b_link)
//End Topology
// Property Information
*SetPoint(p_pendu_pivot, 0, 5, 5)
1. Launch MotionView .
OR
4. From the Open Model dialog, locate and select the file pendulum.mdl.
5. Click Open.
7. From the Standard View toolbar, click the YZ Rear Plane View button.
8. Use the Project Browser to view the model entities and verify their properties.
9. Go to the Tools menu and click on Check Model to check for any modeling errors.
− Go to the Run panel and select Transient as the Simulation Type: option.
− From the Main tab, use the Save and run current model file browser, and
enter pendulum for the xml.
− Click Run.
− Upon completion of the run, close the solver window and clear the message log.
2. The animation file pendulum.h3d will be loaded in the adjacent window. Click on
that window to activate it.
3. Click the Start/Pause Animation icon on the Animation toolbar to start the
animation, and click the Start/Pause Animation icon again to pause the
animation.
4. Right-click on the Fit Model/Fit All Frames icon icon on the Standard Views
toolbar to fit the visualization in all frames of the animation.
9. Click Apply.
The plot for the displacement of the pendulum in the Z direction is shown.
10. Click the Start/Pause Animation icon, , to review the plot and animation
together. Click , to pause the animation.
11. Close the session using the File menu (File > Exit).
In this tutorial, you will learn how to create a definition based entity (such as a system)
using MDL.
A procedure is a program that needs information from the main program. The
procedure can be called /instantiated any number of times. A procedure is a part of
main program, but can be maintained separately.
Similarly, a system definition is a model aggregate which needs information from the
main model. It can be called/instantiated any number of times. A system definition
is a part of the main model which can be maintained separately.
− def_sys is the variable name of the system definition and will be used while
instantiating this system.
Excluding the *Attachment() statement, other entities in a system definition are similar
to an MDL model file.
// Model : Body.mdl
1
*BeginMDL(base_model, "Base Model")
8 *EndMDL()
You can instantiate systems within your model in one of three ways:
The exercises that follow explain the first two methods; the third is covered in a separate
tutorial.
Problem
In Steps 1 and step 2:
• Modify the pendulum model from tutorial MV-1060 to create a pendulum system
definition file called sys_pendu.mdl.
• Use this system definition to add another pendulum to the pendulum model from
the tutorial MV-1060 to obtain the double pendulum model shown in the figure
below.
• Save your base model file as doublependulum.mdl.
• Perform a dynamic simulation of the transient response and view the animation.
Below is a sample MDL file for the pendulum model in tutorial MV-1060.
//Pendulum Model
//05/31/XX
*BeginMDL(pendulum, "Pendulum Model")
//Topology information
//declaration of entities
//Points
*Point(p_pendu_pivot, "Pivot Point")
*Point( p_pendu_cm, "Pendulum CM")
//Bodies
*Body(b_link, "Ball", p_pendu_cm)
//Graphics
*Graphic(gr_sphere, "pendulum sphere graphic", SPHERE, b_link,
p_pendu_cm, 1)
*Graphic(gr_link, "pendulum link graphic", CYLINDER, b_link,
p_pendu_pivot, POINT, p_pendu_cm, 0.5, CAPBOTH)
//Revolute Joint
*RevJoint(j_joint, "New Joint", B_Ground, b_link, p_pendu_pivot,
VECTOR, V_Global_X)
//Output
*Output(o_pendu, "Disp Output", DISP, BODY, b_link)
//End Topology
// Property Information
*SetPoint(p_pendu_pivot, 0, 5, 5)
*SetPoint(p_pendu_cm, 0, 10, 10)
*SetBody( b_link, 1, 1000, 1000, 1000, 0, 0, 0)
*EndMDL()
You can convert the above MDL file into a system definition by making small
changes to your MDL file. It is important to note that this conversion is not
applicable in all cases, and some of the conditions that need to be taken care are
described later in this tutorial.
2. Replace the *BeginMDL() and *EndMDL() statements with the *DefineSystem() and
*EndDefine() statements, respectively. Specify an appropriate variable name for
the system definition.
Note As mentioned earlier, the attachment entity can be any MDL entity.
Therefore one needs to specify the entity type that the variable represents
(for example, att_point represents the POINT entity).
5. Use *Attachment statement to specify the entity type that each variable represents.
*Attachment (att_point, "Pivot Point", POINT, "Attachment point where
the pendulum definition gets attached")
*Attachment (att_body, "Attachment body" , BODY, " Any body to which the
pendulum definition gets attached")
Note In the original model variable p_pendu_pivot was representing the pivot
point. While converting the pendulum model to pendulum system definition,
this pivot point would be provided by the attachment point.
The *Graphic() statement for the cylinder refers to the variable p_pendu_pivot.
Replace the variable p_pendu_pivot with att_point.
Note All of these variable replacements show that wherever applicable, the
attachment variables should replace the original variables.
10. Retain the *Output() statement. This allows you to obtain displacement outputs on
each pendulum body in your model.
12. Parameterize the points in the system so that they are positioned with respect to
each other in a certain way. In this case, you can set the CM point to be 5 units
away from the attachment point in the y and z direction (att_point.y+5,
att_point.z+5).
// system.mdl
// created on:
*DefineSystem(sys_def_pendulum, att_point, att_body)
//Topology Data
// Declaration of Entities
//Attachments
*Attachment (att_point, "Pivot Point", Point, "Attachment
point where the pendulum definition gets attached")
*Attachment (att_body, "Attachment body" , Body, " Any body
to which the pendulum definition gets attached")
//Points
*Point( p_pendu_cm, "Pendulum CM")
//Bodies
*Body(b_link, "Ball", p_pendu_cm)
//Joints
*RevJoint(j_joint, "New Joint", att_body, b_link, att_point,
VECTOR, V_Global_X)
//Output
*Output(o_pendu, "Disp Output", DISP, BODY, b_link)
//Graphics
*Graphic(gr_sphere, "pendulum sphere graphic", SPHERE,
b_link, p_pendu_cm, 1 )
// Property Data
*SetPoint(p_pendu_cm, 0, att_point.y+5, att_point.z+5)
*SetBody(b_link, 1, 1000, 1000, 1000, 0, 0, 0)
*EndDefine()
4. Instantiate the first pendulum system using the *System() statement. Refer to the
MDL Language Reference online help for syntax. For example:
*System(system1, "First Pendulum System", sys_def_pendulum,
P_Global_Origin, B_Ground)
• Reference the system definition used by the system by specifying its variable
name as the third argument in the *System() statement. The variable name of
the system definition should be the same as you specified in the corresponding
*DefineSystem() statement. In the above example, system1 uses the system
definition sys_def_pendulum.
• Use Pendulum CM (p_pendu_cm) and the Pendulum Body (b_link) from the
first system as the attachment.
The exact statement that you should use is shown below:
*System(system2, "Second Pendulum System", sys_def_pendulum,
system1.p_pendu_cm, system1.b_link )
*EndMDL()
9. Take a close look at items listed in the Project Browser. You will now notice a
'hand' under the System icon for the First Pendulum System and the Second
Pendulum System. This indicates that both of these systems share a single
definition. This feature is called a Shared Definition.
10. When a System definition is shared among different instances, any modifications to
one of those instances can be made to reflect in all of the instances. This can be
achieved as follows:
− Click on the Build Model option (located near the bottom of the tree).
11. Under Legacy Support, uncheck the Create a separate definition when
modifying a shared instance option. This will ensure that when entities in a
shared instance are modified, the changes will be reflected across all of the
instances without creating a separate definition.
13. Run the MotionSolve simulation and post-process the results. From the Main tab of
the Run Panel , specify the End time as 1.0 and the Print interval as 0.01.
Problem
In this exercise:
• Use MotionView to add another pendulum link to your double pendulum model to
obtain the triple pendulum shown in the image below.
• Solve and view the animation.
1. Start MotionView and open the pendulum model file from Exercise 1 (the previous
exercise) in the MBD Model window.
4. Using the Select File: file browser , pick the system definition you just created,
sys_pendu.mdl.
5. Click Import.
7. Under Label, remove the default label and enter Third Pendulum System as the
new label.
8. Under Variable, remove the default variable and enter system3 as the new variable.
9. Click OK.
The *Attachment() line added to the system definition now appears in the
Attachments tab for the system folder of the newly added system. Attach the third
link of the pendulum to the second link in the pendulum system.
2. From the Attachments tab, activate the collector for Attachment body to
select a body attachment.
3. Expand the Bodies folder in the second pendulum system and pick the Pendulum
Body (which belongs to system2).
4. Click OK.
5. Next, activate the collector for Pivot Point to select a point attachment.
6. Expand the Points folder under the second pendulum system and select the
Pendulum CM point.
7. Click OK.
In this tutorial, you will learn how to create an analysis definition and instantiate it in an
MDL file.
An analysis is a collection of loads, motions, output requests, and entities (bodies, joints,
etc.) describing a particular event applied to a model. For example, an analysis to
determine the kinematics of a four-bar mechanism can be described in one analysis,
while another analysis can be used to study a dynamic behavior. In both cases, while
the overall model is the same, the analysis container may contain different entities that
form the event. The kinematic analysis can contain motion and related outputs, while
the dynamic analysis may contain forces and its corresponding outputs.
Where;
// Model : Body.mdl
1
*BeginMDL(base_model, "Base Model")
8 *EndMDL()
• The following table details the relationships between the analysis definition and
its instantiation in the MDL Model file.
Variable Relationship
1. Use the following function expression to create the impulse torque about the x axis.
Tx = step(TIME,.3, 0, .31, 10) + step(TIME, .31, 0, .32, -10)
2. Apply this torque to estimate the natural frequencies of the triple pendulum model
shown in the image below:
Your analysis applies to a pendulum with any number of links or to more general
systems.
Note Refer to the MotionView Reference Guide (located in the HyperWorks Desktop
Reference Guide) for the syntax of the above MDL statements.
2. Create the *DefineAnalysis() and *EndDefine() block. All other statements will
be added between this block.
• In the text editor, define an analysis with a variable name of def_ana_0 and one
argument j_att as an attachment.
*DefineAnalysis(def_ana_0, j_att)
3. The torque may be applied between two bodies connected by a revolute joint, with
the origin of the revolute joint taken as the point of application of the force. This
allows you to have only one attachment; the revolute joint.
Note Refer to the description of the dot separator in MDL. You can access
properties of an entity by using the dot separator.
For example, bodies attached to the revolute joint can be accessed as:
<joint variable name>.b1 and as <joint variable name>.b2.
5. Use the *SetForce() statement to set the value to the force defined in the previous
step.
4. Using the Select File: file browser , pick the analysis definition you just created,
analysis.mdl.
5. Click Import.
6. Make sure that the Select a definition drop-down menu is set to Analysis.
7. Click OK.
8. Select the newly added analysis by clicking on Analysis 0 in the Project Browser,
and resolve the joint attachment by selecting any one of the pivot joints of the triple
pendulum:
10. Solve the model. From the Main tab of the Run panel , specify the End time as
1.0 and the Print interval as 0.01.
12. Plot the output "Input Torque" using the .abf file from the solution.
• Create a dataset to specify the start time, mid time, end time, and the force
magnitude
• Include dataset definition in the analysis definition
• Vary the magnitude and time of the impulse torque
In many occasions, it is convenient to provide inputs or change the design variables of a
model through a single interface. The variables could be in the form of real numbers,
integers, or strings. Or it could also be the name of a file. Having a dataset enables
such a modeling scenario.
This exercise will focus on creating a dataset using MDL. A dataset is defined using a
*DefineDataSet() - *EndDefine() block, which is similar to other definition based
entities such as Systems and Analyses. The definition is then instantiated using the
*DataSet() statement.
Refer to the MDL Language Reference online help for the correct syntax for the MDL
statements you choose to use.
The data members that you need to define in the dataset are:
• Starting time
• Mid time
• End time
• Force magnitude
As all the data members are real numbers, we will use *Real() to define them.
You can also define other types of members such as: integers, strings, options, or a
file (as applicable to your model).
2. Save the file in the working directory as dataset.mdl. Your file should look like
this:
*DefineDataSet(ds_def_force)
*Real(start_time, "Starting Time")
*Real(mid_time, "Mid Time")
*Real(end_time, "End Time")
*Real(force_magnitude, "Force Magnitude")
*EndDefine()
1. In a text editor, open the analysis definition file created in tutorial MV-1080. Include
the dataset definition in it by using the *Include() statement before the
*DefineAnalysis() statement.
2. Instantiate this dataset definition using the *DataSet() statement within the
*DefineAnalysis() block and after the *Attachment() statement.
where
− optional arguments are arguments that are passed as attachments (if any)
Instantiate the dataset by choosing a suitable variable name and label. The ds_def
should be the same as the variable of the dataset definition used in the
*DefineDataset() statement.
*DataSet(ds_force, “Force Data”, ds_def_force)
3. Set the default values of the data members in the dataset by using the *SetReal()
statement within the *DefineAnalysis() block.
where
− real_name is the variable name of the data member for which the value is
being set.
As the data member is a part of the dataset, the correct form of referring to the
variable name of the real entity is ds_name.real_name.
For example, the *SetReal() statement for start time would be:
*SetReal(ds_force.start_time, 0.3)
4. Set the default values of all the data members used in the dataset definition.
The expressions within the curly braces ({}) get processed by Templex in
MotionView and get evaluated to the appropriate values defined in the dataset.
*SetReal(ds_force.start_time, 0.3)
*SetReal(ds_force.mid_time, 0.31)
*SetReal(ds_force.end_time, 0.32)
*SetReal(ds_force.force_magnitude, 10)
7. Save the above work in a new analysis definition file named analysis_dataset.mdl.
2. Delete the existing analysis (if any) by right-clicking on the Analysis in the Project
Browser and clicking Delete.
4. From the Import/Export tab, import the new analysis definition file
analysis_dataset.mdl following similar steps used to import the analysis in the
earlier exercise (MV-1080).
5. From the Project Browser, expand the Datasets folder and select Force Data.
You will see the dataset with the Labels and Values for all of the members in the
dataset.
6. Change the Starting Time to 0.5, Mid Time to 0.55, End Time to 0.6 and the
Force Magnitude to 15.
8. Compare the Input Torque in the plot window with that of the earlier analysis.
You can now change the force parameters easily through the dataset graphical user
interface and re-run your analysis.
Forces acting on a flexible body may be an aerodynamic load, liquid pressure, a thermal
load, an electromagnetic force or any force generating mechanism that is spread out
over the flexible body, such as non-uniform damping or visco-elasticity. It may be even
a contact force between two bodies. These distributed loads can be conveniently
transformed from Nodal to Modal domain and represent as Modal Forces.
If we define as the mode shapes of the flexible body, and as the Nodal load
acting on the flexible body, the equivalent Modal load on the flexible body is defined
as:
Exercise:
In this exercise, you will create a flexible body of a Fore Canard of an aircraft with aero-
dynamic loads using Optistruct. Aero-dynamic loads for three operating positions of the
fore canard, namely -10 deg, 0 deg, and 10deg, considering an air speed of 200m/sec at
1 atm pressure are available from a CFD simulation using AcuSolve. A later section of
the exercise involves embedding this flexible body in the actuator mechanism model in
MotionSolve to estimate actuator loads required for the operation of fore canard.
− The HM file contains a meshed model of Fore Canard with material properties and
control cards defined.
Note Please note model units are Newton-Meter-KG-Sec, therefore all properties
defined are consistent with this unit system.
Average pressure distribution over the surface of canard is exported as text file from
AcuFieldView. This file contains the location and value of the pressure. The
AerodynamicLoad_0deg.csv, AerodynamicLoad_Negative10deg.csv, and
AerodynamicLoad_Positive10deg.csv files contain the pressure distribution
information for 0deg, -10 deg, and 10 deg of canard orientation respectively.
• Verify that the create radio button is selected and specify a new load collector
name as AerodynamicLoad_0deg.
• With drop-down menu for card image set as no card image, click on the
create button.
• Follow steps above to create the other two load collectors with names as
AerodynamicLoad_Negative10deg and AerodynamicLoad_Positive10deg.
• Click return.
Analysis page
Pressures panel
− Select entities from the drop-down menu to switch the surface selection type
from faces to elems.
− Upon selection of the above settings, you can select elements on which pressure
loads are applied and a CSV file for pressure load info.
Pressure loads for each position are created under their respective load collectors so
that you can scale them in MotionSolve with respect to the canard position. Create
a pressure load for 0deg by following the steps below.
• Left click on the Set Current Load Collector button located at the bottom.
Information bar at the bottom with current model, component, and load collector information
− Specify the elements from the Fore Canard collector by following the steps below:
• Select the Fore Canard collector from the component collector list and activate
the select button to return back to pressures panel.
− Select the 0 deg pressure info CSV file by following below steps:
− The selection of surface elements and the pressure info file is now complete. Click
on the create button to create pressure loads for the 0deg position.
− Follow the above steps to create pressure loads for -10deg and +10deg under the
respective load collectors AerodynamicLoad_Negative10deg and
AerodynamicLoad_Positive10deg.
Three load cases modeled in previous step represent nodal forces. These nodal
forces are transformed as modal forces using CMS method. In this step you modify
the existing CMSMETH card image to include three load sets.
Opening CMS load collector card image from browser context menu
− From the context menu select Card Edit to open the load collector card image.
CMS load collector card image dialog with method specified as Craig-Bampton (CB) and the number of
modes as 25
Observe that the Card Image shows an option to specify three load sets.
− Specify load collectors for three load sets by following the steps below:
• Click Return.
8. Generate flexbody.
Your model is now ready for solving to generate a flexbody. The two control cards
required to solve for flexbody creation are already specified in the model.
• Click on the DTI_UNITS button from the first page to review flexible body
units. Click Return.
Analysis Page
• Four bodies namely Fore Canard, Torque Arm, Piston, and Cylinder.
− The Piston force is measured from the Piston Motion using the expression
`MOTION({mot_0.idstring},{0},{4},{j_2.i.idstring})`.
Output requests
− Solve the model with the rigid Canard to review piston forces without aero-
dynamic loads.
• Invoke the Run panel by clicking the Run Solver button, , in the toolbar.
• Select the Simulation type as Quasi-static, the End time as 1 sec, and the
Print interval as 0.01.
• After the simulation is completed, click on the Animate button to view the
animation in HyperView.
Initial position 0 deg (meshed) and rotated position 10deg at 0.25 sec of simulation
• Click on the Plot button from the MotionView Run panel to load the
ForeCanard_withoutAeroloads.abf file in HyperGraph2D.
• Plot the Piston Force versus Fore Canard Angular Position by selecting the
below data in HyperGraph.
X Type Expression
X Component F2
Y Type Expression
Y Component F3
The piston forces in this case are due to the canard mass moment of inertia.
2. Return to MotionView and switch the rigid fore canard to a flexible body.
− Browse and select the Fore Canard body from Project browser.
Body panel
The aero-dynamic loads are estimated at three distinct positions of canard namely -
10 deg, 0deg, 10deg. We assume the each pressure load to linearly vary in interval
±10deg on a 0 to 1 scale. This variation of the aero-dynamic loads is achieved by
scaling Modal Forces with respect to canard angle using an expression.
• Specify the Label as Angle Measure and the Variable name as sv_ang.
• Click OK.
• From the Properties tab, specify the Type as Expression and enter
`RTOD({j_4.AZ})` for the Expression.
This creates an explicit variable that measures the Fore Canard angle.
− Add a ModalForce:
• Click OK.
• From the Connectivity tab, specify Fore Canard for the FlexBody.
Specifying flexbody
• From the Properties tab, specify the scaling type, expression, and load case
ID as shown below:
The product of the two STEP functions evaluates to gradually increasing the value of
the scale from 0 to 1 and then back to 0, while the canard angular position varies
from -10deg to 10 deg as shown in the expression below:
• Follow the steps above to create the remaining Modal Forces as specified
below:
1. Invoke the Run panel by clicking the Run Solver button, , in the toolbar.
3. Select the Simulation type as Quasi-static, the End time as 1 sec, and the Print
interval as 0.01.
5. After the simulation is completed, click on the Animate button to view the
animation in HyperView.
8. Under Result type, select Stress (t) and click Apply to view the stress contours.
9. Click on the Plot button from MotionView Run panel to load the
ForeCanard_withAeroloads.abf file in HyperGraph2D.
10. Plot the Piston Force versus Fore Canard Angular Position by selecting below data in
HyperGraph2D.
X Type Expression
X Component F2
Y Type Expression
Y Component F3
You can overlay the plots to observe the difference in piston forces with and without
aero-dynamic forces.
Overlay of results
Introduction
Starting in version 14.0, MotionSolve introduced a new form of flexible body referred as
Non Linear Finite Elements (NLFE). Unlike the conventional flexible body, where the
body is represented in a modal form, NLFE is modeled in a direct Finite Element form.
NLFE Formulation
MotionSolve uses Absolute Nodal Coordinate Formulation (ANCF) to model large
displacement and large deformation (NLFE) bodies. The absolute nodal coordinate
formulation[1] is developed based on finite element formulation and is designed for large
deformation multibody analysis. In the absolute nodal coordinate formulation, slopes and
displacements are used as the nodal coordinates instead of infinitesimal or finite
rotations.
ANCF uses the shape function matrix, together with the nodal coordinates to describe
arbitrary rigid body motion. For these reasons, the absolute nodal coordinate formulation
leads to a constant mass matrix in two- and three-dimensional cases. The constant mass
matrix simplifies the nonlinear equations of motion and, consequently, accelerates the
time integration of the nonlinear equations of motion.
Where,
The absolute nodal coordinate formulation has been applied to a wide variety of
challenging nonlinear dynamics problems that include belt drives, rotor blades, elastic
cables, leaf springs, and tires.
Modeling non-linear behavior above the elasticity limit (like plastic deformation, strain
hardening, fracture etc.) is not supported. In the current version, MotionView supports
modeling of 1D line elements only (Beam and Cable elements). Beam elements can
have 18 types of cross-sections and the dimensions of the cross-section can be changed
linearly in the axial direction. Beam elements can resist axial, shear, torsion and bending
loads. The Cable element maintains a constant cross-section, thus it can resist only
axial and bending loads.
Exercise 1
In this exercise, you will model a 1m long cantilever beam with a cross-section
dimension of 110mmx14mm to perform a bending test and compare it with an analytical
solution.
The following table lists the various tabs available in the NLFE Body panel:
− Type: Beam
− dim1: 14.0
− dim2: 110.0
The panel also displays the image of the cross-section indicating what the different
dimensions (dim1 and dim2) refer to.
Note The Properties tab has two sub-tabs called Start and End. These sub-
tabs are used to set the dimensions at two different ends of the beam. By
default, the End dimensions are parametrically equated to the Start
dimensions. If a different set of dimensions are provided at the start and
end, the cross section varies linearly along the length of the beam.
9. Click on the Manage Materials button located in the upper right corner of the
Properties tab.
Note The Material Properties dialog can also be accessed from the Model menu.
MotionView provides a list of commonly used Linear Elastic, as well as Hyper Elastic
material by default.
11. Review the property values and notice that the Elastic line check box for Approach
is selected.
The default standard materials provided are defined with the Elastic Line option
checked on. Materials without the Elastic Line are solved using the continuous
mechanics approach, where in the cross-section deformation is taken into
consideration. The Elastic Line approach ignores cross-section deformation effects,
which gives results closer to an analytical solution.
13. From the Connectivity tab, define the beam centerline by importing point data
from a CSV file. Click on the Import Points button located in upper right corner.
14. Browse and select the centerline.csv file from your working directory.
The .csv file must be in the following format: the first column must hold the X-
coordinates, the second column the Y-coordinates, and the third column the Z-
coordinates. There can also be a header row that begins with a # indicating a
commented line.
16. Fit the model (by hitting 'F' on the the keyboard) to view the NLFE Body that was
created.
17. Click on the Orientation tab to review the Start and End orientations.
Note The Orientation tab is used to set the cross section orientation (YZ plane
of the beam). Use the XY Plane or XZ Plane option to position the Y or the
Z-axis (the remaining axis will be positioned so that it is orthonormal to the
remaining two axes).
19. Click on Initial Conditions tab to review the NLFEBody initial velocities.
Note Each grid on an NLFE body has 12 DOFs: 3 translational, 3 rotational, and
6 related to the length and angle between the gradient vectors. Using a
fixed joint constrains the positions of the grid and the rigid body rotations.
However, the gradients at the grid are free. This means that the cross-
section at the fixed joint can twist about the grid and also deform based on
Poisson’s ratio. To arrest these DOFs, an NLFE element called “CONN0” can
be used.
2. Create a load at the cantilever beam end point (Point_11) as specified in the table
below:
3. From the Trans Properties tab, specify the expression for force as ` -1000*time`.
Note Negative value is specified to apply load along negative Z-axis direction.
Where,
= Load (N)
= Beam length = 1000mm
= Youngs Modulus = 2.1e+05 N/mm2
3. Add an output request Load to measure the magnitude of the applied Load.
1. Invoke the Run panel by clicking on the Run Solver button on the toolbar.
3. Select the Simulation type as Quasi-static, the end time as 1 sec, and the Print
interval as 0.01.
5. After the simulation is completed, click on the Animate button to view the
animation in HyperView.
6. Click the Start/Pause Animation icon, , on the Animation toolbar to start the
animation.
7. Click the Plot button in the MotionView Run panel to load the .abf file in
HyperGraph.
8. Plot Deflection vs Load calculated from linear elasticity theory and NLFE by selecting
the data below in HyperGraph.
X Component FZ
Y Type Expression
Y Component F2 & F3
10. Rename the two curves as Analytical and NLFE as shown below:
It can be observed from the plot that the NLFE and Analytical curves almost overlap.
12. Click on the Contour button on the toolbar to activate the Contour panel.
13. Under Result type, select NLFE Stress (t) and XX.
Similarly, you can view Displacement, Strain, etc. for an NLFE body in HyperView.
All FE contours and types are available in HyperView for an NLFE body.
− Density ( ): 1.1e-6
5. Click Close.
2. Create 9 intermediate points between the above points using the Create Points Along a
Vector macro.
3. Right-click on the Body icon in the Model-Reference toolbar. Add a new NLFE
body with the Label as Rubber Strip and the Variable name as
nlfeb_rubber_yeoh.
− Type as Beam
− Cross-section as Bar
− dim1 = 2
− dim2 = 25
− Activate the first Point collector and select the point Rubber End 1.
− Select the next available intermediate points one by one into other collectors, with
the last point being Rubber End 2.
− Expression: `50*time`
Motion expression
4. Go to the Solver Gravity dataset and change the Gravity option to Off.
5. Click the Save Model icon on the Standard toolbar and save your model as
rubber_strip.mdl in your <working directory>.
Engineering Strain =
Engineering Stress =
1. Add an Output of the Type Expressions with the Label as Eng strain(F2),
Eng Stress (F3) and the expressions as shown below:
− F2: `(DM({j_trans.i.idstring},{j_fix.i.idstring})-50)/50`
− F3: `MOTION({mot_axial.idstring},{0},{2},{0})/50`
Output requests
Note In the above expression F2, the solver function DM() measures the distance
magnitude between two markers; the I marker of the Translation Joint
and the I marker of the Fix Joint. Expression F3 uses the solver function
MOTION() which measures the reaction force due to the imposed motion
Axial Motion.
3. Select the Simulation type as Transient; the End time: 4, and the Print
interval: 0.01.
4. Click Run.
5. As the solver is executing, a warning message similar to the one shown below may
be displayed:
WARNING: Maximum vonMises strain exceeded maximum strain (YS) specified
for NLFE element BEAM12 (id=20000000) on Body_Flexible (id=30102) at
time=1.183E+00
Maximum strain Computed : 2.015E+00
Maximum strain Specified: 2.000E+00
Future warning for yield strain violation suppressed.
This message states that the maximum vonMises strain in your NLFE component
exceeded what was specified (2.0) at time 1.18s. This message lets you know if
your component is deforming more than what you would expect it to, which allows
you to inspect your results and make corrections in modeling your system if
required.
8. Go to the Contour panel and select NLFE Stress (t), XX, and click Apply.
Stress contour
9. Return to MotionView Run panel and click on Plot button to load the .abf file in
HyperGraph.
10. Plot Engineering Stress vs Engineering Strain by selecting the data below in
HyperGraph.
X Type Expression
X Component F2
Y Type Expression
Y Component F3
Note The animation shows the true stress due to cross-section deformation.
References:
1. Helical Spring
2. Stabilizer Bar
3. Belt-Pulley
• The spring component is added as a body, which means the mass and inertia of
the spring is included in the model.
• The dynamics induced by the mass of the spring can be modeled and simulated
(for example, surge in springs).
• If the deformations in the model are likely to go beyond the linear assumptions,
NLFE will account for it.
• Stress strain and deformation contours can be visualized.
• Coil-to-coil clash is modeled automatically.
Exercise
Copy the CamFollower_stg1.mdl and CamProfile.h3d files, located in the
mbd_modeling\nlfe\helicalspring folder, to your <working directory>.
3. Review the model. From the Project Browser the following can be seen - the
Model is organized using a CamFollower system which contains:
• A Cam, Follower, Joints, Graphics, and a Spring which make the complete
topology.
• The spring with a pre-load is acting between the Follower and Ground Body.
4. Click on the Run Solver toolbar icon , and Run the model with the settings as
shown in the Run panel image below. This will be the initial run which will be used
to compare the results with the NLFE spring model.
The coil spring will now be replaced with an NLFE Helical Spring component in the next
section.
2. An NLFE spring will be added between Ground Body on the top and Follower at
the bottom. The corresponding points that will be used are: Spring_top_relaxed
and Spring_bottom.
3. Add an NLFE Helical Spring Subsystem by clicking the NLFE Helical Spring
Note This toolbar may not be turned on by default. From the View menu, select
Toolbars > MotionView and then click on the toolbar name to turn the
display on/off.
5. Double click on the parent System collector to bring up the model tree. Select
CamFollower as the parent system.
7. Fill in the spring parameters and details for label and varnames as shown below and
click on OK in the dialog.
Spring parameters
Additional parameters
Label Specify label prefix for the spring profile Point Spring
points created.
Note These parameters have been chosen for the following reasons:
• The stiffness of the coil spring being replaced is: 14.6 N/mm.
• Substituting the values from the table above in the equation and using
Steel with 80769 N/mm2 for material:
Completed dialog
8. The spring will be added between the Follower and Ground Body.
The spring overshoots the upper plate as shown above. This is because the spring
has been created with no pre-load on it.
9. Review the NLFE Spring systems added. The following entities are available in the
System:
• An NLFE Spring.
• DataSet with spring parameters that were used to create the spring.
10. Next, the pre-loaded positions for the spring will be added. To do this,
− Go to the Connectivity tab. In this tab there is a View drop-down menu with
two options available: No Load and Loaded. The No Load view shows the
unloaded positions of the spring.
− Select the Loaded option. In this view the Import Loaded Profile button can be
used to browse a .csv file containing the pre-loaded positions and gradients of the
spring.
− Click on the Import Loaded Profile button to invoke the Import Loaded Points
Information From File dialog.
− Browse the file PreLoaded_positions.csv from the working directory and click
OK to import the loaded positions.
The spring will be displayed in wireframe and solid. The one in wireframe is the
No Load position (free/relaxed configuration) and the solid representation is that
of pre-loaded spring.
Note Refer to the Appendix in the NLFE Body Panel – Connectivity Tab topic
to learn how you can generate a preloaded position CSV file.
11. The pre-loaded positions can be viewed using the expansion button in the
panel.
12. The fixed joints created by the NLFEHelicalSpring Component utility will be at the
free positions. You need to move one of these to the pre-loaded positions.
Inspecting the spring positions reveals that the spring is compressed at the top
while the bottom position is the same in both the configurations.
13. Change the origin point of the joint Spring_toUpperBody_att in the NLFE Helical
Spring 0 system from Spring_top_relaxed to Spring_top (in the parent
CamFollower system).
1. To solve the model, invoke the Run panel using the Run Solver button in the
toolbar.
2. Assign a name for the .xml file and click on the Run button.
3. After the simulation is completed, click on the Animate button to view the
animation in HyperView.
6. Click the Contour icon on the toolbar to activate the Contour panel.
7. Under Result type: select NLFE Stress (t), Averaging method: Simple, and
click Apply to view stress contours.
Contours in HyperView
Similarly, you can view Displacement, Strain, etc. for an NLFE body in HyperView.
All FE contours and types are available for an NLFE body.
3. Split the window into two using the Page Window Layout button on the
toolbar.
4. In the left window open the .abf file corresponding to the solver run with the
original spring (created in Step 1), make the selections shown below and click
Apply.
X Type Time
Y Component DY
5. Select the right window, make the following selections and click Apply.
X Type Time
Y Component FY
6. Select the left window, browse to the .abf file of NLFE results and plot the
corresponding displacement.
7. Select the right window, make selections as shown below and click Apply.
X Type Time
Y Request REQ/70000002
Spring_toLowerBody_att(ForcesOnFollower)
Y Component FY
8. Apply axis labels and formatting as appropriate. The comparison is shown below:
Upon closer inspection there are some differences in the results, especially in the
Spring Forces. These could be attributed to the following reasons:
• The difference in force outputs is particularly seen when the spring displacement
is high. This is the point where the coil-to-coil contact happens. During this
event, the effective number of coils reduces, thus increasing the spring stiffness
marginally and hence the force outputs.
MotionSolve is commonly used for performing system level simulation. Simulations are
commonly performed to understand how well a specific design performs. Often a goal for
such simulations is to find the right set of design parameters that permit the system to
perform its intended functions in some optimal way.
Commonly used design variables are the location and orientation of various connectors
and their force characteristics. Occasionally the mass and material properties of some
bodies are also included as design variables. The system behavior is normally
characterized with a set of response variables. So, the goal of simulations often is to find
the values of these design variables such that the response variables attain a desired set
of values.
In the past such analysis has been done using techniques such as Monte Carlo
simulations and design of experiments. These methods work quite well, but they are
computationally intensive and require large sets of simulations.
Though not as general as the statistical methods, optimization with design sensitivity is
significantly faster and is the preferred solution in many instances.
In this tutorial you will learn how to setup an optimization problem using MotionView’s
Optimization Wizard. You will learn about:
Introduction
Two springs are connected in series. The stiffness of spring-1 is k1 and that of spring-2
is k2. One end of spring-1 is fixed to ground while a force, P1, acts at the other end.
Spring-2 is subjected to a force of P2 at the other end.
The objective of the analysis is to determine the sensitivities of stiffnesses of the springs
to displacements u1 and u2 and use them to identify or tune k1 and k2 of the system to
achieve specific values of u1 and u2.
The figure below shows the problem setup. Properties used in the problem are also
given.
Displacement:
u0 = 0 (Fixed)
Force:
P1 = 1 N
P2 = 2 N
Stiffness:
k1 = 2 N/mm
k2 = 3 N/mm
Model Setup
Copy the file mv_3020_initial_two_springs.mdl located in the
mbd_modeling\motionsolve\optimization\MV-3020 into your <working directory>.
The wizard consists of an Optimization Study pane that guides the user through
each step of solving an optimization problem with MotionSolve. The wizard opens
with the Design Variables page active that enables the selection of design
variables.
3. Under Design Variables, click on the Springs tab. Two SpringDampers will be
listed:
a. K1_SpringDamper
b. K2_SpringDamper
Expand the two springs by clicking on ‘+’ button, the data members that can be
made designable are displayed as in the figure below.
Using the ‘Ctrl’ button, select the k (stiffness) data members of both the springs.
Click the Add button available at the bottom of the model tree.
The stiffness of SpringDampers are added as design variables with default upper and
lower bound. The default value used by MotionView for calculating bounds is 10% of
nominal value.
Note The number within parenthesis of the designable entities tab at the top
(Springs(2) in this case) indicates the number of design variables defined of
that entity type.
Defining design variables is now complete and we can move to the Response Variables.
Adding response1 – u1
The ResponseVariable is added and appears in the list. The panel also appears.
2. In the panel, change the Response Type to Generic using the combo box.
where:
Note During optimization, the optimizer tries to minimize the entire expression
and as the value of DM({b_0.cm.id},{m_0.id}) approaches 3, the value of
this response is minimized.
5. Check on the Use derivative check box. When checked, the computed value of the
expression at the last time step of the simulation is used as the response.
6. Follow the same procedure from the steps above to add another ResponseVariable
u2 of the type Generic. The response expression is: `(1-
DM({b_1.cm.id},{m_1.id})/4)**2`.
Adding Responses is now complete. Next, we can proceed to setup objectives and
constraints and solve the model.
1. Go to the Goals page. This page has two sections: Objectives and Constraints.
− Change the Weight to 1000 and retain the Type as Min since we want to
minimize this response.
3. Repeat the above step to add another objective. rv_u2 is automatically chosen.
Change the Weight as 1000 and retain the Type as Min since we want to minimize
this response as well.
Defining objectives
There are no constraints in this problem. The model setup is now complete, and it is
ready to run.
2. Click on the Optimization Settings button. In the Optimizer Settings dialog that
appears, change Accuracy to 1.0e-5.
3. The rest of the parameters can be retained with the default values. Close the
dialog.
While the optimization is running, a plot of total weighted cost vs. iteration number
and a plot of individual cost vs. iteration number are displayed in a separate window
(after the initial simulation).
Note - you may have to scroll down to the end and/or to the right to see results of the
optimization.
A. Optimizer settings
C. Results from optimization - Initial cost, final cost and percentage reduction in cost
Step 5: Post-processing
MotionView provides the ability to list, plot and animate results of optimization. It also
provides capability to export mdl model corresponding to any design iteration.
1. Go to the Review Results page. The Summary tab appears that lists the history of
design variables, responses and objective functions in a tabular format for each
iteration of optimization run. \
Note MotionSolve uses SLSQP algorithm for optimization. Hence the last
iteration is usually the optimum configuration with least value of cost
function. See the figure below.
Summary tab listing cost function (objective), response variables and design variables
2. Select the Plot tab. It helps to visualize variation of design variables, response
variables and cost function using graphs. Users can choose to plot any number of
variables along y-axis with respect to a variable along x-axis.
3. Select Iteration from the X list and select Overall Objective from the Y list. Click
Apply.
Note Multiple items can be selected and plotted from the Y list.
4. Select the Animation tab to animate the configuration generated during any
iteration.
5. Load the result file from the last iteration (iteration 16).
− Clicking on ‘Play’ ( ). Since this is a static analysis, the animation has only one
frame.
6. The Archive Model location is available in this tab to export the model in MDL
format from any iteration.
− Choose a path.
− Click on Export button to create an archive folder which contains an MDL and all
other reference files (if any) to run the model. The design variable values are set
to the values in the iteration number chosen.
In this tutorial you will learn how to setup an optimization problem using MotionView’s
Optimization Wizard for an impact absorber. You will learn about:
Introduction
An impact absorber is modeled as a single degree of freedom system with a mass m, a
linear stiffness k and a linear damping coefficient c. The velocity of the mass is 1 m/s;
Mass m = 1 kg and a transient analysis end time of 12 seconds is used.
The objective of the optimization is to minimize the maximum acceleration of the mass
in the time interval 0 to 12s subject to the condition that the maximum displacement is
less than 1m. In order to achieve this, stiffness k and damping ratio c are modeled as
design variables. MotionSolve's FD (Finite Differencing) capability is used to calculate
sensitivities.
Model Setup
Copy the file mv_3021_initial_impact_absorber.mdl located in the
mbd_modeling\motionsolve\optimization\MV-3021 into your <working directory>.
5. Modify the upper and lower bounds of the design variables using the table below.
The Label and Variable Names can be retained as default in the the dialog.
4. Once the response variable is created, under Response Type, choose MaxVal.
For Response Expression, enter in the expression for the absolute value of ACCZ
of CM of mass: `ABS(ACCZ({b_0.cm.id},{m_0.id}))`
This completes the creation of the first response. The Response Variable should look as
below:
5. Follow the same procedure to add another ‘MaxVal’ response, and use:
`ABS(DZ({b_0.cm.id},{m_0.id}))` for the Response Expression.
This completes the process of adding Response Variables; the completed ‘Response
Variable’ page should appear as shown below.
2. Choose the weight as 1.0 and retain the Type as min since we want to minimize
this response.
4. Retain the sign as '<=' and type in 1.0 for value, since we want to keep the value of
'rv_1' to be less than 1.0.
The objective and constraint are now defined, and the model is ready to be solved.
AUTO can also be selected. When AUTO is chosen, MotionSolve will detect the
simulation type and choose the best approach to compute sensitivity. The simulation
type is dynamic, so FD will be chosen.
Solution settings
While the optimization is running, a plot of total weighted cost vs. iteration number
and constraint value is displayed in a separate window.
Once the optimization process is complete, the text window in the Solution page
displays the optimized design variables values, final value of the responses and
optimized cost function.
Step 5: Post-processing
1. Go to the Review Results page. The Summary tab is displayed with lists of values
for design variables, responses and objective being tabulated iteration-wise. For this
tutorial, the optimized design variables are from the last iteration 5.
Summary tab listing design variables, responses and cost function iteration-wise
2. Select the Plot tab to visualize variation of design variables, response variables and
cost function using graphs.
Plot of overall objective vs. iteration number. The button on the page helps you to save the plots in
PNG format.
8. Click on the Export button. An archive folder is created which contains all files
necessary to open/run/optimize the model. The design variable values are set to the
values in the iteration number chosen.
In this tutorial you will learn how to setup an optimization problem using MotionView’s
Optimization Wizard for a 4-bar model. You will learn about:
Introduction
In this tutorial, the locations of the joints of a 4-bar mechanism are optimized to obtain
a desired motion of the coupler. MotionSolve's DSA (Design Sensitivity Analysis)
capability is used to calculate sensitivities.
The entire model is parameterized in terms of these four design points: A, B, C and D.
Since the model operates in 2D space (X-Y plane), this leads to 8 Design Variables. The
initial design is listed as follows:
Point X Y
A -45 45
B 65 260
C 300 500
D 515 -85
Model Setup
Copy the file mv_3022_initial_4bar_opt.mdl located in the
mbd_modeling\motionsolve\optimization\MV-3022 into your <working directory>.
2. The model has the following set up to measure the desired motion and the actual
motion of the coupler CM marker. Please review these entities in the model.
a. Curves Desired Coupler Path DX and Desired Coupler Path DY that defines
the desired motion in X and Y direction.
b. Output Desired Coupler Trajectory uses the above curves to measure the
desired motion.
c. Click OK.
d. Select Point A, Point B, Point C and Point D in the model tree and click Add.
4. Modify the upper and lower bounds of the design variables as listed in the table
below.
Point B(DV) - X 20 80
a) Trajectory of Coupler CM – DX
b) Trajectory of Coupler CM – DY
The above curves of the coupler motion must be matched with their respective target
curves using a response variable of type Root Mean Square Deviation (RMS2). The
details of this response can be obtained from the Multibody Optimization User’s Guide
and the MotionView User’s Guide.
5. Once the response variable is created, under Response Type, choose Root Mean
Square Deviation.
6. Double click on the Curve collector and choose Desired Coupler Path DX through
the model tree for Desired Curve. This is the target curve for Couple-DX.
Note The desired curve can be visualized by clicking the Show Desired Curve
button.
8. Following the same procedure, add one more Root Mean Square Deviation
response and fill in the details using the table below.
This completes the process of adding response variables; the completed Responses
page should appear as shown below.
We can use the responses that were created in the previous section as objectives.
3. Choose Weight as 1.0 and retain the Type as min since we want to minimize this
response.
4. Repeat the step above to add another objective. Choose rv_rms2_dy for the
second objective.
Defining objectives
Once the optimization process is complete, the text window displays the optimized
design variables values, final value of the responses and optimized cost function.
p_0.x 0 -0.0660
p_0.y 0 -0.2796
p_1.x 40 39.97
p_3.y 0 -0.0406
Step 6: Post-processing
1. Go to the Review Results page which is enabled once the solution is finished.
2. The Summary tab lists the history of design variables, responses and objective
functions in a tabular format. In this tutorial, the optimized design variables are
from iteration 27.
Summary tab listing design variables, responses and cost function iteration-wise
3. The Plot tab helps to visualize variation of design variables, response variables and
cost function using graphs. You can choose to plot any number of variables along
the y-axis with respect to a variable along the x-axis. For this tutorial, choose
Overall Objective vs Iteration and you should get a plot as shown below:
4. You can also see how a particular design variable varied across an iteration. For
example, select p_b.x(Point B-X) in the Y list and click Apply.
5. The Animation tab helps you to animate the configuration generated during any
iteration.
c. Start, pause and stop animation buttons are provided at the bottom.
For this problem, load the animation file from the last iteration (iteration 27) and
animate the configuration.
6. The Export option is available in this tab for you to export an archive of the model
from any configuration.
For this tutorial, we would want to create an mdl model for the optimized
configuration.
c. Click on Export.
7. Finally, we will look at how the path of the coupler for the optimized result compare
with the desired target path.
b. Add a page to the MotionView session and change the client of the newly added
page to HyperGraph.
c. Open the abf file in the last iteration folder of the optimization run.
Note The optimization run directory is automatically created during the solution
and follows the naming convention py_name_timestamp where py_name is
the name of the python file given in the Solution page and timestamp is
the time when the solution was initiated.
Click Apply. This plots the desired profile of the trajectory for the coupler CM.
Next, plot the actual trajectory of the coupler CM by plotting the following:
To demonstrate how the optimizer recovers in this tutorial, we will change the initial
design and see how it works.
1. Go back to the Design Variables page and change the nominal value, upper and
lower bound as follows:
The four bar mechanism should look like below after the change:
Retain the Responses, Objectives and Constraints as defined in Step 2 and 3 above.
In this example, the optimizer has found infeasible design in iteration 2-7; it is then
told to reduce the step size until a feasible design is found.
3. Check the output files. In most cases, the output files could tell you why solver fails
at a specific point and how you can avoid it if possible.
We have found that the h3d file and log file are useful in most cases. We will load the
h3d file in this example in HyperView and see what is going wrong.
5. Check the result. The result we get here is very close to what we get in STEP 5 and
the cost function is reduced significantly. This shows that we are able to get the
optimal design even with infeasible design encountered in the intermediate step.
However, the optimality is not guaranteed in some cases. When that happens, you
can improve the result by adding proper constraints based on your investigation in
previous steps. For four bar mechanism, Grashof constraints can be added and we
provide an example that shows you how to do it in MotionView.
Introduction
In this tutorial, you will reproduce the suspension optimization problem in MV-3010
(Optimization using MotionView - HyperStudy). The location (y and z coordinates) of
both inner tie-rod ball joint and outer tie-rod ball joint are changed so that the toe vs.
ride height curve matchs a given desired target curve.
‘Toe-ride height’ curve of initial design, optimized design and target design
You can compare the difference between MotionSolve optimization and MotionView +
HyperStudy optimization and learn the benefits of each method.
Model Setup
Copy the file mv_3023_initial_susp_opt.mdl and target_toe.csv located in the
mbd_modeling\motionsolve\optimization\MV-3023 into your <working directory>.
4. Make the y and z coordinates of inner tie-rod ball joint and outer tie-rod ball joint
designable.
a. Go to point Otr tierod ball jt - left under the Frnt SLA susp (1 pc LCA)
system. Expand the data member of it and select y and z. Click Add.
b. Similarily, add y and z data members of point Inr tierod ball - left under the
Parallel steering system.
c. Change the upper and lower bound of Dvs based on the table below.
The optimization wizard should look like the following image after creating design variables:
2. In the response variable panel that appears choose Response Type, Root Mean
Square Deviation.
This completes the creation of the response. The user interface should appear as shown
below.
The problem has only one objective: matching the toe-ride height curve with the target
design.
We can add responses that have been created in the previous section as objectives.
1. Go to the Goals page. There are two sections: Objectives and Constraints.
Defining objectives
Solution Settings
Step 5: Post-processing
1. Once the optimization process is complete, review the result by clicking on Review
Results page. The summary window should look like the following:
2. You can also review the plots and animation by going to the Plot and Animation
pages as we demonstrated in previous tutorials. For this optimization, it is
worthwhile to plot the toe – ride height curve for different iterations and see how the
curve approaches the target one.
d) In the plotting panel, change the ‘type’, ‘request’ and ‘component’ of both x and
y as follows:
3. Next, go to the subfolder initial design and load the mrf file in it.
5. Click Apply and you should see a convex curve representing the ‘toe-ride height’ of
the initial design.
7. Import the mrf file and plot the curve with the same setting.
8. The ‘toe-ride height’ curve of optimized design overlaps with the target curve.
The Load Export utility allows you to bridge the gap between Multi-Body Dynamics
(MBD) analysis and Finite Element (FE) analysis using MotionView by:
• Identifying and summarizing all loads acting on one/multiple body(ies) for any
given time step(s) in a tabular format.
• Identifying and transferring all the forces and moments for one component at any
given time step(s) to a NASTRAN input deck that contains GRID, CORD, FORCE,
and MOMENT cards.
• Editing the MDL model file to add force output requests on body(ies).
When performing the MS/ADAMS solver run on the MotionView model, you will get a
metadata file (an ASCII file written out from MotionView that contains information
about force output on a body).
This file along with the solver output files viz. MS (*.plt) or ADAMS (*.req) become the
input files for this utility. The application scope of this utility is shown in the figure
below:
Interaction diagram
4. Right-click on The Model in the Project Browser and select Add General MDL
Entity > Output, or right-click the Outputs icon, , on the Model-General
toolbar.
6. Use the drop-down menu to change the Output type from the default
Displacement to Force.
9. In the Frnt macpherson susp system folder, expand the Bodies folder and select
the body Lwr control arm – left. (or you can pick the Lwr Control arm - left
directly from the model in the graphics area by clicking the Body collector once).
10. Repeat steps 4 through 9 to create an output force request on Lwr control arm –
right.
13. Save the solver input file as load_export.xml, to the <working directory>.
2. From the Load Export panel, open the file load_export.meta, located in <working
directory>.
All bodies for which force outputs are requested are displayed in a tree structure in
the Body Selection panel. You can select one or multiple bodies from the tree. In
this step select the body Lwr control arm-left.
3. Expand the sys_frnt_susp folder and select the body Lwr control arm – left.
All the forces acting on the lwr control arm – left are displayed in the Force
Selection panel. You can choose any number of loads acting on the body. Only the
loads selected by you are exported by the utility.
5. The Time Selection panel allows you to enter/select the time steps for which the
loads are to be exported.
7. The current simulation runs from 0 to 2 seconds. Specify a Minimum Time Step
Value of 1 and a Maximum Time Step Value of 2.
8. Click Apply.
Note After time step input, you must click the Apply button to verify the validity
of the time steps. If a time step entered is not present in the ADAMS
request file, an error message is generated and you must make appropriate
corrections.
11. Select OPTISTRUCT/NASTRAN [1] by using the radio button under the Export
panel.
Nastran options
12. Click Nastran Options [2] to launch the Nastran Export Panel.
This dialog allows you to enter the Nastran node ID numbers in the second column
of the table.
− the reference frame (LPRF/Global) in which the GRID cards are written
− whether or not to explicitly output the CORD1R card in the Nastran input deck
(Yes/No)
This creates a subcase file, in addition to the Nastran input deck, in the same
directory as the .dat file.
19. Repeat steps 3 through 18 to export the loads on the Lwr control arm – right.
Note In point 2 above, if you select multiple bodies, the Nastran Export Panel will
look as shown below:
• Convert results from a multi-body simulation run into file formats which can be
used for fatigue analysis using a tool like NCode
• Write a fatigue analysis file from the MotionView animation window (HyperView)
Tools
The following functionalities are used in this tutorial: Fatigue Prep, Flex File Gen, and
build plots.
The Flex File Gen feature allows you to create an .flx file using the Flex File Gen
tool. This file references a .gra file (rigid body graphics), a .res file (flex and rigid body
results), and .H3D files (flexbody graphics). These files are required to animate ADAMS
results that contain flexbodies. The .flx file can be loaded directly into the animation
window.
The form shown above, describes the set of file translations possible using the
Fatigue Prep wizard.
5. Click Next.
8. Click Finish.
The Altair flexible body pre-processor is launched and the FES file is created in your
working directory.
Using the Fatigue Prep wizard, you can convert your results files to .fes, .asc or
.dac files. You can use these files for fatigue and durability analysis in Ncode’s FE-
Fatigue software.
5. Click Next.
6. Click the file browser button attached to Select req file and select indy.req from
the durability_fatigue folder.
Note The DAC file format does not support unequal time steps since only
frequency is specified, not each time step. Therefore your REQ file needs to
have equal output time steps.
7. Click on the file browser attached to Select DAC file and specify indy.dac as an
output filename in <working directory>\.
Once you select Displacement, Y requests and Y components will populate the text
boxes.
Note You can select any number of Y requests and Y components for REQ2DAC
conversion.
13. From the Build Plots panel, load the file indy_D_997000_X.dac from <working
directory>\.
You may plot the corresponding request from the original REQ file for comparison.
This dialog lists the files you will need for this conversion.
4. Using the Save the *flx file as file browser, select your destination file to be
<working-dir>\sla_flex.
5. In the Number of FlexBodies field, enter 2 since this model includes two lower
control arms as flexible bodies.
6. From the Select model source (*.gra) file browser, select the sla_flex.gra file
located in the durability_fatigue folder.
7. From the Select result source (ASCII *.res) file browser, select the
sla_flex.res file located in the durability_fatigue folder.
8. Using the first file browser under Select flexible body source (*.h3d), select the
sla_flex.h3d file located in the durability_fatigue folder.
9. Using the second file browser under Select Flexible Body Source (*.h3d), select
the sla_flex_m.h3d file located in the durability_fatigue folder.
10. Under ID: field, enter 10404 and 20404 for the two h3ds, respectively.
These values should correspond to the actual IDs of the flexible bodies in the ADM
input deck of the ADAMS solver.
The deformation of these flexible bodies during animation can be scaled using the
Def. Scale field. In this case, accept the default value of 1.000.
The translator is launched and the resulting FLX file is created in the destination
directory.
12. Select the TextView window from the Select application list.
13. Click the arrow next to the Open Session icon, , on the Standard toolbar and
select Open Document .
Note To load transients results for selected time intervals check the Optional flx
statements check-box to enter the Start Time, End Time and
Increment.
To load selected mode shapes from modal animation files for models with
one or more flexible bodies, check the Optional flx statements for linear
analysis check-box to enter the Start Mode and End Mode.
Additional statements are inserted in the FLX file reflecting the above
mentioned parameters.
2. Use the Open drop-down menu on the Standard toolbar (click the arrow next to
3. Use the Load model file browser to select the file, sla_flex.flx that you just
created. The Load result field automatically populates with the same file name.
4. Click Apply.
Observe the animating model, which is a combination of rigid multi-bodies and two
flexible lower control arms.
7. Choose different options from the Result Type drop down menu, to view the
various results available in the analysis result files.
For a detailed description of writing a fatigue analysis file from here, refer to the Fatigue
Manager topic in the HyperView User’s Guide.
Theory
This chapter deals with modal analysis of Multi-Body Dynamic (MBD) systems. This kind
of analysis gives insight about system stability. Vehicle dynamics engineers often use the
planar half-car model to analyze the ride quality of vehicles. You will use the
ADAMS/Linear simulation to do a modal analysis of this type of model.
Process
Using the MotionView interface, you can obtain modal results in two ways: using
MotionSolve and ADAMS/Linear. These two ways are illustrated in the flowcharts below:
3. From the Open Model dialog, locate and select the halfcar_lin.mdl file located in
mbd_modeling\externalcodes folder.
6. Click the Forms icon, , on the Model-General toolbar and select the Solution
Options form.
This ensures the ADAMS solver will first do a static analysis and then a linear modal
analysis on your model.
Complete the following steps only if you have connected the ADAMS solver
! to the Run button in the MotionView interface through the preferences file.
If ADAMS solver is not linked to MotionView, for the purpose of this tutorial,
go to Step 2: Viewing ADAMS/Linear Modal Results.
9. From the Script combo box, change the script to Altair Executable.
5. Click the Load model file browser and select the file halfcar_lin_adams.gra,
located in <Working directory>.
6. Click the Load results file browser and select the file halfcar_lin_adams.res,
located in <Working directory>.
7. Click Apply.
8. From the Results Browser, click on the arrow next to Time History Animation
and use the Change load case drop-down menu to set the load case to Mode
Animation @ Time = 0.000000.
9. The modes will automatically load and be displayed in the Simulation drop-down
menu (located directly under the Change load case drop-down menu).
13. Click the Start/Pause Animation icon again, , to stop transient animation.
Note To visualize a single mode while using the ADAMS/Solver, the Modal icon is
15. Click the Page Layout icon on the Page Controls toolbar and select a four-
window layout .
Note that the current window becomes one of the four windows.
18. Repeat steps 16 and 17 for the remaining windows (Note - the Edit menu can also
be used to copy and paste windows into the four-window layout), and then load
Simulation Modes 4, 5, and 6.
Notice that the animations signify the pitch and bounce modes of car
! vibrations. The "wheel hop" resonance can also be seen in this example.
Analyzing the above occurrences can help isolate vibrations by
appropriately designing car suspensions.
In this exercise, you will use this file to plot the model eigenvalues in the complex plane.
− Submit a model built in ADAMS directly to MotionSolve and post process the
results in MotionView.
− Build a model in MotionView, submit it to ADAMS solver and post process the
results using MotionView.
Exercise
2. Start a new MotionView session by selecting New > Session from the File menu.
OR
Note If the Import Solver Deck button is not visible, click on the Import drop-
down menu (the down arrow next to the icon) and select the Import
Solver Deck option.
5. From the Import Solver Deck dialog, use the Select file browser to locate and
select the .adm file.
6. Click Import.
The MotionView message log generates warning messages for all unsupported
ADAMS statements in your model. Unsupported ADAMS statements are stored in the
Unsupported Statements template. This template and its contents can be viewed
from the Templates panel on the MotionView toolbar.
Note adm is an input file for the solver. Due to this the model comes out flat and
there is no hierarchy. In addition, you would see many markers involved.
Now the model is in the MotionView domain. You can modify the model the way you
want and then run MotionSolve from the MotionView interface.
Copy the ADAMS input files quick_return.adm and quick_return.acf, located in the
externalcodes folder, to your current <working directory>.
1. Invoke MotionSolve.
3. Click on Run.
This would start a MotionSolve run in a command prompt. MotionSolve would run in
a batch mode. MotionSolve would read the information from the ADAMS command
file (*.acf) and ADAMS model data file (*.adm), generate the solver input file
(*.xml) then run it.
Note MotionSolve generates *.log file which holds information for the solver run. It is
always a good idea to go through the log file for detailed information.
1. Copy the file V_Engine.mdl, located in the externalcodes folder, to your current
<working directory>.
2. Invoke MotionView.
5. From the Project Browser, locate the Datasets folder and select Solution
Options as the dataset.
7. Right-click on ADAMS Model in the Project Browser and select Model > Add
General MDL Entity > Template, or click on Templates icon on the Model-
General toolbar, to add a template.
Note This is a very important feature when it comes to solver neutral modeling.
The statements written in this section are directly written to the solver
input deck. You can pass modeling entities to these templates. Please refer
to the template "Solution Option-ACF file" to understand how values from
datasets are passed to an acf file.
8. Add the following statement in the template: !The idstring for center of mass
maker for body 0 is {Model.b_0.cm.idstring}.
Note This is a comment and will not change the model. One needs to be
familiar with solver input file formats to use this feature.
9. From the File menu, select Export > Solver Deck. This saves the ADAMS input
files (*.adm/*.acf). You can then run the ADAMS solver using these files.
10. If the ADAMS solver is hooked to MotionView, click on the Run icon .
• MotionSolve
• ADAMS
• ABAQUS
MDL models can be exported to any of these solvers for analysis:
• User can change the solver mode and then export the model to the particular
solver.
• User can register a script to run a solver from within MotionView. Refer to the Tip
and Trick, "Start an ADAMS run from within MotionView" available on Altair’s
website.
• If the user needs to add any statement specific to the solver, Templex template
can be used in the model. Refer to tutorial MV-4010 for some more details about
the Templex template.
• The results from these solvers can be post processed in MotionView.
Copy the folder named solver_neutral, located in the mbd_modeling\externalcodes
folder, to your <working directory>.
Exercise
6. From the Main tab, specify your output filename as <working directory>\ms.xml.
8. Click Run.
10. From the Project Browser, under the Data Sets folder select Solution Options.
12. You can enter the simulation parameters for the ADAMS solver into this table.
Do not complete the following steps without connecting the ADAMS solver to the
!
RUN button.
For this tutorial, you can assume the ADAMS run is complete and go to
Step 2: Comparing Solver Animations.
15. From the Script combo box, select the script ADAMS Executable.
1. Click the Add Page icon, , on the Page Controls toolbar to add a new page to
your session.
3. Click the Page Layout, , icon on the toolbar and select the three horizontal
windows layout, .
4. Load the following model and results files into the three windows:
Window 1 Window 2
Notice that if the same solver parameters are chosen, the results from different
solvers are in-sync.
MotionView can write input decks for the Abaqus solver. Users can:
• Export Abaqus solver input deck (*.inp) for the rigid body model
• Replace a rigid body in the model with a ABAQUS substructure (flexible body)
and export ABAQUS solver input deck (*.inp)
• Replace a rigid body with ABAQUS inp (nodal FE component) file and export
ABAQUS solver input deck (*.inp)
Exercise
In the first step of the exercise, you will be creating an Abaqus substructure. The second
step involves the replacement of the rigid lower control arm with the Abaqus
substructure. In the third step you will run the solver, and in last step you will post
process the results.
It is assumed that you are familiar with flexible multi-body dynamics in Abaqus. Here is
a brief overview of the steps you would need to do in Abaqus to generate a
substructure:
This is just a sample deck. For detailed syntax you may have to look up Abaqus
documentation.
Note You have been provided with two inp files: carm_left.inp and carm_right.inp.
Use these files to generate the two substructure files (*.sup) for the left and
right lower control arms using Abaqus. These substructure files should be named
as carm_left.sup and carm_right.sup respectively.
The intermediate files (*.stt, *.mdl, *.prt) created by Abaqus during the
substructure generation analysis are required for reference during the MBD
system analysis. You will need to generate these files in Abaqus. The result files
(*.mrf, *.odb) which are needed for the post-processing step of this tutorial are
provided.
Once the substructure is generated you should be ready to integrate it in your MBD
model.
1. Start a new MotionView session and load the file sla_abaqus.mdl, located in
<working directory>.
3. From the Project Browser, under the Bodies folder select the Lwr control arm.
4. On the Properties tab for the LCA-Left, activate the Deformable check-box.
Notice that the graphics of the rigid body lower control arm vanishes.
Now you would need to specify a particular INP file that was used to create the
flexible body.
6. For Functional source, select the Use nodal FEA body option from the drop-down
menu.
7. Using the Graphic file browser, select carm_left.h3d from your working directory.
Properties tab
Note The file carm_left.h3d is the graphic file for the ‘lower control arm-left’
body. This file is for display and assists in allowing faster pre-processing.
The flexbody (or the INP file in this case) is used to provide data to the
solver. The graphic H3D file can be generate from the input (INP) file (or
CAD file) using the Import CAD or FE using HyperMesh option located in
the Tools menu in MotionView. In this exercise the graphic H3D files are
provided.
If the INP file is located in the same directory as the H3D graphic file, the
Inp file field would be populated automatically. Otherwise, one also has
the option of selecting the INP file from its respective location.
8. Click Nodes….
9. Click the Find ALL button on the Nodes dialog to find nodes on the flexible body
that are located closest to the interface points on the vehicle model. The vehicle
model is attached to the flexible body at these interface nodes.
Nodes dialog
Note In this case there is no offset between the flexible-body interface nodes and
their corresponding interface points on the vehicle model. But if there is an
offset you can use the Align button. When you click the Align button,
MotionView moves the connection point in the model to the node location
on the flexible body. If the offset is more than the tolerance value,
MotionView inserts a dummy body between the flexible body and the
nearest connection point. This affects any other entities that reference this
point.
You can attach joints to the flexible body only at the interface nodes. These
attachment nodes are created during your substructure generation analysis
in Abaqus. Creating more attachment points increases the actual number
of modes calculated, and may increase the CPU time.
11. Repeat steps 6 through 9 to integrate the right side flexible body carm_right.inp in
your model.
12. From the Tools menu, select Check Model to check your complete MBD model for
errors.
MotionView writes out the INP file for the whole MBD system. It is important that this
INP deck should contain the substructure path references for the model to run
successfully in Abaqus. The way to include these is via Templates in MotionView.
Templex templates can be used to export syntax directly to the solver input deck,
including parametric substitution if required.
1. From the Project Browser, under the Templates folder select the Abaqus output
template.
2. Click the expansion button, , on the panel and read through the template.
Note For the ABAQUS solver, the location of statements within the solver input
deck is important. The four keywords used in this template allow you to
position the extra text. These keywords must be the first line of the
Templex template. For additional assistance and information on these
keywords see the Exporting MDL models to ABAQUS topic in the online
help.
4. From the Project Browser, under the Data Sets folder select ABAQUS Solution
Options.
6. Save your model as an MDL file named sla_flex.mdl in the working directory.
Note You can run your model in ABAQUS at this stage. Select ABAQUS from the
SolverMode menu and click on the Run icon on the toolbar to display the
Run panel. Specify a file name for the inp file using the Save and run
current model option and check the Export MDL animation file check
box. Click on the Run button. MotionView will write the inp file and the
maf file (which will be used for animation). If the ABAQUS solver script is
linked to MotionView, the job will be submitted to ABAQUS.
1. Click the Add Page icon, , on the toolbar to add a new page to your session.
3. Load the sla_flex.maf and sla_flex.mrf as model and results files, respectively.
4. In the same window, again click the Load model file browser and select the
carm_left.odb file from your working directory.
6. Repeat the steps 4 and 5 to also overlay carm_right.odb file on the same model.
7. Use the Entity Attributes panel, , to turn off the graphics of the rigid control
arm.
Introduction
In this tutorial, you will learn how to:
Transient Transient animation displays the model in its time step positions as
calculated by the analysis code. Transient animation is used to
animate the transient response of a structure or multi-body system.
The tables below show the animation analysis types, mode settings, and the model and
results file types required to animate MotionSolve and Adams results.
Transient/Static/
Transient Rigid or Flexible Bodies H3D H3D
Quasi-Static
Transient/Static/
Transient Purely rigid GRA GRA
Quasi-Static
Transient/Static/
Transient One or more flexible bodies FLX FLX
Quasi-Static
Note Copy all of the h3d files located in the mbd_modeling\animation folder to your
<working directory>.
1. From the File menu, select New > Session to start a new session.
If a warning message is displayed, asking if you want to discard the current data,
click Yes to continue.
2. Click the Select application drop-down menu, , from the toolbar, and select
HyperView .
4. Click the file browser icon, , next to Load model and select the model file as
single_pendulum.h3d, located in your working directory.
5. The field for Load results will be automatically updated with the same path and
name.
6. Click Apply.
7. Click the XZ Left Plane View icon on the Standard Views toolbar to change to
the left view of the model.
8. Click the Start/Pause Animation icon, , on the Animation toolbar to start the
animation.
9. Right-click on the Fit Model/Fit All Frames icon on the Standard Views
toolbar to fit the entire animation in the window.
From this panel, you can control the parameters like speed, start time, end time of
the animation.
− Drag the vertical slider bar on the left to change the animation speed from fast to
slow.
− The Animate start and Animate end sliders can be set to restrict the animation
to a certain window in time. For example, moving the start slider to 0 and end
slider to 3.5 to restrict the animation to these time limits and covers only a partial
cycle of motion.
11. Click the Start/Pause Animation icon, , on the Animation toolbar to stop the
animation.
1. Retain the animation file single_pendulum.h3d that was loaded in Step 1 above.
2. To trace the pendulum motion, click the Tracing button, , on the toolbar.
Tracing panel
3. Under Trace select Component from the radio buttons on the left.
4. Pick the entity/component that needs to be traced by clicking on it from the graphics
window.
7. Animate the model. This displays the last 10 steps in the animation.
8. To turn the tracing off, click the Delete button to remove the selected components
from the tracing list.
10. Use the Display Options to change the line color and thickness.
1. Add a new page to the session by clicking on the Add page button, , on the
Page Controls toolbar.
3. To Track or fix any part of your model in the center of the animation window and to
see all the other parts moving with respect to the fixed part, click on the Tracking,
, button on the Results toolbar.
Tracking panel
4. Add a tracking system to the animation by clicking on the Add button under
Tracking Systems.
5. Under the Track pull down menu select Component and click on a part from the
model currently loaded.
7. Click the Start/Pause Animation icon, , on the Animation toolbar to start the
animation, and click the Start/Pause Animation icon again, , to stop the
animation.
1. Retain the model front_ride.h3d loaded in the previous exercise Step 3 above.
3. Click the arrow to the right of the Entity option menu to expand it.
The list contains the following entity types: Components, Systems, Assembly
Hierarchy, and Sets.
4. Select Assembly Hierarchy from this list to show all the parts of the model in the
entity list tree below.
− Select All from the list of buttons next to the entity list tree (All, None, Flip, and
Displayed).
− Select a color from the color palette under the Color section.
− Click All from the list of buttons next to the entity list tree.
− Click All from the list of buttons next to the entity list tree.
9. Use the On/Off buttons next to ID: to display and hide the entity IDs.
Introduction
In this tutorial, you will learn how to:
Copy all of the h3d files located in the mbd_modeling\animation folder to your <working
directory>.
3. Load the MotionSolve result file front_ride.h3d from your working directory.
Vector panel
6. Click on the Display sub-tab and select By Magnitude for Size scaling.
7. Click on Apply.
9. You will see an arrow whose size and direction change dynamically as the simulation
is animated from start to end. This arrow represents the magnitude and direction of
force on a body or at a joint as it is specified for force output in the model.
10. Click on the Clear Vector button to clear the force vector.
12. Repeat the Steps 6 to 9 to view the Moment vectors of the simulation.
13. Under Display options: try changing the scale of the vectors by changing the Scale
value:.
Collision Detection
HyperView allows you to view and detect collisions between bodies during simulations.
4. Click the Load model file browser and select collision.h3d, from your
working directory.
5. Click the Load results file browser and select collision.h3d from the same
location specified in Step 4 above.
6. Click Apply.
8. After the file is read, click the Start/Stop Animation icon, , to stop the
animation.
9. Click the Collision Detection button, on the Tools toolbar (if this toolbar is not
visible by default, go to the View menu and select Toolbars > HyperView >
Tools).
10. Click the Add button in the leftmost column under Collision Sets to add a new
collision set.
Note Clicking on the Components input collector will display the Extended
Entity Selection dialog. The Extend Entity Selection dialog provides
you with criteria based selection options available for entity selection in
HyperView. This method of selection is not used in this tutorial. See the
Selecting Entities Using the Input Collector topic (located in the HyperView)
to learn more about using this selection method.
15. Under the Proximity section, click Enable Proximity checking and specify the
Minimum Distance for the proximity check.
16. Under the Show result by: section select Elements by clicking on the radio button
next to it.
Wherever areas of the trunklid collide with the trunk (car body), the colliding
elements turn red.
The color yellow indicates proximity. When neither proximity nor collision is
detected, the bodies retain their natural colors.
− Try to view the Element and Component results alternately by clicking on the
radio buttons in the Show Results by: section.
Note Please refer to HyperView tutorial Using Keyboard Shortcuts and Function Keys -
HV-2050 for more information regarding keyboard shortcuts.
2. Load the file front_ride.h3d as the model and result file from your working
directory.
6. Click on the Nodes button and from the graphic window pick on a point of your
choice.
8. Click the Create Curves button (located on the right side of the panel).
10. For the Y Axis: select X and activate the Live link check box.
Note The Live Link helps you correlate the measured value with the animation.
As you animate the current animation model a small square marker moves
on the measured curve to indicate the value of the curve at the
corresponding time step of the animation.
12. Repeat Point 10 and 11 twice more by selecting Y and Z respectively and clicking on
OK each time.
13. Click the Start/Pause Animation icon, , to start the animating the results.
14. You will see a marker on all the three plots which corresponding to the simulation
time step in the HyperView window.
Introduction
In this tutorial you will learn to:
Theory
The Build Plots panel allows you to import plot files that can be plotted in a 2D layout.
The panel allows you to control what curves are to be plotted either in single or multiple
windows.
Tools
The Build Plots panel can be accessed in any one of these three applications:
MotionView, HyperView or HyperGraph.
Copy the Demo.plt file, located in the mbd_modeling\plotting folder, to your <working
directory>.
6. Click Open.
The Y Request text box displays the data available in the file.
10. Press CTRL button on the keyboard and click on REQ/70000006 and
REQ/70000007 (or left-click and drag the mouse to select both REQ/70000006
and REQ/70000007). Click OK.
Two curves are plotted in the plot window, each with its own line type and color.
The legend identifying the curves is located in the upper right hand corner of the
plot.
Single plot window with multiple curves created using the Build Plots panel
5. Press CTRL and under Y Component: select X, Psi, MAG and RMAG.
6. Select One plot per Component from the Layout pull down menu , located in
the lower left corner of the panel.
This selection creates one plot for every request selected under Y component.
There will be four plots created. You could have one page for each plot. However,
this tutorial wants all four plots on the same page.
7. Click the Page Layout button , located next to the Show Legends check box.
9. Click Apply.
A second page is added to the page list with four windows and the plots you
requested.
Multiple plots with multiple curves created using the Build Plots panel
Note The procedure to plot and edit curves from other result/request files (for
example, .req, .abf, etc.) remains the same as described in this tutorial.
Note To save a session as a script file with curve data: select the Options panel icon
from the Annotations toolbar, and activate the Save All Curve Data To
Session File / Report Template check box (located on the Session tab).
2. Select a directory.
4. Confirm that Session (*.mvw) is selected from the Save as type drop-down
menu.
5. Click Save.
This saves your current work session as a session script file called Demo1.mvw.
2. Click No, since you saved the session in the previous step.
Introduction
Friction is defined as a resistance force opposing motion. Friction appears at the physical
interface between any two surfaces in contact. Friction force arises mainly due to
adhesion, surface roughness and plowing at the contact surfaces.
The friction force varies based on its states (as shown in the above figure). The (a)
section shows Coulomb friction, (b) shows Stiction plus Coulomb friction, and F(c) shows
how the friction force may decrease continuously from the static friction level due to
lubrication also known as Stribeck effect.
Dynamics of friction
Joint friction
MotionSolve uses LuGre model for friction representation. LuGre model is a bristle model
emerged for controls applications. LuGre model was presented by Canudas de Wit,
Olsson, Åstro¨m, and Lischinsky. Stemming from a collaboration among researchers at
the Lund Institute of Technology (Sweden) and in Grenoble France (Laboratoire
d’Automatique de Grenoble), the LuGre model captures a variety of behaviors observed
in experiments, from velocity and acceleration dependence of sliding friction, to
hysteresis effects, to pre-slip displacement and lubrication.
LuGre model can model friction considering geometry of joint, preload, moment arm,
force and torque. Friction is supported for a subset of joints namely Revolute, Spherical,
Translational Joint, Cylindrical, and Universal Joint. Please refer to our MotionSolve
online help for a detailed explanation of friction for each constraint.
Exercise
Copy the SlidingTable.mdl file, located in the mbd_modeling\motionsolve folder, to
your <working directory>.
The leader and follower model constitutes two rigid bodies namely Leader and Follower
respectively connected to the Ground body by translation joints and inter connected by a
linear spring. In the following steps you will add friction and apply motions to study
friction behavior of the translation joint.
3. From the Friction Properties tab, check the Use Friction option to activate friction
on joint.
Note MotionView populates the panel with default properties that are appropriate
with units N, mm, second. You will need to scale properties such as
Stiction Transition Velocity, Force Preload, and Geometric properties
(Initial Overlap, Reaction Arm) according to the units.
4. Change the following default settings: Dynamic friction coefficient to 0.1, Static
friction coefficient 0.15, and Stiction Transition Velocity to 1.0. Uncheck the
Bending Moment and Torsion Moment options to exclude joint reaction forces
due to geometry misalignments. Modify the Initial Overlap value to 10mm and
leave the remaining values at their default settings.
5. Select the LuGre Parameters tab to modify the Bristle properties. Modify the
Damping Coefficient value to 0.0316.
Note Default properties of bristle are appropriate with units N, mm, second.
1. Right click the Output icon from General MDL Entity Tool bar.
8. Populate the Expression Builder with the FRICTION function expression as:
`FRICTION({j_contact.id},1)`.
Fx component =1
9. Click OK.
10. Repeat the process for F3, F4, F6, F7, and F8 by changing the second parameter to
2, 3, 4, 5, and 6 accordingly.
The function FRICTION(ID, comp) computes the friction force component specified
in the comp corresponding to the joint ID.
1. Right click the Outputs icon on the General MDL Entity toolbar.
3. Under the Main tab, click on the icon to specify the name and location of the
MotionSolve .xml file. Save the file with the name Stick_Slip.xml in your working
directory.
4. Notice that after saving the file, the Run button to the right becomes active.
5. Specify the End time as 25 sec. Modify the Print interval value to 0.001 and
leave the remaining values at their default settings.
Y Component VX
o From the Advanced Plot Options dialog, under Category select Curve
Option.
o Click OK.
Y Type Expression
Y Request Friction_Force
Y Component F4
6. To start the animation, click the Start/Pause Animation icon on the toolbar.
7. The Stick_Slip motion is clearly observed from the animation and plots.
The Leader body moving at a constant velocity elongates the spring increasing
spring force linearly. The friction force counteracts the spring force, and there is a
small displacement of Follower body when the applied force reaches the break-away
force.
= 0.15x1x9.81
= 1.47 Newton.
Velocity variation
Note Multiply `time` with 10, 25 will vary velocity at frequencies 10rad/sec and
25 rad/sec respectively.
3. Under the Main tab, click on the icon to specify the name and location of the
MotionSolve .xml file. Save the file with the name Hysteresis_1radpersec.xml in
your working directory.
4. Specify the End time as 3 seconds and the Print Interval as 0.0001 seconds.
6. Modify the velocity expression of the Follower Translation Joint and run the
model with the file names and end times specified in the table below:
Y Component VX
Y Type Expression
Y Request Friction_Force
Y Component F4
There is an initial transition of friction force values, therefore you will plot hysteresis
curve excluding first cycle data (in other words, 0 to 1 sec.).
− Select the Follower Velocity and Friction Force curves in the Plot browser,
right-click and select Turn Off from the context menu.
− Populate X data to select velocity between time interval 1 to 3 secs using the
subrange function: p1w2c1.y[subrange(p1w2c1.x,1,3)].
− Populate Y data to select Friction force between time interval 1 to 3 secs using the
subrange function: p1w2c2.y[subrange(p1w2c1.x,1,3)].
The velocity variation with higher frequency will have widest hysteresis loop.
• Assemble the vehicle for full vehicle simulations using Assembly Wizard
• Attach the driver using Task Wizard
What is Altair Advanced Driver?
The Altair Driver is a set of MotionView models and libraries that allows MotionView users
to control and script vehicle events. Example events include:
• Steering
• Throttle
• Gear
• Brake
• Clutch
Using Altair Driver you can simulate any number of full vehicle events using these
features:
Exercise
2. Make sure that the MBD-Vehicle Dynamics Tools preference file loaded is for all
of the MotionView functionality of the Advanced Driver to work properly.
3. Use the Assembly Wizard to assemble the vehicle model. In the first example, a
linear torque map powertrain will be used to avoid the complexity of adding
controllers for gear and clutch.
4. Choose Full vehicle with advanced driver option. This takes care of all the
dependencies of the advanced driver. Click Next.
8 Next No
9 Finish No
2. Select Altair Advanced Driver Analysis from the Full vehicle Driver task drop-
down menu.
The Altair Advanced Driver with icon is added to the browser tree. Selecting the
driver icon will open up the Altair Driver panel. This automatically resolves all of the
vehicle attachments for the Advanced Driver.
The objective of the example is to script an event with 50% throttle, 0% brake and 0
steering angle. An event can be broken down into smaller sub-events or maneuvers. For
the sake of simplicity we will model this as a single maneuver event.
1. Open any text editor and copy and paste the following text into it. Important: All
blank lines must be removed prior to saving the file! Be sure to read through
the comments for a better understanding on what is written in the ADF.
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
$In this block we specify the units in which this file should be read
[UNITS]
(BASE)
$--------------------------------------------------------------------VEHICLE_IC
$In this block we specify the initial conditions specifically initial speed of the
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
$steering output signal. These signals are global and are active for the entire event
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.5
$---------------------------------------------------------------BRAKING_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
$This block provides the list of all the maneuvers, simulation time for each
maneuver
[MANEUVERS_LIST]
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
$---------------------------------------------------------OL_STEER
$of controller.
[OL_STEER_0]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.0
$---------------------------------------------------------OL_BRAKE
[OL_0]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.0
$---------------------------------------------------------OL_THROTTLE
[OL_0.5]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.5
4. The Edit driver file button can be used for editing the file.
6. After the simulation run is over and the solver creates h3d and plt files, click View
Reports… for standard plots.
7. Select the recent run in the View Reports dialog and click OK.
8. The noise in the steering is numerical error of negligible magnitude – 0 for all
practical purposes. Throttle is constant at 0.5 (driver throttle, brake and clutch
outputs are normalized so, 50%) and brake is constant at 0.
9. Next let's try slightly different initial conditions. We will start the throttle at 0 and
brake at 100%. Click the Edit Driver File button to open up the file editor.
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.5 0
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
14. Now, we see that throttle and brake start from respective initial values and step up
to the controller outputs. The time taken to step up is roughly
(5x1/SMOOTHING_FREQUENCY).
In this example we will model a simple event with constant 20% throttle, constant 0%
throttle and sinusoidal steering input with amplitude of 60 degrees (∏/3 radians) and
frequency of 0.5 Hz.
1. Open any text editor and copy/paste the following text into it. Important: All
blank lines must be removed prior to saving the file!
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
$--------------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.2
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
$---------------------------------------------------------OL_STEER.
$SIGNAL_CHANNEL tells the driver which solver variable in Signal Generator to over-
ride
[OL_STEER]
TAG = 'OPENLOOP'
TYPE = 'EXPRESSION'
SIGNAL_CHANNEL =0
EXPRESSION = 'DTOR(60)*SIN(2*PI*0.5*TIME)'
$---------------------------------------------------------OL_THROTTLE
[OL_THROTTLE]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.2
$---------------------------------------------------------OL_BRAKE
[OL_BRAKE]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.0
In this example we will model a simple event with braking signal as a curve.
1. Open text editor and copy/paste the following text into it. Important: All blank
lines must be removed prior to saving the file!
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
$--------------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
$---------------------------------------------------------OL_STEER.
$SIGNAL_CHANNEL tells the driver which solver variable in Signal Generator to over-
ride
[OL_STEER]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.0
$---------------------------------------------------------OL_THROTTLE
[OL_THROTTLE]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0.0
$---------------------------------------------------------OL_BRAKE
[OL_BRAKE]
TAG = 'OPENLOOP'
TYPE = 'CURVE'
BLOCK = 'BRAKE_CRV'
$---------------------------------------------------------CURVE_DATA
[BRAKE_CRV]
INDEPENDENT_VARIABLE = 'TIME'
DEPENDENT_VARIABLE = 'BRAKE_SIGNAL'
INTERPOLATION = 'LINEAR'
{TIME BRAKE_SIGNAL}
0 0
1 0
2 0.2
3 0.5
4 0.8
5 1.0
6 1.0
7 0
10 0
$Example DDF
[ALTAIR_HEADER]
FILE_TYPE = 'DDF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$---------------------------------------------------UNITS
[UNITS]
(BASE)
$---------------------------------DEMAND_VECTORS
[DEMAND_VECTORS]
{X Y Z}
0 0 0
-4 0 0
-1 0 0
-2 0 0
-5 0 0
-3 0 0
[PATH]
'ST' 100.0 0
'ST' 100.0 0
'ST' 200.0 0
[PATH]
TYPE = 'CONSTANT_RADIUS'
RADIUS = 30
INITIAL_STRAIGHT = 45
TURN = 'LEFT‘
Exercise
8 Next No
9 Finish No
1. Open any text editor and copy and paste the following text into it. Important: All
blank lines must be removed prior to saving the file! Be sure to read through
the comments for a better understanding on what is written in the ADF.
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
$In this block we specify the units in which this file should be read
[UNITS]
(BASE)
$--------------------------------------------------------------------VEHICLE_IC
$In this block we specify the initial conditions specifically initial speed of the
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -15.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
$steering output signal. These signals are global and are active for the entire event
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.5
$---------------------------------------------------------------BRAKING_STANDARD
$This block specifies the saturation and cutoff frequency for the low pass filter for
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
$This block provides the list of all the maneuvers, simulation time for each
maneuver
[MANEUVERS_LIST]
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
$---------------------------------------------------------STEER
$controller.
[FEEDFORWARD_STEER]
TAG = 'FEEDFORWARD'
LOOK_AHEAD_TIME = 0.5
PATH = 'PREDEFINED'
BLOCK = 'PATH'
$---------------------------------------------------------PATH
[PATH]
TYPE = 'CONSTANT_RADIUS'
RADIUS = 40
INITIAL_STRAIGHT = 20
TURN = 'LEFT'
[FEEDFORWARD_TRACTION]
TAG = 'FEEDFORWARD'
TYPE = 'FOLLOW_VELOCITY'
LOOK_AHEAD_TIME = 0.5
DEMAND_SIGNAL = 'DEMAND_SPEED'
$---------------------------------------------------------DEMAND_SPEED
$Block containing all the information about the velocity profile to be followed
[DEMAND_SPEED]
TYPE = 'CONSTANT'
VALUE = 15.0
2. Save the ADF.
5. Next let's try the same path using another method - Sequence of straight and arcs.
[FEEDFORWARD_STEER]
TAG = 'FEEDFORWARD'
LOOK_AHEAD_TIME = 0.5
BLOCK = 'PATH'
7. Replace the path block in the ADF with the following text.
[PATH]
{KEY PAR0 PAR1}
'ST' 20 0
'ARC' 40 6.28318
8. Rerun the simulation. This is simply a change in the method of providing the same
path and therefore, should make any difference in the results.
In this example we will create an event to follow a straight line while accelerating the
vehicle constantly with 2 m/s2.
1. Open any text editor and copy/paste the following text into it. Important: All
blank lines must be removed prior to saving the file!
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
$--------------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.2
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
$---------------------------------------------------------STEER
$controller.
[FEEDFORWARD_STEER]
TAG = 'FEEDFORWARD'
LOOK_AHEAD_TIME = 0.5
PATH = 'PREDEFINED'
BLOCK = 'PATH'
$---------------------------------------------------------PATH
[PATH]
TYPE = 'CONSTANT_RADIUS'
RADIUS = 40
INITIAL_STRAIGHT = 20
TURN = 'LEFT'
[FEEDFORWARD_TRACTION]
TAG = 'FEEDFORWARD'
TYPE = 'FOLLOW_VELOCITY FOLLOW_ACCELERATION'
LOOK_AHEAD_TIME = 0.5
DEMAND_SIGNAL = 'DEMAND_SPEEDDEMAND_ACC'
$---------------------------------------------------------DEMAND_ACC
$Block containing all the information about the acceleration profile to be followed
[DEMAND_SPEED]
TYPE = 'CONSTANT'
VALUE = 2.0
In this example we’ll give path as a table of Cartesian coordinated of centerline points.
We’ll define the velocity profile as well along the path.
1. Open text editor and copy/paste the following text into it. Important: All blank
lines must be removed prior to saving the file!
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
{length force angle mass time}
'meter' 'newton' 'radians' 'kg' 'sec'
$--------------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.2
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
{ name simulation_time h_max print_interval}
'MANEUVER_1' 10.0 0.01 0.01
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
{DRIVER_SIGNAL PRIMARY_CONTROLLER ADDITIONAL_CONTROLLER}
STEER FEEDFORWARD_STEER NONE
[DEMAND_SPEED]
TYPE = 'CURVE'
BLOCK = 'DEMAND_CURVE'
$-------------------------DEMAND_CURVE
[DEMAND_CURVE]
INDEPENDENT_VARIABLE = 'PATH_S'
DEPENDENT_VARIABLE = SIGNAL
INTERPOLATION = 'LINEAR'
{PATH_S SIGNAL}
0 30
250 35
400 10
584 10
680 25
780 10
942 10
1300 40
1695 10
1868 10
1958 10
2040 15
2109 15
2173 15
2300 20
2409 15
2524 15
2647 10
2811 10
3500 50
• Events consisting for more than one maneuver – these maneuvers are executed
sequentially
• Controllers can only be changed while switching the maneuvers
• Hence, rule of thumb – whenever need to change the controller, change the
maneuver
• Driver does following while switching the maneuvers
o Halts previous maneuver
o Saves the signals value that acts as initial value for next maneuver in case
of parametric expressions, there is a list of signals that driver monitors.
Please refer to the documentation for more details.
o Executes the change of/in controller
Example:
Exercise
8 Next No
9 Finish No
1. Open any text editor and copy and paste the following text into it. Important: All
blank lines must be removed prior to saving the file! Be sure to read through
the comments for a better understanding on what is written in the ADF.
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
{length force angle mass time}
'meter' 'newton' 'radians' 'kg' 'sec'
$--------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -17.5
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
$Upper and lower bounds are kept to match the event requirement of saturating at
$270 deg and -540 deg respectively
MAX_VALUE = 4.712
MIN_VALUE = -9.425
SMOOTHING_FREQUENCY = 5
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE =1
MIN_VALUE =0
SMOOTHING_FREQUENCY = 5
INITIAL_VALUE = 0.0
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE =1
MIN_VALUE =0
SMOOTHING_FREQUENCY = 5
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
{name simulation_time h_max print_interval}
'GO_STRAIGHT' 2.0 0.01 0.1
'LEFT_TURN' 12.0 0.001 0.1
'RIGHT_TURN' 10.0 0.001 0.1
[GO_STRAIGHT]
TASK = 'STANDARD'
(CONTROLLERS)
{DRIVER_SIGNAL PRIMARY_CONTROLLER ADDITIONAL_CONTROLLER}
STEER OL_CONSTANT_STEER NONE
THROTTLE FEED_FORWARD_TRACTION NONE
BRAKE FEED_FORWARD_TRACTION NONE
$---------------------------------------------------------------------MANEUVER_2
[LEFT_TURN]
TASK = 'STANDARD'
(CONTROLLERS)
{DRIVER_SIGNAL PRIMARY_CONTROLLER ADDITIONAL_CONTROLLER}
STEER OL_LEFT_STEER NONE
THROTTLE FEED_FORWARD_TRACTION NONE
BRAKE FEED_FORWARD_TRACTION NONE
$We want to end the maneuver if the roll rate reaches steady state i.e. d(Roll
rate)/dt = 0
$(tolerance = 0.005) for 0.5 seconds
(END_CONDITIONS)
{SIGNAL GROUP ABS OPERATOR VALUE TOLERANCE WATCH_TIME}
ROLL_RATE 0 Y SS 0 0.005 0.5
$---------------------------------------------------------------------MANEUVER_3
[RIGHT_TURN]
TASK = 'STANDARD'
(CONTROLLERS)
{DRIVER_SIGNAL PRIMARY_CONTROLLER ADDITIONAL_CONTROLLER}
STEER OL_RIGHT_STEER NONE
THROTTLE FEED_FORWARD_TRACTION NONE
BRAKE FEED_FORWARD_TRACTION NONE
$--------------------------------------STEER for Maneuver 1
[OL_CONSTANT_STEER]
TAG = 'OPENLOOP'
TYPE = 'CONSTANT'
VALUE = 0
$--------------------------------------STEER for Maneuver 2
$Ramp up the steering wheel @ 360 deg per send
[OL_LEFT_STEER]
TAG = 'OPENLOOP'
TYPE = 'EXPRESSION'
SIGNAL_CHANNEL = 0
EXPRESSION = '{STEER_0} + {%TIME}*PI*2'
$--------------------------------------STEER for Maneuver 3
[OL_RIGHT_STEER]
TAG = 'OPENLOOP'
TYPE = 'EXPRESSION'
SIGNAL_CHANNEL = 0
EXPRESSION = '{STEER_0} - {%TIME}*PI*2'
$--------------------------------------THROTTLE and BRAKE controller for entire event
[FEED_FORWARD_TRACTION]
TAG = 'FEEDFORWARD'
TYPE = 'FOLLOW_VELOCITY'
LOOK_AHEAD_TIME = 0.5
DEMAND_SIGNAL = 'DEMAND_VEL'
$----------------Demand Velocity
[DEMAND_VEL]
TYPE = 'CONSTANT'
VALUE = 17.5
Maneuver 2 stops when roll rate is consistently 0 (with mentioned tolerance) for 0.5
seconds.
The Engine speed based shift controller upshifts whenever engine speed goes above the
upshift RPM, and it downshifts when the engine speed goes below the downshift RPM.
The Gear shift controller also controls the throttle and clutch signal as shown in the
figure below.
Exercise
8 Next No
9 Finish No
We will modify the ADF which was written for MV-8001 (example 3) and incorporate a
gear and clutch controller.
1. Open any text editor and copy and paste the following text into it. Important: All
blank lines must be removed prior to saving the file! Be sure to read through
the comments for a better understanding on what is written in the ADF.
$-----------------------------------------------------------------ALTAIR_HEADER
[ALTAIR_HEADER]
FILE_TYPE = 'ADF'
FILE_VERSION = 1.0
FILE_FORMAT = 'ASCII'
$--------------------------------------------------------------------------UNITS
[UNITS]
(BASE)
{length force angle mass time}
'meter' 'newton' 'radians' 'kg' 'sec'
$--------------------------------------------------------------------VEHICLE_IC
[VEHICLE_INITIAL_CONDITIONS]
VX0 = -20.0
VY0 = 0.0
VZ0 = 0.0
$--------------------------------------------------------------STEERING_STANDARD
[STEER_STANDARD]
MAX_VALUE = 3.141593
MIN_VALUE = -3.141593
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$--------------------------------------------------------------THROTTLE_STANDARD
[THROTTLE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.00
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.2
$---------------------------------------------------------------BRAKING_STANDARD
[BRAKE_STANDARD]
MAX_VALUE = 1.0
MIN_VALUE = 0.0
SMOOTHING_FREQUENCY = 10.0
INITIAL_VALUE = 0.0
$---------------------------------------------------------------GEAR_STANDARD
[GEAR_STANDARD]
MAX_VALUE =6
MIN_VALUE =1
INITIAL_VALUE =1
$---------------------------------------------------------------CLUTCH_STANDARD
[CLUTCH_STANDARD]
MAX_VALUE =1
MIN_VALUE =0
SCALING_FACTOR =1
INITIAL_VALUE = 0.0
$-----------------------------------------------------------------MANEUVERS_LIST
[MANEUVERS_LIST]
{ name simulation_time h_max print_interval}
'MANEUVER_1' 10.0 0.01 0.01
$---------------------------------------------------------------------MANEUVER_1
[MANEUVER_1]
TASK = 'STANDARD'
(CONTROLLERS)
{DRIVER_SIGNAL PRIMARY_CONTROLLER ADDITIONAL_CONTROLLER}
STEER FEEDFORWARD_STEER NONE
THROTTLE FEEDFORWARD_TRACTION NONE
BRAKE FEEDFORWARD_TRACTION NONE
GEAR GEAR_CLUTCH_CONTROL NONE
CLUTCH GEAR_CLUTCH_CONTROL NONE
$---------------------------------------------------------STEER
[FEEDFORWARD_STEER]
TAG = 'FEEDFORWARD'
LOOK_AHEAD_TIME = 0.5
$Instruction to the driver that the path is of type DDF
PATH = 'DDF'
$Path of the ddf file, data lies in same folder in file named snet.ddf
FILE = 'snet.ddf'
$--------------------------------------------------THROTTLE & BRAKE
[FEEDFORWARD_TRACTION]
TAG = 'FEEDFORWARD'
TYPE = 'FOLLOW_VELOCITY'
LOOK_AHEAD_TIME = 0.5
DEMAND_SIGNAL = 'DEMAND_SPEED'
$---------------------------------------------------------DEMAND_SPEED
$Block containing all the information about the acceleration profile to be followed
[DEMAND_SPEED]
TYPE = 'CURVE'
$Velocity profile information is in the file snet.ddf in the same folder
$Velocity profile is defined under the column name DV in the DDF
${X Y Z DV}
FILE = 'snet.ddf'
DEMAND_VECTOR = 'DV'
$Gear clutch controller
[GEAR_CLUTCH_CONTROL]
TAG = 'ENGINE_SPEED'
(GEAR_SHIFT_MAP)
{G US DS CT CRT TFD TFT CFT TRD TRT}
1 650 285 0.45 0.05 0.1 0.1 0.05 0.05 0.05
2 650 285 0.45 0.05 0.1 0.1 0.05 0.05 0.05
3 650 285 0.45 0.05 0.1 0.1 0.05 0.05 0.05
4 650 285 0.45 0.05 0.1 0.1 0.05 0.05 0.05
5 650 285 0.45 0.05 0.1 0.1 0.05 0.05 0.05
Introduction
The purpose of this tutorial is to introduce you to the Leaf Spring Builder utility. In
this tutorial, you will learn how to:
To learn more about the Leaf Spring Builder, see the Leaf Spring Modeling topic.
Required Files
Copy the files listed in the table below, located in the mbd_modeling\leafspring
\leaf_profiles folder, to the <working directory>.
Leaf_2.csv
Leaf_3.csv
Leaf_4.csv
These .csv files contain coordinate pairs that represent the geometry of the centerline of
the leaf. The leaf in this tutorial was created by measuring geometry from a light truck
rear suspension. The rear suspension in this example has a GAWR of 3950 lbs.
Launching MotionView
2. Click File > Load > Preference File from the MotionView Menu bar.
3. From the Preferences dialog, select MBD-Vehicle Dynamics Tools and click
Load.
The following steps show you the process involved in creating a leaf spring model using
the components of the Leaf Spring Builder.
General
1. Click on the General option in the Leaf Spring Components browser section.
2. Select the Linear and Pre-Assembly options from the Interpolation Scheme and
Data Shape Condition drop-down menus.
Leaves: Leaves components allow you to add leaves to the leaf spring.
4. Right-click on the Leaves component and click Add a Leaf, to add leaves.
Leaf 1
5. Click on the Leaf 1 component and see where the required data can be entered
under Leaf Data.
6. Browse and locate the required .csv file, Leaf_1.csv for the Shape Input field.
OR
− You can specify the required values for the X coordinate, Z coordinate and width
and thickness variation manually for the leaf profile.
Note If the leaf is a constant thickness (and/or width), you need to specify the
values only in the first row. The same value will be used along the entire
length of the leaf.
7. Click on the Details tab and select the Master option from the Type drop-down
menu. Enter the Leaf 1 data for the Details tab as shown in the following image.
Leaf 2
8. Click on the Leaf 2 component and enter the required data under Leaf Data in the
Shape tab.
9. Browse and locate the required .csv file, Leaf_2.csv, for the Shape Input field.
Enter the Width and Thickness as shown in the image below.
10. Click on the Details tab and select the Graduated option from the Type drop-down
menu. Enter the Leaf 2 values for the Details tab as shown in the following image.
11. Click on the Contacts tab and enter the value 12 in the Total number of Contact
points field and hit Enter.
The Contacts table for Leaf 2 is generated based upon the values entered.
1 Front 95 METAL_METAL
13. The entered contact points are plotted on Leaf 2 as shown in the following image in
the Canvas section.
14. For this example, leave the Tip Liners (Front and Rear) set to Off in the Tip
Contacts tab.
Leaf 3
15. Browse and locate the required .csv file, Leaf_3.csv, for the Shape Input field.
16. Click on the Details tab and select the Graduated option from the Type drop-down
menu. Enter the Leaf 3 values for the Details tab as shown in the following image.
17. Click on the Contacts tab and enter the value 10 in the Total number of Contact
points field and hit Enter.
1 Front 95 METAL_METAL
19. The entered contact points are plotted on Leaf 3 as shown in the following image in
the Canvas section.
Leaf 4
20. Browse and locate the required .csv file, Leaf_4.csv, for the Shape Input field.
21. Click on the Details tab and select the Graduated option from the Type drop-down
menu. Enter the Leaf 4 values for the Details tab as shown in the following image.
22. Click on the Contacts tab and enter the value 8 in the Total number of Contact
points field and hit Enter.
1 Front 95 METAL_METAL
24. The entered contact points are plotted on Leaf 4 as shown in the following image in
the Canvas section.
Leaf Ends: Leaf ends parameters provide the details about the eye hook types at front
and at the rear ends. Three spring eye types are supported.
25. Click on the Front_leaf_end option and enter the following data in the Leaf Ends
section.
− Select Spring Eye from the Leaf End Type drop-down menu.
26. Click on the Rear_leaf_end option and enter the following data in the Leaf Ends
section.
Clip: Clip parameter is used to define the Clip properties. The number of clips added in
the clips parameter are reflected in the Clip Details.
27. Click on the Clips component and enter the following data in the Clip Properties
section.
28. Click on the Axle component and enter the following data in the Axle Properties
section.
Materials
29. Click on the Materials component and enter the following data in the Material
Properties section.
Bushings
30. Click on the Bushings component and use the default values under Bushing
Properties.
Contacts
31. Click on the Contacts component (by default there is only one contact
METAL_METAL). Right-click on the Contacts component and add one more contact
named METAL_PLASTIC.
Note Right-click to rename the contact after you have added it.
32. Click on the METAL_METAL contact and enter the following data in the Contact
Properties section.
33. Click on the METAL_PLASTIC contact and enter the following data in the Contact
Properties section.
34. Now for this example, go back to the Clips component and click on the Clip_1
option and update the Contact Property to the METAL_PLASTIC contact.
Shackle
35. Click on the Shackle component and enter the following data in the Shackle
Properties section.
Clip Details
36. Click on the ClipDetails option and enter 1 in the Total number of Clips field, with
respect to the number of clips added in the Clips component.
1. Click on the Build option and browse and locate the required path for the <working
directory>. Enter test_leaf_1, as the file name in the Output File Label field
and view the choices available for building the leaf spring model.
2. Select the Assemble leaves and apply preload radio button and the Write
Property File check box and click on the Build button.
3. The Leaf Builder Message window opens. The message window shows the model
checks that are performed before the test job is submitted to the MotionSolve.
6. Once the MotionSolve process is done, close the Leaf Spring Builder dialog.
9. From the Project browser, click on the Model as shown in the following image.
11. Use the Select file browser and locate the generated .mdl file from the <working
directory> and click Import.
12. The Import Definition window is displayed. Use the default options in the window
and click OK.
13. Leaf Spring system is shown in the Project browser. Click on it and resolve the
attachments.
1. Return to the Leaf Spring Builder and click on the Test component in the browser.
2. Browse and locate the required Testing Directory and enter the following data:
select Force as the Test Rig Type and the Quasi-static analysis as the
Simulation Type (as shown in the following Test section). Click on the Run Test
Rig button.
3. The Leaf Builder Message window opens. The message window shows the model
checks that are performed before the test job is submitted to MotionSolve. Click OK
to exit the window.
5. Once the run process is completed, the following F-D Curve is generated in the Leaf
Builder.
Introduction
The tire models describe the interface between the wheel and the road. For this tire
interface, the tire parameters and properties are set by a Tire Property File with the
extension (.tir) while the road interface is described by a Road Property File with the
extension (.rdf). One Body, one Point, and two Marker connections are needed to
define the tire interface. In addition, physical properties of the tire such as the unloaded
radius, aspect ratio, width, mass, and moment of inertia's that need to be specified. The
purpose of this tutorial is to show the process of how to build a tire model in the
MotionView interface and to interpret the results. In this tutorial, you will learn how to:
• Launch MotionView and load the MBD-Vehicle Dynamics Tools preference file
• Build a Tire model
• Run the model in MotionSolve
• View the simulated results
2. Click File > Load > Preference File from the MotionView Menu bar.
3. From the Preferences dialog, select MBD-Vehicle Dynamics Tools and click
Load.
1. Create a point for the model by right-clicking the Points folder in the Project
browser. Click on the Add Point option from the context menu.
2. Enter Wheel CM as the Label and p_wheel_cm as the Variable and click OK.
3. Enter the value of 313 for Z coordinate in the Properties tab as shown in the image
below.
4. Create a Hub body by right-clicking the Bodies folder in the Project browser. Click
on the Add Body option from the context menu.
5. Enter Hub as the Label and b_hub as the Variable and click OK.
7. Click on the CM Coordinates tab of the Hub body to use the wheel center as the
center of this body. Select the Use center of mass coordinate system check box.
The Select a Point window opens. Select the Wheel CM point and click OK.
9. From the Properties tab enter the following data as shown in the image below to
set the mass and inertia of the hub body.
10. Enter the following data in the Initial Conditions tab as shown in the below image
to set the initial conditions.
Note These initial conditions applied at the Hub body represent a tire+rim with
an initial forward velocity Vx of 20000mm/s and rotating at 65rad/s.
11. Right-click on the Markers folder in the Project browser and click on the Add
Marker option from the context menu.
12. Enter Tire Reference Marker as the Label and m_tire_ref as the Variable and
click OK.
14. Use the Body and Point collector buttons in the Properties tab in the panel area to
define the attachments for the marker by selecting the Hub as the body and Wheel
CM as the origin.
15. Right-click on the Model in the Project browser and select Add Auto Entity from
the context menu.
17. Select the AutoTire entity from the drop-down menu and click OK.
18. The AutoTire panel is displayed in the panel area and the added auto entity is
created in the Project browser.
19. From the Connectivity tab select the Hub Body as Hub, Wheel Center point as
Wheel CM, Tire Marker as Tire Reference Marker, and Road Marker as Global
Frame to define the tire interface as shown in the image below.
Note The AutoTire is defined by a Hub Body, Wheel Center, Tire Marker, and
Road Marker where:
• Hub Body: The wheel body on which the tire forces act.
• Wheel Center: Point where the tire will be attached, usually the wheel
center.
21. From the Property Files tab, review the tire properties.
The AutoTire entity allows you to modify the tire properties as desired by editing the
Tire Property File.
The graphic tire representation can be modifying by editing the properties field, such
as Unloaded Radius, Tire Width, Aspect Ratio, and Hub Offset. Once the tire
property file is loaded, some of the fields will automatically get filled.
Note Changing the value in entry field will not change the values in tire
properties file. These entry fields are meant to create tire graphic.
If you want to make changes to the file using the Edit File button, it is
recommended that you save it with a different name and reload the file so
that the graphic attributes get automatically filled in the graphical user
interface.
2. Click on the Run Solver toolbar icon , and rename the MotionSolve input to
Auto-Tire.xml.
3. Select the Static + Transient option from the Simulation type drop-down menu
and enter 0.001 in the Print interval field.
5. After the MotionSolve is complete, the View Log, Animate, and Plot buttons are
enabled. These buttons allow you to plot results, look at an animation, or examine
tabular results.
2. Click anywhere in the plot window and click on the Expand/Reduce button from
the toolbar.
4. The AutoTire entity automatically creates tire outputs based on the simulation,
which can be accessed from .plt file as shown below.
Output Plots:
Different output plots based on the simulation are explained briefly below.
o f4 - OmegaFree – Angular velocity at which the tire will be having a zero slip
ratio.
The following outputs are available in both ISO and SAE co-ordinate systems. The
one shown in plots are in ISO.
o f2 - LonSlip - Slip Ratio or Longitudinal slip in percentage. In this case the tire
is rolling freely therefore the slip ratio is approximately 0.
o f3 - LatSlip - Lateral slip starts from 0.05 as lateral slip is the ratio of Vy and
Vx. In our case Vy/Vx = 1000/20000 = 0.05
The Tire contact patch forces are available in both W and SAE axis system. The
one shown in plots are in W-axis System.
• Launching MotionView
• Building a Full Truck Model with Driver
• Adding Events to the Model
• Viewing Reports
Note The MBD Vehicle Dynamics Tools preferences must be loaded before using the
event builder. Select File > Load > Preference File > MBD-Vehicle
Dynamics Tools from the MotionView interface.
Note Set the required truck wizard paths to start assembling the model through
Assembly Wizard dialog.
3. From the Wizard library drop-down menu, select the Heavy Truck option. Browse
and locate the required paths from the installation folder and click OK.
1. Select the Full truck with driver option and click Next.
2. Select the Body and Cab from the Truck body and Cabin body drop-down menus
respectively and click Next.
3. Select Front solid axle suspension for the Front suspension, Rear dual solid
axle suspension for the Rear suspension, Linear Torque Map Powertrain for
the Powertrain, and Driver Signal Generator for the Signal Generator and click
Next.
4. Select Pitman Arm Steering for the Steering linkages, Steering column for the
Steering column, and Steering boost for the Steering boost in the steering
subsystems page.
5. Select Leaf springs for the Front spring and Bell crank linked leaf spring for
the Rear spring for the model and click Next.
Note Based on the suspension type selected for the Front suspension and Rear
suspension, the Front spring and Rear spring options are modified
accordingly.
Shock Absorbers
6. Select the required shock absorbers from the Front shocks and Rear shocks drop-
down menus and click Next.
Jounce/Rebound Bumpers
7. Select the following options for the Front and Rear Jounce/rebound bumpers and
click Next.
Driveline Systems
8. In the next page, select Disk Brakes and Two-axle driveline from the Disc
Brakes and Rear driveline drop-down menus respectively and click Next.
Note Based on the suspension type selected, the Rear driveline options are
modified accordingly.
9. For a full truck with advanced driver, you have to select the required driveshaft
systems from the Rear driveshaft drop-down menu as shown in the image below.
10. Select the required Driver system for the full truck model as shown in the image
below.
11. Now that you have selected all the required systems for the model, click the Finish
button to complete the process and exit the custom library wizard.
12. The full truck with driver model is displayed in the MotionView window.
13. The subsystems that you have selected in the Custom library wizard to build the
model are displayed in the Project browser.
• Constant Radius
• Single Lane Change
• Double Lane Change
• Swept Sine
• Straight Line Acceleration
• Straight Line Braking
• Sinusoidal Steering
• BrakeIn Turn
• J Turn
• Throttle off cornering
• Swept Steer
• Pulse Steer
• Throttle off TurnIn
• Step Steer
• Power off ln Straight Line
• Altair Driver File
Each event type has different options that needs to be addressed. For example, in the
following steps Constant Radius is explained.
1. Right-click on Model in the Project browser and select Add Events from the
context menu.
3. From the Type drop-down menu, select the Constant Radius event and click OK.
5. The Event Editor window can be invoked by right-clicking on the event type in the
Project browser and selecting Event Editor from the context menu.
OR
− You can click on the Event Editor button in the panel area.
6. Click the Event Editor button from the panel area (or from the list).
7. Enter the above information in the Parameters section and browse and locate the
file path in the Output XML File.
8. After entering all the required data, the event is ready to run. Click the Run button.
Note An ADF (Altair Driver File) is generated with all the event parameters at the
XML file path (Output XML File) location. The model is exported and
MotionSolve starts to generate the result files.
9. After the MotionSolve run is completed, close the window and return to the
MotionView interface. The generated file types include: .adf, .plt, and .h3d files.
2. Select the Driver Output Report option from the View Reports window and click
OK.
3. A series of report templates are displayed in the Plot browser. You can select the
required report template to view in detail.