Skip to main content

RepoweringScope

Enum RepoweringScope 

Source
pub enum RepoweringScope {
    Full,
    RotorOnly,
    NacelleAndRotor,
    TurbineUnit,
    FullWithCapacityIncrease,
}
Expand description

Scope of a repowering event — determines whether the 20-year Förderdauer resets.

Repowering is one of the most legally complex topics in the EEG. Whether the Förderdauer resets depends on what exactly was replaced.

§§22 EEG 2023 — Key rule

The Förderdauer resets only for Vollrepowering (complete new plant at the same site). Partial component replacements do NOT reset the clock — the original commissioning date continues to govern.

§Practical guidance

When in doubt, consult BNetzA guidance or a specialized EEG attorney. The distinction between RotorBlade, WholeNacelle, and TurbineUnit is fact-specific and the BNetzA has issued conflicting guidance in edge cases.

Variants§

§

Full

Vollrepowering: Complete replacement of all generating components (generator, nacelle, rotor, tower, foundation).

Resets Förderdauer to the new commissioning date. Equivalent to a new plant at the same grid connection point. Uses foerderendedatum_repowering(new_commissioning_date).

§

RotorOnly

Teilrepowering — Rotor only: rotor blades and hub replaced, nacelle and generator unchanged.

Does NOT reset Förderdauer. Old commissioning date continues. Rotor replacement alone does not constitute “Inbetriebnahme” under §3 Nr. 30 EEG 2023.

§

NacelleAndRotor

Teilrepowering — Nacelle and rotor replaced, tower and foundation unchanged.

Legal status is contested (BNetzA has not issued definitive guidance). Conservative interpretation: Förderdauer does NOT reset (original date governs). Aggressive interpretation: may reset if generator output increases substantially.

§

TurbineUnit

Teilrepowering — Complete turbine unit replaced (generator + nacelle + rotor), but tower and foundation unchanged.

Legal status is contested. Most EEG specialists consider this a Vollrepowering (Förderdauer resets) when capacity increases significantly. BNetzA position: resets if the turbine is “technisch and wirtschaftlich neu.”

§

FullWithCapacityIncrease

Repowering with capacity increase — same classification as Full but explicitly tracks that the new plant has higher rated power than the original.

Relevant for Ausschreibungspflicht threshold check (§22 EEG 2023): the new capacity may push the plant above the 750 kW wind tender threshold.

Implementations§

Source§

impl RepoweringScope

Source

pub fn resets_foerderdauer_definitely(self) -> bool

Returns true when this repowering scope definitely resets the Förderdauer.

Returns false for contested cases — the caller must resolve the legal question before computing the new Förderdauer.

Source

pub fn replaces_generating_unit(self) -> bool

Returns true when this scope involves replacing the nacelle or generating unit.

Rotor-only replacement never replaces the generating unit.

Trait Implementations§

Source§

impl Clone for RepoweringScope

Source§

fn clone(&self) -> RepoweringScope

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for RepoweringScope

Source§

impl Debug for RepoweringScope

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for RepoweringScope

Source§

impl Hash for RepoweringScope

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for RepoweringScope

Source§

fn eq(&self, other: &RepoweringScope) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for RepoweringScope

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.