{% extends "dashboard/base.html" %} {% load static %} {% block title %}Help{% endblock %} {% block content %}

helpHelp & Guide

Version {{ version }}

R2H2 is a desktop simulation tool for renewable-to-hydrogen systems. This page covers the key workflows and tips to get the most from the app.

play_circle Getting started
1
Configure wind data — Go to Wind Data in the sidebar and upload one or more .h5 wind file. These files are of a specific structure, and we are currently building a catalogue of wind inputs for this purpose. Please visit our Data Resource Library to download our reference files (https://www.renewabletools.co.uk/r2h2/data-resources/).
2
Build your components — Visit the Component Library to create Battery, Electrolyser Unit, Electro Cell and Thermal Properties records. The pre-loaded Main components are a good starting point.
3
Set up a simulation — Open Models & Simulations, select a model, then link your components and a wind file. The Main Model simulation is pre-configured with default component values.
4
Run — Click Run Simulation on the simulation detail page. Progress is shown in real time. Results are saved automatically and can be viewed after the run completes.
5
Explore results — Click a completed run to open the results dashboard with H₂ production, SoC, thermal and degradation charts.
code Custom controllers
lightbulb What is a controller?

A controller is a Python file with a single control(units, battery, t_out, settings) function. It replaces the built-in dispatch logic and lets you implement custom on/off scheduling or proportional sharing strategies.

edit_note Creating a controller

On the simulation detail page, open the Controller panel → click New → choose a base file and enter a name (lowercase letters and underscores only, no .py extension). Edit the code directly in the browser. Click Save before running.

Full reference: Dynamic Controller User Guide

warning Controller timeouts

If a custom controller takes longer than 30 s for a single hourly call, it is automatically cancelled and the built-in dynamicControl is used as a fallback. A warning is raised in the run log.

timeline Controller causality

Custom controllers must be causal: for output sample k, only input data from indices 0..k and prior internal state may be used. Do not use future samples beyond the current time step when making a decision.

tips_and_updates Quick tips
content_copy Duplicate a simulation

On the Models & Simulations list, use the duplicate icon to copy a simulation and all its component links. Useful for parameter sweeps without touching the original.

calendar_today Set a datum date

Set a Datum date on the simulation to align result charts to a real calendar timeline. The datum date is also used as the origin for 1 Hz data collection date ranges.

hourglass_top Limit simulation duration

Use the Duration (days) field to run only the first N days of a wind file — useful for quick parameter checks before committing to a full multi-year run.

query_stats 1 Hz data collection

Enable Collect 1 Hz data on the simulation detail page to record per-second time-series over a chosen date window. The data is stored in the output HDF5 under /time_series_1hz and can be plotted directly in the results view. Limit the window to roughly 3 months or less to keep file sizes manageable.

air Multiple wind files

Link more than one wind HDF5 file to a simulation on the Wind Data panel. Files are concatenated in sequence order (drag rows to reorder), allowing multi-year or multi-site wind inputs without modifying the source files.

link Link or unlink components

On the simulation detail page each component group has an Add button to link an existing unlinked instance, and a Not linked button on each row to remove it. Components are shared across simulations — unlinking does not delete the component.

info About
Version{{ version }}
LicenceGNU GPL v3
AuthorsAdam Stock, Francesco Superchi, Peter McCallum
InstitutionHeriot-Watt University
Latest Releasepypi.org/project/r2h2/
Sourcegithub.com/RenewableTools/R2H2_app
Django{{ django_version }}
Python{{ python_version }}
update Update

Pull the latest source code from GitHub. You will need to restart the app after updating.

{% endblock %}