Data from: Grid-connected PEM electrolysis: Experimental characterization and dispatch simulation across a decarbonizing grid
Data files
Sep 03, 2026 version files 72.10 MB
-
Fixed_ERCOT_Electrolyzer_Sim_Engine.zip
72.10 MB
-
README.md
5.69 KB
Abstract
This dataset contains the code, inputs, and outputs supporting a grid-connected PEM electrolyzer dispatch simulation. It includes experimental characterization data from a 60 kW NEL C-Series PEM electrolyzer collected across its full operating range (AC power, DC power, hydrogen production rate, and system efficiency), six years (2020–2025) of ERCOT locational marginal price and generation-mix data used as simulation inputs, and dispatch simulation outputs from a parametric sweep of approximately 9,468 supervisory control configurations. MATLAB code performs the core dispatch simulation; Python scripts handle data pre- and post-processing. All source files are plain text and viewable in standard code editors such as Visual Studio Code, including the MATLAB scripts. Users without access to MATLAB will need to reimplement the simulation logic in an open-source environment such as Python or Octave to reproduce results directly. The dataset supports reuse for evaluating electrolyzer performance under alternative grid conditions, testing supervisory control strategies against historical or synthetic price and emissions signals, and benchmarking hydrogen production cost and carbon intensity against other pathways such as steam methane reforming. The underlying experimental data reflects a commercial system originally configured for hydrogen refueling applications and may not generalize to electrolyzer stacks of different scale or design without adjustment. No personally identifiable or sensitive information is contained in this dataset; ERCOT market data used here is publicly available.
Dataset DOI: 10.5061/dryad.8931zcs64
Description of the data and file structure
This dataset supports characterization-informed simulation of a grid-connected proton-exchange membrane (PEM) electrolyzer. Experimental power and hydrogen-production traces provide the basis for the modeled system behavior. The MATLAB simulation engine applies supervisory-control cases to time-aligned ERCOT-like grid, generation, and electricity-price signals from 2020 through 2025.
The included outputs quantify electrolyzer electrical consumption, hydrogen production, electricity cost, grid-associated carbon dioxide emissions, operating states, and aggregate performance metrics. The dataset is organized so that the supplied inputs and case definitions can be used to reproduce the included machine-readable and tabular results.
Files and variables
configs/paper_cases/supervisory_control_cases.csv: supervisory-control settings for the simulated cases. Variables are:ID: case identifier.min_up_steps,min_down_steps: minimum on and off durations, in simulation steps.price_start,price_turndown,price_stop: electricity-price thresholds in USD/MWh.clean_ratio_start,clean_ratio_turndown,clean_ratio_stop: clean-energy-ratio thresholds.turndown_delay,recover_delay,price_delay: controller delay settings in simulation steps.
data/inputs/: time-aligned grid input signals used by the simulation. Each text file contains a timestamp and a numeric signal value.load.txtis grid load;wind.txt,solar.txt,nuclear.txt,hydro.txt,biomass.txt,bess.txt, andwsl.txtare non-fossil or project-specific generation/storage channels;gas_cc.txt,gas_other.txt, andcoal.txtare fossil-generation channels; andprice.txtis the electricity-price signal in USD/MWh. Power channels are expressed on the MW basis used by the model.data/experiment/: synchronized experimental PEM electrolyzer traces.timestamp.txtsupplies the common time axis.power_command.txt,stack_power.txt,smps_power.txt,chiller_power.txt, andsubsystem_power.txtrecord commanded or measured power signals.hydrogen_flow.txtandhydrogen_flow_cs.txtrecord hydrogen-flow signals.src/matlab/: MATLAB implementation of the simulation engine. Theengine/directory contains clean-energy, cost, and emissions calculations;models/contains system and component models;sim/contains the simulation and post-processing scripts; andio/contains input and HDF5/CSV export functions.outputs/results/: HDF5 result files. Included result files such asdefault_case.h5andclean_case.h5contain time, case identifiers, simulated grid power (P_grid_kW), hydrogen production rate (h2_kgph), cost, carbon dioxide emissions, aggregate energy/cost/hydrogen/emissions totals, and startup counts.outputs/tables/: CSV result exports.*_timeseries.csvfiles contain time-resolved variables includingclean_ratio,energy_price, system power, energy, cost, hydrogen production, and emissions.*_case.csvfiles provide aggregate and annual metrics alongside time-series data.src/python/analysis/: Python scripts for analysis, statistical summaries, and visualization of exported results.docs/: model-design notes, control-logic documentation, and project workflow documentation.tools/: optional utilities for inspecting HDF5 files, exporting result data, formatting materials, and visualizing time series.
Data conventions
P_grid_kWandSystem Power (kW): modeled electrolyzer system electrical draw, in kW.h2_kgph: hydrogen production rate, in kg/h.h2_kg: hydrogen produced during a simulation time step, in kg.e_MWh: electrical energy consumed during a simulation time step, in MWh.cost: electricity cost during a simulation time step, in USD.co2_kg: grid-associated carbon dioxide emissions during a simulation time step, in kg CO2.co2_per_h2: carbon dioxide intensity, in kg CO2 per kg H2.clean_ratio: fraction of the modeled grid supply represented by the project's clean-energy calculation.- Missing numeric values are represented by empty fields or
NaNwhere applicable. Ratio values may be undefined when hydrogen production is zero.
Code/software
The simulation engine is written in MATLAB. MATLAB must be available to reproduce simulation outputs. From the repository root, initialize the project path and run the simulation scripts:
run('src/matlab/startup.m')
run('src/matlab/sim/run_sim.m')
run('src/matlab/sim/post_sim.m')
run_sim.m loads the input signals and supervisory-control cases, simulates each case, and writes a chunked HDF5 file to outputs/results/results_timeseries.h5. post_sim.m reads that file and writes outputs/tables/results_timeseries.csv.
Python 3 is required for the scripts in src/python/analysis/ and the utilities in tools/. Packages used across these scripts include numpy, pandas, h5py, matplotlib, scipy, and statsmodels.
Access information
The dataset is available through Dryad at 10.5061/dryad.8931zcs64. The accompanying code repository is available at HydrogenDude/ERCOT_Electrolyzer_Sim_Engine.
The dataset contains grid and engineering simulation data and experimental system traces. It contains no human-subject or personally identifiable data.
