Skip to content

jwohland/wind_n_solar

Repository files navigation

Code accompanying "Mitigating a century of European renewable variability with transmission & informed siting"

In short, we use wind speed and surface radiation data from two centennial reanalyses (20CRv3 and CERA20C) to model power generation from solar photovoltaics and wind power and analyze the resulting data. The approach is described in greater detail in the method section and supplementary information of the following paper

Mitigating a century of European renewable variability with transmission and informed siting

Code is written in Python and sometimes as bash scripts.

We make the code available to document our methods and in the hope that it proves useful for future studies.

Folder structure

Preprocessing

Preprocessing happens in preprocess and involes, for example, cutting out the relevant domain from global data and remapping the 20CR data onto the CERA20C grid.

PV generation

The conversion from downwelling surface radiation and temperature to PV generation is done in solar/solar_power_conversion and is based on a branched version of GSEE.

Wind generation

20CRv3 ensemble member 100m wind speeds are retrieved from NERSC using the script in wind/20CR_retrieval. Running this script requires access to NERSC facilities. Nevertheless, we report it to here for reproducability. CERA20C wind speeds feature long-term trends that are corected in wind/trend_correction (see method section of the paper for more details). Conversion from wind speed to wind power generation happens in wind/wind_power_conversion and uses smoothed power curves from the windpowerlib.

Postprocessing

Annual mean netcdf files are computed in postprocess/annual_means_solar.sh.

Analysis and Figures

All analysis steps, including generation of the Figures, happen in analysis.

Figure 1 (hotspot maps; *.hotspots_rel_ensmean.png) and Figure 2 (Cumulative Density Function for different capacity factor brackets; CDF_rel.png) are computed in analysis/hotspots.py.

Figure 3 (Correlations; corr_both_constant_SWT120_3600.png) are calculated in analysis/correlations.py.

The results displayed in Table 1 are from analysis/conflicting_optimization.py.

Figure 4 (Multivariate EOF analysis; E-126_7580_power_meofs_mean.png) is done in analysis/eof.py.

Lastly, Figure 5 (spatial balancing potential; balancing_overview.jpeg) is computed in analysis/spatial_balancing.py and plotted in analysis/balancing_overview.py.

Data available through zenodo

Ensemble mean 3h gridbox level PV and wind power generation and country level aggregates are available via zenodo (https://zenodo.org/record/4280851). The corresponding processing is documented in zenodo/prep_move_zenodo.py. An example plotting script for the data available on zenodo is provided in zenodo/example.py.