Coder Social home page Coder Social logo

teaser's Introduction

E.ON EBC RWTH Aachen University

TEASER - Tool for Energy Analysis and Simulation for Efficient Retrofit

License Coverage Status Build Status Binder

TEASER (Tool for Energy Analysis and Simulation for Efficient Retrofit) allows fast generation of archetype buildings with low input requirements and the export of individual dynamic simulation models for the below-mentioned Modelica libraries. These libraries all use the framework of Modelica IBPSA library. TEASER is being developed at the RWTH Aachen University, E.ON Energy Research Center, Institute for Energy Efficient Buildings and Indoor Climate.

The full documentation of TEASER including examples and description of modules, classes and functions can be found at the website:

This GitHub page will be used to further develop the package and make it available under the MIT License.

If you have any questions regarding TEASER feel free to contact us at [email protected].

Description

Energy supply of buildings in urban context currently undergoes significant changes. The increase of renewable energy sources for electrical and thermal energy generation will require flexible and secure energy storage and distribution systems. To reflect and consider these changes in energy systems and buildings, dynamic simulation is one key element, in particular when it comes to thermal energy demand on minutely or hourly scale. Sparse and limited access to detailed building information as well as computing times are challenges for building simulation on urban scale. In addition, data acquisition and modeling for Building Performance Simulation (BPS) are time consuming and error-prone. To enable the use of BPS on urban scale we present the TEASER tool, an open framework for urban energy modeling of building stocks. TEASER provides an easy interface for multiple data sources, data enrichment (where necessary) and export of ready-to-run Modelica simulation models for all libraries supporting the Modelica IBPSA library.

Version

TEASER is an ongoing research project, the current version is still a pre-release.

How to use TEASER

Examples and jupyter notebooks

We provide different examples to show the usage of TEASER. Check out the files under teaser/examples or the jupyter-notebooks available here: docs/jupyter-notebooks. If you just want to read the example on github, check them here: docs/examples.

Dependencies

TEASER is currently tested against Python 3.6 and 3.7. Older versions of Python may still work, but are no longer actively supported. Using a Python distribution is recommended as they already contain (or easily support installation of) many Python packages (e.g. SciPy, NumPy, pip, PyQT, etc.) that are used in the TEASER code. Two examples of those distributions are:

  1. https://winpython.github.io/ WinPython comes along with a lot of Python packages (e.g. SciPy, NumPy, pip, PyQT, etc.)..
  2. http://conda.pydata.org/miniconda.html Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them.

In addition, TEASER requires some specific Python packages:

  1. Mako: template Engine install on a python-enabled command line with pip install -U mako
  2. pandas: popular data analysis library install on a python-enabled command line with pip install -U pandas
  3. pytest: Unit Tests engine install on a python-enabled command line with pip install -U pytest

Installation

The best option to install TEASER is to use pip:

pip install teaser

If you actively develop TEASER you can clone this repository by using:

git clone [SSH-Key/Https]

and then run:

pip install -e [Path/to/your/Teaser/Clone] which will install the local version of TEASER.

How to contribute to the development of TEASER

You are invited to contribute to the development of TEASER. You may report any issues by using the Issues button. Furthermore, you are welcome to contribute via Pull Requests. The workflow for changes is described in our Wiki.

How to cite TEASER

  • TEASER: an open tool for urban energy modelling of building stocks. Remmen P., Lauster M., Mans M., Fuchs M., Osterhage T., Müller D.. Journal of Building Performance Simulation, February 2017, pdf, bibtex

TEASER related publications

  • CityGML Import and Export for Dynamic Building Performance Simulation in Modelica. Remmen P., Lauster M., Mans M., Osterhage T., Müller D.. BSO16, p.329-336, September 2016, pdf, bibtex

  • Scalable Design-Driven Parameterization of Reduced Order Models Using Archetype Buildings with TEASER. Lauster M., Mans M., Remmen P., Fuchs M., Müller D.. BauSIM2016, p.535-542, September 2016, pdf

  • Refinement of Dynamic Non-Residential Building Archetypes Using Measurement Data and Bayesian Calibration Remmen P., Schäfer J., Müller D.. Building Simulation 2019, September 2019, pdf

  • Selecting statistical indices for calibrating building energy models. Vogt, M., Remmen P., Lauster M., Fuchs M. , Müller D.. Building and Environment 144, pages 94-107, October 2018. bibtex

  • The Institute of Energy Efficiency and Sustainable Building published a parametric study of TEASER where all functions and parameters used in TEASER are gathered and explained. The publication can be found here.

License

TEASER is released by RWTH Aachen University, E.ON Energy Research Center, Institute for Energy Efficient Buildings and Indoor Climate, under the MIT License.

Acknowledgements

This work was supported by the Helmholtz Association under the Joint Initiative “Energy System 2050 – A Contribution of the Research Field Energy”.

Parts of TEASER have been developed within public funded projects and with financial support by BMWi (German Federal Ministry for Economic Affairs and Energy).

teaser's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

teaser's Issues

Open Export Tab

  • The use should first specify the used model
  • rename Export template to Export Modelica Record
  • rename Export save template to Path or Saving Path
  • export buttons work not as expected
  • button export template for all buildings
  • button export template for current building (deliver the current Building)
  • Question: Should we move this functionality to the "Simulation" or "Modelica Info Tab"?
  • deliver the saving Path to the conrtoller/Project
  • rename buttons

Bug in Replace Window

If a new window is replaced during retrofit a second layer of glas is added, instead of replacing the old one.

Input Error Handling

With user interfaces you always have this problem called user. We have a lot of editable text fields where it is possible to make wrong inputs. For example a user writes "Yes" in the field for Net leased area for a zone. This will throw a value error when trying to convert this fields text to a float.

To prevent this we just surround it with a try catch block:

try:
self.current_zone.area = float(self.zone_area_line_edit.text())
except:
At this point i propose 2 ways to show the user what he did wrong. There are more but i would say these 2 are the easiest and most relevant for us.

  1. QMessageBox: This will make a pop-up window appear with a displayed message telling the user what he did wrong. Advantage: it is right in his face he can't miss it but it also disturbs the flow (which can be considered a good thing since errors need to be handled). Code looks like this:
    QtGui.QMessageBox.warning(self, u"Warning", u"Net leased area for the zone needs to be a number.")
  2. print: We just print the error to the console which the user can see at the bottom of the GUI. Advantage: Not as annoying but also less visible and for example when hitting the save button in a window the window gets closed, the safe function will just not trigger and i would only advise this option if you want to avoid pop-up windows.

Currently we use both ways here and there and there is no real consistency. What do we want to do?

Calculation of inner wall area in Type Buildings

We should check the calculation of inner wall areas in the TypeBuilding approach.

currently we use in ThermalZone.set_inner_wall_area:

wall.area = (avg_room_nr_(self.typical_length * self.parent.height_of_floors + 2_self.typical_width * self.parent.height_of_floors))

Which produces maybe to large areas.

In addition it might be the case that suspended ceilings are added as floors and ceilings, both.

Save Type Element Function

The save_type_element function in BuildingElement, produces currently some dublication in the TypeBuildingElement.xml file.

  • it should be checked if if the element already exists
  • we should add a specifier in what file we want to save the element

Setting Building Area / Volume

We should implement a way to set the building area (net_leased_area) even if only a thermal zone is added. E.g. a thermal zon with 45 square metres is added to a empty building. At the moment this building has a building area of None. So we have to set this building area at least to the sum of the thermal zone areas.
The same method should be implemented for the building volume!

Optional parameters TypeBuilding

The parameters for the design are optional. Right now they are set to None, the default value should be 0 instead. The selection of 0 is always default.

The default setter for construction type should be heavy

Also change this in API function

Wrong mat file generation for the AHU input

At the moment we are creating wrong AHU input files for the simulation. The inputs for the AHU had changed and they have to be 5 column matrice with:

Time | Temperature | relative minimal humidity | relative maximum humidity | Scheduled ventilation flow

I think if we change this, the simulation should work in the branch #13
I can handle this in the new year, but if someone wants to change this before selfassigne it to you.

calculation_method

If we call the function "calc_all_buildings" and pass over the parameter "calculation_core", the attribute "calculation_method" in project should change to that value.

Simulation Integration

A further improvement is that TEASER can handle the simulations of the exported models. For this its recommended to use buildingspy because it has the support of open modelica.
More ideas and tips related to the simulation feature of TEASER are always welcome

element_check() in Aixlib_zone Template

when using element_check() the return values are supposed to be "true" and "false", not "True" and "false".
Otherwise modelica can not interpret the values.

Create New Zone

  • Chossing a Zone Type has no effect: Use the Function: UseConditions18599.load_use_conditions(zone_usage)
  • profile_persons and profile_machines should be displayed as a graph
  • add new element should also contain "Ceiling()" and "Floor()"

@CGingter @yGoerguelue please assign one of you

Graphical User Interface

Implement the current status of the Graphical User Interface (GUI) to GitHub an develop/debug the GUI on this platform

Integrate AixLib Multizone with VDI Calculation

When the future models all work and we have a model for the buildingsimulation according to the vdi calculation, we need to integrate this model to the export of TEASER.

This should be a reminder for this integration

Unit Tests TypeBuilding

For each TypeBuilding we should create Unit tests.

Possible paramters to check (here Office):

  • est_outer_wall_area
  • est_win_area
  • est_roof_area
  • est_floor_area
  • est_facade_area
  • zone areas
  • wall areas of specific orientation
  • ...

Bug Building Creation

There is a bug in the building creation in Example_CreateBuilding and the unittest which leads to simulation models that cannot be simulated.

It has something to do with weightfactorground and the sunblind (or shading_g_total). They are not proper specified i think. Perhaps this is caused by the manual creation of the outer and inner walls and windows.

Control changing values in BuildingElement

Right now we can change all values in BuildingElement and this has no effect. I think it would be helpful (espacially for the GUI) to calculate a new U-Value, whenever one of the following attributes is changed in BuildingElement to see the effect.

self.inner_convection = None
self.inner_radiation = None
self.outer_convection = None
self.outer_radiation = None
self._layer = []

In my opinion it is not necessary to calculate also the values for VDI6007 as they are only for export, and the user has to use (Project.calculat_all_buildings) anyways. Are there any other values, that should be recalulated after a change in the attributes?

Should we also automatically change the construction when we change the year_of_retrofit?

We can use

@property 

for the control.

GUI Integration of all Simulation Parameters

We need to integrate all necessary simulation parameters into the GUI. Therefore @mlauster and @PRemmen suggested to add all zonespecific parameters to a general usecondition tab which includes several childtabs. There we have the usage tab as it is now, the usage time tab (which are the internal gains) and we have to add some parameters there in another tab, like zone ventilation parameters.
In addition we need to figure out a good way to store more simulation parameters at the actual building level. Like we are using a central air handling unit for the whole building and these parameters needs at this level.

Please add more suggestions and ideas to this issue as this is more or less a reminder and discussion issue to find a good way to handle all these parameters we integrate in #13 and #16

GUI Window Element/Layer Details

I found some bugs in the Element Details GUI Window and also in Layer Details Window.

  • With the latest merge in the development branch, changeng the inner/outer radiation/convection should change the U-Value, that does not happen. (1)
  • with latest merge by changing the area of a building element, should also change the area dict for the envelopes, probably related to #47 (2)
  • The U-Value should be U/A but I think it still displays ua_value (3)
  • By adding a new material from the drop down list, the function: load_material_template() should be executed, right now some senseless default values are given in the GUI(?)(4)
  • By choosing the position of a layer, the layer should be displayed at this position, but it is just appended to the list (5)
  • Bug in ZoneDetails (creating a new building in a new project and selecting the ceiling in the ZoneDetails afterwards will raise an AttributeError) (6)
  • Bug in Zone, loading a new project (new.teaser.xml) and doubleclick the zone raise an IndexError (7)
  • Bug in Element Details, Outer Convection and Outer Radiation are editable but the values are not be taken over after clicking the save button. (8)
  • Zone Type of restroom is not set (9)

@MichaMans @yGoerguelue @mlauster Please also test the functionalitiy of these two windows and report bugs/issues here. I will assign this with the Milestone v0.3.0, if #47 #57 and #41 are completed before v0.2.0, we can try to also resolve it within the next release

GUI Envelopes

  • 1)change Building area
  • 2)new button ,, set all construction"
  • 3)warning message , which will open when the ,, set all construction" button is pressed
  • 4)all fields can be edit except area, this will get an own function in Building
  • 5)envelopes list does not change, if we switch between the buildings (bug)
  • 6)implement save button
  • 7)change envelope groupbox to combobox
  • 8) Orientation in the element details Window is not set
  • 9)if i add an new element in the zone details it doesn't has any affect on the envelopes (bug)
  • 10) if i change the area of one wall , the envelope with the same orientation of the wall disappears (bug)

