Nuclear in PyPSA-EUR

73 views
Skip to first unread message

Halvor Winberg

unread,
Apr 11, 2025, 9:08:22 AMApr 11
to pypsa
Hi all,

I'm currently running the PYPSA-Eur model with myopic foresight enabled up to 2050, along with unit commitment enabled.

From what I understand in the documentation, the p_min_pu parameter sets the minimum generation level for nuclear power at each snapshot. So in this case, it should be 50% of the p_nom value:

 Screenshot 2025-04-11 145201.png
(This is the unit commitment CSV that applies restrictions for certain carriers)

However, when I check the AC balance for 2040 and 2050 during the summer, nuclear generation drops to zero. Does anyone know how this is possible, even with the minimum generation constraint enabled?

Screenshot 2025-04-11 145828.png
Best regards,
Halvor  

Johannes Hampp

unread,
Apr 14, 2025, 3:04:03 AMApr 14
to pypsa
Dear Halvor,

Please note we are switching to Discord for questions and discussions on PyPSA-Eur, see here:

Your understanding of p_nom_min is correct.
Have you checked, whether the settings from the file are correctly set in the network?
Could be that the setting is not propagated to 2040 and 2050 properly with myopic foresight.

The numbers in the beginning of August also don't look like p_min_pu >= 0.5.

Best,
Johannes

Hakon

unread,
Jun 2, 2025, 4:23:16 AMJun 2
to pypsa
Hi,

Been looking into the unit_commitment and noticed that the implementation of it is done in "add_electricity.py" under the function "def attach_conventional_generators". For the sake of context here it is:
    if unit_commitment is not None:
        committable_attrs = ppl.carrier.isin(unit_commitment).to_frame("committable")
        for attr in unit_commitment.index:
            default = pypsa.components.component_attrs["Generator"].default[attr]
            committable_attrs[attr] = ppl.carrier.map(unit_commitment.loc[attr]).fillna(
                default
            )

I may be understanding it incorrectly, but it seems that the unit_commitment attribute(s) are added to Links that have a component_attrs of Generator. This appears to function for OCGTs, CCGTs, etc but I experienced the same issue as you Halvor when it comes to nuclear.

In config.default.yaml the "pypsa_eur:" part (line 357 in git master) nuclear is present as a generator which seems to add nuclear into the Generator component as well as existing as a Link. But what I noticed when looking at the postnetworks is that the actual power generation from nuclear comes from the Generator component as opposed to the Link component. If this is the case, would that mean that unit commitment for nuclear is isn't working since its not applied to the nuclear component that is generating power?

Best,
Hakon
Reply all
Reply to author
Forward
0 new messages