Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation: Update Readme and add AI4C project reference #381

Merged
merged 2 commits into from
Feb 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -197,3 +197,6 @@ hisim/inputs/extract_relevant_climate_data.py
# cluster slurm outputs
system_setups/*.out
system_setups/district_system_setup/results

# history extension
.history/
3 changes: 0 additions & 3 deletions .prospector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,6 @@ pydocstyle:
- D211
- D203

mypy:
run: true

bandit:
run: false
options:
Expand Down
Binary file added AI4CFH-Logo-S.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
77 changes: 28 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,8 @@ 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.
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
-----------------------
Expand All @@ -114,14 +112,14 @@ The system is set up with the following elements:
* Building
* Heat Pump

Hence, photovoltaic modules and the heat pump are responsible to cover the electricity the thermal energy demands as
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 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`.
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 follows:
The basic structure of a setup function is as follows:

1. Set the simulation parameters (See `SimulationParameters` class in `hisim/hisim/component.py`)
1. Create a `Component` object and add it to `Simulator` object
Expand All @@ -135,17 +133,11 @@ Once you are done, you can run the setup function according to the description i

Package Structure
-----------
The main program is executed from `hisim/hisim/hisim_main.py`. The `Simulator`(`simulator.py`) object groups `Component`
s declared and added from the setups functions. The `ComponentWrapper`(`simulator.py`) gathers together the `Component`s
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`).
The main program is executed from `hisim/hisim/hisim_main.py`. The `Simulator`(`simulator.py`) object groups `Component`s declared and added from the setups functions. The `ComponentWrapper` (`simulator.py`) gathers together the `Component`s 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:
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
Expand All @@ -156,27 +148,21 @@ These methods are used by `Simulator` to execute the simulation and generate the

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:
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`)
- `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:
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:

```python
my_home_electricity_grid.connect_input(input_fieldname=my_home_electricity_grid.ELECTRICITY_INPUT,
Expand All @@ -190,9 +176,7 @@ A configuration automator is under development and has the goal to reduce connec

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.
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.
Expand All @@ -204,47 +188,42 @@ Happy coding!

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
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

<a href="https://www.fz-juelich.de/iek/iek-3/DE/Home/home_node.html"><img src="https://www.fz-juelich.de/SharedDocs/Bilder/IEK/IEK-3/Abteilungen2015/VSA_DepartmentPicture_2019-02-04_459x244_2480x1317.jpg?__blob=normal" alt="Institut TSA"></a>
<a href="https://www.fz-juelich.de/en/ice/ice-2"><img src="https://www.fz-juelich.de/SharedDocs/Bilder/IEK/IEK-3/Abteilungen2015/VSA_DepartmentPicture_2019-02-04_459x244_2480x1317.jpg?__blob=normal" alt="Juelich Systems Analysis"></a>

We are
the [Institute of Energy and Climate Research - Techno-economic Systems Analysis (IEK-3)](https://www.fz-juelich.de/iek/iek-3/DE/Home/home_node.html)
belonging to the [Forschungszentrum Jülich](www.fz-juelich.de/). 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.
We are the [Institute of Climate and Energy Systems - Juelich Systems Analysis](https://www.fz-juelich.de/en/ice/ice-2) belonging to the [Forschungszentrum Jülich](www.fz-juelich.de/en). 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"
**4ward Energy** inside the EU project "WHY" and the FFG project "[AI4CarbonFreeHeating](https://www.4wardenergy.at/de/referenzen/ai4carbonfreeheating)"

## Acknowledgement

This work was supported by the Helmholtz Association under the Joint
Initiative ["Energy System 2050 A Contribution of the Research Field Energy"](https://www.helmholtz.de/en/research/energy/energy_system_2050/)
.

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/) and ["NREL National Solar Radiation Database"](https://nsrdb.nrel.gov/data-viewer/download/intro/) (License: Creative Commons Attribution 3.0 United States License); individual values are averaged.
Initiative ["Energy System 2050 A Contribution of the Research Field Energy"](https://www.helmholtz.de/en/research/energy/energy_system_2050/).

<a href="https://www.helmholtz.de/en/"><img src="https://www.helmholtz.de/fileadmin/user_upload/05_aktuelles/Marke_Design/logos/HG_LOGO_S_ENG_RGB.jpg" alt="Helmholtz Logo" width="200px" style="float:right"></a>

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/) and ["NREL National Solar Radiation Database"](https://nsrdb.nrel.gov/data-viewer/download/intro/) (License: Creative Commons Attribution 3.0 United States License); individual values are averaged.

<a href="https://www.dwd.de/"><img src="https://www.dwd.de/SharedDocs/bilder/DE/logos/dwd/dwd_logo_258x69.png?__blob=normal&v=1" alt="DWD Logo" width="200px" style="float:right"></a>

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

<img src="eulogo.png" alt="EU Logo" width="200px" style="float:right"></a>

<a href="https://www.why-h2020.eu/"><img src="whylogo.jpg" alt="WHY Logo" width="200px" style="float:right"></a>

This project furthermore recieves funding by the FFG through the project "[AI4CarbonFreeHeating](https://www.4wardenergy.at/de/referenzen/ai4carbonfreeheating)".

<a href="https://www.4wardenergy.at/de/referenzen/ai4carbonfreeheating"><img src="AI4CFH-Logo-S.jpg" alt="AI4CFH Logo" width="200px" style="float:right"></a>