HiSim - House Infrastructure Simulator

Related tags

MiscellaneousHiSim
Overview

Forschungszentrum Juelich Logo

HiSim - House Infrastructure Simulator

HiSim is a Python package for simulation and analysis of household scenarios using modern components as alternative to fossil fuel based ones. This package integrates load profiles generation of electricity consumption, heating demand, electricity generation, and strategies of smart strategies of modern components, such as heat pump, battery, electric vehicle or thermal energy storage. HiSim is a package under development by Forschungszentrum Jülich und Hochschule Emden/Leer.

Clone repository

To clone this repository, enter the following command to your terminal:

git clone https://github.com/FZJ-IEK3-VSA/HiSim.git

Virtual Environment

Before installing hisim, it is recommended to set up a python virtual environment. Let hisimvenv be the name of virtual environment to be created. For Windows users, setting the virtual environment in the path \hisim is done with the command line:

python -m venv hisimvenv

After its creation, the virtual environment can be activated in the same directory:

hisimvenv\Scripts\activate

For Linux/Mac users, the virtual environment is set up and activated as follows:

virtual hisimvenv
source hisimvenv/bin/activate

Alternatively, Anaconda can be used to set up and activate the virtual environment:

conda create -n hisimvenv python=3.8
conda activate hisimvenv

With the successful activation, hisim is ready to be locally installed.

Install package

After setting up the virtual environment, install the package to your local libraries:

python setup.py install

Run Simple Examples

Run the python interpreter in the hisim/examples directory with the following command:

python ../hisim/hisim.py examples first_example

This command executes hisim.py on the setup function first_example implemented in the file examples.py that is stored in hisim/examples. The same file contains another setup function that can be used: second_example. The results can be visualized under directory results created under the same directory where the script with the setup function is located.

Run Basic Household Example

The directory hisim\examples also contains a basic household configuration in the script basic_household.py. The first setup function (basic_household_explicit) can be executed with the following command:

python ../hisim/hisim.py basic_household basic_household_explicit

The system is set up with the following elements:

  • Occupancy (Residents' Demands)
  • Weather
  • Photovoltaic System
  • Building
  • Heat Pump

Hence, photovoltaic modules and the heat pump are responsible to cover the electricity the thermal energy demands as best as possible. As the name of the setup function says, the components are explicitly connected to each other, binding inputs correspondingly to its output sequentially. This is difference then automatically connecting inputs and outputs based its similarity. For a better understanding of explicit connection, proceed to session IO Connecting Functions.

Generic Setup Function Walkthrough

The basic structure of a setup function follows:

  1. Set the simulation parameters (See SimulationParameters class in hisim/hisim/component.py)
  2. Create a Component object and add it to Simulator object
    1. Create a Component object from one of the child classes implemented in hisim/hisim/components
      1. Check if Component class has been correctly imported
    2. If necessary, connect your object's inputs with previous created Component objects' outputs.
    3. Finally, add your Component object to Simulator object
  3. Repeat step 2 while all the necessary components have been created, connected and added to the Simulator object.

Once you are done, you can run the setup function according to the description in the simple example run.

Package Structure

The main program is executed from hisim/hisim/hisim.py. The Simulator(simulator.py) object groups Components declared and added from the setups functions. The ComponentWrapper(simulator.py) gathers together the Components inside an Simulator Object. The Simulator object performs the entire simulation under the function run_all_timesteps and stores the results in a Python pickle data.pkl in a subdirectory of hisim/hisim/results named after the executed setup function. Plots and the report are automatically generated from the pickle by the class PostProcessor (hisim/hisim/postprocessing/postprocessing.py).

Component Class

A child class inherits from the Component class in hisim/hisim/component.py and has to have the following methods implemented:

  • i_save_state: updates previous state variable with the current state variable
  • i_restore_state: updates current state variable with the previous state variable
  • i_simulate: performs a timestep iteration for the Component
  • i_doublecheck: checks if the values are expected throughout the iteration

These methods are used by Simulator to execute the simulation and generate the results.

List of Component children

Theses classes inherent from Component (component.py) class and can be used in your setup function to customize different configurations. All Component class children are stored in hisim/hisim/components directory. Some of these classes are:

  • RandomNumbers (random_numbers.py)
  • SimpleController (simple_controller.py)
  • SimpleSotrage (simple_storage.py)
  • Transformer (transformer.py)
  • PVSystem (pvs.py)
  • CHPSystem (chp_system.py)
  • Csvload (csvload.py)
  • SumBuilderForTwoInputs (sumbuilder.py)
  • SumBuilderForThreeInputs (sumbuilder.py)
  • ToDo: more components to be added

Connecting Input/Outputs

Let my_home_electricity_grid and my_appliance be Component objects used in the setup function. The object my_apppliance has an output ElectricityOutput that has to be connected to an object ElectricityGrid. The object my_home_electricity_grid has an input ElectricityInput, where this connection takes place. In the setup function, the connection is performed with the method connect_input from the Simulator class:

my_home_electricity_grid.connect_input(input_fieldname=my_home_electricity_grid.ElectricityInput,
                                       src_object_name=my_appliance.ComponentName,
                                       src_field_name=my_appliance.ElectricityOutput)

Configuration Automator

A configuration automator is under development and has the goal to reduce connections calls among similar components.

Post Processing

After the simulator runs all time steps, the post processing (postprocessing.py) reads the persistent saved results, plots the data and generates a report.

License

MIT License

Copyright (C) 2020-2021 Noah Pflugradt, Vitor Zago, Frank Burkard, Tjarko Tjaden, Leander Kotzur, Detlef Stolten

You should have received a copy of the MIT License along with this program. If not, see https://opensource.org/licenses/MIT

About Us

Institut TSA

We are the Institute of Energy and Climate Research - Techno-economic Systems Analysis (IEK-3) belonging to the Forschungszentrum Jülich. Our interdisciplinary institute's research is focusing on energy-related process and systems analyses. Data searches and system simulations are used to determine energy and mass balances, as well as to evaluate performance, emissions and costs of energy systems. The results are used for performing comparative assessment studies between the various systems. Our current priorities include the development of energy strategies, in accordance with the German Federal Government’s greenhouse gas reduction targets, by designing new infrastructures for sustainable and secure energy supply chains and by conducting cost analysis studies for integrating new technologies into future energy market frameworks.

Contributions and Users

This software is developed together with the Hochschule Emden/Leer inside the project "Piegstrom".

Acknowledgement

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

Helmholtz Logo

Owner
FZJ-IEK3
Institute of Energy and Climate Research - Techno-economic Systems Analysis (IEK-3)
FZJ-IEK3
Automated, progress quest-inspired procedural adventuring

Tales of an Endless Journey (TEJ) Automated, progress quest-inspired procedural adventuring What is this project? Journey is the result of many, many

8 Dec 14, 2021
Track testrail productivity in automated reporting to multiple teams

django_web_app_for_testrail testrail is a test case management tool which helps any organization to track all consumption and testing of manual and au

Vignesh 2 Nov 21, 2021
Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin.

Wagtail Lottie Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin. Usage Export your ani

Alexis Le Baron 7 Aug 18, 2022
Код файнтюнинга оригинального CLIP на русский язык

О чем репозиторий В этом репозитории представлен способ файтюнить оригинальный CLIP на новый язык Почему модель не видит женщину и откуда на картинке

Valentina Biryukova 7 Feb 06, 2022
Minecraft Multi-Server Pinger Discord Embed

Minecraft Network Pinger Minecraft Multi-Server Pinger Discord Embed What does this bot do? It sends an embed and uses mcsrvstat API and checks if the

YungHub 2 Jan 05, 2022
Nook is a simple, concatenative programming language written in Python.

Nook Nook is a simple, concatenative programming language written in Python. Status Nook is currently WIP. It lacks a lot of basic feature, and will n

Wumi4 4 Jul 20, 2022
Transpiles some Python into human-readable Golang.

pytago Transpiles some Python into human-readable Golang. Try out the web demo Installation and usage There are two "officially" supported ways to use

Michael Phelps 318 Jan 03, 2023
Beancount Importers for DKB (Deutsche Kredit Bank) CSV Exports

Beancount DKB Importer beancount-dkb provides an Importer for converting CSV exports of DKB (Deutsche Kreditbank) account summaries to the Beancount f

Siddhant Goel 24 Aug 06, 2022
A simple armature retargeting tool for Blender

Simple-Retarget-Tool-Blender A simple armature retargeting tool for Blender Update V2: Set Rest Pose to easily apply rest pose. Preset Import/Export.

Fahad Hasan Pathik 74 Jan 04, 2023
SciPy library main repository

SciPy SciPy (pronounced "Sigh Pie") is an open-source software for mathematics, science, and engineering. It includes modules for statistics, optimiza

SciPy 10.7k Jan 09, 2023
Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım.

Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım. Bu repo kitaptaki örnek programları çalıştığım oyun al

Burak Selim Senyurt 22 Oct 26, 2022
For my Philips Airpurifier AC3259/10

Philips-Airpurifier For my Philips Airpurifier AC3259/10 I will try to keep this code

AcidSleeper 7 Feb 26, 2022
Assembly example for CadQuery

Spindle and vacuum attachment This is a model of the vacuum attachment for my Workbee CNC router. There is a mist spray coming from the left hand side

Marcus Boyd 20 Sep 16, 2022
WATTS provides a set of Python classes that can manage simulation workflows for multiple codes where information is exchanged at a coarse level

WATTS (Workflow and Template Toolkit for Simulation) provides a set of Python classes that can manage simulation workflows for multiple codes where information is exchanged at a coarse level.

13 Dec 23, 2022
berisi kodingan kodingan python umum yang kubuat.

python-codevault berisi kodingan kodingan python umum yang kubuat. untuk memudahkan transisi dan menjadi refrensi tutorial. daily challange for myself

Agung Zon Blade 1 Dec 19, 2021
Research using python - Guide for development of research code (using Anaconda Python)

Guide for development of research code (using Anaconda Python) TL;DR: One time s

Ziv Yaniv 1 Feb 01, 2022
List of Linux Tools I put on almost every linux / Debian host

Linux-Tools List of Linux Tools I put on almost every Linux / Debian host Installed: geany -- GUI editor/ notepad++ like chkservice -- TUI Linux ser

Stew Alexander 20 Jan 02, 2023
Airplane reservation system python 2

airplane-reservation-system-python-2 Announcement 🔊 : 🔴 IMPORTANT 🔴 : Few new things have been added into the code [16/05/2021] different names is

voyager2005 1 Dec 06, 2021
Python Monopoly Simulator

Monopoly simulator Original creator: Games Computer Play YouTube: https://www.youtube.com/channel/UCTrp88f-QJ1SqKX8o5IDhWQ Config file (optional) conf

Games Computers Play 37 Jan 03, 2023
AKSWINPOSTINIT -- AKS Windows node post provisioning initialization

AKSWINPOSTINIT -- AKS Windows node post provisioning initialization Features This is a tool that provides one-time powershell script initilization for

Ping He 3 Nov 25, 2021