Altair MotionView 11.0 Tutorials

Altair MotionView 11.0 Tutorials
HyperWorks 13.0
MotionView Tutorials
HyperWorks is a division of Altair
altairhyperworks.com
Altair Engineering Support Contact Information
Web site
www.altairhyperworks.com
Location
Telephone
e-mail
Australia
64.9.413.7981
[email protected]
Brazil
55.11.3884.0414
[email protected]
Canada
416.447.6463
[email protected]
China
86.400.619.6186
[email protected]
France
33.1.4133.0992
[email protected]
Germany
49.7031.6208.22
[email protected]
India
91.80. 6629.4500
1.800.425.0234 (toll free)
[email protected]
Italy
39.800.905.595
[email protected]
Japan
81.3.5396.2881
[email protected]
Korea
82.70.4050.9200
[email protected]
Mexico
55.56.58.68.08
[email protected]
New Zealand
64.9.413.7981
[email protected]
North America
248.614.2425
[email protected]
Scandinavia
46.46.460.2828
[email protected]
United Kingdom
01926.468.600
[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
Copyright© Altair Engineering Inc. All Rights Reserved for:
HyperMesh® 1990-2014; HyperCrash® 2001-2014; OptiStruct® 1996-2014; RADIOSS®1986-2014; HyperView®1999-2014;
HyperView Player® 2001-2014; HyperStudy® 1999-2014; HyperGraph®1995-2014; MotionView® 1993-2014; MotionSolve® 20022014; HyperForm® 1998-2014; HyperXtrude® 1999-2014; Process Manager™ 2003-2014; Templex™ 1990-2014; TextView™
1996-2014; MediaView™ 1999-2014; TableView™ 2013-2014; BatchMesher™ 2003-2014; HyperMath® 2007-2014;
Manufacturing Solutions™ 2005-2014; HyperWeld® 2009-2014; HyperMold® 2009-2014; solidThinking® 1993-2014; solidThinking
Inspire® 2009-2014; solidThinking Evolve®™ 1993-2014; Durability Director™ 2009-2014; Suspension Director™ 2009-2014;
AcuSolve® 1997-2014; AcuConsole® 2006-2014; SimLab®™2004-2014 and Virtual Wind Tunnel™ 2012-2014.
In addition to HyperWorks® trademarks noted above, Display Manager™, Simulation Manager™, Compute Manager™, PBS™,
PBSWorks™, PBS GridWorks®, PBS Professional®, PBS Analytics™, PBS Desktop™, PBS Portal™, PBS Application Services™,
e-BioChem™, e-Compute™ and e-Render™ are trademarks of ALTAIR ENGINEERING INC.
Altair trademarks are protected under U.S. and international laws and treaties. Copyright© 1994-2014. 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 inHyperWorks® shall not be decompiled, disassembled, or “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
MotionView Tutorials
Introduction
..........................................................................................................................4
MV-100:
Introduction to the MotionView Environment
........................................................................................................................................................5
Interactive
..........................................................................................................................35
MV-1000:
Interactive Model Building and Simulation
........................................................................................................................................................36
MV-1035:
Importing CAD or FE into MotionView
........................................................................................................................................................71
MV-1011:
Extension and Retraction Analysis of the Main Landing Gear of an Aircraft
........................................................................................................................................................85
Animation
..........................................................................................................................95
MV-5000:
Rigid body Animation - Basic
........................................................................................................................................................96
MV-5010:
Rigid body Animation - Advanced
........................................................................................................................................................102
Plotting
..........................................................................................................................107
MV-6000:
Plotting Basics
........................................................................................................................................................108
Model
Definition Language
..........................................................................................................................113
MV-1060:
Introduction to MDL
........................................................................................................................................................114
MV-1070:
Creating a Simple Pendulum System using MDL
........................................................................................................................................................128
MV-1080:
Creating an Analysis using MDL
........................................................................................................................................................145
MV-1090:
Creating a Dataset using MDL
........................................................................................................................................................151
MV-1030:
Creating a System Definition Using the MotionView GUI
........................................................................................................................................................155
Flexible
Body Modeling and Simulation using MotionView and
..........................................................................................................................168
MotionSolve
MV-2000:
Introduction to Flexible Bodies
........................................................................................................................................................169
MV-2010:
Flexbody Generation using Flex Prep and Radioss
........................................................................................................................................................173
MV-2020:
Use of Flexbody in MBD Models
........................................................................................................................................................190
MV-2021:
Simulating an Automotive Door Closure Event
........................................................................................................................................................196
MV-2035:
Solving Flexbody ADM/ACF in MotionSolve
........................................................................................................................................................206
Automated
..........................................................................................................................211
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
i
MV-1032:
Model Building and Simulation using Wizards
........................................................................................................................................................212
MV-1040:
Model Building using Tcl
........................................................................................................................................................221
MV-1050:
Automation Using TCL
........................................................................................................................................................230
MV-1051:
Understanding Sequential Simulation
........................................................................................................................................................233
Optimization-DOE-Stochastics
..........................................................................................................................241
MV-3000:
DOE using MotionView - HyperStudy
........................................................................................................................................................242
MV-3010:
Optimization using MotionView - HyperStudy
........................................................................................................................................................265
Durability
- Fatigue
..........................................................................................................................271
MV-3030:
Load Export
........................................................................................................................................................272
MV-3040:
Durability and Fatigue Tools
........................................................................................................................................................280
Advanced
Simulation
..........................................................................................................................288
MV-1010:
Contact Simulation using MotionSolve
........................................................................................................................................................289
MV-1015:
Using Spline3D to Model Combustion Forces in an Engine
........................................................................................................................................................294
MV-1023:
Using Python Subroutines in MotionView Model Building
........................................................................................................................................................311
MV-1024:
Using User Subroutines in MotionSolve Models
........................................................................................................................................................328
MV-1025:
Modeling Point-to-Curve (PTCV) Higher-Pair Constraint
........................................................................................................................................................335
MV-1026:
Modeling Curve-to-Curve (CVCV) Higher-Pair Constraint
........................................................................................................................................................351
MV-1027:
Modeling Point-to-Deformable-Curve (PTdCV) Higher-Pair Constraint
........................................................................................................................................................370
MV-1028:
Modeling Point-to-Deformable-Surface (PTdSF) Higher-Pair Constraint
........................................................................................................................................................379
MV-1029: Modeling Point-to-Deformable-Surface Force (PTdSF) Higher-Pair
........................................................................................................................................................387
Constraint
MV-7000:
Modeling Differential Equations Using MotionView and MotionSolve
........................................................................................................................................................395
MV-7001:
Building User Subroutines in Altair MotionSolve
........................................................................................................................................................402
MV-7002:
Co-simulation with Simulink
........................................................................................................................................................412
MV-7003: Simulating a Single Input Single Output (SISO) Control System Using
........................................................................................................................................................422
MotionView
and MotionSolve
MV-7004:
Inverted
Pendulum Control Using MotionSolve and MATLAB
........................................................................................................................................................426
MV-7005:
Linking Matlab/Simulink Generated Code (Simulink Coder) with MotionSolve
........................................................................................................................................................433
MV-7006:
Python UserSub for MotionSolve
........................................................................................................................................................444
MV-7007:
Adding Friction to Joints
........................................................................................................................................................449
ii
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Working
with External Codes
..........................................................................................................................467
MV-4000:
Eigen Analysis using ADAMS/Linear
........................................................................................................................................................468
MV-4010:
Working with ADAMS
........................................................................................................................................................473
MV-4020:
Solver Neutral Modeling
........................................................................................................................................................477
MV-4030:
Flexible Bodies for MotionView with Abaqus
........................................................................................................................................................480
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
iii
MotionView Tutorials
File Location
All files referenced in the MotionView tutorials are located in the
HyperWorks installation directory under <installation_directory>/
tutorials/mv_hv_hg/.
If you need more help finding the installation directory, see Finding the
Installation Directory <installation_directory> or contact your
systems administrator.
Finding the Installation Directory <install_directory>
Most tutorials use files that are located in the tutorials/directory of the software installation. In
the tutorials, file paths are referenced as <installation_directory>/../. In order to locate the
files needed, you will need to determine the path of the installation directory
<installation_directory>. This path is dependent on the installation that was performed at your
site.
To determine what this path is, follow these instructions:
1.
Launch the application.
2.
From the Help menu, select Updates.
The HyperWorks Update Information dialog opens. The installation directory path appears
after Altair Home:.
The MotionView tutorial model files are located in <installation_directory>/tutorials/
mv_hv_hg.
Introduction
MV-100: Introduction to the MotionView Environment
Interactive
MV-1000: Interactive Model Building and Simulation
MV-1035: Importing CAD or FE into MotionView
MV-1011: Extension and Retraction Analysis of the Main Landing Gear of an Aircraft
Animation
MV-5000: Rigid body Animation - Basic
MV-5010: Rigid body Animation - Advanced
Plotting
MV-6000: Plotting Basics
1
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Model Definition Language
MV-1060: Introduction to MDL
MV-1070: Creating a Simple Pendulum System using MDL
MV-1080: Creating an Analysis using MDL
MV-1090: Creating a Dataset using MDL
MV-1030: Creating a System Definition Using the MotionView GUI
Flexible Body Modeling and Simulation using MotionView and MotionSolve
MV-2000: Introduction to Flexible Bodies
MV-2010: Flexbody Generation using Flexprep and Optistruct
MV-2020: Use of Flexbody in MBD Models
MV-2021: Simulating an Automotive Door Closure Event
MV-2035: Solving Flexbody ADM/ACF in MotionSolve
Automated
MV-1032: Model Building and Simulation using Wizards
MV-1040: Model Building using TCL
MV-1050: Automation using TCL
MV-1051: Understanding Sequential Simulation
Optimization-DOE-Stochastics
MV-3000: DOE using MotionView - HyperStudy
MV-3010: Optimization using MotionView - HyperStudy
Durability – Fatigue
MV-3030: Load Export
MV-3040: Durability and Fatigue Tools
Advanced Simulation
MV-1010: Contact Simulation using MotionSolve
MV-1015: Using Spline3D to model the Combustion Forces in an Engine
MV-1023: Using Python Subroutines in MotionView Model Building
MV-1024: Using User Subroutines in MotionSolve Models
MV-1025: Modeling Point-to-Curve (PTCV) higher-pair constrain
MV-1026: Modeling Curve-to-Curve using Templates
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
2
MV-1027: Modeling Point-to-Deformable-Curve (PTDCV) Higher-Pair Constraint
MV-1028: Modeling Point-to-Deformable-Surface (PTdSV) Higher-Pair Constraint
MV-1029: Modeling Point-to-Deformable-Surface Force (PTdSFforce) Higher-Pair Constraint
MV-7000: Modeling Differential Equations Using MotionView and MotionSolve
MV-7001: Building User Subroutines in Altair MotionSolve
MV-7002: Co-simulation with Simulink
MV-7003: Simulating a Single Input Single Output (SISO) Control System Using MotionView and
MotionSolve
MV-7004: Inverted Pendulum Control Using MotionSolve and MATLAB
MV-7005: Linking Matlab/Simulink Generated Code with MotionSolve
MV-7006: Python UserSub for MotionSolve
MV-7007: Adding Friction to Joints
Working with External Codes
MV-4000: Eigen Analysis using ADAMS/Linear
MV-4010: Working with ADAMS
MV-4020: Solver Neutral Modeling
MV-4030: Flexible Bodies for MotionView with Abaqus
3
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Introduction
MotionView is one of the applications within HyperWorks Desktop. The following tutorials will introduce
you to model building for multi-body applications using MotionView.
It is recommended that you complete the HWD-0010: HyperWorks Desktop Environment tutorial (in
order to familiarize yourself with the HyperWorks Desktop graphical user interface) prior to going
through the exercises in these tutorials.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
4
MV-100: Introduction to the MotionView Environment
This tutorial contains an introduction to the MotionView graphical user interface.
Invoking MotionView:
In Windows - go through the Start Menu (Start Menu > Programs > Altair HyperWorks
installation > MotionView).
OR
In Linux - invoke ~hw_install/altair/scripts/mview in an "open terminal" (where
~hw_install is the location where HyperWorks is installed).
The MotionView interface:
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, and TextView.
The client is selected, or changed, using the Client selector drop-down menu:
5
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
Main Menu Item Functionality
Alternatives
File
The same options are available through
HWD Standard Toolbar also.
Altair Engineering
Provides options to manage
files (Creating new models,
Opening and Saving models/
Sessions, Importing and
Exporting a Solver Deck,
etc.).
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
6
Main Menu Item Functionality
Alternatives
Edit
Provides options to manage
the pages and windows of a
session (Cut, Copy, Paste,
and Overlay of the page and
window).
Same options are available through
Page Edit Toolbar also.
View
Allows you to manage the
display of the graphical user
interface (the display of
Browsers, Command Window,
Panel Area, Tab Area,
Toolbars, etc.).
Solver Mode
Allows you to switch
between solvers modes
(MotionSolve, ADAMS, and
ABAQUS).
Model
Allows you to access the
following:
Assembly Wizard
Attachment Wizard
Set Wizard Paths
Implicit Graphics
Data Summary
Topology Summary
Analysis
Allows you to access the
following:
Task Wizard
View Reports
Tools
Provides you with access to
various tools and special
utilities:
Check Model – Available in Run panel.
Check Model
Import CAD or Fem – Available in
the Main menu (File > Import >
Import Geometry) and also in the
Freeze Output Ids
HWD Standard Toolbar
.
Import CAD or FE
Model Identification Tool
CG/Inertia Summary
7
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Main Menu Item Functionality
Alternatives
Custom Wizards
Reports
MS UserSub Build Tool
Templex Functions
Options
FlexTools
Provides you with access to
various utilities:
Flex Prep – Used for
generation and translation
of flexbody files.
Flex File Gen - Generates
an animation file for ADAMS
flexbody results.
Fatigue Prep – Helpful in
the translation of MBD
result files to other formats
useful in fatigue analysis.
Load Export – Allows you
to export loads from an
MBD analysis.
Macros
Provides you with access to
macros that are useful for
modeling and model
debugging.
Applications
Allows you to invoke other
HyperWorks applications from
the MotionView graphical
user interface.
Help
Provides you with access to
the online help.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
8
HWD Standard Toolbars
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.
Toolbar
Purpose
Image
Client Selector Selecting the HWD client
from the drop-down list.
Standard
Options for file management
(Creating, Editing, Saving,
Importing, and Exporting of
files etc.).
Page Controls
Options to:
Create and Delete pages
and windows.
Expand, Swap, and
Synchronize selected
windows.
Navigate through
different pages of a
session.
Page Edit
Options to manage pages
and windows of a session
(Cut, Copy, Paste, and
Overlay of a page and
window).
Animation
Toolbar
Provides controls for the
animation of results.
Note - Available in HyperView and HyperGraph only.
Standard
Views
9
Options to view model in
different orthogonal views.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Toolbar
Purpose
3D View
Controls
Options to control the 3D
view of the model (Rotate,
Pan, Zoom, etc.).
2D View
Controls
Options to control the 2D
view of plots (Pan, Zoom,
etc.).
Image
Note - Available in HyperGraph only.
Reports
Options to Create/Open/
Define Report Templates.
Scripting
Options to Create/Open/
Debug/Run Tcl and
HyperMath scripts.
Note - Not available in MotionView.
Image
Capture
Capture Image/Video of the
active page.
Note - Please refer to the Hyperworks Desktop User’s Guide > Graphical User Interface >
Toolbars topic for a detailed explanation of each toolbar listed above.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
10
Client Specific Toolbars
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.
Toolbar
Purpose
General Actions
Options to render graphics,
provide access to the Run panel
(change solver settings and
submit jobs to the solver), and
the Entity Selector.
Image
Depressing the Entity Selector
icon
indicates the graphic
screen is in entity selection
mode. If no other entity icons
are depressed, the selection is
not filtered to a particular entity
(any entity that has a graphical
representation on the screen
can be selected).
11
Container Entity
Select/Add container entities
like Assemblies, Systems, and
Analyses.
Reference Entity
Select/Add entities like Points,
Bodies, Vectors, Markers, etc.
Constraint
Select/Add constraint entities
like Joints, Motions, Couplers,
etc.
Force Entity
Select/Add force entities like
multi-axial Forces, Spring
Dampers, Bushings, Beams,
Contacts, etc.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Toolbar
Purpose
Control Entity
Select/Add entities like Solver
Variables, Solver Arrays, SISO
Controller, Differentials, and
Sensors which are useful in
defining controlled simulations.
General MDL Entity
Select/Add general MDL entities
like Datasets, Templates, Forms
and Output Requests.
Model Check
Checks the model.
Point Macros
Access point creation macros
useful in adding points with
respect to a reference frame,
along a vector, along a curve
and at an arc center.
Other Macros
Other macros useful in modeling
and debugging: calculate
angles, find connected entities,
create markers for a deformable
surface and contact properties
editor.
Image
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):
Left mouse click - Filters selection to a Point entity.
Right mouse click - Opens the Add Point dialog to add a Point.
Note - Mouse over the icons to display a tip about the type of entity that can be selected or
added.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
12
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.
Mouse Options in the Project Browser
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.
13
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
14
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.
15
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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,
Graphic, etc. (while the Entity Selector
and an entity icon is depressed in the
toolbar).
Selection (the selected entity is highlighted by
a white boarder around it).
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 depressed button.
in the toolbar).
Right-click on a model entity.
Displays a context menu with various options:
Select, Cut, and Delete against each entity
name.
Ctrl + Left mouse button
Rotates the model (observe the mouse
tooltip).
Ctrl + Left click
Picks the center of rotation.
Ctrl + Right mouse button
Translates/Pans the model.
Ctrl + Middle mouse button
Selects the window to fit.
Ctrl + Middle click
Fits the model to the window.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
16
The controls for the mouse can be found under Tools > Options > Mouse:
You can customize the mouse controls using this dialog.
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:
Open and Save a model in MotionView.
Add a Page and change the Page Layout in a Session.
Change between HWD clients.
Open and Save a HWD session.
Prior to beginning this tutorial, please copy all of the files from the <Installation directory>
\tutorials\mv_hv_hg\mbd_modeling\introductory to your <working directory>.
17
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Opening a MotionView model file.
1. Start MotionView:
In Windows - go through the Start Menu (Start Menu > Programs > Altair HyperWorks
installation > MotionView).
In Linux - invoke ~hw_install/altair/scripts/mview in an "open terminal" (where
~hw_install is the location where HyperWorks is installed).
In Mac - go through the Applications > Altair HyperWorks > installation version number >
MotionView
OR
invoke ~hw_install/altair/scripts/mview in an "open terminal" (where
~hw_install is the location where HyperWorks is installed).
2. Click the Open Model icon,
, on the Standard toolbar.
OR
From the File menu select Open > Model.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
18
3. From the Open Model dialog, locate and select the model definition file
SingleCylinderEngine_model.mdl, located in your working directory.
Note
19
MDL stands for “Model Definition Language”. MDL is an ASCII programmable language for
modeling in MotionView. See the MotionView Reference Guide for details about the
different MDL statements.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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 (
).
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
20
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.
21
From the Properties tab, observe the Mass and Inertia properties of the body.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Step 2: Selecting and modifying a motion.
In this step you will modify the crank shaft rotational velocity to 10rad/sec.
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
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
22
Browse to the Motions entity in Project Browser and click on
CrankShaft Rotation.
Note
next to Motions and select
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.
2.
From the Motion panel, click on the Properties tab.
3.
Enter 10 in the Value field.
Step 3: Saving a MotionView model.
1. From the File menu, select Save As > Model.
The Save As Model dialog is displayed.
Note
23
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.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
Browse to your working directory and specify the File name: as
SingleCylinderEngine_model_10rad_per_sec.mdl.
3.
Click Save.
Step 4: Solving the model.
1.
Click the Run icon,
, on the General Actions toolbar.
The Run panel is displayed.
2.
Click the Run button 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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
24
3.
Once the job is completed, close the solver execution window.
4.
Clear the message log.
Step 5: Adding pages to a session.
In this section you will learn how to add a page, change to different HWD clients, change the page
layout, and navigate between pages. You will also load the result files to view the animation and the
plot. Even though there are both Animate and Plot buttons in the MotionView Run panel, clicking
those buttons will result in the HyperView and HyperGraph clients opening automatically in different
windows on the same page, however in this exercise you will manually do the same on a different
page, in order to familiarize yourself with the concept of page and window within the HWD
environment.
1.
Click on the Add Page icon
from Page Controls toolbar.
A new page is added with MotionView as the client.
Note
2.
25
Please note that the Add Page option adds a page with the current client (MotionView
in this case).
From the Select application drop-down menu, select HyperView to change the current window
to HyperView.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
From the Load Model panel, click on the Select file icon
next to Load model.
The Load Model File dialog is displayed.
4.
Browse to your working directory and select the animation results file
SingleCylinderEngine_model_10rad_per_sec.h3d.
The Load results field is automatically populated with
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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
26
5.
Click Apply to load the results.
6.
From the Animation toolbar, click the Start/Pause Animation button
results.
7.
Rotate, pan, and zoom the model using the mouse controls for better visualization and
understanding of the results.
8.
Click the Start/Pause Animation button
9.
Add a window to the current page to plot the results.
to animate the
to stop the animation.
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.
27
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
12. Use the Select application drop-down menu to change the application from HyperView
HyperGraph 2D
Note
to
.
The Client selector displays the icon of the current client (HyperGraph in this case).
13. Click the Build Plots icon,
, on the Curves toolbar.
14. From the Build Plots panel, click the Open File icon,
, next to Data file.
The Open Data File dialog displays.
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.
16. Click Open.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
28
17. Plot the angular velocities of the crank shaft:
For X Type, select Time.
For Y Type, select Marker Velocity.
For Y Request, select REQ/70000002.
For Y Component, select Wx.
18. Click Apply and observe Wx = 10 rad/sec.
Two Window Layout (with HyperView and HyperGraph 2D)
19. From the Animation toolbar, click the Start/Pause Animation button
results.
20. Click on Expand/Reduce Window icon,
29
to animate the
to expand or reduce an active window.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
21. Observe the top right corner of the page which displays the current page (2 of 2). Click on
Previous Page icon,
or Next page icon,
page 1 (the MotionView model).
on the Page Controls toolbar to navigate to
MotionView with Single C ylinder Engine Model
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
30
Step 6: Saving a session file.
1.
From the File menu, select Save As > Session.
The Save Session As dialog is displayed.
2.
Browse to your working directory and specify the File name as mywork.mvw.
Note
3.
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.
Click Save.
Your work is saved as a session file.
31
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 7: Opening a session file.
1.
From the File menu, select New > Session to start a new session.
Click Yes to the message asking if you would like to discard all of the current session data and
start new session.
2.
From the File menu, select Open > Session.
The Open Session File dialog is displayed.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
32
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
33
icons.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
File Type
Extension
Window Mode
Session script
.mvw
Any
Report template
.tpl
Any
MDL
.mdl
MotionView
Animation
.gra, .res (Adams and Optistruct),
h3d, .flx, .mrf
HyperView
Plot
.req, .mrf, .abf, .plt, .res (ADAMS)
HyperGraph
Templex script,
any text file
.tpl, .txt
TextView
Options for loading and saving different file types
H3D file use cases in MotionView/MotionSolve:
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.
H3D contains different blocks of information based on the above needs:
Model Information – Nodes and Elements
Flexible Body Information – Modes, Interface Nodes, Mass/Inertia
Results – Position, Displacements, Stress, Strain, etc.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
34
Interactive
MV-1000: Interactive Model Building and Simulation
MV-1035: Importing CAD or FE into MotionView
MV-1011: Extension and Retraction Analysis of the Main Landing Gear of an Aircraft
35
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1000: Interactive Model Building and Simulation
Multi Body Dynamics (MBD) Overview
MBD Definition
Multi Body Dynamics (MBD) is defined as the “study of dynamics of a system of interconnected
bodies”. A mechanism (MBD system) constitutes a set of links (bodies) connected (constrained) with
each other to perform a specified action under application of force or motion. The motion of
mechanisms is defined by its kinematic behavior. The dynamic behavior of a mechanism results from
the equilibrium of applied forces and the rate of the change of momentum.
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:
Rigid body inertia and location
Connections – type, bodies involved , location, and orientation
Forces and motions – bodies involved , location, orientation, and value
MotionView facilitates quick and easy ways of modeling items, such as a system, through graphical
visualization.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
36
In this tutorial, you will learn how to:
Create a model of a four-bar trunk lid mechanism interactively through the MotionView
graphical user interface.
Perform a kinematic analysis on the model using MotionSolve.
Post-process the MotionSolve results in the animation and plot windows.
C ar Trunk-Lid Mechanism
The trunk-lid shown in the image above uses a four-bar mechanism for its opening and closing
motions.
37
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
A schematic diagram of the four-bar mechanism is shown below:
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.
The following entities are needed to build this model:
Points
Bodies
Constraints (Joints)
Graphics
Input (Motion or Force)
Output
Copy trunk.hm and trunklid.hm from the
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive to the <working
directory>.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
38
Exercise
Step 1: Creating points.
1.
Start a new MotionView Session.
2.
Add a point using one of the following methods:
From the Project Browser, right-click on Model and select Add > Reference Entity > Point
from the context menu.
OR
Right-click on the Points icon,
, on the Reference Entity toolbar.
The Add Point or PointPair dialog is displayed.
Note
3.
39
Other entities like Bodies, Markers, etc. can also be created using either of the methods
listed above (Project Browser or toolbar).
For Label, enter Point A.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
For Variable, enter p_a.
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.
Points Panel - Properties Tab
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
40
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
41
Location
Label
Variable
X
Y
Z
Point A
p_a
921
580
1124
Point B
p_b
918
580
1114
Point C
p_c
915
580
1104
Point D
p_d
896
580
1106
Point E
p_e
878
580
1108
Point F
p_f
878
580
1118
Point G
p_g
830
580
1080
Point H
p_h
790
580
1088
Point I
p_i
825
580
1109
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Other (multiple) points can be entered using the following method:
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.
The points panel for Point I is displayed.
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.
Data Summary Dialog
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
42
Since the Y value of all the points are the same, you can parameterize the value by: selecting
the Y coordinate field, clicking on the
button to invoke the Expression Builder, and then
selecting the Y value of Point A as shown in figure below:
Expression Builder
Copy the above expression and paste it into the Y coordinate field of other remaining points.
Enter the X and Z coordinates as listed in the table above.
Note
43
Press ENTER on the keyboard to move to the next field.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Click Close.
8.
Change the view to left, by clicking on the XZ Left Plane View icon
toolbar.
on the Standard Views
Step 2: Creating bodies.
The mechanism consists of four rigid-body links: Ground (car body), Input Link, Coupler, and Follower.
Ground Body is available by default when a new MotionView client is invoked, hence creating the
Ground Body separately is not required. In this step, you'll create the Input Link, Coupler, and
Follower rigid-body links in the mechanism.
1.
Right-click on the Bodies icon,
, on the Reference Entity toolbar.
The Add Body or BodyPair dialog is displayed.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
44
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.
4.
Click the Properties tab.
5. Enter the following values for mass and inertia:
Mass = 1
Ixx, Iyy, Izz = 1000, Ixy, Ixz, Iyz = 0
Click the CM Coordinates tab to specify the location of the center of mass of the body.
6.
45
Select the Use center of mass coordinate system check box.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Under the Origin, click the Point collector
.
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
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
46
Click
again to launch the Select a Point dialog.
Select Point G from the model tree.
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 Coordinate System on the screen
.
47
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
Label
Variable Name
Follower
b_follower
Coupler
b_coupler
10. Specify the mass and inertia for these links as:
Mass = 1
Ixx, Iyy, Izz = 1000, Ixy, Ixz, Iyz = 0
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.
Step 3: Creating revolute joints.
The mechanism consists of revolute joints at four points: A, C, E, and F. The axis of revolution is
parallel to the global Y axis.
1.
From the Project Browser, right-click on Model and select Add > Constraint > Joint from the
context menu.
OR
Click the Joints icon,
, on the Constraint toolbar.
The Add Joint or JointPair dialog is displayed.
2.
Specify the label as Follower-Ground and variable name as j_follower_ground for the new
joint.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
48
3.
Under Type, select Revolute Joint from the drop-down menu.
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
.
The Select a Body dialog is displayed.
49
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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
moves to
8.
.
Click in the graphics window. With the left mouse button pressed move the cursor to the global
XYZ triad
9.
and the cyan border
.
Release the left mouse button when Ground Body is displayed in the graphics window.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
50
10. Under Origin, double click the Point collector
.
The Select a Point dialog is displayed.
11. Select Point A as the joint origin.
12. Click OK.
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.
Revolute Joint Label
Variable Name
Follower-Ground
Body 1
Body 2
Point
Vector
j_follower_ground Follower
Ground
A
Global Y
Follower-Coupler
j_follower_coupler Follower
Coupler
C
Global Y
Coupler-Input
j_coupler_input
Coupler
Input Link E
Global Y
Input-Ground
j_input_ground
Input Link Ground
F
Global Y
Revolute joint information
Step 4: Specify a motion for the mechanism.
The input for this model will be in the form of a Motion. A Motion can be specified as Linear,
Expression, Spline3D, or Curve. In this step, a Motion is specified using an expression.
1.
From the Project Browser, right-click on Model and select Add > Constraint > Motion from the
context menu.
OR
Right-click on the Motion icon,
, on the Constraint toolbar.
The Add Motion or MotionPair dialog appears.
51
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
4.
From the Connectivity tab, double click on the Joint collector
.
The Select a Joint dialog is displayed.
5.
From the model tree, select the revolute joint at Point F (Input-Ground) that you created in the
previous step.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
52
6.
Click OK.
The Motion panel is displayed.
7.
From the Properties tab, select Expression by clicking on the downward arrow next to Linear.
8.
Click in the Expression field.
The Expression Builder is activated.
9.
53
Click on the
button to open the Expression Builder and enter following expression between
the back quotes `60d*sin(2*0.1*PI*TIME)`.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The above expression is a SIN function with an amplitude of 60 degrees and frequency of 0.1 Hz.
With the above expression the trunk lid is opened to an angle of 60 degrees and back in a total
time period of 5 seconds.
10. Click OK.
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.
Step 5: Creating outputs.
You can create outputs using bodies, points and markers. You can also directly request force,
bushing, and spring-damper entity outputs. Another way to create outputs is to create math
expressions dependent on any of the above mentioned entities.
In this step, you will:
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
Right-click on the Outputs icon,
, on the General MDL Entity toolbar.
The Add Output dialog is displayed.
2.
Specify the label as Input Link Displacement and the variable name as o_disp for the new
output.
3.
Click OK.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
54
4.
To create a Displacement output between two points on two bodies:
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.
Record the displacement on Both points, one relative to the other.
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:
From the drop-down menu, select Expressions.
Click in the F2 field. This activates the
Click on the
button.
button.
The Expression Builder dialog is displayed.
From the Motion tab, select DX.
Place the cursor inside the brackets after DX.
From the Properties tab, expand the following trees: Bodies/Input Link/Marker CM.
Select idstring.
55
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Click Add to populate the expression.
Add a comma to separate the next expression.
Add a pair of curly brackets "{}".
Place the cursor inside the added brackets.
From the Properties tab, expand the following items in the tree: Markers/Global Frame.
Select idstring.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
56
Click Add to populate the expression.
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.
57
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Step 6: Add graphic primitives.
At this stage your trunk lid model does not contain any graphics, and the entities created in previous
steps are represented only by implicit graphics (which are not available in solver deck or results file).
Trunk-lid with only implicit graphics
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..’ 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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
58
MotionView allows you to turn on and off implicit graphics for some of the commonly used modeling
entities.
1.
To turn on all implicit graphics:
From the Model main menu, select Implicit Graphics...
Turn on the Visible check box.
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:
You create a new model in another model window.
You start a new session.
You load an existing .mdl/.mvw file into a new MotionView session.
59
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
To visualize the four-bar mechanism, you need to add explicit graphics to the model. In this
step, you will add cylinder graphics for Follower, Coupler, and Input Links.
To add explicit graphics to your model:
From the Project Browser, right click on Model and select Add > Reference Entity >
Graphic from the context menu.
OR
Right-click on the Graphics panel icon,
, on the Reference Entity toolbar.
The Add Cylinder or CylinderPair dialog is displayed.
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.
3.
From the Type drop-down menu, select Cylinder. Click OK.
4.
In the Connectivity tab, double-click the Body button
Follower from the Select a Body list and click OK.
below Parent. Select the
This assigns the graphics to the parent body.
5.
To select the origin point of the cylinder, click
6.
Pick Point A in the graphics area.
7.
Click
below Origin.
under Direction.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
60
8.
Select Point C for
9.
From the Properties tab, enter 2 in the Radius 1: field.
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.
61
Label
Variable name
Graphic type
Body
Origin
Direction Radius
Follower
Cylinder
gcyl_follower
Cylinder
Follower
Point A
Point C
2
Coupler
Cylinder
gcyl_coupler
Cylinder
Coupler
Point C
Point E
2
Input Link
Cylinder 1
gcyl_inputlink_1 Cylinder
Input Link
Point F
Point E
2
Input Link
Cylinder 2
gcyl_inputlink_2 Cylinder
Input Link
Point E
Point G
2
Input Link
Cylinder 3
gcyl_inputlink_3 Cylinder
Input Link
Point G
Point H
2
Input Link
Cylinder 4
gcyl_inputlink_4 Cylinder
Input Link
Point H
Point I
2
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
After the addition of cylinder graphics for all three links, the Model will look as shown below:
Four-bar mechanism of the trunk-lid assembly
Step 7: Add external graphics and convert a HyperMesh file to an H3D file.
MotionView has a conversion utility that allows you to generate detailed graphics for an MDL model
using HyperMesh, Catia, IGES, STL, VDAFS, ProE, or Unigraphics source files. MotionView uses
HyperMesh to perform the conversion.
In this step, you will use this conversion utility to convert a HyperMesh file of a car trunk lid into the
H3D format.
1.
From the Tools menu, select Import CAD or FE… .
Or
Click on the Import Geometry icon
on the Standard toolbar.
The Import CAD or FE dialog is displayed.
2.
Activate the Import CAD or Finite Element Model Only radio button.
3.
From the Input File option drop-down menu, select HyperMesh.
4.
Click the browser button
directory>, as your input file.
5.
Click the file browser button
next to Output File and specify the name for the output H3D
files as trunklid.h3d under <working directory>.
Altair Engineering
next to Input File and select trunklid.hm, located in <working
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
62
6.
Click OK to begin the import process.
The Import CAD or FE utility runs HyperMesh in the background to translate the HyperMesh file
into an H3D file.
Note
7.
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.
Click OK when the Import was a Success! message is displayed.
Important - Please also make sure to refer to the Message Log for unit conversion
information.
63
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8.
Use steps 1 through 7 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.
1.
Click the Graphics icon
on the Reference Entity toolbar.
2.
Select g_trunklid - from the graphics area.
3.
In the Connectivity tab, double click the Body collector
Link from the Select a Body list.
4.
Click OK.
under Parent. Select Input
The Graphics panel is displayed.
Note
Observe the change in the trunk lid graphic color to the Input Link body color.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
64
5.
Similarly, select the newly created g_trunk graphic from the Project Browser and set the
as Ground Body.
6.
Click the Save Model icon
on the Standard toolbar.
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.
65
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8. Click Save.
Trunk-lid mechanism
Step 9: Solve the model with MotionSolve.
MotionSolve can be used to perform kinematic, static, quasi-static, and dynamic analyses of multibody mechanical systems. The input file for MotionSolve is an XML file called MotionSolve XML. The
solution in MotionSolve can be executed from MotionView.
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.
1.
Click the Run icon,
, on the General Actions toolbar.
2.
Click on the Check Model button
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.
on the Model Check toolbar to check the model for errors.
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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
66
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.
8.
Check the Message Log for more information.
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.
1.
Click the Animate button.
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.
3.
To stop/pause the animation, click the Start/Stop Animation icon again,
4.
Return to the MotionView window.
5.
Click the Plot button.
, on the toolbar.
This opens HyperGraph and loads the results file in a new window.
67
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
Leave the X-axis Data Type as Time.
7.
Input the following y-axis data:
Y Type
Marker Displacement
Y Request
Displacement (on Input Link)
Y Component
DM (Magnitude)
8. Click Apply.
This plots the magnitude of the displacement of Point I relative to the Global Origin.
Your session should look like the figure below:
Session with model, plot, and animation
Step 11: Save your work as a session file.
1.
From the File menu, select Save As > Session File.
2.
Specify the file name as trunklid_mechanism for your session.
3.
Click Save.
Your work is saved as trunklid_mechanism.mvw session file.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
68
Appendix
Evaluating Expressions in MotionView
Expressions in MotionView are evaluated by two kinds of parsers:
Math Parser
A MotionView parser that evaluates a MotionView expression as real/integer/string for a field as
appropriate.
Real
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.
Example: p_a.x, b_0.mass
String
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.
For example in the expression ` DX({b_inputlink.cm.idstring},
{Global_Frame.idstring})` , the templex evaluates the ID (as a string) of the cm of the
Input link body (b_ inputlink) and that of marker Global Frame while retaining “DX” as is.
69
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
70
MV-1035: Importing CAD or FE into MotionView
This tutorial introduces you to an important modeling approach: Building an MBD model from CAD data.
In this tutorial, you will learn to:
Import a CAD assembly into MotionView.
Import a CSV file to create Points
Create an MBD model using the imported data.
Import CAD or FE Utility Introduction
The Import CAD or FE utility in MotionView allows you to import CAD or FE assemblies. CAD formats
include CATIA, Parasolid, Pro E, STEP, JT, SolidWorks and Unigraphics. FE formats include
HyperMesh, Optistruct, and Nastran. To access this utility, from the menu bar select Tools > Import
CAD or FE or File > Import > Geometry,
. The Import CAD or FE dialog is displayed.
CAD or FE assemblies can be imported into MotionView as graphics only to be associated with existing
bodies, or as new bodies with calculated mass and inertia properties along with graphics.
The multi-body aspects of any CAD assembly that can be imported in MotionView are:
Component Mass
Component Moments of Inertia
Component Center of Gravity Location
Component Graphics
The CAD import utility calls HyperMesh in the background to write out graphic file (*.h3d) which holds
the geometry information in a tessellated form. While importing CAD or FE to create new bodies with
mass and inertia, the utility uses HyperMesh to calculate mass, inertia and CG location.
Exercise
In the following exercise, we will import a CAD assembly into MotionView, simplify the model from a
multi-body analysis point of view, and define constraints, model inputs and model outputs.
All the files necessary to complete this exercise are located at:
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\automation\CAD\
Please copy all the files from this folder into your <working directory>.
71
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Loading the CAD file into MotionView.
In this step, we will focus on understanding the process of import and model simplification.
1.
Launch a New session,
, of MotionView.
2.
From the menu bar, select File > Import > Geometry,
Or
Click on the Import Geometry icon,
, on the Standard toolbar.
The Import CAD or FE dialog is displayed.
3.
Under Import Options, select Import CAD or Finite Element Model With Mass and Inertias.
4.
From the Input File pull-down menu, select STEP.
5.
Click the
6.
Select the file Front Assembly.step from your <working directory>.
7.
Click Open.
8.
Click the Output Graphic File icon,
9.
Click Save.
icon to select the STEP file.
Altair Engineering
, and specify front_assembly.h3d as the H3D filename.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
72
10. Click the plus button,
Note
, next to MDL Options and review the various options.
The MDL Options allow for flexibility while importing. The CAD file can be imported either
in an existing System/Assembly or a new System can be created
For this exercise, accept the defaults.
11. Click the plus button,
Note
This option helps control the size of mesh (or tessellation). When the MBD model being
created is used to solve non-contact problems, use the default Allow Hypermesh to
specify mesh options. The Launch Hypermesh to create MDL points option allows
you to select nodes in HyperMesh which can be imported into MotionView as MDL points.
This is not needed for this tutorial since you will be creating these additional points
using a Tcl Macro. The Interactive mesh (launches HyperMesh) option can be used
to mesh the surfaces manually. This is particularly useful when a finer mesh may be
needed, such as in case of contact problems, to obtain better results.
12. Click the plus button,
review the options.
73
, next to Meshing Options for Surface Data and review the options.
, next to Locator Points (Must be in source reference frame) and
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Note
The Locator Points options can be used in cases where the CAD model being imported is
not in the same coordinate system as the MBD model in MotionView. This option gives
you control to specify three nodes or coordinates on the source graphic which can then
be used to orient using three points in MotionView after it's imported. This option is not
needed for tutorial as the imported graphic is in the required position. Select None from
the options
13. Click OK.
The Import CAD dialog is displayed.
Note
This dialog helps to generate mass and inertia information. The table displays different
bodies or components being imported along with the volume and mass information based
on a default density of 7.83e-6. The density value can be modified for each of the
components. Alternatively, a CAD summary file can be used to extract mass/inertia
14. Set Input file length to Millimeter.
15. Under Component, select Wheel_body1. In the Apply density to selected components
field, change the value of the density to 8.5e-7 and click Apply.
Import C AD dialog
16. Leave the default value of the density for the other components. Click OK.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
74
17. If the import into MotionView is successful, a message box is displayed as shown below.
18. Click OK and clear the Message log.
The body, along with the associated graphics, is displayed in the graphics area.
Note
The Extract mass/inertia data from CAD summary file: option can be used only for
CATIA summary file. Currently, summary files from other CAD packages are not
supported under this option.
Step 2: Consolidate and rename the suspension assembly bodies.
1.
There are three bodies with their names prefixed with Strut_rod. These bodies in reality are
joined together and hence can be represented as one body. Having these bodies separate
increases the complexity of the model, and we are not interested in their interactions with each
other. We will merge these three bodies into one.
2.
In the Project Browser, select these bodies: Strut_rod_1_body1, Strut_rod_body1 and
Strut_rod_body2. Right-click to bring up the context menu.
75
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Select the Merge option. This option is used to merge two or more bodies into a single body.
4.
From the Merge Bodies dialog, enter Strut_rod as the label and b_Strut_rod as variable name.
Click OK.
5.
The three selected bodies are deleted and replaced by a new body with the label and variable
names as entered in step 4. The mass and inertia values of this body are equivalent to the
effective mass and inertia of the bodies being replaced.
6.
Repeat steps 2 to 4 for merging the bodies: Strut_tube_1_body1 and Strut_tube_body1. Enter
the label as Strut_tube and variable name as b_Strut_tube for the new body to be created..
7.
From the Project Browser, select Wheel_body1 (Wheel part) .
8.
Press F2 or right-click on Wheel_body1 and select Rename.
9.
Change the label of the selected body to Wheel.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
76
10. Similarly, rename the following parts:
S. No
Original Label
New Label
1
Wheel_Hub_body1
Wheel_Hub
2
Lower_Control_Arm_body1
Lower_Control_Arm
3
Axle_Shaft_body1
Axle_Shaft
11. Save the model as front_susp.mdl.
Notes on the Merge Bodies option:
77
o
Mass and inertia of the newly created body upon Merge will be equal to the effective mass
and inertias of the bodies being merged.
o
A new CG point is created at the effective CG location of the bodies being merged.
o
Pair bodies cannot be merged.
o
The Merge option works only within same container (System/Assembly/Analysis). Merging
bodies which belong to different container entities is not supported. The context menu item will
not appear in these cases.
o
If the bodies that are being merged are referred to in expressions, post Merge these
expressions need to be corrected to point to the newly created body.
o
Graphics that belong to bodies being merged are automatically resolved to the new body.
o
Joints, bushings etc. that are associated with the bodies being merged if any, are
automatically resolved to the new body.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 3: Create points.
After creating the bodies, additional points are needed that will be used to specify joint locations and
joint orientations. These points can be created using the macros available in the Macros menu.
1.
From the Macros menu, select Create Points > Using Coordinates or click the Create points
using Coordinates icon,
Altair Engineering
.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
78
2.
Click
3.
Select the file suspension_points.csv from your working directory.
4.
Click Open. All the point coordinates in the CSV file are imported into the utility.
5.
Specify Varname prefix as p_susp.
79
to load a point table file.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
Click OK.
The points are added to the model. These extra points will be used for defining joints,
orientations and other model inputs.
Note
To use this macro import option, you have to create the *.csv file in the format shown
below:
1st Column - X coordinates.
2nd Column - Y coordinates.
3rd Column - Z coordinates.
7.
Save the model,
.
Step 4: Creating joints and spring damper.
In this step, we will add the joints to connect the bodies and a spring damper between Strut tube and
Strut rod.
1.
From the Project Browser, right-click Model and select Add > Constraint > Joint (or right-click
the Joints icon,
, from the toolbar).
The Add Joint or JointPair dialog is displayed.
2.
Specify the Label and Variable as Wheel Spindle RJ and j_whl_spindle_revj, respectively.
3.
For Type, select Revolute Joint.
4.
Click OK.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
80
5.
For Body1 of the joint, specify Wheel.
For Body2, specify Wheel_Hub.
For Origin, specify Point7. (Point around the Wheel center).
For Axis, specify Point19. (Point around Axle Shaft center).
6.
Add the rest of the joints of the model using the table below:
S.N Label
o
7.
Type
Body 1
Body 2
Origin(s) Orientati Referenc Referenc
on
e1
e2
Method
Point8
1
Strut Hub Fixed Joint
Fix
Wheel_Hub
Strut_rod
2
Strut
Trans
Strut_rod
Strut_tube Point23
Axis(Pt)
3
Strut
Universal Joint Strut_tube
Tube
Ground UJ
Ground
Body
Shaft(Pt) Point23
4
Axle Hub Fixed Joint
Fix
Axle_Shaft
Wheel_Hub Point19
5
Hub
Control
Arm Ball
Ball Joint
Lower_Contr Wheel_Hub Point3
ol Arm
6
Control
Arm
Ground
Rev
Revolute Joint Lower_Contr Ground
ol Arm
Body
Translation
Joint
Point9
Point9
Global X
Shaft(Ve
ct)
Point1
Axis(Pt)
Point2
From the Project Browser, right-click Model and select Add > Force Entity > Spring Dampers
(or right-click the Spring damper icon,
, from the toolbar).
8.
Specify the Label and Variable as Strut-SpringDamper and sd_strut, respectively.
9.
Check Create explicit graphics check-box to create an explicit graphic for the spring damper
entity.
10. Click OK.
81
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
11. For Body1 and Body2, specify Strut_tube and Strut_rod, respectively.
12. For Point1 and Point2, specify Point9 and Point0, respectively.
13. Click the Properties tab and specify a stiffness (K linear) of 10 and damping (C linear) of
0.1.
14. Save the model.
Step 5: Add a Jack to the model.
1.
Next, add a jack to this model and use the jack exercise the wheel through a vertical motion.
From the Project Browser, right-click Model and select
Add >Reference Entity > Body (or right-click the Bodies icon,
body with Label and Variable as Jack and b_jack, respectively.
, from the toolbar). Add a
2.
Click the body Properties tab and specify the Mass and the three principle inertia values of the
body as 0.01, 100, 100, and 100, respectively.
3.
Click the CM Coordinates tab and select the Use CM Coordsys check box.
4.
Pick Point10 (bottom of Wheel body)as the CM Origin point for the Jack body.
5.
From the Project Browser, right-click Model and select Add > Reference Entity > Graphic (or
right-click the Graphic icon,
, from the toolbar) to add a graphic. Specify the Label of the
graphic as Jack Plate and select the Type as Cylinder from the drop-down menu.
6.
Accept the default variable.
7.
From the Connectivity tab, select the Parent Body as Jack.
8.
Pick Point10 as the Origin. For Direction, toggle to Vector and select Global Z.
9.
Click the Properties tab. Specify a value of -30 in the field next to it.
10. Specify a value of 250 for Radius 1.
Notice that the Radius 2 field is updated with the same value as Radius 1.
11. From the Project Browser, right-click Model and select Add > Constraint > Joint (or right-click
the Joints icon,
, from the toolbar). Specify the Label and Variable as Jack Wheel Inplane
and j_jack_wheel, respectively. For Type, select Inplane Joint from the drop-down menu.
12. Click OK.
13. From the Connectivity tab, select Wheel as Body1, select Jack as Body2, pick Point10 as
Origin and Vector Global Z as Normal.
14. Add another joint and specify the Label and Variable as Jack Ground Trans and j_jack_grnd,
respectively. For Type, select Translational Joint.
15. Click OK.
16. From the Connectivity tab, select Jack as Body1, Ground Body as Body2, pick Point10 as
Origin and Vector Global Z as the Alignment Axis.
17. All the joints required to complete the model are now in place.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
82
18. Save the model.
Front suspension
Step 6: Specifying motion inputs and running the model in MotionSolve.
In this step, we will create a motion that is applied to the jack and solve the model.
1.
From the Project Browser, right-click Model and select Add > Constraint > Motion (or rightclick the Motion icon,
, from the toolbar) to add a motion. For Label, specify Jack Motion.
For Variable, specify mot_jack.
2.
From the Connectivity tab, select Jack Ground Trans (the translation joint between Jack and
Ground Body) as the Joint.
3.
From the Properties tab, change the property type to Expression from the pull-down menu.
Type in the expression `50*sin(TIME)` as the displacement Motion expression.
4.
Add another motion to arrest the free spinning of the wheel. Add a motion and specify the label
and variable name as Wheel Spindle and mot_wheel, respectively.
5.
From the Connectivity tab, select Wheel Spindle RJ as the Joint.
6.
From the Properties tab, verify that the value of the Motion is 0.0.
This motion of 0.0 radians keeps the Wheel body from spinning freely about its axis.
7.
Save the model.
8.
Click Check Model
toolbar. In the Message Log that is displayed, verify that there are no
warnings or errors. Clear the message log.
83
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9.
Go to the Run panel,
.
10. Specify a name for the MotionSolve input XML file by clicking the Save and run current model
icon,
.
11. From the Simulation type: drop-down menu, select Static+Transient.
12. Click Run.
13. Once the run is complete, click Animate to view the animation of the simulation.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
84
MV-1011: Extension and Retraction Analysis of the
Main Landing Gear of an Aircraft
In this tutorial, you will learn how to create a sequential simulation script to simulate the extension
and retraction of the landing gear.
Sequential Simulation
Often, the total dynamic behavior of a multi-body model needs to be captured through more than one
solution sequence. Typical examples include:
1.
The model configuration changes after a certain amount of time.
2.
One type of analysis has to occur before the other. For example, a static solution is required
before a dynamic run.
3.
Complex models may not solve with a single solver setting. The solver settings may need to be
changed for a certain period in the overall simulation time.
Such conditions may be simulated by providing a set of commands to the solver that achieves the
above type of sequences. Such simulations are referred to as sequential simulations. Generally,
the solver receives more than one solution (simulate) command. You’ll learn to script such a
simulation sequence through this exercise.
Exercise
In this exercise, a landing gear mechanism is simulated for its extension and retraction. A sequence of
simulations need to be scripted such that the mechanism is retracted within a certain period of time at
which the simulation is halted, the model configuration is changed for retraction and the solution is
executed again for extension.
85
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Main Landing gear of an aircraft
Note
Copy the files MainLandingGear.mdl, Aircraft_Structure.hm and MainLandingGear.h3d
from the location
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive\aero to
your <Working directory>.
Phase 1
In this phase, you will prepare the landing gear model to simulate the retraction of the landing gear.
Step 1: Opening the landing gear mechanism.
In this step, you will open a landing gear model and attach a graphic for the aircraft body.
1.
From the Model-Main toolbar, click the Open Model icon,
.
Or
Open model by selecting File > Open > Model.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
86
2.
From the Open model dialog, select the file MainLandingGear.mdl and click Open.
Once the model is loaded it will look as it does below. Review the model for its bodies and joints.
The model consists of linkages of the cylinder and piston that hold the wheel as well as linkages
for the extension and retraction of the whole landing gear unit within the aircraft body. The
model also contains a body defined for aircraft but without graphics. As a first step, you’ll add a
graphic for the aircraft body part for visual representation.
Main landing gear mechanism
Use a HyperMesh file to create a graphic for the aircraft body.
3.
From the Tools menu, select the Import CAD or FE utility.
4.
Select the option Import CAD or Finite Element Model Only. With this selection, only the
graphics will be imported without creating any bodies.
5.
For Input File, select HyperMesh. For Output File, select H3D.
6.
Click the Input File file browser icon,
, and select the HyperMesh file
Aircraft_Structure.hm as the input file.
7.
Save the file as Aircraft_Structure.H3D in the working directory.
8.
Click OK.
9.
When the H3D file is generated and the graphic is imported, the import success message is
displayed. Click OK.
87
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
10. Click the Graphics icon
in the MotionView toolbar.
The model after importing a graphic for the aircraft body.
11. Select the just-added graphic from the Graphic area. The panel for the aircraft body is displayed
12. From the Connectivity tab
Resolve the Body collector to Aircraft 5.
The H3D file has only one component, (aircraft_body), so the Component list can be set to
All or use the drop-down menu to select the the sole component.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
88
Step 2: Defining a motion to retract the landing gear.
In this step, define the motion to retract the landing gear.
1.
From the Project Browser, right-click on Model and select Add Constraint > Motions (or rightclick the Motions icon,
, from the toolbar). Add a motion with Label as Retraction Motion
and Varname as mot_ret. Resolve the Joint to the Cylindrical Joint ActPis_ActCyl_Cyl
(shown in the image below), which is defined between the bodies Activating Cylinder and
Activating Piston.
Rev joint
2.
From the Motion panel > Properties tab, under Define by, select Expression. In the
Expression field, enter the expression `STEP(TIME,0,0,5,-750)`.
Note: The above STEP expression ramps the value of motion from 0 at 0 second to -750 at 5
seconds. For more information on this solver function available within MotionSolve, please refer
the RADIOSS, MotionSolve and Optistruct on-line help.
89
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Add another motion and name it Aligning_Motion. Resolve the Joint to the Cylinderical Joint
LnkCyl_LnkPis_Cyl defined between the MLG Cyl and MLG Pis bodies (see the image below).
Translation joint
4.
From the Properties tab of the panel, under Define by, select Expression. In the Expression
field, enter the expression `STEP(TIME,0,0,2,-100)`.
5.
Save your model as landinggear_motion.mdl.
Step 3: Running a dynamic analysis to simulate the retraction of the main
landing gear.
In this step, run a transient analysis of the main landing gear mechanism.
1.
In the Run panel, set the End time to 5 seconds.
2.
Click the Save and run current model browser button and enter the name for the run file as
lg_retract.xml. Click Save.
3.
Click Run. Once the simulation is completed, close the solver window and the Message Log.
4.
From the Run panel, review the results animation by clicking on Animate button.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
90
Phase 2
In this phase, write a Templex template to script and run a sequential simulation to simulate the
retraction and extension of the landing gear mechanism.
Step 1: Defining an extension motion for the landing gear.
In this step, model the extension motion of the landing gear.
1.
From the Project Browser, right-click Model and select Add Constraint > Motions (or rightclick the Motions icon,
, from the toolbar). Add another motion with Label as Extension
Motion and Variable Name as mot_ext. Resolve the motion to the same joint for which the
Retraction Motion has been defined.
2.
From the Properties tab, set the type of motion as Expression and enter the following in the
Expression field: `STEP(TIME,5,-750,10,0) `.
Step 2: Defining a template to run the sequential simulation.
In this step, write a template to script a sequential simulation.
1.
From the Project Browser, right-click on Model and select Add > General MDL Entity >
Template (or right-click the Template icon,
Varname and click OK.
, from the toolbar). Specify a Label and
2.
For Type, select Write text to solver command file.
3.
Enter the script given below. The entries in the curly braces {}, refer to the idstring of either
Extension Motion or Retraction Motion. These idstring attribute can also be accessed using
the Expression builder,
.
Note: The following commands are MotionSolve command statements in the XML format. Since
the solver refers to entities through their ID numbers, the element_id value is resolved to the
motion IDs. If you have used different varnames for the motions than mentioned below, the text
could differ.
<!—-Deactivate the extension motion first -->
<Deactivate
element_type = "MOTION"
element_id
= "{MODEL.mot_ext.idstring}"
/>
<!—-Simulate for 5 seconds -->
<Simulate
91
analysis_type
= "Transient"
end_time
= "5.0"
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
print_interval
= "0.01"
/>
<!—-Deactivate the retraction motion -->
<Deactivate
element_type = "MOTION"
element_id
= "{MODEL.mot_ret.idstring}"
/>
<!—-Activate the extension motion that was deactivated during the first simulation ->
<Activate
element_type = "MOTION"
element_id
= "{MODEL.mot_ext.idstring}"
/>
<!—-Simulate for 5 more seconds -->
<Simulate
analysis_type
= "Transient"
end_time
= "10.0"
print_interval
= "0.01"
/>
<STOP/>
<!—- Stop the simulation. Any further commands below this command will
not be executed -->
The above script has five blocks.
Block 1 – Deactivates the motion which defines the extension of the landing gear.
Block 2 – Simulates the model for the retraction of the landing gear.
Block 3 – Deactivates the motion used to retract the landing gear
Block 4 – Activates the motion which defines the extension of the landing gear.
Block 5 – Simulates the model for the extension of the landing gear.
The Stop command is used to stop the simulation at the time set in the last Simulate block.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
92
NOTE: A template can be used either to add modeling entities to the solver deck, such as joints,
markers, and so on, that may not be supported by MotionView, or command entities such as
simulation parameters, activation and deactivation, and so on. The MotionSolve XML is divided
into two sections.
1. Model section: All model elements are defined. To write to this section from the template, for
Type select Write text to Solver input deck.
2. Command section: Commands for the solver simulation are defined. To write to this section
from the template, for Type select Write text to Solver command file.
Step 3: Simulating and animating the model.
In this step, run the model to simulate the retraction and extension of the main landing gear model
and animate it.
1.
From the Run panel, specify the filename as MLG_Simulation.xml and click Run.
2.
Once the solution is complete, close the HyperWorks Solver View window.
3.
Click the Animate button and review the animation.
Phase 3
In this phase, you will create output requests and re-run the model to measure the Angular
Displacement and Angular Velocity of the landing gear.
1.
From the Project Browser, right-click on Model and select Add > General MDL Entity >
Outputs (or right-click the Outputs icon,
2.
, from the toolbar).
Create an output request. From the Outputs panel:
Set Type to Displacement and Entity.
Use the drop-down menu to select the Joint collector.
For the Joint, select the Revolute Joint between the Main LG Cylinder and Aircraft-5,
MLG_Ac_Rev.
3.
93
Create another output request to measure the velocity at the same joint as above.
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
Re-run the analysis with these output requests and plot the requested results from the generated
PLT file in HyperGraph.
5.
Save your model and exit your HyperWorks session.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
94
Animation
MV-5000: Rigid body Animation - Basic
MV-5010: Rigid body Animation - Advanced
95
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-5000: Rigid body Animation - Basic
Introduction
In this tutorial, you will learn how to:
Use some features available for post-processing animation results in HyperView
Control the display of the simulation results using Entity Attributes
HyperWorks animation functions allow you to view your model in motion. The three animation types
include transient, linear, and modal. You can select the animation type from the animation types
drop-down menu.
Animation types menu
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.
Linear
Linear animation creates and displays an animation sequence that
starts with the original position of the model and ends with the fully
deformed position of the structure or multi-body system. An
appropriate number of frames are linearly interpolated between the first
and last positions. Linear animation is usually selected when results are
from a static analysis.
Modal
Modal animation creates and displays an animation sequence that
starts and ends with the original position of the structure or multi-body
system. The deforming frames are calculated based on a sinusoidal
function. Modal animation is most useful for displaying mode shapes.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
96
Multi-body Analysis Types, Animation Mode Settings, and File Types
The tables below show the animation analysis types, mode settings, and the model and results file
types required to animate MotionSolve and Adams results.
Multi-body
Analysis Type
Animation
Mode Setting
Parts in Model
Model
File
Results
File
Transient/Static/
Quasi-Static
Transient
Rigid or Flexible Bodies
H3D
H3D
Linear
Modal
Rigid or Flexible Bodies
H3D
H3D
Parts in Model
Model
File
Results
File
Animation Information for MotionSolve Results
Multi-body
Analysis Type
Animation
Mode Setting
Transient/Static/
Quasi-Static
Transient
Purely rigid
GRA
GRA
Transient/Static/
Quasi-Static
Transient
One or more flexible bodies
FLX
FLX
Linear
Modal
Purely rigid
GRA
RES
Linear
Modal
One or more flexible bodies
FLX
FLX
Animation Information for Adams Results
Step 1: Viewing and Controlling Animation Files.
In this exercise, you will view and control the pendulum animation based on the files output by
MotionSolve.
Note Copy all the h3d files from the location <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\animation\ 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
.
97
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Click the Load Results icon,
, from the Standard toolbar.
The Load model and results panel is displayed.
Load model and results panel
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.
HyperView loads the animation file.
7.
Click the XZ Left Plane View icon
of the model.
8.
Click the Start/Pause Animation icon,
9.
Right-click on the Fit Model/Fit All Frames icon
entire animation in the window.
10. Click the Animation Controls icon,
on the Standard Views toolbar to change to the left view
, on the Animation toolbar to start the animation.
on the Standard Views toolbar to fit the
, on the Animation toolbar.
From this panel, you can control the parameters like speed, start time, end time of the animation.
Animation C ontrols panel
Drag the vertical slider bar on the left to change the animation speed from fast to slow.
Current time: show all the time steps.
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.
Altair Engineering
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
98
11. Click the Start/Pause Animation icon,
, on the Animation toolbar to stop the animation.
Step 2: Tracing Entities.
HyperView allows you to trace the path of any moving part while animating.
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.
5.
Change the view to the Iso
6.
Under Tracing mode: select Last and specify 10 as the steps.
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.
9.
Try the From First Step and All Steps options.
view.
10. Use the Display Options to change the line color and thickness.
Step 3: Tracking Entities.
The Tracking option allows one of the parts of the animation to be fixed to the center of the
animation window and the rest of the parts move relative to the tracked part.
1.
Add a new page to the session by clicking on the Add page button,
toolbar.
2.
Load the animation file front_ride.h3d from your working directory.
99
MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
, on the Page Controls
Altair Engineering
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,
Results toolbar.
, button on the
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.
6.
Select the Displacements and/or Rotations to track the part.
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.
Step 4: Editing Entity Attributes.
In this exercise, you will edit the graphic entity attributes.
1.
Retain the model front_ride.h3d loaded in the previous exercise Step 3 above.
2.
Click the Entity Attributes icon,
, on the Visualization toolbar.
The Entity Attributes panel is displayed.
Entity Attributes panel
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.
Altair Engineering
MotionView 13.0 Tutorials 100
Proprietary Information of Altair Engineering
5.
To change the color of the entire model:
Select Assembly Hierarchy from the Entity option menu.
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.
6.
To change the entire model to wire frame:
Click All from the list of buttons next to the entity list tree.
Click the Wire Frame icon,
7.
, beside Shaded.
To make the entire model transparent and shaded:
Click All from the list of buttons next to the entity list tree.
Click the Shaded icon,
.
Click the Transparent icon,
.
8.
Use the On/Off buttons to turn the entities on or off.
9.
Use the On/Off buttons next to ID: to display and hide the entity IDs.
101 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-5010: Rigid body Animation - Advanced
Introduction
In this tutorial, you will learn how to:
View force and moment vectors from a MotionSolve results file.
Use the collision detection feature
Use the measure panel to extract information from the animation results
Step 1: Force and Moment Graphics.
HyperView allows you to view the change in force and moment in the form of dynamic vectors that
represent the magnitude and direction of the force and moment.
Copy all the h3d files from the location <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\animation\ to your <working directory>.
1.
Start a new MotionView session or refresh your MotionView session by pressing SHIFT+F9.
2.
Change the application on the page to HyperView.
3.
Load the MotionSolve result file front_ride.h3d from your working directory.
4.
Click on Vector icon,
, on the toolbar.
Vector panel
5.
Under the Result type: select Force (v).
6.
Under Display options: select By Magnitude for Size scaling.
7.
Click on Apply.
8.
Now, animate the results by clicking on the Start/Pause Animation button,
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.
Altair Engineering
MotionView 13.0 Tutorials 102
Proprietary Information of Altair Engineering
11. For the Result type: now select Moment (v).
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.
Step 2: Using the Collision Detection Option.
1.
Click the Add a page button,
, from the toolbar.
2.
Use the Select Application menu to select HyperView as the application.
3.
Click the Load Results icon,
on the toolbar.
The Load Model and Results panel is displayed.
4.
Click the Load model file browser
and select collision.h3d, from your working directory.
5.
Click the Load results file browser
specified in Step 4 above.
6.
Click Apply.
7.
Click the Start/Pause Animation icon,
8.
After the file is read, click the Start/Stop Animation icon,
and select collision.h3d from the same location
, to animate the model.
, to stop the animation.
103 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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).
The Collision Detection panel is displayed.
C ollision Detection panel
10. Click the Add button in the leftmost column under Collision Sets to add a new collision set.
11. Pick the Trunk body in the graphics area.
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 User's Guide) to learn more about using this selection method.
12. Click the Add to Group A button.
13. Next, pick the Car body in the graphics area.
14. Click the Add to Group B button.
15. Under the Proximity section, click Enable Proximity checking and specify the Minimum
Distance for the proximity check.
Altair Engineering
MotionView 13.0 Tutorials 104
Proprietary Information of Altair Engineering
16. Under the Show result by: section select Elements by clicking on the radio button next to it.
17. Click Apply.
18. Click the Start/Pause Animation icon,
, to start the animation.
The animation begins.
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.
19. Stop the animation.
20. Try these additional steps:
Try to view the Element and Component results alternately by clicking on the radio buttons in
the Show Results by: section.
Click on Summary below to get a text summary of the penetration.
Step 3: Using the Measure Panel.
HyperView allows you to measure certain parameters during post processing of the results.
Refresh your MotionView session by pressing SHIFT+F9.
Note
Please refer to HyperView tutorial Using Keyboard Shortcuts and Function Keys - HV-2050 for
more information regarding keyboard shortcuts.
1.
Change the Application to HyperView.
2.
Load the file front_ride.h3d as the model and result file from your working directory.
3.
Click on the Measure button,
4.
Under Measure Groups click on Add to add a Measure Group.
5.
From the measure type pull-down menu select Position.
6.
Click on the Nodes button and from the graphic window pick on a point of your choice.
7.
Turn on the check boxes for X, Y and Z.
, on the Annotations toolbar to go to the Measure panel.
105 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8.
Click the Create Curves button (located on the right side of the panel).
The Create Curves dialog is displayed.
9.
From the Place on drop-down menu select New Plot.
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.
11. Click OK.
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.
For more advanced animation options, refer to the HyperView tutorials.
Altair Engineering
MotionView 13.0 Tutorials 106
Proprietary Information of Altair Engineering
Plotting
MV-6000: Plotting Basics
107 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-6000: Plotting Basics
Introduction
In this tutorial you will learn to:
Import a MotionSolve result (plot) file for plotting curves
Plot multiple curves in a single window
Plot multiple curves in different windows on a single page
Save your work as a session (mvw) file
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 file
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\plotting\Demo.plt to your
<working directory>.
Step 1: Opening a plot file.
1.
Start a new MotionView session.
2.
Select HyperGraph 2D from the Select application menu,
, on the toolbar.
The toolbar is located right below the plot window.
3.
Click the Build Plots icon,
, on the toolbar.
4.
Click the Open File icon,
5.
Select the file <working directory>\Demo.plt.
6.
Click Open.
, on the Build Plots panel.
This file contains several curves.
7.
Confirm that Time is selected under X Type:.
8.
For Y Type: click on Displacement to select it.
The Y Request text box displays the data available in the file.
9.
Click the Y Request expansion button
Altair Engineering
to view the Y Request list.
MotionView 13.0 Tutorials 108
Proprietary Information of Altair Engineering
10. Press CTRL button on the keyboard and click on REQ/70000006 and REQ/70000007 (or leftclick and drag the mouse to select both REQ/70000006 and REQ/70000007). Click OK.
11. Select X under Y Component:.
12. Set Layout as one plot per Component.
13. Click Apply.
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
Step 2: To build multiple curves on multiple plots using the plot file.
In this step you will select multiple curves and plot them in multiple windows.
1.
Stay in Build Plots panel.
2.
Leave Time selected under X:.
3.
Leave Displacement selected under Y Type:.
4.
Leave REQ/70000006, and REQ/70000007 selected under Y Request:.
5.
Press CTRL and under Y Component: select X, Psi, MAG and RMAG.
109 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
Select One plot per Component from the Layout pull down menu
corner of the panel.
, located in the lower left
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.
8.
Select the four window layout option
.
The Page Layout dialog automatically closes.
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.
Altair Engineering
MotionView 13.0 Tutorials 110
Proprietary Information of Altair Engineering
Step 3: To save this work session.
You can save your work with multiple curves in multiple windows on multiple pages as a session file. A
session allows later retrieval either for display, printing, or to continue adding more information. The
session file is a script with the extension .mvw. The contents of an .mvw file are all the information in
the program that gets recorded in the script file.
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 Script File check box (located
on the Session tab).
1.
From the File menu, select Save As > Session.
2.
Select a directory.
111 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
In the File name text box type Demo1.mvw.
Save Session As dialog
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.
Step 4: To exit the program.
1.
From the File menu, select Exit.
A dialog displays prompting you to save the session.
2.
Click No, since you saved the session in the previous step.
For more advanced plotting options, refer to the HyperGraph tutorials.
Altair Engineering
MotionView 13.0 Tutorials 112
Proprietary Information of Altair Engineering
Model Definition Language
MV-1060: Introduction to MDL
MV-1070: Creating a Simple Pendulum System using MDL
MV-1080: Creating an Analysis using MDL
MV-1090: Creating a Dataset using MDL
MV-1030: Creating a System Definition Using the MotionView GUI
113 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1060: Introduction to MDL
In this tutorial, you will learn how to:
Create a model using the Model Definition Language (MDL).
Run a dynamic simulation of this model for a time of 2 seconds and 500 steps.
Plot the rotation of the pendulum about the global X-axis and view the animation.
MDL stands for Model Definition Language. A MotionView model is an object that holds the information
in the form of this language which is required to describe a mechanical system. The complete
information about the model is stored in the MDL format. MDL is an ASCII programmable language.
Some benefits of MDL include:
Opening and editing in any text editor
Assisting with model debugging
Using conditional statements "if" for custom modeling requirements
Building modular and reusable models
Parameterizing the models
Use modeling entities which are not available through GUI (for example, CommandSets)
Section 1: Entities in MDL
A modeling entity is saved to MDL in the form of MDL statements. All MDL statements begin with an
asterisk (*).
There are two types of entities:
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).
Altair Engineering
MotionView 13.0 Tutorials 114
Proprietary Information of Altair Engineering
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
System
A system entity defines a collection of modeling entities. These
definitions may be used repeatedly within the same model or different
MDL model files. A model can be organized into different systems.
Examples of system entities include SLA suspension system, wiper blade
system, and power-train system. Systems can be hierarchical in nature
(for example, a system can be a child of another system).
Assembly
An assembly is similar to a system entity, except that the definition
resides in a separate file than the model file.
Analysis
An analysis is a collection of entities (bodies, joints, etc.) describing a
particular analysis task or event applied to a model. For example, a
static ride analysis is one of the analysis that can be applied to a model.
An analysis can only be instantiated under Model (the top level root
system). A system can be a child of an analysis, however the reverse is
not true.
Dataset
A dataset is a collection of user-defined variables of type integer, real,
string, Boolean, or filename. These variables can be referred or
parameterized to other entity properties. Datasets are displayed in a
tabular form, thereby offering a single window to modify a model.
Generally, design variables are collectively defined in the form of a
dataset. A dataset can be instantiated within a system or an analysis.
Template
A template is a utility that uses the Templex program in HyperWorks.
It can be used to create user-defined calculations and codes
embedded into the model. The output of such code can be written out
to solver deck or execute another program. Another use is to
implement solver statements and commands not supported by MDL and
to generate text reports.
Note
The system, assembly, and analysis are together referred to as container entities (or simply
containers).
115 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Section 2: Properties of Entities
Each entity has variable, label, and other properties associated with it.
Each entity should have a unique variable name.
Following is the recommended convention for variable names which allows the user to identify
the modeling entity during debugging. You are not restricted to this nomenclature, however
you are encouraged to adopt it.
This list of entities and their properties is not comprehensive. For a complete list, refer to the MDL
Language Reference on-line help.
General Entities
Naming Convention Properties
Point
p_
x, y, z, label, state, varname
Body
b_
mass, IXX, IYY, IZZ, IXY, IYZ, IXZ, cg,
cm, im, lprf, label, state, varname
RevJoint
j_
b1, b2, i, j, id
Vector
v_
x, y, z, label, state, varname
Marker
m_
body, flt, x-axis, y-axis, z-axis, origin
ActionReactionForce
frc_
b1, b2, fx, fy, fz, id, tx, ty, tz
General entities, their naming conventions, and properties
Definition Based Entities
Naming Convention
Properties
System
sys_
Label, varname, state
Analysis
ana_
Label, varname, state
Dataset
ds_
Label, varname, state
Template
tmplt_
Label, varname, state
User-defined entities, their naming conventions, and properties
Altair Engineering
MotionView 13.0 Tutorials 116
Proprietary Information of Altair Engineering
To access entity properties; use the entity varname, followed by a dot separator, followed by the
property. Below are some examples:
Entity Varname
Varname Represents
b_knuckle
A body representing the knuckle in the mechanical system.
p_knuckle_cg
A point representing the center of mass point for the knuckle body.
Entity Property Name
Property Accessed
b_knuckle.cm
The center of mass marker of the knuckle body, b_knuckle.
b_knuckle.cm.id
The ID of the center of mass marker of the knuckle body,
b_knuckle.
p_knuckle_cg.x
The x coordinate of p_knuckle_cg.
Section 3: Global Variables
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
B_Ground
Ground body
P_Global_Origin
Global Origin
V_Global_X, V_Global_Y, V_Global_Z
Vectors along the global XYZ axes
Global_Frame
Global reference marker
MODEL
Reference to the top level system of the
model
C ommon keywords in MotionView
117 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Section 4: MDL Statement Classification
Topology statements
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.
Property or Set Statements
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.
Definition and Data
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:
1. Topology statements that define entities.
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:
1. Set statements within a *BeginContext() block that relate to entities within a system,
assembly, or analysis definition.
2. Some of the *Begin statements, such as *BeginAssemblySelection and *BeginAnalysis.
Section 5: MDL Model File Overview
MDL model file is an ASCII file; it can be edited using any text editor.
All statements in a model are contained within a *BeginMDL() - *EndMDL() block.
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.
Altair Engineering
MotionView 13.0 Tutorials 118
Proprietary Information of Altair Engineering
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
Exercise: Build a Pendulum Model using MDL Statements
The figure below shows the schematic diagram of a pendulum. The pendulum is connected to the
ground through a revolute joint at the global origin. The pendulum falls freely under gravity, which
acts in the negative global-Z direction. Geometry and inertia properties are shown in the figure. The
center of mass of the pendulum is located at (0, 10, 10).
Schematic representation of the pendulum
119 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The following MDL statements are used in this exercise:
*BeginMdl()
*EndMdl()
*Point()
*Body()
*Graphic() - cylinder
*Graphic() - sphere
*RevJoint()
*Output() - output on entities
*SetPoint()
*SetBody()
Step 1: Create an MDL model file.
1. In a text editor, create the following comment statements describing the purpose of the MDL
model file:
//Pendulum falling under gravity
//date
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:
The syntax for the *BeginMdl() statement is:
*BeginMdl(model_name, "model_label")
where
model_name
The variable name of the model.
model_label
The descriptive label of the model.
For this model, use:
*BeginMdl(pendulum, "Pendulum Model")
*EndMdl()
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.
Altair Engineering
MotionView 13.0 Tutorials 120
Proprietary Information of Altair Engineering
Step 2: Create the entity declarations required for the problem.
1. Create a point where the pendulum pivot would be placed using a *Point() statement. The
syntax is:
*Point(point_name, "point_label", [point_num])
where:
point_name
The variable name of the point.
point_label
The descriptive label of the point.
point_num
An optional integer argument assigned to the
point as its entity number.
For this problem, you will need point_name and point_label.
//Points
*Point(p_pendu_pivot, "Pivot Point")
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:
body_name
The variable name of the body.
body_label
The descriptive label of the body appearing in the
graphical display of the body.
cm_origin
An optional argument for the center of mass point of
the body.
im_origin
An optional argument for the origin point of the inertia
marker of the body.
lprf_origin
An optional argument for the origin point of the local
part reference frame of the body.
body_num
An optional integer argument assigned to the body as
its entity number.
Square brackets,[ ], in the description of any statement syntax means that an argument is
optional.
121 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
This problem requires body_name, body_label, and cm_origin.
//Bodies
*Body(b_link, "Ball", p_pendu_cm)
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.
Statement syntax for sphere graphics:
*Graphic(gr_name, "gr_label", SPHERE, body, origin, radius)
where:
gr_name
The variable name of the graphic.
gr_label
The descriptive label of the graphic.
SPHERE
This argument indicates that the graphic is a sphere.
body
The body associated with the graphic.
origin
The location of center point of the sphere.
radius
The radius of the sphere.
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)
Statement syntax for cylinder graphics:
*Graphic(gr_name, "gr_label", CYLINDER, body, point_1, POINT|VECTOR,
orient_entity, radius, [CAPBOTH|CAPBEGIN|CAPEND])
where
gr_name
The variable name of the graphic.
gr_label
The descriptive label of the graphic.
CYLINDER
This argument indicates that the graphic is a cylinder.
body
The body associated with the graphic.
Point1
The location of one end of the cylinder.
POINT|VECTOR
Keyword to indicate the type of entity used to orient the cylinder.
If POINT is used, the following argument should resolve to a point,
otherwise it should resolve to a vector.
Altair Engineering
MotionView 13.0 Tutorials 122
Proprietary Information of Altair Engineering
orient_entity
The variable name of the entity for orienting the cylinder.
radius
The radius of the cylinder.
[CAPBOTH|
An optional argument that identifies if either or both cylinder ends
should be capped (closed).
CAPBEGIN|
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 )
5.
Create a revolute joint at the pivot point. The syntax is:
*RevJoint(joint_name, "joint_label", body_1,body_2, origin, POINT|VECTOR, point|
vector, [ALLOW_COMPLIANCE])
where:
joint_name
The variable name of the joint.
joint label
The descriptive label of the revolute joint.
body 1
The first body constrained by the revolute joint.
body 2
The second body constrained by the revolute joint.
origin
The locations of revolute joint.
POINT|VECTOR
Keyword to suggest the method of orientation for the joint using a
point or vector.
point|vector
A point or vector that defines the rotational axis of the revolute
joint.
[ALLOW
COMPLIANCE]
An optional argument that indicates the joint can be made
compliant (a joint that is compliant is treated like a bushing and
can be toggled between compliant and non-compliant).
For this problem, you will use the following statement:
//Revolute Joint
*RevJoint(j_joint, "New Joint", B_Ground, b_link, p_pendu_pivot, VECTOR,
V_Global_X)
123 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
out_name
The variable name of the output.
out_label
The descriptive label of the output.
DISP|VEL|ACCL|FORCE
An argument that indicates whether the output type is
displacement, velocity, acceleration, or force.
entity_type
Keyword to indicate the type of entity on which the output
is being requested. Valid values are: BODY|JOINT|BEAM|
BUSHING|FORCE|SPRINGDAMPER
ent_name
The entity on which output is requested.
ref_marker
An optional argument for the reference marker in which the
output is requested.
I_MARKER|J_MARKER|
BOTH_MARKERS
Keyword to indicate the capture of output on the I marker,
J Marker or both markers. The default is both markers.
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)
8.
Save the model as pendulum.mdl.
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")
Altair Engineering
MotionView 13.0 Tutorials 124
Proprietary Information of Altair Engineering
//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,
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()
Step 3: Load and run the MDL model file.
1.
Launch MotionView
2.
Click the Open Model icon,
.
, on the Standard toolbar.
OR
From the File menu, select Open > Model.
125 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
From the Open Model dialog, locate and select the file pendulum.mdl.
5.
Click Open.
6.
Observe and review the model in the graphics area.
7.
From the Standard View toolbar, click the YZ Rear Plane View
button.
The model is seen as shown in the image below:
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.
10. Perform the following steps to run MotionSolve:
Go to the Run panel and select Transient as the Simulation Type: option.
Set the End time as 2 seconds.
Click on the Simulation Settings button.
The Simulation Settings dialog is displayed.
Click on the Transient tab and review the integrator parameters.
Click Close to close the dialog.
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.
Step 4: Animate and plot the results.
1.
Click Animate.
2.
The animation file pendulum.h3d will be loaded in the adjacent window. Click on that window to
activate it.
Altair Engineering
MotionView 13.0 Tutorials 126
Proprietary Information of Altair Engineering
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
the visualization in all frames of the animation.
icon on the Standard Views toolbar to fit
5.
Click on the MotionView window to make it active.
6.
From the Run panel, click Plot.
7.
The plot window will be added, with the pendulum.abf loaded.
8.
Select Y Type as Marker Displacement, Y Request as REQ/70000000 Disp Output – (on
Ball), and Y component as DZ.
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 pause the animation.
, to review the plot and animation together. Click
Your session page should look similar to the image below:
11. Close the session using the File menu (File > Exit).
127 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1070: Creating a Simple Pendulum System using
MDL
In this tutorial, you will learn how to create a definition based entity (such as a system) using MDL.
Using systems allows you to:
Organize your model file modularly
Reuse system definition files
Easily debug and maintain your files
Create a library of modeling components
Perform certain operations on the entire system at once (for example; turning systems on/off,
making the whole system compliant/rigid, translation, etc.). An operation, such as translation
on a system, is automatically performed on all the subsystems within that system.
The concept of system definition is analogous to the procedures/subroutines in a programming
language.
Analogy between programming and MDL approach
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.
Use of system definition is two-step process:
1. Defining the system
2. Instantiation of the system definition in the model
Altair Engineering
MotionView 13.0 Tutorials 128
Proprietary Information of Altair Engineering
Section 1: System Definitions
A system definition is a reusable system model that can be a part of any model as long all the
attachment requirements are satisfied.
A system definition is represented by a *DefineSystem() block. This block should end with a
*EndDefine() statement that indicates the end of a definition block. All entities defined within this
block are considered to be part of the system definition.
A typical system definition example is shown below:
*DefineSystem(def_sys, att_1, att_2…att_n)
In the system definition example above:
def_sys is the variable name of the system definition and will be used while instantiating this
system.
att_1, att_2, … att_n is a list of arguments that act as attachments to the system.
A system definition can be created in two ways:
1. Using the text editor.
2. Created from graphical user interface. This requires minimal text editing. Refer to tutorial MV1032.
Note
This tutorial covers Method 1, as it covers all the details of the system definition.
129 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Section 2: System Attachments
The picture above shows a system definition of an SLA suspension. It is an incomplete system which
needs information about the attachment bodies and points to get connected to.
Excluding the *Attachment() statement, other entities in a system definition are similar to an MDL
model file.
The general structure of a system definition is:
A system receives information about entities external to the system via attachments.
Any MDL entity can be passed to a system as an attachment.
The *Attachment() statement inside the system definition declares the arguments in the
*DefineSystem block as an attachment, along with assigning what type of entity the
attachment is going to be.
The same variable name as the attachment should be referred within the definition when
defining an entity that depends on the external entity.
Refer to the entries in bold in the example below. Reference line numbers are for reference
only and are not part of the MDL file.
o
Line 2 - defines a system with a variable name sys_definition and has one argument
b_body_att as an attachment.
o
Line 4 - declares b_body_att as an attachment with the entity type as Body.
o
Line 7 - creates a revolute joint between b_sys_body which is a body defined within
this system (not shown) and b_body_att which is a body that is an attachment to this
system.
Altair Engineering
MotionView 13.0 Tutorials 130
Proprietary Information of Altair Engineering
Note
An attachment entity need not serve as a physical attachment to entities inside the
system definition. It may be used to represent external variables being passed into the
system definition. For example, datasets may also serve as attachments.
Section 3: Instantiating a System
Instantiating a system means creating an instance of a system definition. A system is
instantiated using a *System() MDL statement, which has the following syntax:
o
*System(varname, “label”, def_varname, arg_1, arg_2, …, arg_n) where,
varname – variable name of the system instance.
label – descriptive label for the system.
def_varname – variable name of the system definition being instantiated.
arg_1, arg_2,… arg,_n – entity variable names that act as attachment to the
system. The number of arguments should match the number of attachments
listed and declared in the system definition.
A definition can be instantiated multiple times. For example, a single system definition file for
an SLA suspension can be used to create multiple SLA suspension systems within one or more
vehicle model files.
The following example illustrates a system definition and its instantiation within an MDL model
file. Some of the terms in the example below are in bold to highlight a few key relationships
between a system definition and its instantiation. Reference numbers are for the example only,
and are not contained in an MDL file.
o
A system instance with variable name system1 is created in line 2, that refers to the
definition sys_definition. B_Ground (Ground Body) which is passed as an argument
for the attachment.
o
The system definition is described within the *DefineSystem() and *EndDefine()
block between line 3 and line 7. Attachment b_att gets resolved to B_Ground.
131 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Reference System Instantiation with Definition
Numbers
// Model : Body.mdl
1
*BeginMDL(base_model, "Base Model")
//Instantiate the system definition sys_definition
2
*System(system1, "First System", sys_definition, B_Ground)
//Begin System Defintion Block
3
*DefineSystem(sys_definition, b_att)
//Declare a body attachment to the system
4
*Attachment(b_att, "Body Attachment", Body, "Add an body
external to this system")
//Entities within the system
5
*Point(p_sys, "Point in the system")
*Body(b_sys, "Body in the system")
//Define a joint with the body b_sys and the body
attachment b_att
6
*RevJoint(j_rev, "Revolute Joint", b_sys, b_att, p_sys,
VECTOR, V_Global_X)
7
*EndDefine()
8
*EndMDL()
//End Definition Block
You can instantiate systems within your model in one of three ways:
1. Manually author the MDL file as shown in the example above.
2. Import a system from the System/Assembly panel in the MotionView MBD Model window.
3. Use the Assembly Wizard in the MotionView MBD Model window.
The exercises that follow explain the first two methods; the third is covered in a separate tutorial.
Altair Engineering
MotionView 13.0 Tutorials 132
Proprietary Information of Altair Engineering
Exercise 1: Creating and Using System Definitions
The following exercise illustrates how system definition can be generated from the original system MDL
file. The later part of the exercise shows two different ways of system instantiation.
The following MDL statements are used in this exercise:
*DefineSystem()
*System()
*SetSystem()
*Attachment()
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.
Schematic representation of the double pendulum
133 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Properties table for the double pendulum
Step 1: Create a system definition.
The structure of a system definition is similar to an MDL model file. You can reuse the pendulum model
file you created in the previous exercise to generate a more generalized system definition.
1.
Copy the file pendulum.mdl from the <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\mdl to your <working directory>.
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)
Altair Engineering
MotionView 13.0 Tutorials 134
Proprietary Information of Altair Engineering
//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.
3.
The pendulum system definition would need information about:
Where to connect (attachment point or pivot point)
What body to connect to (attachment body)
Let’s use att_point and att_body as the attachment entities.
4.
Use these variables in the *DefineSystem () statement:
*DefineSystem (sys_def_pendulum, att_point, att_body)
Note
5.
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).
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.
135 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
The point p_pendu_pivot is now passed as an attachment, therefore we do not need to define
the pivot point. Delete the statement *Point (p_pendu_pivot, "Pivot Point").
7.
Retain pendulum CM point as it is.
8.
Retain the *Body() statement to create the pendulum body.
The *RevJoint() statement refers to the B_Ground and p_pendu_pivot. Replace B_Ground with
the att_body and p_pendu_pivot with att_point.
9.
Retain the sphere *Graphic() statement.
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.
11. Remove *setpoint(p_pendu_pivot, 0, 5, 5).
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).
13. The following file shows a sample system definition (system.mdl):
// 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,
Altair Engineering
MotionView 13.0 Tutorials 136
Proprietary Information of Altair Engineering
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 )
*Graphic(gr_link, "pendulum link graphic", CYLINDER, b_link,
att_point, POINT, p_pendu_cm, 0.5, CAPBOTH )
// 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()
14. Save the file as sys_pendu.mdl.
Step 2: Add a system definition by manually authoring your MDL file.
In step 1, you created a reusable system definition. In this step, you will instantiate this system
definition in your model file. In the manual approach, you will write an MDL file which includes the
system definition and instantiates it several times.
1.
Create a new empty file in a text editor.
2.
Begin the model file with a *BeginMDL() statement.
3.
Copy the content in the sys_pendu.mdl file from*DefineSystem() to *EndDefine() after the
*BeginMDL() statement.
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)
When you instantiate a system, remember:
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.
If the system definition contains attachments, resolve those attachments when you instantiate
the system. For example, sys_def_pendulum has an attachment, att_body, to reference
body_2 in the *RevJoint() statement. In system1, the pendulum body, b_link, should be
connected to the ground body, B_Ground. Therefore, B_Ground is specified as the attachment
body in the *System() statement.
It is recommended to add the *System() statement before *DefineSystem(), although this
not mandatory.
137 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
Repeat Step 4 with appropriate modifications, to create the second pendulum system using the
*System() statement again.
Provide a different variable name, system2, for the system instance.
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 )
6.
Close the MDL file with the *EndMDL() statement.
A sample MDL file is provided below:
*BeginMDL(model, "MODEL")
*System(system1, "First Pendulum System", sys_def_pendulum, P_Global_Origin,
B_Ground)
*System(system2, "Second Pendulum System", sys_def_pendulum, system1.p_pendu_cm,
system1.b_link )
*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, "Pendulum Body", p_pendu_cm)
//Joints
*RevJoint(j_pivot, " Revolute Joint at Pivot Point ", b_link, att_body,
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 )
*Graphic(gr_link, "pendulum link graphic", CYLINDER, b_link, att_point, POINT,
p_pendu_cm, 0.5, CAPBOTH )
Altair Engineering
MotionView 13.0 Tutorials 138
Proprietary Information of Altair Engineering
// 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()
*EndMDL()
7.
Save the model as doublependulum.mdl.
8.
Open the MDL file in MotionView and review the model.
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:
From the Tools menu, select Options.
The Options dialog is displayed.
139 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
12. Click OK to close the dialog.
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.
Exercise 2: Adding Systems from the Systems/Assembly Panel
This exercise demonstrates how to instantiate a system from the MotionView graphical user interface
using the Systems/Assembly panel.
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.
Altair Engineering
MotionView 13.0 Tutorials 140
Proprietary Information of Altair Engineering
The triple pendulum
Properties table for the triple pendulum
141 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Add the system definition from MotionView.
Adding system definitions to a model is similar to adding other entities except the system definitions
are loaded from a file.
1.
Start MotionView and open the pendulum model file from Exercise 1 (the previous exercise) in the
MBD Model window.
2.
From the Project Browser, click Model.
The Systems/Assembly panel is displayed.
3.
Click the Import/Export tab.
4.
Using the Select File: file browser
5.
Click Import.
, pick the system definition you just created, sys_pendu.mdl.
The Specify entity details dialog is displayed.
6.
Under Select a definition, select sys_def_pendulum.
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.
Altair Engineering
MotionView 13.0 Tutorials 142
Proprietary Information of Altair Engineering
Step 2: Resolve attachments and update points.
1.
Select the newly added system from the Project Browser.
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
body attachment.
collector for Attachment body to select a
The Select a Body dialog is displayed.
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.
The Select a Point dialog is displayed
6.
Expand the Points folder under the second pendulum system and select the Pendulum CM point.
7.
Click OK.
The third pendulum system should be visible in the graphics area.
8.
Save the model as triplependulum.mdl for future use.
9.
Run MotionSolve and view the results.
143 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Important Note Regarding Definitions:
One important aspect of definitions is that they need to be independent, therefore a
*DefineXXX block should not contain another *DefineXXX block within them. For example, the
figure on the left (below) shows a *Define block inside another *Define block. Such
definitions are referred as nested definitions and may result in MotionView giving errors while
reading such definitions. The figure on the right shows the correct way of placing definitions.
In Exercise 1, the method to author a system definition is described by modifying an existing
model MDL, in other words replacing *BeginMDL() and *EndMDL() with *DefineSystem() and
*EndDefine(). While this method can be employed in many cases, care should be taken so
that any existing definition block within the *BeginMDL block should not end up being nested
as described above. Such a definition block must be moved out of the block so that the
definition blocks are independent with regard to each other.
Altair Engineering
MotionView 13.0 Tutorials 144
Proprietary Information of Altair Engineering
MV-1080: Creating an Analysis using MDL
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.
An analysis definition is similar to a system definition in syntax and usage, except:
o
Analysis definitions use *DefineAnalysis(), while system definitions use
*DefineSystem().
o
Analysis can be instantiated under the top level Model only.
o
Only one analysis can be active in the model at a given instance.
A analysis definition block begins with *DefineAnalysis() and ends with *EndDefine(). All
entities defined within this block are considered to be part of the analysis definition.
The syntax of *DefineAnalysis() is as follows:
*DefineAnalysis(ana_def_name,
arg_1,arg_2, ..., arg_n)
Where;
ana_def_name is the variable name of the analysis definition and will be used while
instantiating the analysis.
arg_1,arg_2..arg_n are a list of arguments passed to the analysis definition as
attachments.
The following table illustrates an analysis definition and its subsequent instantiation within an
MDL file. Two files, an analysis definition file and the model file, work together when
instantiating a particular analysis under study. Some of the terms in the example below are in
bold to highlight a few key relationships between the files.
Reference System Instantiation with Definition
Numbers
// Model : Body.mdl
1
*BeginMDL(base_model, "Base Model")
//Instantiate the analysis definition ana_def
2
*Analysis(ana1, "Analysis 1", ana_def, j_rev)
//Begin Analysis Defintion Block
3
*DefineAnalysis(ana_def,j_joint_att)
4
//Declare a joint attachment to the analysis
145 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Reference System Instantiation with Definition
Numbers
*Attachment(j__joint_att, "Joint Attachment", Joint, "Add
an joint external to this analysis to apply motion/force")
//Entities within the analysis
5
*Point(p_1, "Point in the analysis")
*Body(b_1, "Body in the analysis")
6
//Define a joint with the body b_sys and the body
attachment b_att
*Motion(mot, "Joint Motion", JOINT, j_joint_att, ROT)
7
*EndDefine()
8
*EndMDL()
//End Definition Block
The following table details the relationships between the analysis definition and its instantiation
in the MDL Model file.
Variable
Relationship
j_joint_att
The varname of the attachment, declared in the *Attachment()
statement (line 4) in the analysis definition file, appears as an
argument in the *DefineAnalysis() statement (line 3). A motion is
applied on this joint using the *Motion() statement (line 6).
ana_def
The varname of the analysis definition is specified in the
*DefineAnalysis() statement (line 3). The analysis definition is
used by ana1 in the *Analysis() statement (line 2).
Defining relationships between the analysis definition and MDL model files
Exercise: Creating an Analysis Definition
An experimental technique for estimating the natural frequencies of structures is to measure the
response to an impulsive force or torque, then look at the response in the frequency domain via a
Fourier Transform. The peaks in the frequency response indicate the natural frequencies. In this
tutorial, we will create an analysis to simulate this test procedure. The analysis applies an impulsive
torque to the system and measures the response.
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)
Altair Engineering
MotionView 13.0 Tutorials 146
Proprietary Information of Altair Engineering
2.
Apply this torque to estimate the natural frequencies of the triple pendulum model shown in the
image below:
Schematic representation of a triple pendulum in stable equilibrium
Your analysis applies to a pendulum with any number of links or to more general systems.
Properties table for the triple pendulum
The following MDL statements are used in this exercise:
*Attachment()
*ActionReactionForce()
*SetForce()
*Output()
Note
Refer to the MotionView Reference Guide (located in the HyperWorks Desktop Reference
Guide) for the syntax of the above MDL statements.
147 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Create the analysis definition file.
1.
Open an empty file in a text editor.
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.
Create an *Attachment() statement which defines j_att as the attachment and Joint as the entity
type. Make sure that the variable name used in the statement is the same as is used in the
*DefineAnalysis() statement.
*Attachment(j_att, “Joint Attachment”, Joint, “Select joint to apply torque”)
4.
Use the *ActionReactionForce() statement to define an applied torque. Please note to
reference the correct properties of the attachment joint to reach the bodies involved in the 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.
Create an *ActionReactionForce() statement with the following:
Variable name of force_1.
Force type as ROT (rotational).
Body 1 as j_att.b1 (attachment joint body 1).
Body 2 as j_att.b2 (attachment joint body 2).
Force application point as j_att_i.origin (the attachment joint origin).
Reference frame as Global_Frame (global).
*ActionReactionForce( force_1, "Torque", ROT, j_att.b1, j_att.b2, j_att.origin,
Global_Frame )
5.
Use the *SetForce() statement to set the value to the force defined in the previous step.
Create a *SetForce() statement with a variable name of force_1 (the existing force) and the
following torque values:
TX = step(TIME,.3,0,.31,10) + step(TIME,.31,0,.32,-10),TY = 0,TZ = 0
Altair Engineering
MotionView 13.0 Tutorials 148
Proprietary Information of Altair Engineering
6.
Use an *Output() statement to output the applied force.
Define an *Output() statement with the following:
Variable name of o_force.
Output type as FORCE.
Entity type as FORCE.
Variable name of force_1 (the action-reaction force created in Step 3 above).
Reference frame as Global_Frame (global).
*Output( o_force, "Input Torque", FORCE, FORCE, force_1, Global_Frame)
7.
Save the analysis definition as analysis.mdl.
The saved file analysis.mdl will look like this:
*DefineAnalysis( def_ana_0,j_att )
*Attachment(j_att, “Joint Attachment”, Joint, “Select joint to apply torque”)
*ActionReactionForce( force_1, "Torque", ROT, j_att.b1, j_att.b2, j_att.origin,
Global_Frame )
*SetForce( force_1, EXPR, `step(TIME,.3,0,.31,10) + step(TIME,.31,0,.32,-10)`)
*Output( o_force, "Input Torque", FORCE, FORCE, force_1, Global_Frame)
*EndDefine()
Step 2: Instantiate the analysis in a model.
1.
Start MotionView and open the
<installation_directory>\ tutorials\mv_hv_hg\mbd_modeling\mdl\triplependulum.mdl
file.
2.
From the Project Browser, click Model.
The Systems/Assembly panel is displayed.
3.
Click the Import/Export tab.
4.
Using the Select File: file browser
analysis.mdl.
5.
Click Import.
, pick the analysis definition you just created,
149 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
From the Attachments tab, select the Joint Attachment.
Select any pivot joint of the triple pendulum.
9.
Save your model as new_triplependulum.mdl.
10. Solve the model. From the Main tab of the Run panel
Print interval as 0.01.
11. View the animation
, specify the End time as 1.0 and the
.
12. Plot the output "Input Torque" using the .abf file from the solution.
Altair Engineering
MotionView 13.0 Tutorials 150
Proprietary Information of Altair Engineering
MV-1090: Creating a Dataset using MDL
In this tutorial, you will learn how to:
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.
A dataset is a collection of user-defined variables whose values are used or referred by another entity
within MDL. Datasets are either created using the MDL language or the graphical user interface.
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.
Exercise: Defining a Dataset
Step 1: Create a dataset definition.
The following steps illustrate how to create a dataset definition.
Refer to the MDL Language Reference online help for the correct syntax for the MDL statements you
choose to use.
1.
In a new document in a text editor, create the *DefineDataSet() and *EndDefine() block. You
will create data members belonging to the dataset between these statements.
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.
Use one *Real() statement to define one data member.
You can also define other types of members such as: integers, strings, options, or a file (as
applicable to your model).
151 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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()
Step 2: Include the dataset in the analysis definition and instantiate.
The dataset will be included in the analysis definition by using the *Include() statement. The
dataset entities will be incorporated in the expression for torque.
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.
The syntax is:
*Include("dataset.mdl")
2.
Instantiate this dataset definition using the *DataSet() statement within the
*DefineAnalysis() block and after the *Attachment() statement.
The syntax for the *DataSet() statement is:
*DataSet(ds_name, "ds_label", ds_def, [optional arguments])
where
ds_name is the variable name of the dataset.
ds_label is the label of the dataset.
ds_def is the variable name of the existing dataset definition.
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.
The syntax for the *SetReal() statement is:
*SetReal(real_name, real_value)
where
real_name is the variable name of the data member for which the value is being set.
real_value is the value of the data member.
Altair Engineering
MotionView 13.0 Tutorials 152
Proprietary Information of Altair Engineering
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.
Include the lines below after the *DataSet() statement:
*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)
5. The *SetForce() statement in the analysis definition looks like:
*SetForce( force_1, EXPR, `step(TIME,.3,0,.31,10) + step(TIME,.31,0,.32,-10)`)
6.
Change the appropriate values in the *SetForce() statement by incorporating the dataset
members. The idea is to use the dot operator to browse through the model hierarchy and access
the dataset values (for example, use ds_force.start_time.value to access the start time
value from the dataset). This is illustrated in the following statement:
*SetForce(force_1, EXPR, `step(TIME, {ds_force.start_time.value}, 0,
{ds_force.mid_time.value}, {ds_force.force_magnitude.value}) +
step(TIME, {ds_force.mid_time.value}, 0, {ds_force.end_time.value}, {ds_force.force_magnitude.value})`,0,0)
The expressions within the curly braces ({}) get processed by Templex in MotionView and get
evaluated to the appropriate values defined in the dataset.
The analysis definition file should look as below:
*Include(“dataset.mdl”)
*DefineAnalysis( def_ana_0,j_att )
*Attachment(j_att, “Joint Attachment”, Joint, “Select joint to apply torque”)
*DataSet(ds_force, “Force Data”, ds_def_force)
*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)
*ActionReactionForce( force_1, "Torque", ROT, j_att.b1, j_att.b2, j_att.origin,
Global_Frame )
153 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
*SetForce(force_1, EXPR, `step(TIME, {ds_force.start_time.value}, 0,
{ds_force.mid_time.value}, {ds_force.force_magnitude.value}) + step(TIME,
{ds_force.mid_time.value}, 0, {ds_force.end_time.value}, {ds_force.force_magnitude.value})`)
*Output( o_force, "Input Torque", FORCE, FORCE, force_1, Global_Frame)
*EndDefine()
7.
Save the above work in a new analysis definition file named analysis_dataset.mdl.
Step 3: Change the dataset parameters and run the analysis.
1.
In MotionView, load the triple pendulum model created in tutorial MV-1080.
2.
Delete the existing analysis (if any) by right-clicking on the Analysis in the Project Browser and
clicking Delete.
3.
Click on Model in the Project Browser.
The Systems/Assembly panel is displayed.
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.
7.
Solve the model.
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.
9.
Save your model as triplependulum_dataset.mdl.
Altair Engineering
MotionView 13.0 Tutorials 154
Proprietary Information of Altair Engineering
MV-1030: Creating a System Definition Using the
MotionView GUI
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.
Exercise: Creating a System Definition Using the GUI.
This exercise will help you learn to:
Create systems using the MotionView graphical user interface
Export a system definition to a file
Reuse the saved definition by instantiating it in the model
Step 1: Creating a system instance.
1.
To create a system, right-click on Model in the Project Browser and select Add > System/
Assembly.
OR
Right-click on the System/Assembly panel button
on the Container Entity toolbar.
The Add System/Assembly dialog is displayed.
2.
Select the System radio button and click Next.
The Add System dialog is displayed.
3.
Specify sys_pendu as the Variable, Pendulum as the Label, and def_sys_pendu as the
Definition Name.
4.
Click OK.
The Pendulum system
is added to the model and its corresponding panel is displayed.
Step 2: Adding attachments to the system.
1.
From the Attachments tab, click on the Add button (located in the middle of the panel).
The Add an Attachment dialog 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.
155 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
5.
Double click on the
collector.
The Select a Point dialog is displayed.
Altair Engineering
MotionView 13.0 Tutorials 156
Proprietary Information of Altair Engineering
6.
Select Global Origin from the list on the right side of the dialog and click OK.
7.
Similarly, click the
click OK.
collector, select Ground Body from the model tree, and
Step 3: Adding entities to the system.
1.
Select Pendulum in the Project Browser.
2.
Right-click and select Add > Reference Entity >
Point.
OR
Right-click on the Points panel button
on the Reference Entity toolbar).
The Add Point or PointPair dialog is displayed.
3.
Specify the Label as Mass CG, Variable as p_cg, and the Type as Single.
4.
Click OK.
The Points panel is displayed with the properties of Mass CG.
157 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
From the Properties tab, click in the X Coordinate field and click on the
Expression bar.
button on the
The Expression Builder is displayed.
6. Delete 0.0 from the Expression area (located at the top of the dialog).
Altair Engineering
MotionView 13.0 Tutorials 158
Proprietary Information of Altair Engineering
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).
8. Click the Add button (located in the middle of the dialog).
arg_p.x is automatically filled in the Expression area.
159 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9. Append +50 to this expression.
The complete expression should now read: arg_p.x+50.
10. Click OK to close the dialog.
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.
Altair Engineering
MotionView 13.0 Tutorials 160
Proprietary Information of Altair Engineering
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.
Alternatively, the expressions in Y and Z can be filled by copying the arg_p.x+50 expression from
X Coordinate and editing it.
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.
The Add Body or BodyPair dialog is displayed.
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.
161 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
16. Right-click on the Pendulum system in the Project Browser and select Add > Reference Entity
> Graphic.
The Add "Graphic" dialog is displayed.
17. Specify the Label as Rod, the Variable as gcyl_rod, the Type as Cylinder, and click OK.
The Graphics panel is displayed.
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.
19. Go to the Properties tab and change the value of Radius 1 to 2.
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.
23. From the Properties tab, specify 25 for the Radius.
Altair Engineering
MotionView 13.0 Tutorials 162
Proprietary Information of Altair Engineering
24. Right-click on the Pendulum system in the Project Browser and select Add > Constraint >
Joint.
The Add Joint or JointPair dialog is displayed.
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.
The Joints panel is displayed.
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.
163 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
28. Save the model
to your <working directory> as pend_gui.mdl.
Step 4: Exporting the system definition.
1.
Select the Pendulum system in the Project Browser and click on the Import/Export tab in
the Systems/Assembly panel.
2.
Select the Export option.
3.
Click on the Select file file browser
4.
Specify the name of the file as sys_pend_gui.mdl by clicking on the folder icon and clicking on
Save.
Altair Engineering
and browse to your <working directory>.
MotionView 13.0 Tutorials 164
Proprietary Information of Altair Engineering
5.
Open the above file in a text editor.
The system definition content will look as displayed below:
*DefineSystem( def_sys_pendu, arg_p, arg_b )
*Attachment( arg_p, "Attachment Point", Point, "Select attachment.",
P_Global_Origin, )
*Attachment( arg_b, "Attachment Body", Body, "Select attachment.",
B_Ground, )
*SetDefaultSystemInstance( sys_pendu, "Pendulum" )
*Point( p_cg, "Mass CG" )
*Body( b_mass, "Mass", p_cg, , , ,
)
*Graphic( gcyl_rod, "Rod", CYLINDER, b_mass, p_cg, POINT, arg_p, 2.0,
gcyl_rod.r1, , 0.0, CAPBOTH )
*Graphic( gsph_mass, "Mass", SPHERE, b_mass, p_cg, 25.0 )
*RevJoint( j_pivot, "Pivot", b_mass, arg_b, arg_p, VECTOR, V_Global_Y )
*SetPoint( p_cg,
arg_p.x+50, arg_p.y, arg_p.z+100 )
*SetBodyInertia( b_mass,
0.0, 0.0, 0.0 )
1.0, 1000.0, 1000.0, 1000.0,
*Set( b_mass.usecm, true )
*EndDefine()
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.
Step 5: Instantiating the system definition.
1.
Select the Model system in the Project Browser.
2.
Click the Import/Export tab in the Systems/Assembly panel.
3.
Click on the Select file file browser
4.
Select the sys_pend_gui.mdl file and click Open.
and browse to your <working directory>.
165 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
Click the Import button.
The Import System/Analysis Definition dialog is displayed.
6.
Select def_sys_pendu.
7.
Change the Label to Pendulum 2 and the Variable to sys_pendu_2.
8.
Click OK.
The system definition is instantiated.
9.
Select the Pendulum 2 system in the Project Browser.
Altair Engineering
MotionView 13.0 Tutorials 166
Proprietary Information of Altair Engineering
10. Go to the Attachments tab and resolve the attachments in the following manner:
Double click on the
collector. In the model tree that appears, click on the
Pendulum system, select Mass CG from the list on the right, and click OK.
Click on the
collector. In the model tree that appears, click on the
Pendulum system, select Mass from the list on the right, and click OK.
11. Save the model
to your <working directory> as pend_2_gui.mdl.
The same system definition can be reused to instantiate several times either within the same
model or in a different model.
167 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Flexible Body Modeling and Simulation
using MotionView and MotionSolve
MV-2000: Introduction to Flexible Bodies
MV-2010: Flexbody Generation using Flexprep and Optistruct
MV-2020: Use of Flexbody in MBD Models
MV-2021: Simulating an Automotive Door Closure Event
MV-2035: Solving Flexbody ADM/ACF in MotionSolve
Altair Engineering
MotionView 13.0 Tutorials 168
Proprietary Information of Altair Engineering
MV-2000: Introduction to Flexible Bodies
Why Flexible Bodies?
Traditional multi-body dynamic (MBD) analyses involve the simulation of rigid body systems
under the application of forces and/or motions.
In the real world, any continuous medium deforms under the application of force. Rigid body
simulations do not capture such deformations and this may lead to inaccurate results. Inclusion
of flexible bodies in MBD simulations accounts for flexibility.
MotionView provides the modeling tools required to incorporate flexible bodies in your MBD model.
Flexible MBD simulations allow you to:
capture body deformation effects in simulations.
acquire greater accuracy in load predictions.
study stress distribution in the flexible body.
perform fatigue analysis.
However, flexible bodies introduce an additional set of equations in the system and consequently,
have a higher computational cost as compared to rigid body systems.
What is a Flexible Body?
Finite element models have very high number of degrees of freedom. It is hard for MBD solvers
to handle these.
A flexible body is a modal representation of a finite element model. The finite element model is
reduced to very few modal degrees of freedom.
The nodal displacement in physical coordinates is represented as a linear combination of a small
number of modal coordinates.
where:
U
nodal displacements vector
modal matrix
Q
matrix of modal participation factors or modal coordinates to be
determined by the MBD analysis.
MotionView uses the process of Component Mode Synthesis(CMS) to reduce a finite
element model to set of orthogonal mode shapes.
169 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Two types of CMS methods are supported in Optistruct:
Craig Bampton
Craig Chang
Note
At the end of this tutorial, links to online help direct you to where you can learn more about
the theory behind flexible bodies and CMS method.
Flexbody Generation Using Optistruct
There are two ways you can generate flexible bodies using Optistruct:
1. Using the FlexPrep utility in MotionView.
2. Manually editing the input deck.
Using the FlexPrep utility in MotionView interface
FlexPrep is a MotionView utility which allows you to generate a flexible body from a finite element
mesh. It also allows translation between various flexbody formats. These translations are
discussed in the next section, "Flexbody Translation Using Flexprep".
Altair Engineering
MotionView 13.0 Tutorials 170
Proprietary Information of Altair Engineering
Using the FlexPrep GUI, you can:
generate a flexible body from any Optistruct or Nastran bulk data file.
create RBE2 spiders.
request for stresses and strains.
create Optistruct preparation file which can be used in the file size reduction of a flexible
body.
Manually Editing the Input Deck
You can manually insert certain cards in the Optistruct input deck to run the Component Mode
Synthesis routine. These cards allow file size reduction of a flexbody. This helps in faster pre/
post-processing and overall better efficiency of the process.
Note
You can manually edit the preparation file generated by FlexPrep to reduce the size of
the flexible body H3D.
By modifying the input deck, you can:
request only the skin elements of the flexbody to display .
request stress and strain information for a selected set of elements.
use released degrees of freedom for the interface nodes.
The following data is included in a flexbody H3D file:
1. Nodal positions.
7. Translational displacement mode shapes.
2. Element connectivity.
8. Rotational displacement mode shapes.
3. Eigenvalues of all modes.
9. Interface node IDs (optional).
4. Inertia invariants (optional).
10.Element stress/strain tensors (optional).
5. Nodal mass.
11.Global (rigid) inertia properties (optional).
6. Nodal inertia (optional).
Flexprep.exe always generates points 1, 2, 3, 4, 5, 6, 7, 8, 9, and 11 and writes them to the
H3D file. Points 4, 6, 9, and 11 are not strictly required.
Flexbody Translation Using FlexPrep
FlexPrep allows you to translate a flexbody from one format to another. Using FlexPrep, you can:
1.
Mirror an existing flexible body H3D file about a plane.
2.
Translate an ADAMS MNF file to an Altair H3D file.
3.
Translate an H3D file to an ADAMS MTX file.
4.
Translate an Altair H3D file to ADAMS MNF file.
171 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
Translate an Nastran PCH file to an Altair H3D file.
6.
Translate an Altair H3D file to DADS DFD file.
Note
Once the flexbody H3D is created, it can be used in the MBD model and the model can be
submitted to either MotionSolve or ADAMS. This is covered in the following tutorials.
Stress Recovery and Fatigue Calculations
Stress recovery and fatigue calculations are done in two stages during the MBD analysis:
For stress recovery in the pre-processing stage, element stresses are obtained using the
orthogonalized displacement modes. Every displacement mode is associated with a particular
number of stress modes, each representing a basic stress tensor. This particular number
depends on the type of elements used in the flexible body, for example, one, two, or threedimensional elements. These stress modes are then saved to the H3D file.
In the post-processing stage, the actual stress recovery and fatigue index calculations are
carried out. The modal participation factors obtained from the simulation are used to linearly
superimpose the stress modes to come up with the stress tensor for each element. This stress
tensor is used to calculate the other components of stresses: Principal, Shear, or von Mises.
Altair Engineering
MotionView 13.0 Tutorials 172
Proprietary Information of Altair Engineering
MV-2010: Flexbody Generation using Flex Prep and
Radioss
In this tutorial you will:
get familiar with the flexible body generation techniques available in MotionView and Optistruct.
be introduced to all available features in FlexBodyPrep for flexbody generation.
be introduced to the various options available in Optistruct to reduce the size of the H3D file.
There are two ways you can generate the flexible bodies for MBD simulation in Hyperworks:
1. Using FlexPrep utility in MotionView interface.
2. Manually editing the input deck (*.fem) for Optistruct solver.
Introduction to Flex Prep
Flex Prep is a tool in MotionView which is used to:
create flexbody H3D files using Optistruct.
create flexbody H3D file from ADAMS MNF and NASTRAN PCH.
translate flexbody H3D file to ADAMS MTX, Altair H3D (mirrored), ADAMS MNF, DADS FDF, and
nCode FES.
Exercise: Creating and Simulating Flexible LCA
In this exercise, you will generate a flexible body for a left Lower Control Arm of a front SLA
suspension. The input file is a pre-prepared .fem file (sla_flex_left.fem) which has finite element
modeling information for the LCA (elements and nodes). Interface nodes for the flexible body are:
the center nodes at the front and rear bushing mounts
location where the spring is attached
the center of the lower ball joint attaching to the knuckle.
In the given input file, interface nodes are already created at the center of the bushing mounts and
the spring attachment location. You will create the interface node at the lower ball joint and its
connection to the LCA in the exercise.
Step 1: Using FlexBodyPrep.
Once you provide the required input, Flex Prep generates an input deck (_prp.fem) for the Optistruct
solver with all the required cards, and then it calls Optistruct to run the job. Please refer to tutorial
MV-2000 to understand all the inputs and process.
Note
1.
The file sla_flex_left.fem needed to start this exercise is located in the folder
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\flexbodies. Please copy
it to your working directory before proceeding further.
Open a new MotionView session.
173 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
From the Flex Tools menu, select Flex Prep.
Launching Flex Prep
2.
Select Optistruct Flexbody generation.
3.
From the pull down menu, pick the option Create Optistruct prp (preparation) file and
generate the h3d flexbody.
4.
Click on the file browser icon,
, next to Select Bulk Data file and select the input bulk data
file sla_flex_left.fem from your working directory.
Note
You can use any Optistruct (FEM) or Nastran (nas, dat, bdf) bulk data files.
5.
For Save the *.h3d file as, enter the name of the output H3D file as sla_flex_left.h3d in
your <working directory>.
6.
For the Component mode synthesis type, select Craig-Bampton to perform Craig-Bampton
component mode synthesis.
7.
In the Specify Interface Node List field, enter 10001+10002+10003.
Note
If the interface node IDs are within a range, you can specify as 10001:10003.
The interface nodes are the nodes where constraints or forces are applied in the MBD analysis.
8.
For the Cutoff type and value, select Highest Mode # and enter a value of 10.
Limiting Modal Information
MotionView allows you to specify a limit on the modal information contained in your H3D file. Two
methods are available to set these limits.
Specify a maximum number of Eigen modes for which modal data is included in your H3D file.
OR
Specify an upper cut-off frequency for the Eigen modes.
We used the first method in this exercise.
9.
Switch on Perform stress recovery by clicking on the check box next to it.
With this option set, the Flex Prep puts relevant cards in the Optistruct input deck to calculate
the modal stresses while processing your bulk data file.
10. Switch on Perform Strain Recovery by clicking on the check box next to it.
With this option set, the Flex Prep puts relevant cards in the Optistruct input deck to calculate
the modal strains while processing your bulk data file.
Altair Engineering
MotionView 13.0 Tutorials 174
Proprietary Information of Altair Engineering
11. Under Specify units in bulk data file, select the following:
Mass Units
Kilogram
Length
Millimeter
Force
Newton
Time
Second
Note
HyperMesh is unit-less and you need to make sure to use consistent units, or the
flexbody generated will have incorrect modal frequencies. In the given input file, the density used
is in unit kg/mm^3. Hence, you will use kilogram as the mass unit in this exercise.
Generally, FE analysts using mm-N-sec as Length, Force and Time units need to specify mass as a
derived unit as N-sec^2/mm (equivalent to tonne/mm^3/MEGAGRAMS). If the model that you
use in the future may have such units, use MEGAGRAMS for the mass units in FlexBodyPrep.
12. There are three RBE2 spiders already in the sla_flex_left.fem. The fourth RBE2 spider should
be created using the Create RBE2 Spiders option explained in the next step.
Step 2: Create RBE2 Spiders.
If you have a circular hole in your finite element (FE) model and need to use the center of the hole as
the interface node, you need to transfer the loads from the center node to the peripheral nodes. This
feature allows to you create RBE2 spiders at the hole in the FE model to transfer forces from the
interface node to peripheral nodes of the hole.
Note: If the finite element model definition is complete (all interface nodes and connections already
exist), this step is not required.
Description of an RBE2 Spider
An RBE2 is a rigid element whose independent degrees of freedom are specified at a single grid point
and whose dependent degrees of freedom are specified at an arbitrary number of grid points. This is
usually used to model relatively stiff connections.
1.
Click the Create RBE2 Spider button.
175 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
HyperMesh is invoked. The input file, sla_flex_left.fem, is imported into HyperMesh and the
FE model is displayed in the graphics area of the screen.
Note
If HyperMesh asks for a user profile, click Cancel and go to the utility panel in the
Browser area.
The Tab area displays a Utility tab with a user-defined page with three buttons (steps 1 to 3).
Note
If the user defined page with the three buttons is not displayed, follow these steps to view
it:
From the View menu, select the Utility Menu.
From the Utility menu, click the User button, located at the bottom of the page.
3.
The Info button details the procedure to create RBE2 spiders.
4.
Zoom into the area of the lower ball joint location as shown in the image below:
5.
Click the Step 2: Superspider to create one spider at a time.
Altair Engineering
MotionView 13.0 Tutorials 176
Proprietary Information of Altair Engineering
6.
Select a node on the periphery of the hole and click Proceed.
7.
The script would create a RBE2 Spider automatically as shown in image below:
8.
Click the Step 3: Save and Close, which will save the modified file and automatically grab the ID
of the center (interface) node. Give a new name to the file sla_flex_left_complete.fem and
check to see if the interface node ID is added to the flex prep.
177 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9.
The new interface node IDs are automatically added to the interface node list in FlexBodyPrep as
displayed in the image below:
10. Click OK to launch Optistruct in a command window.
Based on the inputs provided here, FlexBodyPrep creates a new FEM file by appending _prp to the
input filename and submits it to Optistruct. In this case, sla_flex_left_complete_prp.fem is
created.
Messages from the FlexBodyPrep translator are displayed in the Output window. Check the
status of the Optistruct run and look for any error messages there.
11. Click OK in the Output window to close.
Altair Engineering
MotionView 13.0 Tutorials 178
Proprietary Information of Altair Engineering
Step 3: Viewing the model and verifying results.
In this exercise, you will verify your work in Step 1 by viewing the flexible control arm in HyperView.
1.
From Select window mode drop-down menu on the toolbar, select HyperView.
The Load model and results: panel is displayed.
2.
Click the Load model file browser and select the H3D flex file, <working directory>/
sla_flex_left.h3d.
The flexible arm model and its modal results are contained in the H3D flex file you created using
the Flexprep wizard.
Load model and results fields
HyperView automatically updates the Load results file field with the same filename.
179 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Click Apply to load the model into the HyperView.
Flexible LC A Model
4. Click the Select animation mode arrow and select Set Transient Animation Mode,
5.
Animate the results by clicking the Start Animation icon,
.
.
HyperView sequentially animates the flexible control arm through its mode shapes. The mode
number and its frequency are displayed at the top-right of the window.
6.
Stop the cycling of modes by clicking the Pause Animation icon ,
Altair Engineering
.
MotionView 13.0 Tutorials 180
Proprietary Information of Altair Engineering
7.
Click the Select animation mode arrow and from the drop-down list, select Set Modal
Animation Mode.
8.
To animate a particular mode shape, go to the Results Browser and change the mode from
Undeformed Model Frame to Mode 7.
Selecting specific mode using the Simulation selector panel
Note
Although there is not a direct correlation possible, you can recognize the first six modes
as rigid body modes due to near zero frequency values. If there are more than six modes
that are near zero, it generally indicates a model integrity problem (one or more elements
are free and not connected to other elements).
181 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9.
Click the Animation icon,
, to animate the selected mode.
Toggle the animation on and off by clicking the button.
You can similarly animate other modes of the flexible body.
10. Click the Contour button,
, to view the stresses on the flexbody.
11. From the Result type drop-down menu, select Stress and vonMises. For Entity with layers,
select Z1 as shown in image below:
Altair Engineering
MotionView 13.0 Tutorials 182
Proprietary Information of Altair Engineering
12. Click Apply to display the contours and the legend in the graphic area.
vonMises Stress contours displayed on the model
The above exercise demonstrated generating a flexible body using MotionView. Flexible bodies
can also be generated by using Hypermesh and Optistruct. To learn more, you can refer to
tutorial OS-1930 - Generating a Flexible Body for use in Altair MotionSolve.
Step 4: Invoking FlexPrep in batch mode.
The FlexPrep executable can also be invoked in batch mode.
To run the FlexPrep from the command line in LINUX or Mac:
<install_path>/altair/scripts/flexprep
To run the FlexPrep from the command line in DOS:
<install_path>\io\translators\bin\<os>\flexprep.exe (where <os> is either win32 or win64).
183 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The usage options and corresponding syntax is listed if the above command is given without any
arguments.
The sla_flex_left.h3d flexbody created in the earlier exercise is the lower control arm of a left
front SLA suspension. Now, we will create a symmetric flexible body for the right front SLA suspension
by invoking flex prep in batch mode.
Note
In this exercise, you will run the FlexPrep translator from the MS DOS prompt for the Windows
Operating System. You may follow analogous steps for the Linux/Mac OS terminal.
1.
From the Start menu, open an MS DOS prompt window.
2.
Use the cd command to navigate to your working directory.
3.
Enter the command to launch FlexPrep <install_path>\translators\flexprep.exe.
4.
Go through the usage options for running the FlexPrep translator in batch mode.
5.
Enter the following command:
<install_path>\io\translators\bin\<os>\flexprep.exe sla_flex_left.h3d
sla_flex_right.h3d -MIRROR_XZ
6.
FlexPrep creates the mirrored lower control arm sla_flex_right.h3d flexbody file.
Exercise: Manual Methods to Reduce the Size of the Flexbody
The previous exercise discussed flexbody generation using FlexPrep. It is possible to generate
flexbodies directly from Optistruct by editing the input FEM file and adding the cards that invoke the
flexbody generation from Optistruct. Steps 1 to 4 below discuss these cards in brief.
Understanding the Optistruct input file for flexbody generation
1.
Open the file sla_flex_left_complete_prp.fem in any text editor.
2.
The first few lines of the FEM file are given below with explanation for each line:
Line 1: SUBCASE
1
Line 2: OUTFILE, sla_flex_left
Line 3: CMSMETH
1
Line 4: STRESS=ALL
Line 5: STRAIN=ALL
Line 6: BEGIN BULK
Line 7: DTI, UNITS, 1, KG, N, MM, S
Line 8: PARAM
COUPMASS
Line 9: PARAM
CHECKEL
-1
YES
Line 10: CMSMETH, 1, CB, ,
Line 11: ASET1, 123456,
Altair Engineering
10
10001
MotionView 13.0 Tutorials 184
Proprietary Information of Altair Engineering
Line 12: ASET1, 123456,
10002
Line 13: ASET1, 123456,
10003
Line 14: ASET1, 123456,
10004
SET DATA FOLLOWS
BULK DATA FOLLOWS
A generalized input deck (FEM file) need the cards specified above to generate a flexbody from
Optistruct. The definition of each line is as follows:
Line 1: SUBCASE – indicates the start of a new subcase definition.
Line 2: OUTFILE – used to specify a base name for the H3D file.
Line 3: CMSMETH – is the card defining the component mode synthesis solution method used to
generate flexbodies in Optistruct.
Line 4: STRESS=ALL – use to specify that modal stresses are to be computed by Optistruct for all
the elements in the model.
Line 5: STRAIN=ALL – use to specify that modal strain values are to be computed by Optistruct
for all the elements in the model.
Line 6: BEGIN BULK – defines the start of FE entities in the model.
Line 7: DTI, UNITS – defines the units for the flexbody.
Line 8: PARAM COUPMASS -1 – defines values for parameters used by Optistruct for the
generation of a flexbody. In this case, lumped mass matrix approach is used by Optistruct for
eigenvalue analysis.
Line 9: PARAM CHECKEL YES – parameter to perform element quality check before running the job.
Specifying NO makes the solver skip the element check. Elements with poor quality may lead to
inaccurate results.
Line 10: CMSMETH CB 10 – component mode synthesis method selected is Craig Brampton and 10
modes are requested.
Lines 11 to 14: ASET1 – defines the boundary degrees of freedom for the interface nodes.
With these cards specified, Optistruct generates a flexbody H3D file. The flexbody size can be
large based on the bulk data file, number of interface nodes, and modes and stress/strain details.
It is possible to reduce the size by using any of following methods:
MODEL Set – Reduces the model information that is used for graphical display.
STRESS/STRAIN Set – Reduces the number of elements on which stress or strain calculation is
requested.
OUTLINE – Reduces the model information to display only boundary edges.
Reduced DOF – Reduces the number of DOF that contribute to the flexible body information.
185 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Modifying the Input Deck to Incorporate Stress/Strain Set, Model Set, Outline
and Released DOF into the Flexbody
In finite element modeling, nodes or elements can be grouped together to form a SET. These groups
can then be used in other modeling cards that can take the nodes and elements as inputs collectively.
In flexible body generation, the need to incorporate these sets in the Optistruct input deck is:
to reduce the size of the flexbody.
to help increase the speed of the multi-body pre-processing, simulation and animation.
Step 1: Stress/strain set in Optistruct.
The cards STRESS and STRAIN specify the elements for which the stress and strain computations
have to be carried out during flexbody generation. Use this card if you are interested in viewing
stress results for the body in your analysis. If the objective of using a flexible body is to incorporate
the flexibility of the body and not calculate stresses, then not using this card drastically reduces the
size of the H3D.
Syntax of the STRESS and STRAIN cards:
STRESS=[setid|ALL|NONE]
STRAIN=[setid|ALL]
setid is the ID of the set of elements.
Alternatively, if ALL is specified, the stress/strain is calculated for all elements.
If NONE is specified, the stress is not calculated on any elements. (Not having the STRESS card has
the same effect).
In the FEM file that is opened, you can observe SET cards defined for nodes (keyword GRID) and
elements (keyword ELEM).
1.
Modify the cards STRESS=ALL and STRAIN=ALL as STRESS=5 and STRAIN=5, respectively.
2.
Modify the OUTFILE to read as OUTFILE, sla_flex_left_stress_set.
3.
Save the file as sla_flex_left_stress_set.fem and close the file.
4.
Generate the flexbody using FlexBodyPrep. From the Optistruct Flexbody Generation dropdown menu, select the option Create h3d flexbody using pre-existing prp file.
Note: You can use Optistruct to generate the flexbody. To run Optistruct from the command
prompt, type the following the working directory: <install>\hwsolvers\bin\win32
\Optistruct.bat sla_left_stress_strain_set.fem.
5.
Start a new MotionView session and change the window type to HyperView.
6.
Load in the H3D file sla_flex_left_stress_set.h3d generated by Optistruct.
7.
Go to the Contour panel to apply Stress and Strain contours. You will see that only a few
elements display the contours. These are the elements that were pre-selected for stress and
strain computations using the element set.
Altair Engineering
MotionView 13.0 Tutorials 186
Proprietary Information of Altair Engineering
Step 2: Model Set in Optistruct.
This card lets you control the display of elements of the flexbody in the H3D file while using the H3D
file during pre- and post-processing in MotionView.
Syntax of the MODEL card:
MODEL=setid|PLOTEL
Where MODEL is the Optistruct card that determines the elements to be written to the result file
(H3D). setid is the ID of set that defines the element displayed.
The PLOTEL option will be discussed further in this tutorial
1.
Open the FEM input deck sla_flex_left_stress_set.fem in a text editor.
2.
Add the model card as MODEL=4 above the line STRESS=5.
3.
Change the OUTFILE line to read as OUTFILE, sla_flex_left_model_set.
4.
Save the file sla_flex_left_model_set.fem to your working directory and close the file.
5.
Run the FEM deck in Optistruct or you generate the flexbody using FlexBodyPrep. From the
Optistruct Flexbody Generation drop-down menu, select the option Create h3d flexbody
using pre-existing prp file.
6.
In HyperView, load the H3D file generated by Optistruct.
You will see that only a part of the flexbody is displayed. Only those elements included in the set
that is used with the MODEL card are displayed here.
Step 3: Outline feature using PLOTEL elements in Optistruct.
The size of the flexbody can be greatly reduced by using PLOTEL elements in the Optistruct input
deck for flexbody generation. In case you would like only the edges of the flexbody to be displayed in
MotionView, PLOTEL elements can be defined in the input deck and displayed using the MODEL card.
PLOTEL is a one-dimensional dummy element for use in display. This element does not contribute any
mass or stiffness to the part.
Syntax of the PLOTEL element:
PLOTEL
EID
G1
G2
Where PLOTEL is the element type, EID is the element ID, G1 and G2 are the nodes used to define the
element. For example: PLOTEL
8786
4698
1702
The FEM file that you are working with already contain PLOTEL elements.
187 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The procedure to incorporate the PLOTEL feature is briefly explained here:
You can use the features option in HyperMesh to generate the PLOTEL elements of the
feature edges of your model automatically. The features option is available on the Tool page
in HyperMesh.
The picture below shows a flexbody model with PLOTEL elements created with the features
option:
Use the MODEL card and specify the PLOTEL option.
MODEL=PLOTEL (to skip writing rigid elements like RBE2 as part of plotel, use optional keyword
NORIGID)
Save the FEM file and run it in Optistruct to generate the flexbody that displays only the
PLOTEL elements.
1.
Open the FEM deck sla_flex_left_model_set.fem, saved earlier in your working directory.
2.
Replace the MODEL=4 by MODEL=PLOTEL.
Within the BULK DATA, you will be able to see the many PLOTEL elements.
3.
Change the OUTFILE line to read as OUTFILE, sla_flex_left_plotel_set.
4.
Save the file as sla_flex_left_plotel_set.fem.
Altair Engineering
MotionView 13.0 Tutorials 188
Proprietary Information of Altair Engineering
5.
Run the FEM deck in Optistruct or you can generate the flexbody from FlexPrep. From the
Optistruct Flexbody Generation drop-down menu, select the option Create h3d flexbody
using pre-existing prp file.
6.
In HyperView, load the H3D file generated by Optistruct.
You will see that the flexbody is shown only as lines or edges defined by the PLOTEL elements
Step 4: Released DOF method for interface nodes in Optistruct.
The released DOF (degrees of freedom) feature enables you to free some degrees of freedom of the
interface nodes. If the appropriate DOF (corresponding DOF that are free in the MBD model) are
released for a particular interface node, the simulation is not affected in any way. Depending on the
kind of kinematic constraints in the model and the MBD simulation being carried out, you can release
the appropriate degrees of freedom at the interface nodes to reduce the size of the H3D file
generated.
The ASET1 card is used define the boundary degrees of freedom of an interface node of a flexbody.
Syntax of the ASET1 card:
ASET1 C
G1 or ASET1, C, G1
Where ASET1 is the card name, C is the DOF to be constrained, and G1 is the node ID. For example:
ASET1, 123456, 4927
This means that the interface node of ID 4927 will be constrained for all DOF, where 123456
represents the three translational and three rotational nodes in that order. Thus, to release a DOF
from the interface node (for example, rotation about X), the C value will be 12356.
1.
Modify the ASET1 card corresponding to interface node 10004 in the deck as follows:
ASET1, 123,
10004
2.
Change OUTFILE to read as OUTFILE, sla_flex_left_rdof.
3.
Save the file in your working directory as sla_flex_left_rdof.fem and close the file.
4.
Run the FEM deck in Optistruct or generate the flexbody from FlexPrep. From the Optistruct
Flexbody generation drop-down menu, select the option Create h3d flexbody using preexisting prp file.
5.
Check the size of the H3D file generated and you will notice a reduction in size; this is due to the
released DOF incorporated into the flexbody.
Compare the sizes of all the H3D files generated using the cards mentioned in this step to know
the reduction in file size.
189 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-2020: Use of Flexbody in MBD Models
In this tutorial you will:
use the flexible bodies created in tutorial MV-2010 in an MBD model and solve the model using
MotionSolve.
Exercise: Simulating a Front SLA suspension with Flexible
LCA
Step 1: Replacing rigid bodies with flexible bodies and solving them in
MotionSolve.
In this exercise, you will integrate the flexbodies into your MBD model.
1.
From the MotionView menu bar, select Model > Assembly Wizard… to bring up the wizard.
2.
Use the criteria from the table below to assemble a front end half vehicle model.
Panel
Selection
Model Type
Front-end of the vehicle
Driveline Configuration
Defaults <No driveline>
Primary Systems
Front Suspension = Frnt. SLA susp (1 pc LCA)
and defaults for the rest
Steering Subsystems
Steering Column = Steering column 1 (not for
abaqus) and Steering boost = None
Springs, Dampers, and Stabars
Defaults
Jounce/Rebound Bumpers
Defaults
Label and Varname
Defaults
Attachment Wizard
Compliant = Yes; Defaults for the rest
Assembly Wizard settings
You should make sure to select Frnt. SLA susp (1 pc LCA) since the flexible bodies you have
created are for this suspension geometry.
3.
From the MotionView menu bar, select Analysis >Task Wizard… to display the wizard.
4.
Load a Static Ride Analysis task from the Task Wizard - Front end tasks. Click Next and click
Finish.
5.
The Vehicle Parameters form is displayed. Click Finish.
Altair Engineering
MotionView 13.0 Tutorials 190
Proprietary Information of Altair Engineering
6.
From the Project Browser, select Lwr control arm from the Bodies folder (located underneath
the FrntSLA Susp (1 pc.LCA) system).
The Bodies panel is displayed.
7.
Under the Properties tab for the Lwr control arm-left, deselect the symmetry check-box,
Symmetric properties.
8.
The Set Symmetry confirmation dialog is displayed. Click Retain to retain the current values of
properties of Lwr control arm-right.
9.
Select the Deformable check box and click Yes to confirm both sides as deformable.
Notice that the graphics of the rigid body lower control arm vanishes.
10. Using the Graphic file browser,
, select the file sla_flex_left.h3d (created in earlier
tutorial MV-2010) from your working directory.
11. You will see that the H3D file field is populated automatically with the same path and the file
name as the graphic file you specified in point 10.
Properties panel
The flexible body drops into the right position.
Note
You need to specify the flexbody H3D file as the H3D file. Specify the same or any other
file as the Graphic file.
External Graphics for Flexbodies
Use of large flexbodies is becoming very common. For faster pre-processing, you can use any graphic
file for the display and use the flexbody H3D file to provide the data to the solver. You can use the
input FEM deck or the CAD file used for the flexbody generation to generate a graphic H3D file using
the CAD to H3D Conversion and specify that file as the Graphic file. This will make pre-processing
a much more efficient process.
191 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Locate Feature
The Locate button on this panel is an optional step to relocate a flexible body if it is not imported in
the desired position. This may happen if the coordinate system used while creating the flexible body
in the original FEM model does not match the MBD model coordinate system. However, if your flexible
body is already in the desired position, you can skip this step.
12. Click Nodes… .
The Nodes panel is displayed.
The Nodes panel is used to resolve the flexbody’s attachments with the vehicle model, since the
vehicle model is attached to the flexible body at these interface nodes.
This panel lists all markers of the connections (joints/forces)on the body which is now flexible.
These markers can interact with the flexible body only through a node. This panel is used to map
each of the markers to a node. The panel also displays the point coordinates of the marker origin
which are nothing but coordinates of a point entity that the connections are referring to.
13. 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. Node ID column is populated with the
interface node numbers for each row of connections. Also, the node coordinate table is also
populated along with the Offset with respect to the point coordinates.
14. Observe a small offset for the Lwr ball jt-Marker J-left. It suggests a difference in the
coordinate values between the point at which the joint Lwr ball jt is defined and its
corresponding location of the interface node 10004. Click Align to move the point to the nodal
coordinate position.
Note
Many times there is a little offset between the flexible body interface node and its
corresponding point in the model. When you click the Align button, MotionView moves
the connection point in the model to the node location on the flexible body. This could
affect other entities that reference this point. Hence, this option should be used with
caution. Generally, it is common to have minor offsets (values between 0.001mm to
0.1mm). If the offset is more than the tolerance value, MotionView inserts a dummy
body between the flexible body and the nearest connection point. If the offset value is
too high, it could indicate an mismatch of the FE model information with respect to the
MBD model. In such an event, it is recommended to review the models and reconcile the
differences.
15. Close the Nodes dialog.
Altair Engineering
MotionView 13.0 Tutorials 192
Proprietary Information of Altair Engineering
16. Click the Modes button. The Modes panel is displayed. This option lets you select the modes
that will be active during the simulation. By default, the rigid body modes are deactivated. You
can also change the damping used for modes.
Note
By default, for frequencies under 100Hz, 1% damping is used. For frequencies greater
than 100Hz and less than 1000Hz, 10% damping is used. Modes greater than 1000 Hz use
critical damping. You can also give any initial conditions to the modes.
Please note that when selecting the modes, the simulation results may vary as you
change the modes to be included in the simulation.
17. Click Close.
193 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
18. Repeat steps 7 through 17 to integrate the right side flexible body sla_flex_right.h3d (created
in tutorial MV-2010) in your model.
Your model should look like the image below:
Now you will review the properties of the FEM model file.
19. Click the FEM Inertia Props tab.
The following information is displayed:
Bodies panel/FEM Inertia Props tab
20. From the Tools menu, select Check Model to check your complete MBD model for errors.
Altair Engineering
MotionView 13.0 Tutorials 194
Proprietary Information of Altair Engineering
21. From the Standard toolbar, click the Save Model icon,
named sla_flex.mdl.
, to save your model as an MDL file
The Save As Model dialog is displayed.
22. Click the Run icon,
, on the toolbar and run the model with simulation type Quasi-Static,
specifying the filename as sla_flex_ride.xml.
23. Once the run is complete, load the MotionSolve result file sla_flex_ride.h3d (located in your
working directory) in a HyperView window and view the animation of the run.
195 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-2021: Simulating an Automotive Door Closure
Event
In this tutorial, you will learn how to:
use an FEM file to create a flexible body file.
use body data to create a rigid body model.
make the door flexible and use the flexbody file created in the model.
set up a door closure simulation.
N Copy the files metro_door.fem and car_body_graphics.hm from the location
o <installation_directory>\tutorials\mv_hv_hg\mbd_modeling\flexbodies
t to your <Working directory>.
e
Step 1: Review of a finite element model for the flexible door.
In this step, we will review the contents of the finite element (FE) model, which is the starting point
for creating a flexible body.
1.
Import the model metro_door.fem in HyperMesh.
2.
Click the Model Browser on the left of the graphics area and expand the model tree to review all
components, properties, and materials of the model.
Altair Engineering
MotionView 13.0 Tutorials 196
Proprietary Information of Altair Engineering
3. The FEM model should have the following attributes:
A decent, quality mesh on all components.
The Section properties are assigned to all components.
All components refer to appropriate materials.
4.
Identify the interface nodes of the flexible body. Please check the following nodes by ID: 9751,
9750, 10090.
5.
Export the FEM as metro_door_flex.fem for Flexbody Generation.
197 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Generating the flexbody using Flex Prep
In this step, we will use the FEM file created in Step 1 and use Flex Prep to generate a flexible body
H3D file. A pre-requisite for going through this step of the tutorial is an understanding of Flex Prep
as described in the tutorial: MV-2010: Flexbody Generation using Flexprep and Optistruct.
1.
In MotionView, from the FlexTools menu, select Flex Prep. The FlexBodyPrep dialog is
displayed.
2.
Once the FlexBodyPrep dialog is displayed, enter the following information in the FlexBodyPrep
dialog to generate the flexbody for building the door closure model.
Altair Engineering
MotionView 13.0 Tutorials 198
Proprietary Information of Altair Engineering
3.
See the image above where the entries and options on the FlexBodyPrep dialog are labeled with
numbers.
4.
For #2, Select Bulk Data file (fem/nas/bdf/dat):, specify the input file metro_door_flex.fem
generated in Step 1.
5.
For #3, Save the h3d file as:, specify the output H3D file as metro_door_flex.h3d.
6.
For #4, Specify Interface Node List, specify the interface node numbers as: 9751+9750+10090.
7.
For #5, Cutoff type and value: select Highest Mode # and enter 20.
8.
For #6, activate both Perform stress recovery and Perform strain recovery, and select No for
Perform element check in Optistruct model.
9.
For Mass units, select Megagram.
10. Click OK to start the flexbody generation.
11. The flexbody H3D file is generated in the selected folder with the name metro_door_flex.h3d.
199 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 3: Creating the MBD model of the car door.
In this step, you will create the MBD model of the car door, after which the door closure simulation
can be performed.
For this model, use the following units for length, mass, force, and time, respectively: millimeter,
megagram, Newton, second.
Model Units
1.
From the Forms panel,
, change the Mass units from the default Kilogram to Megagram.
Points
For building this model, a total of six points need to be created.
1.
From the Project Browser right-click Model and select Add Reference Entity > Point (or right
click on Points icon,
, from the toolbar. Add the points as shown in the table below.
Table 1 – Points required for the model
Bodies
In this model, there are two bodies: one body to represent the car and another to represent the
flexible door.
1.
From the Project Browser, right-click Model and select Add Reference Entity > Body (or rightclick the Bodies icon,
, from the toolbar. Add a body and label it Car Body.
2.
Specify the center of mass of the body as the point Car Body CG from the CM Coordinates tab.
3.
Click the Properties tab of the Car Body and enter the mass and inertia properties values as
shown in Table 2 below.
Table 2 – Mass and inertia properties of the car body
4.
Add another body and label it Car Door.
Altair Engineering
MotionView 13.0 Tutorials 200
Proprietary Information of Altair Engineering
5.
From the Properties tab, click the Deformable check box.
6.
Browse and specify the metro_door_flex.h3d file as the Graphic file: and H3D file: of the Door
Body. Use the flexbody file generated in Step 2 above.
Graphics
After Point 6 above, we see that the Door Body has a graphical representation, but Car Body is still
not graphically represented. Let’s add a File Graphic to the Car Body so that visualization of the
model becomes more meaningful.
1.
From the Tools menu, select Import CAD or FE.
2.
From the Input File drop-down menu, select HyperMesh. Use the file browser to select the
HyperMesh file car_body_graphics.hm.
201 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
From the Output File drop-down menu, select H3D. Specify the name of the H3D file as
car_body_graphics.h3d.
4.
Click OK. The HyperMesh file is converted to H3D and imported into the MotionView window.
5.
From the Graphics panel,
6.
From the Connectivity tab, double-click the Body button and pick Car Body as the body. This
will associate the selected graphic with the Car Body.
, click the graphic just now added.
Joints
For this body, we will need to add a total of four constraints/joints. One of these joints will need to
be added using the XML Template.
1.
From the Project Browser, right-click Model and select Add Constraint > Joint (or right-click
the Joints icon,
, from the toolbar). Add joints as specified in the table below.
Table 3 – List of the joints to be created and their topology
Once the joints are specified and since there is a flexible body in the model, the interface nodes
of the flexible body have to be associated with corresponding joint markers.
2.
From the Bodies panel, select Car Door.
Altair Engineering
MotionView 13.0 Tutorials 202
Proprietary Information of Altair Engineering
3.
From the Properties tab, click the Nodes… button.
4.
From the Nodes dialogue, click Find All to find the interface node numbers and to resolve them
with the respective connection markers.
Initial Conditions
In this simulation, we will have body initial velocity as the primary motion input to the model.
1.
From the Project Browser, select the Door Body from the filter on the left.
2.
Click the Initial Conditions tab.
3.
Activate WZ and specify a value of 5.0 for the same. This will be the magnitude of the initial
angular velocity about the global Z axis that will be applied to the Door Body.
4.
Do a test simulation to check how the model behaves with just the initial velocity and the
constraints.
Markers
To represent the locking mechanism of the car door, we will use a sensor activated fixed joint
between the Car Body and the Door Body that initially is deactivated. The fixed joint will need to be
created using XML templates since the MotionView interface allows joints to be created using bodies
and points. In this case, we need to create the joint between two initially non-coincident markers.
1.
From the Project Browser, right-click Model and select Add Reference Entity > Marker (or
right-click the Marker icon,
below.
, from the toolbar. Add two markers as specified in the table
Table 4 – List of markers to be created and their topology
2.
Once the markers are created, repeat steps 2-4 under Joints above to resolve the node
connections of Car Door Body with the maker Door Lock Mark.
Sensor
In this model, we will use an Event Sensor to detect the closing of the door. At the instance of the
event detection, the fixed joint between the door and the car body is activated to simulate the actual
locking mechanism.
1.
From the Project Browser, right-click Model and select Add General MDL Entity > Sensor (or
right-click the Sensor icon,
2.
, from the toolbar. Add a sensor and label it Lock Recognize.
Click the Signal tab and change the signal type from Linear to Expression.
203 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Use the following expression as the signal: DY({MODEL.m_door.idstring},
{MODEL.m_car.idstring},{MODEL.m_car.idstring}).
The DY function accepts three markers as arguments. It returns the Y distance of the first
marker from the second marker in the third marker’s reference frame. In this case, the first
marker is the maker labeled Door Lock Mark, which belongs to the Car Door Body. The second
and the third marker is Car Body Lock Mark, which belongs to the Car Body.
4.
From the Compare To tab, specify 0.0010 for Value: and 0.0001 for Error: Under Respond if:,
select Signal is less than VALUE + ERROR.
5.
From the Response tab, activate the Return to command file check box.
Templates
To simulate the door lock, we need a fixed joint between the door and the car body. The fixed joint
needs to be activated with the sensor. The activation of the joint and the deactivation of the sensor
can be done using a sequential simulation operation.
1.
From the Project Browser, right-click Model and select Add General MDL Entity > Template
(or right-click the Template icon,
it Lock Fix Joint.
, from the toolbar). Add a template to the model and label
2.
From the Properties tab of the template, under Type:, select Write text to solver input deck.
3.
Type in the following definition of the fixed joint in XML format in the template are of the panel:
<Constraint_Joint
id
type
i_marker_id
j_marker_id
/>
=
=
=
=
"1001"
"FIXED"
"{the_model.m_door.idstring}"
"{the_model.m_car.idstring}"
This defines the fixed joint between the two markers Door Lock Mark and Car Body Lock Mark.
4.
From the Project Browser, right-click Model and select Add General MDL Entity > Template
(or right-click the Template icon,
, from the toolbar) to add another template.
5.
Specify the label as Seq Sim Commands.
6.
From the Properties tab of the template, under Type, select Write text to solver command
file.
Altair Engineering
MotionView 13.0 Tutorials 204
Proprietary Information of Altair Engineering
7.
Below are XML Commands for the sequential simulation. Enter the following blocks of XML
commands in the template area of the panel:
<Deactivate
element_type = "JOINT"
element_id
= "1001"
/>
<Simulate
analysis_type = "Transient"
end_time
= "1.0"
print_interval = "0.001"
/>
<Activate
element_type = "JOINT"
element_id
= "1001"
/>
<Deactivate
element_type = "SENSOR"
element_id
= "{the_model.sen_0.idstring}"
/>
<Param_Transient
integrator_type
= "VSTIFF"
/>
<Simulate
analysis_type = "Transient"
end_time
= "2.5"
print_interval = "0.001"
/>
<Stop/>
These set of XML blocks define a sequential simulation operation as specified in the steps below:
A.Deactivate Fixed Joint (initially).
B. Simulate for 1 second.
C.Activate Fixed Joint.
D.Deactivate Sensor.
E. Change the Integrator Type to VSTIFF.
F. Simulate for 1.5 seconds.
G.Stop simulation.
Continuing from step 7:
8.
Save the model once by selecting Export > Solver Deck from File menu.
9.
From the Run panel, click the file browser,
a name for the solver XML file.
, next to Save and run current model and specify
10. Click Run to run the model in MotionSolve.
11. Once the run is complete, click Animate to animate the simulation results.
205 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-2035: Solving Flexbody ADM/ACF in MotionSolve
In this tutorial, you will learn how to:
solve an ADM/ACF model that has flexbodies using MotionSolve.
use the Add Object panel in Hyperview and view the transient analysis results from
MotionSolve.
Theory
You can submit Adams dataset language files (ADM and ACF) directly to MotionSolve, thus avoiding
manual translation. The Adams model is first automatically translated into the MotionSolve XML format
and then it is solved. If the Adams model has a flexible body represented by the MNF and MTX files,
the MotionView Flexprep utility will be used to generate an H3D flexible body file (using the MNF file).
This H3D flexbody file is the MotionSolve equivalent of the Adams MNF and MTX files. It holds the
mass and inertia properties, as well as the flexibility properties which allow the body to deform under
the application of loads. The deformation is defined using a set of spatial modes and time dependent
modal coordinates.
Process
In this tutorial, an Adams single cylinder engine model (ADM and ACF) is provided. To improve the
accuracy of the model responses, the connecting rod is modeled as a flexbody (MNF and MTX). This
chapter deals with transient analysis of this single cylinder engine model using MotionSolve.
We will modify the ACF file to include an argument that would generate a flexbody H3D file.
MotionSolve internally calls OptiStruct, which generates the H3D flexbody file. The ADM and ACF is
translated into MotionSolve XML format and solved. MotionSolve outputs the results H3D file, which
can be loaded in HyperView for animation. In HyperView, external graphics (for piston and crank) can
be added for visualization.
MotionSolve supports most of the Adams statements, commands, functions, and user subroutines.
Refer to the MotionSolve User’s Guide help for additional details.
Tools
Copy the following files from <installation_directory>\tutorials\mv_hv_hg\mbd_modeling
\motionsolve to your <working directory>:
single_cylinder_engine.adm
single_cylinder_engine.acf
connecting_rod_flex_body.h3d
Flexible_body.mnf
Flexible_body.mtx
piston.h3d
crank.h3d
Altair Engineering
MotionView 13.0 Tutorials 206
Proprietary Information of Altair Engineering
Note
Below is a table listing the flexbody files in Adams and the equivalent files for MotionSolve:
Adams
MotionSolve
Flexbody file
mnf and mtx
h3d flexbody
Post processing
animation
Gra and res
h3d-animation
Plot
Req
plt/abf
Step 1: Modifying the ACF file.
1.
Start a new MotionView session.
2.
Click the Select Application icon,
3.
From the toolbar, click the arrow next to the Open Session icon,
document ,
4.
,and choose Text View,
.
, and select Open
. Select single_cylinder_engine.acf, located in your <working directory>.
Add the following text in line 3 :
FLEX_BODY/1, H3D_FILE=connecting_rod_flex_body.h3d
The ACF file should look like this:
5.
From the toolbar, click the Save Document icon,
, and save the file as
single_cylinder_engine.acf to your <working directory>.
Note
The connecting_rod_flex_body.h3d file that has been used in this tutorial is generated
using the FlexPrep utility in MotionView. Refer to the MotionView online help for more
information on converting an Adams MNF file into a MotionView H3D flexbody.
207 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Running the ACF file in MotionSolve.
1.
Click Start > All Programs > Altair HyperWorks > MotionSolve.
2.
For Input file, click Browse and select All files (*.*) from the file type menu. Select the input
file single_cylinder_engine.acf from your <Working directory>.
3.
Click Run.
MotionSolve translates the Adams model (ADM, ACF) to the MotionSolve XML format and solves it.
MotionSolve internally invokes OptiStruct, which converts the connecting rod flexbody MNF and
MTX files to a flexbody H3D file.
MotionSolve outputs the following files:
Results H3D file - single_cylinder_engine.h3d
Plot files - single_cylinder_engine.abf and single_cylinder_engine.plt
Log file - single_cylinder_engine.log
Note
MotionSolve is completely integrated into MotionView. You can also use the Run icon,
, from the toolbar in MotionView to perform this action.
MotionSolve can also be run from the command prompt. Open a DOS command
window, and at the command prompt type:
[install_path]\hwsolvers\scripts\motionsolve.bat input_filename.
[fem,acf,xml]
Step 3: View transient analysis results in HyperView by adding external
graphics.
Since the ADM file does not carry the external graphic information, the results from MotionSolve will
not contain this information either. From Adams, you can export a Parasolid file which can be used for
visualizing results in HyperView. In this step, we will attach the piston and crank external graphic for
better result visualization.
1.
Start a new HyperView session.
Altair Engineering
MotionView 13.0 Tutorials 208
Proprietary Information of Altair Engineering
2.
Using the Load model file browser,
directory>.
, select: single_cylinder_engine.h3d, located in your <working
The Load results file field will be automatically be updated with the single_cylinder_engine.h3d file.
3.
Click Apply.
The model is displayed in the window.
4.
From the Add Object panel,
, using the Add object from: browser, select the piston.h3d
file. If the Add Object icon is not visible on the toolbar, select the View menu > Toolbars >
HyperView > Tools.
5.
For Select object, select All to add all objects to the list.
6.
Using the expansion button,
selected object to move.
7.
For Reference system, select the Global coordinate system.
8.
Click Add.
, select Piston as the component with which you want the
Notice that the piston graphic is added to the model.
9.
Repeat steps 5 through 8 to add the crank object to the model.
Note
Remember to select the crank.h3d file in the Add Object from: browser and attach it to
Crank using the expansion button.
10. Click the Contour icon,
, on the toolbar. From the Result type drop-down menu, select the
data type that should be used to calculate the contours.
11. Select a data component from the second drop-down menu located below Result type.
Note
If you select Mag (Magnitude), the results system is disabled (since magnitude is the
same for any coordinate system).
12. Click Apply.
The contour is displayed.
13. Click the Start Animation icon,
, on the toolbar to animate the model.
209 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
14. Click the Stop Animation icon,
Note
, on the toolbar to stop the animation.
In the Add Object from: browser, you can directly select a wavefront file (*.obj)
from Adams to add graphics. Whereas, if you have a Parasolid file (*.x_t) from
Adams, use the Tools menu > Import CAD or FE utility in MotionView to generate
an H3D file. You can then use this file to add the graphics.
Refer to the MotionView help for additional details.
Altair Engineering
MotionView 13.0 Tutorials 210
Proprietary Information of Altair Engineering
Automated
MV-1032: Model Building and Simulation using Wizards
MV-1040: Model Building using TCL
MV-1050: Automation Using TCL
MV-1051: Understanding Sequential Simulation
211 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1032: Model Building and Simulation using
Wizards
In this tutorial, you will learn:
About the Assembly and Task Wizards in MotionView
How to build a model using the Assembly and Task Wizards
How to view a standard report
How to modify a model and compare results using the Report Template
Model Wizards are powerful tools in MotionView that can be used to quickly build models with standard
topology that is used repeatedly. There are two standard wizards available: the Assembly Wizard
and the Task Wizard (which work in conjunction with one another). Both of these wizards rely on a
library of pre-saved system, analysis, and report definition files to automate the processes of building
models, analyzing them, and post-processing the results. The wizard mechanics are shown in the
flowchart below:
A collection of systems and analyses are stored as a library.
The Assembly Wizard presents the user with various options to select systems to instantiate
(in the form of a series of panels).
The systems selected by the user in the panels are instantiated using the system definitions
contained in the MotionView client library, thereby assembling the model comprised of different
systems. An Attachment Wizard follows, which is used to select possible attachment options
for each system that is instantiated.
Altair Engineering
MotionView 13.0 Tutorials 212
Proprietary Information of Altair Engineering
On the model is built, the Task Wizard is invoked in order to attach applicable events to the
model. The selected analysis is instantiated using the analysis definition stored in the library.
Exercise: Automated Modeling and Analysis Using Wizards
In this exercise, we will build a suspension model of a vehicle using the standard wizard library
available in MotionView. A static ride event will be attached to this model using the Task Wizard.
The model will then be solved in MotionSolve and an automated report will be generated.
Step 1: Building a front suspension model using the Assembly Wizard.
1.
Start a new session in MotionView.
2.
On the Model menu, click Assembly Wizard.
The Assembly Wizard dialog is displayed.
3.
For Model type, select Front end of vehicle.
4.
Click Next.
5.
For Drive type, select Front Wheel Drive.
6.
Click Next.
213 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
From the Primary Systems for Front end of vehicle dialog, specify the following:
Vehicle body = Body fixed to ground
Front subframe = None
Front suspension = Front SLA susp (1 pc. LCA)
Steering linkage = Rackpin steering
Powertrain = None
8.
Click Next.
9.
From the Select steering subsystems dialog, specify the following:
Steering Column = Steering column 1 (not for abaqus)
Steering Boost = None
10. Click Next.
11. From the Select springs, dampers and stabilizer bars dialog, select the following:
Front shocks = Frnt shock absorber (with inline jts)
Front stabilizer bars = None
12. Click Next.
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 subsystem. 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.
Altair Engineering
MotionView 13.0 Tutorials 214
Proprietary Information of Altair Engineering
17. Click Finish.
Your model should look as follows:
A brief description of the model:
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.
215 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
1.
On the Analysis menu, click Task Wizard.
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.
4.
Read the information in the dialog box.
5.
Click Finish.
The Vehicle parameters dialog is displayed. Vehicle parameters such as wheelbase, jounce, and
rebound distances can be changed in this dialog.
6.
Retain the current parameters and click Finish.
Your model should look as follows:
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).
Altair Engineering
MotionView 13.0 Tutorials 216
Proprietary Information of Altair Engineering
8.
Rename the Model label to My Front SLA Suspension.
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.
10. Select the Static Ride Parameters Form.
The Forms panel is displayed.
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>.
Step 3: Running the simulation and viewing a report.
The static ride simulation is a 10 second quasi-static run. Within the 10 seconds the jack moves in
jounce (vertically upwards), then moves down until the rebound position is reached (distance from the
initial position downwards), and then back to its initial position. The amount of travel is as per the
distance specified in the Static Ride parameters form.
1.
Click the Run icon,
, on the General Actions toolbar.
2.
Save your model as sla_rigid.xml in your <working directory>.
3.
Click on the Run button to submit the simulation job to MotionSolve.
4.
After the job is completed, close the Run window and the Message Log.
5.
From the Analysis menu, click View Reports.
The View Reports dialog is displayed.
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
toolbar 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.
217 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
icons on the Page Controls
Altair Engineering
How does viewing pre-specified results work?
A report that refers to a report template file (a template that contains plot and animation definitions)
can be defined in the MotionView model using the *Report() MDL statement. Whenever a model
containing such a report definition is submitted to a solver, MotionView writes a record of the report
into a log file named .reports. You can specify the location of this file with the preference file
statement *RegisterReportsLog(path). The default location of the .reports file is:
UNIX - <user home>
PC - C:\Documents and Settings\<user>
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.
Below is a sample entry from the .reports log file:
Front Ride - MSolve Report
Front Static Ride
02/10/XX 06:07:58
E:/Altair/hw/mdl/mdllib/Libs/Tasks/adams/Front/Ride/ms_rep_kc_front.tpl
*Report(rep_kc_frnt_mc, Front Ride - MSolve Report, repdef_kc_frnt, "E:/Temp/
sla_rigid.h3d", "E:/Temp/sla_rigid.h3d", "E:/Temp/sla_rigid.plt")
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.
Step 4: Modifying model parameters and comparing the results.
Next, we will modify the suspension parameters. After the simulation is run again, the results can
then be compared.
1.
Return to the MotionView
client page.
2.
Right-click on Frnt SLA susp (1 pc. LCA) in the Project Browser and select Data Summary.
The Data Summary dialog is displayed.
Altair Engineering
MotionView 13.0 Tutorials 218
Proprietary Information of Altair Engineering
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).
4.
Similarly, change the X and Y coordinates of UCA rear bush by +3 and -5 respectively. In
addition, change the Z coordinate of Lwr ball jt by +10.
5.
Click on the Bushings tab and change the KZ values of LCA frnt bush and UCA frnt bush by 200 and +200 respectively.
6.
Click the Close button to close the Data Summary dialog.
7.
Go to the Run panel
8.
Click the Run button.
9.
After the job is completed, close the Run window and the Message Log.
, and specify sla_ride_change.xml as the new file name for the xml file.
10. From the Analysis menu, click View Reports.
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.
219 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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
Attributes panel.
on the Visualization toolbar to enter the Entity
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.
16. Repeat steps 12 to 14 for sla_ride_change.h3d, however be sure to select a different color
from the color palette.
17. From the Animation toolbar, click the Start/Pause Animation button
results.
to animate the
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.
Altair Engineering
MotionView 13.0 Tutorials 220
Proprietary Information of Altair Engineering
MV-1040: Model Building using Tcl
In this tutorial you will:
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.
More About Tcl/Tk
Tcl has a simple and programmable syntax.
Tcl is open source.
HyperWorks has an inbuilt Tcl interpreter which has libraries to help end users.
Tcl can be used as a standalone or embedded in applications like HyperWorks Desktop
(including MotionView).
Unlike C which is a complied language, TCL is interpreted. Tcl programs are simple scripts
consisting of Tcl commands that are processed by a Tcl interpreter.
Tcl is extensible. New Tcl commands can be implemented using C language and integrated
easily. Many people have written extension packages for common tasks and are freely available
on the internet.
Engineering teams use different resources and application. Tcl can be used to glue those
resources together. This greatly helps in automating the work flow.
Tk is a Graphical User Interface toolkit that makes it possible to quickly create powerful GUIs.
Tcl/Tk is highly portable, and runs on different flavors of UNIX, windows, Macintosh and more.
This proves useful to those who work on various platforms.
Tcl with MotionView
When building huge multibody models in MotionView, you will come across cases where the
same steps are repeated multiple times. Such steps, or the set of steps, can be automated
suing Tcl in order to save time and effort wasted in performing repetitive and time consuming
tasks.
Like all of the HyperWorks Desktop applications, MotionView has Tcl command layers which help
in accessing the various functionalities of the product and utilizing them to write scripts to
automate processes.
The Tcl scripts can be called by Tk applications or tied in to a process manager.
Tcl scripts can be registered in a preference file and be made a part of product with Menu
shortcuts.
221 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The HyperWorks Desktop handles and the HyperWorks database consists of a hierarchy of
objects, the root of which is the hwi object which is automatically created. The hwi provides access
to the hwiSession object and a few high level utilities. Currently, HyperWorks supports only one
session per run. The session object can be retrieved by issuing the following command at the Tcl
command prompt:
(System32) 1 % hwi GetSessionHandle sess1
Once the session handle is retrieved, it can be used to access all objects in the HyperWorks
database as shown below:
(System32) 2 % sess1 GetProjectHandle proj1
(System32) 3 % proj1 GetPageHandle page1 1
Windows are retrieved as shown below. Windows are assigned a client type, which can be modified.
(System32) 4 % page1 GetWindowHandle win1 1
(System32) 5 % win1 SetClientType "Animation"
(System32) 6 % win1 GetClientHandle post1
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.
Every HyperWorks command object supports the following utility commands:
ListMethods: Displays the method commands which can be performed on an object.
ListHandles: Lists the names of all command objects of the same type.
ReleaseHandle: Releases the command object.
The top level hwi command object supports the following utility commands:
ListAllHandles: Displays all command objects currently in use.
Exercise: Model Building using Tcl
Step 1: Building a Simple Pendulum through Tcl commands.
In this exercise you will write a simple Tcl script to build a simple pendulum model.
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
Altair Engineering
MotionView 13.0 Tutorials 222
Proprietary Information of Altair Engineering
1.
Open a new MotionView session.
2.
Go to View menu, and click on Command Window.
3.
A TkCon window opens up and displays the version of Tcl and Tk installed with Hyperworks.
4.
In the Command Prompt type:
hwi GetSessionHandle sess
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
8.
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.
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".
9.
Now to get the client handle type in:
win GetClientHandle mc
Note
A HyperWorks session has multiple clients (HyperView, MotionView, HyperGraph 2D, etc). When
MotionView is invoked, the default client is MotionView. The GetClientHandle command gets
you the access to the MotionView model object through the Client Handle.
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
223 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
To build a simple pendulum we will be using 2 points, 1 body, 3 graphic entities, and 1
revolute joint.
The syntax for the InterpretEntity command is given below:
modelHandle InterpretEntity EntityHandle Entitytype
EntityVariableName EntityLabel <Parameters>
Where:
EntityHandle - The handle for the entity.
Entitytype - The type of entity to create (Point, Body, Graphic, etc.).
EntityVariableName – The variable name for the entity to view in MotionView.
EntityLabel – The label for entity to view in MotionView.
Parameters – The parameters which are required to create the respective entity (for
example, CM point for Body).
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
Altair Engineering
MotionView 13.0 Tutorials 224
Proprietary Information of Altair Engineering
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
21. To the fit model in the graphics window:
vch Fit
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 at:
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\automation\
Copy this file to your <working directory>.
225 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Sourcing the Tcl file.
1.
Start a new MotionView session.
2.
Go to the View menu from the menu bar.
3.
Click on Command Window. A TkCon window opens up at the bottom of the screen.
4.
Change the directory to current working directory by using the cd command.
5.
To invoke a Tcl script, use the command source pendulum.tcl, where pendulum.tcl is the file
that you saved in the previous step.
6.
This will build the complete model by sequentially running the commands in the file line by line.
Step 3: Registering the Tcl in the preference file.
1.
Open a text editor with a new file.
2.
Write the following statements:
*Id("HyperWorks vXX.X")
*BeginModelDefaults()
*BeginMenu(scripts, "My Scripts")
*MenuItem(flexprep, "Build Simple Pendulum", Tcl, "<working directory>/
pendulum.tcl")
*EndMenu()
*EndModelDefaults()
Altair Engineering
MotionView 13.0 Tutorials 226
Proprietary Information of Altair Engineering
Note
Please refer to online help if you need to know more about the syntax.
Replace <working_directory> with the actual path on your machine to the working
directory, using forward slashes for the path, if necessary.
3.
Save the file as mypreference.mvw in the <working directory>.
4.
Start a new MotionView session.
5.
From File menu select Load > Preference File.
The Preferences dialog is displayed.
6.
Click Register.
7.
Select the file mypreference.mvw you created.
A new registered preference is added to the list.
8.
Select the new preference and click Load.
9.
Close the session and start a new one.
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.
227 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The complete script is given below for your reference:
## Macro to Build a Simple Model in MotionView ##
## Requesting for the Handles required to Use MotionView ##
hwi OpenStack
hwi GetSessionHandle sess
sess GetProjectHandle proj
proj GetPageHandle page [proj GetActivePage]
page GetWindowHandle win [page GetActiveWindow]
win GetClientHandle mc
win GetViewControlHandle vch
mc CreateBlankModel
mc GetModelHandle m
## Building the Model using the InterpretEntity statements ##
m
m
p
m
m
p
InterpretEntity p Point p_0 "\"Pivot\""
InterpretSet SetPoint p_0 0.0 0.0 0.0
ReleaseHandle
InterpretEntity p Point p_1 "\"Mass\""
InterpretSet SetPoint p_1 p_0.x+100 p_0.y p_0.z
ReleaseHandle
m
m
m
b
InterpretEntity b Body b_0 "\"Pendulum\"" p_1
InterpretSet SetBodyInertia b_0 0.5 100 100 100
InterpretSet SetOrientation b_0.cm TWOAXES ZX
ReleaseHandle
## Adding graphics to the pendulum and the Ground to improve result visualization
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
## 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
Altair Engineering
MotionView 13.0 Tutorials 228
Proprietary Information of Altair Engineering
m Evaluate
vch Fit
after 1000
## Running the Model ##
mc ExportModel simple_pendu.xml
mc RunSolverScript simple_pendu.xml
## Releasing All the Handles
m ReleaseHandle;
mc ReleaseHandle;
win ReleaseHandle;
page ReleaseHandle;
proj ReleaseHandle;
sess ReleaseHandle;
hwi CloseStack;
## End of Script
229 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1050: Automation Using TCL
In this tutorial, you will:
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.
Exercise: Automation using TCL
Step 1: Running the Script manually.
1.
Start a new session.
2.
From the View menu, click on Command Window.
A TkCon window opens up at the bottom of the screen.
The C ommand Window
3.
Right-click in the Command Window and select File > Load File.
The Source File dialog is displayed.
4.
Select the file simple_auto.tcl from the location
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\automation.
5.
Click Open.
Note
The script does the following:
Builds a Simple Pendulum model.
Runs the model through the MotionSolve Solver (the pendulum is modeled to just swing
under gravity).
Creates new windows for Animation and Plotting and loads the animation results and the
plotting results in these windows.
Note
You can also invoke the script by using the following steps:
In the Tk Console type cd <installation_directory>/tutorials/mv_hv_hg/
mbd_modeling/automation.
The Command Window acts like a UNIX shell.
Type in Source simple_auto.tcl and press Enter.
Altair Engineering
MotionView 13.0 Tutorials 230
Proprietary Information of Altair Engineering
Step 2: Creating a Menu Item that invokes the script automatically.
The TCL-script simple_auto.tcl that was discussed in Step 1 can be linked to a Menu Item on the
MotionView Menu bar.
1.
Open a new text file in a text editor.
2.
Type in the following lines in the text file:
*Id("MotionView v12.0")
*BeginModelDefaults()
*BeginMenu(fut_mv_1050, "MotionView Tutorial Script")
*MenuItem(automation_tutorial, "Tutorial Script", TCL,
{ getenv("ALTAIR_HOME") + "/tutorials/mv_hv_hg/mbd_modeling/automation/
simple_auto.tcl" } )
*EndMenu()
*EndModelDefaults()
3.
Save the file as script_invoke_menu.mvw and place at any convenient location on your
machine.
Note
The script_invoke_menu.mvw file is a preference file.
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.
231 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
In MotionView, go to the File menu and select Load > Preference File.
The Preferences dialog is displayed.
5.
Click Register.
6.
Open the script_invoke_menu.mvw that you created.
A new registered preference is added to the list.
7.
Select the new preference and click Load.
8.
A menu called MotionView Tutorial Script is added to the Menu bar, under which you will find
the Menu item Tutorial Script.
New menu item in HyperWorks Desktop - MotionView
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.
11. Check to make sure that the application is set to MotionView.
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.
Altair Engineering
MotionView 13.0 Tutorials 232
Proprietary Information of Altair Engineering
MV-1051: Understanding Sequential Simulation
Sequential Simulation allows you to write simulation instructions to change the model, modify the
solver settings and submit analyses.
This tutorials covers the following topics:
Fixed joint definition between non-coinciding points using marker definitions.
Using a sensor to activate the joint when two markers coincide during simulation.
Using Templex statements to:
o
Deactivate a fixed joint when markers are non-coincident.
o
Activate a fixed joint when markers coincide.
o
Simulate until t = 5.00 seconds.
This tutorial illustrates how to build a model with sensor elements to capture the state of a body, use
the sensor signal to activate some joints and deactivate others, and carry out a sequential
simulation.
Exercise: Running a Sequential Simulation on a Model
Note
Copy all the files from the location <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\interactive\sequential_simulation
to your <Working directory>.
Step 1: Creating joints, markers and sensors.
1.
Start a new MotionView session.
2.
From the Standard toolbar, click the Open Model icon,
.
OR
From the File menu, select Open > Model to open the model Sequential_simulation.mdl.
The model contains two bodies, namely a slider and a picker. You need to create markers, joints,
and a sensor as well as use Templex statements to perform a sequential simulation.
233 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
From the Project Browser, right-click on Model and select Add Constraint > Joint (or rightclick on the Joints icon,
the joint slider trans.
3.
, from the toolbar). Under Type, select Translational Joint. Label
For Body 1, select slider.
For Body 2, select Ground Body.
For Origin, select slider cg.
Define the Alignment axis using the point slider end.
Altair Engineering
MotionView 13.0 Tutorials 234
Proprietary Information of Altair Engineering
4.
Add another joint. For Type, select Fixed Joint and label the joint picker rest fix.
For Body 1, select picker.
For Body 2, select Ground Body.
For Origin, select part fix.
This joint will be deactivated when the slider body coincides with the picker body during
simulation.
When you create a fixed joint between the slider and the picker and they come in contact, you
need to define two markers which are initially not coincident, but coincide during the course of
simulation. Creating a joint based on markers must be done using Templex, as it is not possible to
create it from the user interface.
5.
From the Project Browser, right-click Model and select Add Reference Entity > Marker (or
right-click on Marker icon,
, from the toolbar). Label it Marker Slider Track and set the
properties as shown in the image below:
6. Similarly, create another marker with the label Marker Picker Track and set the properties of
the markers as shown in the image below:
235 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
From the Project Browser, right-click Model and select Add Control Entity > Sensor (or rightclick the Sensor icon,
8.
, from the toolbar) to add a new sensor.
From the Signal field, select the type as Expression and enter the following expression:
`DX({the_model.m_0.idstring},{the_model.m_1.idstring})`
9.
In the Compare to field, enter 0.0010 for the Value and 0.0010 for Error. Set Respond if to
Signal is greater than VALUE - ERROR.
10. In the Response field, select Return to Command File.
This directs the solver to look into the template for further instruction on how to proceed once
the signal is attained.
11. From the Project Browser, right-click on Model and select Add Constraint > Motion (or rightclick on the Motion icon,
, from the toolbar. Set the properties as shown in the figure below.
Step 2: Creating a fixed joint between two non-coincident markers using
Templex.
1.
To create a fixed joint between the slider and picker that is activated once the distance between
the slider and picker is zero, from the Project Browser, right-click on Model and select Add
General MDL Entity > Template (or right-click on the Template icon,
Altair Engineering
, from the toolbar).
MotionView 13.0 Tutorials 236
Proprietary Information of Altair Engineering
2.
Label it Fixed Joint Defn. For Type, select Write text to solver input deck. Enter the
following commands as they are listed below in the same order.
<Constraint_Joint
id
= "5000"
type
= "FIXED"
i_marker_id
= "{the_model.m_0.idstring}"
j_marker_id
= "{the_model.m_1.idstring}"
/>
The panel should look like this:
Step 3: Creating a template to define the sequential simulation.
In this step, you will write a template to do the following:
Set the type of Output files to be written after the simulation.
Deactivate Joint between Slider and Picker for the initial simulation.
Perform a transient analysis for 3.5 seconds.
Activate Joint between Slider and Picker.
Deactivate Joint between Picker and Ground.
Deactivate the Sensor Element.
Run a transient analysis for 5 seconds.
1.
From the Project Browser, right-click on Model and select Add General MDL Entity >
Template (or right-click the Template icon,
2.
, from the toolbar).
Set the Type as Write text to solver command file.
237 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Type the following commands as listed below.
<ResOutput
plt_angle
= "YAW_PITCH_ROLL"
/>
<ResOutput
mrf_file
= "TRUE"
/>
<ResOutput
plt_file
= "TRUE"
/>
<H3DOutput
switch_on
= "TRUE"
increment
= "1"
/>
<ResOutput
abf_file
= "TRUE"
/>
<Deactivate
element_type = "JOINT"
element_id
= "5000"
/>
<Simulate
analysis_type
= "Transient"
end_time
= "3.5"
print_interval
= "0.01"
/>
<Deactivate
element_type = "JOINT"
element_id
= "{the_model.j_1.idstring}"
/>
<Deactivate
element_type = "SENSOR"
element_id
= "{the_model.sen_0.idstring}"
/>
Altair Engineering
MotionView 13.0 Tutorials 238
Proprietary Information of Altair Engineering
<Activate
element_type = "JOINT"
element_id
= "5000"
/>
<Simulate
analysis_type
= "Transient"
end_time
= "5."
print_interval
= "0.01"
/>
<Stop/>
Step 4: Running the simulation and animating the results.
1.
Click the Run Solver button,
, and activate the Export MDL snapshot check box. This will
save your model file and export the solver data.
2.
Click the Save and run current model button,
, and enter a name for the solver run file. This
will save the model in the current state to run_xml_snapshot.mdl, where run_xml is the base
name of the solver run file being provided in the next step.
3.
Set End time as 5 and the Print interval as 0.01.
4.
Click the Simulation Settings button. In the pop-up dialog, from the Transient tab, select
DSTIFF for the Integrator type. Click Close.
5.
From the Main tab, click Run.
239 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
Once the solver procedure is complete, the Animate button on the Main tab is activated. Click
Animate to animate the model. Click
Altair Engineering
to start the animation and
to stop the animation.
MotionView 13.0 Tutorials 240
Proprietary Information of Altair Engineering
Optimization-DOE-Stochastics
MV-3000: DOE using MotionView - HyperStudy
MV-3010: Optimization using MotionView - HyperStudy
241 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-3000: DOE using MotionView - HyperStudy
In this tutorial, you will:
Use Hyperstudy to set-up a DOE study of a MotionView model
Perform DOE study in the MotionView – HyperStudy environment
Create approximation (using the DOE results) which can be subsequently used to perform
optimization of the MotionView model
Theory
HyperStudy allows you to perform Design of Experiments (DOE), optimization, and stochastic studies in
a CAE environment. The objective of a DOE, or Design of Experiments, study is to understand how
changes to the parameters (design variables) of a model influence its performance (response).
After a DOE study is complete, approximation can be created from the results of the DOE study.
The approximation is in the form of a polynomial equation of an output as a function of all input
variables. This is called as the regression equation.
The regression equation can then be used to perform Optimization.
Note
The goal of DOE is to develop an understanding of the behavior of the system, not to find an
optimal, single solution.
HyperStudy can be used to study different aspects of a design under various conditions, including
non-linear behavior.
HyperStudy also does the following:
Provides a variety of DOE study types, including user-defined
Facilitates multi-disciplinary DOE, optimization, and stochastic studies
Provides a variety of sampling techniques and distributions for stochastic studies
Parameterizes any solver input model via a user-friendly interface
Uses an extensive expression builder to perform mathematical operations
Uses a robust optimization engine
Includes built-in support for post-processing study results
Includes multiple results formats such as MVW, TXT for study results
Altair Engineering
MotionView 13.0 Tutorials 242
Proprietary Information of Altair Engineering
Tools
In MotionView, HyperStudy can be accessed from
The Main-Menu under ‘Applications ->HyperStudy’
You can then select MDL property data as design variables in a DOE or an optimization exercise.
Solver scripts registered in the MotionView Preferences file are available through the HyperStudy
interface to conduct sequential solver runs for DOE or optimization.
For any study, the HyperStudy process is shown below:
The HyperStudy process
MotionView MDL files can be directly loaded into HyperStudy. Any solver input file, such as ADAMS,
MotionSolve, OptiStruct, Nastran, or Abaqus, can be parameterized and the template file submitted as
input for HyperStudy. The parameterized file identifies the design variables to be changed during DOE,
optimization, or stochastic studies. The solver runs are carried out accordingly and the results are
then post-processed within HyperStudy.
Copy the files hs.mdl and target_toe.csv from <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\doe to your <working directory>.
In the following steps, you will create a study to carry out subsequent DOE study on a front SLA
suspension model.
243 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
While performing a Static Ride Analysis, you will determine the effects of varying the coordinate
positions of the origin points of the inner and outer tie-rod joints on the toe-curve.
Step 1: Study Set-up.
1.
Start a new MotionView session.
2.
Click the Open Model icon,
, on the Model-Main toolbar.
Or
From the menu bar, select File > Open > Model.
3.
Select the file model hs.mdl, located in your <working directory>, and click Open.
4.
Review the model and the toe-curve output request under Static Ride Analysis.
5.
From the Applications menu, select HyperStudy.
HyperStudy is launched. The message "Establishing connection between MotionView and
Hyperstudy" is displayed.
Altair Engineering
MotionView 13.0 Tutorials 244
Proprietary Information of Altair Engineering
6.
Start new study using one of the following ways:
From the Welcome page, click on the New Study icon,
.
Or
From the toolbar, click the New Study icon,
.
Or
From main menu, select File > New. The HyperStudy - Add Study dialog is displayed.
Accept the default label and variable names.
Under Location, click the file browser and select <working directory>\.
Click OK.
245 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Model definition.
From the study Setup tree, select Define models.
Click
to open the Add Model dialog.
Under Type, select MotionView to add a MotionView model to the study.
Accept the default variable name.
Click OK.
The following table with model data is created.
8.
Model data.
Please note that following details are automatically filled when you define the model (previous
step).
o
Under Active, check the box to activate or deactivate the model from study.
o
The label of model entered in previous step.
o
The variable name of model entered in the previous step.
o
The model type selected in previous step.
o
Point to the source file (here model file is sourced from MotionView through the MotionView
– HyperStudy interfacing)
Enter a name for the solver input file with the proper extension (for Motionsolve ->.xml) and
select the solver execution script MotionSolve - standalone ( ms ).
Altair Engineering
MotionView 13.0 Tutorials 246
Proprietary Information of Altair Engineering
9.
Create design variables.
Click Import Variables to specify the design variables for the study.
The Model Browser window opens in MotionView, allowing you to select the variables
interactively.
Select the following from the Browser using the Model Parameter Tree dialog:
System
Point
Coordinate
Function
Front SLA susp.
Otr tie-rod ball-jt -left
Y
Double-click or Click Add
Front SLA susp.
Otr tie-rod ball-jt –left
Z
Double-click or Click Add
Parallel Steering
Inr tie-rod ball - left
Y
Double-click or Click Add
Parallel Steering
Inr tie-rod ball - left
Z
Double-click or Click Add
Model Parameter Tree dialog
Click Done.
Click Next to go to Define Design Variables.
247 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
10. Define design variables.
From the Define design variables tab, edit the upper and lower bounds of the design variables
according to the following table.
Point
Coordinate
Lower
Upper
Outer tie-rod ball-jt -left
Y
-571.15
-559.15
Outer tie-rod ball-jt - left
Z
246.92
250.92
Inner tie-rod ball - left
Y
-221.9
-209.9
Inner tie-rod ball - left
Z
274.86
278.86
This step also includes definition of other properties to the design variables. The options Details
and Distributions specify variations of design variables in the range specified. The option Link
Variables is used to link different design variables through a mathematical expression.
Click on each tab to observe these options.
Right click on the column header row to view more options that you may want to add.
Altair Engineering
MotionView 13.0 Tutorials 248
Proprietary Information of Altair Engineering
- Click Next to go to Specifications.
11. Specifications.
This section allows you to specify the initial run for DOE.
Select the Nominal Run radio button for this study and click the Apply button.
Click Next to go to Evaluate.
12. Evaluate.
Click Evaluate Tasks to perform the nominal run.
Make sure that all settings for the run (Write, Execute and Extract) are activated.
MotionSolve runs in the background and the analysis is carried out for the base configuration.
Please note the messages in status bar of the HyperStudy interface and the MotionView
interface. If message log is not visible, click the Message log button,
Message log to display the log.
, or go to View >
Once the nominal run is complete, click Next to go to Define responses.
249 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
13. Define Response.
Click Add Response to add a new response.
Label the response Sum of Squared Error.
Accept the variable name and click OK.
Response table data
Click the ellipses, … , in the Expression cell of Response table to launch the Expression
Builder.
Expression builder
Note: You can move the cursor over the function to display the function help.
For this exercise, the response function requires two vectors:
The elements of Vector 1 contain actual data points of the toe curve from the
solver run for the nominal configuration.
The elements of Vector 2 contain data points from the target curve.
Click the File Sources tab to source the data from the files.
Altair Engineering
MotionView 13.0 Tutorials 250
Proprietary Information of Altair Engineering
Vector 1:
Click
to display the HyperStudy - Add dialog box.
Accept the default label and variable name.
For Select Type, select Solver output file.
Click OK.
Response data table
Click the ellipses, … , in the File cell of vector table data to launch the Vector Source –
(Vector 1(v_1)) dialog box.
Click the file browser button,
, and select the file m_1.mrf from <working directory>
\approaches\nom_1\run__00001\m_1\.
This enables the Type, Request and Component fields.
From the Type drop-down menu, select Expressions.
From the Request drop-down menu, select REQ/70000033 toe-curve.
From the Component drop-down menu, select F2.
251 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Vector 1 source dialog box
You have now selected the toe curve data from the solver run as the data elements for Vector
1.
Click on the arrow button,
, on the right side of the dialog box to expanding the vector
dialog box and preview the curve.
Expanded dialog box of Vector 1 source
Click OK.
Altair Engineering
MotionView 13.0 Tutorials 252
Proprietary Information of Altair Engineering
Vector 2:
Create a vector to hold the data elements from the target toe curve.
Click Add File Source to display the HyperStudy - Add File Source dialog box.
Accept the default label and variable name.
For Select Type, select Reference file.
Click OK.
Response data table
Click the … in the File cell of the Vector 2 table data to launch the Vector Source – (Vector
2(v_2)) dialog box.
Click the file browser button,
<working directory>\.
, and select the file target_toe.csv, located in your
Set Type to Unknown and Request to Block 1.
From the Component drop-down menu, select Column 1.
Click OK.
253 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
14. In the Expression field, create the following expression:
sum((v_1-v_2)^2)
This expression evaluates the sum of the square of the difference between the “actual toe
change” values (from solver run) and the “targeted toe curve” (from imported file). In the next
tutorial, MV-3010, we will use HyperStudy to minimize the value of this expression to get the
required suspension configuration.
15. Click Evaluate expression to verify that the expression is evaluated correctly. You should get a
value of 16.289.
16. Click OK.
If you do not encounter any error messages and were able to successfully extract the response
for the nominal run, click Next to go to Post Processing.
Observe the table with the design variable values used for the nominal run and other tabs with
the post-processing options.
Click Next to go to Report.
Observe various reporting formats available. The images and data captured during the postprocessing can be exported in any of the formats provided on Report page.
16. From the File menu, select Save As… .
17. Save this study set-up as Setup.xml to your <working directory>\.
Altair Engineering
MotionView 13.0 Tutorials 254
Proprietary Information of Altair Engineering
Step 2: DOE Study.
1.
Adding new DOE study.
Right-click in the Explorer browser area and from the context menu, click
to display the Add Approach dialog.
Add Approach…
Or
From the Edit menu bar, click the Add Approach option to display the HyperStudy - Add
dialog.
Under Select Type, select Doe.
Accept the default label and variable name and click OK.
255 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The DOE study tree is displayed in the Browser with name Doe 1.
Click Next to go to Select design variables.
2.
Select design variables for the DOE study.
All variables are used in the present DOE study, so make sure that all design variables are
active.
All the design variables in this study are controlled. Therefore, for Category, leave all variables
set to Controlled.
Click Next to go to Select responses.
3.
Select responses for the DOE study:
There is only one response in the present study - make sure to select the response.
Click Next to go to Specifications.
4.
Specifications for the DOE study:
The design space for the DOE study is created in this step. The present study has four design
variables with two levels each. A full factorial will give 24 = 16 experiments, as the number of
experiments are less. We will do a full factorial run. Selecting any mode from the list shows all
possible options in the Parameters panel area on the left side of GUI.
Click the Levels tab to see the design variables and number of levels.
Altair Engineering
MotionView 13.0 Tutorials 256
Proprietary Information of Altair Engineering
Click the Interaction tab to observe that all interactions are selected as it is a full factorial run.
Note: Options which are not applicable will be grayed out or a message will be shown.
4. Click Apply to generate the design space.
5. Click Next to go to Evaluate.
DOE run:
The Tasks tab of Evaluate shows a table of 16 rows and four columns. Column 1 shows the
experiment number while other columns corresponding to each experiment get updated with the
experiment status of failure or success in the three stages of model execution: Write, Execute
and Extract.
Design variable values used under each experiment can be seen under the Evolution Data tab.
257 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The last column corresponds to the response value from each run. The values gets populated
once the run is completed.
Click Evaluate Tasks to start the DOE study.
Once all the runs are finished, the tasks table gets filled up with the status for each run
(Success/Fail).
In the present DOE study, all runs are successfully completed. Click Next to go to Post
Processing.
6. Viewing Main Effect and Interaction plots:
The post-processing section has variety of utilities to helps user to effectively post process
results. Run Summary tab of Post processing page will provide a summary of design along with
responses.
The New Generation HyperStudy allows you to sort data by right-clicking on the column heading
and selecting the options from context menu.
The options to post-process are available in other tabs. The main effects can be plotted by
selecting the Linear Effects tab.
Altair Engineering
MotionView 13.0 Tutorials 258
Proprietary Information of Altair Engineering
Main Effects:
Click the Linear Effects tab to open the main effects plot window. From the Channel page,
select Variables and Responses for which main effects need to be plotted. Press the left
mouse button and move over the variable or responses list for multiple selection.
Select all controlled variables and responses to plot the main effect plot. This plot shows the
effect of each parameter on the response.
DOE – Main effects plot
Note: Click on window icon,
, (highlighted above) to toggle it to multiple windows,
curve is displayed in a different plot window.
. Each
Interactions:
Interactions can be plotted from the Interactions tab following the above procedure. Here, we
will use the post-processing window to plot the interactions. Click Launch Post Processing to
display the Post-processing window.
Display the Regressions in one of the following ways:
From the toolbar, click the Display regressions icon,
.
Or
From main menu, select Display > Regressions.
Click the Interactions radio button.
By default, all interactions are displayed.
259 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Click View to select the design variables Otr_tierod_ball_jt-left-z and
Inr_tierod_ball_jt-left-z.
Under Display on the left side of the page, change the variables type from All Variables to
Controlled Variables from the drop-down menu next to View button. This displays the
interaction plot for these two variables only.
C ontrolled design variable plot for “Otr_tierod_ball_jt-left-z” & “Inr_tierod_ball_jt-left-z” interaction
Click Close.
Close the Post Processing application. Confirm the request to quit the application.
Altair Engineering
MotionView 13.0 Tutorials 260
Proprietary Information of Altair Engineering
Step 3: Approximation.
System response is approximated by using various curve fitting methods. An approximation for the
response with the design variables variation is calculated using the data from above DOE study. The
accuracy of the approximation can be checked and improved.
1. Adding an approximation.
Right-click in the Browser area and from the context menu, click Add Approach to display the
Add Approach dialog.
Under Select Type, select Fit.
Accept the default label and variable names and click OK.
A new tree with the name Fit 1 is created in the Browser.
Click Next.
261 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2. Input matrix.
Click
to display the HyperStudy - Add dialog.
Accept the default label and variable names.
Click OK.
A matrix table is created. Select the following options to specify the DOE results as the input
matrix.
Under Type, use the drop-down menu to select Input.
For Matrix Source, select Doe 1 from the drop-down menu.
In the present study, we are not using any validation matrix. So, no matrix will be added for
validation matrix.
Observe that the status shows “Import pending”.
Click Import Matrix to import the DOE results for the input matrix.
Click Next to go to Select design variables.
Select all design variables and click Next to go to Select responses.
Select the response and click Next to go to Specifications.
Altair Engineering
MotionView 13.0 Tutorials 262
Proprietary Information of Altair Engineering
In this section, the approximation type and it’s properties are defined.
Select Moving Least Squares (SMLS):
Click Apply to apply the approximation method.
Click Next to go to Evaluate.
Observe an empty Tasks table which corresponds to the DOE experiments.
Click Evaluate Tasks to evaluate the approximation for the DOE experiments.
Upon completion, the table is populated with the status value (Success or Fail).
Click the other tabs available to observe the fit.
Click the Evolution Data tab to observe the experiment table with responses from the
MotionSolve run and responses predicted using approximation. The same can be viewed in
graph format by selecting the Evolution plot tab.
Select Sum of Squared of Squared Error and Squared of Squared Error_MLSM to plot
against the experiment numbers.
263 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
This fit shows a good approximation to the response.
Click Next to go to Post Processing.
Post-processing provides you with statistical parameters and graphical tools useful in validating
the correctness of approximation.
The Residuals tab shows the difference between the response value from the solver and the
response value from the regression equation.
The residual values can be used to determine which runs are generating more errors in the
regression model.
The Trade-off 3D tab shows the plots of the main effects vs. response from the approximation.
Trade-off: 3-D plots
From the toolbar, click the Save icon,
, to save the study.
Note: All study files will be saved in the study directory with the folder names that are the same as
the tree varnames. For example, nom_1,doe_1 and fit_1.
Altair Engineering
MotionView 13.0 Tutorials 264
Proprietary Information of Altair Engineering
MV-3010: Optimization using MotionView HyperStudy
In this tutorial you will,
Perform an optimization study in the MotionView-HyperStudy environment
Compare the baseline and optimized models
Theory
In general, an optimization problem consists of:
The design constraints
The objective function
The design variables
Design variables change during optimization. The design variables always have a certain range within
which they can be modified. Typical examples of design variables are thickness of shell elements,
shape vectors, and masses.
The changes in the design variables cause some change in model responses. Such responses can
become either objective function or design constraints. Examples of such responses include
displacements and forces.
The response to be minimized or maximized becomes the objective function, while the rest of the
responses that need to be within a certain tolerance range become constraints. Only one response
can be defined as objective function.
HyperStudy can be used to set-up and perform an optimization study on a MotionView model. You can
also use HyperStudy to perform optimization studies involving both linear and non-linear CAE analysis
as well as perform optimization of mathematical equations using Templex. HyperStudy creates the
input parameter files using Templex and provides iterative changes to them during the optimization
process. HyperStudy uses HyperOpt (a general purpose, wrap around software) as the optimization
engine to perform optimization, in conjunction with both linear and non-linear CAE analysis software.
HyperOpt uses a robust sequential response surface methodology for optimization.
The files needed for this tutorial are hs.mdl, target_toe.csv (used in tutorial MV-3000); Setup.xml
saved in tutorial MV-3000 and the nom_run folder created in tutorial MV-3000.
These files should be in the <working-directory> that was used in tutorial MV-3000.
Note: If you copy the Setup.xml file from the above location, the path in the <Folder> tag in the
file needs to be edited to point to your <Working directory>.
In the following steps you will perform an optimization study on a front SLA suspension model and
determine the optimum coordinate positions of the inner and outer tie-rod points while trying to
achieve a target toe curve. The baseline model will then be compared with the optimized model.
Step 1 Optimization Study.
1.
Start a new MotionView session.
2.
Open the model hs.mdl, located in <working directory>.
3.
Review the model and the toe-curve output request.
265 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
From the SolverMode menu make sure that MotionSolve is selected.
5.
From the Applications menu, launch HyperStudy.
6.
Click on open file icon,
, browse to your study directory and select Setup.xml file created
during the MV-3000 tutorial.
7.
Add a new optimization study:
Right-click in the Explorer Browser area and from the context menu, click Add Approach to
launch the HyperStudy - Add dialog box.
Or
From the Edit menu bar, click the Add Approach icon,
dialog box.
, to launch the HyperStudy - Add
Under Select Type, select Optimization.
Accept the default label and variable name and click OK.
The Optimization tree displays in the explorer with name Optimization_1.
Click Next to go to the Select design variables.
8.
In the Define design variables panel, verify that all the design variables are checked.
This panel displays all the variables and their upper and lower bounds.
Altair Engineering
MotionView 13.0 Tutorials 266
Proprietary Information of Altair Engineering
9.
Click Next to go to the Select responses.
Click
to launch the HyperStudy - Add Objective dialog box.
Accept the default label and variable names and click OK.
In this exercise, minimize the Sum of Squared Error response function to obtain optimum values
for the design parameters: the Y and Z coordinate positions of the inner and outer tie-rod points.
Check to make sure that the type is set as Minimize from the drop-down menu.
Check to make sure that the Evaluate From option is set to Solver.
10. We will not have any constraints and unused responses in our design, so click Apply and then
click Next to go to Specifications.
Accept the default Optimization Engine: Adaptive Response Surface Method and click Apply
and Next. The Maximum iterations and Convergence criteria are specified in the same dialog.
11. Click Apply and Next to go to Evaluate.
12. Click Evaluate Tasks to start the optimization.
MotionSolve is launched sequentially and the HyperOpt engine attempts to find a solution to the
problem.
Once the optimization is complete, an Iteration table is created with status of each run. The
present study took nine iterations to achieve the target. Browse through the other tabs of this
page to get more understanding of the iteration history.
13. Click on the Iteration Plot 2D tab.
267 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
14. From the list on the right side of the GUI, select the Objective function named Objective_1 .
This plots the objective function value against the iterations.
Optimization history plot
In this panel, you can see the plots variations in the values of the objectives, constraints, design
variables, and responses during different design iterations. The Iteration History Table displays
the same data in a tabular format.
Note that in this study, iteration 6 is the optimal configuration.
Save your study to <working directory> as Study_2.xml.
15. Close the HyperStudy.
Step 2: Comparing the Baseline and Optimized Models.
1.
Add a Page to your MotionView session.
2.
From the Select application drop-down menu, select HyperView.
3.
Load the animation file <working directory>\approaches\nom_1\run__00001\m_1\m_1.h3d
using the Load Model panel.
4.
Click the Page Layout icon on the toolbar and select the two-window layout.
5.
In the second window, switch to HyperGraph.
6.
Click the Build Plots icon on the toolbar.
7.
Use the Build Plots file browser and select the file target_toe.csv, located in the <working
directory>.
Altair Engineering
MotionView 13.0 Tutorials 268
Proprietary Information of Altair Engineering
8.
For X-axis data, select:
Type = Unknown
Request = Block 1
Component = Column 1
9.
For Y-axis data, select:
Type = Unknown
Request = Block 1
Component = Column 2
10. Click Apply.
11. Using the file browser on the Build Plots panel, select the file <working directory>
\approaches\nom_1\run__0001\m_1\m_1.abf
12. For X-axis data, select:
Type = Expressions
Request = REQ/70000033 toe-curve
Component = F2
13. For Y-axis data, select:
Type = Expressions
Request = REQ/70000033 toe-curve
Component = F3
14. Click Apply.
269 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
15. Plot another curve from the file
<working directory>\approaches\opt_1\run__00006\m_1\m_1.abf using steps 11-14
You should end up with a session looking like the one shown below. Notice the optimized toecurve.
Optimization results
You may also overlay the animation of the optimal configuration (run 6) over the nominal run.
Notice the toe angle differences.
Save the session as opt_toe.mvw.
Altair Engineering
MotionView 13.0 Tutorials 270
Proprietary Information of Altair Engineering
Durability - Fatigue
MV-3030: Load Export
MV-3040: Durability and Fatigue Tools
271 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-3030: Load Export
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.
Using Load Export
To use this utility, specify the components in the MotionView model for which loads are to be
processed. You can do this by:
Using the MotionView Interface.
OR
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:
Application Scope of the Load Export Utility
Altair Engineering
MotionView 13.0 Tutorials 272
Proprietary Information of Altair Engineering
Step 1: Creating a Metadata File and Launching Load Export.
1.
Copy the file load_export.mdl from <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\externalcodes to <working directory>.
2.
Start a new MotionView session.
3.
Load the front vehicle model file load_export.mdl, located in <working directory>.
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.
The Add Output dialog is displayed.
5.
Accept the default selections and click OK.
6.
Use the drop-down menu to change the Output type from the default Displacement to Force.
7.
Double-click the Body collector.
The Select a Body dialog is displayed.
8.
Expand the model-tree.
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.
11. Click the Run Solver icon
.
12. From the Main tab, change End Time to 2 seconds.
13. Save the solver input file as load_export.xml, to the <working directory>.
14. Click on the Run button, to solve the model in MotionSolve.
MotionView creates a metadata file named load_export.meta in the <working directory>.
273 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Using the Load Export Utility and Generating a NASTRAN Input Deck.
1. From the Flex Tools menu, select the Load Export utility.
Launching the Load Export utility
The Load Export utility
Altair Engineering
MotionView 13.0 Tutorials 274
Proprietary Information of Altair Engineering
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.
Body Selection panel
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.
4. Select all three forces acting on Lwr control arm – left.
Force Selection panel
5.
The Time Selection panel allows you to enter/select the time steps for which the loads are to be
exported.
6.
Click the Range button.
275 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Activating the Export panel
8.
Click Apply.
9.
Enter Min/Max Time Step Values.
10. Click Apply on the Time Selection panel.
This activates the Export panel.
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.
Altair Engineering
MotionView 13.0 Tutorials 276
Proprietary Information of Altair Engineering
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.
You can specify three additional options:
the Nastran deck format (Large/Small)
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)
277 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
13. Accept the default selections in the Nastran Export dialog.
14. Specify the Node ID’s as follows:
o Lwr ball joint – 1
o LCA rear bush – 2
o LCA frnt bush – 3
15. Click Apply.
16. Click Export on the Load Export panel.
17. Specify a filename.
18. Click Save.
This creates a subcase file, in addition to the Nastran input deck, in the same directory as the
.dat file.
Altair Engineering
MotionView 13.0 Tutorials 278
Proprietary Information of Altair Engineering
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:
Nastran Export Panel for multiple body selection
279 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-3040: Durability and Fatigue Tools
In this tutorial, you will learn how to:
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 Fatigue Prep feature can be accessed by:
On the Flex Tools menu, click Fatigue Prep.
This panel translates the following files:
Original Format
Translated Format
Altair .H3D flexbody (modal content)
Ncode .FES/.ASC
Ncode .DAC
Altair .ABF
ADAMS .RES (modal participation factors)
Ncode .DAC
ADAMS .REQ files (loads information)
Ncode .DAC
Altair .PLT
Ncode .DAC
ADAMS .REQ files (loads information)
MTS .RPC
Altair Engineering
MotionView 13.0 Tutorials 280
Proprietary Information of Altair Engineering
The Flex File Gen feature can be accessed by:
On the Flex Tools menu, click Flex File Gen.
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 build plots feature can be accessed by:
Go to the HyperGraph client, and click the build plot icon,
.
The Build Plots panel constructs multiple curves and plots from a single data file. Curves can
be overlaid in a single window or each curve can be assigned to a new window. Individual
curves are edited using the Define Curves panel.
Step 1: Using the Fatigue Prep Wizard.
1.
Start a new MotionView session.
2.
Select the MBD Model window.
281 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
From the FlexTools menu, select Fatigue Prep.
Fatigue Prep Wizard
The form shown above, describes the set of file translations possible using the Fatigue Prep
wizard.
4.
Use the drop-down menu to select the H3D to FES option.
5.
Click Next.
6.
Specify the H3D file as <installation_directory>\tutorials\mv_hv_hg\mbd_modeling
\durability_fatigue\sla_flex.h3d.
7.
Specify the FES file as <working directory>\sla_flex_left.fes.
Fatigue Prep Wizard
Altair Engineering
MotionView 13.0 Tutorials 282
Proprietary Information of Altair Engineering
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.
Step 2: Converting ADAMS results from a REQ file to a DAC file.
The Fatigue Prep translator can be used to convert the request files created from an ADAMS run to
DAC files. These DAC files can be further used for fatigue or durability analysis.
1.
Start a new MotionView session.
2.
Select the MBD Model window.
3.
From the FlexTools menu, select Fatigue Prep.
4.
Select the REQ to DAC option.
5.
Click Next.
6.
Click the file browser button attached to Select req file and select indy.req from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\durability_fatigue.
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>\.
8.
Under Y type, select Displacement.
Once you select Displacement, Y requests and Y components will populate the text boxes.
283 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9. Select first five Y requests and the first three Y components.
REQ to DAC translation
Note
You can select any number of Y requests and Y components for REQ2DAC conversion.
Altair Engineering
MotionView 13.0 Tutorials 284
Proprietary Information of Altair Engineering
10. Click the Finish button.
The message Translation complete is displayed on the screen.
MotionView generates 15 DAC files for each combination selected.
11. Click Cancel and close the window.
12. Change the application to HyperGraph 2D.
13. From the Build Plots panel, load the file indy_D_997000_X.dac from <working directory>\.
Note
In this filename, D represents Displacement, 9970000 represents the request number, and
X represents the component. This is how you get the information about the DAC file you
are plotting.
14. Click Apply to see the plot.
You may plot the corresponding request from the original REQ file for comparison.
Step 3: Using the Flex File Tool.
1.
Start a new MotionView session.
2.
From the Flex Tools menu, select Flex File Gen.
3.
The Flex File Generator dialog is displayed.
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 file <installation_directory>
\tutorials\mv_hv_hg\mbd_modeling\durability_fatigue\sla_flex.gra.
7.
From the Select result source (ASCII *.res) file browser, select the file
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\durability_fatigue
\sla_flex.res.
8.
Using the first file browser under Select flexible body source (*.h3d), select
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\durability_fatigue
\sla_flex.h3d.
9.
Using the second file browser under Select Flexible Body Source (*.h3d), select
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\durability_fatigue
\sla_flex_m.h3d.
285 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
11. Click OK.
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,
Document
, on the Standard toolbar and select Open
.
Altair Engineering
MotionView 13.0 Tutorials 286
Proprietary Information of Altair Engineering
14. Open the sla_flex.flx file.
You should see the following contents of the FLX file:
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.
Step 4: Viewing Fatigue Results in the Animation Window.
1.
Select HyperView
2.
Use the Open drop-down menu on the Standard toolbar (click the arrow next to the Open
Session icon
using the Select application option on the toolbar.
) to select Open Model
.
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.
5.
Click the Start/Pause Animation icon,
to animate the model.
Observe the animating model, which is a combination of rigid multi-bodies and two flexible lower
control arms.
6.
Click the Contour icon,
on the Results toolbar.
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.
287 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Advanced Simulation
MV-1010: Contact Simulation using MotionSolve
MV-1015: Using Spline3D to model the Combustion Forces in an Engine
MV-1023: Using Python Subroutines in MotionView Model Building
MV-1024: Using User Subroutines in MotionSolve Models
MV-1025: Modeling Point-to-Curve (PTCV) higher-pair constrain
MV-1026: odeling Curve-to-Curve using Templates
MV-1027: Modeling Point-to-Deformable-Curve (PTDCV) Higher-Pair Constraint
MV-1028: Modeling Point-to-Deformable-Surface (PTdSV) Higher-Pair Constraint
MV-1029: Modeling Point-to-Deformable-Surface Force (PTdSFforce) Higher-Pair Constraint
MV-7000: Modeling Differential Equations Using MotionView and MotionSolve
MV-7001: Building User Subroutines in Altair MotionSolve
MV-7002: Co-simulation with Simulink
MV-7003: Simulating a Single Input Single Output (SISO) Control System Using MotionView and
MotionSolve
MV-7004: Inverted Pendulum Control Using MotionSolve and MATLAB
MV-7005: Linking Matlab/Simulink Generated Code with MotionSolve
MV-7006: Python UserSub for MotionSolve
MV-7007: Adding Friction to Joints
Altair Engineering
MotionView 13.0 Tutorials 288
Proprietary Information of Altair Engineering
MV-1010: Contact Simulation using MotionSolve
In this tutorial, you will learn how to:
Model contact between two graphics
Perform Transient analysis on a MotionView model with contact forces using MotionSolve
View the Transient analysis results from MotionSolve using MotionView
Theory
The Geneva drive is an indexing mechanism that translates a continuous rotation into an intermittent
rotary motion. It is an intermittent gear where the drive wheel (crank) has a pin that reaches into a
slot of the driven wheel (slotted disk) and thereby advances it by one step. The drive wheel also has
a raised circular blocking disc that locks the driven wheel in position between steps.
Contact forces are very common in the mechanisms/general machinery domain. MotionSolve uses the
Penalty-based Poisson contact normal force model, impact function based model, and user-defined
subroutine for calculating the magnitude and direction of the contact and friction forces. For more
information on this, please refer to the MotionSolve online help.
Step 1: Modeling contact.
1.
Start a new MotionView session.
2.
Click the Open Model icon,
, on the Model-Main toolbar.
OR
Open the model by selecting File > Import > Model.
289 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
From the Open model dialog, select the file geneva.mdl, located in <installation_directory>
\tutorials\mv_hv_hg\mbd_modeling\Interactive. Click Open to load the model.
Check the model for the following entities in the Project Browser:
Four bodies - Ground, Crank, Slotted Disk, and Stand.
A fixed-joint between the Stand and the Ground.
Tessellated H3D Graphics for the Crank, Slotted Disk, and Stand.
Note
Contact modeling begins with the geometry of colliding bodies. The surface geometry may
be defined using CAD or MotionView primitives. The collision detection algorithm in
MotionSolve requires that the CAD geometry must first be tessellated (meshed).
The MotionView interface provides a CAD to H3D translator for automatically meshing the
CAD model. The H3D file contains the tessellated geometry.
The MotionView primitive graphics are tessellated automatically by MotionSolve.
The following entities need to be added to complete the model:
Two Revolute Joints; one between Crank and stand and the other between Slotted Disk and
Stand.
Motion at the revolute joint between the Crank and stand.
Torsion Spring Damper to damp any vibrations in the Slotted Disk.
Contact between the Crank graphic and Slotted Disk graphic.
4.
From the Project Browser, right-click on Model and select Add Constraint > Joint (or rightclick on the Joints icon,
, from the toolbar).
The Add Joint or JointPair dialog is displayed.
5.
Use the table below to add two revolute joints in your model.
Please follow the procedure described in Step 3 of MV-1000 for adding a revolute joint.
Revolute Joint Label
Body 1
Body 2
Point
Vector
Slotted Disk-Stand
Slotted Disk
Stand
body_1-Pivot
Global Z
Crank-Stand
Crank
Stand
body_2-Pivot
Global Z
The input for this model will be in the form of a motion. A velocity motion will be applied at the
Crank-Stand revolute joint.
6.
From the Project Browser, right-click on Model and select Add Constraint > Motions (or rightclick the Motions icon,
, from the toolbar).
The Add Motion or MotionPair dialog is displayed.
7.
Click OK.
8.
From the Connectivity tab, select the revolute joint between the Crank and the Stand using
the Joint button.
Altair Engineering
MotionView 13.0 Tutorials 290
Proprietary Information of Altair Engineering
9.
From the Connectivity tab, use the Property drop-down menu to change the type of input from
Displacement to Velocity.
10. From the Properties tab, enter 5 into the Value text box (located next to Linear).
11. From the Project Browser, right-click on Model and select Add Force Entity > Spring Damper
(or right-click the Spring Damper icon,
, from the toolbar).
The Spring Damper or Spring DamperPair dialog is displayed.
12. Click OK to accept default values.
13. Select Torsion Spring using the drop-down arrow and click OK.
14. Use the following information to specify the connectivity of the spring damper:
Body 1
Body 2
Origin Point
Alignment Vector
Slotted Disk
Stand
body_1-Pivot
Global Z
15. Under the Properties tab, specify the following:
Property
Type
Value
K
Linear
100
C
Linear
50
16. From the Project Browser, right-click on Model and select Add Force Entity > Contact (or
right-click the Contact icon,
, from the toolbar).
The Contact dialog is displayed.
17. Specify a label and variable name for the contact, or simply accept the defaults.
18. Specify the contact type as RigidToRigidContact.
19. Click OK.
20. Under the Connectivity tab, select Poisson Contact for Calculation Method and Coulomb
Friction On for Calculation options: using the drop-down arrow.
21. For Body I, select Crank. For Body J, select Slotted Disk. The graphics assigned to the I and J
part are displayed in the I graphics and J graphics box.
22. For I Graphics, select Crank.
23. Similarly for J graphic, select Slotted Disk.
291 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
24. Click the Properties tab and enter the properties from the following table under the respective
fields.
Property
Value
Description
Penalty
1000
Models the stiffness of the contact patch.
Restitution Coeff
0.75
Models the energy loss or damping of the contact patch.
MU static
0.7
Coefficient of static friction.
MU dynamic
0.5
Coefficient of dynamic friction.
Stiction transition
velocity
0.05
The slip velocity at which the coefficient of friction reaches the
value specified by MU static.
Friction transition
velocity
0.1
The slip velocity at which the coefficient of friction reaches the
value specified by MU dynamic.
Note
The two primary inputs to the Poisson contact force model are:
Penalty
Coefficient of Restitution (COR)
Too high of a value for penalty may cause numerical difficulties, while too small of a value may
lead to excessive penetration.
COR is defined as the ratio of relative speed of separation to the relative speed of approach of
the colliding bodies. A COR of 1 implies a perfectly elastic collision and a COR of 0 represents a
perfectly plastic collision.
Some tuning of these two parameters is usually required to reach stable and accurate results.
Step 2: Performing Transient simulation using MotionSolve.
1.
Click the Run Solver icon,
, on the toolbar.
The Run panel is displayed.
2.
In the Save and run current model field, specify a name for the XML file under <Working
directory>.
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.
3.
Specify an End Time of 4 for your simulation. Use second as the time unit (this is the default).
4.
You can access the Units form from the Forms panel,
5.
Click the Run button to solve the model using MotionSolve.
Altair Engineering
.
MotionView 13.0 Tutorials 292
Proprietary Information of Altair Engineering
Step 3: Viewing the animation in MotionView.
1.
Once the run is successfully complete, the Animate button is activated.
Animate button
2.
Click the Animate button. This loads the animation in the second window.
3.
To start the animation, click the Start/Stop Animation icon,
, on the toolbar.
4.
To stop the animation, click the Start/Stop Animation icon,
, on the toolbar.
293 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1015: Using Spline3D to Model Combustion Forces
in an Engine
In this tutorial you will learn how to:
Use Spline3D to model an input which depends on two independent variables.
This will be accomplished by building a Single Cylinder Engine model similar to the one shown below:
What are Spline3Ds?
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.
Altair Engineering
MotionView 13.0 Tutorials 294
Proprietary Information of Altair Engineering
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.
Step 1: Reviewing the model.
The files needed to start this exercise are located at
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive\spline3d.
1.
Copy the files SingleCylEngine.mdl and FTheta.csv to your <working directory>.
2.
Start a new MotionView session.
3.
Open the SingleCylEngine.mdl model file.
4.
Review the model.
The model is a piston cylinder mechanism with a flywheel.
The model has two systems: System Cyl1 and System Flywheel.
In the System Flywheel, the Flywheel (fixed to Crank) is driven by a velocity based Motion
between markers which refers to a curve (Crank_RPM) for inputs.
Motion Panel - C onnectivity Tab
Motion Panel - Properties Tab (with Expression referring to the C urve using AKISPL function)
295 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
C urve C rank_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.
Outputs are defined to measure the crank angle and RPM.
In System Cyl1:
o The solver variables in System Flywheel are passed as attachments to this system and
carry the variable names arg_Crank_angle_SolVar and arg_Crank_RPM_SolVar. These
will be used in defining the independent variables while defining the combustion force using
Spline3D
o A Combustion_ref marker exists as a reference for a combustion force whose Z axis is
aligned along the direction of travel of the piston.
Next, a combustion force will be added on the piston using a Spline3D.
Altair Engineering
MotionView 13.0 Tutorials 296
Proprietary Information of Altair Engineering
Step 2: Adding a Spline3D entity.
1.
Add a Spline3D using one of the following methods:
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
the Reference Entity toolbar.
The Add Spline3D dialog is displayed.
297 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
on
2.
Enter F_ThetaSpline for the Label and spl3d_F_ThetaSpline for the Variable.
3.
Click OK to close the dialog.
The Spline3D panel is displayed in the panel area with the Properties tab active.
4.
Click on the Type drop-down menu and select Value.
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.
Altair Engineering
MotionView 13.0 Tutorials 298
Proprietary Information of Altair Engineering
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.
299 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
In the Warning dialog that appears, click Yes to continue.
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.
Altair Engineering
MotionView 13.0 Tutorials 300
Proprietary Information of Altair Engineering
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.
301 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
C ontext Menu (Row)
C ontext Menu (C olumn)
10. Click Close to close the Spline Values Table Data table.
Altair Engineering
MotionView 13.0 Tutorials 302
Proprietary Information of Altair Engineering
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.
All three axes can be viewed in an isometric view in this window.
303 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
13. Click Close to close the viewer.
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.
Input Data for Spline3D
Step 3: Adding a force using the Spline3D.
A force will now be added to represent the combustion in the cylinder. This force will be mapped to
the Spline3D added in the previous section.
1.
Add a Force using one of the following methods:
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
Force Entity toolbar.
The Add Force or ForcePair dialog is displayed.
2.
Enter an appropriate Label and Variable name and click OK.
The Force panel is displayed in the panel area with the Connectivity tab active.
Altair Engineering
MotionView 13.0 Tutorials 304
Proprietary Information of Altair Engineering
on the
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).
Note
The Body 2 reference to Ground Body is through an attachment to the System Cyl1
system.
5.
Go to Trans Properties tab and change the Fz type to Spline3D.
6.
Double click on the Spline3D collector,
, to display the Select a Spline3D dialog.
305 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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).
8.
Click OK to close the window.
9.
In the Independent variable X field, enter in the following expression:
`MOD({arg_Crank_angle_SolVar.VARVAL}, 720)`.
10. In the Independent variable Z field, enter in the following expression:
`{arg_Crank_RPM_SolVar.VARVAL}`.
Altair Engineering
MotionView 13.0 Tutorials 306
Proprietary Information of Altair Engineering
11. Click the Check Model button
on the Model Check toolbar to check the model for errors.
The completed panel is shown below:
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).
Step 4: Solving the model and post-processing.
The model is now complete and can be solved in MotionSolve.
1.
To solve the model, invoke the Run panel using the Run Solver button
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.
6.
Close the solver window after the job is completed.
7.
Click the Animate button in the panel (now active) to load the animation results in a
HyperView window.
307 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
on the General
.
Altair Engineering
8.
From the Animation toolbar, use the Start/Pause Animation button
9.
Visualize forces on the Piston using the
Assemblies collector).
to animate the model.
Vector panel (select the Piston graphics for the
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
MotionSolve run.
to load the .plt file from the
14. In the first window (top left), plot the Crank_angle (deg) by selecting the following:
Y Type = User Defined
Y Request = REQ/70000003 Crank_angle (deg)
Y Component = f3
Selections for plotting C rank_angle (deg)
Altair Engineering
MotionView 13.0 Tutorials 308
Proprietary Information of Altair Engineering
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 Request = REQ/70000002 CombustionForce (ForceOnPiston)
Y Component = Z
Selections for plotting C ombustionForce
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.
17. Click on the Define Curves
icon on the Curves toolbar.
18. Click the Add button to add a curve.
19. Click in the Curve field and rename the curve as 500 RPM.
20. Change the Source to Math.
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)]
Panel entries for plotting Force vs Theta
22. Click Apply to plot.
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.
309 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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
curves in the Plot Browser and changing the color in the Properties table.
, or by selecting the
25. After completing the plots, compare them with the input data for the Spline3D plot in Step 2. A
comparison is shown below:
Validating the Spline3D used by the Solver
Altair Engineering
MotionView 13.0 Tutorials 310
Proprietary Information of Altair Engineering
MV-1023: Using Python Subroutines in MotionView
Model Building
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.
In this tutorial, you will learn how:
User subroutines are incorporated into MotionView
User subroutines are useful in customizing models
To create Python scripts that can be used to define these subroutines (and how they are
called by MotionView).
You must be familiar with the MotionView user interface and entities panel, as well as have some
experience defining and modifying entities. Some experience with the Python programming language is
necessary to fully understand the topics covered.
Exercise One - Introduction to User Subroutines
User subroutines are a useful tool to customize simulations and analyses. These subroutines, or
usersubs can be created using variety of programming languages like C, Ruby, TCL, and Python.
Subroutines created in programming languages like C, C++ and FORTRAN etc. are compiled to create
*.dll files using the MS UserSub Build Tool (located in the MotionView Tools menu). These dlls are
then used by the solver. In older versions of MotionView only compiled usersubs (*.dll) were
supported. Starting with MotionView version 11.0, usersubs are enabled to use Python and Matlab
scripts. In this tutorial, we will be using Python to create usersubs. User subroutines can make use
of external Python scripts in order to define complex simulations, which cannot be created through the
MotionView GUI. With a basic knowledge of the Python programming language, a user can easily
generate intricate experiments to simulate any complex mechanism.
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
from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\python_usersub to
your <working directory>.
311 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The single cylinder engine model
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.
Altair Engineering
MotionView 13.0 Tutorials 312
Proprietary Information of Altair Engineering
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:
Entity
Usrsub
Description
Curve
SPLINE_READ
Reads the curve data file.
Request
REQSUB
Outputs the requested values
Force
GFOSUB
Applies a force on the system.
Motion
MOTSUB
Applies a motion to the system.
Damping
DMPSUB
Defines the damping of a flexbody.
Step 1: Running the model.
1.
Click the Run panel icon,
, to access the Run panel.
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 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.
Exercise Two - Adding User Subroutines
Notes on using XML syntax in Python
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
313 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Using SPLINE_READ to Replace the Curve Entity.
The first user-subroutine we will implement uses the SPLINE_READ function to return the curve from
the included pressure_curve.csv file. SPLINE_READ is the usersub that corresponds to the curve
entity in MotionView. It uses data points in an external file to create a curve, which can then be
used by other entities.
Writing the Python script:
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”.
12. Save this file to your working directory as nonlin_spline.py.
Altair Engineering
MotionView 13.0 Tutorials 314
Proprietary Information of Altair Engineering
Your nonlin_spline.py Python script should resemble the following:
def SPLINE_READ(id, file_name, block_name):
import csv
ifile= open('pressure_curve.csv','r')
## opens data file as readable variable
curv = csv.reader(ifile)
var.
## reads csv data, stores as useable
L = []
## creates empty list
for item in curv:
L.append(item)
L = L[1:]
## separates file values into list
## removes block names from list
i=0
## creates counter
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
z = 0.0
## defines z value
ifile.close()
## closes data file
errflg = py_put_spline(id,x,y,z)
## var to create MotionSolve spline
return errflg
## returns var
Implementing the Python script:
1.
In MotionView, go to the Curve panel
, and locate the Force_Pressure curve in the project
directory tree to the left of the MotionView workspace.
2.
From the Properties tab, check the box marked User-defined.
3.
From the Attributes tab, make sure Linear extrapolation is checked.
4.
Click on the User-Defined tab, and use the File name file browser to select the
pressure_curve.csv file.
5.
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.
315 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
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.
The curve panel using the SPLINE_READ usersub
Step 2: Using REQSUB to Request an Output.
The second user-subroutine will use Python to specify which values to return. In this tutorial, the
returned values will be the magnitude of displacement for the piston.
Writing the Python script:
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]”.
4.
Save this file to your working directory as req_nonlin.py.
Your req_nonlin.py Python script should resemble the following:
def REQSUB(id, time, par, npar, iflag):
[D, errflg] = py_sysfnc("DM",[par[0],par[1]])
displacement mag
result = [0,D,0,0,0,0,0,0]
return result
## sets "D" as piston
## lists results for output return
## sends list with results to motionsolve as output
Implementing the Python script:
1.
In MotionView, go to the Outputs panel
, and locate the Output_Conrod_Length output in
the project directory tree to the left of the MotionView workspace.
The Outputs panel is displayed.
2.
From the Properties tab, select User Defined from the first drop-down menu.
Altair Engineering
MotionView 13.0 Tutorials 316
Proprietary Information of Altair Engineering
3.
Click in the text field labeled Output, and then click on the
Builder.
button to open the Expression
4.
In the text field of the Expression Builder, click inside the parentheses and add “{},{}”.
5.
From the Expression Builder, locate and select the Marker I idstring (located in the Outputs
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 Marker J idstring into the
expression by repeating this same process.
Expression Builder dialog
6.
Click OK to close the dialog.
7.
Check the Use local file and function name box, and select Python from the Function Type
drop-down menu.
317 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
Outputs panel using REQSUB
Step 3: Using GFOSUB to Replace the Force Entity.
The GFOSUB user subroutine replaces a force with a user defined Python script. The GFOSUB used here
will take the curve data defined with SPLINE_READ, and change depending on the Conrod angle
according to the curve.
Writing the Python script:
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]”.
7.
Save this file to your working directory as gfo_nonlin.py.
Your gfo_nonlin.py Python script should resemble the following:
def GFOSUB(id, time, par, npar, dflag, iflag):
from math import pi
[A, errflg] = py_sysfnc("AZ",[par[1],par[2]])
## retreives conrod angle
B = ((-1)*A*180)/pi
## converts radians to degrees
[C, errflg] = py_akispl(B,0,par[0],0)
return [0,C[0],0]
Altair Engineering
## interpolates data to fit curve
## returns C data as force values
MotionView 13.0 Tutorials 318
Proprietary Information of Altair Engineering
Implementing the Python script:
1.
In MotionView, go to the Forces panel
, and locate the Force_Gas_Pressure force in the
project directory tree to the left of the MotionView workspace.
2.
From the Connectivity tab, check the User-defined properties box.
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.
4.
Click OK to close the dialog.
5.
Check the Use local file and function name box, and select Python from the Function Type
drop-down menu.
6.
For Local File, select gfo_nonlin.py from your working directory.
319 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Make sure the Function name is set to GFOSUB.
Step 4: Using MOTSUB to Define a Motion.
Writing the Python script:
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 = 575.6*time”. This makes the first derivative equal to “A = 575.6”,
and the second derivative equal to “A = 0.0”.
4.
Return the function variable with “return A”.
5.
Save this file to your working directory as mot_nonlin.py.
Your mot_nonlin.py Python script should resemble the following:
def MOTSUB(id, time, par, npar, iord, iflag):
if iord==0:
## function
A = 575.6*time
elif iord==1:
## first derivative
A = 575.6
else:
## second derivative
A = 0.0
return A
## returns function based on iord input
Implementing the Python script:
1.
In the directory tree on the left side of the HyperWorks desktop, locate the Motion_Crank
motion and click on it.
The Motions panel is displayed.
Altair Engineering
MotionView 13.0 Tutorials 320
Proprietary Information of Altair Engineering
2.
In the Motions panel, check the User-defined properties box.
3.
Click on the User-Defined tab.
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.
Step 5: Using DMPSUB to Add Custom Flexbody Damping.
Writing the Python script:
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”.
2.
Define a list the length of “nmode” using “cratios = nmode*[0.0]”.
nmode is the number of modes in the flexbody.
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”.
6.
Save your script as dmp_nonlin.py.
321 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Your dmp_nonlin.py Python script should resemble the following:
def DMPSUB(id, time, par, npar, freq, nmode, h):
cratios = nmode*[0.0]
## makes preallocated list for markers
for i in xrange(nmode):
cratios[i] = 1.0
return cratios
## sets marker damping to 1
## returns damping values
Implementing the Python script:
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.
Because we defined the damping in our dmp_nonlin.py script, we do not need to change the
USER() expression.
4.
Go to the Run panel
Altair Engineering
.
MotionView 13.0 Tutorials 322
Proprietary Information of Altair Engineering
5.
Change the End time to 0.01, and the Print interval to 0.001.
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"
Your flexbody definition should look like below:
<Body_Flexible
id
= "30104"
lprf_id
= "30104002"
mass
= "7.424574879203591E-02"
inertia_xx
= "1.471824534365642E+02"
inertia_yy
= "4.505004745855096E+00"
inertia_zz
= "1.501914135052064E+02"
inertia_xy
= "-5.546373592613223E-03"
inertia_yz
= "-1.984540442733755E-03"
inertia_xz
= "1.557626595859531E-03"
cm_x
= "1.191728011928773E-03"
cm_y
= "-2.225471002399553E+01"
cm_z
= "5.469513396916666E-05"
h3d_file
= "conrod.h3d"
is_user_damp
= "TRUE"
323 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
usrsub_param_string = "USER()"
interpreter
= "Python"
script_name
= "dmp_nonlin.py"
usrsub_fnc_name
= "DMPSUB"
flexdata_id
= "30104"
animation_scale
= "1."
/>
Exercise Three - Running Your Simulation with Usersubs
Now that all the user subroutines have been implemented, run your model, and compare your results
to those from your initial test.
Step 1: Using the Run Solver Panel to Run Your Model.
1.
Go to the Run panel
, click on/activate the Run MotionSolve file radio button.
2.
Now browse to the *.xml file saved in previous step.
3.
Click the Run button.
Exercise Four - Comparing Your Results
Now that we have results for both the initial model and the model using user subroutines, we will
compare the data to ensure accuracy. We will do this using HyperGraph and Hyperview to compare
the outputs and deformations of the system.
Step 1: Using HyperGraph to Plot the Displacement Magnitudes.
Using the outputs from both simulations, we will compare the displacement magnitude of the piston. A
correct result from the usersub run will match the results from the initial run.
1.
Begin by opening a new window by clicking the Add Page button
Altair Engineering
.
MotionView 13.0 Tutorials 324
Proprietary Information of Altair Engineering
2.
Switch the application from MotionView to HyperGraph 2D by selecting it from 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.
C omparison of output results from both model simulations
325 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Using HyperView to Compare Flexbody Stresses.
Using HyperView, you can view the stresses and deformations on the flexbody. The results between
the two simulations should be the same.
1.
Add a new window by clicking the Add Page button
.
2.
Switch the application from HyperGraph 2D to HyperView using the Client Selector drop-down
menu.
3.
Click the Load Results button
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.
on the Standard toolbar.
Only the flexbody component should be displayed.
8.
Click the Contour panel button
located on the Results toolbar.
The Contour panel is displayed.
9.
Set Result type to Deformation->Displacement (v), and click on the flexbody in the model
window.
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-down menu
(located on the Page Controls toolbar).
Altair Engineering
MotionView 13.0 Tutorials 326
Proprietary Information of Altair Engineering
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.
C omparison of flexbody deformation in HyperView
327 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1024: Using User Subroutines in MotionSolve
Models
User subroutines are created for various reasons. Some include:
To describe a physical phenomenon that is determined by non-trivial logical conditions.
When it is impractical to formulate a complicated expressions in an explicit form.
To take full advantage of a programming language like C/C++ or Fortran and simpler
programming with interpreters like Tcl, Python, and Ruby.
To use your own subroutines in MotionSolve, follow these steps:
1.
Create a C/C++, FORTRAN, Tcl, or Python source file that contains the user-defined modeling
entity.
Refer to the MotionSolve User's Guide for a list of supported solver subroutines and a general
guideline on setting up and using subroutines in your model.
2.
Obtain a DLL by compiling and linking your user subroutine(s) for C/C++ or Fortran, or use the source
file directly for Tcl or Python.
MotionSolve supports two separate levels of user DLLs and the algorithm attempts to resolve the
symbols, starting from the most specific library.
A) Element Level DLL (most specific)
Specify the name of the DLL in the modeling element definition.
B) Machine Level DLL
You can create an environment variable called MS_USERSUBDLL and set it to the DLL file. This
environment variable is not defined automatically when MotionSolve is installed. However,
Fortran, and C/C++ DLLs are provided in the installation folder <installation_directory>
\hwsolvers\usersub\subdll\win32\. This allows you to run some of the test models that
use user subroutine DLLs.
Note
3.
The DLL that is loaded is based on the "most specific" rule: number one overrides
number two.
Modify the corresponding entity in your multi-body model to be "user defined" and point it to your
DLL. This can be done in two ways:
A) By modifying the entity in the MotionView interface.
B) By editing the MotionSolve XML file.
Regardless of the method you select, you will end up with an XML file where one or more entities
are now user defined.
Altair Engineering
MotionView 13.0 Tutorials 328
Proprietary Information of Altair Engineering
For example, consider the
<Constraint_Coupler
id
type
i_marker_id_joint1
j_marker_id_joint1
body1_id_joint1
body2_id_joint1
joint_type_joint1
i_marker_id_joint2
j_marker_id_joint2
body1_id_joint2
body2_id_joint2
joint_type_joint2
usrsub_param_string
usrsub_dll_name
</Constraint_Coupler>
coupler modeling element in the XML file:
=
=
=
=
=
=
=
=
=
=
=
=
=
=
"1"
"TwoJoint"
"30603030"
"30602031"
"30603"
"30602"
" "
"30603040"
"30604040"
"30603"
"30604"
" "
"USER(-8.5)"
"C:/work/testsub.dll">
The usrsub_dll_name argument defines C:/work/testsub.dll as the element level DLL for this
coupler element. Any element can be defined by pointing to a different DLL.
The coupler modeling element in the XML file can also be defined as:
<Constraint_Coupler
id
= "1"
type
= "TwoJoint"
i_marker_id_joint1 = "30603030"
j_marker_id_joint1 = "30602031"
body1_id_joint1
= "30603"
body2_id_joint1
= "30602"
joint_type_joint1
= " "
i_marker_id_joint2 = "30603040"
j_marker_id_joint2 = "30604040"
body1_id_joint2
= "30603"
body2_id_joint2
= "30604"
joint_type_joint2
= " "
usrsub_param_string = "USER(-8.5)"
usrsub_dll_name
= "NULL">
</Constraint_Coupler>
In this case, MotionSolve looks for a machine level DLL as defined by the value of the
MS_USERSUBDLL environment variable.
4.
Run MotionSolve, verifying that it picks up the appropriate DLL during simulation.
329 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Exercise
The model file required for this exercise, Pendu_model.mdl, is available in the HyperWorks Desktop
installation at this location:
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\. Copy the file to
your <working directory>.
Step 1: Using an expression to define motion.
1.
Launch a new MotionView session.
2.
Load the MDL model file Pendu_model.mdl from your <working directory>.
3.
From the Project Browser, right-click on Model and select Add Constraint > Motions (or rightclick the Motions icon,
, from the toolbar). Add a Displacement motion to the revolute joint
between the Pendulum Body and the Ground Body.
4.
Click the Properties tab.
Set an expression of 3.142* TIME for the displacement motion.
5.
Click the Outputs panel icon,
, to access the Outputs panel.
Review the output request.
6.
Click the Run panel icon,
7.
Click the Save and run current model: folder icon,
, and browse to your <working
directory>. Specify the name as Pendu_model.xml for the MotionSolve input XML file.
8.
Confirm that the Simulation type: is set to Transient.
9.
Specify 1 as the End Time.
10. Click the Check button,
, to access the Run panel.
, to check for any modeling errors.
11. After verifying that there are no errors, click the Run button.
12. Once the run is complete, the Animate button is activated. Click Animate to view the animation
of the simulation.
13. From the Run panel, click the Plot button to view the time-histories of the output request.
Altair Engineering
MotionView 13.0 Tutorials 330
Proprietary Information of Altair Engineering
Step 2: Using the MOTSUB user subroutine to define motion.
In this step, we will use the user subroutine MOTSUB. This user subroutine has been compiled and
linked in the DLL ms_csubdll.dll. This machine level DLL is provided in the HyperWorks installation.
For the Windows 32-bit platform, the DLL is located at: <installation_directory>\hwsolvers
\usersub\subdll\WIN32\.
We will use the ms_csubdll.dll as a machine level DLL.
1.
Create an environment variable MS_USERSUBDLL and set the value to the DLL file.
For Windows 32-bit platform users, this will be: <installation_directory>\hwsolvers
\usersub\subdll\WIN32\ms_csubdll.dll
Right-click on the My Computer icon. From the Advanced tab, select Environment
variables > New (under User variables).
Set Variable name: to MS_USERSUBDLL.
Set Variable value: to <installation_directory>\hwsolvers\usersub\subdll\win32
\ms_csubdll.dll.
331 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
With the Pendu_model.mdl from the previous step open in the MotionView model window, go to
the Motions panel,
.
3.
From the Connectivity tab, check the User-defined properties check box.
4.
Click the User-Defined tab and enter `USER(100001,5,2)` in the
Note
text-box.
To use an element level (specific) DLL/Interpreter function, you can check the Use local
dll and function name check-box and point to the DLL using the folder icon,
.
The string `USER(100001,5,2)` is used to pass arguments to the MOTSUB user subroutine. The
MOTSUB user subroutine calculates motion using the parameters par1 and par2 in
USER(branch_id, par1, par2) as follows:
motion_val= par1*TIME^par2
5.
From the File menu, select Export > Model.
Note
Click the Save File icon,
, on the Main toolbar to save the file in working directory
with the existing name. If it’s a new model, you will be prompted for the name of the
model.
The Export Model panel is displayed.
Specify the file name as Pendu_model_usersub.mdl.
6.
Click the Run panel icon,
7.
Save and run current model ,
, and browse to your <working directory>. Specify
Pendu_model_usersub.xml for the MotionSolve input XML file.
Altair Engineering
, to access the Run panel.
MotionView 13.0 Tutorials 332
Proprietary Information of Altair Engineering
8.
Confirm that the Simulation type: is set to Transient.
9.
Specify 1 as the End Time.
10. From the Main tab, click the Check button to check for any modeling errors.
11. After verifying that there are no errors, click the Run button.
12. In the plot window, plot the results from the ABF file Pendu_model_usersub.abf to overlay the
results on top of the results from the Pendu_model.abf file
13. In the animation window, check the Overlay option on the Load Model panel.
14. Select the file Pendu_model_usersub.h3d using the Load model folder icon
.
15. Click Apply.
This will overlay the new animation over the existing animation.
Note
If the value of the usrsub_param_string is set as “USER(3.142, 1)” the results from
step 2 will be the same as results from step 1.
17. Open the MotionSolve XML file Pendu_model.xml (saved in step 1) from the <working
directory>.
333 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
18. Browse through the XML file to locate the Motion_Joint block.
<Motion_Joint
id
= "301001"
label
= "Motion 0"
type
= "EXPRESSION"
val_type
= "D"
expr
= "3.142*TIME"
joint_id
= "301001"
joint_type
= "R"
/>
19. Open the MotionSolve XML file Pendu_model_usersub.xml from the <working directory>.
20. Browse through the XML file to locate the Motion_Joint block.
<Motion_Joint
id
= "301001"
label
= "Motion 0"
type
= "USERSUB"
val_type
= "D"
usrsub_param_string = "USER(100001,5,2)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "MOTSUB"
joint_id
= "301001"
joint_type
= "R"
/>
Note
When the value for the usrsub_dll_name parameter in the above block is set to NULL,
MotionSolve looks for the subroutine in a machine level DLL. This DLL is passed to MotionSolve by
the MS_USERSUBDLL environment variable.
To use an element level DLL, set the value of the usrsub_dll_name parameter to point to the
DLL.
The usrsub_param_string parameter is used to pass arguments to the user subroutine.
For example, the MOTSUB user subroutine calculates motion using the parameters par1 and par2 in
USER(branch_id, par1, par2) as follows:
motion_val= par1*TIME^par2
MotionSolve uses the value returned from the user subroutine to calculate the motion.
Altair Engineering
MotionView 13.0 Tutorials 334
Proprietary Information of Altair Engineering
MV-1025: Modeling Point-to-Curve (PTCV) Higher-Pair
Constraint
In this tutorial, you will learn how to:
Model a PTCV (point-to-curve) joint
A PTCV (point-to-curve) joint is a higher pair constraint. This constraint restricts a specified point on
a body to move along a specified curve on another body. The curve may be open or closed, planar or
in 3-d space. The point may belong to a rigid, flexible or point body. This constraint can help avoid
modeling contact in some systems. It may prove advantageous since proper contact modeling (refer
tutorial MV-1010) in many cases involves fine-tuning of contact parameters. One good example for
such a system is a knife-edge cam follower mechanism. One can avoid modeling the contact between
the cam and follower by defining a PTCV joint: the curve being the cam profile and the point being the
tip of the follower.
A Knife-edge C am Follower Mechanism
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 location
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive\ to your <Working
directory>.
Step 1: Creating points.
Let’s start with creating points that will help us locate the bodies and joints as required. We will define
points for center of mass of the bodies and joint locations.
1.
Start a new MotionView Session. We will work with the default units (kg, mm, s, N).
335 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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).
The Add Point or PointPair dialog is displayed.
3.
For Label, enter PivotPoint.
4.
Accept the default Variable name and click OK.
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
FollowerCM
0.0
65.557
0.0
FollowerPoint
0.0
25.0
0.0
FollowerJoint
0.0
85.0
0.0
CamCM
0.0
-14.1604
0.0
Step 2: Creating Bodies.
We will have two bodies apart from the ground body in our model visualization; the cam and the
follower. Pre-specified inertia properties will be used to define the bodies.
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).
The Add Body or BodyPair dialog is displayed.
2.
For Label, enter Cam and click OK.
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).
The Add Body or BodyPair dialog is displayed.
4.
For Label, enter Follower and click OK.
5.
From the Properties tab, specify the following for the two bodies:
Body
Mass
Ixx
Iyy
Izz
Ixy
Iyz
Izx
Cam
0.174526
60.3623
63.699
123.276
0.0
0.0
0.0
7.10381
0.219116
7.22026
0.0
0.0
0.0
Follower 0.0228149
Altair Engineering
MotionView 13.0 Tutorials 336
Proprietary Information of Altair Engineering
6.
For the Cam body, under the CM Coordinates tab, check the Use center of mass coordinate
system box.
7.
Double click on Point.
The Select a Point dialog is displayed. Choose CamCM and click OK.
8.
Accept defaults for axes orientation properties.
9.
For the Follower body, under the CM Coordinates tab, check the Use CM Coordsys box.
10. Double click on Point.
The Select a Point dialog is displayed. Choose FollowerCM and click OK.
11. Accept defaults for axes orientation properties.
Step 3: Creating Joints.
Here, we will define all the necessary joints except the PTCV joint which will be defined as an
advanced joint later. We require two joints for the model. The first of them is the revolute joint
between the cam and ground body. The second joint we need is a translational joint between the
follower and ground body.
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 Add Joint or JointPair dialog is displayed.
2.
For Label, enter CamPivot.
3.
Select Revolute Joint as the Type and click OK.
4.
From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed. Choose Cam and click OK.
5.
From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed. Choose Ground Body and click OK.
6.
From the Connectivity tab, double-click on Point.
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 > Joint (or right-click
the Joints icon
on the Model-Constraint toolbar).
The Add Joint or JointPair dialog is displayed.
9.
For Label, enter FollowerJoint.
10. Select Translational Joint as the Type and click OK.
337 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
11. From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed. Choose Follower and click OK.
12. From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed. Choose Ground Body and click OK.
13. From the Connectivity tab, double-click on Point.
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.
Step 4: Creating Markers.
Now, we will define some markers required for the definition of the PTCV joint. We need two markers,
one associated with the cam (for the curve) and the other associated with the follower (for the
point).
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).
The Add Marker or MarkerPair dialog is displayed.
2.
For Label, enter CamMarker and click OK.
3.
From the Properties tab, double-click on Body.
4.
The Select a Body dialog is displayed. Choose Cam and click OK.
5.
From the Properties tab, double-click on Point.
6.
The Select a Point dialog is displayed. Choose PivotPoint and click OK.
7.
Accept the defaults for axes orientation.
8.
Add another marker by right-clicking on Model in the Project Browser and selecting Add
Reference Entity > Marker (or right-click the Markers icon
toolbar).
on the Model-Reference
The Add Marker or MarkerPair dialog is displayed.
9.
For Label, enter FollowerMarker and click OK.
10. From the Properties tab, double-click on Body.
11. The Select a Body dialog is displayed. Choose Follower and click OK.
12. From the Properties tab, double-click on Point.
13. The Select a Point dialog is displayed. Choose FollowerPoint and click OK.
14. Accept the defaults for axes orientation.
Altair Engineering
MotionView 13.0 Tutorials 338
Proprietary Information of Altair Engineering
Step 5: Creating Graphics.
Graphics for the cam and follower have been provided as h3d files. We need to associate the h3ds
with bodies defined in our model. To make visualization better, we will also create some graphics for
the joints.
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).
The Add Graphics or GraphicPair dialog is displayed.
2. For Label, enter Cam.
3. Choose File from the drop-down menu.
4. Click on the file browser icon
and select CamProfile.h3d from the model folder.
5. Click Open and then OK.
6. From the Connectivity tab, double-click on Body.
The Select a Body dialog gets displayed. Choose Cam and click OK.
7. Add another graphic by right-clicking on Model in the Project Browser and selecting Add
Reference Entity > Graphics (or right-click the Graphics icon
toolbar).
on the Model-Reference
The Add Graphics or GraphicPair dialog is displayed.
8. For Label, enter Follower.
9. Choose File from the drop-down menu and click OK.
10. Click on the browser icon
and select FollowerProfile.h3d from the model folder.
11. Click Open.
12. Under the Connectivity tab, double-click on Body.
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).
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter PivotGraphicOne (the first graphic to show the cam pivot).
3.
Choose Cylinder from the drop-down menu and click OK.
339 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
From the Connectivity tab, double-click on Body.
The Select a Body dialog gets displayed. Choose Ground Body and click OK.
5.
Double click on Point.
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.
8.
9.
From the Properties tab, specify the following values:
Property
Value
Length
7.5
Offset
-3.75
Radius 1
4.000
Radius 2
4.000
For the Cap properties, choose Cap Both Ends.
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
toolbar).
on the Model-Reference
The Add Graphics or GraphicPair dialog is displayed.
11. For Label, enter PivotGraphicTwo (the second graphic to show the cam pivot).
12. Choose Cylinder from the drop-down menu and click OK.
13. Under the Connectivity tab, double-click on Body.
The Select a Body dialog gets displayed. Choose Cam and click OK.
14. Double click on Point.
The Select a Point dialog is displayed. Choose PivotPoint and click OK.
15. Click on the arrow below Direction and select the Vector option.
16. Click on Vector.
The Select a Vector dialog is displayed. Choose Global Z and click OK.
Altair Engineering
MotionView 13.0 Tutorials 340
Proprietary Information of Altair Engineering
17. From the Properties tab, specify the following values:
Property
Value
Length
7.6
Offset
-3.8
Radius 1
2.000
Radius 2
2.000
18. For the Cap properties, choose Cap Both Ends.
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
toolbar). Add.
on the Model-Reference
The Add Graphics or GraphicPair dialog is displayed.
20. For Label, enter FollowerJointGraphic (the graphic for the follower translational joint).
21. Choose Box from the drop-down menu and click OK.
22. From the Connectivity tab, double-click on Body.
The Select a Body dialog gets displayed. Choose Ground Body and click OK.
23. For Type, choose Center from the drop-down menu.
24. Double-click on Point.
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.
26. From the Properties tab, specify the following properties:
Property
Value
Length X
15
Length Y
10
Length Z
10
341 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
At the end of this step, your model should look like the one shown in the figure below:
A Knife-edge C am Follower Mechanism in MotionView
Step 6: Creating the Curve.
The curve that we will use here is the curve that defines the profile of the cam. The data for this
curve has been provided in .csv format. We need to define the curve using the data in the given file.
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).
The Add Curve dialog is displayed.
2. For Label, enter CamProfile and click OK.
3. From the Properties tab, use the first drop-down menu to change the curve from 2D Cartesian
to 3D Cartesian.
4. From the Properties tab, click on the x radio button.
5. Click on the file browser icon
Altair Engineering
and select CamProfile.csv. Click Open.
MotionView 13.0 Tutorials 342
Proprietary Information of Altair Engineering
6. Choose the properties of the curve as shown in the figure below:
7.
From the Properties tab, click on the y radio button.
8.
Click on the file browser icon
9.
Choose the properties of the curve as shown in the figure below:
and select CamProfile.csv. Click Open.
10. From the Properties tab, click on the z radio button.
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 x, y, and z properties.
13. From the Properties tab, use the fourth drop-down menu to set the curve type to Closed
Curve.
Step 7: Creating the PTCV Joint.
Now, we will create the PTCV joint.
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 Add AdvJoint dialog is displayed.
2. For Label, enter PTCV.
3. Choose PointToCurveJoint from the drop-down menu and click OK.
343 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4. From the Connectivity tab, double-click on Body 1.
The Select a Body dialog gets displayed. Choose Follower and click OK.
5.
From the Connectivity tab, double-click on Point.
The Select a Point dialog gets displayed. Choose FollowerPoint and click OK.
6.
From the Connectivity tab, double-click on Curve.
The Select a Curve dialog gets displayed. Choose CamProfile and click OK.
7.
From the Connectivity tab, double-click on Ref Marker.
The Select a Marker dialog gets displayed. Choose CamMarker and click OK.
Step 8: Specifying the Cam Motion.
After we have the topology and constraints specified, we need to provide the cam motion. The most
natural choice here is a uniform motion imposed on the revolute joint.
1.
From the Project Browser right-click on Model and select Add Constraint > Motions (or rightclick the Motions icon
on the Model-Constraint toolbar).
The Add Motion or MotionPair dialog is displayed.
2.
For Label, enter CamMotion and click OK.
3.
From the Connectivity tab, double-click on Joint. Choose CamPivot and click OK.
4.
From the Properties tab, specify the properties as `10*TIME`.
Step 9: Specifying Gravity.
Since our shaft is along the Y-axis, we want the gravity to be in the negative Y direction. To specify
this:
1.
Click the Forms icon
on the Model-General toolbar.
The Forms panel is displayed.
Altair Engineering
MotionView 13.0 Tutorials 344
Proprietary Information of Altair Engineering
2.
Select Gravity and specify the following values:
Direction
Value
X
0
Y
-9810
Z
0
Step 10: Specifying Output Requests.
We would like to monitor the reaction on PTCV joint since it can help us verify the correctness of our
results. This will be discussed in detail towards the end of the tutorial when the topic of 'lift-offs' will
be discussed.
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).
The Add Output dialog is displayed.
2.
For Label, enter PTCV Reaction and click OK.
3.
From the Properties tab, choose Expressions from the drop-down menu.
4.
Click in the F2 expression box.
5.
Click on the
button.
The Expression Builder dialog is displayed.
345 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
6.
Populate the expression as 'PTCV({aj_0.idstring},0,2,0)'.
7.
Click OK.
Altair Engineering
MotionView 13.0 Tutorials 346
Proprietary Information of Altair Engineering
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:
id
ID of the PTCV joint
jflag
0 gives reaction on the I-marker and 1 on J-marker
comp
component of the reaction
ref_marker
reference marker (0 implies Global Frame)
Step 11: Running the Model.
We now have the model defined completely and it is ready to run.
1.
Click the Run icon
on the toolbar.
The Run panel is displayed.
2.
From the Main tab, specify values as shown below:
3.
Choose the Save and run current model radio button.
4.
Click on the browser icon
5.
Click Save.
6.
Click Check Model button
7.
To run the model, click the Run button on the panel.
and specify a file name of your choice.
on the Model Check toolbar to check the model for errors.
The solver will get invoked here.
347 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 12: Viewing the Results.
1.
Once the solver has finished its job, the Animate button will be active. Click on Animate.
The
icon can be used to start the animation, and the
animation.
icon can be used to stop/pause the
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
window layout
3.
on the Page Controls toolbar to select the three-
.
Highlight the lower right window and use the Select application drop-down menu to change the
application from MotionView
to HyperGraph 2D
4.
Click the Build Plots
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
.
icon on the Curves toolbar.
and load the result.abf file.
We are plotting the Y profile of the center of mass of the follower.
7.
Click Apply.
8.
The profile for the Y-displacement of the follower should look like the one shown below:
Altair Engineering
MotionView 13.0 Tutorials 348
Proprietary Information of Altair Engineering
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:
1.
Model the system using a PTCV joint.
2.
Monitor the PTCV joint reaction. If the reaction on the follower is a ‘pulling’ reaction, it means liftoff 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 Yaxis 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
4.
Choose HyperGraph 2D
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
and click on Build Plots
.
.
and load the result.abf file.
We are plotting the Y profile of the PTCV reaction on the follower.
349 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7. Click Apply.
The profile should look like the one shown below:
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.
Altair Engineering
MotionView 13.0 Tutorials 350
Proprietary Information of Altair Engineering
MV-1026: Modeling Curve-to-Curve (CVCV)
Higher-Pair Constraint
In this tutorial, you will learn how to:
Model a CVCV (curve-to-curve) joint
A CVCV (curve-to-curve) joint is a higher pair constraint. The constraint consists of a planar curve on
one body rolling and sliding on a planar curve on a second body. The curves are required to be coplanar. This constraint can act as a substitute to contact modeling in many cases where the contact
occurs in a plane. One such case is the cam-follower system, in which the follower is in the form of a
roller. Instead of modeling the contact between the cam and the follower, we can specify a CVCV
constraint between their profiles.
A cam roller mechanism
In this tutorial, we will model a roller type cam-follower mechanism with the help of a CVCV
constraint.
Exercise
Copy all the files CamProfile.h3d and CamProfile.csv from the location
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive\ to your <Working
directory>.
351 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 1: Creating points.
Let’s start with creating points that will help us locate the bodies and joints that we would like to.
We will define points for center of mass of the bodies and joint locations.
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).
The Add Point or PointPair dialog is displayed.
3.
For Label, enter PivotPoint.
4.
Accept the default variable name and click OK.
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
FollowerShaftCM
0.0
67.5
0.0
FollowerTransJoint
0.0
85.0
0.0
FollowerRevJoint
0.0
30.0
0.0
CamCM
0.0
-14.1604
0.0
Step 2: Creating Bodies.
We will have three bodies apart from the ground body in our model visualization: the cam, the follower
shaft and the follower roller. Pre-specified inertia properties will be used to define the bodies.
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).
The Add Body or BodyPair dialog is displayed.
2.
For Label, enter Cam and click OK.
3.
Right-click on Bodies in the Project Browser and select Add Body to define a second body.
The Add Body or BodyPair dialog is displayed.
4.
For Label, enter FollowerShaft and click OK.
5.
Right-click on Bodies in the Project Browser and select Add Body to define a third body.
The Add Body or BodyPair dialog is displayed.
6.
For Label, enter FollowerRoller and click OK.
Altair Engineering
MotionView 13.0 Tutorials 352
Proprietary Information of Altair Engineering
7.
From the Properties tab, specify the following for the three bodies:
Body
Mass
Ixx
Iyy
Izz
Ixy
Iyz
Izx
Cam
0.1724
59.339
62.6192
121.240
0.0
0.0
0.0
FollowerShaft
0.0072
3.4270
0.0144
3.4270
0.0
0.0
0.0
FollowerRoller
0.0030
0.0251
0.0251
0.0375
0.0
0.0
0.0
8.
For the Cam body, under the CM Coordinates tab, check the Use CM Coordsys box.
9.
Double click on Point.
The Select a Point dialog is displayed.
Choose CamCM and click OK.
10. Accept defaults for axes orientation properties.
11. For the FollowerShaft body, under the CM Coordinates tab, check the Use CM Coordsys box.
12. Double click on Point.
The Select a Point dialog is displayed.
Choose FollowerShaftCM and click OK.
13. Accept defaults for axes orientation properties.
14. For the FollowerRoller body, under the CM Coordinates tab, check the Use CM Coordsys box.
15. Double click on Point.
The Select a Point dialog is displayed.
Choose FollowerRevJoint and click OK.
16. Accept defaults for axes orientation properties.
Step 3: Creating Joints.
Here, we will define all the necessary joints except the CVCV joint which will be defined as a advanced
joint later. We require three joints for the model. The first of them is the revolute joint between the
cam and ground body. The second joint we need is a translational joint between the follower shaft
and ground body and the third joint is the revolute joint that connects the roller to the shaft.
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 Add Joint or JointPair dialog is displayed.
2.
For Label, enter CamPivot.
3.
Select Revolute Joint as the type and click OK.
353 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
Choose Cam and click OK.
5.
From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
Choose Ground Body and click OK.
6.
Again from the Connectivity tab, double-click on Point.
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.
Right-click on Joints in the Project Browser and select Add Joint to define a second joint.
The Add Joint or JointPair dialog is displayed.
9.
For Label, enter FollowerTransJoint.
10. Select Translational Joint as the type and click OK.
11. From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
Choose FollowerShaft and click OK.
12. From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
Choose Ground Body and click OK.
13. Again from the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
Choose FollowerTransJoint 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.
15. Right-click on Joints in the Project Browser and select Add Joint to define a third joint.
The Add Joint or JointPair dialog is displayed.
16. For Label, enter FollowerRollerJoint.
17. Select Revolute Joint as the type and click OK.
Altair Engineering
MotionView 13.0 Tutorials 354
Proprietary Information of Altair Engineering
18. From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
Choose FollowerRoller and click OK.
19. From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
Choose FollowerShaft and click OK.
20. Again from the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
Choose FollowerRevJoint and click OK.
21. 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.
Step 4: Creating Markers.
Now, we will define markers required for the definition of the CVCV joint. We need two markers, one
associated with the cam and the other associated with the follower roller.
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).
2.
For Label, enter CamMarker and click OK.
3.
From the Properties tab, double-click on Body.
The Select a Body dialog is displayed.
Choose Cam and click OK.
4.
From the Properties tab, double-click on Point.
The Select a Point dialog is displayed.
Choose PivotPoint and click OK.
5.
Accept the defaults for axes orientation.
6.
Right-click on Markers in the Project Browser and select Add Marker to define a second
marker.
The Add Marker or MarkerPair dialog is displayed.
7.
For Label, enter FollowerMarker and click OK.
8.
From the Properties tab, double-click on Body.
The Select a Body dialog is displayed.
Choose FollowerRoller and click OK.
355 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
9.
From the Properties tab, double-click on Point.
The Select a Point dialog is displayed.
Choose FollowerRevJoint and click OK.
10. Accept the defaults for axes orientation.
Step 5: Creating Graphics.
Graphics for the cam have been provided as an h3d file. We need to associate the h3d with the cam
body defined in our model. The follower shaft and roller can be represented using primitive graphics.
To make the visualization better, we will also create some graphics for the joints.
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).
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter Cam.
3.
Choose File from the drop-down menu.
4.
Click on the browser icon
5.
Click Open and then OK.
6.
From the Connectivity tab, double-click on Body.
and select CamProfile.h3d from the model folder.
The Select a Body dialog is displayed.
Choose Cam and click OK.
7.
Right-click on Graphics in the Project Browser and select Add Graphic to define a second
graphic.
The Add Graphics or GraphicPair dialog is displayed.
8.
For Label, enter FollowerShaft.
9.
Choose Cylinder from the drop-down menu and click OK.
10. From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
Choose FollowerShaft and click OK.
11. Double click on Point.
The Select a Point dialog is displayed.
Choose FollowerShaftCM and click OK.
12. Click on the arrow below Direction and select the Vector option.
Altair Engineering
MotionView 13.0 Tutorials 356
Proprietary Information of Altair Engineering
13. Click on Vector.
The Select a Vector dialog is displayed.
Choose Global Y and click OK.
14. From the Properties tab, specify the following values:
Property
Value
Length
75
Offset
-37.5
Radius 1
2.000
Radius 2
2.000
15. For the Cap properties, choose Cap Both Ends.
16. Right-click on Graphics in the Project Browser and select Add Graphic to define a third
graphic.
The Add Graphics or GraphicPair dialog is displayed.
17. For Label, enter FollowerRoller.
18. Choose Cylinder from the drop-down menu and click OK.
19. From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
Choose FollowerRoller and click OK.
20. Double click on Point.
The Select a Point dialog is displayed.
Choose FollowerRevJoint and click OK.
21. Click on the arrow below Direction and select the Vector option.
22. Click on Vector.
The Select a Vector dialog is displayed.
Choose Global Z and click OK.
357 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
23. From the Properties tab, specify the following values:
Property
Value
Length
5.0
Offset
-2.5
Radius 1
5.000
Radius 2
5.000
24. For the Cap properties, choose Cap Both Ends.
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.
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter CamPivotGraphicOne (first graphic to show the cam pivot).
3.
Choose Cylinder from the drop-down menu and click OK.
4.
From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
Choose Ground Body and click OK.
5.
Double click on Point.
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.
8.
From the Properties tab, specify the following values:
Property
Value
Length
7.5
Offset
-3.75
Radius 1
4.000
Radius 2
4.000
Altair Engineering
MotionView 13.0 Tutorials 358
Proprietary Information of Altair Engineering
9.
For the Cap properties, choose Cap Both Ends.
10. Right-click on Graphics in the Project Browser and select Add Graphic to define another
graphic.
The Add Graphics or GraphicPair dialog is displayed.
11. For Label, enter CamPivotGraphicTwo (second graphic to show the cam pivot).
12. Choose Cylinder from the drop-down menu and click OK.
13. From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
Choose Cam and click OK.
14. Double click on Point.
The Select a Point dialog is displayed.
Choose PivotPoint and click OK.
15. Click on the arrow below Direction and select the Vector option.
16. Click on Vector.
The Select a Vector dialog is displayed.
Choose Global Z and click OK.
17. From the Properties tab, specify the following values:
Property
Value
Length
7.6
Offset
-3.8
Radius 1
2.000
Radius 2
2.000
18. For the Cap properties, choose Cap Both Ends.
Repeat this process for the FollowerRevJoint and label the graphics as:
RollerPivotGraphicOne on FollowShaft with a length of 7.5 and radius of 2.
and
RollerPivotGraphicTwo on FollowRoller with a length of 7.6 and radius of 1.
19. Right-click on Graphics in the Project Browser and select Add Graphic to define another
graphic.
The Add Graphics or GraphicPair dialog is displayed.
20. For Label, enter FollowerTransJointGraphic (the graphic for the translational joint).
359 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
21. Choose Box from the drop-down menu and click OK.
22. From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
Choose Ground Body and click OK.
23. For Type, choose Center from the drop-down menu.
24. Double-click on Point.
The Select a Point dialog is displayed.
Choose FollowerTransJoint 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.
26. From the Properties tab, specify the following properties:
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:
Altair Engineering
MotionView 13.0 Tutorials 360
Proprietary Information of Altair Engineering
Step 6: Creating the Curves.
The curves that we will use here are the curves that define the profile of the cam and the roller. The
data for the cam profile curve has been provided in csv format. Since the roller profile is circular - it
can be defined using mathematical expressions.
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).
The Add Curve dialog is displayed.
2.
For Label, enter CamProfile and click OK.
3.
From the Properties tab, use the first drop-down menu to change the curve from 2D Cartesian
to 3D Cartesian.
4.
From the Properties tab, click on the x radio button.
5.
Click on the file browser icon
6.
Choose the properties of the curve as shown in the figure below:
7.
From the Properties tab, click on the y radio button.
8.
Click on the file browser icon
9.
Choose the properties of the curve as shown in the figure below:
and select CamProfile.csv. Click Open.
and select CamProfile.csv. Click Open.
10. From the Properties tab, click on the z radio button.
11. Click on the file browser icon
and select CamProfile.csv. Click Open.
361 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
The Add Curve dialog is displayed.
15. For Label, enter FollowerRollerProfile and click OK.
16. From the Properties tab, use the first drop-down menu to change the curve from 2D Cartesian
to 3D Cartesian.
17. From the Properties tab, click on the x radio button.
18. Select Math from the second drop-down menu on the left.
19. Enter 5*sin(2*PI*(0:1:0.01)) in the Expression Builder.
20. From the Properties tab, click on the y radio button.
21. Select Math from the second drop-down menu on the left.
22. Enter 5*cos(2*PI*(0:1:0.01)) in the Expression Builder.
23. From the Properties tab, click on the z radio button.
24. Select Math from the second drop-down menu at the left.
25. Enter 0.0*(0:1:0.01) in the Expression Builder.
26. From the Properties tab, use the fourth drop-down menu to change the curve from Open Curve
to Closed Curve.
We now have both of the curves defined.
Step 7: Creating the CVCV Joint.
Now, we will create the CVCV joint.
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 Add AdvJoint dialog is displayed.
2.
For Label, enter CVCV.
3.
Choose CurveToCurveJoint from the drop-down menu and click OK.
Altair Engineering
MotionView 13.0 Tutorials 362
Proprietary Information of Altair Engineering
4.
From the Connectivity tab, double-click on Curve 1.
The Select a Curve dialog is displayed.
Choose CamProfile and click OK.
5.
From the Connectivity tab, double-click on Curve 2.
The Select a Curve dialog is displayed.
Choose FollowerRollerProfile and click OK.
6.
From the Connectivity tab, double-click on Ref Marker 1.
The Select a Marker dialog is displayed.
Choose CamMarker and click OK.
7.
Again from the Connectivity tab, double-click on Ref Marker 2.
The Select a Marker dialog is displayed.
Choose FollowerMarker and click OK.
Step 8: Specifying the Cam Motion.
After we have the topology and constraints specified, we need to provide the cam motion. The most
natural choice here is a uniform motion imposed on the revolute joint.
1.
Click the Project Browser right-click on Model and select Add Constraint > Motions (or rightclick the Motions icon
on the Model-Constraint toolbar).
The Add Motion or MotionPair dialog is displayed.
2.
For Label, enter CamMotion and click OK.
3.
From the Connectivity tab, double-click on Joint. Choose CamPivot and click OK.
4.
From the Properties tab, specify the properties as `10*TIME`.
363 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 9: Specifying Gravity.
Since our shaft is along the Y-axis, we want the gravity to be in the negative Y direction. To specify
this:
1.
Click the Forms icon
on the Model-General toolbar.
The Forms panel is displayed.
2.
Select Gravity and specify the following values:
Direction
Value
X
0
Y
-9810
Z
0
Step 10: Specifying Output Requests.
We would like to monitor the reaction on CVCV joint since it can help us verify the correctness of our
results. This will be discussed in detail towards the end of the tutorial where we will also discuss liftoffs.
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).
The Add Output dialog is displayed.
2. For Label, enter CVCV Reaction and click OK.
3. From the Properties tab, choose Expressions from the drop-down menu.
4. Click in the F2 expression box.
5. Click on the
button.
The Expression Builder dialog is displayed.
Altair Engineering
MotionView 13.0 Tutorials 364
Proprietary Information of Altair Engineering
6. Populate the expression as 'CVCV({aj_0.idstring},1,2,0)'.
7.
Click OK.
365 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
id
ID of the CVCV joint
jflag
0 gives reaction on the I-marker and 1 on J-marker
comp
component of the reaction
ref_marker
reference marker (0 implies Global Frame)
Step 11: Running the Model.
We have the model defined completely and it is now ready to run.
1.
Click the Run icon
on the Model-Main toolbar.
The Run panel is displayed.
2.
From the Main tab, specify values as shown below:
3.
Choose the Save and run current model radio button.
4.
Click on the browser icon
5.
Click Save.
6.
Click the Check Model button
7.
To run the model, click the Run button on the panel.
and specify a file name of your choice.
on the Model Check toolbar to check the model for errors.
The solver will get invoked here.
Step 12: Viewing the Results.
1.
Once the solver has finished its job, the Animate button will be active. Click on Animate.
The
icon can be used to start the animation, and the
animation.
icon can be used to stop/pause the
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.
Altair Engineering
MotionView 13.0 Tutorials 366
Proprietary Information of Altair Engineering
2.
Use the Page Layout drop-down menu
window layout
3.
on the Page Controls toolbar to select the three-
.
Highlight the lower right window and use the Select application drop-down menu to change the
application from MotionView
to HyperGraph 2D
4.
Click the Build Plots
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
.
icon on the Curves toolbar.
and load the result.abf file.
We are plotting the Y profile of the center of mass of the follower.
7.
Click Apply.
The profile for the Y-displacement of the follower should look like the one shown below:
367 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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:
1.
Model the system using a CVCV joint.
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
4.
Choose HyperGraph 2D
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
and click on Build Plots
.
.
and load the result.abf file.
We are plotting the Y profile of the CVCV reaction on the follower roller.
Altair Engineering
MotionView 13.0 Tutorials 368
Proprietary Information of Altair Engineering
7. Click Apply.
The profile should look like the one shown below:
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.
369 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-1027: Modeling Point-to-Deformable-Curve
(PTdCV) Higher-Pair Constraint
In this tutorial, you will learn how to:
Model a PTdCV (point-to-deformable-curve) joint
A PTdCV (point-to-deformable-curve) joint is a higher pair constraint. This constraint restricts a
specified point on a body to move along a specified deformable curve on another body. The curve may
be open or closed, planar or in 3-d space. The point may belong to a rigid, flexible or a point mass. For
this, we define a deformable curve on a beam supported at its ends by revolute joints. A mass is
constrained to move along the curve with a PTdCV constraint.
Exercise
Copy the file KG_N_MM_S_50elems2.h3d from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive to <working
directory>.
Step 1: Creating points.
Let’s start with creating points that will help us locate the bodies and joints as required. We will
define points for center of mass of the bodies and joint locations.
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).
The Add Point or PointPair dialog is displayed.
3.
For Label, enter PointbeamInterface1.
4.
Accept the default variable name and click OK.
5.
Click on the Properties tab and specify the coordinates as X = 152.4, Y, = 0.0, and Z = 0.0.
Altair Engineering
MotionView 13.0 Tutorials 370
Proprietary Information of Altair Engineering
6.
Follow the same procedure for the other points specified in the table below:
Point
X
Y
Z
PointbeamInterface2
460.80
0.0
0.0
Point0
183.24
0.0
0.0
Point1
214.08
0.0
0.0
Point2
244.92
0.0
0.0
Point3
275.76
0.0
0.0
Point4
306.60
0.0
0.0
Point5
337.44
0.0
0.0
Point6
368.28
0.0
0.0
Point7
399.12
0.0
0.0
Point8
429.96
0.0
0.0
Step 2: Creating Bodies.
We will have two bodies apart from the ground body in our model visualization: the beam 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).
The Add Body or BodyPair dialog is displayed.
2.
For Label, enter Beam and click OK.
3.
Accept the default variable name and click OK.
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 Deformable box.
5.
Click on the Graphic file browser icon
directory> and click Open.
, select KG_N_MM_S_50elems2.h3d from the <working
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.
The Add Body or BodyPair dialog is displayed.
371 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
For Label, enter Ball and click OK.
8.
From the Properties tab, specify the following for the Ball:
9.
Body
Mass
Ixx
Iyy
Izz
Ixy
Iyz
Izx
Ball
100
1e6
1e6
1e6
0.0
0.0
0.0
For the Ball body, under the CM Coordinates tab, check the Use center of mass coordinate
system box.
10. Double click on Point.
The Select a Point dialog is displayed.
11. Choose Point4 and click OK.
12. Accept defaults for axes orientation properties.
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.
14. Accept all the other default values.
Step 3: Creating Markers.
Now, we will define some markers required for the beam. We will totally define eleven markers here at
equal distances along the span of the beam.
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).
The Add Marker or MarkerPair dialog is displayed.
2.
For Label, enter Marker0 and click OK.
3.
Under the Properties tab, double-click on Body.
The Select a Body dialog is displayed.
4.
Choose Beam and click OK.
5.
Under the Properties tab, double-click on Point.
The Select a Point dialog is displayed.
6.
Choose PointbeamInterface1 and click OK.
Accept the defaults for axes orientation.
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.
Altair Engineering
MotionView 13.0 Tutorials 372
Proprietary Information of Altair Engineering
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).
Always accept the defaults for axes orientation.
A table is provided below for reference:
Marker No.
Body
Point
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
Step 4: Creating Joints.
Here, we will define all the necessary joints except for the PTdCV joint, which will be defined as an
advanced joint later. We require two joints for the model, both of them being fixed joints between the
beam and ground body.
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 Add Joint or JointPair dialog is displayed.
2.
For Label, enter Joint0.
3.
Select Fixed Joint as the type and click OK.
4.
From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
373 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
Choose Beam and click OK.
6.
Under the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
7.
Choose Ground Body and click OK.
8.
From the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
9.
Choose PointbeamInterface1 and click OK.
10. Right-click on Joints in the Project Browser and select Add Joint to define a second joint.
The Add Joint or JointPair dialog is displayed.
11. For Label, enter Joint1.
12. Select Fixed Joint as the type and click OK.
13. From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
14. Choose Beam and click OK.
15. From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
16. Choose Ground Body and click OK.
17. From the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
18. Choose PointbeamInterface2 and click OK.
Step 5: Creating Deformable Curves.
Here we will now define the deformable curve on the surface of the beam. The ball is constrained to
move along this curve.
1.
Click the Project Browser tab, right-click on Model and select Add Reference Entity >
Deformable Curve (or right-click the Deformable Curves icon
toolbar).
on the Model-Reference
The Add DeformableCurve dialog is displayed.
2.
For Label, enter DeformableCurve0, and click OK.
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).
The intermediate Add button is changed to an Insert button.
Altair Engineering
MotionView 13.0 Tutorials 374
Proprietary Information of Altair Engineering
5.
Enter 10 into the text box located just to the right of the Insert button, and then click on the
Insert button.
Eleven Marker collectors are displayed.
6.
Click on the individual collectors.
The Select a Marker dialog is displayed.
7.
Select all the markers one by one, starting from Marker 0 to Marker 10.
Step 6: Creating Advanced Joints.
Now we will define the advanced PTdCV joint.
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 Add AdvJoint dialog is displayed.
2.
For Label, enter AdvancedJoint 0.
3.
From the Connectivity tab select: PointToDeformableCurveJoint, Ball for Body, Point4 for
Point, and DeformableCurve 0 for DeformableCurve.
Step 7:Creating Graphics.
Graphics for the ball will now be built here.
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).
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter Graphic0.
3.
For Type, choose Sphere from the drop-down menu and click OK.
4.
From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
5.
Choose Ball and click OK.
6.
Again from the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
7.
Choose Point4 and click OK.
8.
From the Properties tab, enter 2.0 as the radius of the Ball.
9.
From the Visualization tab, select a color for the Ball.
375 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 8: Return to the Bodies Panel.
1.
Click the Body icon
on the Model-Reference toolbar.
2.
For the beam which has already been defined, click on the Nodes button.
The Nodes dialog is displayed.
3.
Uncheck the Only search interface nodes box and then click on Find All.
4.
Close the the Nodes dialog.
At the end of these steps your model should look like the one shown in the figure below:
One final comment before running the model:
This type of constraint does not ensure that the contact point will stay within the range of
data specified for the curve. Additional forces at the end need to be defined by the user to
satisfy this requirement. If the contact point goes out of range of the data specified for this
curve, the solver encounters an error (unless additional forces are defined to satisfy this). In
that case, one has to change the initial velocities for the ball, or increase the range of data
specified for the curve, or run the simulation for a shorter interval of time.
Altair Engineering
MotionView 13.0 Tutorials 376
Proprietary Information of Altair Engineering
Step 9: Running the Model.
We now have the model defined completely and it is ready to run.
1.
Click the Run icon
on the Model-Main toolbar.
The Run panel is displayed.
2.
From the Main tab, specify values as shown below:
3.
Choose the Save and run current model radio button.
4.
Click on the browser icon
5.
Click Save.
6.
Click the Check Model button
7.
To run the model, click the Run button on the panel.
and save the file as result.xml.
on the Model Check toolbar to check the model for errors.
The solver will get invoked here.
Step 10: Viewing the Results.
1.
Once the solver has finished its job, the Animate button will be active. Click on Animate.
The
icon can be used to start the animation, and the
animation.
icon can be used to stop/pause the
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.
2.
Click on the Add Page icon
3.
Use the Select application drop-down menu to change the application from MotionView
HyperGraph 2D
and add a new page.
.
4.
Click the Build Plots
5.
Click on the browser icon
icon on the Curves toolbar.
and load the result.abf file.
377 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
to
6.
Make selections for the plot as shown below:
We are plotting the Z position of the center of mass of the ball.
7.
Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
Altair Engineering
MotionView 13.0 Tutorials 378
Proprietary Information of Altair Engineering
MV-1028: Modeling Point-to-Deformable-Surface
(PTdSF) Higher-Pair Constraint
In this tutorial, you will learn how to:
Model a PTdSF (point-to-deformable-surface) joint
A PTdSF (point-to-deformable-surface) joint is a higher pair constraint. This constraint restricts a
specified point on a body to move along a specified deformable surface on another body. The point
may belong to a rigid, flexible, or point body. The deformable surface for this tutorial is defined on a
rigidly supported plate. A mass is constrained to move on the surface with a PTdSF constraint.
Exercise
Copy the files membrane.h3d and membrane.fem from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive to your <working
directory>.
Step 1: Creating points.
Let’s start with creating points that will help us locate the bodies and joints as required. We will
define points for center of mass of the bodies and joint locations.
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).
The Add Point or PointPair dialog is displayed.
3.
For Label, enter BallCM.
4.
Accept the default variable name and click OK.
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
PointMembInterface39
-55.00
-55.00
0.0
PointMembInterface40
55.00
-55.00
0.0
PointMembInterface41
55.00
55.00
0.0
PointMembInterface42
-55.00
55.00
0.0
379 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Creating Bodies.
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).
The Add Body or BodyPair dialog is displayed.
2.
For Label, enter Membrane.
3.
Accept the default variable name and click OK.
For the remainder of this tutorial - accept the default names for the rest of the variables that you
will be asked for.
4.
From the Properties tab, check the Deformable box.
5.
Click on the Graphic file browser icon
directory>.
and select membrane.h3d from the <working
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.
The Add Body or BodyPair dialog is displayed.
7.
For Label, enter Ball and click OK.
8.
From the Properties tab, specify the following for the Ball:
9.
Body
Mass
Ixx
Iyy
Izz
Ixy
Iyz
Izx
Ball
1.00
4000.00
4000.00
4000.00
0.0
0.0
0.0
For the Ball body, under the CM Coordinates tab, check the Use center of mass coordinate
system box.
10. Double click on Point.
The Select a Point dialog is displayed.
11. Choose BallCM and click OK.
12. Accept defaults for axes orientation properties.
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.
14. Repeat the same for Vy.
Altair Engineering
MotionView 13.0 Tutorials 380
Proprietary Information of Altair Engineering
Step 3: Creating Markers and a Deformable Surface.
Now, we will define some markers required for the membrane.
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.
5.
Click Generate Surface.
The Markers and Deformable Surface are created.
Step 4: Creating Joints.
Here, we will define all the necessary joints except the PTdSF joint, which will be defined as an
advanced joint later. We require four joints for the model, all of them being fixed joints between the
membrane and the ground.
1.
From the Project Browser, right-click on Model and select Add Constraint > Joint (or rightclick the Joints icon
on the Model-Constraint toolbar).
The Add Joint or JointPair dialog is displayed.
2.
For Label, enter Joint 1.
381 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Select Fixed Joint as the type and click OK.
4.
From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
5.
Choose Membrane and click OK.
6.
From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
7.
Choose Ground Body and click OK.
8.
From the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
9.
Choose PointMembInterface39 and click OK.
10. Repeat the same procedure for the other three joints.
A table is provided below for your convenience:
Label
Type of Joint
Body 1
Body 2
Point
Joint 2
Fixed
Membrane
Ground Body
PointMembInterface40
Joint 3
Fixed
Membrane
Ground Body
PointMembInterface41
Joint 4
Fixed
Membrane
Ground Body
PointMembInterface42
Step 5: Creating Advanced Joints.
Now we will define the advanced PTdSF joint.
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 Add AdvJoint dialog is displayed.
2.
For Label, enter AdvancedJoint 0.
3.
Accept the default variable name and click OK.
4.
From the Connectivity tab, select:
PointToDeformableSurface Joint
Ball for Body
BallCM for Point
DeformableSurface 1 for DeformableSurface.
Altair Engineering
MotionView 13.0 Tutorials 382
Proprietary Information of Altair Engineering
Step 6: Creating Graphics.
Graphics for the ball will now be built here.
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).
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter Ball.
3.
For Type, choose Sphere from the drop-down menu and click OK.
4.
Under the Connectivity tab, double-click on Body.
The Select a Body dialog gets displayed.
5.
Choose Ball and click OK.
6.
Again under the Connectivity tab, double-click on Point.
The Select a Point dialog gets displayed.
7.
Choose BallCM and click OK.
8.
Under the Properties tab, enter 1.0 as the radius of the Ball.
9.
Under the Visualization tab, select a color for the Ball.
Step 7: Return to the Bodies Panel.
1.
Click the Body icon
on the Model-Reference toolbar.
2.
For the membrane which has already been defined, click on the Nodes button.
The Nodes dialog is displayed.
3.
Uncheck the Only search interface nodes box and then click on Find All.
4.
Close the the Nodes dialog.
At the end of these steps your model should look like the one shown in the figure below:
383 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
One final comment before running the model:
This type of constraint does not ensure that the contact point will stay within the range of
data specified for the surface. Additional forces at the end need to be defined by the user to
satisfy this requirement. If the contact point goes out of range of the data specified for this
curve, the solver encounters an error (unless additional forces are defined to satisfy this). In
that case, one has to change the initial velocities for the ball, or increase the range of data
specified for the curve, or run the simulation for a shorter interval of time.
Step 8: Running the Model.
Now we have the model defined completely and it is ready to run.
1.
Click the Run icon
on the Model-Main toolbar.
The Run panel is displayed.
2.
From the Main tab, specify values as shown below:
End time = 2.000
Print interval = 0.0100
Altair Engineering
MotionView 13.0 Tutorials 384
Proprietary Information of Altair Engineering
3.
Click on the Simulation Settings button.
The Simulation Settings dialog is displayed.
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):
5.
Click Close to close the dialog.
6.
Verify that the Save and run current model radio button is selected.
7.
Click on the browser icon
8.
Click Save.
9.
Click the Check Model button
and save the file as result.xml in the <working directory>.
on the Model Check toolbar to check the model for errors.
10. To run the model, click the Run button on the panel.
The solver will get invoked here.
Step 9: Viewing the Results.
1.
Once the solver has finished its job, the Animate button will be active. Click on Animate.
The
icon can be used to start the animation, and the
animation.
icon can be used to stop/pause the
385 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
2.
Click on the Add Page icon
3.
Use the Select application drop-down menu to change the application from MotionView
HyperGraph 2D
and add a new page.
.
4.
Click the Build Plots
icon on the Curves toolbar.
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
and load the result.abf file from the <working directory>.
We are plotting the Z position of the center of mass of the ball.
7.
Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
Altair Engineering
MotionView 13.0 Tutorials 386
Proprietary Information of Altair Engineering
to
MV-1029: Modeling Point-to-Deformable-Surface
Force (PTdSF) Higher-Pair Constraint
In this tutorial, you will learn how to:
Model a PTdSFforce (point-to-deformable-surface) joint with a contact force
A PTdSFforce (point-to-deformable-surface) joint is a higher pair constraint with an added contact
force. The force is either modeled as a linear one or a Poisson type here. This constraint restricts a
specified point on a body to move along a specified deformable surface on another body. The point
may belong to a rigid, flexible or point body. The deformable surface for this tutorial is defined on a
rigidly supported plate. A mass is constrained to move on the surface with a PTdSFforce constraint.
The added feature here is that a flexible contact force acts at the center of mass of the ball between
it and the deformable surface. In this tutorial we will take up the case of the linear force model.
Exercise
Copy the following file Plate.h3d and membrane.fem from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\interactive to your <working
directory>.
Step 1: Creating points.
Let’s start with creating points that will help us locate the bodies and joints as required. We will
define points for center of mass of the bodies and joint locations.
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).
The Add Point or PointPair dialog is displayed.
3.
For Label, enter BallCM.
4.
Accept the default variable name and click OK.
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
PointMembInterface39
-55.00
-55.00
0.0
PointMembInterface40
55.00
-55.00
0.0
PointMembInterface41
55.00
55.00
0.0
PointMembInterface42
-55.00
55.00
0.0
387 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 2: Creating Bodies.
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).
The Add Body or BodyPair dialog is displayed.
2.
For Label, enter Membrane and click OK.
3.
Accept the default variable name and click OK.
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 Deformable 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
6.
.
Right-click on Bodies in the Project Browser and select Add Body.
The Add Body or BodyPair dialog is displayed.
7.
For Label, enter Ball and click OK.
8.
From the Properties tab, specify the following for the Ball:
9.
Body
Mass
Ixx
Iyy
Izz
Ball
1.00
40000.00
40000.00 40000.00
Ixy
Iyz
Izx
0.0
0.0
0.0
For the Ball body, under the CM Coordinates tab, check the Use center of mass coordinate
system box.
10. Double click on Point.
The Select a Point dialog is displayed.
11. Choose BallCM and click OK.
12. Accept defaults for axes orientation properties.
Altair Engineering
MotionView 13.0 Tutorials 388
Proprietary Information of Altair Engineering
Step 3: Creating Markers and a Deformable Surface.
Now, we will define some markers required for the membrane.
1.
From the Macros menu, select Create Markers For Deformable Surface.
The Create Markers For a 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.
5.
Click Generate.
The Markers and Deformable Surface are created.
Step 4: Creating Joints.
Here, we will define all the necessary joints. We require four joints for the model, all of them being
fixed joints between the membrane and the ground.
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 Add Joint or JointPair dialog is displayed.
2.
For Label, enter Joint 1.
389 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Select Fixed Joint as the type and click OK.
4.
From the Connectivity tab, double-click on Body 1.
The Select a Body dialog is displayed.
5.
Choose Membrane and click OK.
6.
From the Connectivity tab, double-click on Body 2.
The Select a Body dialog is displayed.
7.
Choose Ground Body and click OK.
8.
From the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
9.
Choose PointMembInterface39 and click OK.
10. Repeat the same procedure for the other three joints.
A table is provided below for your convenience:
Label
Type of Joint
Body 1
Body 2
Point
Joint 2
Fixed
Membrane
Ground Body
PointMembInterface40
Joint 3
Fixed
Membrane
Ground Body
PointMembInterface41
Joint 4
Fixed
Membrane
Ground Body
PointMembInterface42
Step 5: Creating Contacts.
Here we will define the contact force between the deformable membrane and the ball.
1. From the Project Browser right-click on Model and select Add Force Entity > Contact (or rightclick the Contacts icon
on the Model-Force toolbar).
The Add Contact dialog is displayed.
2. For Label, enter Contact 0.
3. Select PointToDeformableSurfaceContact for the type of contact and click OK.
4. From the Connectivity tab; select Linear as the calculation method, Ball for Body, BallCM for
Point, and DeformableSurface 1 for DeformableSurface.
5. Uncheck the Flip normal checkbox.
6. Click on the Properties tab and enter 10 for Radius, 1000 for Stiffness, and 0.2 for Damping.
Altair Engineering
MotionView 13.0 Tutorials 390
Proprietary Information of Altair Engineering
Step 6: Creating Graphics.
Graphics for the ball will now be built here.
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).
The Add Graphics or GraphicPair dialog is displayed.
2.
For Label, enter Ball.
3.
For Type, choose Sphere from the drop-down menu and click OK.
4.
From the Connectivity tab, double-click on Body.
The Select a Body dialog is displayed.
5.
Choose Ball and click OK.
6.
Again from the Connectivity tab, double-click on Point.
The Select a Point dialog is displayed.
7.
Choose BallCM and click OK.
8.
From the Properties tab, enter 10 as the radius of the Ball.
9.
From the Visualization tab, select a color for the Ball.
Step 7: Return to the Bodies Panel.
1.
Click the Body icon
on the Model-Reference toolbar.
2.
For the membrane which has already been defined, click on the Nodes button.
The Nodes dialog is displayed.
3.
Uncheck the Only search interface nodes box and then click on Find All.
4.
Close the the Nodes dialog.
At the end of these steps your model should look like the one shown in the figure below:
391 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 8: Running the Model.
Now we have the model defined completely and it is ready to run.
1.
Click the Run icon
on the Model-Main toolbar.
The Run panel gets displayed.
2.
From the Main tab, specify values as shown below:
3.
Choose the Save and run current model radio button.
4.
Click on the browser icon
5.
Click Save.
6.
Click the Check Model button
7.
To run the model, click the Run button on the panel.
and save the file as result.xml in the <working directory>.
on the Model Check toolbar to check the model for errors.
The solver will get invoked here.
Altair Engineering
MotionView 13.0 Tutorials 392
Proprietary Information of Altair Engineering
Step 9: Viewing the Results.
1.
Once the solver has finished its job, the Animate button will be active. Click on Animate.
The
can be used to start the animation, and the
animation.
icon can be used to stop/pause the
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.
Click on the Add Page icon
3.
Use the Select application drop-down menu to change the application from MotionView
HyperGraph 2D
and add a new page.
.
4.
Click the Build Plots
icon on the Curves toolbar.
5.
Click on the browser icon
6.
Make selections for the plot as shown below:
and load the result.abf file from the <working directory>.
We are plotting the Z position of the center of mass of the ball.
7. Click Apply.
The profile for the Z-displacement of the ball should look like the one shown below:
393 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
to
We can also plot the penetration distance for this flexible contact.
1.
Make selections for the plot as shown below:
2.
Click Apply.
3.
The penetration profile as a function of time looks like the one shown below:
Altair Engineering
MotionView 13.0 Tutorials 394
Proprietary Information of Altair Engineering
MV-7000: Modeling Differential Equations Using
MotionView and MotionSolve
Differential equations are very versatile and have many different applications in modeling multi-body
systems. User-defined dynamic states are commonly used to create low pass filters, apply time lags
to signals, model simple feedback loops, and integrate signals. The signal may be used to:
define forces.
used as independent variables for interpolating through splines or curves.
used as input signals for generic control modeling elements.
define program output signals.
The MotionSolve expressions and user-subroutines allow you to define fairly complex user-defined
dynamic states.
The expression type is used when the algorithm defining the differential equation is simple enough to
be expressed as a simple formula. In many situations, the dynamic state is governed by substantial
logic and data manipulation. In such cases, it is preferable to use a programming language to define
the value of a differential equation. The user-defined subroutine, DIFSUB, allows you to accomplish
this.
Step 1: Build and analyze a simplified model.
In the following exercise, we will build and analyze a simplified model of a pressure vessel blown down
using MotionView and MotionSolve.
1.
We specify the following parameters (state variables) as solver variables:
2.
Model the following differential equations:
The three states of the system are PT ,T T and mT.
395 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3. Specify the initial conditions for the system as:
4.
Run the model in MotionSolve and post-process the results in HyperGraph.
Creating Solver Variables
A solver variable defines an explicit, algebraic state in MotionSolve. The algebraic state may be a
function of the state of the system or any other solver variables that are defined. Recursive or
implicit definitions are not allowed at this time.
Two types of solver variables are available. The first, and probably the most convenient, is the
expression valued variable. The second is the user-subroutine valued variable.
The expression method is used when the algorithm defining the algebraic state is simple. In many
situations, the algebraic state is governed by substantial logic and data manipulation. In those cases,
it is preferable to use a programming language to define the value of a solver variable. The userdefined subroutine, VARSUB, enables you to do this.
Solver Variables are quite versatile and have many different applications in modeling multi-body
systems. They are commonly used to create signals of interest in the simulation. The signal may
then be used to define forces, independent variables for interpolation, inputs to generic control
elements, and output signals.
MotionSolve expressions and user-subroutines allow for fairly complex algebraic states to be defined.
For more information, please refer to the MotionView and MotionSolve User's Guides in the on-line
help.
Step 2: Add a solver variable.
1.
Launch a new session of MotionView.
2.
From the Project Browser, right-click on Model and select Add General MDL Entity > Solver
Variable (or right-click on the Solver Variables icon,
, from the toolbar).
3.
The Add Solver Variable dialog is displayed.
4.
In the Label field, assign the label K to the solver variable.
5.
In the Variable field, assign a variable name to the solver variable or leave the default name.
Altair Engineering
MotionView 13.0 Tutorials 396
Proprietary Information of Altair Engineering
6.
Click OK.
7.
From the Properties tab, under Type:, select Linear and enter a value of 1.4 in the field.
8.
Repeat steps 1 through 7 to create the three remaining solver variables:
397 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 3: Modeling differential equations.
1.
From the Project Browser, right-click on Model and select Add General MDL Entity > Solver
Differential Equation (or right-click on the Solver Differential Equation icon,
toolbar.
, from the
2.
The Add SolverDiff dialog is displayed.
3.
In the Label field, assign a label to the solver diff or leave the default label.
4.
In the Variable field, assign a variable name to the solver diff or leave the default name.
5.
Click Apply twice.
6.
Click OK. Now, three solver differential equations will be created.
7.
Next, we'll model the first differential equation:
This is an implicit differential equation that has a constant (Cp/R). The initial condition of the
differential equation (IC) and its first derivative (IC dot) are known (given).
8.
Select SolverDiff 0. From the Properties tab, select Implicit and specify IC and IC dot as 2000
and -58875, respectively.
9.
Select the type as Expression.
10. To access the expression builder, click in the text field and select the F(x) button,
, from the
trio of buttons at the top of the panel,
. This will display the Expression Builder. In
this dialog, you can enter expressions in text boxes without extensive typing and memorization. It
can be used to construct mathematical expressions.
Altair Engineering
MotionView 13.0 Tutorials 398
Proprietary Information of Altair Engineering
11. Populate the expression as shown in the image below:
`-DIF1 ({diff_0.id})/DIF({diff_0.id})+{sv_3.value.lin}*DIF1({diff_1.id})/
DIF({diff_1.id})`
You can use the model tree to access entity variables in your model. As you can see for the
above expression, to refer to the ID of the differential equation, browse for it from the list-tree on
the Properties tab and select the ID. Click Apply. The name of the selected entity or property
is inserted into the expression.
399 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
12. Click OK. The new expression is displayed in the text box on the panel.
13. Repeat steps 8 through 13 to modify the remaining two differential equations:
Implicit: Yes.
IC: 560
IC_dot: -4710
Value Expression:
`DIF1({diff_0.id})/DIF({diff_0.id})-DIF1({diff_1.id})/DIF({diff_1.id})DIF1({diff_2.id})/DIF({diff_2.id})`
Implicit: No.
IC: 0.000256
Value Expression:
`-{sv_1.value.lin} *sqrt({sv_0.value.lin}*DIF({diff_2.id})*DIF({diff_0.id}) /
{sv_2.value.lin})*0.5787`
Step 4: Running the model in MotionSolve.
1.
Click the Run button,
2.
Specify the values as shown below:
Altair Engineering
, on the toolbar. The Run panel is displayed.
MotionView 13.0 Tutorials 400
Proprietary Information of Altair Engineering
3.
Under the Main tab, choose the Save and run current model radio button.
4.
Click on the browser icon,
5.
Click Save.
6.
Click Check Model button,
7.
To run the model, click Run. The solver will get invoked here.
8.
Post-process the results using Altair HyperGraph.
, specify a filename of your choice.
, to check the model.
401 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-7001: Building User Subroutines in Altair
MotionSolve
In this tutorial, you will learn how to compile and build a MotionSolve user subroutine. The user
subroutine can be implemented as C/C++ or FORTRAN source code, C/C++ or FORTRAN object files, or
a combination of these.
For your convenience, MotionSolve contains a subroutine build tool for Windows and Linux that can
build the subroutine for you. Using this subroutine requires no programming knowledge.
You can also build your user subroutine using an integrated development environment like Microsoft ®
Visual Studio® on Windows. This is explained in this tutorial.
Minimum Software Requirements to Compile and Build MotionSolve User
Subroutine DLLs
Windows
Microsoft Visual Studio version 2005 - both Express and Professional Versions.
Intel Visual FORTRAN Compiler 10.
Linux
GCC version 4.1.2
Using the MotionSolve Subroutine Build Tool to Create Shared
Libraries
The Altair subroutine build tool is shipped as part of the MotionSolve installation for both Windows and
Linux.
The following steps describe how to build a MotionSolve compatible shared library using available
source code.
Altair Engineering
MotionView 13.0 Tutorials 402
Proprietary Information of Altair Engineering
Launching the Build Tool on Windows
The build tool may be launched via the Start menu by navigating to:
Start > All Programs > Altair HyperWorks 13 (64-bit) > Tools > MotionSolve SubRoutine
Builder
This displays the tool’s GUI:
Launching the Build Tool on Linux
You can launch the build tool from the desktop icon or from the command line by navigating to:
<altair_root>/altair/scripts/
and issuing the following command
./motionsolve_subroutine_builder
This displays the tool’s GUI:
403 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Specify source code or object files
The next step is to specify the source code or the object files that you will be using to build the
shared library. The following are valid source file types and can be used to build a shared library:
C/C++ source code (*.c, *.cpp, *.cxx)
FORTRAN source code (*.f, *.f90)
FORTRAN or C/C++ object files (*.obj in Windows, *.o in Linux)
A combination of the above.
Note: The remainder of this section demonstrates using the build tool on Windows. The steps for
using the tool on Linux are identical.
Important
The source code or object files must all be located in the same directory. You
must have write-to-disk permissions for this directory. If you do not have
write-to-disk permissions for this directory, please copy the source code to a
location where you have write-to-disk permissions.
Also, if your source/object code is located in different folders on your disk,
please copy all source/object code, along with any relevant files (like headers,
for example) to one common directory. Use this as your working directory in the
next steps.
1.
To specify the source/object files, click on the open button,
box.
2.
Navigate to your working directory and choose the source files as required. You can choose
multiple files by holding down the CTRL button while clicking on the file names, or by clicking and
dragging your mouse pointer.
Altair Engineering
, beside the Source File(s) text
MotionView 13.0 Tutorials 404
Proprietary Information of Altair Engineering
3.
Click Open to select these files.
Specify the output directory
Next, you will specify the output directory where you would like the shared library to be built. Again,
you must have write-to-disk permissions for this directory.
1.
Click Open,
, beside the Output Name text box.
405 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2.
Navigate to the directory where you would like the shared library to be built. Click Select Folder
to choose the current folder as the output directory.
Specify the name of the shared library
1.
Before building the shared library, you need to specify a name for the shared library. To do this,
simply type in the name (without the extension) into the Output Name text box.
Note:
The shared library name must contain only alphanumeric characters (A-Z, a-z, 0-9)
with the exception of the underscore (“_”) character.
Altair Engineering
MotionView 13.0 Tutorials 406
Proprietary Information of Altair Engineering
Build the shared library
1.
To build your shared library, click Build.
2.
For the Windows platform, if you have multiple compilers installed on your computer, you can
choose which compiler to use while building your shared library:
3.
Upon building the source files successfully, the following dialog box is displayed:
Additionally, you will see the shared library built by the tool in your working directory (C:\Test in
this case). You can use this library in a MotionSolve simulation.
407 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The tool also creates a temporary directory inside your working directory while building the shared
library. The contents of this temporary directory can be used for debugging and informational
purposes.
Note:
The temporary directory created inside of your working directory contains some useful
information:
build.bat: a batch file that contains the compiler and linker commands used to build the
shared library.
build_output.log: a log file that contains messages from the compiler and linker. The
contents of this file are useful while debugging an unsuccessful build.
For a successful build, this directory also contains compiled objects, the linked library and other
temporary files. If you specified only C/C++ source files and/or object files, the tool also creates
a Microsoft ® Visual Studio® solution file in this directory.
4.
If, however, your build is unsuccessful, the following dialog box is displayed:
5.
To investigate the cause of build failure, you may want to look at the build_output.log file at
the location stated in the dialog box above. This file will typically contain compiler/link time errors
or warnings that may help you debug your source code.
Exit the tool
1.
After you have finished using the tool, you can exit by clicking Quit on the tool. If you built a
shared library before quitting, you are given the option to remove the temporary folder created by
the tool.
Altair Engineering
MotionView 13.0 Tutorials 408
Proprietary Information of Altair Engineering
FAQs
Q. Can the tool build a shared library when both FORTRAN and C/C++ source code is specified?
A. Yes, the tool can handle mixed source code as well as object files.
Q. What platform does the build tool build my library for?
A. The supported platforms are 64-bit Windows and 64-bit Linux.
Q. Is my shared library a debug or release version?
A. The shared library created is a release version library.
Q. Where can I get sample templates for the syntax of the C/C++/FORTRAN code?
A. Sample user subroutine code is provided in the HyperWorks installation in the following locations:
For C/C++ source code:
<install>\Altair\<version>\hwsolvers\motionsolve\usersub\c_src
For FORTRAN source code:
<install>\Altair\<version>\hwsolvers\motionsolve\usersub\f_src
Note: For MotionSolve to use the functions defined in the source code, these functions must be
exported on the Windows platform (on Linux, all functions are automatically exported). The
syntax to do this for C/C++ and FORTRAN is described below.
C/C++
Include the header file msolvsub_c_include.h (located in <install>\Altair\<version>\hwsolvers
\motionsolve\usersub\c_src\include) in your code. To export a function, use the keywords
CLINKAGE, DLLFUNC and STDCALL.
#include " msolvsub_c_include.h"
#include "stdlib.h"
CLINKAGE
DLLFUNC void STDCALL ARYSUB (int *id, double *time, double *par,
int *npar, int *dflag, int *iflag, int *nvalue, double *value)
{
}
FORTRAN
In FORTRAN syntax, the same function above can be exported as shown below:
SUBROUTINE ARYSUB (ID, TIME, PAR, NPAR, DFLAG,
& IFLAG, NVALUE, VALUE)
!DEC$ ATTRIBUTES DLLEXPORT :: ARYSUB
409 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Q. Does the order in which I choose the source files matter?
A. Yes, this can matter in certain cases. For example, when building FORTRAN source code and
defining MODULES, you may want to include the source file that contains the definition of any defined
modules before the source files that refer to these modules.
Q. I am not able to compile FORTRAN files even though I have a supported Intel FORTRAN compiler
installed. What’s wrong?
A. The build tool relies on an environment variable to detect the version of the Intel FORTRAN compiler
and its location on your machine. Make sure you have the environment variable IFORT_COMPILERxx
(where xx is the version of the compiler – 10, 11 or 12) defined correctly on your system and pointing
to the installed version.
Using the Microsoft® Developer Studio to Build a Shared
Library
Note: To successfully build a shared library using the steps below, you will need to have write-todisk permissions for your HyperWorks installation directory.
Build a C++ user subroutine DLL using Microsoft® Visual Studio®
1.
Open Microsoft Visual Studio 2005 (Express and Professional Editions will work).
2.
From the File menu, select Open > Project/Solution.
Altair Engineering
MotionView 13.0 Tutorials 410
Proprietary Information of Altair Engineering
3.
Browse to <install>\Altair\<version>\hwsolvers\motionsolve\usersub\c_project, select
the file ms_csubdll.vcproj and click Open.
Note:
If you are using a version newer than Visual Studio 2005, you will be prompted to
convert the project file. Please proceed with the default options for the conversion.
Once converted, the new project file is loaded to your workspace.
4.
In the Solution Explorer, you will see a list of the CPP subroutines that are part of the solution.
5.
Double-click any of the CPP files that you want to modify/view and make the required changes.
6.
Click Save to save the changes made to the file.
7.
Choose the configuration for your shared library.
Make sure that the target type for the shared library matches your HyperWorks installation. For
example, choose x64 for a 64-bit installation of HyperWorks.
8.
Select Build > Build Solution to build the DLL. You will be prompted to save the solution. Save
the solution in a directory of your choice.
9.
Upon successful completion of the build, Visual Studio displays a message as shown below:
10. You will find the new DLL ms_csubdll.dll in <install>\Altair\<version>\hwsolvers
\motionsolve\usersub\c_project\<platform>\<config>\ms_csubdll.dll.
Build a FORTRAN user subroutine DLL using Microsoft® Visual Studio®
The same steps can be repeated to build a FORTRAN user subroutine DLL for MotionSolve. The only
difference is that the project file to be opened in Visual Studio is ms_fsubdll.vfproj. All the other
steps remain the same.
411 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-7002: Co-simulation with Simulink
Tutorial Objectives
In this tutorial, you will learn how to use the MotionSolve-Simulink co-simulation interface, driving the
model from Simulink via an S-Function.
Software and Hardware Requirements
Software requirements:
MotionSolve
MATLAB/Simulink (MATLAB Version 7.6(R2008a), Simulink Version 7.1(R2008a)) (or newer)
Hardware requirements:
PC with 32/64bit CPU, running Windows XP Professional (win32 XP Professional or win64 XP
professional)
Linux RHL5 32/64
Bus Suspension Model
Consider a bus suspension system that consists of a bus mass, suspension mass, and a road dummy
body. The bus mass, suspension mass pair, the road dummy and the suspension mass pair are
constrained with a translation joint. The road dummy is actuated by a sinusoidal motion.
Bus suspension schematic
Altair Engineering
MotionView 13.0 Tutorials 412
Proprietary Information of Altair Engineering
Along with the multi-body system, the model contains a pre-designed controller that maintains the
reference signals of the desired displacement and velocity. A block diagram of the control system is
shown the figure below.
Block diagram of the control system
In the image above:
Gc(S) – Multi-input multi-output (MIMO) controller
D(S) - Displacement of body mass from the bus suspension model
V(S) - Velocity of body mass from the bus suspension model
Rd(S) – Reference (desired) signal of the body mass displacement
Rv(S) - Reference (desired) signal of the body mass velocity
E1 (S) - Displacement tracking error of the body mass
E2 (S) - Velocity tracking error of the body mass
Y1(S) - Control Force 1 output from the controller (displacement)
Y2(S) - Control Force 2 output from the controller (velocity)
The transfer function for the controller is:
x’ = Ax + Bu
y = Cx + Du
where:
A - State matrix
B - Input matrix
C - Output matrix
D - Direct feed-through matrix
413 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Below is the state-space representation of the controller:
A = [0 0;0 0]
B = [1 0;0 1]
C = [10 0;0 20]
D = [10000 0;0 20000]
u = [Displacement of the bus mass; velocity of the bus mass]
y = [Control force (stiffness); Control force (damping)]
These MIMO controller forces act between the bus mass and the suspension mass to control
displacement and velocity profiles of the bus mass. In the co-simulation model, a single MIMO
controller is modeled in Simulink.
In this exercise, you will do the following:
Solve the baseline model in MotionSolve (only, i.e., without co-simulation) by using the bus
suspension model with a MIMO continuous controller modeled by a Control_StateEqn element.
You can use these results to compare to an equivalent co-simulation in the next steps.
Review a modified MotionSolve bus model that mainly adds the Control_PlantInput and
Control_PlantOutput entities that allow this model to act as a plant for Simulink co-simulation.
Review the controller in the state-space form modeled in Simulink.
Perform a co-simulation and compare the results for the standalone MotionSolve model and cosimulation.
Before you begin, copy all the files in the <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\motionsolve\cosimulation folder to your working directory (referenced as
<Working Directory> in the tutorial).
Step 1: Run the baseline MotionSolve model.
In this step, use a Linear State Equation (LSE) to model the control system in MotionSolve. LSE
(Control_StateEqn with LINEAR option in MotionSolve) is an abstract modeling element that defines a
generic dynamic system. The dynamic system is characterized by a vector of inputs, u, a vector of
dynamic states, x, and a vector of outputs, y. The state vector x is defined through a set of
differential equations. The output vector y is defined by a set of algebraic equations.
Linear Dynamical Systems are characterized by four matrices: A, B, C, and D. These are related to the
dynamical system in the following way:
The four matrices A, B, C, D are all constant valued. The first equation defines the states. The
second equation defines the outputs.
The A matrix is called the state matrix. It defines the characteristics of the system. If there are "n"
states, then the A matrix has dimensions n x n. A is required to be non-singular.
The B matrix is called the input matrix. It defines how the inputs affect the states. If there are "m"
inputs, the size of the B matrix is n x m.
Altair Engineering
MotionView 13.0 Tutorials 414
Proprietary Information of Altair Engineering
The C matrix is called the output matrix. It defines how the states affect the outputs. If there are
"p" outputs, the size of the C matrix is p x n.
The D matrix is called the direct feed-through matrix. It defines how the inputs directly affect the
outputs. The size of the D matrix is p x m.
The input variables to the Control_StateEqn element are the reference displacement error and
reference velocity error. The output variables are control forces that will be applied between the
bus mass and the suspension mass.
1.
From the Start menu, select All Programs > Altair HyperWorks 13.0 > MotionSolve.
2.
For Input file, click the file browser icon and select the input file
BusSuspensionFeedBack_motionsolve.xml from your <Working Directory>.
3.
Click Run.
MotionSolve is invoked and runs the analysis.
The results that we get from Step 3 will be used as the baseline to compare the results that we
get from co-simulation.
Step 2: Use modified MotionSolve Model to define the plant in the control
scheme.
A MotionSolve model needs a mechanism to specify the input and output connections to the Simulink
model. The MotionSolve model (XML) used above is modified to include the Control_PlantInput and
Control_PlantOutput model elements and provide these connections. In this tutorial, this has already
been done for you, and you can see this in the model CoSimuBusSuspensionFeedBack.xml.
In contrast to the block diagram of the control system, the summing junctions have been
absorbed into the S-function (the MBD model) by appropriately taking the difference between
the displacement, velocity, and their corresponding reference values.
The Control_PlantInput element defines the inputs to a mechanical system or plant. You also
need to specify the outputs from the plant using the Control_PlantOutput element. The inputs
specified using the Control_PlantInput and Control_PlantOutput elements can be accessed
using the PINVAL(), POUVAL() functions, respectively. Since the Control_PlantInput and
Control_PlantOutput elements list the IDs of the solver variables, these inputs and output
variables may also be accessed using the VARVAL() function. For more details, please refer to
the MotionSolve User's Guide on-line help.
415 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
In this model, we have the following connections:
Plant Input: Two control forces that will be applied between the bus mass and the suspension
mass.
Plant Output: Bus mass displacement and velocity errors.
Step 3: Setting up environment variables to run MotionSolve from MATLAB
Simulink.
A few environment variables are needed for successfully running a co-simulation using MATLAB. These
can be set using one of the following methods:
Control Panel (Windows)
In the shell/command window that calls MATLAB (with the set command on Windows, or the
setenv command on Linux)
Within MATLAB, via the setenv() command
1.
Set the environment variables point to the solver binaries:
NUSOL_DLL_DIR: <installation_directory>\hwsolvers\motionsolve\bin\<platform>
…where <installation_directory> is the full path to the HyperWorks installation. <platform>
is win32 for 32-bit Windows, win64 for 64-bit Windows, and so on.
For example, on Windows 64-bit:
set NUSOL_DLL_DIR=C:\Program Files\Altair\13.0\hwsolvers\motionsolve\bin\win64
2.
Set the environment variables for licensing:
RADFLEX_PATH: <installation_directory>\hwsolvers\common\bin\<platform>
PATH: <installation_directory>\hwsolvers\common\bin\<platform>;%PATH%
(Notice that the HyperWorks directory is pre-pended to the original PATH).
On Linux machines, you must additionally set the environment variable LD_LIBRARY_PATH:
LD_LIBRARY_PATH: <installation directory>\hwsolvers\common\bin\<platform>
Note that other optional environment variables may be set for your model. See MotionSolve
Environment Variables for more information on these environment variables.
Step 4: Perform the co-simulation.
The core feature in Simulink that creates the co-simulation is an S-Function (System Function) block
in Simulink. This block requires an S-Function library (a dynamically loaded library) to define its
behavior. MotionSolve provides this library, but the S-Function needs to be able to find it. To help
MATLAB/Simulink find the S-Function, you need to add the location of the S-Function to the list of
paths that MATLAB/Simulink uses in order to search for libraries.
The S-Function libraries for co-simulation with MotionSolve are called either:
mscosim – for SMP communication
mscosimipc – for IPC (TCP/IP sockets) communication
Altair Engineering
MotionView 13.0 Tutorials 416
Proprietary Information of Altair Engineering
Changing the name of this library in the S-Function block in Simulink changes the communication
behavior of the co-simulation.
These files are installed under <installation_directory>\hwsolvers\motionsolve\bin
\<platform>.
The location of these files needs to be added to the search path of MATLAB for the S-Function to use
mscosim or mscosimipc.
This can be done in one of the following ways:
1.
Use the menu options.
a. From the Matlab menu, select File > Set Path…
b. From the dialog box, add the directory where the mscosim and mscosimipc DLL’s reside.
(for example, <installation_directory>\hwsolvers\motionsolve\bin\win64).
c. Select Save and Close. This procedure permanently adds this directory to the MATLAB/
Simulink search path.
2.
Use MATLAB commands.
At the MATLAB command line, type:
addpath(‘<installation_directory>\hwsolvers\motionsolve\bin\<platform>’)
…to add the directory where mscosim mex DLL resides into the MATLAB search path. It remains
valid until you exit MATLAB. You can also create a .m script to make this process more easily
repeatable.
For example, you can set the MATLAB Path and the necessary environment variables using
MATLAB commands in a MATLAB (.m) script:
addpath('<installation_directory>\hwsolvers\motionsolve\bin\win64')
setenv('NUSOL_DLL_DIR','<installation_directory>\hwsolvers\motionsolve\bin\win64')
setenv('RADFLEX_PATH',['<installation_directory>\hwsolvers\common\bin\win64')
setenv('PATH',['<installation_directory>\hwsolvers\common\bin\win64;'
getenv('PATH')])
For a Linux machine, additionally:
setenv(‘LD_LIBRARY_PATH’, '<installation_directory>\hwsolvers\common\bin\linux64
\')
417 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 5: View the controller modeled in Simulink
1.
In the Simulink Library Browser, select File > Open.
The Open file… dialog is displayed.
2.
Select the BusSuspension.mdl file from your <Working Directory>.
3.
Click Open.
You will see the PI controller modeled in linear state-space form that will be used in the cosimulation.
4.
The model contains an S-function block. Name the S-function ‘mscosim’.
The S-function (system-function) is one of the blocks provided by Simulink and represents the
MotionSolve model. It can be found in the Simulink User-Defined Functions block library. An SFunction allows you to model any general system of equations with inputs, outputs, states, and
so on, and is somewhat analogous to a Control_StateEqn in MotionSolve. See the MATLAB/
Simulink documentation for more details.
Altair Engineering
MotionView 13.0 Tutorials 418
Proprietary Information of Altair Engineering
5.
Double-click the S-function with name mscosim. In the dialog box that is displayed, under the S
Function Parameters, enter the following using single quotes:
'CoSimuBusSuspensionFeedBack.xml', 'CoSimuBusSuspensionFeedBack.mrf', ''
The three parameters are the following:
1. MotionSolve XML model name.
2. Output MRF name.
3. MotionSolve user DLL name (optional); enter empty single quotes ('') if not used.
419 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 6: Perform the co-simulation.
1.
Click Simulation > Start to start the co-simulation. Simulink uses ODE45 to solve the Simulink
model. From this, the co-simulation should begin and MotionSolve should create an output .mrf
file for post-processing. Set the Scopes in the Simulink model to display the results. Also, check
the .log file to make sure no errors or warnings were issued by MotionSolve.
Altair Engineering
MotionView 13.0 Tutorials 420
Proprietary Information of Altair Engineering
Step 7: Compare the MotionSolve-only results to the co-simulation results.
1.
From the Start menu, select All Programs > Altair HyperWorks 13.0 > HyperGraph.
2.
Click the Build Plots icon,
3.
Click the file browser icon,
, and load the BusSuspensionFeedBack_motionsolve.mrf file.
These are the baseline results created from running MotionSolve.
4.
Select Expressions for Y-Type, then REQ/70000004 LSE Input and Output for Y Request,
and F2 for Y Component to plot the damping force from the controller:
5.
Click Apply.
6.
Click the file browser icon,
, and load the CoSimuBusSuspensionFeedBack.mrf file. These are
the co-simulation results run with Simulink.
7.
Select Expressions for Y-Type, then REQ/70000004 Plant Input and Output for Y Request,
and F2 for Y Component to plot the damping force from the controller:
.
You will notice that both the signals match as shown below.
421 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-7003: Simulating a Single Input Single Output
(SISO) Control System Using MotionView and
MotionSolve
This tutorial shows you how to implement a single input single output (SISO) controller in MotionView
and solve it using MotionSolve.
Consider the problem of maintaining the reference speed of a rotor in the presence of disturbances. A
block diagram of the control system is shown in Figure 1 below.
Figure 1 - Block diagram of the control system.
One simple approach is to design a proportional integral (PI) controller (Ogata, 1995), such that:
This tutorial shows you how to implement this PI controller.
Exercise
Step 1: Loading the rotor model.
1.
From the Start menu, select All Programs > Altair HyperWorks 13.0 > MotionView.
2.
From the directory <installation_directory>/tutorials/mv_hv_hg/mbd_modeling/
motionsolve, load the file rotor.mdl.
The model contains a body called rotor that is attached to ground by a revolute joint. The joint
axis is parallel to the global Z-axis. There is a torsional spring-damper with only damping and no
stiffness.
The model also contains output requests for the displacement and velocity of the rotor body.
Altair Engineering
MotionView 13.0 Tutorials 422
Proprietary Information of Altair Engineering
Step 2: Adding a solver variable for reference speed.
1.
From the Project Browser, right-click on Model and select Add General MDL Entity > Solver
Variable (or right-click on the Solver Variables icon,
, from the toolbar.
The Add SolverVariable dialog will be displayed.
2.
Change Label to Reference Speed.
The variable name remains sv_0.
4.
Click OK.
5.
To maintain a linear speed of 3 rad/sec, from the Type drop-down menu, select Linear and enter
3 as the value of the solver variable.
Step 3: Adding a SISO Controller
In this section, add a SISO controller. The input to the controller is the error between the reference
speed solver variable and the rotor angular speed. The output of the controller is the torque to be
applied to the rotor. The parameters for the simulation are chosen, somewhat arbitrarily, as Kp=1 and
K=10.
1.
From the Project Browser, right-click on Model and select Add General MDL Entity > Control
SISO (or right-click on the Control SISO icon,
, from the toolbar).
The Add Control dialog will be displayed.
2.
Click OK.
3.
From the Input tab, select Expression from the Type drop-down menu and enter this expression:
'-WZ({MODEL.b_0.cm.idstring})+{sv_0.value}'
Note the single back quotes, indicating the expression is not to be processed by MDL, but by
Templex. The parameters inside the curly braces are evaluated.
4.
Click the Properties tab.
5.
To add Numerator coefficients, click Append.
6.
Enter 10 and 1 for the coefficients of 1 and s, respectively.
7.
Similarly, for Denominator coefficients, click Append and enter 0 and 1 for the coefficients of 1
and s, respectively.
423 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 4: Adding the Control Torque
In this section, create a control torque acting on the rotor body. The Z-component of this torque is
the output of the controller.
1.
From the Project Browser, right-click on Model and select Add Force Entity > Force (or rightclick on the Forces icon,
, from the toolbar).
2.
The Add Force or ForcePair dialog is displayed.
3.
Leave the label and variable name default settings and click OK.
4.
From the Connectivity tab, under Force, select Action Reaction and for Properties, select
Rotational.
5.
Set Local ref. frame by double-clicking Ref Marker and selecting Global Frame.
6.
Double-click Body 1 for Action force on: and select the rotor body.
7.
Double-click Body 2 for Reaction force on: and select Ground Body.
8.
Double-click Point 1 for Apply force at: and select Point 0.
9.
Click the Rot Properties tab and leave Tx and Ty set to 0.
10. Under Tz, select Expression and enter `{MODEL.siso_0.OUTPUT}`.
11. You may also click
tree.
to access the expression builder and create this expression using the model
Step 5: Adding Output Requests for Control Force
1.
From the Project Browser, right-click on Model and select Add General MDL Entity > Output
(or right-click on the Outputs icon,
, from the toolbar).
2.
The Add Output dialog will be displayed.
3.
Enter Control force for the Label name and click OK.
4.
Specify other choices as shown in figure 2 below:
Figure 2 - Setting up the output request for control force.
Altair Engineering
MotionView 13.0 Tutorials 424
Proprietary Information of Altair Engineering
Step 6: Running the Simulation
1.
Click the Run button,
, on the toolbar to display the Run panel.
2.
Under Simulation type, select Transient and specify the output (.xml) filename.
3.
Enter 25 for the End time:.
4.
Click Run.
The results are displayed in the image below.
Figure 3 - Simulation results for the PI speed controller.
Reference
K. Ogata, Modern Control Engineering, 1990, Prentice-Hall Inc., Englewood Cliffs, N.J., US
425 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-7004: Inverted Pendulum Control Using
MotionSolve and MATLAB
This tutorial illustrates how to use MotionView and MotionSolve to design a control system that
stabilizes an inverted pendulum. The goal is to design a regulator using the pole placement method.
The inverted pendulum MDL model file is supplied.
The tutorial steps include:
Check the stability of the open loop system.
Export linearized system matrices A,B,C, and D using MotionSolve linear analysis.
Design a controller using MATLAB.
Implement a controller in MotionView.
Check the stability of a closed loop system using MotionSolve linear analysis.
Add disturbance forces to the model and run simulation using MotionSolve.
Figure 1 shows the classic inverted pendulum on a slider. The system has two degrees of freedom
leading to four state variables. The vertically upright position of the pendulum is unstable. The goal
is to design a regulator to stabilize this configuration.
Figure 1: Inverted pendulum model
Altair Engineering
MotionView 13.0 Tutorials 426
Proprietary Information of Altair Engineering
We want to find a full-state feedback control law to achieve our goal. The control input is a force
applied to the slider along the global X-axis. Plant output is the pendulum angle of rotation about the
global Y-axis.
Start by loading the file inv_pendu.mdl from the directory <installation_directory>\tutorials
\mv_hv_hg\mbd_modeling\motionsolve\ into MotionView. Upon examination of the model topology,
you will notice that everything needed for this exercise is already included in the model. However,
depending on which task you are performing, you will need to activate or deactivate certain entities.
Step 1: Determine the stability of the open loop model
Compute the eigenvalues to determine the stability of the Inverted pendulum.
Compute Eigenvalues
1.
From the Project Browser, click the Forces folder and make sure that Control ForceOL is
activated, while Control Force – CL and Disturbance-step are deactivated.
2.
From General Actions toolbar, click the Run icon,
3.
From the Simulation type drop-down menu, select Static + Linear.
4.
Specify the output filename as inv_pendu_ol_eig.xml.
5.
Select the MDL animation file (.maf) option.
6.
Click Run.
7.
Once the solution is complete, close the solver execution window and the message log.
8.
The eigenvalues computed by MotionSolve are shown in the table below and can be viewed in
the inv_pendu_ol_eig.eig file using a text editor
.
Table - Open Loop Eigenvalues
EIGENVALUES
Number
1
2
3
4
Real(cycles/unit time)
Imaginary(cycles/unit time)
-1.625373E-02
0.00000000E+00
-4.003211E-01
0.00000000E+00
5.581881E-01
0.00000000E+00
-1.732850E+00
0.00000000E+00
There is one eigenvalue with a positive real part, indicating that the system is unstable in the
current configuration.
9.
Click Animate.
The result animation H3D will be loaded in the adjacent window.
427 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
10. From the Results Browser, select individual modes.
11. Click Start/Pause Animation,
, to visualize the mode shape.
Step 2: Obtaining a Linearized Model
Usually, the first step in a control system design is to obtain a linearized model of the system in the
state space form,
where A,B,C,and D are the state matrices, x is the state vector, u is the input vector, and y is the
output vector. The A,B,C,and D matrices depend on the choice of states, inputs, and outputs. The
states are chosen automatically by MotionSolve and the chosen states are reported in one of the
output files. We need to define only the inputs and outputs.
1.
2.
Expand the Solver Variables folder in the Project Browser and examine the entities..
a.
Control Force Variable - CL is used to define the control input after the control law has
been found. Ignore this at this stage.
b.
Control Force Variable - OL is used to define the control plant input, which is a force
named Control Force - OL. This force is applied to the slider body. This variable is set to
zero. It is needed by MotionSolve to properly generate the linearized system matrices.
c.
Solver variable Pendulum Rotation Angle defines the control plant output and measures the
pendulum rotation about the Global Y-axis.
Expand the Solver Array folder in the Project Browser and examine the solver arrays that are
defined.
a.
Select Plant-I – This array defines a solver array entity of type Plant-Input. Ensure that
Solver Variable is set to Control Force Variable - OL. Click OK.
b.
Select Plant-O – This array defines a solver array entity of type Plant-Output. Ensure that
Solver Variable is set to Pendulum Rotation Angle.
Note: Please note that the plant input and plant output IDs used in linearization are specified
automatically by MotionView while exporting the solver deck.
3.
Click the Run icon,
4.
From the Simulation type drop-down menu, select Linear.
Altair Engineering
.
MotionView 13.0 Tutorials 428
Proprietary Information of Altair Engineering
5.
Specify the output filename as inv_pendu_state_matrices.xml.
Linear tab in Simulation Settings dialog for specifying the MATLAB matrix files output
6.
From the Simulation Settings dialog > Linear tab, select the State-Space matrices (MATLAB)
option.
7.
From the Main tab, click Run.
You should get six new files with base name inv_pendu_state_matrices and extensions
.a, .b, .c, .d, .pi, .po. The .pi and .po files contain information about the input and output
variables.
The states chosen by the MotionSolve solver are:
1.
Angular displacement about the global-Y axis.
2.
Translation displacement along the global X-axis.
3.
Angular velocity about the global-Y axis.
4.
Translation velocity along the global X-axis of the pendulum body center of mass marker.
429 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 3: Control System Design in MATLAB
A detailed discussion of control system design is beyond the scope of this document. However, the
steps to design a regulator using pole placement [1] to stabilize the inverted pendulum are described
briefly. For details, refer to the standard controls text and the MATLAB documentation.
It can be easily verified using MATLAB that the system is completely state controllable [1, 2]. We
employ a full-state feedback control law
u = -k*x, where u is the control input, k is the gain vector, and x is the state vector. Then,
assuming the desired pole locations are stored in vector P, you may use the pole placement method to
compute k. For desired poles at [-20 –20 –20 –20] (rad/s), the acker function in MATLAB yields
k=1e3[-2.4186 -0.0163 -0.070 -0.0033].
Step 4: Implementing the Control Force in MotionView
The control force is simply u=-k*x. The model contains a solver variable called Control Force
Variable - CL. It is defined using the expression:
`-1e3*(-2.4186*AY({b_pendu.cm.idstring})-0.0163*DX({b_pendu.cm.idstring}),0.070*WY({b_pendu.cm.idstring})-0.0033*VX({b_pendu.cm.idstring}))`
Notice that it is simply the dot product between the gain vector (k) and the state vector (x)
elements. This solver variable is used to define a force named Control Force - CL.
Activate the force Control Force - CL if it is deactivated.
Step 5: Check the Stability of a Closed Loop System
1.
From the SolverMode menu, select MotionSolve. Activate the force Control Force - CL if it is
deactivated.
2.
From the Run panel, under Simulation type, select Linear.
3.
Specify the output file as inv_pendu_cl_eig.xml and click Run.
4.
The eigenvalues are given below.
Table - Closed Loop Eigenvalues
EIGENVALUES at Time = 0.0
Number
Real(cycles/unit time)
Imag.(cycles/unit time)
1
-2.027203E+00
0.000000E+00
2
-3.673652E+00
0.000000E+00
3
-3.461575E+00
1.336447E+00
4
-3.461575E+00
-1.336447E+00
They all have negative real parts, hence the system is stabilized. Note that the negative real parts
are close to the desired poles (-20 rad/s = -3.038 Hz).
Altair Engineering
MotionView 13.0 Tutorials 430
Proprietary Information of Altair Engineering
Step 6: Add Disturbance Force and Run the Simulation
1. Activate force acting on the slider titled Disturbance-step, defined using a step function:
Fx= `step(TIME,.1,0,.5,50) + step(TIME,1,0,1.5,-50)`
Fy=0
Fz=0
Run a dynamic simulation with MotionSolve.
Follow these steps.
1.
From the Project Browser, activate deactivated outputs Output control force - final and
Output Disturbance step.
2.
From the toolbar, click the Run icon,
3.
From the Simulation type drop-down menu, select Transient.
4.
Specify the output filename as inv_pendu_dyn.xml.
5.
Specify the End time and Print interval as 3.0 and 0.01, respectively.
6.
From the Main tab, click the Run button.
7.
Once the job is completed, close the solver window and plot the following results in a new
HyperGraph page using inv_pendu_dyn.abf.
.
Output
Y-Type
Y-Request
YComponen
t
control force
Marker Force
REQ/70000014 Output control force –final –
(on Body Slider)
FX
disturbance force
Marker Force
REQ/70000017 Output Disturbance step –(on FX
Body Slider)
slider displacement Marker
-X
Displacement
REQ/70000006 Output slider-disp –(on Body
slider)
DX
pendulum angular
displacement
REQ/70000016 Output Pendu rotation
F2
Expressions
431 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The plots of disturbance force, control force, slider x displacement, and pendulum angular
displacement are shown below.
Figure 2: Plots of disturbance and control forces as well as slider translational and pendulum angular
displacements.
References
Feedback Control of Dynamic Systems, G. G. Franklin, J. D. Powell, and A. Emami-Naeini, Third Edition,
Addison Wesley.
See also
MATLAB Documentation, www.mathworks.com.
Altair Engineering
MotionView 13.0 Tutorials 432
Proprietary Information of Altair Engineering
MV-7005: Linking Matlab/Simulink Generated Code
(Simulink Coder) with MotionSolve
This document describes how to generate a dynamic link library (DLL) using Simulink Coder (formerly
Real-Time Workshop) and link it with MotionSolve to run a co-simulation.
Pre-requisites:
1.
A working installation of MotionSolve (v12 and above)
2.
A working installation of MATLAB, Simulink, MATLAB Coder, and Simulink Coder
3.
A working installation of Microsoft Visual Studio (MSVS) 2010
Check for supported versions of MATLAB and MSVS here:
Supported Versions - Third Party Software in the XML Format Reference Guide.
This example uses MATLAB R2011b with MSVS 2010.
Step 1: Prepare the MotionSolve Model
The MotionSolve model is set up to communicate with an external solver by using the modeling
statements Control_PlantInput and Control_PlantOutput:
<Control_PlantInput
id
num_element
variable_id_list
sampling_period
offset_time
label
usrsub_param_string
usrsub_dll_name
usrsub_fnc_name
hold_order
/>
<Control_PlantOutput
id
num_element
variable_id_list
sampling_period
offset_time
label
usrsub_param_string
usrsub_dll_name
usrsub_fnc_name
hold_order
/>
<Control_PlantInput
id
num_element
variable_id_list
sampling_period
offset_time
label
usrsub_param_string
= "30100100"
= "2"
= "30100400, 30100500"
= "0.01"
= "0.0"
= "for controller 1"
= "USER(987654321)"
= "rtw_BusSuspension2PMIMODiscrete"
= "PINSUB"
= "2"
= "30100200"
= "2"
= "30100200, 30100300"
= "0.01"
= "0.0"
= "for controller 1"
= "USER(987654321)"
= "rtw_BusSuspension2PMIMODiscrete"
= "POUTSUB"
= "2"
=
=
=
=
=
=
=
"30100300"
"2"
"30100800, 30100900"
"0.01"
"0.0"
"for controller 2"
"USER(987654321)"
433 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
usrsub_dll_name
usrsub_fnc_name
hold_order
= "rtw_BusSuspension2PMIMODiscrete"
= "PINSUB"
= "2"
/>
<Control_PlantOutput
id
num_element
variable_id_list
sampling_period
offset_time
label
usrsub_param_string
usrsub_dll_name
usrsub_fnc_name
hold_order
/>
= "30100400"
= "2"
= "30100600, 30100700"
= "0.01"
= "0.0"
= "for controller 2"
= "USER(987654321)"
= "rtw_BusSuspension2PMIMODiscrete"
= "POUTSUB"
= "2"
The key attributes of Control_PlantInput and Control_PlantOutput needed to link a Simulink
Coder DLL are listed below.
Attribute
Description
usrsub_param_string
Set this parameter equal to "USER(id)", where the ID is an integer (for
example, 123) that you choose. The ID identifies the Simulink Coder
library, links all Control_PlantInput's and Control_PlantOutput's that
use the library, and must be unique.
Note: There can be more than one Control_PlantInput/
Control_PlantOutput per library.
usrsub_dll_name
The name of the DLL that is used (for example, from Simulink Coder).
usrsub_fnc_name
The name of the user function/subroutine that MotionSolve calls. This
has to necessarily be "PINSUB" for Control_PlantInput and "POUTSUB"
for Control_PlantOutput.
In this case, this MotionSolve model has been prepared for you. Copy the MotionSolve and Simulink
models, rtw_BusSuspension2PMIMODiscrete.xml and rtw_BusSuspension2PMIMODiscrete.mdl,
respectively, from <installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve
\cosimulation to your <working directory>.
Altair Engineering
MotionView 13.0 Tutorials 434
Proprietary Information of Altair Engineering
Step 2: Preparing the Simulink Model – Generating Code
Before starting with the simulation, the Simulink model needs to be created and prepared to work with
MotionSolve. After generating the contents of the Simulink model, MotionSolve requires the Simulink
components Inport and Outport, which represent the interface to the MotionSolve model. For
example, like the following (blocks labeled below as In1, In2, Out1, Out2):
Note: If you have multiple inports/outports, you must retain the above illustrated naming scheme. All
your inports must be defined as In1, In2, …, Inx. Similarly, all your outports must be named as
Out1, Out2, …, Outx. This is a limitation within the current co-simulation framework and will be
addressed in a future release. See Appendix B for more information.
435 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
The order of these Inport's and Outport's must match the order of the Control_PlantOutput’s and
Control_PlantInput's, respectively, in the MotionSolve model.
1.
Open rtw_BusSuspension2PMIMODiscrete.mdl in Simulink.
2.
Specify the configuration parameters in the solver, which is used by Simulink Coder. To do this,
use the Simulation > Configuration Parameters… menu option as shown below.
Altair Engineering
MotionView 13.0 Tutorials 436
Proprietary Information of Altair Engineering
3.
In the left-side browser/tree, select the Code Generation option:
437 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
Here, change the System target file by clicking Browse… and search for “grt.tlc – Create
Visual C/C++ Solution File for the “grt” target”. This is shown below:
5.
Once this is done, change the Language option to “C++” in this same Code Generation window.
Altair Engineering
MotionView 13.0 Tutorials 438
Proprietary Information of Altair Engineering
6.
Next, in the left-side browser/tree, select the Solver option:
Simulink Coder does not allow using a variable-step integrator for the Generic Real-Time target
that is required by MotionSolve to generate this code (more details on selecting the Generic RealTime target later in this tutorial). So, under the Solver option on the left, choose the Fixedstep solver, as shown below:
Note: See the Mathworks documentation for more details on selecting an appropriate fixed-step
size for your model (in particular, if the model has multiple sample times, you will likely need to
choose a step size equal to the least common denominator of the specified sample times so that
each sample time is hit by the solver).
7.
Next, in the left-side browser/tree, select the Code Generation option again.
439 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8.
Click on Build to build the code. The code generation creates two folders in the current directory
of MATLAB (here <Simulink_model> is the name of the model):
<Simulink_model>_grt_rtw
slprj
You should see messages that look similar to those below and end with:
### Successful completion of Real-Time Workshop build procedure for model:
rtw_BusSuspension2PMIMODiscrete
…or similar.
Altair Engineering
MotionView 13.0 Tutorials 440
Proprietary Information of Altair Engineering
Step 3: Modifying, Compiling and Linking the Code to Create the DLL
At this point, Simulink Coder has generated source code for the Simulink model, but this must be
modified and recompiled to generate the DLL required by MotionSolve. In the next steps, you will use
a script to automatically compile and link this code and generate the Simulink Coder DLL that will be
used in the MotionSolve model.
1.
Open a command prompt in your working directory (where Simulink has generated the code).
2.
Issue the following command:
“ms_rtw_pre <mdl_name> <altair_root> <msvs_root> <win32|win64>”
where,
<mdl_name> is the name of the Simulink model (without the extension .mdl)
<altair_root> is the complete path to the root folder of the HyperWorks installation
<msvs_root> is the complete path to the root folder of the MSVS installation
<win32|win64> specify win32 or win64 depending on the required platform of the DLL
Notes:
1.
To successfully issue the ms_rtw_pre command, please include the path of the MotionSolve
binaries in the “PATH” environment variable. This can be done locally by issuing the following
command on Windows:
set PATH = <MS_bin_path>;%PATH%
where <MS_bin_path> is the path to the MotionSolve binaries; for example, “C:\Program Files
\Altair\13.0\hwsolvers\motionsolve\bin\win64”
2.
If the path to <altair_root> and/or <msvs_root> contains spaces, make sure to enclose the
path in quotes.
An example of the above command for this model is:
ms_rtw_pre rtw_BusSuspension2PMIMODiscrete "C:\Program Files\Altair\13.0" "C:\Program
Files (x86)\Microsoft Visual Studio 10.0" "win64"
Issuing the above command does the following:
Automatically modifies the project settings and source files of the original solution generated
by Simulink Coder
Compiles and links the source code to generate a DLL that can be used with MotionSolve
You can confirm that this process has completed successfully by looking at the output in the
command window. On successful execution, you should see something like the following:
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
1 file(s) copied.
** RTW dll is ready **
441 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 4: Run a MotionSolve Model with The Generated DLL
At this point, you simply need to point MotionSolve to the Simulink library to complete the cosimulation. By default, it assumes that it is in the same directory as the MotionSolve model.
1.
In this example, the ms_pre_rtw script should have created the generated DLL into the same
folder where the MotionSolve model (.xml) resides. If the DLL is created elsewhere, copy it to
the working directory of the MotionSolve .xml file.
2.
Open a command window and change the path into this folder in order to run the model.
3.
You will be running the MotionSolve model on command line, so certain environment variables must
be set to be able to invoke MotionSolve. See the MotionSolve User’s Guide for more details on
the options to run on the command line.
4.
Run the MotionSolve model in the command line by issuing the command “mbd_d x.xml x.mrf”.
The simulation should run quickly and you should review your results to confirm that the process
worked as expected.
Appendix A
This section discusses the access functions CoSimAPI_SimulinkRTW_Update_U(api,model,input)
and CoSimAPI_SimulinkRTW_Update_Y(api,model,output). These are added to the Simulink model
source code in order to help perform the co-simulation via the DLL.
CoSimAPI_SimulinkRTW_Update_U(void *api, const RT_MODEL_x x_M, ExternalInputs_x &x_U)
This method updates the input data structure in the Simulink Coder generated code with the output
from MotionSolve.
The first argument requests a pointer to the API ID. The API ID is passed from the model XML in the
line usrsub_param_string = "USER(987654320)". The first parameter in the USER() string is always
the ID of the API. The MotionSolve API provides the method void * CoSimAPI_Get_API_Ptr(int
api_id) to get the API pointer, where the api_id is the number specified in the XML file in the
USER() string.
The second argument requests data structure x_M related to the generated Simulink Coder model
information where ‘x’ is the name of the model. The x_M data structure is inherent to the Simulink
code.
The last argument requests input x_U where x_U is the data structure used by the Simulink Coder
code to store the external inputs (see Appendix B).
CoSimAPI_SimulinkRTW_Update_Y(void *api, const RT_MODEL_x x_M, const
ExternalOutputs_x x_y)
This method updates the input for the MotionSolve solver with output from the RTW generated code.
The first and second arguments are the same as described in the previous section.
The last argument requests RTW output x_Y which is deposited to MotionSolve for that current time
step, where x_Y is the data structure used by the Simulink Coder code to store the external outputs
(see Appendix B).
Altair Engineering
MotionView 13.0 Tutorials 442
Proprietary Information of Altair Engineering
Appendix B
This section describes the data structure that Simulink Coder generated code uses for representing
the external input/output ports. In the following lines, the name of the model is assumed to be
rtw_MS (rtw = Real Time Workshop, former name of Simulink Coder).
Typically, the Simulink Coder generated code (SCGC) uses the following notations:
Input port to Simulink with single channel
rtw_MS_U.In1, rtw_MS_U.In2 etc.
Output port from Simulink with single channel
rtw_MS_Y.Out1, rtw_MS_Y.Out2 etc.
Input port with multiple channels
rtw_MS_U.In1[0], rtw_MS_U.In1[1] etc.
Output port with multiple channels
rtw_MS_Y.Out1[0], rtw_MS_Y.Out1[1] etc.
So for example, for a model with two Control_PlantInput (CPI) elements where the first has three
channels and the second has two channels, the corresponding data structure in Simulink Coder code
would be:
CPI #1: rtw_MS_U.In1[0], rtw_MS_U.In1[1] and rtw_MS_U.In1[2]
CPI #2: rtw_MS_U.In2[0] and rtw_MS_U.In2[1]
The same scheme is applicable for the data structure that handles Control_PlantOutput ports.
Note: If the Simulink model has labels defined for the input/output links, then these labels will replace
“In” and “Out” in the data structure described above. “In” and “Out” are the default names
used by Simulink in case the links are not named. In this scenario, you need to change the
first input variable name specified in the rtw api function template
CoSimAPI_SimulinkRTW_Update_U(api,model,input) into the one you specified.
For example, if you name the first input to be myIn instead of In1, you need to make the following
change to that function template:
double *u_ptr = (double *)&u.myIn;
to replace the original code:
double *u_ptr = (double *)&u.In1;
443 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-7006: Python UserSub for MotionSolve
In this tutorial, you will learn how to:
Use Python to make a user subroutine for MotionSolve. It is assumed that you are familiar with
Python and MotionSolve XML syntax.
Convert a model with six SFOSUBs, written in C, into a Python usersub.
Using scripting language such as Python gives you power with reduced complexity. These scripts are
interpreted and do not require compiling. Therefore, you do not need a building tool to ‘build’
subroutines. Furthermore, scripts are easier to read and understand, and can be used for faster
prototyping.
If you do not have much programming experience, writing scripts for user-subroutines is simpler than
writing C code. For a C user, the usage is even simpler. Besides following the language syntax of
Python, you only need to follow the rules to convert the C code into Python scripts.
For your reference, a sample set of Python user subroutines is provided with the installation at
<instllation_directory>\hwsolvers\motionsolve\usersub\py_src.
Rules for Written Python User Subroutines
It is easy to understand the usage for py_* utility functions from the usage of their c_* counterparts,
with the help of the following rules:
1. The output arguments should be moved to the left-hand-side.
c_datout(&istat);
becomes
istat = py_datout()
In C utility functions, the input and output arguments are combined in an argument list. In
Python, the arguments of the py_* utility functions are strictly the input arguments. All output
arguments should be moved to the left-side as return values of the function call.
2.
In C utility functions, any input or output array argument is generally followed by an integer
argument for the array size. In Python utility functions, the integer argument for the array size is
removed because it is not necessary.
ipar[0] = (int)par[0];
ipar[1] = (int)par[1];
c_sysfnc("DM", ipar, 2, &dm, &errflg);
simply becomes
[dm, errflg] = py_sysfnc("DM", [par[0],par[1]])
and
ipar[0] = (int)par[1];
ipar[1] = (int)par[0];
c_sysary("TDISP", ipar, 2, u1, &nstates, &errflg);
becomes
[u1, errflg] = py_sysary("TDISP", [par[1],par[0]])
Altair Engineering
MotionView 13.0 Tutorials 444
Proprietary Information of Altair Engineering
3.
Change the function name from c_* to py_*.
c_rcnvrt(sys1, coord1, sys2, coord2, &istate);
becomes
[coord2, istate] = py_rcnvrt(sys1, coord1, sys2)
Step 1: Convert C sub into Python sub.
1.
In this example, the model uses six SFOSUBs written in C code as shown below:
DLLFUNC void STDCALL SFOSUB (int *id, double *time, double *par,
int *npar, int *dflag, int *iflag, double *result)
{
// --- Add your local definitions here --------------------double vector[3],dm,vm;
int ipar[2], iord;
int errflg;
// --- Add your executable code here ----------------------int itype = (int)par[0];
iord = 0;
if (itype==50)
{
ipar[0] = (int)par[1];
ipar[1] = (int)par[2];
c_sysfnc("DM", ipar, 2, &dm, &errflg);
ipar[0] = (int)par[3];
ipar[1] = (int)par[4];
c_sysfnc("VM", ipar, 2, &vm, &errflg);
c_impact(dm, vm, par[5], par[6], par[7], par[8], par[9], iord,
vector, &errflg);
*result = vector[0];
}
}
2.
Following the rules specified in last section, the corresponding Python script is shown as:
def SFOSUB(id, time, par, npar, dflag, iflag):
[dm, errflg] = py_sysfnc("DM", [par[0],par[1]])
[vm, errflg] = py_sysfnc("VM", [par[2],par[3]])
[vector, errflg] = py_impact(dm, vm, par[4], par[5], par[6], par[7],
par[8], 0)
return vector[0]
3.
Besides the Python scripts, you also need to specify in the XML model the Python scripts that are
used in the user subroutine. MotionSolve provides this definition through two attributes in the
corresponding elements that uysrsub can be defined.
1. interpreter = "Python"
2. script_name = "script_name.py"
This combination replaces the attribute “usrsub_dll_name” in that element.
445 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
The following image shows the difference between using C user sub and Python user sub in this
example:
5.
In the original model, there are six Force_Scalar_TwoBody elements that use SFOSUB written in
C:
<Force_Scalar_TwoBody
id
= "30701"
type
= "Force"
i_marker_id
= "30701010"
j_marker_id
= "30701011"
usrsub_param_string =
"USER(50,30301010,30401010,30301010,30401010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "30801"
type
= "Force"
i_marker_id
= "30801010"
j_marker_id
= "30801011"
usrsub_param_string = "USER
(50,30301010,30501010,30301010,30501010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "30901"
type
= "Force"
i_marker_id
= "30901010"
Altair Engineering
MotionView 13.0 Tutorials 446
Proprietary Information of Altair Engineering
j_marker_id
= "30901011"
usrsub_param_string = "USER
(50,30301010,30601010,30301010,30601010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31001"
type
= "Force"
i_marker_id
= "31001010"
j_marker_id
= "31001011"
usrsub_param_string =
"USER(50,30401010,30501010,30401010,30501010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31101"
type
= "Force"
i_marker_id
= "31101010"
j_marker_id
= "31101011"
usrsub_param_string =
"USER(50,30401010,30601010,30401010,30601010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31201"
type
= "Force"
i_marker_id
= "31201010"
j_marker_id
= "31201011"
usrsub_param_string =
"USER(50,30501010,30601010,30501010,30601010,10,10,2.0,0.001,0.01)"
usrsub_dll_name
= "NULL"
usrsub_fnc_name
= "SFOSUB"
/>
6.
After changing C SFOSUB into Python SFOSUB, the XML content above is replaced with the
following:
<Force_Scalar_TwoBody
id
= "30701"
type
= "Force"
i_marker_id
= "30701010"
j_marker_id
= "30701011"
usrsub_param_string =
"USER(30301010,30401010,30301010,30401010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "30801"
type
= "Force"
i_marker_id
= "30801010"
j_marker_id
= "30801011"
447 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
usrsub_param_string = "USER
(30301010,30501010,30301010,30501010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "30901"
type
= "Force"
i_marker_id
= "30901010"
j_marker_id
= "30901011"
usrsub_param_string =
"USER(30301010,30601010,30301010,30601010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31001"
type
= "Force"
i_marker_id
= "31001010"
j_marker_id
= "31001011"
usrsub_param_string =
"USER(30401010,30501010,30401010,30501010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31101"
type
= "Force"
i_marker_id
= "31101010"
j_marker_id
= "31101011"
usrsub_param_string =
"USER(30401010,30601010,30401010,30601010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
<Force_Scalar_TwoBody
id
= "31201"
type
= "Force"
i_marker_id
= "31201010"
j_marker_id
= "31201011"
usrsub_param_string =
"USER(30501010,30601010,30501010,30601010,10,10,2.0,0.001,0.01)"
interpreter
= "Python"
script_name
= "script/sfosub.py"
usrsub_fnc_name
= "SFOSUB"
/>
7.
With these changes (C code into Python code and XML model change), the model with Python
user subroutines are ready to run with MotionSolve.
Altair Engineering
MotionView 13.0 Tutorials 448
Proprietary Information of Altair Engineering
MV-7007: Adding Friction to Joints
In this tutorial, you will learn more about:
The MotionSolve joint friction model.
How to model Joint friction in MotionView/MotionSolve.
How to review the friction results.
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.
1. When contacting surfaces are smoother and brought to closer proximity; molecular adhesive
forces forms resistance to motion.
2. When contact surfaces are highly rough to cause abrasion on sliding; surface roughness resists
motion.
3. When one surface in contact is relatively soft, plowing effect causes most of resistance.
Friction forces generated depend on:
Surface contact geometry and topology
Properties of the bulk and surface materials
Displacement and relative velocity
Lubrication
Friction is highly non-linear and dependents on system states like stiction regime, transition regime
and sliding (or) dynamic regime.
The three characteristics of a friction function
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.
449 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Dynamics of friction
Friction-velocity relation or damping characteristics of friction will aid in dampening vibrations. There
are other behaviors of friction such as pre-sliding and hydrodynamic effects of lubrications during
dynamic simulations. Resistant forces from the above mentioned effects need consideration in design
of drive systems and high-precision servo mechanisms. So, it’s important to model friction accurately
to capture system dynamics.
Joint friction
Friction in joint depends on its geometry. MotionSolve uses an analytical model to represent friction
for different joints based on geometry, preloads, torque and lubrication.
Characterizing joint friction using LuGre friction model
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.
The Bristle model for friction
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.
This tutorial uses an experimental model of a “block sliding on a table” to demonstrate friction forces
under stick-slip condition and frequency dependency of friction forces.
Altair Engineering
MotionView 13.0 Tutorials 450
Proprietary Information of Altair Engineering
Exercise
Copy the SlidingTable.mdl file from <Install_directory>\tutorials\mv_hv_hg\mbd_modeling
\motionsolve 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.
Step 1: Adding Joint Friction.
1.
From the Project Browser, browse to the Joints folder and select Follower Translation Joint.
2.
From the Joints panel, go to the Friction Properties tab.
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.
451 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
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
6.
Default properties of bristle are appropriate with units N, mm, second.
Leave all the LuGre parameters at their default values.
Step 2: Adding output requests for friction force.
In this step you will create an output to measure the friction forces on the Follower Translation Joint.
1.
Right click the Output icon
from General MDL Entity Tool bar.
The Add Output dialog is displayed.
2.
Change the Label to Friction_Force.
Altair Engineering
MotionView 13.0 Tutorials 452
Proprietary Information of Altair Engineering
3.
Change the Variable to o_friction.
4.
Click OK to add output request.
5.
From the Properties tab, select the output type as Expressions.
6.
Click in the F2 expression field.
7.
Click on the
button.
The Expression Builder dialog is displayed.
453 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8.
9.
Populate the Expression Builder with the FRICTION function expression as:
`FRICTION({j_contact.id},1)`.
Follower Translation Joint ID
= {j_contact.id},
Fx component
=1
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.
ID
The ID of the Joint.
comp
The force component. Currently, a range of 1-18 is supported.
1 = Friction force FX along the x-axis of the J marker of the joint.
2 = Friction force FY along the y-axis of the J marker of the joint.
3 = Friction force FZ along the z-axis of the J marker of the joint.
4 = Friction torque TX along the x-axis of the J marker of the joint.
5 = Friction torque TY along the y-axis of the J marker of the joint.
6 = Friction torque TZ along the z-axis of the J marker of the joint.
Altair Engineering
MotionView 13.0 Tutorials 454
Proprietary Information of Altair Engineering
Step 3: Adding output request for sliding velocity.
Friction forces are characterized with respect to the relative velocity between bodies under contact.
So, you will create an output request to measure Follower body velocity.
1.
Right click the Outputs icon
on the General MDL Entity toolbar.
The Add Output dialog is displayed.
2.
For Label, enter Follower_Velocity.
3.
For Variable, enter o_velocity.
4.
Click OK to add the output request.
5.
From the Properties tab, select the output type as Velocity.
6.
Select Entity from the drop-down menu below Velocity.
7.
Select entity type to be
8.
Leave
.
to be Global Frame.
455 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 4: Add a constant velocity motion to the leader translation joint.
In this next step we will add constant velocity to the Leader Body. Follower body connected by a
linear spring will observe a stick-slip motion due to the friction forces.
1.
Right click the Motion icon
from the Constraint toolbar.
The Add Motion or MotionPair dialog is displayed.
2.
For Label, enter Stick Slip.
3.
For Variable, enter mot_leader.
4.
Click OK to add motion.
5.
From the Connectivity tab:
Select On Joint from the drop-down menu for Define motion.
Select Leader Translation Joint for
.
Select Velocity from the drop-down for Property.
6.
From the Properties tab:
Select Linear from the drop-down menu for Define by.
Enter 100 for Value.
Altair Engineering
MotionView 13.0 Tutorials 456
Proprietary Information of Altair Engineering
Step 5: Simulate the model.
1.
Click on the icon
to check the model.
2.
Switch to the Run panel by clicking on the Run icon
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 and leave the other values at their default setttings.
6.
Click on the Run button to run the simulation.
Step 6: Viewing animation and plots.
Once the run is complete, the other buttons on the right side of the panel are activated.
1.
Click on the Animate button to view the animation.
This invokes HyperView and loads the Stick_Slip.h3d animation file.
2.
Next, click on the Plot button to view the plots.
This invokes HyperGraph and loads the Stick_Slip.abf results file.
3.
Click on the HyperGraph window to activate it.
457 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
Plot Follower velocity versus Time.
Select X-axis Data Type as Time.
Select the following Y-axis data:
Y Type
Marker Velocity
Y Request
Follower_Velocity - (on Follower)
Y Component
VX
Note
5.
Scale velocity value to m/sec from mm/sec.
Plot Friction force versus Time.
Select X-axis Data Type as Time.
Select the following Y-axis data:
Y Type
Expression
Y Request
Friction_Force
Y Component
F4
Animation and Plot windows
6.
To start the animation, click the Start/Pause Animation icon
Altair Engineering
on the toolbar.
MotionView 13.0 Tutorials 458
Proprietary Information of Altair Engineering
7.
The Stick_Slip motion is clearly observed from the animation and plots.
Velocity and Friction Force on Time Scale
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.
Break away force
= mu static x Normal Load
= 0.15x1x9.81
= 1.47 Newton.
Step 7: Adding time varying velocity to follower translation joint.
In this step you will add “Time varying velocity” to Follower translation joint. Velocity is varied
between 1.1 mm/sec to 3mm/sec at different frequencies (1 rad/sec, 10 rad/sec & 25rad/sec) to
observe Hysteresis in friction.
1.
Right-click the Motions icon
on the Constraint toolbar.
The Add Motion or MotionPair dialog is displayed.
2.
For Label, enter Hysteresis.
459 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
For Variable, enter mot_freq_varying.
4.
Click OK to add motion.
5.
From the Connectivity tab:
Select On Joint from the drop-down menu for Define motion.
Select Follower Translation Joint for
.
Select Velocity from the drop-down for Property.
Altair Engineering
MotionView 13.0 Tutorials 460
Proprietary Information of Altair Engineering
6.
From the Properties tab:
Select Expression from the drop-down menu for Define by.
Click on the
button.
The Expression Builder is displayed.
Populate the Expression Builder with the following expression: `1.1
+1.9*ABS(sin(PI*(time)))`
This expression varies velocity from 1.1 mm/sec to 3 mm/sec at a frequency of 1 rad/sec.
Velocity variation
Note
Multiply `time` with 10, 25 will vary velocity at frequencies 10rad/sec and 25 rad/sec
respectively.
461 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Deactivate motion on the Leader Translation Joint created in earlier steps.
Step 8: Simulate model for varying velocities at different frequencies.
1.
Click on the
icon to check the model.
2.
Switch to the Run panel by clicking on the Run icon
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.
5.
Click on the Run button to run the model.
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:
Frequency
Expression
10 rad/sec
`1.1+1.9*ABS(sin(PI*(10*time)))` Hysteresis_10radpersec.xml 0.3
25 rad/sec
`1.1+1.9*ABS(sin(PI*(25*time)))` Hysteresis_25radpersec.xml 0.12
Altair Engineering
File name
End Time
(sec)
MotionView 13.0 Tutorials 462
Proprietary Information of Altair Engineering
Step 9: Plotting Hysteresis curves.
1.
Select HyperGraph by clicking in the window.
2.
Load results for the 1 rad/sec frequency.
Click on the Open Data File icon
.
Browse to the working directory and select the Hysteresis_1radpersec.abf file.
3.
Plot Follower velocity versus Time.
Select X-axis Data Type as Time.
Select the following for the Y-axis data:
Y Type
Marker Velocity
Y Request
Follower_Velocity- (on Follower)
Y Component
VX
463 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
4.
Plot Friction force versus Time.
Select X-axis Data Type as Time.
Select the following for the Y-axis data:
Y Type
Expression
Y Request
Friction_Force
Y Component
F4
Follower Velocity and Friction Force
5.
Plotting Friction Hysteresis curve (Friction Force versus Velocity).
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.).
Click on the Define Curves
icon on the Curves toolbar.
Click on the Add button to add a new curve.
Altair Engineering
MotionView 13.0 Tutorials 464
Proprietary Information of Altair Engineering
Rename Curve3 as 1rad/sec.
For the X and Y data, select the Source type as Math.
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)].
465 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Click the Apply button.
6.
Similarly, plot hysteresis curves for frequencies 10rad/sec (Hysteresis_10radpersec.abf) and
25 rad/sec (Hysteresis_10radpersec.abf) following Steps 3 -5 above.
Hysteresis curves at different frequencies
The velocity variation with higher frequency will have widest hysteresis loop.
Altair Engineering
MotionView 13.0 Tutorials 466
Proprietary Information of Altair Engineering
Working with External Codes
MV-4000: Eigen Analysis using ADAMS/Linear
MV-4010: Working with ADAMS
MV-4020: Solver Neutral Modeling
MV-4030: Flexible Bodies for MotionView with Abaqus
467 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-4000: Eigen Analysis using ADAMS/Linear
In this tutorial, you will learn how to:
Perform Static+Linear analysis on a MotionView model using ADAMS/Linear
View the Static+Linear analysis results from ADAMS/Linear analysis using MotionView
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:
Obtaining modal results with MotionSolve or ADAMS/Linear
Altair Engineering
MotionView 13.0 Tutorials 468
Proprietary Information of Altair Engineering
Step 1: Obtaining Modal Results with ADAMS/Linear.
1.
Start a new MotionView session.
2.
Click the Open Model icon,
, on the Standard toolbar.
OR
From the File menu select Open > Model.
3.
From the Open Model dialog, locate and select halfcar_lin.mdl located in
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\externalcodes.
4.
Click the Open button to load the model.
5.
From the SolverMode menu, select ADAMS.
6.
Click the Forms icon,
7.
Verify that the Solution type is set to Linear/Eig.
, 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.
8.
Click the Run icon on the Model-Main toolbar.
!
9.
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.
From the Script combo box, change the script to Altair Executable.
10. Click Run to start the simulation.
Step 2: Viewing ADAMS/Linear Modal Results.
1.
Copy the files halfcar_lin_adams.gra and halfcar_lin_adams.res located in
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\externalcodes to <Working
directory>.
2.
Start a new MotionView session.
3.
Select HyperView from the Select Application list.
4.
Click the Load Results icon,
, from the Standard toolbar.
The Load model and results panel is displayed.
5.
Click the Load model file browser and select the file halfcar_lin_adams.gra, located in
<Working directory>.
469 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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).
While an ADAMS Linear analysis may be performed multiple times through a transient simulation, in
this example, the linear analysis was performed only at time step = 0.0.
10. Use the Simulation drop-down menu to select Mode 3.
11. Switch the view to Top
.
12. Click the Start/Pause Animation icon,
, to start transient animation.
The model cycles through its mode shapes/frequencies.
13. Click the Start/Pause Animation icon again,
Altair Engineering
, to stop transient animation.
MotionView 13.0 Tutorials 470
Proprietary Information of Altair Engineering
14. Switch to Modal animation,
Note
.
To visualize a single mode while using the ADAMS/Solver, the Modal icon is used,
For MotionSolve the Start/Stop Animation icon is used,
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.
16. Click one of the remaining windows to make it active.
17. From the Load model panel, click Apply.
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.
Linear modal animation – ADAMS/Linear results
471 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
Step 3: Plotting ADAMS/Linear Results for Eigenvalues in the Complex Plane.
A file named halfcar_lin_adams.eig_inf is generated in the directory <working directory> where
the gra and res files are located following an ADAMS/Linear run. The extension eig_inf denotes
eigenvalue information.
In this exercise, you will use this file to plot the model eigenvalues in the complex plane.
Eigenvalues in the complex plane
Altair Engineering
MotionView 13.0 Tutorials 472
Proprietary Information of Altair Engineering
MV-4010: Working with ADAMS
MotionView-MotionSolve-ADAMS process flow
MotionView-MotionSolve can work very closely with ADAMS.
Existing ADAMS users can switch to MotionView or MotionSolve in their workflow keeping the
rest of the flow as it is.
Following are the different ways one can use MotionView or MotionSolve with ADAMS.
Import a model built in ADAMS preprocessor into MotionView preprocessor; solve it with
MotionSolve and post process the results using MotionView.
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.
Post process the ADAMS solver results in MotionView.
Exercise
Step1: Loading an .adm File into MotionView’s MBD Model Window.
1.
Copy the file quick_return.adm file from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\externalcodes to your
current <working directory>.
2.
Start a new MotionView session by selecting New > Session from the File menu.
473 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
3.
Make sure the application is MBD model.
4.
From the File menu, select Import > Solver Deck.
OR
Click the Import Solver Deck button
Note
on the Standard toolbar.
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.
Unsupported ADAMS statements template
7.
Use the Project Browser to examine the model tree.
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.
Altair Engineering
MotionView 13.0 Tutorials 474
Proprietary Information of Altair Engineering
Step2: Running an ADAMS File with MotionSolve.
In step 1, we learned how to import an ADAMS (.adm) file into MotionView. This allows the user to
modify the model once it is in the MotionView environment. Step 2, shows how a user can run an
ADAMS model directly in MotionSolve.
Copy the ADAMS input files quick_return.adm and quick_return.acf from the
<installation_directory>\tutorials\mv_hv_hg\externalcodes to your current <working
directory>.
1.
Invoke MotionSolve.
2.
Browse for the quick_return.acf file in your <working directory>.
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.
4.
You may view the results in HyperView/HyperGraph.
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.
Step 3: Running an MotionView MBD model with ADAMS solver.
In Step 1 and Step 2 we learned how to run an ADAMS model with MotionSolve. Step 3 focuses on
running a model built in MotionView with the ADAMS solver. If you want to run the ADAMS solver from
the MotionView interface, please refer to Tip Trick #213 available on Altair’s website.
1.
Copy the file V_Engine.mdl from
<installation_directory>\tutorials\mv_hv_hg\externalcodes to your current <working
directory>.
2.
Invoke MotionView.
3.
Load the model in MotionView.
4.
From the menu bar select SolverMode as ADAMS.
475 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
5.
From the Project Browser, locate the Datasets folder and select Solution Options as the
dataset.
These datasets are used to control the solver run.
6.
Change the end time to 3 seconds.
7.
Right-click on ADAMS Model in the Project Browser and select Model > Add General MDL
Entity > Template, or click on Templates icon
template.
Note
8.
on the Model-General toolbar, to add a
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 OptionACF file" to understand how values from datasets are passed to an acf file.
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
.
11. Check the model.
12. If there are no errors, run the model directly.
Altair Engineering
MotionView 13.0 Tutorials 476
Proprietary Information of Altair Engineering
MV-4020: Solver Neutral Modeling
MotionView provides a solver-neutral pre- and post- processing environment to facilitate working with
other MBD solvers.
MotionView has the following solver interfaces:
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 from
<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\externalcodes to your <working
directory>.
Exercise
Step 1: Loading a Solver-Neutral Model and Running Different Solvers.
1.
Start a new MotionView session.
2.
Copy the folder named solver_neutral from <installation_directory>\tutorials\mv_hv_hg
\mbd_modeling\externalcodes to <working directory>.
3.
Load the file model.mdl.
4.
From the SolverMode menu, confirm that MotionSolve is selected.
5.
Click the RUN icon,
6.
From the Main tab, specify your output filename as <working directory>\ms.xml.
, on the Model-Main toolbar.
477 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
7.
Select the Simulation type: Transient.
8.
Click Run.
MotionSolve is launched and completes the run.
9.
From the SolverMode menu, select ADAMS.
10. From the Project Browser, under the Data Sets folder select Solution Options.
11. Review the Solution Options dataset.
12. You can enter the simulation parameters for the ADAMS solver into this table.
13. Click the RUN icon,
, on the toolbar.
14. Specify the output filename as <working directory>\adams.adm.
!
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.
16. Click the RUN button to start the simulation.
The ADAMS solver is launched and completes the run.
Step 2: Comparing Solver Animations.
1.
Click the Add Page icon,
2.
Select HyperView
3.
Click the Page Layout,
layout,
, on the Page Controls toolbar to add a new page to your session.
from the Select Application drop-down menu.
, icon on the toolbar and select the three horizontal windows
.
Altair Engineering
MotionView 13.0 Tutorials 478
Proprietary Information of Altair Engineering
4.
5.
Load the following model and results files into the three windows:
Window 1
Window 2
Model
ms.h3d
adams.gra
Results
ms.h3d
adams.gra
Click the Start/Pause Animation icon,
, on the Animation toolbar to animate the model.
Notice that if the same solver parameters are chosen, the results from different solvers are insync.
6.
Click the Start/Pause Animation icon again,
, to stop/pause the animation.
479 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
MV-4030: Flexible Bodies for MotionView with Abaqus
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)
The results of the Abaqus solver can be post processed in HyperView.
Here is the flow of flexible body creation and integration:
Integrating Abaqus substructure or FE model in MotionView
Altair Engineering
MotionView 13.0 Tutorials 480
Proprietary Information of Altair Engineering
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.
Copy the folder "abaqus" from
<installation_directory>/tutorials/mv_hv_hg/mbd_modeling/externalcodes to your <working
directory>.
Step 1: Creating the Flexible Body Substructure.
First, you will need to create the flexible body. This stage must be completed in Abaqus, independent
of MotionView.
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:
Use standard elements to define the structure
Assign material and geometric properties to the elements
Define the retained degrees of freedom. The retained nodes will connect the substructure to
the rest of the model
Substructures must be created in one analysis and used in a subsequent analysis
The Abaqus *.inp deck of a substructure generation analysis should look something like this:
*NODE...
*ELEMENT...
*MATERIAL...
*STEP
*FREQUENCY, EIGENSOL=LANCZOS
20
*BOUNDARY
RETAINED_NODES, 1, 6
*END STEP
*STEP
*SUBSTRUCTURE GENERATE
TYPE=z2, LIBRAYR=carm_right, MASS MATRIX=YES, OVERWRITE, RECOVERY MATRIX=YES
*RETAINED NODAL DOFS, SORTED=NO
RETAINED_NODESET,1,6
*RETAINED EIGENMODES, GENERATE
1,20,1
*END STEP
This is just a sample deck. For detailed syntax you may have to look up Abaqus documentation.
481 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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 postprocessing step of this tutorial are provided.
Once the substructure is generated you should be ready to integrate it in your MBD model.
Step 2: Integrating a Flexible Body into the MBD System.
Once you complete the substructure generation step in Abaqus, you should have the <substructurename>.sup file. This .sup along with the original <substructure-name>.inp file will be used to
integrate your flexible body into MotionView.
1.
Start a new MotionView session and load the file sla_abaqus.mdl, located in <working
directory>.
2.
Make sure that the SolverMode is ABAQUS.
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.
5.
Click Yes in the question dialog.
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.
Altair Engineering
MotionView 13.0 Tutorials 482
Proprietary Information of Altair Engineering
7.
Using the Graphic file browser, select carm_left.h3d from your working directory.
Properties tab
Notice that the Inp file field is automatically populated by MotionView.
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 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… .
The Nodes dialog is displayed.
483 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
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.
10. Close the Nodes dialog.
Altair Engineering
MotionView 13.0 Tutorials 484
Proprietary Information of Altair Engineering
11. Repeat steps 6 through 9 to integrate the right side flexible body carm_right.inp in your model.
Your model should look like the image below:
13. From the Tools menu, select Check Model to check your complete MBD model for errors.
Step 3: Running MBD Systems in ABAQUS.
The flexible bodies are now fully integrated in your model. Now you will set up the ABAQUS solver run.
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.
485 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
2. Click the expansion button,
Note
, on the panel and read through the template.
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.
The remaining text of the template is written according to the position specified. In this
case there are two substructure paths included for the two flexible bodies. You will need
to add or delete such paths depending on the number of flexible bodies integrated in your
model.
{MODEL.sys_frnt_susp.b_lca.l.idstring} is the parameterized path to grab the
element ID number assigned to the left arm substructure.
Now your model is complete and ready to run in ABAQUS solver.
3.
Close the Abaqus output template.
4.
From the Project Browser, under the Data Sets folder select ABAQUS Solution Options.
5.
From the File menu, select Export > Solver Deck.
Altair Engineering
MotionView 13.0 Tutorials 486
Proprietary Information of Altair Engineering
6.
Save your model as an MDL file named sla_flex.mdl in the working directory.
7.
Save your model as sla_flex.inp file in your 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.
Step 4: Post-processing Abaqus Results.
You will now load the results of the Abaqus run in the Animation window.
Note
MotionView has FIL2MRF translator residing in Tool..Custom wizards. Using this will allow you
to translate an Abaqus fil file to an mrf file. In this exercise the mrf file is provided to you.
The carm_left.odb and carm_right.odb files needed in this step will be generated once the
model successfully runs in Abaqus.
1.
Click the Add Page icon,
, on the toolbar to add a new page to your session.
2.
Select HyperView
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.
5.
Activate the Overlay checkbox and click Apply.
6.
Repeat the steps 4 and 5 to also overlay carm_right.odb file on the same model.
from the Select window mode drop-down menu.
Notice that the substructures are overlayed on your model.
7.
Use the Entity Attributes panel,
, to turn off the graphics of the rigid control arm.
487 MotionView 13.0 Tutorials
Proprietary Information of Altair Engineering
Altair Engineering
8.
Click the Start/Pause Animation icon,
9. Click the Start/Pause Animation icon again,
Altair Engineering
, on the Animation toolbar to animate the model.
, to stop/pause the animation.
MotionView 13.0 Tutorials 488
Proprietary Information of Altair Engineering
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement