Date post: | 19-Dec-2015 |
Category: |
Documents |
View: | 213 times |
Download: | 0 times |
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
19April 03, 2004
ModelicaXML and Compost
ModelicaXML http://www.ida.liu.se/~adrpo/modelica/xml
Compost http://www.the-compost-system.org/