NCAR / ccpp-physics

GFS physics for CCPP
Other
58 stars 145 forks source link

incorrect calculation of "bounded_surface_roughness_length_for_heat_over_land" in NOAH-MP #964

Closed pjpegion closed 1 year ago

pjpegion commented 2 years ago

Description

While debugging for another reason, I have found that the surface_roughness_length_over_land and the bounded_surface_roughness_length_for_heat_over_land were always the same. I believe this is because the calculation of zcli1 at line 5183 of module_sf_noahmplsm.F90 is using the canopy height (parameters%hvt) and not the thermal roughness length.
Trier et al. 2001 shows that Zcli ranges from 0.01 to 1.0, but at a certain grid point that I am using to debug, the value of Zcli is ~5.0e-115.

Additional context

This bug was found in conjunction with Issue #963

pjpegion commented 2 years ago

Update, I see the Fei Chen's paper uses canopy height instead of surface roughness when calculating zcli1, so I suppose that this is not a bug.

barlage commented 2 years ago

@pjpegion @HelinWei-NOAA @RongqianYang-NOAA @wzzheng90 @ChunxiZhang-NOAA @yangfanglin

I'm a little confused here as well. I see a bug, related to the one you were seeing. As @pjpegion says, in the Chen 2009 paper, canopy height should be used.

czil = 10^(-0.4 * canopy_height)

There seems to be an extra factor of 0.07 here (typically used to convert z0 to canopy height)

The sfc_diff code is using a different approximation of canopy_height = z0m/0.1

pjpegion commented 2 years ago

@barlage I did not catch that inconsistency. It looks to me that the 0.07 should not be there.

barlage commented 2 years ago

@pjpegion FYI- this is a bug that needs to be fixed but the effect is not catastrophic. The default NoahMP uses z0t = z0m. The addition of thermal roughness length options were merged in #873. The bug which is activated with opt_trs=2 essential reverts back to the default method. The main effects/differences will be over short vegetation.