I see MCIP code blocks in getluse.f90 and lucats_mod.f90 that appear to handle USGS28 correctly – or at least, the same way that was used in Nolte et al., JAWMA 2021, which used CMAQv5.3 and MCIPv4.5.1.
On the CMAQ side, I modified LSM_MOD.F by inserting these code blocks. It should be obvious where to insert them.
INTEGER, PRIVATE, PARAMETER :: n_usgs28 = 28
TYPE( lu_type ), PRIVATE, PARAMETER :: USGS28( n_usgs28 ) = (/
! VEGMN0 LAIMN0 LUF_FAC
! —Name— -LU cat - RSMIN Z00 VEG0 | LAI0 | SNUP0 ALBF | HGLU_FAC Cat Desc.
& lu_type(‘USGS_Urban’, 'URBAN ', 150.0, 50.0, 40.0, 20.0, 2.0, 0.5, 0.04, 15.0, 338.0, 190.0), ! 1 Urban or Built-up Land
& lu_type(‘USGS_DrCrp’, 'AG ', 70.0, 10.0, 95.0, 15.0, 3.16, 0.5, 0.04, 17.0, 340.0, 80.0), ! 2 Dryland Crop and Pasture
& lu_type(‘USGS_IrCrp’, 'AG ', 60.0, 10.0, 95.0, 10.0, 3.16, 0.5, 0.04, 18.0, 340.0, 32.0), ! 3 Irr. Cropland and Pasture
& lu_type(‘USGS_MixCp’, 'AG ', 70.0, 10.0, 95.0, 15.0, 3.16, 0.5, 0.04, 18.0, 340.0, 56.0), ! 4 Mixed Dry/Irr Crop and Past
& lu_type(‘USGS_CrGrM’, 'AG ', 80.0, 10.0, 95.0, 35.0, 2.5, 1.0, 0.04, 18.0, 298.0, 50.0), ! 5 Grassland/Cropland Mosaic
& lu_type(‘USGS_CrWdM’, 'AG ', 180.0, 40.0, 95.0, 40.0, 4.0, 1.5, 0.04, 16.0, 298.0, 26.0), ! 6 Woodland/Cropland Mosaic
& lu_type(‘USGS_GrsLd’, 'HERB ', 100.0, 7.0, 95.0, 70.0, 2.5, 1.0, 0.04, 19.0, 247.0, 20.0), ! 7 Grassland
& lu_type(‘USGS_ShrLd’, 'SHRUB ', 200.0, 20.0, 70.0, 50.0, 3.0, 1.0, 0.03, 22.0, 246.0, 125.0), ! 8 Shrubland
& lu_type(‘USGS_ShrGr’, 'SHRUB ', 150.0, 20.0, 85.0, 60.0, 3.0, 1.0, 0.035, 20.0, 246.0, 73.0), ! 9 Mixed Shrubland/Grassland
& lu_type(‘USGS_Savan’, 'MIXFOR ', 120.0, 20.0, 80.0, 60.0, 2.0, 1.0, 0.04, 20.0, 246.0, 51.0), ! 10 Savanna
& lu_type(‘USGS_DBFst’, 'DECFOR ', 200.0, 50.0, 95.0, 50.0, 5.0, 1.0, 0.08, 16.0, 268.0, 81.0), ! 11 Broadleaf Deciduous Forest
& lu_type(‘USGS_DNFst’, 'DECFOR ', 175.0, 50.0, 95.0, 50.0, 5.0, 1.0, 0.08, 14.0, 267.0, 81.0), ! 12 Deciduous Coniferous Forest
& lu_type(‘USGS_EBFst’, 'EVEFOR ', 120.0, 40.0, 95.0, 85.0, 5.0, 4.0, 0.08, 12.0, 247.0, 130.0), ! 13 Evergreen Broadleaf Forest
& lu_type(‘USGS_ENFst’, 'EVEFOR ', 175.0, 50.0, 90.0, 80.0, 4.0, 3.0, 0.08, 12.0, 246.0, 40.0), ! 14 Evergreen Coniferous Forest
& lu_type(‘USGS_MxFst’, 'MIXFOR ', 200.0, 50.0, 95.0, 60.0, 5.0, 2.0, 0.08, 13.0, 252.0, 139.0), ! 15 Mixed forest
& lu_type(‘USGS_Water’, 'WATER ',9999.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.01, 8.0, 0.0, 0.0), ! 16 Water
& lu_type(‘USGS_HWtld’, 'WETLAND ', 164.0, 15.0, 60.0, 40.0, 2.0, 1.0, 0.01, 14.0, 248.0, 125.0), ! 17 Herbaceous Wetland
& lu_type(‘USGS_WWtld’, 'WETLAND ', 200.0, 45.0, 90.0, 80.0, 5.0, 3.0, 0.01, 14.0, 260.0, 125.0), ! 18 Forested Wetlands
& lu_type(‘USGS_BarSp’, 'BARREN ', 100.0, 5.0, 10.0, 5.0, 0.5, 0.2, 0.02, 25.0, 246.0, 26.0), ! 19 Barren or Sparsely Vegetated
& lu_type(‘USGS_HrTun’, 'HERB ', 150.0, 10.0, 20.0, 10.0, 1.0, 0.5, 0.02, 15.0, 246.0, 62.0), ! 20 Herbaceous Tundra
& lu_type(‘USGS_WdTun’, 'SHRUB ', 200.0, 10.0, 30.0, 10.0, 1.0, 0.5, 0.025, 15.0, 246.0, 62.0), ! 21 Shrub and Brush Tundra
& lu_type(‘USGS_MxTun’, 'SHRUB ', 150.0, 5.0, 20.0, 5.0, 1.0, 0.5, 0.025, 15.0, 246.0, 62.0), ! 22 Mixed Tundra
& lu_type(‘USGS_BGTun’, 'BARREN ', 100.0, 5.0, 5.0, 2.0, 0.1, 0.1, 0.025, 25.0, 246.0, 18.0), ! 23 Bare Ground Tundra
& lu_type(‘USGS_SnwIc’, 'SNOWICE ', 300.0, 5.0, 5.0, 2.0, 0.1, 0.1, 0.02, 55.0, 0.0, 0.0), ! 24 Snowfields or Glaciers
& lu_type(‘USGS_nul25’, ‘UNASSIGN’, 300.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.02, 55.0, 0.0, 0.0), ! 25 unassigned
& lu_type(‘USGS_nul26’, ‘UNASSIGN’, 300.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.02, 55.0, 0.0, 0.0), ! 26 unassigned
& lu_type(‘USGS_nul27’, ‘UNASSIGN’, 300.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.02, 55.0, 0.0, 0.0), ! 27 unassigned
& lu_type(‘USGS_Lakes’, 'WATER ',9999.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.01, 8.0, 0.0, 0.0)/) ! 28 lakes
IF ( INDEX( VDESC3D( l ), 'USGS28' ) .NE. 0 ) LAND_SCHEME = 'USGS28'
CASE( 'USGS28' )
n_lufrac = n_usgs28
If ( .Not. Allocated ( cat_lu ) ) Then
Allocate ( cat_lu ( n_lufrac ),
& name_lu ( n_lufrac ),
& RSMIN ( n_lufrac ),
& LAI0 ( n_lufrac ),
& LAIMN0 ( n_lufrac ),
& VEG0 ( n_lufrac ),
& VEGMN0 ( n_lufrac ),
& Z00 ( n_lufrac ),
& LUF_FAC ( n_lufrac ),
& HGLU_FAC ( n_lufrac ), STAT = ALLOCSTAT )
IF ( ALLOCSTAT .NE. 0 ) THEN
XMSG = 'Failure allocating land use data'
CALL M3EXIT( PNAME, JDATE, JTIME, XMSG, XSTAT1 )
END IF
End If
cat_lu = USGS28%lu_cat
name_lu = USGS28%name
RSMIN = USGS28%RSMIN
LAI0 = USGS28%LAI0
LAIMN0 = USGS28%LAIMN0
VEG0 = USGS28%VEG0
VEGMN0 = USGS28%VEGMN0
Z00 = USGS28%Z00/100.0
LUF_FAC = USGS28%LUF_FAC
HGLU_FAC = USGS28%HGLU_FAC
Likewise, I modified PHOTOLYSIS_ALBEDO.F by inserting these code blocks.
CASE( 'USGS28' )
NUMB_LANDUSE = 28
LAND_SCHEME = LSM_SCHEME
CASE( 'USGS28' )
ALBMAP_TO_REF( 1:24 ) = ALBMAP_REF2USGS( 1:24 )
ALBFAC_TO_REF( 1:24 ) = ALBFAC_REF2USGS( 1:24 )
ALBMAP_TO_REF( 25:27 ) = 18
ALBFAC_TO_REF( 25:27 ) = 1.0
ALBMAP_TO_REF( 28 ) = 17
ALBFAC_TO_REF( 28 ) = 1.0