Commit 342f2a67 authored by Kai-Holger Brassel's avatar Kai-Holger Brassel
Browse files

Add motivation, link to PDF and better structure

parent 2a300b79
......@@ -10,7 +10,9 @@ image:https://mirrors.creativecommons.org/presskit/icons/by.svg[by,20]
image:https://mirrors.creativecommons.org/presskit/icons/nc.svg[nc,20]
image:https://mirrors.creativecommons.org/presskit/icons/nd.svg[nd,20]
Version: November 9^th^, 2020.
Non-final version: April 20^th^, 2021.
Go to link:ParameterCatalogs.pdf[PDF-Version]
include::ParameterCatalogs1Overview.adoc[]
......@@ -24,4 +26,4 @@ include::ParameterCatalogs3Usage.adoc[]
<<<
include::ParameterCatalogs4TychoBuild.adoc[]
include::ParameterCatalogs4Distribution.adoc[]
......@@ -450,7 +450,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<ul class="sectlevel2">
<li><a href="#truethe-bigger-picture">The Bigger Picture</a></li>
<li><a href="#truelessons-learned">Lessons Learned</a></li>
<li><a href="#truelow-code-development-of-parameter-catalogs">Low-Code-Development of Parameter Catalogs</a></li>
<li><a href="#low-code-development">Low-Code-Development of Parameter Catalogs</a></li>
</ul>
</li>
<li><a href="#truehow-to-implement-parameter-catalogs-with-eclipse">How to Implement Parameter Catalogs with Eclipse</a>
......@@ -464,13 +464,14 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<li><a href="#truesummary">Summary</a></li>
</ul>
</li>
<li><a href="#trueaccessing-and-using-parameter-catalogs">Accessing and Using Parameter Catalogs</a>
<li><a href="#using-parameter-catalogs">TBD: Accessing and Using Parameter Catalogs</a>
<ul class="sectlevel2">
<li><a href="#trueaccessing-xml-catalogs">Accessing XML-Catalogs</a></li>
<li><a href="#trueaccessing-xml-catalogs-from-java">Accessing XML-Catalogs from Java</a></li>
<li><a href="#truecreate-insel-models-with-handlebars-templates">Create Insel Models with Handlebars Templates</a></li>
<li><a href="#trueaccessing-xml-catalogs-from-python">Accessing XML-Catalogs from Python</a></li>
</ul>
</li>
<li><a href="#truebuild-parameter-catalog-applications-with-eclipse-tycho">Build (Parameter Catalog) Applications with Eclipse Tycho</a>
<li><a href="#truetbd-distribution-of-parameter-catalogs">TBD: Distribution of Parameter Catalogs</a>
<ul class="sectlevel2">
<li><a href="#truecreate-an-eclipse-application">Create an Eclipse Application</a></li>
<li><a href="#trueuse-maven-and-tycho-as-build-system">Use Maven and Tycho as Build System</a></li>
......@@ -492,7 +493,10 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<span class="image"><img src="https://mirrors.creativecommons.org/presskit/icons/nd.svg" alt="nd" width="20"></span></p>
</div>
<div class="paragraph">
<p>Version: November 9<sup>th</sup>, 2020.</p>
<p>Non-final version: April 20<sup>th</sup>, 2021.</p>
</div>
<div class="paragraph">
<p>Go to <a href="ParameterCatalogs.pdf">PDF-Version</a></p>
</div>
</div>
</div>
......@@ -515,6 +519,28 @@ Maybe it could be developed into a more serious paper later.</p>
</table>
</div>
<div class="paragraph">
<p>Simulation of energy supply and consumption of buildings at the level of districts or even cities not only requires elaborated algorithms but also careful design of model structure and parameters.
Structural aspects include building geometry as well as arrangement of buildings, e.g. to take shadowing and heat transfer into account.
Assigning usage patterns or energy components like heat pumps, PV, boilers, etc. to specific buildings also count as structural aspects of a simulation model.
Moreover, this multitude of model entities has to be defined in more detail by lots of numeric, ordinal or nominal parameters.
Our experience with developing simulation systems like INSEL and SimStadt showed that manual parametrization based on informal data collections, typologies, spreadsheet tables, etc. from different sources is tedious and often hard to reproduce. Instead, parametrization of complex models should be supported by software providing formally defined <strong>parameter catalogs</strong>, that are systematically created and updated by domain experts.</p>
</div>
<div class="paragraph">
<p>Parameter catalogs and the software to create, maintain and deploy them should be independent of any specific simulation software to enhance software modularity (separation of concerns).
Ideally, modelers can enhance their simulation environment by adding suited parameter catalogs as software plug-ins and use them to parametrize model entities easily, e.g. via drag and drop.</p>
</div>
<div class="paragraph">
<p>Automatic parametrization of components in simulation models requires a formal data model which fits the simulation models in terms of content and structure and can pass information to them.
Self-contained parameter catalogs fulfill this requirement by providing an application programmers interface (API) that can be queried for automatic, rule-based parametrization of simulation models.</p>
</div>
<div class="paragraph">
<p>To get good results fast, close collaboration with domain experts and short development cycles are desirable.
We achieved this by exploiting techniques of so called <strong>low code development</strong>.
Basically this means that domain experts encode their knowledge into a graphical diagram defining types of components, their relations, and attributes.
From this diagram, program code for storing and manipulating data sets in main memory as well as code to write and read that data to and from XML files (or data bases) are automatically generated.
A modern graphical user interface to create, read, update, and delete data (CRUD operations) can also be provided with no or very few lines of manually written code.</p>
</div>
<div class="paragraph">
<p>The overall motivation for the work on parameter catalogs for simulation is to make easier to develop and perform computer simulations in complex and <em>data rich</em> domains like building physics, transportation, and all kinds of urban infrastructure.</p>
</div>
<div class="sect2">
......@@ -638,7 +664,7 @@ It was developed in Java with a user interface written in JavaFX and was well re
</div>
</div>
<div class="sect2">
<h3 id="truelow-code-development-of-parameter-catalogs"><a class="anchor" href="#truelow-code-development-of-parameter-catalogs"></a>Low-Code-Development of Parameter Catalogs</h3>
<h3 id="low-code-development"><a class="anchor" href="#low-code-development"></a>Low-Code-Development of Parameter Catalogs</h3>
<div class="paragraph">
<p>From INSEL and SimStadt we learned, that manual and automatic construction and parameterization of complex simulation models with many types of interrelated objects should be supported be the means of domain specific parameter catalogs.</p>
</div>
......@@ -1238,7 +1264,7 @@ Instead of artificial example classes like <em>Foo</em> and <em>Bar</em> it show
</div>
<div class="imageblock thumb">
<div class="content">
<img src="http://localhost:53031/afx/cache/28c119036261e39473751e5cb111acc9.png" alt="28c119036261e39473751e5cb111acc9">
<img src="http://localhost:57513/afx/cache/28c119036261e39473751e5cb111acc9.png" alt="28c119036261e39473751e5cb111acc9">
</div>
<div class="title">Figure 4. Principle Structure of a Parameter Catalog</div>
</div>
......@@ -2024,65 +2050,24 @@ An enumeration introduced a new attribute type as a set of named values.</p>
</div>
</div>
<div class="sect1">
<h2 id="trueaccessing-and-using-parameter-catalogs"><a class="anchor" href="#trueaccessing-and-using-parameter-catalogs"></a>Accessing and Using Parameter Catalogs</h2>
<h2 id="using-parameter-catalogs"><a class="anchor" href="#using-parameter-catalogs"></a>TBD: Accessing and Using Parameter Catalogs</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="trueaccessing-xml-catalogs"><a class="anchor" href="#trueaccessing-xml-catalogs"></a>Accessing XML-Catalogs</h3>
<div class="paragraph">
<div class="title">Add Ecore data model to a third-party Java application</div>
<p><strong>TBD</strong></p>
</div>
<div class="literalblock">
<div class="content">
<pre>import java.util.Collection;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
import de.hftstuttgart.energycomponents.EnCompPackage;
import de.hftstuttgart.energycomponents.HeatPump;</pre>
</div>
</div>
<div class="literalblock">
<div class="content">
<pre>ResourceSet resSet = new ResourceSetImpl();
Resource resource = resSet.getResource(URI.createURI("catalog.xml"), true);
Collection&lt;HeatPump&gt; allHeatPumps = EcoreUtil.getObjectsByType(
resource.getContents(), EnCompPackage.eINSTANCE.getHeatPump());</pre>
</div>
</div>
<div class="paragraph">
<p>catalog.xml muss durch den richtigen Pfad zum XML-Katalog ersetzt werden.</p>
</div>
<div class="paragraph">
<div class="title">Load XML Data Catalog and Access Corresponding Java Objects in Code</div>
<p><strong>TBD</strong></p>
</div>
<div class="paragraph">
<div class="title">Access from Python?</div>
<p><strong>TBD</strong></p>
</div>
<h3 id="trueaccessing-xml-catalogs-from-java"><a class="anchor" href="#trueaccessing-xml-catalogs-from-java"></a>Accessing XML-Catalogs from Java</h3>
</div>
<div class="sect2">
<h3 id="truecreate-insel-models-with-handlebars-templates"><a class="anchor" href="#truecreate-insel-models-with-handlebars-templates"></a>Create Insel Models with Handlebars Templates</h3>
<div class="paragraph">
<p>Handlebar templates to access data catalogs and create/parameterize textual simulation models.</p>
</div>
<div class="paragraph">
<div class="title">Parameterization of blocks</div>
<p><strong>TBD</strong></p>
</div>
<div class="paragraph">
<div class="title">Creation of submodels, e.g. computing parameterized functions</div>
<p><strong>TBD</strong></p>
</div>
<div class="sect2">
<h3 id="trueaccessing-xml-catalogs-from-python"><a class="anchor" href="#trueaccessing-xml-catalogs-from-python"></a>Accessing XML-Catalogs from Python</h3>
<div style="page-break-after: always;"></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="truebuild-parameter-catalog-applications-with-eclipse-tycho"><a class="anchor" href="#truebuild-parameter-catalog-applications-with-eclipse-tycho"></a>Build (Parameter Catalog) Applications with Eclipse Tycho</h2>
<h2 id="truetbd-distribution-of-parameter-catalogs"><a class="anchor" href="#truetbd-distribution-of-parameter-catalogs"></a>TBD: Distribution of Parameter Catalogs</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Three plugins so for for the content and UI.</p>
......@@ -2093,14 +2078,9 @@ Collection&lt;HeatPump&gt; allHeatPumps = EcoreUtil.getObjectsByType(
<div class="paragraph">
<p>Building an application "around" the three plugins for Ecore data model and UI specification model.</p>
</div>
<div class="paragraph">
<p>See template.</p>
</div>
<div class="sect2">
<h3 id="truecreate-an-eclipse-application"><a class="anchor" href="#truecreate-an-eclipse-application"></a>Create an Eclipse Application</h3>
<div class="paragraph">
<p><strong>TBD</strong></p>
</div>
</div>
<div class="sect2">
<h3 id="trueuse-maven-and-tycho-as-build-system"><a class="anchor" href="#trueuse-maven-and-tycho-as-build-system"></a>Use Maven and Tycho as Build System</h3>
......@@ -2160,18 +2140,7 @@ Verify that Maven version 3.6.3 or above is now installed in <code>Window &#8594
<div class="title">Figure 26. Check Maven installation</div>
</div>
<div class="paragraph">
<div class="title">"Mavenize" projects</div>
<p><strong>TBD</strong></p>
</div>
<div class="paragraph">
<div class="title">Build and Deploy with Tycho</div>
<p><strong>TBD</strong></p>
</div>
<div class="paragraph">
<div class="title">Add third party Java libraries</div>
<p><strong>TBD</strong></p>
</div>
<div class="paragraph">
<p>"Correct" way to add third party Java libraries as plugins</p>
</div>
<div class="paragraph">
......@@ -2180,15 +2149,11 @@ Verify that Maven version 3.6.3 or above is now installed in <code>Window &#8594
</div>
<div class="sect2">
<h3 id="truedeploy-to-p2-repository"><a class="anchor" href="#truedeploy-to-p2-repository"></a>Deploy to P2 Repository</h3>
<div class="paragraph">
<p><strong>TBD</strong></p>
</div>
</div>
<div class="sect2">
<h3 id="trueversioning-and-collaboration"><a class="anchor" href="#trueversioning-and-collaboration"></a>Versioning and Collaboration</h3>
<div class="paragraph">
<p><strong>TBD</strong></p>
</div>
</div>
</div>
</div>
......@@ -2222,7 +2187,7 @@ Verify that Maven version 3.6.3 or above is now installed in <code>Window &#8594
</div>
<div id="footer">
<div id="footer-text">
Last updated 2021-04-18 11:27:10 +0200
Last updated 2021-04-20 12:48:52 +0200
</div>
</div>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/github.min.css">
......
......@@ -6,8 +6,27 @@ This introduction talks about the work of the author and others, but without bib
Maybe it could be developed into a more serious paper later.
====
Simulation of energy supply and consumption of buildings at the level of districts or even cities not only requires elaborated algorithms but also careful design of model structure and parameters.
Structural aspects include building geometry as well as arrangement of buildings, e.g. to take shadowing and heat transfer into account.
Assigning usage patterns or energy components like heat pumps, PV, boilers, etc. to specific buildings also count as structural aspects of a simulation model.
Moreover, this multitude of model entities has to be defined in more detail by lots of numeric, ordinal or nominal parameters.
Our experience with developing simulation systems like INSEL and SimStadt showed that manual parametrization based on informal data collections, typologies, spreadsheet tables, etc. from different sources is tedious and often hard to reproduce. Instead, parametrization of complex models should be supported by software providing formally defined *parameter catalogs*, that are systematically created and updated by domain experts.
Parameter catalogs and the software to create, maintain and deploy them should be independent of any specific simulation software to enhance software modularity (separation of concerns).
Ideally, modelers can enhance their simulation environment by adding suited parameter catalogs as software plug-ins and use them to parametrize model entities easily, e.g. via drag and drop.
Automatic parametrization of components in simulation models requires a formal data model which fits the simulation models in terms of content and structure and can pass information to them.
Self-contained parameter catalogs fulfill this requirement by providing an application programmers interface (API) that can be queried for automatic, rule-based parametrization of simulation models.
To get good results fast, close collaboration with domain experts and short development cycles are desirable.
We achieved this by exploiting techniques of so called *low code development*.
Basically this means that domain experts encode their knowledge into a graphical diagram defining types of components, their relations, and attributes.
From this diagram, program code for storing and manipulating data sets in main memory as well as code to write and read that data to and from XML files (or data bases) are automatically generated.
A modern graphical user interface to create, read, update, and delete data (CRUD operations) can also be provided with no or very few lines of manually written code.
The overall motivation for the work on parameter catalogs for simulation is to make easier to develop and perform computer simulations in complex and _data rich_ domains like building physics, transportation, and all kinds of urban infrastructure.
=== The Bigger Picture
A good part of computer science was and is driven by the motivation to make it easier to develop computer programs of all sorts.
......@@ -79,7 +98,7 @@ It was developed in Java with a user interface written in JavaFX and was well re
However, as a different catalog -- this time for building usages -- had to be created, it was quite difficult to reuse the XML schema and application code from the building physics catalog: The usage catalog data model was "pressed" into a form similar to the building physics catalog data model, and the UI code was "over-engineered" to accommodate both catalog's requirements.
[#low-code-development]
=== Low-Code-Development of Parameter Catalogs
From INSEL and SimStadt we learned, that manual and automatic construction and parameterization of complex simulation models with many types of interrelated objects should be supported be the means of domain specific parameter catalogs.
......
== Accessing and Using Parameter Catalogs
[#using-parameter-catalogs]
== TBD: Accessing and Using Parameter Catalogs
=== Accessing XML-Catalogs
.Add Ecore data model to a third-party Java application
*TBD*
import java.util.Collection;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
import de.hftstuttgart.energycomponents.EnCompPackage;
import de.hftstuttgart.energycomponents.HeatPump;
ResourceSet resSet = new ResourceSetImpl();
Resource resource = resSet.getResource(URI.createURI("catalog.xml"), true);
Collection<HeatPump> allHeatPumps = EcoreUtil.getObjectsByType(
resource.getContents(), EnCompPackage.eINSTANCE.getHeatPump());
catalog.xml muss durch den richtigen Pfad zum XML-Katalog ersetzt werden.
.Load XML Data Catalog and Access Corresponding Java Objects in Code
*TBD*
.Access from Python?
*TBD*
=== Accessing XML-Catalogs from Java
=== Create Insel Models with Handlebars Templates
Handlebar templates to access data catalogs and create/parameterize textual simulation models.
.Parameterization of blocks
*TBD*
.Creation of submodels, e.g. computing parameterized functions
.Creation of submodels, e.g. for computing parameterized functions
=== Accessing XML-Catalogs from Python
*TBD*
== Build (Parameter Catalog) Applications with Eclipse Tycho
== TBD: Distribution of Parameter Catalogs
Three plugins so for for the content and UI.
......@@ -6,13 +6,9 @@ Missing: Deployable application and inclusion to third party libraries.
Building an application "around" the three plugins for Ecore data model and UI specification model.
See template.
=== Create an Eclipse Application
*TBD*
=== Use Maven and Tycho as Build System
......@@ -55,16 +51,12 @@ image::InstallMaven3.gif[InstallMaven3, 400, role="thumb"]
."Mavenize" projects
*TBD*
.Build and Deploy with Tycho
*TBD*
.Add third party Java libraries
*TBD*
"Correct" way to add third party Java libraries as plugins
......@@ -73,9 +65,6 @@ Example Indriya
=== Deploy to P2 Repository
*TBD*
=== Versioning and Collaboration
*TBD*
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment