https://github.com/jackrekirby/heatmyhome-simulator-dev
This repository was used to develop the heating simulator for the HeatMyHome.ninja website. The website simulates domestic heating and solar systems to find the most optimal configuration. The simulations incorporate spatial and temporal factors, including solar and temperature weather data specific to a home’s location.
https://github.com/jackrekirby/heatmyhome-simulator-dev
cpp heating matlab modelling renewable-energy rust wasm
Last synced: 25 days ago
JSON representation
This repository was used to develop the heating simulator for the HeatMyHome.ninja website. The website simulates domestic heating and solar systems to find the most optimal configuration. The simulations incorporate spatial and temporal factors, including solar and temperature weather data specific to a home’s location.
- Host: GitHub
- URL: https://github.com/jackrekirby/heatmyhome-simulator-dev
- Owner: Jackrekirby
- License: bsd-3-clause
- Created: 2021-10-22T21:30:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-09T12:03:47.000Z (about 3 years ago)
- Last Synced: 2025-02-08T03:33:01.356Z (3 months ago)
- Topics: cpp, heating, matlab, modelling, renewable-energy, rust, wasm
- Language: C++
- Homepage: https://jackrekirby.github.io/HeatMyHome-Simulator-Dev/
- Size: 53.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# HeatMyHome Simulator Development
This repository was used to develop the heating simulator for the [HeatMyHome.ninja](https://heatmyhome.ninja) website.In summary, the website simulates a range of domestic heating systems alongside solar photovoltaic and solar thermal technologies to optimise the system configuration and estimate the operation costs, capital costs and operating emissions for each of the technologies simulated. It takes as input the user's location and home details to find the optimal heating system unique to the user's circumstances.
The GitHub repository for HeatMyHome can be found at [here](https://github.com/heatmyhome-ninja/HeatMyHome-Website). The repository used to develop the HeatMyHome user interface can be found [here](https://github.com/Jackrekirby/HeatMyHome-UI-Dev). The final simulation code along with API, and user interface can be found at the HeatMyHome repository. However this repository contains additional raw files, and one can go back through the commit history to view its progression.
A debug UI is used to interface with the simulator, which can be found [here](https://jackrekirby.github.io/HeatMyHome-Simulator-Dev/). If you wish to try the simulator with autofilled parameters, using the EPC fetching click [here](https://jackrekirby.github.io/HeatMyHome-Simulator-Dev/?autofill=1), and without EPC fetching [here](https://jackrekirby.github.io/HeatMyHome-Simulator-Dev/?autofill=2)
Here is a guide to the folder structure:
* `active_tests` contains any tests that are currently ongoing. Once a test has been completed, either because it failed, or has been implemented into the design is transferred to the `archive` folder.
* `api` contains the NodeJS server, built using Express that enables simulations to be processes server-side and calls the Government website to fetch Energy Performance Certificates.
* `compiler` contains the python script used as a wrapper to interface with Emscripten which compiles the C++ simulator to Web Assembly (WASM) and merges JavaScript files into a single file.
* `docs` contains the HTML, CSS, JS, WASM and other resources used by GitHub pages for the debug UI.
* `matlab` contains MATLAB files which were used to visualise the outputs of the simulator, in particular, visualisation of the liftime cost of each primary-heater solar-anciller combination as a surface, and the global optimisation algorithm developed to find the global minimum of each surface.
* `rust_simulator` contains the code and assets needed to run the simulator using Rust natively. It also contains the code required to compile the Rust simulator to WASM, either to NodeJS or for client-side use. Within the code is also means to generate output files in either CSV or JSON format, the ability to load input paramaters from file, and the ability to generate a performance analysis CSV file. Note the folder also contain a [modified version](rust_simulator/tests/pysim.py) of the original Python simulator, which can be called by command line arguments from the Rust simulator for testing pruposed.
* `wasm_simulator_v2` contains the second version of the C++ simulator. The first was written in an OOP approach, and the second using a functional approach. A 'EMSCRIPTEN ' macro is used to disable features not supported by WASM if you wish to compiled the simulator to WASM.Please contact me if you wish to use the simulator and need help navigating the repository.