Skip to main content

Electrolyzer

CI Status Lint

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

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.

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, SequentialRotation
  • EvenSplitEagerDeg, EvenSplitHesitantDeg
  • SequentialEvenWearDeg, SequentialSingleWearDeg
  • BaselineDeg
  • DecisionControl (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

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)

Source distribution for electrolyzer 0.2.1
File Size Uploaded
electrolyzer-0.2.1.tar.gz 2.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for electrolyzer 0.2.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page