Skip to contents

Every AC line of PyPSA-Eur's simplified network whose two ends fall in different NUTS3 regions, with the parameters needed to aggregate it to any coarser level.

Usage

nuts_lines

Format

A data.frame of 3,142 rows and 8 columns.

Source

PyPSA-Eur base_s.nc (7,360 lines, 4,382 buses), endpoints located against the unsimplified nuts3_shapes.geojson. Same data licence as pypsa_eur_models. Regenerated by data-raw/make_nuts_lines.R.

Details

columnmeaning
from, toNUTS3 codes, ordered so from < to
s_nomthermal rating, MW — extensive, sums
length_km, x, ras built; length and impedance are recomputed on aggregation
v_nom, num_parallelvoltage and circuit count

Deliberately not pre-aggregated, not even to NUTS3, so one routine can be applied at all four levels and NUTS3 is not a privileged case.

Over half the grid is already gone

Lines with both ends in one NUTS3 region are dropped, exactly as pypsa.clustering.spatial.aggregatelines() drops intra-cluster lines. That is 4,218 of 7,360 lines (57%), carrying 53% of capacity — discarded at the finest level available. Coarsening further only removes more.

Aggregating correctly

Three different rules, none of them a plain average:

  • s_nom, num_parallelsum;

  • lengthrecomputed as the great-circle distance between the two region centroids times line_length_factor (1.25). It is not inherited, and it grows: median corridor length rises from 85 km at NUTS3 to 459 km at NUTS0;

  • x, r — rescaled by the length ratio, then parallel-combined as 1 / sum(1/x).

Because impedance follows length, losses are overestimated at coarse levels; because s_nom is a plain thermal sum ignoring N-1 and loop flows, capacity is overestimated too. The two do not cancel.

See also

Examples

# how much of the network never crosses a NUTS3 boundary
p <- attr(nuts_lines, "reneuro_provenance")
c(total = p$lines_total, dropped = p$lines_intra_dropped)
#>   total dropped 
#>    7360    4218