Skip to main content

ETHOS.HiSim is a house infrastructure simulator

Project description

PyPI Version PyPI - License

Forschungszentrum Juelich Logo

ETHOS.HiSim - Household Infrastructure and Building Simulator

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

Install Graphviz

If you want to use the feature that generates system charts, you need to install GraphViz in your system. If you don't have Graphviz installed, you will experience error messages about a missing dot.exe under Windows.

Follow the installation instructions from here: https://www.graphviz.org/download/

(or simply disable the system charts)

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 ETHOS.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.9
conda activate hisimvenv

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

Install Package

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

pip install -e .

Optional: Set Environment Variables

Certain components might access APIs to retrieve data. In order to use them, you need to set the url and key as environment variables. This can be done with an .env file wihtin the HiSim root folder or with system tools. The environment variables are:

UTSP_URL
UTSP_API_KEY

Run Simple System Setups

Run the python interpreter in the HiSim/system_setups directory with the following command:

python ../hisim/hisim_main.py simple_system_setup_one.py

or

python ../hisim/hisim_main.py simple_system_setup_two.py

This command executes hisim_main.py on the setup function setup_function implemented in the files simple_system_setup_one.py and simple_system_setup_two.py that are stored in HiSim/system_setups. 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 System Setup

The directory HiSim/system_setups also contains a basic household configuration in the script basic_household.py. It can be executed with the following command:

python ../hisim/hisim_main.py basic_household.py

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 for covering the electricity and 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 to their corresponding output sequentially. This is different from automatically connecting inputs and outputs based on similarity. For a better understanding of explicit connection, proceed to section IO Connecting Functions.

Generic Setup Function Walkthrough

The basic structure of a setup function is as 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 system setup run.

Package Structure

The main program is executed from hisim/hisim/hisim_main.py. The Simulator(simulator.py) object groups Components declared and added from the setups functions. The ComponentWrapper (simulator.py) gathers together the Components inside a 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)
  • SimpleWaterStorage (simple_water_storage.py)
  • Transformer (transformer_rectifier.py)
  • PVSystem (generic_pv_system.py)
  • SimpleCHP (generic_chp.py)
  • CSVLoader (csvloader.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.ELECTRICITY_INPUT,
                                       src_object_name=my_appliance.component_name,
                                       src_field_name=my_appliance.ELECTRICITY_OUTPUT)

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.

Contributions and Collaborations

ETHOS.HiSim welcomes any kind of feedback, contributions, and collaborations. If you are interested in joining the project, adding new features, or providing valuable insights, feel free to reach out (email to k.rieck@fz-juelich.de) and participate in our HiSim developer meetings held every second Monday. Additionally, we encourage you to utilize our Issue section to share feedback or report any bugs you encounter. We look forward to your contributions and to making meaningful improvements. Happy coding!

License

MIT License

Copyright (C) 2020-2021 Noah Pflugradt, Leander Kotzur, Detlef Stolten, Tjarko Tjaden, Kevin Knosala, Sebastian Dickler, Katharina Rieck, David Neuroth, Johanna Ganglbauer, Vitor Zago, Frank Burkard, Maximilian Hillen, Marwa Alfouly, Franz Oldopp, Markus Blasberg, Kristina Dabrock

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

About Us

Juelich Systems Analysis

We are the Institute of Climate and Energy Systems - Juelich Systems Analysis 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

Development Partners:

Hochschule Emden/Leer inside the project "Piegstrom".

4ward Energy inside the EU project "WHY" and the FFG project "AI4CarbonFreeHeating"

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

For this work weather data is based on data from ["German Weather Service (Deutscher Wetterdienst-DWD)"](https://www.dwd.de/DE/Home/home_node.html/, https://www.dwd.de/DE/service/rechtliche_hinweise/rechtliche_hinweise_node.html) and "NREL National Solar Radiation Database" (License: Creative Commons Attribution 3.0 United States License, Creative Commons BY 4.0); individual values are averaged.

DWD Logo

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No. 891943.

EU Logo

WHY Logo

This project furthermore recieves funding by the FFG through the project "AI4CarbonFreeHeating".

AI4CFH Logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hisim-1.2.3.tar.gz (84.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hisim-1.2.3-py2.py3-none-any.whl (85.2 MB view details)

Uploaded Python 2Python 3

File details

Details for the file hisim-1.2.3.tar.gz.

File metadata

  • Download URL: hisim-1.2.3.tar.gz
  • Upload date:
  • Size: 84.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hisim-1.2.3.tar.gz
Algorithm Hash digest
SHA256 1b7e4e8e944824303613940e0c770f2c674cafc21869b6a9607214f307380e73
MD5 13cb2e316eef97988601b3f3a3891419
BLAKE2b-256 30609b63260c55129c11ae565a44755a3d58f0a34a4d5b92bb8fa4c1671abf1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for hisim-1.2.3.tar.gz:

Publisher: pypi-publish.yml on FZJ-IEK3-VSA/HiSim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hisim-1.2.3-py2.py3-none-any.whl.

File metadata

  • Download URL: hisim-1.2.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 85.2 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hisim-1.2.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7150344a31e87b4453dba94cc2331f945e1c4b8ae39e3905723f2228e0d552a5
MD5 782c1b79cf32ee6ea5114611c1e1dd6b
BLAKE2b-256 7a06cd8b5e914a8678940d21d02402b8fc8633932ef0a061fba5eb9665daf889

See more details on using hashes here.

Provenance

The following attestation bundles were made for hisim-1.2.3-py2.py3-none-any.whl:

Publisher: pypi-publish.yml on FZJ-IEK3-VSA/HiSim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page