A WUDAPT-to-WRF python tool that injects WUDAPT's Local Climate Zone information into WRF.
pip install w2w
Install from GitHub:
pip install git+https://github.com/matthiasdemuzere/w2w
Check out its help:
w2w --help
Try with the provided sample:
Sample data used here can be downloaded from the repository in the sample_data
folder. After clicking on the file you can download it.
w2w ./sample_data lcz_zaragoza.tif geo_em.d04.nc
Deploy using your own data:
w2w INPUT_DIRECTORY YOUR_LCZ.TIF YOUR_GEO_EM.dXX.NC
The original files are not modified. Three new files are generated by w2w
:
Differences between the original file and the newly created files by w2w
are shown below for the sample data provided.
Fig.1: w2w results on sample data. Land use categories from the original file (a), the params file (b), the extent file (d) and the NoUrban (f). Pixels replaced with respect to the original file in params (c), extent (e) and NoUrb (g).
A sample Jupyter notebook is provided to recreate this Figure but is not part of the package, thus additional modules are required to run it.
A geo_em.dXX.nc file (produced by WRF's WPS geoegrid.exe), for the inner WRF model domain in which you would like to use the LCZ-based information.
A Local Climate Zone map (lcz.tif) that is slightly bigger than the domain of the geo_em.d0X.nc file. There are a number of ways to obtain an LCZ map for your region of interest:
w2w.py
routine will check whether NUM_LAND_CAT
is set to 41 in all these parent domain files. If that is not the case, this will be fixed by writing out adjusted geo_em.d0[0 to X]_41.nc files.-lcz_band 1
will be used, which is the best-quality gaussian filtered LCZ map (see Demuzere et al. (2021) for more info).sf_urban_physics = 2 or 3
, respectively). In case you use this tool with the SLUCM model (sf_urban_physics = 1
), make sure your lowest model level is above the highest building height. If not, real.exe will provide the following error message: ZDC + Z0C + 2m is larger than the 1st WRF level - Stop in subroutine urban - change ZDC and Z0C
.W2W
, a note is displayed that indicates the nbui_max
value, e.g. for the sample data: Set nbui_max to 5 during compilation, in order to optimize memory storage
. This is especially relevant for users that work with the BEP or BEP+BEM urban parameterization schemes (sf_urban_physics = 2 or 3
, respectively). See also num_urban_nbui
in WRF's README.namelist for more info.use_wudapt_lcz=1
(default is 0) and num_land_cat=41
(default is 21) in WRF's namelist.input
when using the LCZ-based urban canopy parameters.-b --built-lcz = LCZ classes considered as urban (DEFAULT: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
-l --lcz-band = Band to use from LCZ file (DEFAULT: 0). For maps produced with LCZ Generator, use 1
-f --frc-threshold = FRC_URB2D threshold value to assign pixel as urban (DEFAULT: 0.2)
-n --npix-nlc = Number of pixels to use for sampling neighbouring natural land cover (DEFAULT: 45)
-a --npix_area = Area in number of pixels to look for the NPIX_NLC nearest number of pixels for sampling neighbouring natural land cover (DEFAULT: NPIX_NLC**2)
--lcz-ucp = Specify a custom lookup table for the LCZ-based Urban Canopy Parameters
Using a custom lookup table for the LCZ-based urban canopy parameters
--lcz-ucp
flag. For the example: w2w ./sample_data lcz_zaragoza.tif geo_em.d04.nc --lcz-ucp path/to/custom_lcz_ucp.csv
,FRC_URB2D ,MH_URB2D_MIN ,MH_URB2D ,MH_URB2D_MAX ,BLDFR_URB2D ,H2W
1 ,0.95 ,25 ,50 ,75 ,0.5 ,2.5
2 ,0.9 ,10 ,17.5 ,25 ,0.55 ,1.25
3 ,0.85 ,3 ,6.5 ,10 ,0.55 ,1.25
4 ,0.65 ,25 ,50 ,75 ,0.3 ,1
5 ,0.7 ,10 ,17.5 ,25 ,0.3 ,0.5
6 ,0.6 ,3 ,6.5 ,10 ,0.3 ,0.5
7 ,0.85 ,4 ,5 ,6 ,0.75 ,1.5
8 ,0.85 ,3 ,6.5 ,10 ,0.4 ,0.2
9 ,0.3 ,3 ,6.5 ,10 ,0.15 ,0.15
10 ,0.55 ,5 ,10 ,15 ,0.25 ,0.35
11 ,0 ,0 ,0 ,0 ,0 ,0
12 ,0 ,0 ,0 ,0 ,0 ,0
13 ,0 ,0 ,0 ,0 ,0 ,0
14 ,0 ,0 ,0 ,0 ,0 ,0
15 ,0.95 ,0 ,0 ,0 ,0.05 ,0
16 ,0 ,0 ,0 ,0 ,0 ,0
17 ,0 ,0 ,0 ,0 ,0 ,0
An important objective of WUDAPT, the World Urban Database and Access Portals Tools community project, is to generate urban canopy information and provide the (open-source) tools to facilitate urban-focused modelling studies (Ching et al., 2018).
Since the work of Brousse et al. (2016), the level-0 WUDAPT information, the Local Climate Zone maps, have been used increasingly in WRF, the community “Weather Research and Forecasting” model. Their original guide and code on how to use WUDAPT information into WRF (originally designed for WRF v3.2) is available here. Note that this tool was first assigning the LCZ mode to each WRF grid cell, and only afterwards assigning corresponding morphological, radiative and thermal properties to this modal LCZ class. This is done differently in w2w, see below.
As of spring 2021, WRF v4.3.x is able to ingest LCZ information by default (previous versions required manual WRF code changes by the user). See more details on "Updates of WRF-urban in WRF 4.3: Local Climate Zones, Mitigation Strategies, building materials permeability and new buildings drag coefficient" here. Because of this, we decided to simultaneously built an improved WUDAPT-to-WRF routine, to make the translation of LCZ-based parameters better and simpler. As before, the LCZ-based urban canopy parameters generally follow the values provided by Stewart and Oke (2012) and Stewart et al. (2014).
The procedure in this new w2w
tool is different from the former tool. Morphological parameters are assigned directly to the high-resolution LCZ map, and only afterwards aggregated to the WRF grid. In this way, the method produces a unique value of the different urban morphology parameters for each model cell. This was found to be more efficient in reproducing urban boundary layer features, especially in the outskirts of the city (Zonato et al., 2020), and is in line with the WUDAPT-to-COSMO routine (Varentsov et al., 2020). Other radiative and thermal parameters are for now still assigned to the modal LCZ class. More details on the procedure and its assumptions will soon be available here.
Demuzere, M., Argüeso, D., Zonato, A. and Kittner, J. (2022). W2W: A Python package that injects WUDAPT's Local Climate Zone information in WRF. Journal of Open Source Software, 7(76), 4432, DOI: 10.21105/joss.04432.
The project is licensed under the MIT license.
Contributions to w2w
are welcome! This is how:
Bugs: If you find a bug, please report it by opening an issue. if possible, please attach the complete error/Traceback, the w2w
version used, and other details like the WRF
version.
Fixing Issues: If you want to contribute by fixing an issue, please check the issues: contributions are welcome for all open issues especially those with labels bug
, help wanted
or good first issue
for easy contributions.
Enhancement: New features and modules are welcome! You can check the issues: contributions are welcome for open issues with labels enhancement
and help wanted
.
The project uses tox
to check the package installs correctly and all tests pass on different versions of python. The tests can be run using:
tox
pytest
test id. In this case we only test against python 3.9 (-e py39
argument)
tox -e py39 tests/w2w_test.py::<name_of_the_test>
pytest can also be used directly:
-e
editable install)
pip install -e .
pip install -r requirements-dev.txt
pytest