CORDEX Regional Climate Projections¶
Climate Models and Climatic Indices¶
Climate models are sophisticated computational tools that simulate Earth's climate system by integrating physical, chemical, and biological processes across the atmosphere, oceans, land, and ice. These models, ranging from global (GCMs) to regional (RCMs) scales, use mathematical equations to represent interactions such as energy transfer, ocean currents, and greenhouse gas effects. By projecting future scenarios under varying emissions pathways (e.g., RCPs or SSPs), they generate data on key variables like temperature, precipitation, and wind. These outputs feed into climatic indices—metrics such as heatwave frequency, drought severity, or extreme rainfall return periods—that quantify specific climate risks.
CORDEX provides high-resolution regional climate projections essential for assessing localized climate impacts across 14 continent-scale domains, including Europe (Diez-Sierra et al. 2022)1. The climatic indices provided by such projections are vital for policymakers, guiding adaptation strategies and resilience planning in sectors like agriculture, hydrology, and urban development.
Global Climate Models (GCMs)¶
Several studies have evaluated and ranked CMIP5 Global Climate Models (GCMs) used in EURO-CORDEX based on their ability to simulate historical climate and provide reliable boundary conditions for regional downscaling. Based on (Jury et al. 2015)2, we select a subset of GCMs as top performers for EURO-CORDEX.
Regional Climate Models (RCMs)¶
Based on evaluations from the EURO-CORDEX ensemble and peer-reviewed studies, there is no universal "best" regional climate model (RCM), but consensus exists on top-performing models for specific variables and regions (Kotlarski et al. 2015; Coppola et al. 2021)3 4.
CORDEX Variables¶
The table below provides a partial list of variables available in EURO-CORDEX — such as near-surface temperature (tas
), precipitation (pr
), and wind speed (sfcWind
).
The complete list is available in the CORDEX Variable Requirements document.
These variables serve as foundational inputs for deriving critical climatic indices, ranging from heatwave duration (tx40_cdd
) to extreme precipitation return periods (r100yrRP
), which quantify climate extremes and trends, enabling researchers and policymakers to evaluate risks like droughts, floods, and temperature anomalies.
By leveraging these standardized variables, stakeholders can perform robust, region-specific analyses to inform adaptation strategies and resilience planning under evolving climate scenarios.
Variable Name (CDS) | Short Name | Units | Description |
---|---|---|---|
10m u-component of the wind | uas |
m s⁻¹ | Eastward wind component at 10m above the surface |
10m v-component of the wind | vas |
m s⁻¹ | Northward wind component at 10m above the surface |
10m wind speed | sfcWind |
m s⁻¹ | Magnitude of horizontal wind speed at 10m above the surface |
200hPa temperature | ta200 |
K | Air temperature at the 200hPa pressure level |
200hPa u-component of the wind | ua200 |
m s⁻¹ | Eastward wind component at 200hPa |
200hPa v-component of the wind | va200 |
m s⁻¹ | Northward wind component at 200hPa |
2m air temperature | tas |
K | Near-surface air temperature at 2m above ground |
2m relative humidity | hurs |
% | Relative humidity at 2m above ground |
2m surface specific humidity | huss |
Dimensionless | Specific humidity (mass of water vapor per unit mass of air) at 2m |
500hPa geopotential height | zg500 |
m | Gravitational potential energy per unit mass at 500hPa |
850hPa u-component of the wind | ua850 |
m s⁻¹ | Eastward wind component at 850hPa |
850hPa v-component of the wind | va850 |
m s⁻¹ | Northward wind component at 850hPa |
Evaporation | evspsbl |
kg m⁻² s⁻¹ | Mass of liquid water evaporating from land (includes sublimation) |
Land area fraction | sftlf |
% | Fraction of grid cell occupied by land |
Maximum 2m temperature in the last 24 hours | tasmax |
K | Daily maximum temperature at 2m above the surface |
Mean precipitation flux | pr |
kg m⁻² s⁻¹ | Deposition of water (rain, snow, ice, hail) to the Earth's surface |
Mean sea level pressure | psl |
Pa | Air pressure adjusted to sea level |
Minimum 2m temperature in the last 24 hours | tasmin |
K | Daily minimum temperature at 2m above the surface |
Orography | orog |
m | Surface elevation (0.0 over oceans) |
Surface pressure | ps |
Pa | Air pressure at the lower boundary of the atmosphere |
Surface solar radiation downwards | rsds |
W m⁻² | Downward shortwave radiative flux at the surface |
Surface thermal radiation downward | rlds |
W m⁻² | Downward longwave radiative flux at the surface |
Surface upwelling shortwave radiation | rsus |
W m⁻² | Upward shortwave radiative flux from the surface |
Total cloud cover | clt |
Dimensionless | Fraction of the sky covered by clouds (whole atmospheric column) |
Total run-off flux | mrro |
kg m⁻² s⁻¹ | Combined surface and subsurface liquid water draining from land |
Notes¶
- Units: Align with CORDEX/CDS specifications (e.g.,
pr
inkg.m⁻².s⁻¹
,tas
inK
) - Temporal resolution: Variables are available at 3-hourly, daily, monthly, or seasonal frequencies, which in the CDS API are indicated as
3hr
,daily_mean
,monthly_mean
,seasonal_mean
, respectively (non-European domains only include daily data). - Static variables:
sftlf
(land area fraction) andorog
(topography) are time-independent - Standard Names: Standard naming following CF conventions can be found in CORDEX Variable Requirements Table
For further details, see the CORDEX Documentation.
Downloading CORDEX data¶
To download all the CORDEX data necessary to compute climatic indices and indicators useful to NATURE-DEMO, make sure to set up a Copernicus Climate Data Store (CDS) account as explained in the main page. Then run the following script:
python scripts/download_cordex_data.py
This will take a long time (~24h), since it will download a lot of data (~5TB).
The data will be downloaded to the folder ~/data/cordex
.
That path can be changed by modifying the DATADIR
variable in the script.
This download script uses the code in the module clima_data.cordex
, which provides a convenient interface to the Copernicus Climate Data Store (CDS) API for downloading CORDEX data and is documented below.
Code documentation clima_data.cordex
¶
TIME_FRAMES = {'his': {'historical': [1976, 2005]}, 'rcp': {'short': [2011, 2040], 'medium': [2041, 2070], 'long': [2071, 2100]}}
module-attribute
¶
Time frames for EURO-CORDEX data
Definition of the time frames used in analysing EURO-CORDEX data and computing climate indices and climate indicators.
CordexNames
¶
Centralized registry for CORDEX climate model naming formats and conversions.
Handles conversion between different naming conventions used by: - Input/keys: Short lowercase keys for easy use - ESGF: Used in ESGF table and GCM parts of downloaded filenames - CDS: Used in CDS API requests (lowercase with underscores) - Filenames: Used in downloaded filenames (hybrid format)
Source code in clima_data/cordex.py
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 195 196 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 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 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 |
|
get_experiment_name(name, format)
classmethod
¶
Get experiment name in specified format. Returns input if no match found.
Source code in clima_data/cordex.py
323 324 325 326 327 328 329 330 |
|
get_filename_gcm(key)
classmethod
¶
Get GCM name as it appears in downloaded filenames (ESGF format).
Source code in clima_data/cordex.py
332 333 334 335 |
|
get_filename_rcm(key)
classmethod
¶
Get RCM name as it appears in downloaded filenames (input format).
Source code in clima_data/cordex.py
337 338 339 340 |
|
get_frequency_name(name, format)
classmethod
¶
Get frequency name in specified format. Returns input if no match found.
Source code in clima_data/cordex.py
314 315 316 317 318 319 320 321 |
|
get_gcm_name(key, format)
classmethod
¶
Get GCM name in specified format. Returns input if no match found.
Source code in clima_data/cordex.py
287 288 289 290 291 292 293 294 |
|
get_rcm_name(key, format)
classmethod
¶
Get RCM name in specified format. Returns input if no match found.
Source code in clima_data/cordex.py
296 297 298 299 300 301 302 303 |
|
get_variable_name(name, format)
classmethod
¶
Get variable name in specified format. Returns input if no match found.
Source code in clima_data/cordex.py
305 306 307 308 309 310 311 312 |
|
list_experiments()
classmethod
¶
Get list of all supported experiment names.
Source code in clima_data/cordex.py
362 363 364 365 |
|
list_frequencies()
classmethod
¶
Get list of all supported frequency names.
Source code in clima_data/cordex.py
357 358 359 360 |
|
list_gcms()
classmethod
¶
Get list of all supported GCM keys.
Source code in clima_data/cordex.py
342 343 344 345 |
|
list_rcms()
classmethod
¶
Get list of all supported RCM keys.
Source code in clima_data/cordex.py
347 348 349 350 |
|
list_variables()
classmethod
¶
Get list of all supported variable names.
Source code in clima_data/cordex.py
352 353 354 355 |
|
cordex_data_check(filepath)
¶
Lightweight quality check for CDS CORDEX data
Source code in clima_data/cordex.py
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 |
|
download_cordex(variable, gcm_model, rcm_model, experiment, freq, year_start, year_end, data_dir, verbose=False)
¶
Worker function handling CDS download and file processing
Source code in clima_data/cordex.py
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 |
|
get_esgf_combinations_for_experiment(experiment, variable=None, frequency=None)
¶
Get available combinations from ESGF for specific experiment with optional filtering
Parameters:
Name | Type | Description | Default |
---|---|---|---|
experiment
|
str
|
Experiment ID (e.g., 'historical', 'rcp45', 'rcp85') |
required |
variable
|
str | None
|
Optional variable name to filter by |
None
|
frequency
|
str | None
|
Optional frequency to filter by (e.g., 'day', 'mon') |
None
|
Returns:
Type | Description |
---|---|
set[tuple[str, str, str, str]]
|
Set of tuples containing (gcm, rcm, variable, frequency) for valid combinations |
Source code in clima_data/cordex.py
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 |
|
get_filename(variable, gcm_model, rcm_model, experiment, freq, year_start, year_end)
¶
File name for the downloaded data based on the parameters provided
Return file name following the CDS API naming convention for CORDEX data explained at https://confluence.ecmwf.int/display/CKB/CORDEX%3A+Regional+climate+projections:
<variable>_<domain>_<driving-model>_<experiment>_<ensemble_member>_<rcm-model>_<rcm-run>_<time-frequency>_<temporal-range>.nc
Where
is a short variable name, e.g. “tas” for “temperature at the surface” is "EUR-11" for EURO-CORDEX data is the GCM model that produced the boundary conditions is the name of the experiment used to extract the boundary conditions (historical, rcp45, rcp85) is the ensemble identifier in the form “r i p ”, X, Y and Z are integers is the name of the model that produced the data is the version run of the model in the form of "vX" where X is integer is the time series frequency (e.g., monthly, daily, seasonal) - the
is in the form YYYYMM[DDHH]-YYYY[MMDDHH], where Y is year, M is the month, D is day and H is hour. Note that day and hour are optional (indicated by the square brackets) and are only used if needed by the frequency of the data. For example daily data from the 1st of January 1980 to the 31st of December 2010 would be written 19800101-20101231.
Source code in clima_data/cordex.py
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 421 422 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 |
|
get_files(data_dir, variable, experiment, freq, year_start=None)
¶
Get file paths for the specified variable, experiment, frequency, and year range, for any given RCM model.
Source code in clima_data/cordex.py
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 |
|
prune_invalid_tasks(tasks)
¶
Prune tasks that are not available in ESGF.
This function validates GCM-RCM combinations against ESGF availability for each experiment using the EURO-CORDEX ESGF table. Note that ESGF availability does not guarantee CDS API availability - some combinations may exist in ESGF but not be accessible through the CDS API.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
tasks
|
list
|
List of task dictionaries with keys: variable, gcm_model, rcm_model, experiment, freq, year_start, year_end |
required |
Returns:
Type | Description |
---|---|
list
|
List of pruned tasks with only valid combinations according to ESGF |
Source code in clima_data/cordex.py
660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 |
|
-
Diez-Sierra J, Iturbide M, Gutiérrez JM, et al (2022) The Worldwide C3S CORDEX Grand Ensemble: A Major Contribution to Assess Regional Climate Change in the IPCC AR6 Atlas. Bulletin of the American Meteorological Society 103:E2804--E2826. https://doi.org/10.1175/BAMS-D-22-0111.1 ↩
-
Jury MW, Prein AF, Truhetz H, Gobiet A (2015) Evaluation of CMIP5 models in the context of dynamical downscaling over europe. Journal of Climate 28:5575--5582. https://doi.org/10.1175/JCLI-D-14-00430.1 ↩
-
Kotlarski S, Lüthi D, Schär C (2015) The elevation dependency of 21st century european climate change: An RCM ensemble perspective. International Journal of Climatology 35:3902--3920. https://doi.org/10.1002/joc.4254 ↩
-
Coppola E, Stocchi P, Pichelli E, et al (2021) Non-hydrostatic RegCM4 (RegCM4-NH): Model description and case studies over multiple domains. Geoscientific Model Development 14:7705--7723. https://doi.org/10.5194/gmd-14-7705-2021 ↩