Preparing landuse data for running WRF with the BEP urban scheme

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

milancurcic

New member
Hi All,

I have a few questions about correctly preparing geo_em*.nc and wrfinput* files for running WRF with the BEP urban scheme (sf_urban_physics = 2), both with single-urban-class and 3-urban-classes scenarios.

The urban fraction and classes are derived from the 2015 30-m Landsat data for North America (http://www.cec.org/north-american-environmental-atlas/land-cover-30m-2015-landsat-and-rapideye/). Within WPS and WRF, I'm working with the MODIFIED_IGBP_MODIS_NOAH table.

My procedure is:

a) Run geogrid.exe to generate geo_em.d0[123].nc. I provide NLCD2011 and NUDAPT44 data at this stage. The resulting files inclued non-zero FRC_URB2D and URB_PARAM fields.
b) Extract urban fractions from the 2015 30-m TIFF data. I update FRC_URB2D in geo_em.d0[123].nc. I also update LU_INDEX to values 31, 32, and 33 for grid cells where I identify 3 urban classes (low density residential, high density residential, and commercial/industrial).
c) Run metgrid.exe to generate met_em.*.nc.
d) Run real.exe to generate wrfinput_d0[123] and wrfbdy_d01.

My questions are:

1. When I run real.exe with num_land_cat=21 (not adjusting for classes 31, 32, 33 that I added), I see that the resulting wrfinput_d0[123] have all urban multi-classes (what used to be 31, 32, 33 in geo_em* and met_em*) are now collapsed into a single urban class 13. However, if I set num_land_cat=33 and run real.exe, urban multi-classes are again collapsed into 13, and all other (non-urban) classes in the domain are equal to 1. That can't be correct, right? What is the correct way to run real.exe here to preserve urban multi-classes from met_em* files? Do I perhaps need to modify LU_INDEX in wrfinput* files rather than geo_em* files?

2. How does BEP determine where are the 3 urban classes. Is it from LU_INDEX or from FRC_URB2D? If the latter, should I not bother with multi-classes in LU_INDEX?

3. How to correctly run BEP with a single urban class? Do I need to modify URBPARM.TBL to include parameters only for one class?

Thank you!
Milan
 
Milan,
Please take a look at the codes below ( in module_initialize_real.F). This is how REAL program handles urban landuse type.

2981 ! Split NUDAPT Urban Parameters
2982
2983 IF ( ( config_flags%sf_urban_physics == 1 ) .OR. ( config_flags%sf_urban_physics == 2 ) .OR. ( config_fl ags%sf_urban_physics == 3 ) ) THEN
2984 DO j = jts , MIN(jde-1,jte)
2985 DO i = its , MIN(ide-1,ite)
2986 IF ( MMINLU == 'NLCD40' .OR. MMINLU == 'MODIFIED_IGBP_MODIS_NOAH') THEN
2987 IF ( grid%FRC_URB2D(i,j) .GE. 0.5 .AND. &
2988 (grid%ivgtyp(i,j).NE.13 .AND. grid%ivgtyp(i,j).NE.24 .AND. grid%ivgtyp(i,j).NE.25 .AND. grid%ivgtyp(i,j).NE.26)) grid%ivgtyp(i,j)=13
2989 ELSE IF ( MMINLU == "USGS" ) THEN
2990 IF ( grid%FRC_URB2D(i,j) .GE. 0.5 .AND. &
2991 grid%ivgtyp(i,j).NE.1 ) grid%ivgtyp(i,j)=1
2992 ENDIF
2993
2994 IF ( grid%FRC_URB2D(i,j) == 0. ) THEN
2995 IF ( (MMINLU == 'NLCD40' .OR. MMINLU == 'MODIFIED_IGBP_MODIS_NOAH') .AND. &
2996 (grid%ivgtyp(i,j)==24 .OR. grid%ivgtyp(i,j)==25 .OR. grid%ivgtyp(i,j)==26 .OR. grid%ivgtyp( i,j)==13) ) grid%FRC_URB2D(i,j) = 0.9
2997 IF ( MMINLU == 'USGS' .AND. grid%ivgtyp(i,j)==1 ) grid%FRC_URB2D(i,j) = 0.9
2998 ENDIF

(2) If urban landuse is 31, 32, 33, then BEEP takes them as low, high or industrial based on UTYPE_URB2D. Please see the code below (in module_sf_noahmpdrv.F)

IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == 31 .or. &
IVGTYP(I,J) == 32 .or. IVGTYP(I,J) == 33 ) THEN

UTYPE_URB = UTYPE_URB2D(I,J) !urban type (low, high or industrial)

(3) I don't think you need to modify anything.
 
Thank you, Ming.

The snippet from module_initialize_real.F confirms what I observed, that real.exe collapses the urban land-use classes to 13.

2987 IF ( grid%FRC_URB2D(i,j) .GE. 0.5 .AND. &
2988 (grid%ivgtyp(i,j).NE.13 .AND. grid%ivgtyp(i,j).NE.24 .AND. grid%ivgtyp(i,j).NE.25 .AND. grid%ivgtyp(i,j).NE.26)) grid%ivgtyp(i,j)=13

At what point do you then set the urban classes to 31, 32, and 33 in LU_INDEX? Not before running real.exe, because real.exe collapses them all to 13.

I tried setting them in wrfinput_d0* directly, but in that case wrf.exe complains that it has too many land categories. Setting num_land_cat to 33 in namelist.input also didn't help--now wrf.exe complained about num_land_cat being too high.

What worked for me is to let LU_INDEX=13 for all urban grid cells, have FRC_URB2D in wrfinput_d0*, and define the 3 classes in URBPARM.TBL. However, I'm still not clear whether this is the correct way to do it.

> (3) I don't think you need to modify anything.

In that case, how do you run BEP with a single class? The only way I got it to run is by setting all 3 classes in URBPARM.TBL to use the same parameters.
 
Hi Milan,

I think you can try to modify LU_INDEX and IVGTYP in the wrfinput
cuz in the src codes module_sf_urban.F the model would read IVGTYP to define 31,32,33
For more detail of the codes, I recommend a file.
http://www.wudapt.org/wp-content/uploads/2016/05/Urbanized-WRF-modeling-using-WUDAPT-web-version-March2016.pdf

Hope it would help. I am also trying to run the BEP model in WRF. I would update if there is any progress.

Zhiyin
 
Back
Top