ModelicaTutorial Slides PeterFritzson AdrianPop MODPROD2020
ModelicaTutorial Slides PeterFritzson AdrianPop MODPROD2020
Slides
Based on book and lecture notes by Peter Fritzson
Contributions 2004-2005 by Emma Larsdotter Nilsson, Peter Bunus
Contributions 2006-2018 by Adrian Pop and Peter Fritzson
Contributions 2009 by David Broman, Peter Fritzson, Jan Brugård, and
Mohsen Torabzadeh-Tari
Contributions 2010 by Peter Fritzson
Contributions 2011 by Peter F., Mohsen T,. Adeel Asghar,
Contributions 2012-2018 by Peter Fritzson, Lena Buffoni, Mahder
Gebremedhin, Bernhard Thiele, Lennart Ochel
Contributions 2019-2020 by Peter Fritzson, Arunkumar Palanisamy, Bernt
Lie, Adrian Pop
2020-02-04
Tutorial Based on Book, December 2014
Download OpenModelica Software
Peter Fritzson
Principles of Object Oriented
Modeling and Simulation with
Modelica 3.3
A Cyber-Physical Approach
• OpenModelica
• www.openmodelica.org
• Modelica Association
• www.modelica.org
2 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Introductory
Modelica Book
September 2011
232 pages
Translations
available in
Chinese,
Japanese,
Spanish
Wiley
IEEE Press
For Introductory
Short Courses on
Object Oriented
Mathematical Modeling
3 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Acknowledgements, Usage, Copyrights
• If you want to use the Powerpoint version of these slides in
your own course, send an email to: [email protected]
• Thanks to Emma Larsdotter Nilsson, Peter Bunus, David
Broman, Jan Brugård, Mohsen-Torabzadeh-Tari, Adeel
Asghar, Lena Buffoni, for contributions to these slides.
• Most examples and figures in this tutorial are adapted with
permission from Peter Fritzson’s book ”Principles of Object
Oriented Modeling and Simulation with Modelica 3.3”,
copyright Wiley-IEEE Press
• Some examples and figures reproduced with permission
from Modelica Association, Martin Otter, Hilding Elmqvist,
Wolfram MathCore, Siemens
• Modelica Association: www.modelica.org
• OpenModelica: www.openmodelica.org
4 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Outline
Part I Part II
Introduction to Modelica and a Modelica environments
demo example
5 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Software Installation - Windows
6 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Software Installation – Linux (requires internet connection)
• Go to
https://openmodelica.org/index.php/download/down
load-linux and follow the instructions.
7 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Software Installation – MAC (requires internet connection)
• Go to
https://openmodelica.org/index.php/download/down
load-mac and follow the instructions or follow the
instructions written below.
• The installation uses MacPorts. After setting up a
MacPorts installation, run the following commands
on the terminal (as root):
• echo rsync://build.openmodelica.org/macports/ >>
/opt/local/etc/macports/sources.conf # assuming you installed into /opt/local
• port selfupdate
• port install openmodelica-devel
8 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Software Installation for OMSens – Python Anaconda
USB INSTALLATION
9 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part I
10 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Background: Stored Knowledge
11 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Background: The Form – Equations
12 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Modelica?
• Robotics
• Automotive
• Aircrafts
• Satellites
• Power plants
• Systems biology
13 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Modelica?
14 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Modelica?
16 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Acausal Modeling
• Multi-Domain Modeling
• Visual acausal hierarchical component modeling
• Typed declarative equation-based textual language
• Hybrid modeling and simulation
18 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Special about Modelica?
Cyber
19 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Special about Modelica?
Acausal model
(Modelica)
Causal
block-based
model
(Simulink)
20 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Special about Modelica?
qddRef
qdRef qRef k1 r3Control
r3Motor r3Drive1
cut joint
tn
axis6
Modeling
1 1
i 1
S S
qd axis5
q: angle
qd: angular velocity
qdRef Kd qdd: angular acceleration S
0.03 rel
Jmotor=J joint=0
spring=c axis4
S
qRef pSum Kv sum w Sum rate2 rate3 iRef gear=i
fric=Rv0
+1 b(s) 340.8
0.3
- +1 - a(s) S
axis3
Srel = n*transpose(n)+(identity(3)-
Rd2=100 n*transpose(n))*cos(q)- axis1
skew(n)*sin(q); -
Ri=10
-
-
wrela = n*qd; + +
Sb = Sa*transpose(Srel);
Vs
Rd4=100
r0b = r0a; emf
vb = Srel*va; iRef
Rd3=100
g3
wb = Srel*(wa + wrela); y
ab = Srel*aa;
g1 x
zb = Srel*(za + zrela + cross(wa, wrela)); inertial
hall2
hall1 w r
21 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Special about Modelica?
22 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What is Special about Modelica?
Continuous-time
Discrete-time
Clocked discrete-time
Typed
Declarative time
Hybrid
Equation-based Modeling
Textual Language
23 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica – Faster Development, Lower Maintenance
than with Traditional Tools
Causality
Systems
Derivation
Definition Modeling of
Subsystems (manual derivation of
System
Decomposition input/output relations) Implementation Simulation
Proprietary
Code
Block Diagram
Modelica
24 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica vs Simulink Block Oriented Modeling
Simple Electrical Model
Modelica: Keeps the Simulink:
Physical model – physical Signal-flow model – hard to
easy to understand structure understand
R1=10 R2=100
sum2
p
n n +1
+1
AC=220
n n
p
G
25 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Graphical Modeling - Using Drag and Drop Composition
26 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Graphical Modeling with OpenModelica Environment
27 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Multi-Domain (Electro-Mechanical) Modelica Model
28 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Corresponding DCMotor Model Equations
The following equations are automatically derived from the Modelica model:
29 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Model Translation Process to Hybrid DAE to Code
Modelica
Graphical Editor Modelica Modelica
Modelica Model Source code
Textual Editor Modelica Model
Frontend Translator
Modeling Flat model Hybrid DAE
Environment Analyzer
"Middle-end"
Sorted equations
Optimizer
Optimized sorted
equations
Backend Code generator
C Code
C Compiler
Executable
Simulation
30 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica in Power Generation
GTX Gas Turbine Power Cutoff Mechanism
Hello
Developed
by MathCore
for Siemens
Courtesy of Siemens Industrial Turbomachinery AB
31 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica in Automotive Industry
32 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica in Avionics
33 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica in Biomechanics
34 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Application of Modelica in Robotics Models
Real-time Training Simulator for Flight, Driving
35 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
DLR Real-time Training Simulator Movie Demo
36 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Combined-Cycle Power Plant
Plant model – system level
• GT unit, ST unit, Drum
boilers unit and HRSG units,
connected by thermo-fluid
ports and by signal buses
• Low-temperature parts
(condenser, feedwater
system, LP circuits) are
represented by trivial
boundary conditions.
37 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Spacecraft Dynamics Library
Formation flying on elliptical orbits
38 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Large-scale ABB OpenModelica Application
Generate code for controlling 7.5 to 10% of German Power Production
40 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Most important challenge
for humanity -
Develop a sustainable society!
41 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
System Dynamics – World Society Simulation
Limits to Material Growth; Population, Energy and Material flows
vs
Bacteria
on a
finite
substrate
43 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
World3 Simulations with Different Start Years
for Sustainable Policies – Collapse if starting too late
44 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
45 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
How the world could be in 80-100 years Business-as-usual
at a global warming of 4 degrees scenario, IPCC
Cities, agriculture
Uninhabitable desert
Uninhabitable due
to extreme weather
Flooded
Massive migration to
to northern Europe,
Russia, and Canada
Example Emissions
CO2e / person
- Earth can handle 2 ton/yr
- Flight Spain – 1 ton
- Flight Canaryisl – 2 ton
Uninhabitable - Flight Thailand – 4 ton
47 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Example Electric Cars
Can be charged by electricity from own solar panels
48 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
What Can You Do?
More Train Travel – Less Air Travel
49 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Small rectangles – surface needed
for 100% solar energy for humanity
50 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Solar Energy PhotoVoltaics Growth Trends
Almost
Exponential
worldwide
Growth of
Photovoltaics
2006 – 2018
IEA PVPS
TRENDS IN
PHOTOVOLTAIC 2018 2.5% solar
APPLICATIONS
2019
100% of global electricity
production year 2030 if
strong exponential growth
continues
51 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Sustainable Society Necessary for Human Survival
Almost Sustainable
• India, recently 1.4 ton C02/person/year
• Healthy vegetarian food
• Small-scale agriculture
• Small-scale shops
• Simpler life-style (Mahatma Gandhi)
Non-sustainable
• USA 17 ton CO2, Sweden 7 ton CO2/yr
• High meat consumption (1 kg beef uses ca
4000 L water for production)
• Hamburgers, unhealthy , includes beef
• Energy-consuming mechanized agriculture Gandhi – role model for
• Transport dependent shopping centres future less materialistic
life style
• Stressful materialistic lifestyle
52 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Brief Modelica History
• First Modelica design group meeting in fall 1996
• International group of people with expert knowledge in both language design
and physical modeling
• Industry and academia
• Modelica Versions
• 1.0 released September 1997
• 2.0 released March 2002
• 2.2 released March 2005
• 3.0 released September 2007
• 3.1 released May 2009
• 3.2 released March 2010
• 3.3 released May 2012
• 3.2 rev 2 released November 2013
• 3.3 rev 1 released July 2014
• 3.4 released April 2017
• Modelica Association established 2000 in Linköping
• Open, non-profit organization
53 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Conferences
• The 1st International Modelica conference October, 2000
• The 2nd International Modelica conference March 18-19, 2002
• The 3rd International Modelica conference November 5-6, 2003 in Linköping, Sweden
• The 4th International Modelica conference March 6-7, 2005 in Hamburg, Germany
• The 5th International Modelica conference September 4-5, 2006 in Vienna, Austria
• The 6th International Modelica conference March 3-4, 2008 in Bielefeld, Germany
• The 7th International Modelica conference Sept 21-22, 2009 in Como, Italy
• The 8th International Modelica conference March 20-22, 2011 in Dresden, Germany
• The 9th International Modelica conference Sept 3-5, 2012 in Munich, Germany
• The 10th International Modelica conference March 10-12, 2014 in Lund, Sweden
• The 11th International Modelica conference Sept 21-23, 2015 in Versailles, Paris
• The 12th International Modelica conference May 15-17, 2017 in Prague, Czech Rep
• The 13th International Modelica conference March 4-6, 2019, Regensburg, Germany
• Also: Japanese Modelica conferences 2016, 2017, 2018, 2020
• Also: US Modelica conference 2018, 2020
• Coming: 14th International Modelica conference May, 2021, Linköping, Sweden
54 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part I
Hands-on graphical modeling
(15 minutes)
55 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part I – Basic Graphical Modeling
• (See instructions on next two pages)
• Start the OMEdit editor (part of OpenModelica)
• Draw the RLCircuit
• Simulate
R1 L
R=10
R=100 L=1
L=0.1
AC
56 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part I – OMEdit Instructions (Part I)
• Start OMEdit from the Program menu under OpenModelica
• Go to File menu and choose New Modelica Class, and then select
Model.
• E.g. write RLCircuit as the model name.
• For more information on how to use OMEdit, go to Help and choose User
Manual or press F1.
57 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part I – OMEdit Instructions (Part II)
• For the RLCircuit model, browse the Modelica standard library and add the
following component models:
• Add Ground, Inductor and Resistor component models from
Modelica.Electrical.Analog.Basic package.
• Add SineVoltage component model from Modelica.Electrical.Analog.Sources package.
• Make the corresponding connections between the component models as
shown in the previous slide.
• To draw a connection line: first single-click on a connector box; then start
drawing while keeping the mouse button down; after drawing a little you can
release the mouse button and continue drawing.
• Simulate the model
• Go to the Simulation menu and choose simulate or click on the simulate button
in the toolbar.
• Plot the instance variables
• Once the simulation is completed, a plot variables list will appear on the right side.
Select the variable that you want to plot.
58 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part II
59 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Dymola
60 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Wolfram System Modeler – Wolfram MathCore
• Wolfram Research
• USA, Sweden
• General purpose
• Mathematica integration
• www.wolfram.com
• www.mathcore.com
Mathematica
Simulation and
analysis
Courtesy Car model graphical view
Wolfram
Research
61 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Simulation X
62 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
MapleSim
• Maplesoft
• Canada
• Integrated with Maple
• www.maplesoft.com
63 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelon
• Modelon
• Sweden and International
• Library Suite
• Creator Suite with Optimica Compiler Toolbox
and WAMS model editor
• www.modelon.com
64 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The OpenModelica Environment
www.OpenModelica.org
66 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The OpenModelica Open Source Environment
www.openmodelica.org
• Advanced Interactive Modelica compiler (OMC) • OMEdit graphic Editor
• Supports most of the Modelica Language • OMDebugger for equations
• Modelica, Python, Julia scripting • OMOptim optimization tool
• OM Dynamic optimizer collocation
• OMSimulator – FMI Simulation/Co-simulation
• ModelicaML UML Profile
• Basic environment for creating models • MetaModelica extension
• OMShell – an interactive command handler • ParModelica extension
• OMNotebook – a literate programming notebook
• MDT – an advanced textual environment in Eclipse
67 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY 67
OSMC – International Consortium for Open Source
Model-based Development Tools, 51 members Dec 2019
Industrial members
Founded Dec 4, 2007 • ABB AB, Sweden • RTE France, Paris, France
• Bosch Rexroth AG, Germany • Saab AB, Linköping, Sweden
Open-source community services • CDAC Centre, Kerala, India • SKF, Göteborg, Sweden
• Creative Connections, Prague • SmartFluidPower, Italy,
• Website and Support Forum • DHI, Aarhus, Denmark • TLK Thermo, Germany
• Dynamica s.r.l., Cremona, Italy • Siemens Turbo, Sweden
• Version-controlled source base • EDF, Paris, France • Sozhou Tongyuan, China
• Equa Simulation AB, Sweden • SRON Space Ins Netherlands
• Bug database • Fraunhofer IWES, Bremerhaven • Talent Swarm, Spain
• VTI, Linköping, Sweden
• Development courses • INRIA, Rennes, France
• VTT, Finland
• ISID Dentsu, Tokyo, Japan
• www.openmodelica.org • Maplesoft, Canada
68 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Build System with Regression Testing
69 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The OpenModelica Tool Architecture
OMWebbook
OMNotebook
Interactive OMPython OMJulia OMMatlab
Interactive
Notebooks Python Julia Matlab
Notebooks
Scripting Scripting Scripting
OMC
ModelicaML
Interactive Compiler OMShell
UML/Modelica
Server Modelica
and requirement
verification Scripting
70 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Spoken-Tutorial step-by-step OpenModelica and Modelica
Tutorial Using OMEdit. Link from www.openmodelica.org
https://spoken-tutorial.org/tutorial-search/?search_foss=OpenModelica&search_language=English
71 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMNotebook Electronic Notebook with DrModelica
• Primarily for teaching
• Interactive electronic book
• Platform independent
Commands:
• Shift-return (evaluates a cell)
• File Menu (open, close, etc.)
• Text Cursor (vertical), Cell
cursor (horizontal)
• Cell types: text cells &
executable code cells
• Copy, paste, group cells
• Copy, paste, group text
• Command Completion (shift-
tab)
72 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMnotebook Interactive Electronic Notebook
Here Used for Teaching Control Theory
73 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Mathematical Typesetting in OMNotebook
and OMWebbook
OMNotebook supports Latex formatting for mathematics
Contents in
OMWebbook
Generated from
OMNotebook
Latex instructions
can be hidden by
double clicking the
Cell in tree view
76 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica Environment Demo
77 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica MDT – Eclipse Plugin
• Browsing of packages, classes, functions
• Automatic building of executables;
separate compilation
• Syntax highlighting
• Code completion,
Code query support for developers
• Automatic Indentation
• Debugger
(Prel. version for algorithmic subset)
78 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica MDT: Code Outline and Hovering Info
Identifier Info on
Hovering
Code Outline for
easy navigation within
Modelica files Usage: Creative Commons with attribution CC-BY
79 Copyright © Open Source Modelica Consortium
79
OpenModelica Simulation in Web Browser Client
MultiBody RobotR3.FullRobot
OpenModelica compiles
to efficient
Java Script code which is
executed in web browser
80 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMPython – Python Scripting with OpenModelica
• Interpretation of Modelica
commands and expressions
• Interactive Session handling
• Library / Tool
• Optimized Parser results
• Helper functions
• Deployable, Extensible and
Distributable
82 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMJulia –Julia Scripting with OpenModelica
• Interpretation of Modelica commands and Control example with OMJulia in Jupyter notebooks
expressions from Julia, transfer of data
• Control design using Julia control
package together with OpenModelica
• Interactive Session handling
• Library / Tool
• Separately downloadable. be run with
OpenModelica 1.13.2 or later
• Works with Jupyter notebooks
83 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMMatlab – Matlab Scripting with OpenModelica
• Interpretation of Modelica
commands and expressions from
Matlab, transfer of data
• Interactive Session handling
• Library / Tool
• Separately downloadable. be run
with OpenModelica
• Similar API functions as in
OMJulia and OMPython
• Can be used for control design
from Matlab
84 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMEdit 3D Visualization of Multi-Body Systems
• Built-in feature of OMEdit to
animate MSL-Multi-Body
shapes
• Visualization of simulation
results
• Animation of geometric Simulate
with
primitives and CAD-Files Animation
New
Animation
Window
85 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica 3D Animation Demo
(V6Engine and Excavator)
86 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica 3D Animation – Excavator
87 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Visualization using Third-Party Libraries:
DLR Visualization Library
• Advanced, model-integrated
and vendor-unspecific
visualization tool for
Modelica models
• Offline, online and real-time
animation
• Video-export function
• Commercial library, feature
reduced free Community
Edition exists
88 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 1.2: Use 3D Visualization for Robot model
• Open the
Modelica.Mechanics.MultiBody.Examples.Systems.
RobotR3.fullRobot
example in OMEdit
• Press Simulate with Animation
• Replay the animation
• Compare with the plot
89 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 1.3: Visualization using the
DLR Visualization Community Edition (1)
• Unpack
VisualizationCommunityEdition.zip
• Open the library in OMEdit
• Simulate the EMotor example
• The DLR SimVis visualization app should
start automatically
• Export the animation
(File→Export Replay as Video)
90 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extending Modelica with PDEs
for 2D, 3D flow problems – Research
Insulated boundary:
class PDEModel
HeatNeumann h_iso;
Dirichlet h_heated(g=50); Poorly insulated boundary:
HeatRobin h_glass(h_heat=30000);
HeatTransfer ht;
Tinf 20
Rectangle2D dom;
equation
dom.eq=ht;
dom.left.bc=h_glass;
dom.top.bc=h_iso; Conducting boundary:
dom.right.bc=h_iso;
dom.bottom.bc=h_heated;
u 60
end PDEModel;
91 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Failure Mode and Effects Analysis (FMEA) in OM
• Modelica models augmented with reliability properties can be used to generate
reliability models in Figaro, which in turn can be used for static reliability analysis
• Prototype in OpenModelica integrated with Figaro tool (which is becoming open-
source)
Application
Modelica Library Modelica model
Simulation
Automated
generation
92 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMOptim – Optimization (1) Optimized
parameters
Model structure Model Variables Optimized
Objectives
93 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Problems OMOptim – Optimization (2)
Solved problems Result plot Export result data .csv
94 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Multiple-Shooting and Collocation
Dynamic Trajectory Optimization
• Minimize a goal function subject to model
equation constraints, useful e.g. for NMPC
• Multiple Shooting/Collocation
• Solve sub-problem in each sub-interval
MULTIPLE_COLLOCATION
16.0
14.0
12.0
10.0
8.0
6.0
4.0
2.0
0.0
1 2 4 8 16
95 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica Dynamic Optimization Collocation
96 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSens – Multi-Parameter Sensitivity Analysis
• Individual and simultaneous multi-parameter analysis For an exercise, see
further in these slides
• Optimization-based simultaneous analysis
• Robust derivative free optimizer Tool architecture
Heatmap visualization
97 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSysIdent – System Parameter Identification
98 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
General Tool Interoperability & Model Exchange
Functional Mock-up Interface (FMI)
etc.
99 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Functional Mockup Units
• Import and export of input/output blocks –
Functional Mock-Up Units – FMUs, described by
• differential-, algebraic-, discrete equations,
• with time-, state, and step-events
• An FMU can be large (e.g. 100 000 variables)
• An FMU can be used in an embedded system (small overhead)
• FMUs can be connected together
100 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSimulator – Integrated FMI and TLM-based
Cosimulator/Simulator – part of OpenModelica
Main Framework Aspects
101 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSimulator Composite Model Editor with 3D Viewer
102 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSimulator Simulation, SSP, and Tool Comparison
103 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica Functional Mockup Interface (FMI)
104 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
FMI in OpenModelica
105 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica Code Generators for
Embedded Real-time Code
106 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Code Generator Comparison, Full vs Simple
The largest 8-bit AVR processor MCUs (Micro Controller Units) have 16 kB SRAM.
The ATmega16 we target has 1 kB SRAM available (stack, heap, and global variable
107 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The Simple Code Generator
Supports only a limited Modelica subset
• No initialization (yet)
• No strongly connected components
• No events
• No functions (except external C and built-in)
• Only parts that OpenModelica can generate good and efficient code
for right now (extensions might need changes in the intermediate
code)
• Unused variables are not accepted (OM usually duplicates all
variables for pre() operators, non-linear system guesses, etc…
but only a few of them are actually used)
• FMU-like interface (but statically linked)
108 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Communication & I/O Devices:
M ODELICA _D EVICE D RIVERS Library
https://github.com/modelica/Modelica_DeviceDrivers/
109 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica and Device Drivers Library
AVR Processor Support
111 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Example – Code Generation to SHBS
112 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica – ModelicaML UML Profile
SysML/UML to Modelica OMG Standardization
117 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Example: Simulation and Requirements Evaluation
tank-height is 0.6m
118 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
vVDR Method –
virtual Verification of Designs vs Requirements
Actor Task Created Artifact
Formalize RMM
Requirement
Requirements Monitor Models
Designs
Formalize Designs DAM
Alternative
Models
Formalize SM Scenario
Scenarios Models
Analyze Results
119 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Need for Debugging Tools
Map Low vs High Abstraction Level
• A major part of the total cost of software projects
is due to testing and debugging
• US-Study 2002:
Software errors cost the US economy annually~ 60 Billion $
120 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica MDT Algorithmic Code Debugger
121 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The OpenModelica MDT Debugger (Eclipse-based)
Using Japanese Characters
122 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OpenModelica Equation Model Debugger
Showing
equation
transformations
of a model:
(1) substitution:
y + der(x * (time * z))
=>
y + der(x * (time * 1.0))
(2) simplify:
y + der(x * (time * 1.0))
=>
y + der(x * time)
(4) solve:
0.0 = y + (x + der(x) * time)
=>
der(x) = ((-y) - x) / time
Mapping run-time error to source model position time <> 0
123 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Transformations Browser – EngineV6 Overview
(11 116 equations in model)
124 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Equation Model Debugger on Siemens Model
(Siemens Evaporator test model, 1100 equations)
125 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Debugging Example – Detecting Source of Chattering
(excessive event switching) causing bad performance
• Lkjlkjlj
• Lkjlkj
• lkjklj
equation
z = if x > 0 then -1 else 1;
y = 2 * z;
…
126 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Error Indication – Simulation Slows Down
127 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Performance Profiling for Faster Simulation
(Here: Profiling all equations in MSL 3.2.1 DoublePendulum)
128 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Performance Profiling of
Siemens Drum Boiler Model with Evaporator
129 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
ABB Industry Use of OpenModelica FMI 2.0 and Debugger
130 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 1.2 – Equation-based Model Debugger
In the model ChatteringEvents1, chattering takes place after t = 0.5, due to the
discontinuity in the right hand side of the first equation. Chattering can be detected
because lots of tightly spaced events are generated. The debugger allows to identify
the (faulty) equation that gives rise to all the zero crossing events.
model ChatteringEvents1
Real x(start=1, fixed=true);
Real y; Uses 25% CPU
Real z;
equation
z = noEvent(if x > 0 then -1 else 1);
y = 2*z;
der(x) = y;
end ChatteringNoEvents1;
131 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise – FMU Export and Import (1)
132 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise – FMU Export and Import (2)
• Find the FMIExercise.mo file in the tutorial
folder and open it in OMEdit. Click on the + at the
left to open and see components TEstPIFMU, PI,
etc.
• Goal: (1) Export this PI block as FMU, (2) import
the exported FMU, (3) compare simulation results
of imported PI FMU block vs. native use of the PI
block
• Export the PI block by selecting the model and
use right-click context menu indicated at the right
• The message browser shows where the FMU was
generated on your system
133 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise – FMU Export and Import (3)
134 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise – FMU Export and Import (4)
135 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part III
Typed
Declarative Hybrid
Equation-based Modeling
Textual Language
136 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Acausal Modeling
Visual
Component
Level
137 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Typical Simulation Process
138 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Simple model - Hello World!
0.8
simulate(HelloWorld, stopTime = 2)
0.6
plot(x)
0.4
0.2
0.5 1 1.5 2
139 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Variables and Constants
140 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
A Simple Rocket Model
thrust mass gravity
Rocket acceleration
mass
thrust
mass massLossRate abs thrust
apollo13
mg altitude velocity
velocity acceleration
declaration
new model class Rocket "rocket class" comment
parameters (changeable parameter String name;
before the simulation) Real mass(start=1038.358);
Real altitude(start= 59404);
floating point Real velocity(start= -2003); start value
type Real acceleration;
Real thrust; // Thrust force on rocket
Real gravity; // Gravity forcefield
parameter Real massLossRate=0.000277; name + default value
equation
(thrust-mass*gravity)/mass = acceleration; mathematical
der(mass) = -massLossRate * abs(thrust); equation (acausal)
der(altitude) = velocity;
differentiation with der(velocity) = acceleration;
regards to time end Rocket;
141 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Celestial Body Class
142 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Moon Landing
Rocket apollo13
thrust moon. g moon.mass
apollo. gravity
mg
apollo.altitude moon.radius2
altitude
CelestialBody
class MoonLanding
parameter Real force1 = 36350;
parameter Real force2 = 1308;
only access protected
inside the class parameter Real thrustEndTime = 210;
parameter Real thrustDecreaseTime = 43.2;
access by dot public
notation outside Rocket apollo(name="apollo13");
the class CelestialBody moon(name="moon",mass=7.382e22,radius=1.738e6);
equation
apollo.thrust = if (time < thrustDecreaseTime) then force1
else if (time < thrustEndTime) then force2
else 0;
apollo.gravity=moon.g*moon.mass/(apollo.altitude+moon.radius)^2;
end MoonLanding;
143 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Simulation of Moon Landing
simulate(MoonLanding, stopTime=230)
plot(apollo.altitude, xrange={0,208})
plot(apollo.velocity, xrange={0,208})
30000
50 100 150 200
25000
-100
20000
-200
15000
10000 -300
5000 -400
144 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Specialized Class Keywords
• Classes can also be declared with other keywords, e.g.: model, record,
block, connector, function, ...
• Classes declared with such keywords have specialized properties
• Restrictions and enhancements apply to contents of specialized classes
• After Modelica 3.0 the class keyword means the same as model
145 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Functions
function sum
input Real arg1;
input Real arg2;
output Real result;
algorithm
result := arg1+arg2;
end sum;
146 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Function Call – Example Function with for-loop
147 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Inheritance
parent class to Color
148 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extra slide
Multiple Inheritance
class ColoredPointWithoutInheritance
Real x;
Real y, z;
parameter Real red = 0.2; Equivalent to
parameter Real blue = 0.6;
Real green;
equation
red + blue + green = 1;
end ColoredPointWithoutInheritance;
149 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extra slide
Multiple Inheritance cont’
class Rectangle
extends VerticalLine;
extends HorizontalLine;
end Rectangle;
150 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Simple Class Definition
151 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Inheritance Through Modification
...
Real altitude(start= 59404);
...
152 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extra slide
The Moon Landing - Example Using Inheritance (I)
Rocket
apollo13 thrust
153 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extra slide
The Moon Landing - Example using Inheritance (II)
inherited
parameters
model MoonLanding
parameter Real force1 = 36350;
parameter Real force2 = 1308;
parameter Real thrustEndTime = 210;
parameter Real thrustDecreaseTime = 43.2;
Rocket apollo(name="apollo13", mass(start=1038.358) );
CelestialBody moon(mass=7.382e22,radius=1.738e6,name="moon");
equation
apollo.thrust = if (time<thrustDecreaseTime) then force1
else if (time<thrustEndTime) then force2
else 0;
apollo.gravity =moon.g*moon.mass/(apollo.altitude+moon.radius)^2;
end Landing;
154 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Extra slide
Inheritance of Protected Elements
If an extends-clause is preceded by the protected keyword,
all inherited elements from the superclass become protected
elements of the subclass
class ColoredPoint
class Point protected
Real x; extends Color;
class Color
Real y,z; public
Real red;
end Point; extends Point;
Real blue;
Real green; end ColoredPoint;
equation
red + blue + green = 1; Equivalent to
end Color;
class ColoredPointWithoutInheritance
The inherited fields from Point keep Real x;
Real y,z;
their protection status since that protected Real red;
extends-clause is preceded by protected Real blue;
public protected Real green;
equation
red + blue + green = 1;
A protected element cannot be end ColoredPointWithoutInheritance;
accessed via dot notation!
155 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part III a
(15 minutes)
156 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises Part III a
157 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercises 2.1 and 2.2 (See also next two pages)
• Open the Exercises-ModelicaTutorial.onb found in the
Tutorial directory you copied at installation.
• Exercise 2.1. Simulate and plot the HelloWorld example. Do
a slight change in the model, re-simulate and re-plot. Try
command-completion, val( ), etc.
class HelloWorld "A simple equation"
Real x(start=1);
equation simulate(HelloWorld, stopTime = 2)
der(x)= -x; plot(x)
end HelloWorld;
158 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 2.1 – Hello World!
0.4
0.2
0.5 1 1.5 2
159 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
(extra) Exercise 2.2 – Van der Pol Oscillator
class VanDerPol "Van der Pol oscillator model"
Real x(start = 1) "Descriptive string for x"; // x starts at 1
Real y(start = 1) "y coordinate"; // y starts at 1
parameter Real lambda = 0.3;
equation
der(x) = y; // This is the 1st diff equation //
der(y) = -x + lambda*(1 - x*x)*y; /* This is the 2nd diff equation */
end VanDerPol;
simulate(VanDerPol,stopTime = 25)
1
plotParametric(x,y)
-2 -1 1 2
-1
-2
160 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
(extra) Exercise 2.3 – DAE Example
class DAEexample
Include algebraic equation Real x(start=0.9);
Algebraic equations contain Real y;
no derivatives equation
der(y)+(1+0.5*sin(y))*der(x)
Exercise: Locate in DrModelica. = sin(time);
Simulate and plot. Change x - y = exp(-0.9*x)*cos(y);
end DAEexample;
the model, simulate+plot.
Simulation in OpenModelica environment
1.20
1.0 time
0.2 0.4 0.6 0.8 1
0.95
0.90
161 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 2.4 – Model the system below
162 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
(extra) Exercise 2.5 – Functions
163 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part III b
Discrete Events and Hybrid Systems
164 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Hybrid Modeling
Hybrid modeling = continuous-time + discrete-time modeling
Continuous-time Real x;
Voltage v;
Discrete-time Current i;
165 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Event Creation – if
166 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Event Creation – when
167 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Generating Repeated Events by unclocked sample
sample(t0,d)
The call sample(t0,d) returns
true and triggers events at times true
t0+i*d, where i=0,1, …
false time
t0 t0+d t0+2d t0+3d t0+4d
Variables need to be
discrete
model SamplingClock Creates an event
Integer i;
discrete Real r;
after 2 s, then
equation each 0.5 s
when sample(2,0.5) then
i = pre(i)+1;
r = pre(r)+0.3;
end when;
end SamplingClock; pre(...) takes the
previous value
before the event.
168 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Generating Clock Tick Events using Clock()
(clocked models, Modelica 3.3)
class ClockTicks
// Integer quotient rational number interval clock
Clock c1 = Clock(3,10); // ticks: 0, 3/10, 6/10, ..
// Clock with real value interval between ticks
Clock c2 = Clock(0.2); // ticks: 0.0, 0.2, 0.4, ...
end ClockTicks;
169 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Reinit - Discontinuous Changes
The value of a continuous-time state variable can be instantaneously
changed by a reinit-equation within a when-equation
Initial conditions
Reinit ”assigns”
continuous-time variable
velocity a new value
170 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 2.6 – BouncingBall
171 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part IIIc
172 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Control System Applications
Control System
A control system is a device, or set of devices, that manages,
commands, directs or regulates the behavior of other devices
or systems (wikipedia).
Control
Measurements
Computing Controller Outputs
Sensors Actuators
173 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Control Theory Perspective
Feedback Control System
Controller Plant
(Physical System)
r (t ) reference (setpoint)
e (t ) error
y (t ) measured process variable (plant output)
u (t ) control output variable (plant input)
Usual Objective
Plant output should follow the reference signal.
174 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Embedded Real-Time Control System
Clock
Computer
Algorithm
Plant
175 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Controller with Sampled Data-Systems
(unclocked models, using pre() and sample() )
// time-discrete controller
when {initial(),sample(3,3)} then
E*xd = A*pre(xd)+ B*y;
ud = C*pre(xd) + D*y;
end when;
y
ud
176 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Controller with Clocked Synchronous Constructs
clocked models using Clock(), previous(), hold() in Modelica 3.3
177 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Unclocked Variables in Modelica 3.2
178 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Clock variables (Clock) and Clocked Variables (Real)
(in Modelica 3.3)
179 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Clocked Synchronous Extension in Modelica 3.3
180 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
State Machines in Modelica 3.3: Simple Example
181 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Simple Example: Modelica Code
model Simple_NoAnnotations "Simple state machine"
inner Integer i(start=0);
block State1
outer output Integer i;
output Integer j(start=10);
equation
i = previous(i) + 2;
j = previous(j) - 1;
end State1;
State1 state1;
block State2
outer output Integer i;
equation
i = previous(i) - 1;
end State2;
State2 state2;
equation
transition(state1,state2,i > 10,immediate=false);
transition(state2,state1,i < 1,immediate=false);
initialState(state1);
end Simple_NoAnnotations;
182 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Hierarchical and Parallel Composition of
Modelica State Machine Models
183 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Hierarchical and Parallel Composition
184 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part IV
185 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Software Component Model
Interface Acausal coupling
Connector
186 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Connectors and Connector Classes
187 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
The flow prefix
188 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Physical Connector
Classes Based on Energy Flow
Domain Potential Flow Carrier Modelica
Type Library
Electrical.
Electrical Voltage Current Charge
Analog
Mechanical.
Translational Position Force Linear momentum Translational
Angular Mechanical.
Rotational Angle Torque Rotational
momentum
Magnetic Magnetic Magnetic
Magnetic Magnetic flux
potential flux rate
Hydraulic Pressure Volume flow Volume OpenHydraulics
189 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
connect-equations
Connections between connectors are realized as equations in Modelica
connect(connector1,connector2)
+ v v +
pin1 pin2
i i
Pin pin1,pin2;
//A connect equation
//in Modelica: pin1.v = pin2.v;
connect(pin1,pin2);
Corresponds to
pin1.i + pin2.i =0;
190 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Connection Equations
Pin pin1,pin2;
//A connect equation
//in Modelica pin1.v = pin2.v;
connect(pin1,pin2);
Corresponds to
pin1.i + pin2.i =0;
v1 v2 v3 vn
Each primitive connection set of flow variables is used to generate
sum-to-zero equations of the form:
i1 i2 (ik ) in 0
191 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Common Component Structure
192 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Electrical Components
model Resistor ”Ideal electrical resistor”
extends TwoPin; p.i n.i
parameter Real R; +
equation
p.v n.v
R*i = v; v
end Resistor;
193 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Electrical Components cont’
model Source
extends TwoPin; v(t)
p.i n.i
parameter Real A,w;
+
equation
v = A*sin(w*time); p.v n.v
end Resistor;
model Ground
Pin p; p.v p.i
equation
p.v = 0;
end Ground;
194 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Resistor Circuit
i1 i2
n R1 p p R2 n
v1 v2
v3
p R3 n
i3
model ResistorCircuit
Resistor R1(R=100);
Resistor R2(R=200);
Resistor R3(R=300);
equation R1.p.v = R2.p.v;
connect(R1.p, R2.p); Corresponds to
R1.p.v = R3.p.v;
connect(R1.p, R3.p); R1.p.i + R2.p.i + R3.p.i = 0;
end ResistorCircuit;
195 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Standard Library - Graphical Modeling
196 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica Standard Library cont’
197 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica.Blocks
Library
Continuous
Examples:
198 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica.Electrical
Examples:
V2
R2 R4
Gnd9
C2 Gnd3 Gnd6 C4
R1 Transistor1 Transistor2 R3
V1 C1 I1 C5 C3 Gnd4
199 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Modelica.Mechanics
200 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
PNlib - An Advanced Petri Net Library
for Hybrid Process Modeling
202 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Other Free Libraries
Up to date list at: https://www.modelica.org/libraries
203 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Some Commercial Libraries
Up to date list at: https://www.modelica.org/libraries
204 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Connecting Components from Multiple Domains
ex ac iner vsen
model Generator
Modelica.Mechanics.Rotational.Accelerate ac;
Modelica.Mechanics.Rotational.Inertia iner;
Modelica.Electrical.Analog.Basic.EMF emf(k=-1);
Modelica.Electrical.Analog.Basic.Inductor ind(L=0.1);
Modelica.Electrical.Analog.Basic.Resistor R1,R2;
Modelica.Electrical.Analog.Basic.Ground G;
Modelica.Electrical.Analog.Sensors.VoltageSensor vsens;
Modelica.Blocks.Sources.Exponentials ex(riseTime={2},riseTimeConst={1});
equation
connect(ac.flange_b, iner.flange_a); connect(iner.flange_b, emf.flange_b);
connect(emf.p, ind.p); connect(ind.n, R1.p); connect(emf.n, G.p);
connect(emf.n, R2.n); connect(R1.n, R2.p); connect(R2.p, vsens.n);
connect(R2.n, vsens.p); connect(ex.outPort, ac.inPort);
end Generator;
205 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
DCMotor Model Multi-Domain (Electro-Mechanical)
model DCMotor
Resistor R(R=100);
Inductor L(L=100);
VsourceDC DC(f=10);
Ground G;
EMF emf(k=10,J=10, b=2);
Inertia load;
equation R L
connect(DC.p,R.n); emf
connect(R.p,L.n); DC
connect(L.p, emf.n);
connect(emf.p, DC.n); load
connect(DC.n,G.p);
connect(emf.flange,load.flange); G
end DCMotor;
206 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part IV
Sensitivity Analysis
using
OpenModelica
207 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSens – Multi-Parameter Sensitivity Analysis
• Individual and simultaneous multi-parameter analysis
• Optimization-based simultaneous analysis
• Robust derivative free optimizer Tool architecture
Heatmap visualization
208 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Introduction to Sensitivity Analysis
• Sensitivity of nonlinear systems in the form of ODEs
• Undergo noticeable dynamic
changes in response to small perturbations
in the parameters.
• OO-languages (Modelica)
• Systematic treatment of the problem
• Clear, unambiguous access to
parameters, variables and
simulation configuration.
• Reusable frameworks to
manipulate models as black boxes.
• Varied options to use internal knowledge about model structure
209 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Approaches to Sensitivity Analysis
• Individual analysis:
• One parameter perturbed at a time
• Ignores combinations of perturbations
• Simultaneous analysis:
• All possible combinations not feasible
• Would give combinatorial explosion of parameter settings
• Find “optimal” combinations of perturbations
• “Smallest simultaneous perturbations that produce
largest deviations”
• Typically: optimization-based strategies
210 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
CURVIF: robust derivative-free optimization algorithm
• The CURVI family
• Curvilinear search approach
• Three versions: CURVIF, CURVIG, CURVIH
• Function values, function values plus Gradients, and the latter plus
Hessians.
• Globally convergent
• In general uses fewer evaluations than other algorithms
• CURVIF: the flavor adopted for OMSens
• Trade-off: favor robustness, sacrifice some efficiency
• Derivative-free methods can either be robust - at the cost of using
many function evaluations, e.g. direct searches - or may present
convergence problems
211 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
LotkaVolterra – A Simple Model to be Used
for Sensitivity Analysis Exercises
212 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Preparations for Sensitivity Analysis Exercises
Assuming that you already have latest OpenModelica nightly installed. (e.g.1.16.0)
NOTE: Change the paths according to your installation whenever needed in the following commands.
More info in the file:
Step1. Install Anaconda (most easily in c:\anaconda3) OMSens Example_Exercise_ Lotka-Volterra.pdf
===================
For 64-bit use https://repo.anaconda.com/archive/Anaconda3-2019.10-Windows-x86_64.exe
For 32-bit use https://repo.anaconda.com/archive/Anaconda3-2019.10-Windows-x86.exe
Follow the installer and install using the default options i.e., don't change anything (we recommend installing in C:\Anaconda3).
cd "C:\Program Files\OpenModelica1.16.0-dev-64bit\OMSens\fortran_interface"
gfortran -c Rutf.for Rut.for Curvif.for
f2py.exe -c -I. Curvif.o Rutf.o Rut.o -m curvif_simplified curvif_simplified.pyf Curvif_simplified.f90 --compiler=mingw32
"C:\Program Files\OpenModelica1.16.0-dev-64bit\bin\OMEdit.exe"
213 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSens Exercise – Locate Python
Select Analysis type
214 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
OMSens Exercise –results from individual analysis
More info in the file:
OMSens Example_Exercise_ Lotka-Volterra.pdf
215 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Part Vb
More
Graphical Modeling Exercises
using
OpenModelica
228 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Graphical Modeling - Using Drag and Drop Composition
229 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Graphical Modeling Animation – DCMotor
230 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Multi-Domain (Electro-Mechanical) Modelica Model
231 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Corresponding DCMotor Model Equations
The following equations are automatically derived from the Modelica model:
232 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 3.1
233 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 3.2
• If there is enough time: Add a torsional spring to the
outgoing shaft and another inertia element. Simulate
again and see the results. Adjust some parameters to
make a rather stiff spring.
234 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Exercise 3.3
• If there is enough time: Add a PI controller to the system
and try to control the rotational speed of the outgoing shaft.
Verify the result using a step signal for input. Tune the PI
controller by changing its parameters in OMEdit.
235 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Learn more…
• OpenModelica
• www.openmodelica.org
• Modelica Association
• www.modelica.org
• Books
• Principles of Object Oriented Modeling and Simulation with
Modelica 3.3: A Cyber-Physical Approach, Peter Fritzson
2015.
236 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY
Summary
Typed
Declarative Hybrid
Textual Language Thanks for listening! Modeling
237 Copyright © Open Source Modelica Consortium Usage: Creative Commons with attribution CC-BY