@@ -17,6 +17,47 @@ with one click.
1717
1818---
1919
20+ ## What's new in v0.5
21+
22+ ### Flow-field pressure drop + pump power (Phase 1)
23+
24+ - ** ` src/fluid.py ` ** — Hagen-Poiseuille ΔP in laminaren Kanälen +
25+ explizite Darcy-Weisbach-Warnung bei Re > 2000 (keine stille
26+ Extrapolation).
27+ - ** Anoden-Wasser-Fluss aus Faraday + λ** — stoichiometrische
28+ Volumen-Flussrate pro Zelle, N Zellen hydraulisch parallel am Stack-
29+ Manifold.
30+ - ** Assembly-Tab: ` ΔP [kPa] ` , ` v [cm/s] ` , ` Re ` , ` Pump [W] ` , Parasit-Anteil**
31+ der Stack-Leistung als Metrics. Pump-Leistung fließt nicht (noch) in
32+ den η-Wert, wird aber transparent daneben gezeigt.
33+
34+ ### Rectangular stacks (Phase 2)
35+
36+ - Neues Feld ` aspect_ratio ` (dimensionslos, default 1.0) auf
37+ ` StackAssembly ` — area-preserving: ` w·h = active_area_m² ` , ` w/h = ratio ` .
38+ v0.4-JSONs laden weiter als quadratisch.
39+ - BPP-Außenmaße folgen als ` (w + 2·frame, h + 2·frame) ` — echte
40+ rechteckige Plates. Flow-Field-Rendering (alle drei Pattern) richtet
41+ sich nach den rechteckigen Dimensionen.
42+ - Sidebar-Slider 0.25…4.0, Caption zeigt resultierende w × h.
43+
44+ ### Literature validation (Phase 3)
45+
46+ Zero-Fit-Property: nur dokumentierte Betriebsbedingungen (T, p, Membran)
47+ werden als Inputs genutzt — keine kinetischen Parameter auf die
48+ Test-Kurve gefittet.
49+
50+ | Datensatz | Typ | Status |
51+ | ---| ---| ---|
52+ | Bernt 2020 Fig. 1 (2 mg Ir/cm², 80 °C, Nafion 212) | 15 Punkte, ein Setup | Low-j PASS (~ 35 mV), Full-range strict-xfail @ 510 mV |
53+ | Zimmer 2026 Fig. 1c (N115 + 80 °C, 127 Paper) | Envelope + ±σ, 5 Benchmark j | ** Envelope PASS** , ±1σ strict-xfail (+175 mV bias) |
54+
55+ Beide xfails sind dokumentierte v0.6-Kalibrierungsziele
56+ (` docs/validation/bernt2020_v0.5.md ` , ` docs/validation/zimmer2026_v0.5.md ` ).
57+ Rationale für die xfail-Strategie: [ ADR-007] ( docs/adr/007-v0.5-architecture.md ) .
58+
59+ ---
60+
2061## What's in it (v0.4)
2162
2263### Visual Stack Designer (new in v0.4)
@@ -125,7 +166,7 @@ See [docs/INSTALL.md](docs/INSTALL.md) for detailed setup and troubleshooting.
125166pytest tests/ -v
126167```
127168
128- ** 78 tests passing** in <0. 2 s. Covers:
169+ ** 161 tests passing + 2 strict-xfail ** in ~ 2 s. Covers:
129170
130171- ** Tafel-slope validation** against analytical ` b = 2.303·R·T/(α·F) ` (<0.5 % error)
131172- ** Monotonicity** of polarization curve
@@ -144,11 +185,24 @@ pytest tests/ -v
144185- Tafel slope ` b = 2.303·R·T/(α·F) ` matched to < 0.5 %
145186- U_cell at 80 °C, 10 bar, 1 A/cm²: 1.7–2.1 V (Carmo et al. 2013 Fig. 6)
146187
147- ### Planned (v0.5)
148-
149- - Comparison to published polarization curves (Bernt 2018, García-Valverde 2012)
150- - Temperature and pressure sweeps vs. experimental data
151- - Error metrics: RMSE, MAPE, max deviation
188+ ### Literature (v0.5, zero-fit)
189+
190+ - ** Bernt 2020, Fig. 1** — Low-j-Shape PASS bei ~ 35 mV RMSE (j ≤ 0.1 A/cm²,
191+ Tafel-Region). Full-range strict-xfail bei 510 mV — R_ohm-Overshoot und
192+ generisches j₀,Anode unterschätzen das Umicore-Elyst-Ir75-Premium-Setup.
193+ Dokumentiert in [ ` docs/validation/bernt2020_v0.5.md ` ] ( docs/validation/bernt2020_v0.5.md ) .
194+ - ** Zimmer 2026, Fig. 1c** — aggregierte Literatur, 127 Paper, gefiltert
195+ auf Nafion N115 + 80 °C. ** Envelope-Test PASS** an allen 5 Benchmark-j
196+ (Model bleibt in [ E_min, E_max] ). ±1σ-Band strict-xfail mit +175 mV
197+ Bias. Dokumentiert in [ ` docs/validation/zimmer2026_v0.5.md ` ] ( docs/validation/zimmer2026_v0.5.md ) .
198+ - ** Warum zwei Papers + xfail statt fit:** Calibrating to Bernt würde die
199+ Zero-Fit-Property der Test-Suite brechen und das Model auf ein
200+ Premium-Setup coupeln. Zimmer's σ > 500 mV bei gleicher j zeigt, dass
201+ kein einzelnes Paper als Wahrheit gilt. Rationale in
202+ [ ADR-007] ( docs/adr/007-v0.5-architecture.md ) .
203+ - ** v0.6-Pfad:** Katalysator-/Kontakt-Resistenz-Preset-System mit
204+ unabhängig extrahierten kinetischen Parametern. Strict-xfail zwingt
205+ explizites Re-Baseline, wenn die Kalibrierung landet.
152206
153207---
154208
@@ -163,8 +217,12 @@ pem-ec-designer/
163217│ ├── stack.py N-cell serial aggregation
164218│ ├── thermal.py 0D energy balance + coolant sizing
165219│ ├── materials.py Membrane/catalyst/GDL presets with refs
166- │ └── streamlit_app.py Streamlit UI (5 tabs)
167- ├── tests/ 78 pytest tests
220+ │ ├── components.py Stack-component presets (BPP, end plate, ...)
221+ │ ├── assembly.py StackAssembly dataclass + ΔP/pump composition
222+ │ ├── fluid.py Hagen-Poiseuille / Darcy-Weisbach (v0.5)
223+ │ ├── visualization.py Plotly cross-section + BPP top view
224+ │ └── streamlit_app.py Streamlit UI (6 tabs)
225+ ├── tests/ 161 pytest tests + 2 strict-xfail (v0.6 targets)
168226├── docs/
169227│ ├── HOW-IT-WORKS.md User-facing guide with screenshots
170228│ ├── INSTALL.md Detailed setup + troubleshooting
@@ -190,8 +248,10 @@ pem-ec-designer/
190248| ---| ---| ---|
191249| ** v0.1** | Cell electrochemistry + Streamlit UI + 1 analytical validation | ✅ Done |
192250| ** v0.2** | Stack aggregation, 0D thermal, material presets, tabbed UI | ✅ Done |
193- | v0.3 | 2D cross-section visualization, Tafel semi-log plot, efficiency map, comparison mode | Planned |
194- | v0.5 | 1D membrane (Springer water transport), Numba acceleration, experimental validation against 3 papers, cost estimator, CI/CD | Planned |
251+ | ** v0.3** | Springer-Membran-σ(λ, T), Arrhenius-j₀(T), Full-Butler-Volmer | ✅ Done |
252+ | ** v0.4** | Visual Stack Designer (Assembly-Tab, presets, JSON save/load), r_bpp wired | ✅ Done |
253+ | ** v0.5** | Fluid-Modul (ΔP/pump), rechteckige Stacks, zero-fit Literatur-Validation (Bernt 2020 + Zimmer 2026) | ✅ Done |
254+ | v0.6 | Katalysator- + Kontakt-Resistenz-Preset-System, xfail-Tests grünschalten | Planned |
195255| v1.0 | Pseudo-2D along-channel + through-MEA, surrogate layer from published CFD data, REST API | Planned |
196256| v2.0 | 3D exploded-view visualization, parametric CAD for bipolar plates (CadQuery), external OpenFOAM runner | Optional |
197257
0 commit comments