Compare commits

..

2 commits

Author SHA1 Message Date
4c2d3c1c0d Add results-file spec: the AI -> Business handover columns
Corrected and extended from the RL Evaluation seat's spreadsheet draft:
snake_case names with units, controller as a column value, identity and
version columns, the energy totals Business's register rows need, and the
open questions for Business. S0 (no hydrogen) is a Simulations scenario, not
a controller.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 14:36:22 +02:00
ef7857da31 Add shared Python environment, AICONTROL cluster folder, and CLAUDE.md
- Root pyproject.toml + uv.lock: one pinned Python 3.12 environment for every
  cluster (the Project Manual's rule), as a uv workspace; cluster code folders
  are workspace members.
- AICONTROL/: the AI & Control cluster package. spaces.py builds the 64-value
  observation and 4-value action spaces from configs/env.yaml; interface draft
  for the November session with Simulations; tests; clone-and-run README.
- .gitignore: Python environment, caches, W&B runs, raw data downloads.
- CLAUDE.md: repository guidance for Claude Code.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 14:15:02 +02:00

View file

@ -93,7 +93,7 @@ Set once per simulation run.
|---|---|---|---|
| `N_c_ele` | Number of cells | — | Usually difficult to find |
| `mu_F` | Faraday efficiency | — | Fall back to literature average (~0.950.99 for PEM) |
| `P_Electro_max` | Rated / max power | W | |
| `P_ele_max` | Rated / max power | W | |
| `P_ele_min` | Minimum operating power | W | Below this the electrolyser shuts off (efficiency cliff) |
| `I_ele_min` | Minimum operating current | A | Alternative to `P_ele_min` |
| `cal_H2` | H₂ production calibration factor | — | If we end up reading H₂ flow from measured data |
@ -104,14 +104,13 @@ Set once per simulation run.
|---|---|---|---|
| `N_c_fc` | Number of cells | — | |
| `utilisation_fc` | H₂ utilisation | % | |
| `P_FuelCell_max` | Maximum output power | W | **Project spec: 100 kW** |
| `P_fc_max` | Maximum output power | W | **Project spec: 100 kW** |
| `V_fc_min`, `V_fc_max` | Operating voltage range | V | |
### 1.3 Hydrogen tank
| Symbol | Name | Unit | Notes |
|---|---|---|---|
| `E_H2_max` | Maximum electrical energy capacity of the storage tank | J | |
| `V_H2_max` | Maximum stored volume | L (or kg) | **Project spec: up to 200 kg total across two tanks** |
| `V_H2_init` | Initial fill level | L (or kg) | |
| `T_tank` | Operating temperature | K | TBD — isothermal assumption likely fine |
@ -130,11 +129,9 @@ Set once per simulation run.
| Symbol | Name | Unit | Notes |
|---|---|---|---|
| `E_rated` | Rated energy capacity | Wh | |
| `E_battery_max` | Maximum energy capacity | Wh | |
| `Q_rated` | Rated charge capacity | Ah | |
| `P_battery_max` | Max (dis)charge power (assuming both are identical - this is the current assumption in the Simulink Controller) | W | |
| `P_battery_charge_max` | Max charge power | W | |
| `P_battery_discharge_max` | Max discharge power | W | |
| `P_batt_charge_max` | Max charge power | W | |
| `P_batt_discharge_max` | Max discharge power | W | |
| `SoC_init` | Initial state of charge | — (01) | |
| `SoC_min`, `SoC_max` | Operating window | — (01) | E.g. 0.10.9 |
| `eta_batt_ch`, `eta_batt_dis` | Round-trip efficiencies | — | Often split into charge & discharge |
@ -198,8 +195,6 @@ Carried forward to the next step.
| Symbol | Name | Unit |
|---|---|---|
| `SoC(t)` | Battery state of charge | — (01) |
| `E_battery_SOC(t)` | Energy currently present in battery | J |
| `E_H2_SOC(t)` | Electrical Energy that can be currently extracted from the Hydrogen Storage Tank | J |
| `H2_level(t)` | H₂ stored in tank | mol (or kg) |
| `T_tank(t)` | Tank temperature | K (only if non-isothermal model) |
| `p_tank(t)` | Tank pressure | bar (if modelled) |
@ -208,7 +203,7 @@ Carried forward to the next step.
| Symbol | Name | Unit |
|---|---|---|
| `P_PV(t)` | PV power available given irradiance | W |
| `P_PV_available(t)` | PV power available given irradiance | W |
| `P_PV_used(t)` | PV power actually consumed | W |
| `P_PV_curtailed(t)` | PV potential that was thrown away | W |
| `P_ele(t)` | Actual electrolyser consumption | W |
@ -217,12 +212,6 @@ Carried forward to the next step.
| `P_grid(t)` | Actual grid flow (signed) | W |
| `P_load_served_crit(t)` | Critical load served | W |
| `P_load_served_noncrit(t)` | Non-critical load served | W |
| `P_load_P(t)` | Power to be covered after PV (+ve = remaining power shortage, -ve = surplus to be used) | W |
| `P_load_PB(t)` | Power to be covered after PV and Battery (same convention as P_load_P) | W |
| `P_load_PBH(t)` | Power to be covered after PV, Battery and Hydrogen stroage tank (same convention as P_load_P(B)) | W |
| `P_battery_cont(t)` | Power amount the controller determines the battery should (dis)charge at (accounting for battery properties and demand) | W |
| `P_FuelCell_cont(t)` | Power amount the controller determines the fuel cell should provide (accounting for it's properties and demand) | W |
| `P_Electro_cont(t)` | Power amount the controller determines the electrolyser should extract (accounting for it's properties and demand) | W |
### 3.3 Mass flows (hydrogen)