wind
¶
Modules:
-
core– -
economic– -
rk_util– -
rk_weather– -
workflows–
Functions:
-
build_ws_correction_function–type: str
-
offshore_wind_era5–Simulates offshore wind generation using NASA's ERA5 database [1].
-
offshore_wind_merra_caglayan2019–Simulates offshore wind generation using NASA's MERRA2 database [1].
-
onshore_wind_era5–Simulates onshore wind generation using ECMWF's ERA5 database [1].
-
onshore_wind_era5_pure_2023–Simulates onshore wind generation using pure ECMWF's ERA5 database [1]
-
onshore_wind_iconlam_2023–Simulates onshore wind generation using high-resolution dynamically downscaled dataset ICON-LAM over southern Africa.
-
onshore_wind_merra_ryberg2019_europe–Simulates onshore wind generation in Europe using NASA's MERRA2 database [1].
-
wind_config–A generic configuration workflow for wind simulations that allows
-
wind_era5_2023–Simulates onshore and offshore (200km from shoreline) wind generation using ECMWF's ERA5 database [1].
-
wind_era5_PenaSanchezDunkelWinklerEtAl2025–Simulates wind turbine locations onshore and offshore using ECMWF's
build_ws_correction_function
¶
type: str type of correction function data_dict: dict, str dictionary or json file containing the data needed to build the correction function
Source code in reskit/wind/core/windspeed_correction.py
offshore_wind_era5
¶
Simulates offshore wind generation using NASA's ERA5 database [1].
Sources
[1] European Centre for Medium-Range Weather Forecasts. (2019). ERA5 dataset. https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5.
Source code in reskit/wind/workflows/workflows.py
offshore_wind_merra_caglayan2019
¶
offshore_wind_merra_caglayan2019(
placements,
merra_path,
output_netcdf_path=None,
output_variables=None,
max_batch_size=25000,
)
Simulates offshore wind generation using NASA's MERRA2 database [1].
Parameters:
-
(placements¶pandas Dataframe) –A Dataframe object with the parameters needed by the simulation.
-
(merra_path¶str) –Path to the MERRA2 data.
-
(output_netcdf_path¶str, default:None) –Path to a directory to put the output files, by default None
-
(output_variables¶str, default:None) –Restrict the output variables to these variables, by default None
-
–max_batch_size¶The maximum number of locations to be simulated simultaneously, else multiple batches will be simulated iteratively. Helps limiting RAM requirements but may affect runtime. By default 25 000. Roughly 7GB RAM per 10k locations.
Returns:
-
Dataset–A xarray dataset including all the output variables you defined as your output variables.
Sources
[1] National Aeronautics and Space Administration. (2019). Modern-Era Retrospective analysis for Research and Applications, Version 2. NASA Goddard Earth Sciences (GES) Data and Information Services Center (DISC). https://disc.gsfc.nasa.gov/datasets?keywords=%22MERRA-2%22&page=1&source=Models%2FAnalyses MERRA-2
Source code in reskit/wind/workflows/workflows.py
onshore_wind_era5
¶
Simulates onshore wind generation using ECMWF's ERA5 database [1].
Sources
[1] European Centre for Medium-Range Weather Forecasts. (2019). ERA5 dataset. https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5
Source code in reskit/wind/workflows/workflows.py
onshore_wind_era5_pure_2023
¶
Simulates onshore wind generation using pure ECMWF's ERA5 database [1] without further disaggregation or correction besides height projection and power curve convolution.
Sources
[1] European Centre for Medium-Range Weather Forecasts. (2019). ERA5 dataset. https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5
Source code in reskit/wind/workflows/workflows.py
onshore_wind_iconlam_2023
¶
onshore_wind_iconlam_2023(
placements,
icon_lam_path,
esa_cci_path,
output_netcdf_path=None,
output_variables=None,
max_batch_size=25000,
)
Simulates onshore wind generation using high-resolution dynamically downscaled dataset ICON-LAM over southern Africa. This workflow was used in the publicaiton [1].
Parameters:
-
(placements¶pandas Dataframe) –A Dataframe object with the parameters needed by the simulation.
-
(icon_lam_path¶str) –Path to the specified weather data. May contain '
' and ' spacers, in that case, a zoom level value is expected and the correct tiles will be assigned for every loation individually. -
(esa_cci_path¶str) –Path to the ESA CCI raster file [2].
-
(output_netcdf_path¶str, default:None) –Path to a directory to put the output files, by default None
-
(output_variables¶str, default:None) –Restrict the output variables to these variables, by default None
-
–max_batch_size¶The maximum number of locations to be simulated simultaneously, else multiple batches will be simulated iteratively. Helps limiting RAM requirements but may affect runtime. By default 20 000.
Returns:
-
Dataset–A xarray dataset including all the output variables.
Sources
[1] Chen, S., Goergen, K., Hendricks Franssen, H. J., Winkler, C., Poll, S., Houssoukri Zounogo Wahabou, Y., ... & Heinrichs, H. (2024). Higher onshore wind energy potentials revealed by kilometer‐scale atmospheric modeling. Geophysical Research Letters, 51(19), e2024GL110122. https://doi.org/10.1029/2024GL110122 [2] ESA. Land Cover CCI Product User Guide Version 2. Tech. Rep. (2017). Available at: maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LC-Ph2-PUGv2_2.0.pdf
Source code in reskit/wind/workflows/workflows.py
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 | |
onshore_wind_merra_ryberg2019_europe
¶
onshore_wind_merra_ryberg2019_europe(
placements,
merra_path,
gwa_50m_path,
clc2012_path,
output_netcdf_path=None,
output_variables=None,
max_batch_size=25000,
)
Simulates onshore wind generation in Europe using NASA's MERRA2 database [1].
Parameters:
-
(placements¶pandas Dataframe) –A Dataframe object with the parameters needed by the simulation.
-
(merra_path¶str) –Path to the MERRA2 data.
-
(gwa_50m_path¶str) –Path to the Global Wind Atlas at 50m [2] rater file.
-
(clc2012_path¶str) –Path to the CLC 2012 raster file [3].
-
(output_netcdf_path¶str, default:None) –Path to a directory to put the output files, by default None
-
(output_variables¶str, default:None) –Restrict the output variables to these variables, by default None
-
–max_batch_size¶The maximum number of locations to be simulated simultaneously, else multiple batches will be simulated iteratively. Helps limiting RAM requirements but may affect runtime. By default 25 000. Roughly 7GB RAM per 10k locations.
Returns:
-
Dataset–A xarray dataset including all the output variables you defined as your output variables.
Sources
[1] NASA (National Aeronautics and Space Administration). (2019). Modern-Era Retrospective analysis for Research and Applications, Version 2. NASA Goddard Earth Sciences (GES) Data and Information Services Center (DISC). https://disc.gsfc.nasa.gov/datasets?keywords=%22MERRA-2%22&page=1&source=Models%2FAnalyses MERRA-2 [2] DTU Wind Energy. (2019). Global Wind Atlas. https://globalwindatlas.info/ [3] Copernicus (European Union’s Earth Observation Programme). (2012). Corine Land Cover 2012. Copernicus. https://land.copernicus.eu/pan-european/corine-land-cover/clc-2012
Source code in reskit/wind/workflows/workflows.py
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | |
wind_config
¶
wind_config(
placements,
weather_path,
weather_source_type,
weather_lra_ws_path,
enable_lra_adjustment,
real_lra_ws_path,
real_lra_ws_scaling,
real_lra_ws_spatial_interpolation,
real_lra_ws_nodata_fallback,
height_scaling_method,
height_scaling_data,
ws_correction_func,
cf_correction_factor,
wake_curve,
availability_factor,
consider_boundary_layer_height,
allow_height_extrapolation,
power_curve_scaling,
power_curve_base,
convolute_power_curves_args={},
loss_factor_args={},
output_variables=None,
max_batch_size=25000,
output_netcdf_path=None,
elevated_wind_speed=None,
)
A generic configuration workflow for wind simulations that allows flexible calibration of all arguments used in the workflow. NOTE: Only for calibration/validation purposes!
Parameters:
-
(placements¶pandas Dataframe) –A Dataframe object with the parameters needed by the simulation.
-
(weather_path¶str) –Path to the temporally resolved weather data, e.g. ERA-5 or MERRA-2 etc.
-
(weather_lra_ws_path¶str) –The path to a raster with the corresponding long-run-average windspeeds of the actual weather data (will be corrected to the real lra if given, else weather_lra_path has no effect)
-
(enable_lra_adjustment¶bool) –If True, enables the long-run-average adjustment using the provided lra information. Note: If False, all lra related parameters have no effect.
-
(real_lra_ws_path¶(str, float)) –Either a float/int (1.0 means no scaling) or a path to a raster with real long-run-average wind speeds, e.g. the Global Wind Atlas at the same height as the weather data.
-
(real_lra_ws_scaling¶float) –Accounts for unit differences, set to 1.0 if both weather data and real_lra_ws are in the same unit.
-
(real_lra_ws_spatial_interpolation¶str) –The spatial interpolation how the real lra ws shall be extracted, e.g. 'near', 'average', 'linear_spline', 'cubic_spline'
-
(real_lra_ws_nodata_fallback¶str) –If no GWA available, use for simulation: (1) float value for a multiple of the 'weather_lra_ws_path' value (ERA5 raw), i.e. 1.0 means weather_lra_ws_path value (2) np.nan for nan output (3) a callable function to be applied to the weather_lra_ws_path (ERA-5) value in the format: nodata_fallback(locs, weather_lra_ws_path_value) (4) a filepath to a raster file containing the fallback values
-
(height_scaling_method¶tuple) –The method to project the windspeeds from the default height (here 100m in ERA-5/GWA3) to hub height (possibly affected by the planetary boundary layer height). First tuple entry (str) describes the general approach (e.g. logarithmic scaling or based on long-run-average windspeeds). No height scaling will be applied when None. Options are: ("lra", [vertical method]) : Calculation based on the long-run average wind speeds (e.g. GWA) of the 2 nearest available height levels. [vertical method] (str) describes the form of interpolation. By default "linear". ("log", [landcover]) : Logarithmic height scaling based on surface roughness defined via a mapping of the land cover category. [landcover] (str) defines the landcover data used for roughness mapping. All landcover types accepted as land_cover_type in logarithmic_profile.roughness_from_land_cover_classification() are allowed, by default "cci" (ESA CCI raster).
-
(height_scaling_data¶(str, dict)) –The data required for the selected height_scaling_method (see above). The expected data formats are, depending on height_scaling_method: ("log", [landcover]) : str Path to the respective "landcover" raster file. ("lra", [vertical method]) : {int : str} Dict with heights as keys and paths to the LRA-windspeeds at the respective heights as values. Must contain at least one higher and one lower height than the reference height of real_lra_ws_path.
-
–ws_correction_func¶An executable function that takes a numpy array as single input argument and returns an adapted windspeed. If 1.0 is passed, no windspeed correction will be applied. Can also be passed as tuple or list of length 2 with data_type (e.g. 'linear' or 'ws_bins') and data dict (dict or path to yaml) with parameters.
-
(cf_correction_factor¶(float, str)) –The factor by which the output capacity factors will be corrected indirectly (via corresponding adaptation of the windspeeds). Can be str formatted path to a raster with spatially resolved correction factors, set to 1.0 to not apply any correction.
-
(wake_curve¶str) –string value to describe the wake reduction method. None will cause no reduction, by default "dena_mean". Choose from (see more information here under wind_efficiency_curve_name[1]): "dena_mean", "knorr_mean", "dena_extreme1", "dena_extreme2", "knorr_extreme1", "knorr_extreme2", "knorr_extreme3". Alternatively, the 'wake_curve' str can also be provided per each location in a 'wake_curve' column of the placements dataframe, 'wake_curve' argument must then be None.
-
(availability_factor¶float) –This factor accounts for all downtimes and applies an average reduction to the output curve, assuming a statistical deviation of the downtime occurrences and a large enough turbine fleet. Suggested availability is 0.98 including technical availability of turbine and connector as well as outages for ecological reasons (e.g. bat protection). This does not include wake effects (see above) or curtailment/outage for economical reasons or transmission grid congestion.
-
(consider_boundary_layer_height¶bool) –If True, boundary layer height will be considered.
-
(allow_height_extrapolation¶bool) –Takes effect only if a height scaling method based on interpolation is chosen, will then allow or forbid extrapolation beyond the min/max provided height range.
-
(power_curve_scaling¶float) –The scaling factor to smoothen the power curve, for details see: convolute_power_curves()
-
(power_curve_base¶float) –The base factor to smoothen the power curve, for details see: convolute_power_curves()
-
(convolute_power_curves_args¶dict, default:{}) –Further convolute_power_curve() arguments, for details see: convolute_power_curves(). By default {}.
-
(loss_factor_args¶dict, default:{}) –Arguments that are passed to reskit.utils.low_generation_loss() besides the capacity factor. If empty dict ({}), no loss will be applied. For details see: reskit.utils.loss_factors.low_generation_loss() By default {}.
-
(output_variables¶str, default:None) –Restrict the output variables to these variables, by default None
-
–max_batch_size¶The maximum number of locations to be simulated simultaneously, else multiple batches will be simulated iteratively. Helps limiting RAM requirements but may affect runtime. By default 25 000. Roughly 7GB RAM per 10k locations.
-
(output_netcdf_path¶str, default:None) –Path to a directory to put the output files, by default None
Returns:
-
Dataset–A xarray dataset including all the output variables you defined as your output variables.
Source code in reskit/wind/workflows/workflows.py
423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 | |
wind_era5_2023
¶
Simulates onshore and offshore (200km from shoreline) wind generation using ECMWF's ERA5 database [1].
Sources
[1] European Centre for Medium-Range Weather Forecasts. (2019). ERA5 dataset. https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5
Source code in reskit/wind/workflows/workflows.py
wind_era5_PenaSanchezDunkelWinklerEtAl2025
¶
wind_era5_PenaSanchezDunkelWinklerEtAl2025(
placements,
era5_path,
gwa_100m_path,
height_scaling_data,
height_scaling_method=("lra", "linear"),
gwa_nodata_fallback=1.0,
output_netcdf_path=None,
cf_correction=True,
output_variables=None,
max_batch_size=15000,
time_slice=None,
**simulate_kwargs,
)
Simulates wind turbine locations onshore and offshore using ECMWF's ERA5 database [1], with an optional correction loop to ensure that generated capacity factors for historic wind fleets meet reported generation/capacity based on Renewables Market Report [2] by the International Energy Agency (IEA).
Please cite the following publication when using the workflow [3]: Peña-Sánchez, Dunkel, Winkler et al. (2025): Towards high resolution, validated and open global wind power assessments. https://doi.org/10.48550/arXiv.2501.07937
Parameters:
-
(placements¶pandas Dataframe) –A Dataframe object with the parameters needed by the simulation.
-
(era5_path¶str) –Path to the ERA5 data.
-
(gwa_100m_path¶str) –Path to the Global Wind Atlas v4 (GWA4) at 100m [4] raster file.
-
(height_scaling_data¶dict | str) –The data required for the height_scaling_method. If height_scaling_method[0] (below) is "lra" (e.g. ("lra", "linear"), see default), a dict with integer heights as keys and str paths to the Global Wind Atlas windspeeds [4] at the respective heights as values is expected. Must contain at least one higher and one lower height than 100 [m] then. If height_scaling_method[0] (below) is "log", then a str filepath to the defined landcover raster is expected.
-
(height_scaling_method¶tuple | list | None, default:('lra', 'linear')) –The method to project the windspeeds from the default height (here 100m in ERA-5/GWA4) to hub height (possibly affected by the planetary boundary layer height). First tuple/list entry (str) describes the general approach (e.g. logarithmic scaling or based on long-run-average windspeed interpolation). Options are: ("lra", [vertical method]) : Calculation based on the long-run average wind speeds (e.g. GWA) of the 2 nearest available height levels. [vertical method] (str) describes the form of interpolation, e.g. "linear". ("lra", "linear") was used for publication [3]. ("log", [landcover]) : Logarithmic height scaling based on surface roughness defined via a mapping of the land cover category. [landcover] (str) defines the landcover data used for roughness mapping. All landcover types accepted as land_cover_type in logarithmic_profile.roughness_from_land_cover_classification() are allowed.. None : No height scaling will be applied when None. By default ("lra", "linear").
-
(gwa_nodata_fallback¶str, default:1.0) –If no GWA data is available, use for simulation: (1) float value for a multiple of the respective ERA-5 value (ERA5 raw), i.e. 1.0 means fall back on unscaled ERA-5 value (2) np.nan for nan output (3) a callable function to be applied to the ERA-5 value in the format: nodata_fallback(locs, ERA5_value) (4) a filepath to a raster file containing the fallback values
-
(output_netcdf_path¶str, default:None) –Path to a directory to put the output files, by default None
-
(cf_correction¶bool, default:True) –If False, the capacity factors will be calculated based on a calibrated physical model only, else an additional correction step will be added to ensure that historic capacity factors based on [2] are met if historic wind fleets are simulated. By default True.
-
(output_variables¶str, default:None) –Restrict the output variables to these variables, by default None
-
–max_batch_size¶The maximum number of locations to be simulated simultaneously, else multiple batches will be simulated iteratively. Helps limiting RAM requirements but may affect runtime. Should be adapted to individual computation system (roughly 7GB RAM per 10k locations), by default 25 000.
-
(time_slice¶slice, default:None) –Limit the time span loaded from the ERA5 source. Only supported for Zarr-backed ERA5 sources, where it is strongly recommended to avoid loading whole multi-year cloud stores. Raises for netCDF4-backed ERA5 sources; support for those is planned.
-
(simulate_kwargs¶optional, default:{}) –Will be passed on to simulate().
Returns:
-
Dataset–A xarray dataset including all the output variables you defined as your output variables.
Sources
[1] European Centre for Medium-Range Weather Forecasts. (2019). ERA5 dataset. https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5 [2] International Energy Agency. (2023). Renewables Market Report. https://www.iea.org/reports/renewables-2023 [3] Peña-Sánchez, Dunkel, Winkler et al. (2025): Towards high resolution, validated and open global wind power assessments. https://doi.org/10.48550/arXiv.2501.07937 [4] DTU Wind Energy. (2025). Global Wind Atlas v4. https://globalwindatlas.info/
Source code in reskit/wind/workflows/workflows.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | |