WRF-urban-NbS development#2272
Conversation
WRF-urban-nbs update
Update dyn_em files with new WRF-urban-nbs related variables
Largely enhanced module_sf_urban.F to incorporate nature-based solutions (including urban trees) Update phys files with new WRF-urban-nbs related variables
Update TBL files with new WRF-urban-nbs related variables
Update wrftladj files with new WRF-urban-nbs related variables
|
This PR will fail the regression test because the NoahMP link has not been updated yet. The developers are working to update the noahmp github for this changes and will update the commit soon once the noahmp link is updated. |
|
@chenghaow This PR fails for multiple tests when |
- Removed double-precision-related code based on HRLDAS offline model - Uncommented distributed aerodynamic roughness length related code to be consistent with WRF v4.7.1
|
@weiwangncar Thanks for sharing the compilation log. We found that the issue is caused by an inconsistency in @cenlinhe I'll open a separate issue in the HRLDAS repo on this. |
|
yes, Noah-MP uses a different double precision flag (DOUBLE_PREC) than WRF (DOUBLE_PRECISION). My NoahMPv5 coupling will resolve this issue, but it's good that you reverted back to the original WRF-Urban treatment. Please make sure that you did not remove any other default urban code in the WRF version (do not use HRLDAS version). |
Sure. We will keep the double precision flag in the offline version though. |
|
HRLDAS version of the urban code may lag a few recent WRF-Urban updates. |
Duplicate declarations removed
|
The current version successfully compiled on Derecho with |
|
@chenghaow The last regression tests failed on three cases. Attached is the output file from this group of tests (search for kiaps2): |
Also removed temporary fix for singularity matrix in tree energy budget
|
This PR needs to be merged first before the refactored NoahMP coupling PR (#2268) because this PR modifies the non-refactored NoahMP urban driver. Once this urban PR is merged, I will need to update the Noah-MP urban driver in the refactored code and hence the refactored NoahMP coupling PR above to avoid any merge conflicts. |
|
@weiwangncar Looks like our recent fix failed the regression tests. Would you please share the output file? Thanks! |
|
@chenghaow See attached file here (tests for kiaps2 namelists): |
Singular matrix in Urban Tree Energy Budget
Stabilize urban tree energy budget solve with damped diagonal fallback
|
@chenghaow We would like confirmation this does not affect results when the option is switched off before approving the PR. |
|
Hi @dudhia and @weiwangncar With
So, if users stick with the default table values, the only expected difference relative to the original SLUCM would come from the street-canyon shadow effect. @cenlinhe also looping in Cenlin here. |
|
OK, we will approve it if @cenlinhe can confirm that these changes are fine. Thanks. |
|
these changes look fine to me. |
|
@cenlinhe as far as I can tell it has been .false. since it was added in 2006. I will approve this commit for now and we can return to this issue later. |
|
I looked at the code and to be used correctly SHADOW needs diffuse and direct solar separately. These are available but probably not passed in. |
I think both diffuse and direct solar are passed in by default. @chenghaow could you please double check and confirm? |
|
The default version uses Of course one may pass direct and diffuse from WRF-solar, but the default SLUCM don't need them. |
But this LSOLAR = .FALSE. does not prevent users from activating the SHADOW option, right? |
|
You are right. But no matter whether shadow is activated or not, the default version still doesn’t need direct and diffuse SW passed from other modules. |
In that case, I am fine with your current settings, keep the SHADOW = .true. by default. |
|
@chenghaow Can you please add the three fixes in the PR message as well as in the RELEASE NOTE section? Thanks! |
|
@chenghaow Also, although it is not a big deal, we prefer code added without much 'signatures', such as '! added by Chenghao Wang' - if one is interested in the history of the code, git can find everything. |
dudhia
left a comment
There was a problem hiding this comment.
Remaining changes mentioned in review are minor text only and can be done later.
I tested this option previously in the previous version; the SHADOW==.true. seemed to make the model crash. I cannot remember what the issue was, maybe due to model stability but it can be tested in the future. |
That’s strange. |
Thank you for sharing that. My previous run crashed in a different version, which could also be due to other issues. |
|
I note that LSOLAR is FALSE in the urban module and there is also code in module_sf_urban that will ignore separate diffuse and direct inputs even if TRUE. Setting LSOLAR to TRUE is not that easy because some older shortwave schemes don't provide separate diffuse and direct. Ideally LSOLAR will be tied to the sw radiation option instead of in the LSM drivers. |
|
@chenghaow @cenlinhe @tslin2 Do you have a minimum (or maximum) or a typical value for the lowest model layer (between full levels) we can recommend the users to apply when using SLUCM with and without the tree option? |
No. In this version, all urban trees are set to be lower than the mean building height. So whether the model crashes or not still depends on the relationship between the mean building height and the first atmospheric layer, just like in the original SLUCM, and is ultimately controlled by the input building height data. |
Totally agree. |
TYPE: bugfix KEYWORDS: syntax SOURCE: internal DESCRIPTION OF CHANGES: Problem: PR #2272 adds invalid Fortran syntax Solution: Resolve syntax issue
**Critical bug fix for WRF-urban-NbS module for WRF v4.8 release** **TYPE:** bug fix **KEYWORDS:** urban canopy models, urban trees, nature-based solutions, urban grass, urban hydrology, radiative view factors **SOURCE:** Yuqi Huang (University of Oklahoma), Chenghao Wang (University of Oklahoma) **DESCRIPTION OF CHANGES:** #### Problem: We have identified bugs in our recent testing and evaluation of the new WRF-urban-NbS module (see this existing PR: #2272). This PR fixes several critical issues in the urban nbs implementation in the single-layer urban canopy model, including both minor corrections and major physics-related updates affecting radiative transfer, tree temperature treatment, soil moisture control on transpiration, and vegetated-ground thermal behavior. Corresponding updates are also included in urban TBL files. The changes are intended to improve physical consistency, numerical robustness, and parameter consistency for the WRF-urban-NbS module. #### Solution: _Major Fixes:_ 1. Made vegetated ground fraction (FVG) urban-type dependent - Replaced the previous scalar-style handling of `FVG` with `FVG_TBL(UTYPE)`. - Updated TBL files accordingly. - This ensures vegetated ground fraction is read consistently with other urban-category-dependent parameters. 2. Moved the tree view-factor calculation outside the shortwave-only branch - The analytical tree view-factor calculation is now called independently of the shortwave shadow logic. - This avoids restricting tree radiative geometry to the shortwave pathway only and improves consistency for broader radiative exchange. 3. Added an optional prognostic tree-temperature scheme (new feature in namelist) - Introduced TTscheme in URBPARM.TBL and corresponding logic in `module_sf_urban.F`. - `TTscheme = 0`: diagnostic/residual treatment (default) - `TTscheme = 1`: prognostic/resistance-based treatment (This allows tree temperature to evolve independently rather than being tied directly to canyon air temperature.) 4. Revised the `W2` formulation used in stomatal resistance - Replaced the previous mid-layer approximation with a thickness-weighted soil moisture average over the upper vegetated-ground layers. - This provides a more consistent moisture control on stomatal resistance and tree transpiration. 5. Removed the vegetation scaling factor applied to soil thermal conductivity - The previous reduction factor on `KVG` was removed. - This avoids artificially suppressing conductive heat transfer into deeper vegetated-ground soil layers. _Minor Fixes:_ 1. Updated the effective ground temperature treatment - Revised the `TGE/TGEP` update so that the effective ground temperature is computed after the surface temperatures are updated. 2. Updated root water uptake state - Added explicit update of root uptake (`SROOTP = SROOT`) to keep the moisture state evolution consistent. 3. Corrected the canyon humidity derivative - Updated the `QC` derivative/Jacobian terms to include vegetated-ground contributions in the denominator. - This improves consistency of the coupled canyon temperature-humidity solve. 4. Moved tree and vegetated-ground albedo to URBPARM.TBL - Added `ALBT` and `ALBVG` as table-driven parameters rather than keeping tree albedo hard-coded in the source file. 5. Updating TBL files to support the fixes above: - FVG is now specified by urban type - added `TTscheme` - added `ALBVG` - added `ALBT` 6. Code annotation cleanup LIST OF MODIFIED FILES: (`git diff --name-only release-v4.8.0 urban-nbs-fix-v4.8`) - phys/module_sf_urban.F - run/URBPARM.TBL - run/URBPARM_LCZ.TBL - run/URBPARM_UZE.TBL **TESTS CONDUCTED:** Our simulations demonstrated that these modifications are necessary to ensure model performance and physical consistency.
Development of the WRF-urban-NbS module within the single-layer urban canopy model
TYPE: new feature
KEYWORDS: urban canopy models, urban trees, nature-based solutions, urban grass, urban hydrology, radiative view factors
SOURCE: Yuqi Huang (University of Oklahoma), Chenghao Wang (University of Oklahoma), Cenlin He (NCAR)
DESCRIPTION OF CHANGES:
Problem: The current WRF-urban modeling system employs a single-layer urban canopy model (SLUCM) that assumes a dry street canyon. While a green roof module exists, ground vegetation and street trees are not represented. As a result, key nature-based solution (NbS) processes such as evapotranspiration, radiative shading, and soil–vegetation–atmosphere interactions are not captured. In addition, radiative exchanges involving trees are not explicitly resolved. A version of the urban tree module within SLUCM was developed and tested for the contiguous U.S. but only accounted for shading in a simplified way:
Solution:
This PR introduces urban ground vegetation and street trees into the single-layer urban canopy model. Round-shaped urban trees are explicitly represented, resolving evapotranspiration, shading, and root water uptake. Radiative exchanges between trees and surrounding urban elements are solved using newly implemented analytical view factors.
The development is largely based on the Arizona State University Single-Layer Urban Canopy Model (ASLUM v3.1) and its hydrologically enhanced version, ASLUM-Hydro, and extends their capabilities within the WRF-Urban framework. See the following two papers for ASLUM v3.1 and ASLUM-Hydro:
This PR also includes the following fixes:
SHADOWwas changed to.true.. In the previous default setting, street-canyon shadowing was not considered. We can switch this back if you think the default should remain unchanged.IMP_SCHEME == 2(the default in the table is 1).GROPTION = 1): ChangedRGR = EPSV*(RX-SIG*(TA**4.)/60.)toRGR = EPSV*(RX-SIG*(TGRP**4.)/60.). This is a bug fix. Note that the default table value forGROPTIONis 0.ISSUE: NA
LIST OF MODIFIED FILES:
The following files were modified (generated using
git diff --name-only master urban_nbs):TESTS CONDUCTED:
Note:
Successful compilation requires Noah-MP-related source files that are not included in WRF v3.7.1, including a modified version of
module_sf_noahmpdrv.F. These changes will be addressed in a separate PR dedicated to Noah-MP.RELEASE NOTE:
This PR introduces urban ground vegetation and street trees into the single-layer urban canopy model and based the following two manuscripts in development: