Electrolyzer
Electrolyzer is a controls-oriented engineering model for hydrogen production systems. It simulates multi-stack electrolyzer operation, supports PEM and alkaline cell models, tracks degradation, and includes levelized cost of hydrogen (LCOH) analysis utilities.
What this repo provides
- Time-series simulation of one or more stacks with supervisory control logic.
- PEM and alkaline electrochemical cell models with polarization curve fitting.
- Degradation tracking (steady, fatigue, and on/off cycling) with optional penalty modes.
- Cost and LCOH analysis tools tied to simulation outputs.
- YAML-based modeling configuration with a JSON schema for validation and defaults.
Project structure
- Core simulation: electrolyzer/simulation
- Cell models: electrolyzer/simulation/cell_models
- Validation/schema: electrolyzer/tools/validation.py, electrolyzer/tools/modeling_schema.yaml
- LCOH analysis: electrolyzer/tools/analysis
- Examples: examples
- Documentation: docs
Installation
Python 3.11+ is required.
pip install .
Optional extras:
pip install ".[examples]" # notebooks + example dependencies
pip install -e ".[develop]" # dev + docs tooling
pip install -e ".[all]" # everything
More detail is in docs/installing.md.
Quick start
Run a simulation from a YAML configuration and a power signal:
import numpy as np
from electrolyzer.simulation.bert import run_electrolyzer
power_signal = np.ones(3600) * 1e6 # 1 MW for 1 hour, in Watts
elec_sys, results = run_electrolyzer("examples/example_02_electrolyzer/modeling_options.yaml", power_signal)
print(results.head())
Compute LCOH using the same signal:
import numpy as np
from electrolyzer.tools.analysis.run_lcoh import run_lcoh
power_signal = np.ones(3600) * 1e6
lcoe = 0.04418 # $/kWh
lcoh_breakdown, lcoh_value = run_lcoh(
"examples/example_04_lcoh/cost_modeling_options.yaml",
power_signal,
lcoe,
)
print(lcoh_value)
Modeling configuration
Models are configured with YAML files validated against a JSON schema. The schema defines defaults and accepted ranges for parameters like stack rating, cell geometry, degradation rates, and control policy settings.
- Schema: electrolyzer/tools/modeling_schema.yaml
- Example PEM configuration: examples/example_02_electrolyzer/modeling_options.yaml
- Example alkaline configuration: examples/example_06_alkaline/default_alkaline.yaml
Key configuration blocks:
electrolyzer.supervisor: system rating and number of stacks.electrolyzer.controller: control strategy and decision policy flags.electrolyzer.stack: stack sizing, cell type, and operational settings.electrolyzer.degradation: degradation rates and end-of-life parameters.electrolyzer.cell_params: PEM or alkaline cell model parameters.electrolyzer.costs: LCOH input data for capex, opex, feedstock, and finance.
Control strategies
The supervisor supports multiple control modes for stack scheduling and power distribution:
PowerSharingRotation,SequentialRotationEvenSplitEagerDeg,EvenSplitHesitantDegSequentialEvenWearDeg,SequentialSingleWearDegBaselineDegDecisionControl(composed from policy flags in the YAML)
See electrolyzer/simulation/supervisor.py for logic.
Degradation modeling
Each stack tracks voltage degradation from steady operation, fatigue, and on/off cycling. You can choose whether degradation penalizes hydrogen production or increases power draw. The end-of-life voltage delta drives replacement calculations in the LCOH workflow.
Outputs
run_electrolyzer returns a supervisor object and a pandas.DataFrame of time-series results.
The frame includes overall power and curtailment plus per-stack columns for degradation, cycles,
uptime, hydrogen production rate, and current density.
Examples
- Basic simulation: examples/example_02_electrolyzer/example_run.py
- Polarization curve fitting: examples/example_01_polarization/example_run.py
- Controller behavior: examples/example_05_controller/example_05_controller_options.py
- Alkaline configuration: examples/example_06_alkaline/alkaline_example_run.py
- LCOH calculation: examples/example_04_lcoh/cost_example_run.py
Documentation
Docs are in docs. The landing page is docs/intro.md. If you build the Jupyter Book locally, the generated site lands in docs/_build/html.
Testing
pytest
Metadata
Release files for electrolyzer 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| electrolyzer-0.2.1.tar.gz | 2.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| electrolyzer-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.7 MB
Release files / electrolyzer-0.2.1.tar.gz
| Download URL | electrolyzer-0.2.1.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7aebbf847301622d18409c269240c0499d5468878622271d8101e761abb908e8
|
|
BLAKE2b-256 checksum How to use checksums |
d37846352350edfdcb0d8cb02878a8a2c1416311ac558b075f18ac4998573bdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 27, 2026.
Transparency logRelease files / electrolyzer-0.2.1-py3-none-any.whl
| Download URL | electrolyzer-0.2.1-py3-none-any.whl |
|---|---|
| Size | 46.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bbeb261970b7ebc6bb168d6397ccc28a4ed9f8475bc9f0ea547ef1a2f0f9174f
|
|
BLAKE2b-256 checksum How to use checksums |
cd0d137ca37dd15e10617813db1bea379d6c9c58482cd78c38ae3ca0d12b9687
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 27, 2026.
Transparency log