+ All Categories
Home > Documents > Composition of XML Dialects A ModelicaXML case study Adrian Pop, Ilie Savga, Uwe Aßmann, Peter...

Composition of XML Dialects A ModelicaXML case study Adrian Pop, Ilie Savga, Uwe Aßmann, Peter...

Date post: 19-Dec-2015
Category:
View: 213 times
Download: 0 times
Share this document with a friend
Popular Tags:
20
Composition of XML Dialects A ModelicaXML case study Adrian Pop, Ilie Savga, Uwe Aßmann, Peter Fritzson Programming Environments Laboratory Linköping University
Transcript

Composition of XML Dialects

A ModelicaXML case study

Adrian Pop, Ilie Savga, Uwe Aßmann, Peter Fritzson

Programming Environments LaboratoryLinköping University

2April 03, 2004

Outline

Introduction Modelica ModelicaXML Compost ModelicaXML extension of Compost Modelica Component Model Composition programs Conclusions and Future Work

3April 03, 2004

Introduction

Why the need for Modelica composition and transformation? Interoperability between existing modeling

languages or CAD tools and Modelica Automatic generation of different version of

models from product specifications. Choosing best design based on automatic simulation.

Automatic configuration of models using external sources (XML, databases, files)

Protection of intellectual property through obfuscation

Fine grain support for library developers

4April 03, 2004

Modelica 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

5April 03, 2004

planetary1=110/50

C4=0.12 C5=0.12

planetary2=110/50

C6=

0.12

bearing2

C8=0.12

demultiplex

shaftS=2e-3

S

planetary3=120/44

C11=0.12

shaftS1=2e-3

SC

12=0

.12

bearing1bearing4

Decomposition and Abstraction of an Automatic Gearbox

Modelica Visual Programming

6April 03, 2004

ModelicaXML

Modelicacode

ModelicaXML

Modelica Parser

read

output

class Test "comment" Real x; Real xdot; equation xdot = der(x);end Test;

<modelicaxml> <definition ident= "Test" comment="comment"> <component ident="x" type="Real" visibility="public" /> <component ident="xdot" type="Real" visibility="public" /> <equation>...</equation> </definition> </modelicaxml>

modelicaxml

definition

component

component

equation

7April 03, 2004

Compost Overview

JavaFragmentBox

XMLFragmentBox

FragmentBoxes

Run TimeBoxes

Components(Boxes) (Core)

UNICOMPComponents

....

Transformation Engine Layer

AbstractCompositionLayer

Interface layer

Language specificComposition Layer

Time specificCompositionLayer

Lazy RuntimeComponent

UNICOMP

AbstractSemantics

Timespecific rules

JavaFragmentValues

X-HTMLFragmentValues

RuntimeObjects

JavaSemantics

ModelicaXML

X-HTMLrules

ModelicaSemantics

Runtimerules

SVGXMIetc.

XML Dialects

5

4

3

2

1

8April 03, 2004

ModelicaXML extension of CompostModelica Code

ModelicaXML

ModelicaParser

ModelicaUnParser

Compost+

XML Recoder

Compositionprograms

onModelica

Modelica Box HierarchyModelica Hook Hierarchy

Composition,Transformation, and Refactoringon Modelica Components

ModelicaComponent

Model

9April 03, 2004

Modelica Component Model – Box hierarchy

XMLBox

ModelicaXMLBox

ModelicaContainer ModelicaElement

ModelicaClass

ModelicaModel

ModelicaConnector

ModelicaBlock

ModelicaRecord

ModelicaType

ModelicaPackage

ModelicaFunction

ModelicaComponent

ModelicaEquationSection

ModelicaAlgorithmSection

0..*

10April 03, 2004

Example Box Hierarchy <definition ident="Engine" restriction="class"> <component visibility="public” variability="parameter" type="Integer" ident="cylinders"> <modification_equals> <integer_literal value="4"/> </modification_equals> </component> <component visibility="public" type="Cylinder" ident="c"> <array_subscripts> <component_reference ident="cylinders"/> </array_subscripts> </component> </definition>

class Engine parameter Integer cylinders = 4; Cylinder c[cylinders];end Engine;

ModelicaClass

ModelicaComponent

ModelicaComponent

11April 03, 2004

Modelica Component Model – Hook hierarchy

Hook

DeclaredHook ImplicitHook

XMLDeclaredHook

ModelicaModifierHook

XMLImplicitHook

ModelicaParameterHook

ModelicaRealHook

ModelicaIntegerHook

ModelicaStringHook

Other Modelica Hooks

12April 03, 2004

Example: Hooks <component visibility="public” variability="parameter" type="Integer" ident="cylinders"> <modification_equals> <integer_literal value="4"/> </modification_equals> </component>

parameter Integer cylinders = 4;

ModelicaParameterHook name value

<definition ident=”NewEngine" restriction="class"> <extends type=”Engine”> ....</definition>

class NewEngine extends Engine; ....end NewEngine;

<definition ident=”Engine” restriction="class"> <extract> <component>..</component> ... </extract> </definition>

13April 03, 2004

Composition Programs: Mixin

ModelicaCompositionSystem cs =

new ModelicaCompositionSystem();

ModelicaClass resultBox =

cs.createModelicaClass(”Class1.mo.xml”);

ModelicaClass firstMixin =

cs.createModelicaClass(”Class2.mo.xml”);

ModelicaClass secondBox =

cs.createModelicaClass(”Result.mo.xml”);

resultBox.mixin(firstMixin);

resultBox.mixin(secondMixin);

resultBox.print();

14April 03, 2004

Composition Program: Input

class CelestialBody ``Celestial Body''

Real mass;

String name;

constant Real g = 6.672e-11;

parameter Real radius;

end CelestialBody;

15April 03, 2004

Composition Program

ModelicaCompositionSystem

cs = new ModelicaCompositionSystem();

ModelicaClass bodyBox =

cs.createModelicaClass(``Body.mo.xml'');

ModelicaClass celestialBodyBox =

cs.createModelicaClass(``Celestial.mo.xml'');

ModelicaElement extractedPart =

celestialBody.findHook(``extract'').getValue();

celestialBody.findHook(``extract'').bind(null);

bodyBox.append(extractedPart); bodyBox.print();

celestialBody.findHook(``superclass'').bind(``Body'');

celestialBody.print();

16April 03, 2004

Composition Programs: Result

class Body ``Generic Body''

Real mass;

String name;

end Body;

class CelestialBody ``Celestial Body''

extends Body;

constant Real g = 6.672e-11;

parameter Real radius;

end CelestialBody;

17April 03, 2004

Conclusions and Future WorkModelicaXML+Compost

a start in providing better tools for Modelica language

Future Work refine the Modelica+Compost extension more composition operators validation of composition using

OpenModelica compiler automatic generation of Modelica

component model from the Modelica ontology

18April 03, 2004

End

Thank you!Questions?

19April 03, 2004

ModelicaXML and Compost

ModelicaXML http://www.ida.liu.se/~adrpo/modelica/xml

Compost http://www.the-compost-system.org/

20April 03, 2004

Software Composition Workshop 2004, Barcelona

Components

Transformation and Composition

Sagrada Familia


Recommended