See issue73

  • 11)with latest merge by changing the area of a building element, should also change the area dict for the envelopes.

Simulation Window

The simulation window needs functionality. After talking to Moritz we split it in half and it now contains the values for simulations and also the values for the current project (which is currently only the name).

Currently the values are stored in a gui class which makes no sense now that they can be changed so i will move them back to the project class. Not all of them, only the ones who can be changed by the user. The alternative solution would be a simulation class and if anyone thinks that we would need this i could create it and move the values there.

Import CityGML

After the Export is almost done, we can start to import CityGML files. Within the import we should try to support different LOD's (at least partly).

First: focus on LOD2

  • get basic geometry, if not from parameters itself from the graphical representation
  • get basic input data for type building creation

New Workflow

Implement a new workflow into the docu and also wiki. It should more or less look like this:

  • master branch that stays untouched (except) bugfixes between two releases
  • development branch, where we can branch from and develop new features
  • define releases with features (Milestones)

Create Type Building Button

Main UI:

  • Rename from Create Example Building to "Create Type Building"

generate UI:

  • rename Example Building to "Type Building"
  • Implement all Type Buildings into the GUI (for Residential the right window has to be changed)
  • translate the office setters

@CGingter @yGoerguelue please assign one of you

Input Parameter TypeBuilding.Residential

The setters for the specific design of the Type Building "Residential" start from 1, the setters in Office and Institute start from 0.

Residential should be fixed.

Readable Output

Generate a easy readable Output of all necessary simulation parameter (mainly R, C, etc.)

Possible Simulation Inputdata Conflics

For now we are using specific .mat files as an input for the simulation of our building models.
These inputfiles are only depending on the type of building. What if someone wants to simulate a own created building? What are our options to make the input files for the simulations as modular as possible?

One solution i have in mind is that we can calculate the input files based on the used zone of the buildings and their boundary conditions. So we have covered the option that someone creates his one building with specific boundary conditions for each zone and we have covered that the boundary conditions for each zone are the same in the simulation and TEASER.

Next step is then to clarify if we need input files for every building we are creating or if it is possible to check if the necessary boundary conditions are already exported and can be used and if not to export them in a project wide input folder (like it is now)

Revise default values

We could define some default values, just as a basis for GUI view. It does not make sense for all attributes but for some (e.g. for static heat load calculation)

Rename UseConditionsOffice18599

Since we are using this class not only for office, but for all kinds of usages according to DIN18599, we should rename the class to "UseConditions18599" and change all related calls.

PEP 0008

Not all of our code is PEP 0008 compliant. Eclipse, Spyder and PyDev are all able to analyse the code according to pep 0008. We should try to be as compliant as possible

Python 2.7 GUI Support

I figuered out, that the GUI wont start under Python 2.7
The controller cannot be imported.
I think we can handle this by adding the init.py to the Controller.
Propably there are some more problems we have to fix that are Python 2.7 related (Some other GUI things). Or we don't support it anymore.

Readable output.txt rounds up to two digits after comma

In readable output.txt template, some values (e.g. RRest) are rounded up to two digits after comma, that is too much. E.g. RRest with this rounding leads to 2 degC deviation. We can keep the rounding for the areas and input parameter of TEASER, but not for calculated ones.

Allow definition of adjacent surfaces to other buildings

Similar to residential buildings, we should allow defining adjacent buildings for other type buildings. But for this, we should allow defining how much percent of which exterior surface is attached to another building. We could stay to rectangular buildings (allow four exterior walls in type buildings) and identify them by their orientation.

Add .spyderproject to gitignore

Currently I have a lot of trouble with eclipse, so I will try spyder as my new development environment. I will add .spyderproject to gitignore in the development branch.

With next bugfix in master, we can add it there

Linux/iOS/Mobile

Does the gui have to work under Linux, Mobile or iOS? Because she probably wont :-/

UnitTest UseConditions

For now the Unitttest covers only 66 % of the code of the UseConditions18599. We can improve that by:

  • save the use conditions 18599

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.