0023. Electrochemical cells as a versioned contract with specified performance¶
- Status: Accepted
- Date: 2026-10-27
Context¶
Process-library entries for hydrogen by electrolysis and for chlor-alkali (process-library#117,
121) need a cell that links current, products, electricity and heat. The flowsheet's reactors¶
(reactor: conversion | equilibrium | gibbs | pfr | cstr | batch) and the DWSIM translation
have no current, electron count, Faradaic efficiency or voltage, and a conversion reactor can
prescribe the chemistry but not the electricity or the heat it releases. Predictive
electrochemistry (polarisation curves, electrolyte activities) needs electrolyte
thermodynamics that core does not have yet. The options were a new reactor: kind
inside process/flowsheet.yaml, which changes the generator fingerprint of every sheet and
mixes cell data into the flowsheet, or a separate file that refers to the flowsheet.
Decision¶
- A new optional plant file
process/cells.yaml, schemacheme/electrochemical-cells/v1(kind: electrochemical_cells), owned bydomains/process/electrochemical_cell.pyand listed in the schema catalogue asprocess-cells. A cell names an overall reaction ofprocess/reactions.yaml, the electrons per extent, its anode and cathode half-reactions (ions as formula and charge,e-), the dissociation of dissolved components, the cells in series, the current, the Faradaic efficiency and side reactions' current fractions, the voltage, crossover and purge fractions, the thermal boundary, the operating range and an optional link to a flowsheet step and its electricity and heat streams. Values reuse the processQuantity(provenance, source); heats of reaction, formulas and molar masses come from the reactions and materials files. - The performance is specified. The voltage and efficiencies are inputs; the model
(
faraday-balancev1) does exact balances only: extents by Faraday's law, charge, elements,P = N U Icounted once,U_tn = dH / (n F)andQ = P - sum xi dHat an isothermal boundary.performance: predictive, an adiabatic boundary and any missing current, efficiency, voltage, thermal boundary or heat of reaction are refused with an error finding (cheme.cell-*); nothing is assumed in their place. cheme process cellprints the result (--jsonwith model, version, core version, assumptions, limitations, qualified cases and input fingerprints);cheme validatereports the findings;cheme maturitygives a linked step the model basiselectrochemical-cell(not predictive, sourced when voltage and efficiencies are given with a source).
Consequences¶
- Positive: electrolysis and chlor-alkali flowsheets can state their cells with provenance and get charge, element and energy closure, kWh per kg and the heat duty without double counting electricity; the flowsheet, its generator fingerprint and the DWSIM route are unchanged.
- Positive: the separation between specified data and prediction is explicit in the file
(
performance:) and in the maturity report. - Negative: a cell is not a DWSIM unit; the linked step's streams must be written from the cell's result (the link checks them, it does not fill them).
- Known limitations: no electrolyte properties (heats of dilution, activities), no adiabatic boundary or temperature rise, no polarisation model; the qualification covers water electrolysis at 1.6-1.9 V and a chlor-alkali membrane cell at 3.0 V and 6 kA/m2 (docs/framework/electrochemical-cells.md).
Evidence¶
src/chemeascode/domains/process/electrochemical_cell.py,tests/test_electrochemical_cell.py,tests/data/electrochemical/,docs/framework/electrochemical-cells.md.