Skip to content

Non-active generator with carrier and global carrier constraint causes error #1449

@SpamAndEgg

Description

@SpamAndEgg

Version Checks (indicate both or one)

  • I have confirmed this bug exists on the lastest release of PyPSA.

  • I have confirmed this bug exists on the current master branch of PyPSA.

Issue Description

Having inactive generators in the model with a carrier that is subject of a global constraint leads to an error here

p = m["Generator-p"].sel(name=gens.index, snapshot=sns[sns_sel])

Here is the traceback:

Traceback (most recent call last):
  File "c:\Users\Marlon.Fleck\repos\enersys\delete_me_2.py", line 43, in <module>
    n.optimize()
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\pypsa\optimization\optimize.py", line 464, in __call__
    m = n.optimize.create_model(
        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\pypsa\optimization\optimize.py", line 617, in create_model
    define_primary_energy_limit(n, sns)
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\pypsa\optimization\global_constraints.py", line 345, in define_primary_energy_limit
    p = m["Generator-p"].sel(name=gens.index, snapshot=sns[sns_sel])
    method(var.data, *default_args, *args, **kwargs), var.model, var.name
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\xarray\core\dataset.py", line 3091, in sel
    query_results = map_index_queries(
                    ^^^^^^^^^^^^^^^^^^
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\xarray\core\indexing.py", line 190, in map_index_queries
    results.append(index.sel(labels, **options))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Marlon.Fleck\repos\enersys\.venv\Lib\site-packages\xarray\core\indexes.py", line 784, in sel
    raise KeyError(f"not all values found in index {coord_name!r}")
KeyError: "not all values found in index 'name'"

(enersys-py3.12) C:\Users\Marlon.Fleck\repos\enersys>

Reproducible Example

import pandas as pd 
import pypsa

snapshots = pd.date_range("2025-01-01", freq="h", periods=5)

n = pypsa.Network(snapshots=snapshots)

n.add("Carrier", name="gird_with_emissions", co2_emissions=0.5)

n.add("Bus", name="b_electricity", unit="MW")

n.add(
    "Generator", 
    name="grid", 
    bus="b_electricity",
    p_nom=10,
    marginal_cost=5,
)

n.add(
    "Generator", 
    name="grid_2", 
    bus="b_electricity",
    carrier="gird_with_emissions",
    p_nom_extendable=True,
    marginal_cost=5,
    active=False,
)

n.add("Load", name="demand", bus="b_electricity", p_set=pd.Series([0, 2, 0, 0, 0], index=snapshots))

n.add(
    "GlobalConstraint",
    name="CO2_limit",
    carrier_attribute="co2_emissions",
    sense="<=",
    constant=50,   
)

n.optimize()

Expected Behavior

No error

Installed Versions

Details PyPSA 1.0.4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions