Kernmodell

Stündlicher Dispatch aus Last, Erzeugung, Speicher und Außenhandel mit CO₂-Bilanz.

Aufgabe: das Kernmodell iteriert über 8.760 Stunden pro Jahr und schließt in jeder Stunde die Bilanz aus Last (aggregiert via demand.ts aus last-2025 und aktiven e100-* Modulen), variabler RE-Erzeugung (PV/Wind mit einspeisefaktoren-2025[t] × capacityFactorMultiplier), Baseload (Kernkraft, Biomasse, Laufwasser × availability; Kernkraft optional mit 12-Monats-Profil availabilityMonthly für Sommer-Revisionsfenster), Dispatchable-Floor (Gas/Kohle auf minLoadFraction) und Speicher-Slots. Ergebnis pro Stunde sind alle Quellenbeiträge, Curtailment, Speicher-SoC, Import/Export, Lastabwurf und CO₂ in t/h; auf Jahressumme aggregiert das Modell Last, EE-Anteil, Import, Export, Curtailment, Lastabwurf, CO₂ Mt/a und g/kWh, Peak-Last sowie Stundenkennzahlen.

Dispatch-Logik: vor der Strombilanz läuft pro Stunde der H₂-Pool-Schritt — Import-Inflow (h2TWh·1000/8760 GW) addiert sich auf den Pool-SoC, dann deckt der Pool den Sektor-H₂-Bedarf priority-basiert (absteigend nach Strom-Hebel: Chemie/Schiff/Flug je 1/0,62 ≈ 1,61, Stahl 1,56), ungedeckter Rest wird Direkt-Elektrolyse-Stromlast; alle Pool-Größen rechnen in H₂-LHV. Der Sektor-Bedarf ist echtes H₂-Zwischenprodukt (Sektor-Elektrolysestrom × 0,62): je TWh geliefertem H₂ entfällt nur der Elektrolyse-Strom, die Synthese-Verluste H₂ → Endprodukt (PtL-Kerosin, e-Fuels, Chemie-Derivate) trägt der Pool H₂-seitig. Anschließend mismatch = baselineSupply − loadGW. Bei Überschuss lädt die Engine die Speicher in der Reihenfolge dispatchPriority (Batterie → Pumpspeicher → H₂-Pool, mit η = 0,62 Strom→LHV für H₂-Charge), exportiert dann bis export.stromGW-Cap, curtailed RE nach curtailmentPriority (Wind offshore → onshore → PV → Kernkraft); im Notfall werden Min-Last-Fossile/Biomasse/Laufwasser reduziert. Bei Unterdeckung Speicher entladen (auch H₂-Pool-Rückverstromung mit η = 0,55), dann heimische Regelbare: Gas + Kohle im rampUpRatio (Default 2:1) bis maxAvailable, danach flexibler Import bis import.stromGW-Cap; Rest als loadSheddingGW. Heimische Kapazität fährt vor dem Import hoch, weil das Modell keine Preise kennt (Versorgungssicherheits-Logik). CO₂ pro Stunde: Σ supply_q × emissions.co2eGperKWh_q + import × stromEmissionGperKWh.

Modellgrenze: keine Marktlogik, kein preisgetriebener Handel, kein Redispatch, kein Reservebedarf, keine Frequenzhaltung über rotierende Massen, kein Netzmodell mit regionalen Engpässen. Die Größenordnung dieser Kupferplatten-Vereinfachung ist am Jahr 2025 messbar: real wurden 9,4 TWh Wind+PV netzbedingt abgeregelt (SMARD/BNetzA Netzengpassmanagement) plus ~1,75 TWh marktlich bei Negativpreisen (Montel) — zusammen ~5 % der Wind+PV-Erzeugung von ~201 TWh — während das Kernmodell mit 2025-Kapazitäten 0 TWh Abregelung zeigt (kein Bilanz-Überschuss auf Bundesebene). Simulierte Abregelung bei höherem EE-Ausbau ist also rein bilanzgetrieben und kommt zu den real existierenden Netzengpass-Verlusten hinzu. Min-Last für Gas (10 %) und Kohle (20 %) wird auch bei viel RE als Floor erzwungen — dadurch laufen ~9 GW fossil weiter und der Default-Export sinkt auf ~12 TWh/a (real ~54 TWh/a). Import/Export-Caps sind harte Grenzen ohne Preissignal; der capacityFactorMultiplier linearisiert Technologiefortschritt zwischen Bestand und Neubau ohne Anlagen-Mix-Verschiebung.

Zeitschritt
Auflösung: 1 Stunde, 8.760 Stunden pro Jahr im 2025-Basisraster. loadYear 2017 ersetzt nur die Basislast-Werte index-aligned (507 TWh, Peak 80 GW); Einspeisefaktoren, Heizgradtage und Zeitstempel bleiben im 2025-Raster — der historisch-2017-Replay paart so 2017er-Erzeugung mit 2017er-Last. 2-Pass-Lauf wenn H₂-Kapazität > 100 GWh: Pass 1 startet alle Speicher leer, der Year-End-SoC ist Anfangswert für Pass 2.
H₂-Pool-Schritt
Vor jeder Strom-Bilanz: Import-H₂ in Pool, Sektor-H₂-Bedarf priority-basiert aus Pool gedeckt (absteigend nach Strom-Hebel; Stahl 1,56 zuletzt), ungedeckter Bedarf läuft als Direkt-Elektrolyse-Stromlast. Pool-SoC, Inflow und Sektorbedarf rechnen in H₂-LHV — der Sektorbedarf als H₂-Zwischenprodukt (Elektrolysestrom × 0,62, Synthese-Verluste H₂-seitig); Pool-Überhang puffert für Rückverstromung (η = 0,55).
Dispatch bei Überschuss
Reihenfolge: Speicher laden (dispatchPriority, H₂-Charge mit η = 0,62 Strom→LHV) → Export bis export.stromGW-Cap → Curtailment (windOff → windOn → pv → kernkraft) → Fallback: Min-Last Gas, Kohle, Biomasse, Laufwasser reduzieren.
Dispatch bei Unterdeckung
Reihenfolge: Speicher entladen (inkl. H₂-Pool-Rückverstromung, η = 0,55) → Gas + Kohle hochfahren im rampUpRatio (Default 2:1) → flexibler Import bis import.stromGW-Cap → Lastabwurf. Heimische Regelbare vor Import: ohne Preismodell gilt Versorgungssicherheits-Logik.

Quellen: Eigene Implementierung; Dispatch-Reihenfolge inspiriert von MTGermany energy-simulation-de.