Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion bld/namelist_files/namelist_definition_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3012,7 +3012,7 @@ snow melt of Brock et al. (2006)
group="clm_initinterp_inparm" valid_values="" >
If FALSE (which is the default): If an output type cannot be found in the input for initInterp,
code aborts
If TRUE: If an output type cannot be found in the input, fill with closest natural veg column
If TRUE: If a non-urban output type cannot be found in the input, fill with closest natural veg column
(using bare soil for patch-level variables)

NOTE: Natural vegetation and crop landunits always behave as if this were true. e.g., if
Expand All @@ -3021,6 +3021,14 @@ always fill with the closest natural veg patch / column, regardless of the value
flag. So interpolation from non-crop to crop cases can be done without setting this flag.
</entry>

<entry id="init_interp_fill_missing_urban_with_HD" type="logical" category="datasets"
group="clm_initinterp_inparm" valid_values="" >
If FALSE (which is the default): If an urban output type cannot be found in the input for initInterp,
code aborts
If TRUE: If an urban output type cannot be found in the input, fill with closest urban high density
(HD) landunit
</entry>

<entry id="init_interp_method" type="char*64" category="datasets"
group="clm_initinterp_inparm"
valid_values="general,use_finidat_areas" >
Expand Down
10 changes: 10 additions & 0 deletions cime_config/testdefs/testlist_clm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,16 @@
<option name="comment">CESM3 development Exact restart test with change in the processor count at the standard coupled resolution for transient</option>
</options>
</test>

<test name="SMS_D_Ld10" grid="f09_f09_mt232" compset="IHistClm60BgcCrop" testmods="clm/f09_FillMissingW_Urban">
<machines>
<machine name="derecho" compiler="intel" category="aux_clm"/>
</machines>
<options>
<option name="wallclock">00:20:00</option>
<option name="comment">Testing that a initial condition file with an missing urban landunit will be filled with another urban landunit</option>
</options>
</test>
<test name="ERS_D_Ld9" grid="ne30pg3_t232" compset="I1850Clm60BgcCropG" testmods="clm/clm60cam7LndTuningMode">
<machines>
<machine name="derecho" compiler="intel" category="aux_clm"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
../default
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
! NOTE: Using an initial file that does NOT have TBD on it and 5.4 landuse timeseries dataset that has TBD on it
fsurdat = '$DIN_LOC_ROOT/lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c250428.nc'
flanduse_timeseries = '$DIN_LOC_ROOT/lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250428.nc'
finidat = '$DIN_LOC_ROOT/lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc'
init_interp_fill_missing_urban_with_HD = .true.
use_init_interp = .true.
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
./xmlchange ROF_NCPL='$ATM_NCPL'

# Turn MEGAN off to run faster
./xmlchange CLM_BLDNML_OPTS='--no-megan' -append
./xmlchange CLM_BLDNML_OPTS='--no-megan' --append

# Use fast structure and NWP configuration for speed
./xmlchange CLM_STRUCTURE="fast"
./xmlchange CLM_CONFIGURATION="nwp"

# Turn cpl history off
./xmlchagne HIST_OPTION="never"
./xmlchange HIST_OPTION="never"
49 changes: 48 additions & 1 deletion src/init_interp/initInterp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ module initInterpMod
! patch-level variables)
logical :: init_interp_fill_missing_with_natveg

! If true, fill missing urban landunit type with closest urban high density (HD) landunit
logical :: init_interp_fill_missing_urban_with_HD

character(len=*), parameter, private :: sourcefile = &
__FILE__

Expand Down Expand Up @@ -106,11 +109,13 @@ subroutine initInterp_readnl(NLFilename)
!-----------------------------------------------------------------------

namelist /clm_initinterp_inparm/ &
init_interp_method, init_interp_fill_missing_with_natveg
init_interp_method, init_interp_fill_missing_with_natveg, &
init_interp_fill_missing_urban_with_HD

! Initialize options to default values, in case they are not specified in the namelist
init_interp_method = ' '
init_interp_fill_missing_with_natveg = .false.
init_interp_fill_missing_urban_with_HD = .false.

if (masterproc) then
unitn = getavu()
Expand All @@ -130,6 +135,7 @@ subroutine initInterp_readnl(NLFilename)

