pub struct CapacityBlock {
pub leistung_kwp: Decimal,
pub verguetungssatz_ct: Decimal,
pub inbetriebnahme: Date,
pub foerderendedatum: Date,
}Expand description
A single capacity block for §24 EEG Anlagenerweiterung (plant extension).
When an existing EEG plant is extended with additional capacity (e.g. adding 5 kWp to an existing 10 kWp installation), the extension receives its own:
- Feed-in tariff rate (the statutory rate at the extension date, which is typically lower due to annual degression)
- 20-year Förderdauer starting from the extension commissioning date
The settlement engine allocates the measured Einspeisemenge proportionally across all blocks by installed capacity (§24 Abs. 1 EEG 2023).
§Zusammenlegung vs. Erweiterung
-
Zusammenlegung (§24 EEG): two legally separate plants merged into one entity. Both plants contribute their original rates and end dates. Model via two
CapacityBlocks. -
Erweiterung: capacity added to an existing plant at a later date. New capacity block gets current statutory rate from extension date. Model via one primary block (in
SettleInput) + oneCapacityBlock.
§Example
use eeg_billing::CapacityBlock;
use rust_decimal::dec;
use time::macros::date;
// Original 10 kWp at 9.25 ct/kWh (EEG 2020)
let original = CapacityBlock {
leistung_kwp: dec!(10),
verguetungssatz_ct: dec!(9.25),
inbetriebnahme: date!(2020-03-15),
foerderendedatum: date!(2040-03-15),
};
// Extension: +5 kWp at 8.11 ct/kWh (EEG 2023)
let extension = CapacityBlock {
leistung_kwp: dec!(5),
verguetungssatz_ct: dec!(8.11),
inbetriebnahme: date!(2024-06-01),
foerderendedatum: date!(2044-06-01),
};Fields§
§leistung_kwp: DecimalInstalled capacity for this block in kWp (or kW_el for KWKG).
verguetungssatz_ct: DecimalEEG feed-in tariff rate for this block in ct/kWh.
Fixed at the commissioning date of this block for its full Förderdauer.
inbetriebnahme: DateCommissioning date for this block (Inbetriebnahmedatum).
foerderendedatum: DateSubsidy end date for this block (inbetriebnahme + 20 years).
When the billing period start date exceeds this, the block is expired
and contributes EUR 0 (or EPEX spot price for PostEegSpot transition).
Trait Implementations§
Source§impl Clone for CapacityBlock
impl Clone for CapacityBlock
Source§fn clone(&self) -> CapacityBlock
fn clone(&self) -> CapacityBlock
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more