OpenModelica Environment OpenModelica Environment and Modelica - - PDF document

openmodelica environment openmodelica environment and
SMART_READER_LITE
LIVE PREVIEW

OpenModelica Environment OpenModelica Environment and Modelica - - PDF document

OpenModelica Environment OpenModelica Environment and Modelica Overview and Modelica Overview Peter Fritzson, Adrian Pop, Peter Aronsson Peter Fritzson, Adrian Pop, Peter Aronsson OpenModelica Course at INRIA, 2006 06 08 OpenModelica Course


slide-1
SLIDE 1

Peter Fritzson

1

OpenModelica Environment OpenModelica Environment and Modelica Overview and Modelica Overview

Peter Fritzson, Adrian Pop, Peter Aronsson Peter Fritzson, Adrian Pop, Peter Aronsson OpenModelica Course at INRIA, 2006 06 08 OpenModelica Course at INRIA, 2006 06 08

Peter Fritzson

2

OpenModelica OpenModelica

  • Goal: comprehensive modeling and simulation

environment for research, teaching, and industrial usage

  • Free, open-source for both academic and

commercial use

  • Now under Berkley New BSD open source

license

  • The OpenModelica compiler (OMC) now

translated into MetaModelica

  • Invitation for open-source cooperation around

OpenModelica, tools, and applications

slide-2
SLIDE 2

Peter Fritzson

3

Background Background Modelica Modelica – – the the Next Generation Next Generation Modeling Language Modeling Language

Peter Fritzson

4

Examples of Complex Examples of Complex Industrial Applications Industrial Applications

  • Robotics
  • Automotive
  • Aircraft
  • Phone Systems
  • Power plants
  • Heavy Vehicles
slide-3
SLIDE 3

Peter Fritzson

5

Stored Stored Scientific and Engineering Knowledge Scientific and Engineering Knowledge

Model knowledge is stored in books and human minds which computers cannot access

“The change of motion is proportional to the motive force impressed “

– Newton

Peter Fritzson

6

The Form The Form – – Equations Equations

  • Equations were used in the third millennium B.C.
  • Equality sign was introduced by Robert Recorde in 1557

Newton still wrote text (Principia, vol. 1, 1686)

“The change of motion is proportional to the motive force impressed ”

CSSL (1967) introduced a special form of “equation”: variable = expression v = INTEG(F)/m Programming languages usually do not allow equations!

slide-4
SLIDE 4

Peter Fritzson

7

Declarative language

Equations and mathematical functions allow acausal modeling, high level specification, increased correctness

Multi-domain modeling

Combine electrical, mechanical, thermodynamic, hydraulic, biological, control, event, real-time, etc...

Everything is a class

Strongly typed object-oriented language with a general class concept, Java & MATLAB-like syntax

Visual component programming

Hierarchical system architecture capabilities

Efficient, non-proprietary

Efficiency comparable to C; advanced equation compilation, e.g. 300 000 equations, ~150 000 lines on standard PC

Modelica Modelica – – The Next Generation Modeling The Next Generation Modeling Language Language

Peter Fritzson

8

Modelica Language Properties Modelica Language Properties

  • Declarative and Object-Oriented
  • Equation-based; continuous and discrete equations
  • Parallel process modeling of real-time applications, according

to synchronous data flow principle

  • Functions with algorithms without global side-effects

(but local data updates allowed)

  • Type system inspired by Abadi/Cardelli
  • Everything is a class – Real, Integer, models, functions,

packages, parameterized classes....

slide-5
SLIDE 5

Peter Fritzson

9

Object Oriented Object Oriented Mathematical Modeling with Modelica Mathematical Modeling with Modelica

  • The static declarative structure of a mathematical model is

emphasized

  • OO is primarily used as a structuring concept
  • OO is not viewed as dynamic object creation and sending

messages

  • Dynamic model properties are expressed in a declarative way

through equations.

  • Acausal classes supports better reuse of modeling and design

knowledge than traditional classes

Peter Fritzson

10

Brief Modelica History 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
  • Latest version, 2.2 released March 2005
  • Modelica Association established 2000
  • Open, non-profit organization
slide-6
SLIDE 6

Peter Fritzson

11

Modelica Conferences 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

Peter Fritzson

12

Modelica Modelica Model Example Model Example – – Industry Robot Industry Robot

inertial x y axis1 axis2 axis3 axis4 axis5 axis6

r3Drive1 1 r3Motor r3Control qdRef 1 S qRef 1 S k2 i k1 i qddRef cut joint

q: angle

qd

tn