call shr_mpi_bcast (init_interp_method, mpicom)
call shr_mpi_bcast (init_interp_fill_missing_with_natveg, mpicom)
call shr_mpi_bcast (init_interp_fill_missing_urban_with_HD, mpicom)

if (masterproc) then
write(iulog,*) ' '
Expand Down Expand Up @@ -287,12 +293,36 @@ subroutine initInterp (filei, fileo, bounds, glc_behavior)
status = pio_get_att(ncidi, pio_global, &
'icol_vegetated_or_bare_soil', &
subgrid_special_indices%icol_vegetated_or_bare_soil)
status = pio_get_att(ncidi, pio_global, &
'icol_urban_roof', &
subgrid_special_indices%icol_urban_roof)
status = pio_get_att(ncidi, pio_global, &
'icol_urban_sunwall', &
subgrid_special_indices%icol_urban_sunwall)
status = pio_get_att(ncidi, pio_global, &
'icol_urban_shadewall', &
subgrid_special_indices%icol_urban_shadewall)
status = pio_get_att(ncidi, pio_global, &
'icol_urban_impervious_road', &
subgrid_special_indices%icol_urban_impervious_road)
status = pio_get_att(ncidi, pio_global, &
'icol_urban_pervious_road', &
subgrid_special_indices%icol_urban_pervious_road)
status = pio_get_att(ncidi, pio_global, &
'ilun_vegetated_or_bare_soil', &
subgrid_special_indices%ilun_vegetated_or_bare_soil)
status = pio_get_att(ncidi, pio_global, &
'ilun_crop', &
subgrid_special_indices%ilun_crop)
status = pio_get_att(ncidi, pio_global, &
'ilun_urban_tbd', &
subgrid_special_indices%ilun_urban_TBD)
status = pio_get_att(ncidi, pio_global, &
'ilun_urban_hd', &
subgrid_special_indices%ilun_urban_HD)
status = pio_get_att(ncidi, pio_global, &
'ilun_urban_md', &
subgrid_special_indices%ilun_urban_MD)

! BACKWARDS_COMPATIBILITY(wjs, 2021-04-16) ilun_landice_multiple_elevation_classes has
! been renamed to ilun_landice. For now we need to handle both possibilities for the
Expand Down Expand Up @@ -321,10 +351,26 @@ subroutine initInterp (filei, fileo, bounds, glc_behavior)
subgrid_special_indices%ipft_not_vegetated
write(iulog,*)'icol_vegetated_or_bare_soil = ' , &
subgrid_special_indices%icol_vegetated_or_bare_soil
write(iulog,*)'icol_urban_roof = ' , &
subgrid_special_indices%icol_urban_roof
write(iulog,*)'icol_urban_sunwall = ' , &
subgrid_special_indices%icol_urban_sunwall
write(iulog,*)'icol_urban_shadewall = ' , &
subgrid_special_indices%icol_urban_shadewall
write(iulog,*)'icol_urban_impervious_road = ' , &
subgrid_special_indices%icol_urban_impervious_road
write(iulog,*)'icol_urban_pervious_road = ' , &
subgrid_special_indices%icol_urban_pervious_road
write(iulog,*)'ilun_vegetated_or_bare_soil = ' , &
subgrid_special_indices%ilun_vegetated_or_bare_soil
write(iulog,*)'ilun_crop = ' , &
subgrid_special_indices%ilun_crop
write(iulog,*)'ilun_urban_tbd = ' , &
subgrid_special_indices%ilun_urban_TBD
write(iulog,*)'ilun_urban_hd = ' , &
subgrid_special_indices%ilun_urban_HD
write(iulog,*)'ilun_urban_md = ' , &
subgrid_special_indices%ilun_urban_MD
write(iulog,*)'ilun_landice = ' , &
subgrid_special_indices%ilun_landice
write(iulog,*)'create_glacier_mec_landunits = ', &
Expand Down Expand Up @@ -839,6 +885,7 @@ subroutine findMinDist( dimname, begi, endi, bego, endo, ncidi, ncido, &
glc_behavior=glc_behavior, &
glc_elevclasses_same=glc_elevclasses_same, &
fill_missing_with_natveg=init_interp_fill_missing_with_natveg, &
fill_missing_urban_with_HD=init_interp_fill_missing_urban_with_HD, &
mindist_index=minindx)
case (interp_method_finidat_areas)
if (masterproc) then
Expand Down
Loading