Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

The surface roughness issue in UCM

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.

Yichen Yang

New member

I think this issue (or maybe not) has been discussed a bit. But I'd like to re-discribe it based on my situation.

I used WRFv4.3.3 to model the Urban Heat Island in Logan, Utah. The boundary conditions were provided by the HRRR dataset with 3-km resolution. I used MJY PBL scheme. I did two tests; One using Noah without a UCM coupled, and another with SLUCM coupled. I'm seeing largely different surface roughness (ZNT and Z0) for urban grids between my two runs.

1. The Noah-run is using VEGPARM.TBL to prescribe the roughness for all the land use types. In this case, the output urban ZNT is about 0.5, which is as expected.

2. The UCM-run uses the WUDAPT data to extent the MODIS urban class to a total of 11 LCZ classes. In the namelist.input, I used USE_WUDAPT_LCZ = 1 to ask the model to use URBPARM_LCZ.TBL, instead of using URBPARM.TBL. The output ZNT for urban grids is 0.8 for the initial timestep, which is from the LANDUSE.TBL, but is consistently 0.14 for the following timesteps, which looks odd.

The low ZNT for in the UCM-run seems unrealistic. I understand that the urban ZNT is calculated using an urban module based on building parameters, unlike what would be done in Noah. So I checked the code in module_sf_urban.F:


Z0 = Z0C
Z0H = Z0HC
Z = ZA - ZDC
ZNT = Z0 ! add by Dan Li


Lambda_P = R_TBL(LC)
Lambda_F = HGT_TBL(LC)
Cd = 1.2
alpha_macd = 4.43
beta_macd = 1.0

ZDC_TBL(LC) = ZR_TBL(LC) * ( 1.0 + ( alpha_macd ** ( -Lambda_P ) ) * ( Lambda_P - 1.0 ) )

Z0C_TBL(LC) = ZR_TBL(LC) * ( 1.0 - ZDC_TBL(LC)/ZR_TBL(LC) ) * &
exp (-(0.5 * beta_macd * Cd / (VonK**2) * ( 1.0-ZDC_TBL(LC)/ZR_TBL(LC) ) * Lambda_F )**(-0.5))

! Include roof height variability in Macdonald
! to parameterize Z0R as a function of ZR_SD (Standard Deviation)
Z0R_TBL(LC) = ZR_TBL(LC) * ( 1.0 - ZDC_TBL(LC)/ZR_TBL(LC) ) &
* exp ( -(0.5 * beta_macd * Cd / (VonK**2) &
* ( 1.0-ZDC_TBL(LC)/ZR_TBL(LC) ) * Lambda_FR )**(-0.5))

It seems like the ZNT is equal to Z0C, which is calculated using ZDC (zero-displacement height), ZR (building height), Lambda_F (frontal indices), and some other parameters. I don't think this function is questionable, because I did some manual calculations using my data. It is giving me ZNT ~= 0.4 for the urban grids.

I'm just confused (1) why the model outputted 0.14, after mosaicking the ZNT of the urban portion (from this module) with the ZNT of the vegetation portion (prescribed in VEGPARM.TBL). (2) Is this a real problem that will affect other model results, like air temperature?

I have attached my namelists below. They are for the UCM-run only. I appreciate it if you can take a look.

Many thanks for you response in advance!


  • namelist.wps
    930 bytes · Views: 7
  • namelist.input
    3.9 KB · Views: 9