Jmotor=J gear=i spring=c fric=R v0 S rel joint=0 S Vs

  • +

diff

  • +

pow er emf La=(250/(2*D *wm )) Ra=250 Rd2=100 C=0.004*D/w m

  • +

OpI Rd1=100 Ri=10 Rp1=200 R p2=50 Rd4=100 hall2 R d3=100 g1 g2 g3 hall1 g4 g5 r w

qd q

rate2 b(s) a(s) rate3 340.8 S rate1 b(s) a(s) tacho1 PT1 Kd 0.03 w Sum

  • sum

+1 +1 pSum

  • Kv

0.3 tacho2 b(s) a(s)

q

qd

iRef qRef qdRef Srel = n*transpose(n)+(identity(3)- n*transpose(n))*cos(q)- skew(n)*sin(q); wrela = n*qd; zrela = n*qdd; Sb = Sa*transpose(Srel); r0b = r0a; vb = Srel*va; wb = Srel*(wa + wrela); ab = Srel*aa; zb = Srel*(za + zrela + cross(wa, wrela));

slide-7
SLIDE 7

Peter Fritzson

13

Modelica Model Example Modelica Model Example GTX GTX Gas Turbine Power Cutoff Mechanism Gas Turbine Power Cutoff Mechanism

Hello

Courtesy of Siemens Industrial Turbomachinery AB

Peter Fritzson

14

Recent Recent Book, 2004 Book, 2004 Peter Fritzson

Principles of Object Oriented Modeling and Simulation with Modelica 2.1

Wiley-IEEE Press 940 pages Book web page:

www.mathcore.com/drmodelica

slide-8
SLIDE 8

Peter Fritzson

15

The OpenModelica Environment The OpenModelica Environment

Peter Fritzson

16

OpenModelica End OpenModelica End-

  • Users vs. Developers

Users vs. Developers

  • OpenModelica End-Users
  • People who use OpenModelica for modeling and simulation
  • OpenModelica Developers
  • People who develop/contribute to parts in the OpenModelica environment

including the OpenModelica compiler

slide-9
SLIDE 9

Peter Fritzson

17

OpenModelica End OpenModelica End-

  • User Subsystems

User Subsystems

  • OpenModelica End-User Subsystems – a pre-packaged kit

containing tools needed for modeling, simulation, teaching

  • OpenModelica Compiler (OMC) – compiles and

executes/simulates Modelica models

  • OMShell – interactive session handler for Modelica scripting
  • OMNotebook – interactive electronic notebook for Modelica

teaching (with DrModelica), scripting, and documentation

  • OpenModelica MDT – Eclipse Plugin (Modelica Development

Tooling), e.g. for library development (c.f. JDT – Java, CDT,)

  • Graphic Model Editor from MathCore

(only binary, but free for university usage)

Peter Fritzson

18

OpenModelica Development Toolkit (OMDev) OpenModelica Development Toolkit (OMDev) – – to Simplify Open Source Development to Simplify Open Source Development

  • OMDev is a pre-packaged pre-compiled kit containing all

tools needed for OpenModelica development. Just unpack and start working on your platform. (Windows, (Linux))

  • MetaModelica Compiler (MMC) – for developing OMC
  • OpenModelica Compiler (OMC) – for browsing support
  • Eclipse plugin MDT – (Modelica Development Tooling),

e.g. for compiler (OMC) development

  • Pre-compiled Corba (MICO) for tool communication
  • Packaged Gnu compiler (Mingw version for Windows)
  • Emacs mode
  • Online (web) Subversion for version handling
  • Online (web) Bugzilla for bug reporting
  • Automatic regression testing using a test suite
  • (Soon: release of interactive debugger)
slide-10
SLIDE 10

Peter Fritzson

19

OpenModelica Environment Architecture OpenModelica Environment Architecture

Modelica Compiler Interactive session handler Execution Graphical Model Editor/Browser Textual Model Editor Modelica Debugger Emacs Editor/Browser DrModelica OMNoteBook Model Editor Eclipse Plugin Editor/Browser

Peter Fritzson

20

OpenModelica Client OpenModelica Client-

  • Server Architecture

Server Architecture

Parse Client: Eclipse Plugin MDT Corba Client: OMShell Interactive Session Handler Server: Main Program Including Compiler, Interpreter, etc. Interactive SCode Inst Ceval plot system etc.

Untyped API Typed Checked Command API

Client: Graphic Model Editor

slide-11
SLIDE 11

Peter Fritzson

21

Released in OpenModelica 1.4.0 Released in OpenModelica 1.4.0

  • OpenModelica compiler/interpreter – OMC
  • Interactive session handler – OMShell
  • OpenModelica Notebook with DrModelica –

OMNotebook

  • OpenModelica Eclipse plugin MDT
  • Preliminary versions:
  • Graphic Editor – Beta version available
  • Debugger – soon released, beta version being improved
  • Emacs mode – available

Peter Fritzson

22

OpenModelica Compiler/Interpreter OpenModelica Compiler/Interpreter

  • New version (1.4.0) released May 15, 2006
  • Currently implemented in 100 000 lines of

MetaModelica

  • Includes code generation, BLT-transformation,

index reduction, connection to DASSL, etc.

  • Most of the Modelica language including classes,

functions, inheritance, modifications, import, etc.

  • Hybrid/Discrete event support
slide-12
SLIDE 12

Peter Fritzson

23

Corba Client Corba Client-

  • Server API

Server API

  • Simple text-based (string) communication in

Modelica Syntax

  • API supporting model structure query and

update

Example Calls: Calls fulfill the normal Modelica function call syntax.: saveModel("MyResistorFile.mo",MyResistor) will save the model MyResistor into the file “MyResistorFile.mo”. For creating new models it is most practical to send a model, e.g.: model Foo end Foo;

  • r, e.g.,

connector Port end Port;

Peter Fritzson

24

Some of the Corba API functions Some of the Corba API functions

Returns the type name of the nth inherited class of a class. The first class has number 1. getNthInheritedClass(A1<cref>, Returns the number (as a string) of inherited classes of a class. getInheritanceCount(A1<cref>) Returns the modification of the nth component (A2) where the first has no 1) of class/component A1. getNthComponentModification( A1<cref>,A2<int>)?? Returns the flattened annotation record of the nth component (A2) (the first is has no 1) within class/component A1. Consists of a comma separated string of 15 values, see Annotations in Section 2.4.4 below, e.g “false,10,30,...” getNthComponentAnnotation( A1<cref>,A2<int>) Returns the belonging class, component name and type name of the nth component of a class, e.g. “A.B.C,R2,Resistor”, where the first component is numbered 1. getNthComponent(A1<cref>,A2<int>) Returns the number (as a string) of components in a class, e.g return “2” if there are 2 components. getComponentCount(A1<cref>) Returns a list {...} of all annotations of all components in A1, in the same order as the components, one annotation per component. getComponentAnnotations(A1<cref>) Returns a list of the component declarations within class A1: {{Atype,varidA,”commentA”},{Btype,varidB,”commentB”}, {...}} getComponents(A1<cref>) Adds annotation given by A2( in the form annotate= classmod(...)) to the model definition referenced by A1. Should be used to add Icon Diagram and Documentation annotations. addClassAnnotation(A1<cref>, annotate=<expr>) Updates an already existing component with name (A1), type (A2), and class (A3) as arguments. Optional annotations are given with the named argument annotate. updateComponent(A1<ident>, A2<cref>, A3<cref>,annotate=<expr>) Deletes a component (A1) within a class (A2). deleteComponent(A1<ident>, A2<cref>) Adds a component with name (A1), type (A2), and class (A3) as arguments. Optional annotations are given with the named argument annotate. addComponent(A1<ident>,A2<cref>, A3<cref>,annotate=<expr>) Deletes the class from the symbol table. deleteClass(A1<cref>) Loads the model (A1) by looking up the correct file to load in $MODELICAPATH. Loads all models in that file into the symbol table. loadModel(A1<cref>) Loads all models in the file. Also in typed API. Returns list of names of top level classes in the loaded files. loadFile(A1<string>) Saves the model (A2) in a file given by a string (A1). This call is also in typed API. saveModel(A1<string>,A2<cref>)

slide-13
SLIDE 13

Peter Fritzson

25

Platforms Platforms

  • All OpenModelica GUI tools (OMShell,

OMNotebook, ...) are developed on the Qt4 GUI library, portable between Windows, Linux, Mac

  • Both compilers (OMC, MMC) are portable

between the three platforms

  • Windows – currently main development and

release platform

  • Linux – available
  • Mac (Berkeley) Unix – planned

Peter Fritzson

26

Interactive Session Handler Interactive Session Handler – – on dcmotor Example

  • n dcmotor Example

(Session handler called OMShell (Session handler called OMShell – – OpenModelica Shell) OpenModelica Shell)

>>simulate(dcmotor,startTime=0.0,stopTime=10.0) >>plot({load.w,load.phi})

model dcmotor Modelica.Electrical.Analog.Basic.Resistor r1(R=10); Modelica.Electrical.Analog.Basic.Inductor i1; Modelica.Electrical.Analog.Basic.EMF emf1; Modelica.Mechanics.Rotational.Inertia load; Modelica.Electrical.Analog.Basic.Ground g; Modelica.Electrical.Analog.Sources.ConstantVoltage v; equation connect(v.p,r1.p); connect(v.n,g.p); connect(r1.n,i1.p); connect(i1.n,emf1.p); connect(emf1.n,g.p); connect(emf1.flange_b,load.flange_a); end dcmotor;

slide-14
SLIDE 14

Peter Fritzson

27

Event Handling by OpenModelica Event Handling by OpenModelica – – BouncingBall BouncingBall

>>simulate(BouncingBall, stopTime=3.0); >>plot({h,flying});

model BouncingBall parameter Real e=0.7 "coefficient of restitution"; parameter Real g=9.81 "gravity acceleration"; Real h(start=1) "height of ball"; Real v "velocity of ball"; Boolean flying(start=true) "true, if ball is flying"; Boolean impact; Real v_new; equation impact=h <= 0.0; der(v)=if flying then -g else 0; der(h)=v; when {h <= 0.0 and v <= 0.0,impact} then v_new=if edge(impact) then -e*pre(v) else 0; flying=v_new > 0; reinit(v, v_new); end when; end BouncingBall; Peter Fritzson

28

Run Scripts in OpenModelica Run Scripts in OpenModelica

  • RunScript command interprets a .mos file
  • .mos means MOdelica Script file
  • Example:

>> runScript("sim_BouncingBall.mos")

loadFile("BouncingBall.mo"); simulate(BouncingBall, stopTime=3.0); plot({h,flying});

The file sim_BouncingBall.mos :

slide-15
SLIDE 15

Peter Fritzson

29

OpenModelica MDT OpenModelica MDT – – Eclipse Plugin Eclipse Plugin

  • Browsing of Modelica/MetaModelica packages,

classes, functions

  • Automatic building of executables
  • Separate compilation
  • Syntax highlighting
  • Code completion, Code query support for

developers

  • Automatic Indentation

Peter Fritzson

30

Eclipse MDT in Action Eclipse MDT in Action – – Browsing and Building Browsing and Building OMC OMC

slide-16
SLIDE 16

Peter Fritzson

31

New Graphic Model Editor New Graphic Model Editor

(From MathCore; runs on Windows, Linux) (From MathCore; runs on Windows, Linux)

  • Runs together with

OpenModelica

  • Free for university

usage

Peter Fritzson

32

OpenModelica Simple Electronic Notebook with OpenModelica Simple Electronic Notebook with DrModelica DrModelica

  • Primarily for

teaching

  • OMNotebook

Does not need Mathematica

slide-17
SLIDE 17

Peter Fritzson

33

Interactive Contents in DrModelica Contains Interactive Contents in DrModelica Contains Examples and Exercises from Modelica Book Examples and Exercises from Modelica Book

Recent Book, 2004: Recent Book, 2004:

Peter Fritzson

34

OpenModelica Algorithmic Code Debugger (prel.) OpenModelica Algorithmic Code Debugger (prel.)

slide-18
SLIDE 18

Peter Fritzson

35

Meta Meta-

  • Modelica Compiler (MMC)

Modelica Compiler (MMC)

  • Supports extended subset of Modelica
  • Used for development of OMC
  • Some MetaModelica Language properties:
  • Modelica syntax and base semantics
  • Pattern matching (named/positional)
  • Local equations (local within expression)
  • Recursive tree data structures
  • Lists and tuples
  • Garbage collection of heap-allocated data
  • Arrays (with local update as in standard Modelica)
  • Polymorphic functions
  • Function parameters to functions
  • Simple builtin exception (failure) handling mechanism

Peter Fritzson

36

Conclusions Conclusions

  • www.ida.liu.se/projects/OpenModelica Download OpenModelica
  • www.mathcore.com/DrModelica

Modelica book page

  • www.modelica.org

Modelica Association

  • Emails: {petfr,adrpo,petar}@ida.liu.se, OpenModelicaInterest@ida.liu.se
  • OpenModelica version 1.3.1 released Nov 2005
  • Recent OpenModelica version 1.4.0 released May

15, 2006

  • OpenModelica in MetaModelica
  • Many bugfixes
  • OpenModelica MDT Eclipse plugin
  • Graphic model editor (available for beta testing)
  • Cooperation and feedback welcome!