Skip to contents

Three unsolved energyRt models converted from PyPSA-Eur networks, spanning the range this package is built for: a full European system, a small one that runs in seconds, and a copperplate reference for it.

Usage

pypsa_eur_289

pypsa_eur_1035

pypsa_eur_41

pypsa_eur_5

pypsa_eur_5cp

Format

An energyRt model object.

An object of class model of length 1.

An object of class model of length 1.

An object of class model of length 1.

An object of class model of length 1.

An object of class model of length 1.

Source

Converted from PyPSA-Eur v2026.02.0 (commit d6383eb, PyPSA 1.1.0) by convert_pypsa().

Licence: ODbL-1.0, required by the share-alike terms of the OpenStreetMap-derived inputs, and independent of this package's Apache-2.0 code licence. Attribution is required for OpenStreetMap contributors and the European Environment Agency among others.

The World Database on Protected Areas, which may not be redistributed, is not present – see system.file("LICENSE.note", package = "reneuro") for how that was verified and what it costs (renewable land availability in Moldova and Ukraine is overstated as a result). The same file records that the OPSD and ENTSO-E demand series carry unclear upstream terms.

Regenerated by data-raw/make_models.R.

Details

pypsa_eur_41 is a 41-region European electricity system over a full year. It is the realistic case, and at 12.6 MB it is by far the largest object here; it is loaded lazily, so it costs nothing until touched.

pypsa_eur_5 is PyPSA-Eur's own Belgium example: five regions, one week (168 hourly snapshots). It is small enough to solve in seconds, which makes it the model every example and test uses.

pypsa_eur_5cp is the same network with transmission = "copperplate" – the same corridors, but unbounded and lossless. It is the reference point for what the network representation costs: a copperplate cannot be more expensive than any bounded version of itself, so it is the floor.

pypsa_eur_289 is the working model at continental scale. PyPSA-Eur is normally clustered to 50-250 nodes for computational reasons; this sits at the top of that range, aggregating the NUTS3 network to NUTS2 over the full year. 296 NUTS2 regions yield 289 AC nodes: seven contain no substation of their own and merge into a neighbour, retaining their demand and generation in the cluster they join. Aggregation uses aggregate_pypsa() – capacities sum, intensive quantities take capacity-weighted means, intra-cluster branches are dropped, and corridor lengths are recomputed from cluster centroids.

pypsa_eur_1035 is the NUTS3 network, experimental, on a four-day seasonal sample (96 of 8,760 hourly snapshots). It is the finest resolution the data supports and is intended as the starting point for aggregation work in R, rather than as a model to solve routinely. NUTS3 yields 1,035 AC nodes rather than 1,477 because 442 regions contain no substation and merge into neighbours; as above, their consumption is retained. Trade uses one flat loss rate per corridor and a transport formulation without Kirchhoff's voltage law, which is what keeps it solvable at all. It interpolates to roughly 10 million parameter rows and a linear programme of 1.3 million rows after presolve – see benchmark_solvers() for what that costs.

All were converted with cost_source = "network", taking costs from the network rather than from a separate cost assumption, so they agree with the PyPSA solve they can be compared against.

Examples

# Provenance travels with the object.
str(attr(pypsa_eur_5, "reneuro_provenance"), max.level = 1)
#> List of 9
#>  $ clone       : chr "pypsa-eur-v2026"
#>  $ commit      : chr "d6383ebf602767b1adbb676fe8a16e37a6e9f932"
#>  $ describe    : chr "v2026.02.0"
#>  $ dirty       : logi TRUE
#>  $ built_on    : chr "2026-08-25"
#>  $ reneuro     : chr "0.1.0"
#>  $ object      : chr "pypsa_eur_5"
#>  $ source      : chr "base_s_5_elec.nc"
#>  $ convert_args:List of 1