DanLi-BU / WRF

The official repository for the Weather Research and Forecasting (WRF) model
Other
1 stars 0 forks source link

TB_URB, TC_URB, TG_URB do not change with time in version 4.5.1 #1

Open DanLi-BU opened 1 year ago

DanLi-BU commented 1 year ago

I modified Registry.EM_COMMON to include TB_URB, TC_URB, TG_URB in the history files in version 4.5.1, and recompiled the code and rerun a case using sf_urban_physics = 1. They showed up in the history files but their values do not change with time. This seems to be also an issue associated with version 4.4.2 and 4.3.2, but not associated with version 4.2.2. Maybe an I/O issue introduced in version 4.3 when LCZ is introduced to urban modeling.

DanLi-BU commented 1 year ago

The problem arises because I was using NLCD (National Land Cover Dataset) as the land use (i.e., in namelist.wps I was using nlcd2011_9s+default for geog_data_res) and I was using the single-layer urban canopy model.

Since WRF version 4.3 which introduced LCZ (local climate zone), although one can still use NLCD for land use, the urban categories defined in NLCD (category 23-26 in VEGPARM.TBL for NLCD40) will no longer be handled by the single-layer urban canopy model. One can infer this from WRF version 4.3's phys/module_sf_noahdrv.F (line 4578 to 4586), reproduced below. Clearly the urban categories in NLCD (with IVGTYP not equal to ISURBAN or any of the LCZs) will not go through this part of the code.

As a result, the TB_URB, TC_URB, TG_URB are only initialized but do not enter any calculations. This is why they do not change with time.

To corroborate with this, I changed namelist.wps to use MODIS as land use. Still using WRF v4.5.1., TB_URB, TC_URB, TG_URB do evolve with time. Note though MODIS only has one urban category.

Not sure if this is an unintended or intended consequence of introducing LCZ.


          IF (SF_URBAN_PHYSICS == 1 ) THEN                                              ! Beginning of UCM CALL if block
  !--------------------------------------
  ! URBAN CANOPY MODEL START - urban
  !--------------------------------------
  ! Input variables lsm --> urban
              IF( IVGTYP(I,J) == ISURBAN    .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. &
                  IVGTYP(I,J) == LCZ_3      .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. &
                  IVGTYP(I,J) == LCZ_6      .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. &
                  IVGTYP(I,J) == LCZ_9      .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN