CDXWRF
The `Coordinated Regional Climate Downscaling Experiment' (CORDEX) is a scientific effort of the World Climate Research Program (WRCP) for the coordination of regional climate initiatives. In order to accept an experiment, CORDEX provides experiment guidelines, specifications of regional domains and data access/archiving. Data requirements are intended to cover all the possible needs of stake holders, and scientists working on climate change mitigation and adaptation policies in various scientific communities. The required data and diagnostics are grouped into different levels of frequency (sub-daily, daily, monthly and seasonal), priority (Core, Tier1, Tier2), and some of them even have to be provided as statistics (minimum, maximum, mean). Here is presented the development of a specialized module called module_diag_cordex
(version 1.3) for the Weather Research and Forecasting ((WRF, Skamarok et al. 2008)) model, capable of outputting the required CORDEX variables. Additional diagnostic variables not required by CORDEX, but of potential interest to the regional climate modeling community, are also included in the module. `Generic' definitions of variables are adopted in order to overcome model and/or physics parameterization dependence of certain diagnostics and variables, thus facilitating a robust comparison among simulations. The module is computationally optimized, and the output is divided in different priority levels following CORDEX specifications (Core, Tier1, and additional) by selecting pre-compilation flags. This implementation of the module does not add a significant extra cost when running the model, for example the addition of the Core variables slows the model time-step by less than a 5%. The use of the module reduces the requirements of disk storage by about a 50%.
An article is available in `Geosciences Model Development journal':
Lluís Fita, Jan Polcher, Theodore M. Giannaros, Torge Lorenz, Josipa Milovac, Giannis Sofiadis, Eleni Katragkou and Sophie Bastin, 2019: CORDEX-WRF v1.3: development of a module for the Weather Research and Forecasting (WRF) model to support the CORDEX community, Geosci. Model Dev., 12, 1029-1066, 2019, https://doi.org/10.5194/gmd-12-1029-2019
It is recommend to contact Lluís Fita (lluis.fita [a] cima.fcen.uba.ar) in order to keep a track and being able to inform of new versions/corrections.
Disclaimer
Authors decline any responsibility of the possible unexpected consequence of the use of this software. This piece of code is provided following the scientific spirit of sharing knowledge and technical advances. Please, use it with the same intention and willingness.
There are four working versions of the code for WRFV3.7.1, WRFV3.8.1, WRFV3.9.1.1, WRFV4.0. :
- WRF-CORDEX module version 1.3 for WRFV3.7.1, L. Fita, DOI:zenodo.1469639
- WRF-CORDEX module version 1.3 for WRFV3.8.1, L. Fita, DOI:zenodo.1469645
- WRF-CORDEX module version 1.3 for WRFV3.9.1.1, L. Fita, DOI:zenodo.1469647
- WRF-CORDEX module version 1.3 for WRFV4.0, L. Fita, DOI:zenodo.1469651
Although a pull of the WRF source code has been made and the module is currently being direclty added to the official source of the code of the model, and its final inclusion will be done by decission of the development team of the model.
Be aware that certain surface variables and their statistics (clWRF, Fita et al 2010) are retrieved from namelist configuration (from WRF users web page)
4. output_diagnostics = 1 in &time_control. Climate diagnostics. This option outputs 36 surface diagnostic variables: maximum and minimum, times when max and min occur, mean value, standard deviation of the mean for T2, Q2, TSK, U10, V10, 10 m wind speed, RAINCV, RAINNCV (the last two are time-step rain). The output goes to auxiliary output stream 3, and hence it needs the following: auxhist3_outname = “wrfxtrm_d<domain>_<date>” auxhist3_interval = 1440, 1440, frames_per_auxhist3 = 100, 100, io_form_auxhist3 = 2
In this page CDXWRFevolution one founds updates, bug fixes of the module.
With this module, now all CORDEX variables (except `snow melt') are available with the files wrfxtrm, wrfpress and wrfcdx, except for the fied values such as 'areacella'. See CDXvariablestable for more detail
Contenido |
CORDEX requirements
CORDEX requirements of data must cover all the possible needs of stake holders, and scientists working on the adaptation and mitigation strategies. They are grouped in different levels of frequency and priority. A working copy of this list is available here from the CORDEX convection permitting Flag Ship Pilot study.
Some of the variables are not directly computed in the WRF model which require to extend the model output in order to provide enough variables to post-process the variables.
The implementation of the module_diag_cordex
module should allow to avoid the post-processing by computing the CORDEX-required (Core & Tier) variables during model integration. At the same time, some extra variables, which might be of interest to the community but not required by CORDEX, have also been added.
NOTE:
Be aware that any systematic checking process has been applied to this module. Use it and the variables therein at your own risk !! It has been tested on a 2-nested domain configuration with the inner domain at cloud resolving resolution (< 5 km, without cumulus scheme), making use of restarts and on serial, pure distributed memory and hybrid distributed/shared parallel environment
module_diag_cordex
The module is basically based on two modules:
-
phys/module_diag_cordex.F
: Main module which manages the calls to the variables and the accumulations for the means, ... -
phys/module_diagvar_cordex.F
: Module with the computation of all the variables
This module is accompanied with a new Registry/registry.cordex
where the variables and a new section
in the namelist.input
labeled cordex are defined. There are other necessary complementary modifications on
phys/module_diagnostics_driver.F
encompassed by the pre-compilaton flag CORDEXDIAG
, as well some modifications in the main/depend.common
and phys/Makefile
.
Output is provided by the auxiliary history output #9
with a provisional file name: wrfcordex_d<domain>_<date>
All that variables which are only required at output time step, are computed only at that exact time.
Description of the installation process can be found here CDXWRFinstall
Description of the usage of the model can be found here CDXWRFuse
Description of the additional pressure level interpolation variables can be found here CDXWRFpvars
Description of the `Core' variables can be found here CDXWRFcore
Description of the `Tier1' variables can be found here CDXWRFtier
Description of the `Additional' variables can be found here CDXWRFadditional
Description of the studies about optimization of the module can be found here CDXWRFopt
Variables
These are the different variables added and their implementations from the WRF point of view. There might be necessary to revise some of them, or even decide which version to use In case of accumulation/mean they are also be included
These variables are:
- Instantaneous diagnostics (only computed on output times)
- Core
- -
prw:
Total water path - -
clwvi:
Total liquid water path (QCLOUD + QRAIN) - -
clivi:
Total ice water path (QSNOW+QICE+GRAUPEL+QHAIL) - -
uas:
10m earth-rotated eastward wind [ms-1] - -
vas:
10m earth-rotated northward wind [ms-1] - -
wss:
10m wind speed [ms-1] - -
hurs:
2m relative humidty [1] - -
huss:
2m specific humidty [1] - -
mrso:
total soil moisture content [kgm-2] - -
slw:
total liquid water content [kgm-2] - -
ws100:
100m wind speed [ms-1] - -
uz100:
100m wind x-direction [ms-1] - -
vz100:
100m wind y-direction [ms-1] - -
tauu, tauuv:
components of the downward wind stress at 10 m [m2s-2] (might be zero if sf_sfclay_physics /= 1, 5) - -
tauugen, tauuvgen:
generic components of the downward wind stress at 10 m [m2s-2] - -
cdcdx:
drag coefficient [-] (might be zero if sf_sfclay_physics /= 1, 5) - -
cdgen:
generic drag coefficient [-] - -
ps:
surface pressure [Pa] - -
ts:
skin temperature [K]
- Tier1
- -
zmla:
pbl height following a generic method [m] - -
clgvi:
Total graupel path (QGRAUPEL) - -
clhvi:
Total hail path (QHAIL)
- Additional
- -
ua:
3D earth-rotated eastward wind [ms-1] - -
va:
3D earth-rotated northward wind [ms-1] - -
ws:
3D wind speed [ms-1] - -
ta:
3D air-temperature [K] - -
press:
3D air pressure [Pa] - -
zg:
3D geopotential height [m] - -
hur:
3D relative humidty [1] - -
hus:
3D specific humidty [1] - -
psl:
sea level pressure [Pa] (three different ways)
- Only via changes in the registry
- -
clt:
total cloud cover [1] - -
cll:
low-level cloud cover [1] - -
clm:
mid-level cloud cover [1] - -
clh:
high-level cloud cover [1] - -
cape:
Convective Available Potential Energy [Jkg-1] - -
cin:
Convective inhibition [Jkg-1] - -
zlfc:
Height at the Level of free convection [m] - -
plfc:
Pressure at the Level of free convection [Pa] - -
li:
Lifted index [1] - -
tds:
2m dew point temperature [K]
- Accumulated or similar time dependency (computed at every time-step). They are initialized after each output time-step. Thus, they represent statistics (mean, accumulation) only from between output time-steps.
- Core
- -
cltmean:
mean clt - -
cllmean:
mean cll - -
clmmean:
mean clm - -
clhmean:
mean clh - -
wsgsmax:
maximum surface wind gust [ms-1] (two different methods) - -
ugsmax:
eastward maximum surface gust wind direction [ms-1] - -
vgsmax:
northward maximum surface gust wind direction [ms-1] - -
wsgspercen:
percentage of times when grid point got gust wind [%] - -
totwsgsmax:
maximum surface wind gust [ms-1] (addition of different methods) - -
totugsmax:
eastward maximum surface gust wind direction [ms-1] - -
totvgsmax:
northward maximum surface gust wind direction [ms-1] - -
totwsgspercen:
percentage of times when grid point got total gust wind [%] - -
wsz100max:
maximum 100m wind [ms-1] (two different methods) - -
uz100max:
eastward maximum 100m wind direction [ms-1] - -
vz100max:
northward maximum 100m wind direction [ms-1] - -
sund:
sunshine length [s] - -
rsds:
mean surface Downwelling Shortwave Radiation [Wm-2] - -
rlds:
mean surface Downwelling Longwave Radiation [Wm-2] - -
hfls:
mean surface Upward Latent Heat Flux [Wm-2] - -
hfss:
mean surface Upward Sensible Heat Flux [Wm-2] - -
rsus:
mean surface Upwelling Shortwave Radiation [Wm-2] - -
rlus:
mean surface Upwelling Longwave Radiation [Wm-2] - -
rsusgen:
mean generic surface Upwelling Shortwave Radiation [Wm-2] - -
rlusgen:
mean generic surface Upwelling Longwave Radiation [Wm-2] - -
evspsbl:
mean evaporation [kgm-2s-1] - -
evspsblpot:
mean potential evapotranspiration [kgm-2s-1] - -
evspsblpotgen:
mean generic potential evapotranspiration [kgm-2s-1] - -
snc:
mean snow area fraction [%] - -
snd:
mean snow depth [m] - -
mrros:
mean surface Runoff [kgm-2s-1] - -
mrro:
mean total Runoff [kgm-2s-1] - -
mrsol:
mean total water content of soil layer [kgm-2] - -
pr:
precipitation flux [kgm-2s-1] - -
prl:
large scale precipitation flux [kgm-2s-1] - -
prc:
convective precipitation flux [kgm-2s-1] - -
prsh:
shallow-cumulus precipitation flux [kgm-2s-1] - -
prsn:
solid precipitation flux [kgm-2s-1] - -
snw:
accumulated snow [ksm-2] - -
rsdt:
Top Of the Atmosphere incident shortwave radiation [kgm-2] - -
rsut:
TOA outgoing shortwave radiation [kgm-2] - -
rlut:
TOA outgoing Longwave radiation [kgm-2]
- Tier1
- -
capemin:
minimum CAPE [Jkg-1] (activated if convxtrm_diag =1) - -
cinmin:
minimum CIN [Jkg-1] (activated if convxtrm_diag =1) - -
zlfcmin:
minimum height at LFC [m] (activated if convxtrm_diag =1) - -
plfcmin:
minimum Pressure at LFC [Pa] (activated if convxtrm_diag =1) - -
lidxmin:
minimum Lifted index [1] (activated if convxtrm_diag =1) - -
capemax:
maximum CAPE [Jkg-1] (activated if convxtrm_diag =1) - -
cinmax:
maximum CIN [Jkg-1] (activated if convxtrm_diag =1) - -
zlfcmax:
maximum height at LFC [m] (activated if convxtrm_diag =1) - -
plfcmax:
maximum Pressure at LFC [Pa] (activated if convxtrm_diag =1) - -
lidxmax:
maximum Lifted index [1] (activated if convxtrm_diag =1) - -
capemean:
mean CAPE [Jkg-1] (activated if convxtrm_diag =1) - -
cinmean:
mean CIN [Jkg-1] (activated if convxtrm_diag =1) - -
zlfcmean:
mean height at LFC [m] (activated if convxtrm_diag =1) - -
plfcmean:
mean Pressure at LFC [Pa] (activated if convxtrm_diag =1) - -
lidxmean:
mean Lifted index [1] (activated if convxtrm_diag =1)
- Additional (not required by CORDEX)
- -
tfog:
time of presence of fog [s] - -
fogvisbltymin:
minimun visibility inside fog [km] - -
fogvisbltymax:
maximun visibility inside fog [km] - -
fogvisbltymean:
mean visibility inside fog [km] - -
tdsmin:
minimum 2m dew point temperature [K] - -
tdsmax:
maximum 2m dew point temperature [K] - -
tdsmean:
mean 2m dew point temperature [K]
- Additionally added referred to the water budget in the atmosphere:
-
wbacdiabh:
Water-budget vertically integrated accumulated of diabatic heating from microphysics [K] -
wbacpw, wbacpw[c/r/s/i/g/h]:
Water-budget vertically integrated accumulated total tendency for water vapour, cloud, rain, snow, ice, graupel, hail [mm] -
wbacf, wbacf[c/r/s/i/g/h]:
Water-budget vertically integrated accumulated horizontal advection for water vapour, cloud, rain, snow, ice, graupel, hail [mm] -
wbacz, wbacz[c/r/s/i/g/h]:
Water-budget vertically integrated accumulated vertical advection for water vapour, cloud, rain, snow, ice, graupel, hail [mm] -
wbacdiabh{l/m/h}:
Water-budget vertically integrated accumulated of diabatic heating from microphysics at low, medium and high levels (same as cloudiness) [K] -
wbacpw{l/m/h}[v/c/r/s/i/g/h]:
Water-budget vertically integrated accumulated total tendency for water vapour, cloud, rain, snow, ice, graupel, hail at low, medium and high levels (same as cloudiness) [mm] -
wbacf{l/m/h}[v/c/r/s/i/g/h]:
Water-budget vertically integrated accumulated horizontal advection for water vapour, cloud, rain, snow, ice, graupel, hail at low, medium and high levels (same as cloudiness) [mm] -
wbacz{l/m/h}[v/c/r/s/i/g/h]:
Water-budget vertically integrated accumulated vertical advection for water vapour, cloud, rain, snow, ice, graupel, hail at low, medium and high levels (same as cloudiness) [mm]
-
- Pressure interplation (Core)
- -
hus_pl:
specific humidity [1] - -
w_pl:
vertical wind speed [ms-1] - -
uer_pl:
Earth-rotated wind x-component [ms-1] - -
ver_pl:
Earth-rotated wind y-component [ms-1] - -
ws_pl:
wind speed [ms-1]
- -
Missing variables
There are certain variables from CORDEX `Core' and/or `Tier1' which could not yet be introduced
snw: snow melt
Accumulation of melted snow
wsgsmax100: Daily Maximum Near-Surface Wind Speed of Gust at 100 m
The wind gust at 100 m is understood that should follow similar processes that the wind gust at the surface (like in wsgsmax). At this version of the module there has not been considered to be included in the search for the right equations and approximations.
ic_lightning, cg_lightning, tot_lightning: intra-cloud, ground and total lightning flashes
There is lightning scheme implementation in WRF. (lightning_option among other from namelist.input). It might require some adjustment prior it's use. It does not sees to provide a wolrdwide cloud/ground discrimination
Accordingly to the value given to the pre-compilation variable CDXWRF one obtains:
- Without adding the variable: all CORDEX 'Core' variables
-
CDXWRF=1
CORDEX 'Tier' variables: clgvi, clhvi, zmla, [cape/cin/zlfc/plfc/lidx]{min/max/mean} -
CDXWRF=2
The same as with CDXWRF=1 and additional variables: ua, va, ws, ta, press, zg, hur, hus, tfog, fogvisblty{min/max/mean}, tds{min/max/mean} and the Water-Budget relarted ones: wbacdiabh, wbacpw, wbacpw[c/r/s/i/g/h], wbacf, wbacf[c/r/s/i/g/h], wbacz, wbacz[c/r/s/i/g/h], wbacdiabh{l/m/h}, wbacpw{l/m/h}, wbacpw{l/m/h}[c/r/s/i/g/h], wbacf{l/m/h}, wbacf{l/m/h}[c/r/s/i/g/h], wbacz{l/m/h}, wbacz{l/m/h}[c/r/s/i/g/h]
Simultanesouly, one needs to modify the Registry/registry.cordex
accordingly to the value of CDXWRF
:
- Without adding CDXWRF, nothing needs to be changed
- Adding
CDXWRF=1
, one needs to remove the comment##CDXWRF1##
at the beginning of the line of the definition of certain variables - Adding
CDXWRF=2
, one needs to remove the comment##CDXWRF1##
and##CDXWRF2##
at the beginning of the line of the definition of certain variables
Additionally, now interpolation of 3D fields to pressure levels is only done at the same frequency as the output of the wrfpress
file.
Others
It will be some other hard work to do related to it.
New variables
Pretty sure that as we get closer to stake-holders, decision makers, impact and mitigation communities more variables will arise... keep in touch !?
CF-compilant file
The module provides almost all the required all the CORDEX variables. However, user still needs to perform some postprocessing of the output data in order to meet CORDEX standards. Mainly:
- Computation of the required different statistical values as daily, monthly and seasonal extremes (minimum, maximum, accumulations, means)
- Cmorization of the output understood as: 1 file per variable, right metadata and attributes and general CF-compilant standard specifications
WRF output does not fully follows CF-conventions. Thus a huge coding effort needs to be done in order to provide a full CF-compliant output directly from it. User still needs to process the output of the model in order to provide data following all the CORDEX guidelines. Due to uncovered steps of the CF-standard, a user of the WRF model still needs to: concatenate files, change names and attributes of variables, calculate temporal statistics over different periods (daily, monthly, seasonal) and provide the right time-variables in order to fully reach the CF-standard which followed by CORDEX. However, these steps are computationally lighter and easier to perform in comparison to the computation of the different diagnostics and the vertical pressure interpolation already introduced in the module.
The incompatibility between WRF output and CF-convention can be overcame with the use of a complementary dedicated I/O library. This has been done for example in the [RegIPSL] platform (which uses WRF as atmospheric model) which uses [XIOS] libraries to manage the I/O.
Instantaneous values
As an additional work, all the instantaneous variables used for the different accumuluations and extremes, can also be retrieved. It is only necessary to:
- Give an output unit on the
registry.cordex
(see instructions at the end of the file) - Uncomment in the code (
phys/module_diagnostics_dirver.F
andmodule_diag_cordex.F
), the commented lines with the key word:INSTVALS
- re-compile WRF after cleaning all the code (due to the modification in the
Registry
)
WRF output names
Open page for the list of variables added with the module CDXWRFout
Acknowledgements
All the coders of WRF, LMDZ and ORCHIDEE models are acknowledged for their hard work on the developing and maintaining of the models. M. A. Jiménez from Universitat de les Illes Balears is acknowledged by her explanations on certain PBL calculations. D. Argüeso from UIB. V. Galligani, J. Ruiz and M. Sebastián from CIMA are also acknowldeged by their commentaries. A. Sörensson and E. Borrell are also acknowledged by their assistance. Implementation tests where performed in CIMA HPC resources ‘hydra’ cluster supported by the High Performance Computing National System (SNCAD) of Argentina L. Fita thanks the CIMA-IT support for their work. E. Katragkou and I. Sofiadis acknowledge the technical support and provision of resources from the Scientific Computing Center of [AUTH] and the [GRNET] National HPC infrastucture. J.Milovac gratefully acknowledge the support by the German Science Foundation (DFG) through project FOR 1695 and the supercomputing center HLRS in Stuttgart Germany for granting the computing time necessary for the test simulations. T. Lorenz acknowledges the support from the Research Council of Norway and its basic institute support of their strategic project on Climate Services. The simulations were performed on resources provided by UNINETT Sigma2 - the National Infrastructure for High Performance Computing and Data Storage in Norway. Figures were produced with python (except performarnce tests drawn with GNUplot) and L. Fita thanks the development of matplotlib above which he developed and make available a suite in python for netCDF management and plotting purposes called [PyNCplot]. Authors thank the commentaries of the topical editor (J. Kala) which remarkably improve the manuscript.