From a999afb7fa74e577d2323a596a8f4c96b40df747 Mon Sep 17 00:00:00 2001 From: Fang Date: Fri, 30 May 2025 10:13:19 -0600 Subject: [PATCH 001/108] big commit --- src/biogeochem/CNFireLi2024Mod.F90 | 34 +++++++++++++++++++----------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/biogeochem/CNFireLi2024Mod.F90 b/src/biogeochem/CNFireLi2024Mod.F90 index dbad9a773d..a516600461 100644 --- a/src/biogeochem/CNFireLi2024Mod.F90 +++ b/src/biogeochem/CNFireLi2024Mod.F90 @@ -7,11 +7,8 @@ module CNFireLi2024Mod ! module for fire dynamics ! created in Nov, 2012 and revised in Apr, 2013 by F. Li and S. Levis ! based on Li et al. (2012a,b; 2013) - ! revised in Apr, 2014 according to Li et al.(2014) - ! revised in May, 2015, according to Li et al. (2015, in prep.) - ! Fire-related parameters were calibrated or tuned in May, 2015 based on the - ! 20th Century transient simulations at f19_g16 with a CLM4.5 version - ! (clm50fire), CRUNCEPv5, and climatological lightning data. + ! revised in Apr, 2014 according to Li and Lawrance (2017) + ! revised in Jun, 2024 and modified in May, 2025, according to Li et al. (2025, in prep.) ! ! !USES: use shr_kind_mod , only : r8 => shr_kind_r8 @@ -147,6 +144,10 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ real(r8) :: fs ! hd-dependent fires suppression (0-1) real(r8) :: ig ! total ignitions (count/km2/hr) real(r8) :: hdmlf ! human density + real(r8) :: topoi ! influence of topography on fires (0-1), where 1 indicates no impact. + ! can be removed if CLM consider Arctic C3 grass in plateau-> + ! intense light-> much more C allocated to fine roots than leaf, + ! and roots decreasing infiltration real(r8) :: arh, arh30 !combustability of fuel related to RH and RH30 real(r8) :: afuel !weight for arh and arh30 real(r8) :: btran_col(bounds%begc:bounds%endc) @@ -180,7 +181,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ defo_fire_precip_thresh_bdt => cnfire_const%defo_fire_precip_thresh_bdt, & ! Input: [real(r8) ] (mm/day) Max running mean daily precip allowing deforestation fire for broadleaf deciduous trees borpeat_fire_soilmoist_denom => cnfire_const%borpeat_fire_soilmoist_denom, & ! Input: [real(r8) ] (unitless) Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless) nonborpeat_fire_precip_denom => cnfire_const%nonborpeat_fire_precip_denom, & ! Input: [real(r8) ] (unitless) Denominator of precipitation in equation relating that to non-boreal peat fire (unitless) - + forc_topo_g => atm2lnd_inst%forc_topo_grc , & ! Input: [real(r8) (:) ] atmospheric surface height (m) fsr_pft => pftcon%fsr_pft , & ! Input: fd_pft => pftcon%fd_pft , & ! Input: rswf_min => pftcon%rswf_min , & ! Input: @@ -197,8 +198,8 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ forc_t => atm2lnd_inst%forc_t_downscaled_col , & ! Input: [real(r8) (:) ] downscaled atmospheric temperature (Kelvin) forc_rain => wateratm2lndbulk_inst%forc_rain_downscaled_col , & ! Input: [real(r8) (:) ] downscaled rain forc_snow => wateratm2lndbulk_inst%forc_snow_downscaled_col , & ! Input: [real(r8) (:) ] downscaled snow - prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. precipitation - rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. relative humidity + prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. precipitation + rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. relative humidity dwt_smoothed => cnveg_state_inst%dwt_smoothed_patch , & ! Input: [real(r8) (:) ] change in patch weight (-1 to 1) on the gridcell, smoothed over the year cropf_col => cnveg_state_inst%cropf_col , & ! Input: [real(r8) (:) ] cropland fraction in veg column gdp_lf => this%gdp_lf_col , & ! Input: [real(r8) (:) ] gdp data @@ -303,7 +304,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ cropf_col(c) = cropf_col(c) + patch%wtcol(p) end if ! For natural vegetation - if (patch%itype(p) <= nc4_grass ) then + if (patch%itype(p) <= nc4_grass .and. patch%itype(p) >= ndllf_evr_tmp_tree) then lfwt(c) = lfwt(c) + patch%wtgcell(p) end if end do @@ -516,8 +517,12 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ g = col%gridcell(c) ! For crop + ! cropf_col(c) * col%wtgcell(c) > 0.1_r8 is added because fires are rare in + ! gridcells with limited cropland coverage based on GFED5. Also, this helps to + ! avoid abm (crop fire peak month) regridding error from 0.05 degree to lower resolution + ! The condition could be removed if CLM supports the use of mode in abm inputs regridding if( forc_t(c) >= SHR_CONST_TKFRZ .and. patch%itype(p) > nc4_grass .and. & - kmo == abm_lf(c) .and. & + kmo == abm_lf(c) .and. cropf_col(c) * col%wtgcell(c) > 0.1_r8 .and. & burndate(p) >= 999 .and. patch%wtcol(p) > 0._r8 )then ! catch crop burn time hdmlf = this%forc_hdm(g) @@ -616,7 +621,12 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ cnfire_params%ignition_efficiency*(1._r8-fs)* & (lfwt(c)**0.5) end if - nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) !fire counts/km2/sec + if(forc_topo_g(g) <= 2500._r8)then !influence of topography on fires + topoi = 1._r8 + else + topoi = 0.004_r8 + end if + nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) * topoi !fire counts/km2/sec Lb_lf = 1._r8+10._r8*(1._r8-EXP(-0.06_r8*forc_wind(g))) spread_m = fire_m**0.5_r8 fd_col(c) = (lfwt(c)*lgdp1_col(c)*lpop_col(c))**0.5_r8 * fd_col(c) @@ -639,7 +649,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ / (trotr1_col(c) + trotr2_col(c)) cli = max(0._r8,min(1._r8,1._r8-prec30_col(c)*secspday/cri))* & - (15._r8*min(0.0016_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.009_r8)* & + (0.67_r8*min(0.01_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.001_r8) * & max(0._r8,min(1._r8,(0.25_r8-(forc_rain(c)+forc_snow(c))*secsphr)/0.25_r8)) farea_burned(c) = farea_burned(c)+fb*cli*(cli_scale/secspday) From 88a32eb7004f60050b3f7ecc220074e55dde41a9 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 4 Jun 2025 09:35:42 -0600 Subject: [PATCH 002/108] Include abm = 13 values when determining dominant abm in mksurfdata_esmf --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 6115e813f9..e740c5c9ee 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -21,8 +21,8 @@ module mkagfirepkmonthMod public :: mkagfirepkmon ! Set agricultural fire peak month integer , parameter :: min_valid = 1 - integer , parameter :: max_valid = 12 - integer , parameter :: unsetmon = 13 + integer , parameter :: max_valid = 13 + integer , parameter :: unsetmon = 0 type(ESMF_DynamicMask) :: dynamicMask From 74773721113d34f69de2f6212b9466cd9f224876 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 4 Jun 2025 14:55:35 -0600 Subject: [PATCH 003/108] Change unsetmon from 13 to 14 --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index e740c5c9ee..5b6230e4fb 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -22,7 +22,7 @@ module mkagfirepkmonthMod integer , parameter :: min_valid = 1 integer , parameter :: max_valid = 13 - integer , parameter :: unsetmon = 0 + integer , parameter :: unsetmon = 14 type(ESMF_DynamicMask) :: dynamicMask From 16a192143cb2e18e1e443a0e07a10302b2cc9020 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 4 Jun 2025 15:10:46 -0600 Subject: [PATCH 004/108] Adding comments explaining some of mkagfirepkmonthMod.F90 --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 5b6230e4fb..adbcfa6c59 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -20,9 +20,9 @@ module mkagfirepkmonthMod public :: mkagfirepkmon ! Set agricultural fire peak month - integer , parameter :: min_valid = 1 - integer , parameter :: max_valid = 13 - integer , parameter :: unsetmon = 14 + integer , parameter :: min_valid = 1 ! month value for January + integer , parameter :: max_valid = 13 ! value for no agricultural fire + integer , parameter :: unsetmon = 14 ! maximum value expected in the output file if raw dataset includes values outside the 1 through 13 range type(ESMF_DynamicMask) :: dynamicMask @@ -36,6 +36,10 @@ module mkagfirepkmonthMod subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! ! Make agricultural fire peak month data from higher resolution data + ! by selecting the dominant value from values 1 through 13 + ! where 13 means no agricultural fire. + ! + ! The relevant subroutine is get_dominant_indices. ! ! input/output variables character(len=*) , intent(in) :: file_mesh_i ! input mesh file name @@ -142,6 +146,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Create a dynamic mask object ! The dynamic mask object further holds a pointer to the routine that will be called in order to ! handle dynamically masked elements - in this case its DynMaskProc (see below) + ! This calls subroutine get_dominant_indices call ESMF_DynamicMaskSetR4R8R4(dynamicMask, dynamicMaskRoutine=get_dominant_indices, & handleAllElements=.true., rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return From 7d7a49ed9634a7b30a7d20abfa5ec2a0678cf373 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Jun 2025 09:01:03 -0600 Subject: [PATCH 005/108] mkagfirepkmonthMod: Add some TODOs. --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index adbcfa6c59..1feb3e41b8 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -58,9 +58,9 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) integer :: k integer :: ni,no integer :: ns_i, ns_o - integer , allocatable :: mask_i(:) - real(r4), allocatable :: rmask_i(:) - real(r8), allocatable :: frac_o(:) + integer , allocatable :: mask_i(:) ! TODO: What is this? + real(r4), allocatable :: rmask_i(:) ! TODO: What is this? + real(r8), allocatable :: frac_o(:) ! TODO: What is this? integer , allocatable :: idata_i(:) ! input grid: agricultural fire peak month integer , allocatable :: agfirepkmon_o(:) ! agricultural fire peak month real(r4), pointer :: dataptr(:) @@ -210,10 +210,10 @@ end subroutine mkagfirepkmon subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDstMaskValue, rc) ! input/output arguments - type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) - real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue - real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue - integer , intent(out) :: rc + type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) ! TODO: What is this? + real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue ! TODO: What is this? + real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue ! TODO: What is this? + integer , intent(out) :: rc ! TODO: What is this? ! local variables integer :: ni, no, n @@ -225,6 +225,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst rc = ESMF_SUCCESS if (associated(dynamicMaskList)) then + ! TODO: Can parts of this loop and/or its subloops be broken out into separate functions/subroutines to facilitate testing? do no = 1, size(dynamicMaskList) hasdata = .false. wts_o(:) = 0.d0 From 7f28c6f3549519fd8c1f5d1a9e21c90906a198d8 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 5 Jun 2025 14:05:43 -0600 Subject: [PATCH 006/108] Remove unsetmon as recommended in the code review --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 1feb3e41b8..0f7fd33cb0 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -22,7 +22,6 @@ module mkagfirepkmonthMod integer , parameter :: min_valid = 1 ! month value for January integer , parameter :: max_valid = 13 ! value for no agricultural fire - integer , parameter :: unsetmon = 14 ! maximum value expected in the output file if raw dataset includes values outside the 1 through 13 range type(ESMF_DynamicMask) :: dynamicMask @@ -168,8 +167,8 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Check validity of output data if (min_bad(agfirepkmon_o, min_valid, 'agfirepkmon') .or. & - max_bad(agfirepkmon_o, unsetmon , 'agfirepkmon')) then - call shr_sys_abort() + max_bad(agfirepkmon_o, max_valid, 'agfirepkmon')) then + call shr_sys_abort(subname//" error in agfirepkmon_o value range; min_valid, max_valid are "//min_valid//", "//max_valid) end if ! Close the file @@ -245,7 +244,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst maxindex = maxloc(wts_o(:)) dynamicMaskList(no)%dstElement = real(maxindex(1), kind=r4) else - dynamicMaskList(no)%dstElement = real(unsetmon, kind=r4) + call shr_sys_abort(subname//" error: hasdata needs to be true") end if end do end if From 1469512c98d86e0a7e7ce2e28228210e4a182866 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 5 Jun 2025 14:37:46 -0600 Subject: [PATCH 007/108] Document more variables as recommended in the code review --- .../mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 0f7fd33cb0..47caf70a69 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -57,9 +57,9 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) integer :: k integer :: ni,no integer :: ns_i, ns_o - integer , allocatable :: mask_i(:) ! TODO: What is this? - real(r4), allocatable :: rmask_i(:) ! TODO: What is this? - real(r8), allocatable :: frac_o(:) ! TODO: What is this? + integer , allocatable :: mask_i(:) ! input grid: mesh file landmask + real(r4), allocatable :: rmask_i(:) ! input grid: raw dataset landmask + real(r8), allocatable :: frac_o(:) ! output grid: agricultural fire peak month integer , allocatable :: idata_i(:) ! input grid: agricultural fire peak month integer , allocatable :: agfirepkmon_o(:) ! agricultural fire peak month real(r4), pointer :: dataptr(:) @@ -182,7 +182,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Output diagnostics comparing global area of each peak month on input and output grids call output_diagnostics_index(mesh_i, mesh_o, mask_i, frac_o, & - 1, 13, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) + min_valid, max_valid, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) if (chkerr(rc,__LINE__,u_FILE_u)) call shr_sys_abort() ! Release memory @@ -209,10 +209,10 @@ end subroutine mkagfirepkmon subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDstMaskValue, rc) ! input/output arguments - type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) ! TODO: What is this? - real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue ! TODO: What is this? - real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue ! TODO: What is this? - integer , intent(out) :: rc ! TODO: What is this? + type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) + real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue ! Source (i.e. input) grid mask + real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue ! Destination (i.e. output) grid mask + integer , intent(out) :: rc ! error status ! local variables integer :: ni, no, n @@ -224,7 +224,6 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst rc = ESMF_SUCCESS if (associated(dynamicMaskList)) then - ! TODO: Can parts of this loop and/or its subloops be broken out into separate functions/subroutines to facilitate testing? do no = 1, size(dynamicMaskList) hasdata = .false. wts_o(:) = 0.d0 From 27259b14110cf03f87b73974c1f5ef5f66d614f1 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 5 Jun 2025 18:05:04 -0600 Subject: [PATCH 008/108] Update paths in gen_mksurfdata_namelist.xml and get mods from #3224 --- .../gen_mksurfdata_namelist.xml | 36 +++++++++---------- .../src/mkagfirepkmonthMod.F90 | 30 +++++++++------- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 007be2e8bb..279c92308b 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -10,7 +10,7 @@ - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_pftlai_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_pftlai_CLIM.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -21,7 +21,7 @@ - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_soilcolor_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_soilcolor_CLIM.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -213,31 +213,31 @@ version of the raw dataset will probably go away. - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1700.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1700.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc - /glade/campaign/cgd/tss/people/oleson/Dynamic_Urban_Data/CMIP7/urban_properties_CMIP7_ThreeClass_1700_c250423.nc + lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1700_c250423.nc - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1850.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1850.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc - /glade/campaign/cgd/tss/people/oleson/Dynamic_Urban_Data/CMIP7/urban_properties_CMIP7_ThreeClass_1850_c250423.nc + lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1850_c250423.nc - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2000.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2000.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2000.cdf5.c20220325.nc - /glade/campaign/cgd/tss/people/oleson/Dynamic_Urban_Data/CMIP7/urban_properties_CMIP7_ThreeClass_2000_c250423.nc + lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2000_c250423.nc - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2005.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2005.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2005.cdf5.c20220325.nc - /glade/campaign/cgd/tss/people/oleson/Dynamic_Urban_Data/CMIP7/urban_properties_CMIP7_ThreeClass_2005_c250423.nc + lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2005_c250423.nc @@ -252,10 +252,10 @@ version of the raw dataset will probably go away. - /glade/campaign/cesm/development/lmwg/landuse_source_data/CTSM53CMIP7RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_%y.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_%y.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc - /glade/campaign/cgd/tss/people/oleson/Dynamic_Urban_Data/CMIP7/urban_properties_CMIP7_ThreeClass_%y_c250423.nc + lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_%y_c250423.nc @@ -267,7 +267,7 @@ version of the raw dataset will probably go away. - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP126Deg025_240728/mksrf_landuse_ctsm53_TRSSP126_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP126Deg025_240728/mksrf_landuse_ctsm53_TRSSP126_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp1/urban_properties_GaoOneil_05deg_ThreeClass_ssp1_%y_cdf5_c20220910.nc @@ -280,21 +280,21 @@ version of the raw dataset will probably go away. - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP119Deg025_240728/mksrf_landuse_ctsm53_TRSSP119_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP119Deg025_240728/mksrf_landuse_ctsm53_TRSSP119_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp1/urban_properties_GaoOneil_05deg_ThreeClass_ssp1_%y_cdf5_c20220910.nc - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP245Deg025_240728/mksrf_landuse_ctsm53_TRSSP245_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP245Deg025_240728/mksrf_landuse_ctsm53_TRSSP245_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp2/urban_properties_GaoOneil_05deg_ThreeClass_ssp2_%y_cdf5_c20220910.nc - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP370Deg025_240728/mksrf_landuse_ctsm53_TRSSP370_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP370Deg025_240728/mksrf_landuse_ctsm53_TRSSP370_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp3/urban_properties_GaoOneil_05deg_ThreeClass_ssp3_%y_cdf5_c20220910.nc @@ -308,14 +308,14 @@ version of the raw dataset will probably go away. - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP460Deg025_240728/mksrf_landuse_ctsm53_TRSSP460_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP460Deg025_240728/mksrf_landuse_ctsm53_TRSSP460_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp4/urban_properties_GaoOneil_05deg_ThreeClass_ssp4_%y_cdf5_c20220910.nc - /glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP585Deg025_240728/mksrf_landuse_ctsm53_TRSSP585_%y.c240728.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53TRSSP585Deg025_240728/mksrf_landuse_ctsm53_TRSSP585_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/gao_oneill_urban/ssp5/urban_properties_GaoOneil_05deg_ThreeClass_ssp5_%y_cdf5_c20220910.nc diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 6115e813f9..47caf70a69 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -20,9 +20,8 @@ module mkagfirepkmonthMod public :: mkagfirepkmon ! Set agricultural fire peak month - integer , parameter :: min_valid = 1 - integer , parameter :: max_valid = 12 - integer , parameter :: unsetmon = 13 + integer , parameter :: min_valid = 1 ! month value for January + integer , parameter :: max_valid = 13 ! value for no agricultural fire type(ESMF_DynamicMask) :: dynamicMask @@ -36,6 +35,10 @@ module mkagfirepkmonthMod subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! ! Make agricultural fire peak month data from higher resolution data + ! by selecting the dominant value from values 1 through 13 + ! where 13 means no agricultural fire. + ! + ! The relevant subroutine is get_dominant_indices. ! ! input/output variables character(len=*) , intent(in) :: file_mesh_i ! input mesh file name @@ -54,9 +57,9 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) integer :: k integer :: ni,no integer :: ns_i, ns_o - integer , allocatable :: mask_i(:) - real(r4), allocatable :: rmask_i(:) - real(r8), allocatable :: frac_o(:) + integer , allocatable :: mask_i(:) ! input grid: mesh file landmask + real(r4), allocatable :: rmask_i(:) ! input grid: raw dataset landmask + real(r8), allocatable :: frac_o(:) ! output grid: agricultural fire peak month integer , allocatable :: idata_i(:) ! input grid: agricultural fire peak month integer , allocatable :: agfirepkmon_o(:) ! agricultural fire peak month real(r4), pointer :: dataptr(:) @@ -142,6 +145,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Create a dynamic mask object ! The dynamic mask object further holds a pointer to the routine that will be called in order to ! handle dynamically masked elements - in this case its DynMaskProc (see below) + ! This calls subroutine get_dominant_indices call ESMF_DynamicMaskSetR4R8R4(dynamicMask, dynamicMaskRoutine=get_dominant_indices, & handleAllElements=.true., rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -163,8 +167,8 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Check validity of output data if (min_bad(agfirepkmon_o, min_valid, 'agfirepkmon') .or. & - max_bad(agfirepkmon_o, unsetmon , 'agfirepkmon')) then - call shr_sys_abort() + max_bad(agfirepkmon_o, max_valid, 'agfirepkmon')) then + call shr_sys_abort(subname//" error in agfirepkmon_o value range; min_valid, max_valid are "//min_valid//", "//max_valid) end if ! Close the file @@ -178,7 +182,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Output diagnostics comparing global area of each peak month on input and output grids call output_diagnostics_index(mesh_i, mesh_o, mask_i, frac_o, & - 1, 13, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) + min_valid, max_valid, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) if (chkerr(rc,__LINE__,u_FILE_u)) call shr_sys_abort() ! Release memory @@ -206,9 +210,9 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst ! input/output arguments type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) - real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue - real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue - integer , intent(out) :: rc + real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue ! Source (i.e. input) grid mask + real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue ! Destination (i.e. output) grid mask + integer , intent(out) :: rc ! error status ! local variables integer :: ni, no, n @@ -239,7 +243,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst maxindex = maxloc(wts_o(:)) dynamicMaskList(no)%dstElement = real(maxindex(1), kind=r4) else - dynamicMaskList(no)%dstElement = real(unsetmon, kind=r4) + call shr_sys_abort(subname//" error: hasdata needs to be true") end if end do end if From ff3bc9edc29ccc516ca096221e5f92ff7f54e435 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 13 Jun 2025 14:03:54 -0600 Subject: [PATCH 009/108] Correct a message to the user in gen_mksurfdata_jobscript_*.py files --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 4 +++- python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 14957a0177..67fe9169ed 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -145,7 +145,9 @@ def write_runscript( runfile.write(f"{output} \n") check = f"if [ $? != 0 ]; then echo 'Error running resolution {res}'; exit -4; fi" runfile.write(f"{check} \n") - runfile.write(f"echo Successfully ran resolution {res}\n") + runfile.write( + f"echo Started fsurdat/landuse generation; see .log file for progress {res}\n" + ) runfile.write(f"echo Successfully ran {jobscript_file}\n") diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py index c3f762380e..dabb2a8357 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py @@ -266,7 +266,7 @@ def write_runscript_part2(namelist_file, runfile, executable, mksurfdata_path, e check = f'if [ $? != 0 ]; then echo "Error running for namelist {namelist_file}"; exit -4; fi' runfile.write(f"{check} \n") - runfile.write("echo Successfully ran resolution\n") + runfile.write("echo Started fsurdat/landuse generation; see .log file for progress\n") def main(): From bd3ce9667f2874a4332a99c9644f1efd2ca205a6 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 13 Jun 2025 15:10:19 -0600 Subject: [PATCH 010/108] Corrections to messages to the user --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 2 +- python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py | 2 +- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 67fe9169ed..4c5566acc6 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -146,7 +146,7 @@ def write_runscript( check = f"if [ $? != 0 ]; then echo 'Error running resolution {res}'; exit -4; fi" runfile.write(f"{check} \n") runfile.write( - f"echo Started fsurdat/landuse generation; see .log file for progress {res}\n" + f"echo Started fsurdat/landuse generation, see .log file for progress {res}\n" ) runfile.write(f"echo Successfully ran {jobscript_file}\n") diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py index dabb2a8357..0594f6167a 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py @@ -266,7 +266,7 @@ def write_runscript_part2(namelist_file, runfile, executable, mksurfdata_path, e check = f'if [ $? != 0 ]; then echo "Error running for namelist {namelist_file}"; exit -4; fi' runfile.write(f"{check} \n") - runfile.write("echo Started fsurdat/landuse generation; see .log file for progress\n") + runfile.write("echo Started fsurdat/landuse generation, see .log file for progress\n") def main(): diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 47caf70a69..e8fac8aa37 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -168,7 +168,8 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Check validity of output data if (min_bad(agfirepkmon_o, min_valid, 'agfirepkmon') .or. & max_bad(agfirepkmon_o, max_valid, 'agfirepkmon')) then - call shr_sys_abort(subname//" error in agfirepkmon_o value range; min_valid, max_valid are "//min_valid//", "//max_valid) + if (root_task) write(ndiag, '(a)') trim(subname)//" error in agfirepkmon_o value range: min_valid and max_valid equal ", min_valid, max_valid + call shr_sys_abort() end if ! Close the file @@ -219,6 +220,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst real(ESMF_KIND_R4) :: wts_o(min_valid:max_valid) integer :: maxindex(1) logical :: hasdata + character(len=*), parameter :: subname = 'get_dominant_indices' !--------------------------------------------------------------- rc = ESMF_SUCCESS From 5d426baa7635dd8143cc1cb2ea20a25f67cd08d5 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 13 Jun 2025 15:21:17 -0600 Subject: [PATCH 011/108] Refine message to the user --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 2 +- python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 4c5566acc6..88ffa7f7b1 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -146,7 +146,7 @@ def write_runscript( check = f"if [ $? != 0 ]; then echo 'Error running resolution {res}'; exit -4; fi" runfile.write(f"{check} \n") runfile.write( - f"echo Started fsurdat/landuse generation, see .log file for progress {res}\n" + f"echo Confirm completion of fsurdat/landuse generation in the .log file {res}\n" ) runfile.write(f"echo Successfully ran {jobscript_file}\n") diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py index 0594f6167a..1413e49158 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py @@ -266,7 +266,7 @@ def write_runscript_part2(namelist_file, runfile, executable, mksurfdata_path, e check = f'if [ $? != 0 ]; then echo "Error running for namelist {namelist_file}"; exit -4; fi' runfile.write(f"{check} \n") - runfile.write("echo Started fsurdat/landuse generation, see .log file for progress\n") + runfile.write("echo Confirm completion of fsurdat/landuse generation in the .log file\n") def main(): From bd0c628e2cbb28a96de6219e8a8a62fff3e3c41e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 17 Jun 2025 12:31:42 -0600 Subject: [PATCH 012/108] Bring back unsetmon but equal to 14 for ocean to not skew the regridding --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index e8fac8aa37..417658245c 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -22,6 +22,7 @@ module mkagfirepkmonthMod integer , parameter :: min_valid = 1 ! month value for January integer , parameter :: max_valid = 13 ! value for no agricultural fire + integer , parameter :: unsetmon = 14 ! value for no data type(ESMF_DynamicMask) :: dynamicMask @@ -119,6 +120,10 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) call mkpio_get_rawdata(pioid_i, 'abm', mesh_i, idata_i, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return call ESMF_VMLogMemInfo("After mkpio_getrawdata in "//trim(subname)) + ! Update idata_i to unsetmon where mask_i == 0, i.e. over ocean + do ni = 1, ns_i + if (mask_i(ni) == 0) idata_i(ni) = unsetmon + end do ! Create ESMF fields that will be used below field_i = ESMF_FieldCreate(mesh_i, ESMF_TYPEKIND_R4, meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) @@ -167,8 +172,8 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Check validity of output data if (min_bad(agfirepkmon_o, min_valid, 'agfirepkmon') .or. & - max_bad(agfirepkmon_o, max_valid, 'agfirepkmon')) then - if (root_task) write(ndiag, '(a)') trim(subname)//" error in agfirepkmon_o value range: min_valid and max_valid equal ", min_valid, max_valid + max_bad(agfirepkmon_o, unsetmon , 'agfirepkmon')) then + if (root_task) write(ndiag, '(a)') trim(subname)//" error in agfirepkmon_o value range: expect min_valid to unsetmon which equal ", min_valid, unsetmon call shr_sys_abort() end if @@ -183,7 +188,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Output diagnostics comparing global area of each peak month on input and output grids call output_diagnostics_index(mesh_i, mesh_o, mask_i, frac_o, & - min_valid, max_valid, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) + min_valid, unsetmon, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) if (chkerr(rc,__LINE__,u_FILE_u)) call shr_sys_abort() ! Release memory @@ -245,7 +250,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst maxindex = maxloc(wts_o(:)) dynamicMaskList(no)%dstElement = real(maxindex(1), kind=r4) else - call shr_sys_abort(subname//" error: hasdata needs to be true") + dynamicMaskList(no)%dstElement = real(unsetmon, kind=r4) end if end do end if From f84e650f61f48326da2c82059680aef82c2b85f1 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 17 Jun 2025 18:07:12 -0600 Subject: [PATCH 013/108] Update Makefile and .cfg file to accommodate changes in subset_data --- tools/mksurfdata_esmf/Makefile | 2 +- tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 835f732a02..b30f2abc3d 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -81,7 +81,7 @@ URBALPHA_TMP2_FNAME := surfdata_1x1_urbanc_alpha_hist_2000_78pfts_tmp.nc URBALPHA_FNAME := surfdata_1x1_urbanc_alpha_hist_2000_78pfts_c$(CDATE).nc SUBSETDATA_1X1_MEXICOCITY := --lat 19.5 --lon 260.5 --site 1x1_mexicocityMEX --out-surface $(MEXICOCITY_TMP_FNAME) SUBSETDATA_1X1_VANCOUVER := --lat 49.5 --lon 236.5 --site 1x1_vancouverCAN --out-surface $(VANCOUVER_TMP_FNAME) -SUBSETDATA_1X1_URBALPHA := --lat -37.7308 --lon 0 --site 1x1_urbanc_alpha --out-surface $(URBALPHA_TMP_FNAME) +SUBSETDATA_1X1_URBALPHA := --lat -37.7308 --lon 360 --site 1x1_urbanc_alpha --out-surface $(URBALPHA_TMP_FNAME) # ne120np4 and hi-res are for high resolution, ne16np4 is for mid-resolution testing # low-res is for low resolutions for testing diff --git a/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg b/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg index bdb27ac43d..1e509ccb8f 100644 --- a/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg +++ b/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg @@ -32,6 +32,8 @@ lnd_lat_2 = 90 lnd_lon_1 = 0 # easternmost longitude for rectangle lnd_lon_2 = 360 +# Upper limit of longitudes, from format being either [-180, 180] or [0, 360] +lon_type = 360 # user-defined mask in a file, as alternative to setting lat/lon values landmask_file = UNSET From c106c33e6aeb43e8d3c2bd33d3812bf500246757 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 18 Jun 2025 14:38:47 -0600 Subject: [PATCH 014/108] Correct inadvertent conflict that crept in with one of the merges --- tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 3d6211ffe6..417658245c 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -250,7 +250,7 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst maxindex = maxloc(wts_o(:)) dynamicMaskList(no)%dstElement = real(maxindex(1), kind=r4) else - call shr_sys_abort(subname//" error: hasdata needs to be true") + dynamicMaskList(no)%dstElement = real(unsetmon, kind=r4) end if end do end if From f6a903e3200b31c85d8d233297f29ad8bdcbe992 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 15 Jul 2025 11:09:49 -0600 Subject: [PATCH 015/108] Update to new abm raw dataset provided today by Fang Li --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 279c92308b..cd9a5b058a 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -168,7 +168,7 @@ version of the raw dataset will probably go away. - lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c240821.nc + lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c250715.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.5x0.5_nomask_cdf5_c200129.nc From d3cf177e3c942eef92c06c1118cdecb7ca0dbfc2 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 22 Jul 2025 17:54:16 -0600 Subject: [PATCH 016/108] Update default popdens stream file --- bld/namelist_files/namelist_defaults_ctsm.xml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 50e3cf68ad..fe10078c71 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2168,15 +2168,14 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 2000 -lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2016_c180202.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc - +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc @@ -2186,15 +2185,14 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/firedata/clmforc.Li_2018_SSP5_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2016_c180202.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc - +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc From a9451782fb10dd24ca7fe3ccb1ee6dda15cf3953 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 23 Jul 2025 17:15:50 -0600 Subject: [PATCH 017/108] Urban mesh was pointing to a 3x3min instead of a 0.25x0.25 file --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 69a3547653..cd9a5b058a 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -93,7 +93,7 @@ - lnd/clm2/mappingdata/grids/UNSTRUCTgrid_3x3min_nomask_cdf5_c200129.nc + lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc From 473db81fe59106117457d0a0f538f2091cae9d90 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 24 Jul 2025 11:44:45 -0600 Subject: [PATCH 018/108] Add ctsm54 ne30, f09, f19 fsurdat/landuse files to namelist defaults --- bld/namelist_files/namelist_defaults_ctsm.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index fe10078c71..bea0066251 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1717,9 +1717,9 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_16pfts_c241007.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c250723.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc @@ -1735,7 +1735,7 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc @@ -1795,9 +1795,9 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc From d6f97ffb273744da3a3b509c4adf6aa7e1a44e93 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 25 Jul 2025 14:16:33 -0600 Subject: [PATCH 019/108] New hdm stream file should be used only with clm6 by default --- bld/namelist_files/namelist_defaults_ctsm.xml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index bea0066251..a94c588e4f 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2168,14 +2168,16 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 2000 -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2016_c180202.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc @@ -2185,14 +2187,16 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/firedata/clmforc.Li_2018_SSP5_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2016_c180202.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc +lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc From 66b83d1d957c9b51fab2664a2e6add4b1354478d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 25 Jul 2025 16:40:46 -0600 Subject: [PATCH 020/108] Remove 64bitoffset suffix from finidat to use the unmodified files --- bld/namelist_files/namelist_defaults_ctsm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index a94c588e4f..5869da9d57 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1298,14 +1298,14 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="18500101" sim_year="1850" do_transient_pfts=".false." use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." irrigate=".false." phys="clm6_0" use_init_interp=".true." ->lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_pSASU.clm2.r.0081-01-01-00000_64bitoffset.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_pSASU.clm2.r.0081-01-01-00000.nc Date: Fri, 25 Jul 2025 16:43:10 -0600 Subject: [PATCH 021/108] Remove LII2 tests from expected fails --- cime_config/testdefs/ExpectedTestFails.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index ac35ad812e..c899c4937b 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -98,20 +98,6 @@ - - - FAIL - #3252 - Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. - - - - - FAIL - #3252 - Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. - - FAIL From 5cc650ad26d6435b0600a31476e5cda1fe05207c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 12 Aug 2025 10:15:30 -0600 Subject: [PATCH 022/108] defo_fire_precip_thresh_bet now 3.0 for li2024crujra. --- bld/namelist_files/namelist_defaults_ctsm.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 62f57db777..28bf786dfb 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -257,11 +257,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case). li2014qianfrc 90.d00 -4.0d00 1.8d00 0.3d00 1.0d00 +4.0d00 +3.0d00 + 30.0d00 80.0d00 0.3d00 From b1a9acdc0bdf60107c637a1b0f7797fd922652e1 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 12 Aug 2025 10:16:21 -0600 Subject: [PATCH 023/108] cropfire_a1 now 0.32 for li2024crujra. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 28bf786dfb..e198eaf7dc 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -385,7 +385,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 0.28d-4 0.010d00 0.71d-4 -0.3d00 +0.32d00 0.33d00 75.d00 825.d00 From dec813122e2e64b646109a8cd7bb825dfe5c996a Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 12 Aug 2025 10:18:33 -0600 Subject: [PATCH 024/108] CNFireLi2024Mod: Improve comments. --- src/biogeochem/CNFireLi2024Mod.F90 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/biogeochem/CNFireLi2024Mod.F90 b/src/biogeochem/CNFireLi2024Mod.F90 index a516600461..c95b0332af 100644 --- a/src/biogeochem/CNFireLi2024Mod.F90 +++ b/src/biogeochem/CNFireLi2024Mod.F90 @@ -181,7 +181,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ defo_fire_precip_thresh_bdt => cnfire_const%defo_fire_precip_thresh_bdt, & ! Input: [real(r8) ] (mm/day) Max running mean daily precip allowing deforestation fire for broadleaf deciduous trees borpeat_fire_soilmoist_denom => cnfire_const%borpeat_fire_soilmoist_denom, & ! Input: [real(r8) ] (unitless) Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless) nonborpeat_fire_precip_denom => cnfire_const%nonborpeat_fire_precip_denom, & ! Input: [real(r8) ] (unitless) Denominator of precipitation in equation relating that to non-boreal peat fire (unitless) - forc_topo_g => atm2lnd_inst%forc_topo_grc , & ! Input: [real(r8) (:) ] atmospheric surface height (m) + forc_topo_g => atm2lnd_inst%forc_topo_grc , & ! Input: [real(r8) (:) ] atmospheric surface height, a.k.a. elevation (m) fsr_pft => pftcon%fsr_pft , & ! Input: fd_pft => pftcon%fd_pft , & ! Input: rswf_min => pftcon%rswf_min , & ! Input: @@ -303,7 +303,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ if( patch%itype(p) > nc4_grass )then cropf_col(c) = cropf_col(c) + patch%wtcol(p) end if - ! For natural vegetation + ! Exclude crops and bare soil if (patch%itype(p) <= nc4_grass .and. patch%itype(p) >= ndllf_evr_tmp_tree) then lfwt(c) = lfwt(c) + patch%wtgcell(p) end if @@ -621,11 +621,14 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ cnfire_params%ignition_efficiency*(1._r8-fs)* & (lfwt(c)**0.5) end if + + ! Reduce burnability at high elevations if(forc_topo_g(g) <= 2500._r8)then !influence of topography on fires topoi = 1._r8 else topoi = 0.004_r8 end if + nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) * topoi !fire counts/km2/sec Lb_lf = 1._r8+10._r8*(1._r8-EXP(-0.06_r8*forc_wind(g))) spread_m = fire_m**0.5_r8 From cfb46480ad4d604c6239efbe0965dc680ad256d7 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 12 Aug 2025 10:23:41 -0600 Subject: [PATCH 025/108] cli_scale updated for li2024* fire methods. --- bld/namelist_files/namelist_defaults_ctsm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index e198eaf7dc..2df3d9bd83 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -362,7 +362,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 80.0d00 0.85d00 0.98d00 -0.01d00 +0.04d00 0.28d-4 0.010d00 0.71d-4 @@ -381,7 +381,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 85.0d00 0.85d00 0.98d00 -0.01d00 +0.03d00 0.28d-4 0.010d00 0.71d-4 From 8fa074705eaa76cca22855f53404e394c04f83fe Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 15 Aug 2025 15:18:15 -0600 Subject: [PATCH 026/108] Set init_interp_fill_missing_urban_with_HD = .true. always --- bld/CLMBuildNamelist.pm | 1 + bld/namelist_files/namelist_defaults_ctsm.xml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 4cd02532f8..fad6fb6f46 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -2359,6 +2359,7 @@ sub setup_logic_urban { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_hac'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_explicit_ac'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_traffic'); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'init_interp_fill_missing_urban_with_HD'); } #------------------------------------------------------------------------------- diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 62f57db777..2087179d5d 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2500,6 +2500,10 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 general + +.true. + From 57c4a154fd10156a35aed8933c62d94806a4b53d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 22 Aug 2025 15:57:22 -0600 Subject: [PATCH 027/108] Update clm6_0 paramfile with Fang's fire changes. * needleleaf_deciduous_boreal_tree rswf_min: 0.15 to 0.35 * needleleaf_deciduous_boreal_tree rswf_max: 0.55 to 0.7 * fd_pft (fire duration): Increase from 1 to 5 days * fsr_pft (fire spread rate): Divide by 5 "The parameters rswf_max and rswf_min (thresholds for root-zone soil moisture) were adjusted to achieve more reasonable simulations of burned area fraction for needleleaf_deciduous_boreal_tree. The value of fd_pft (fire duration) was changed from 1 to 5 days, which aligns better with FireAtlas data for non-peat and non-deforestation fires outside croplands. To maintain the burned area unchanged, fsr_pft (fire spread rate) for most PFTs was divided by 5. fsr_pft is not used for prognostic crops, so its value for those PFTs was set to the fill value." --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 24744ed8fa..aaf4ec77a0 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -549,7 +549,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc +lnd/clm2/paramdata/clm60_params.ctsm6_li2024.c250822.nc lnd/clm2/paramdata/clm50_params.c250311.nc lnd/clm2/paramdata/clm45_params.c250311.nc From baa76603c1282b1782bb4446f1abf43ffbb9f933 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 22 Aug 2025 16:15:34 -0600 Subject: [PATCH 028/108] CNFireLi2024Mod: Delete ">10% crop" condition. No longer needed now that ESCOMP/CTSM#3188 is resolved. --- src/biogeochem/CNFireLi2024Mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/biogeochem/CNFireLi2024Mod.F90 b/src/biogeochem/CNFireLi2024Mod.F90 index c95b0332af..d4c05f63bc 100644 --- a/src/biogeochem/CNFireLi2024Mod.F90 +++ b/src/biogeochem/CNFireLi2024Mod.F90 @@ -522,7 +522,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ ! avoid abm (crop fire peak month) regridding error from 0.05 degree to lower resolution ! The condition could be removed if CLM supports the use of mode in abm inputs regridding if( forc_t(c) >= SHR_CONST_TKFRZ .and. patch%itype(p) > nc4_grass .and. & - kmo == abm_lf(c) .and. cropf_col(c) * col%wtgcell(c) > 0.1_r8 .and. & + kmo == abm_lf(c) .and. & burndate(p) >= 999 .and. patch%wtcol(p) > 0._r8 )then ! catch crop burn time hdmlf = this%forc_hdm(g) From 71f96808c0dab738f5c72dae3bd38ba584b0df2e Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 22 Aug 2025 16:19:50 -0600 Subject: [PATCH 029/108] li2024crujra cropfire_a1: was 0.32, now 0.34. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index aaf4ec77a0..12a0f2f981 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -385,7 +385,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 0.28d-4 0.010d00 0.71d-4 -0.32d00 +0.34d00 0.33d00 75.d00 825.d00 From 9c59d7e9d5f06cc58ed00d4becb42d85e7ee4e5d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 25 Aug 2025 13:26:21 -0600 Subject: [PATCH 030/108] namelist_defaults_ctsm.xml: Group stream_fldfilename_cultivar_gdds lines. --- bld/namelist_files/namelist_defaults_ctsm.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 2087179d5d..0224395a1c 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2074,20 +2074,23 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 2000 + +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc + lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/360x720_120830_ESMFmesh_c20210507_cdf5.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdd20bl.copied_from.gdds_20230829_161011.v2.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/sdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/hdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/360x720_120830_ESMFmesh_c20210507_cdf5.tweaked_latlons.nc + none From f4694d7c62bccfb702b72e8c3bf0c3da0a1f8c8d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 25 Aug 2025 13:33:31 -0600 Subject: [PATCH 031/108] Update default stream_fldfilename_cultivar_gdds. With cropcals_rx true, now uses maturity requirements derived from a CRU-JRA run... Unless using a GSWP3 compset (via lnd_tuning_mode), in which case the previous files are used. --- bld/namelist_files/namelist_defaults_ctsm.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 0224395a1c..871a499f0d 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2075,7 +2075,10 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc From 6c083591dd0dff4f89629e3dd4a9314581da995f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 9 Sep 2025 12:14:18 -0600 Subject: [PATCH 032/108] Add LII2FINIDATAREAS tests to expected fails. --- cime_config/testdefs/ExpectedTestFails.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index e99ef67616..1cf1922f64 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -338,6 +338,22 @@ + + + FAIL + #3252 + This should be resolved for the 5.4 release. + + + + + + FAIL + #3252 + This should be resolved for the 5.4 release. + + + From ab03812ff05c6a4bb2a49dc6078508ef2dcfc583 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 9 Sep 2025 15:32:45 -0600 Subject: [PATCH 033/108] Add ISSP test to expected fails. --- cime_config/testdefs/ExpectedTestFails.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 1cf1922f64..230eacc06c 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -354,6 +354,14 @@ + + + FAIL + #3250 + This should be resolved for the 5.4 release. + + + From 77f0580a011c645c90f6c224b7c0995f1d0007f8 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 09:53:51 -0600 Subject: [PATCH 034/108] Failed attempt to fix stream_fldfilename_cultivar_gdds logic. --- bld/namelist_files/namelist_defaults_ctsm.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6dcd5448c2..8098e3a3b5 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2082,6 +2082,9 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc From f28f74cb8ae83ccc236a023fbc01f8d8488d105f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 10:06:35 -0600 Subject: [PATCH 035/108] Fix stream_fldfilename_cultivar_gdds logic. --- bld/namelist_files/namelist_defaults_ctsm.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 8098e3a3b5..91c9d9d2a2 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2077,14 +2077,16 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 -lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc + +lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc From 70e89ccda007249d5ff51b79453e3d4289cde5c8 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 13:44:22 -0600 Subject: [PATCH 036/108] Fix stream_fldfilename_cultivar_gdds logic??? --- bld/namelist_files/namelist_defaults_ctsm.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 91c9d9d2a2..83c1ba9931 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2077,16 +2077,14 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 +lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc - -lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc From 5e41f47752421819e76774179e70e97ea99a0a7b Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 15:26:09 -0600 Subject: [PATCH 037/108] Revert failed attempts to fix stream_fldfilename_cultivar_gdds logic. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 83c1ba9931..8098e3a3b5 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2078,10 +2078,10 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc From e7fa6e5b2925f541b9bb27f7fb6dbb08c2ef432c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 15:28:25 -0600 Subject: [PATCH 038/108] cropcals_rx_adapt fallback to correct stream_fldfilename_cultivar_gdds. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 8098e3a3b5..1428184e3a 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2081,7 +2081,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc From e69570af3c4b5bb82734c57b9e215149d86a9ee0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 10 Sep 2025 15:44:52 -0600 Subject: [PATCH 039/108] Update Makefile/_multi.py to accommodate new fsurdat/landuse needs --- .../gen_mksurfdata_jobscript_multi.py | 26 ++++++++----------- tools/mksurfdata_esmf/Makefile | 8 +++--- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 8154167609..6e332cc0d3 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -32,7 +32,7 @@ "crop-global-present-low-res", "crop-global-present-ne16", "crop-global-present-ne30", - "crop-global-present-ne120", + "crop-global-present-vrandne120", "crop-global-present-mpasa480", "crop-global-present-nldas", "crop-global-1850", @@ -52,7 +52,7 @@ "crop-global-SSP2-4.5-f19", "crop-global-SSP2-4.5-f10", "crop-global-SSP2-4.5-f45", - "crop-global-SSP2-4.5-ne0np4", + "crop-global-SSP2-4.5-vrandne120", "crop-global-SSP2-4.5-ne3", "crop-global-SSP2-4.5-ne16", "crop-global-SSP2-4.5-ne30", @@ -193,7 +193,7 @@ def main(): # ], # -------------------------- resolution_dict = { - "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60"], + "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60", "mpasa30"], "f09": ["0.9x1.25"], "f19": ["1.9x2.5"], "hcru": ["360x720cru"], @@ -212,17 +212,13 @@ def main(): "ne3": ["ne3np4", "ne3np4.pg3"], "ne16": ["ne16np4.pg3"], "ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"], - "ne0np4": [ - "ne0np4.ARCTICGRIS.ne30x8", - "ne0np4.ARCTIC.ne30x4", - "ne0np4CONUS.ne30x8", - "ne0np4.POLARCAP.ne30x4", - ], - "ne120": [ + "ne120": ["ne120np4.pg3"], + "vr_and_ne120": [ "ne0np4.ARCTICGRIS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4CONUS.ne30x8", "ne0np4.POLARCAP.ne30x4", + "ne0np4.NATL.ne30x8", "ne120np4.pg3", ], } @@ -275,9 +271,9 @@ def main(): "--start-year 2000 --end-year 2000 --res", "ne30", ), - "crop-global-present-ne120": ( + "crop-global-present-vrandne120": ( "--start-year 2000 --end-year 2000 --res", - "ne120", + "vr_and_ne120", ), "crop-global-present-mpasa480": ( "--start-year 2000 --end-year 2000 --res", @@ -359,9 +355,9 @@ def main(): "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", "f45", ), - "crop-global-SSP2-4.5-ne0np4": ( - "--start-year 1979 --end-year 2026 --ssp-rcp SSP2-4.5 --res", - "ne0np4", + "crop-global-SSP2-4.5-vrandne120": ( + "--start-year 1979 --end-year 2030 --ssp-rcp SSP2-4.5 --res", + "vr_and_ne120", ), "crop-global-SSP2-4.5-ne3": ( "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index b30f2abc3d..627669d154 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -99,7 +99,7 @@ CROP = \ crop-global-future \ crop-global-hist-f09 \ crop-global-1850-ne120 \ - crop-global-present-ne120 \ + crop-global-present-vrandne120 \ crop-global-present-nldas \ crop-global-present-ne30 \ crop-global-present \ @@ -216,7 +216,7 @@ crop-global-present-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh -crop-global-present-ne120 : FORCE +crop-global-present-vrandne120 : FORCE $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh @@ -315,7 +315,7 @@ crop-global-SSP2-4.5 : crop-global-SSP2-4.5-f09 \ crop-global-SSP2-4.5-hcru \ crop-global-SSP2-4.5-ne16 \ crop-global-SSP2-4.5-ne30 \ - crop-global-SSP2-4.5-ne0np4 \ + crop-global-SSP2-4.5-vrandne120 \ crop-global-SSP2-4.5-C96 \ crop-global-SSP2-4.5-mpasa120 @@ -359,7 +359,7 @@ crop-global-SSP2-4.5-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-SSP2-4.5-ne0np4 : FORCE +crop-global-SSP2-4.5-vrandne120 : FORCE $(MKSURFDATA) --number-of-nodes 2 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh From 86331ef9cd36db6baa37fb6977c8c446ef7822b1 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 10 Sep 2025 15:46:15 -0600 Subject: [PATCH 040/108] ClmBuildNamelist: Add lnd_tuning_mode to stream_fldfilename_cultivar_gdds logic. --- bld/CLMBuildNamelist.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 416e5f3b60..a9f9b3ed8a 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -4371,7 +4371,9 @@ sub setup_logic_cropcal_streams { if ( &value_is_true($cropcals_rx) or &value_is_true($cropcals_rx_adapt) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_swindow_start'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_swindow_end'); - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_cultivar_gdds'); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_cultivar_gdds', + 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'} + ); if ( &value_is_true($cropcals_rx_adapt) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_gdd20_baseline', 'stream_gdd20_seasons'=>$stream_gdd20_seasons); } From 0247d554af6c1a9f74cd58a119b0e63efdc59cd4 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 12 Sep 2025 16:56:05 -0600 Subject: [PATCH 041/108] Update Makefile/_multi.py for fsurdat/landuse updates in ctsm54 (part 2) --- .../gen_mksurfdata_jobscript_multi.py | 27 ++++++++++++------- tools/mksurfdata_esmf/Makefile | 26 +++++++++++------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 6e332cc0d3..16ff0515b5 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -25,7 +25,7 @@ "global-present-low-res", "global-present-ultra-hi-res", "global-hist-1850-f19", - "global-hist-1850-f45", + "global-hist-1850-low-res", "crop-tropics-present", "crop", "crop-global-present", @@ -45,7 +45,8 @@ "crop-global-hist-low-res", "crop-global-hist-ne16", "crop-global-hist-ne30", - "crop-global-hist-f09", + "crop-global-hist-1700", + "crop-global-hist-mpasa480", "crop-global-SSP1-1.9-f09", "crop-global-SSP1-2.6-f09", "crop-global-SSP2-4.5-f09", @@ -193,7 +194,9 @@ def main(): # ], # -------------------------- resolution_dict = { - "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60", "mpasa30"], + "potveg_res": ["0.9x1.25", "1.9x2.5", "ne16np4.pg3", "ne30np4.pg3"], + "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60", "mpasa30", "ne30np4.pg3"], + "1700_res": ["0.9x1.25", "360x720cru"], "f09": ["0.9x1.25"], "f19": ["1.9x2.5"], "hcru": ["360x720cru"], @@ -201,11 +204,11 @@ def main(): "mpasa120": ["mpasa120"], "f10": ["10x15"], "f45": ["4x5"], - "low_res_no_crop": ["4x5", "10x15"], + "low_res_no_crop": ["4x5", "10x15", "400pt_sparse"], "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4"], + "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4.pg2", "ne3np4", "400pt_sparse"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], @@ -229,7 +232,7 @@ def main(): dataset_dict = { "global-potveg": ( "--start-year 1850 --end-year 1850 --nocrop --potveg --res", - "f09", + "potveg_res", ), "global-present": ( "--start-year 2000 --end-year 2000 --nocrop --res", @@ -247,9 +250,9 @@ def main(): "--start-year 1850 --end-year 2023 --nocrop --res", "f19", ), - "global-hist-1850-f45": ( + "global-hist-1850-low-res": ( "--start-year 1850 --end-year 2023 --nocrop --res", - "f45", + "low_res_no_crop", ), "crop-tropics-present": ( "--start-year 2000 --end-year 2000 --res", @@ -307,6 +310,10 @@ def main(): "--start-year 1850 --end-year 1850 --res", "mpasa480", ), + "crop-global-hist-mpasa480": ( + "--start-year 1850 --end-year 2023 --nosurfdata --res", + "mpasa480", + ), "crop-global-hist": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", "standard_res_no_f09", @@ -323,9 +330,9 @@ def main(): "--start-year 1850 --end-year 2023 --nosurfdata --res", "ne30", ), - "crop-global-hist-f09": ( + "crop-global-hist-1700": ( "--start-year 1700 --end-year 2023 --res", - "f09", + "1700_res", ), "crop-global-SSP1-1.9-f09": ( "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP1-1.9 --res", diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 627669d154..edf81e2492 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -14,7 +14,7 @@ # To generate a single dataset, run make with the name of the rule you # want to build. For example, to generate the crop data set for 1x1_numaIA: # -# make crop-numa +# make 1x1-numa-present # # NOTE: The default behavior is to parallelize data set creation using # the batch system by submitting jobs to the batch queue (on Derecho). @@ -87,17 +87,20 @@ SUBSETDATA_1X1_URBALPHA := --lat -37.7308 --lon 360 --site 1x1_urbanc_alpha - # low-res is for low resolutions for testing # nldas is for NWP working with WRF # STANDARD means no crop, so 16 pfts -# global-hist-1850-f45 is used by FATES and we expect it to be phased out +# global-hist-1850-low-res is used by FATES; we expected to phase it out, but to f45 we added f10 in ctsm5.4 STANDARD = \ global-potveg \ global-present \ global-present-low-res \ global-hist-1850-f19 \ - global-hist-1850-f45 \ + global-hist-1850-low-res \ +# NOTE slevis 2025/9/10: For CTSM5.4, I removed from CROP: +# crop-global-future +# and I added here because it spans 1979-2030: +# crop-global-SSP2-4.5-vrandne120 CROP = \ - crop-global-future \ - crop-global-hist-f09 \ + crop-global-hist-1700 \ crop-global-1850-ne120 \ crop-global-present-vrandne120 \ crop-global-present-nldas \ @@ -111,6 +114,7 @@ CROP = \ crop-global-1850-ne16 \ crop-global-1850-ne30 \ crop-global-1850-mpasa480 \ + crop-global-SSP2-4.5-vrandne120 \ # Build the executable if it doesn't exist and any target depends on it $(MKSURFDATA_EXE): @@ -127,11 +131,12 @@ all : all-subset global-present-ultra-hi-res crop standard crop-tropics-present # These are all the surface datasets generated by subset_data # This runs interactively and does not send jobs to the batch queue +# NOTE slevis 2025/9/10: For CTSM5.4, I removed from all-subset: +# 1x1_brazil-transient +# 1x1-smallville-present all-subset : \ 1x1_brazil-present \ - 1x1_brazil-transient \ 1x1-numa-present \ - 1x1-smallville-present \ 1x1-smallville-1850 \ 1x1-smallville-transient \ 1x1-cidadinho-present \ @@ -171,7 +176,7 @@ global-present-low-res : FORCE global-hist-1850-f19 : FORCE $(MKSURFDATA) --number-of-nodes 8 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -global-hist-1850-f45 : FORCE +global-hist-1850-low-res : FORCE $(MKSURFDATA) --number-of-nodes 2 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh # @@ -256,7 +261,7 @@ crop-global-hist : FORCE $(MKSURFDATA) --number-of-nodes 72 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-hist-f09 : FORCE +crop-global-hist-1700 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh @@ -310,12 +315,13 @@ crop-global-future : crop-global-SSP1-1.9-f09 \ crop-global-SSP2-4.5-low-res : crop-global-SSP2-4.5-f10 \ crop-global-SSP2-4.5-f45 \ crop-global-SSP2-4.5-ne3 +# NOTE slevis 2025/9/10: For CTSM5.4, I moved to CROP because it spans 1979-2030: +# crop-global-SSP2-4.5-vrandne120 crop-global-SSP2-4.5 : crop-global-SSP2-4.5-f09 \ crop-global-SSP2-4.5-f19 \ crop-global-SSP2-4.5-hcru \ crop-global-SSP2-4.5-ne16 \ crop-global-SSP2-4.5-ne30 \ - crop-global-SSP2-4.5-vrandne120 \ crop-global-SSP2-4.5-C96 \ crop-global-SSP2-4.5-mpasa120 From ffede38a3b4cc2b1e72768d65118f357bb51ea80 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 15 Sep 2025 11:39:36 -0600 Subject: [PATCH 042/108] Rm unnecessary 400pt_sparse grid from gen_mksurfdata_jobscript_multi.py 400pt_sparse simulations just point to the f19_400pt_sparse mesh file and do not need their own unique fsurdat file --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 16ff0515b5..0bd5109967 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -204,11 +204,11 @@ def main(): "mpasa120": ["mpasa120"], "f10": ["10x15"], "f45": ["4x5"], - "low_res_no_crop": ["4x5", "10x15", "400pt_sparse"], + "low_res_no_crop": ["4x5", "10x15"], "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4.pg2", "ne3np4", "400pt_sparse"], + "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4.pg2", "ne3np4"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], From 7b6a268563fa91a2cf5d4d03149489f1817a6f0d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 15 Sep 2025 17:26:23 -0600 Subject: [PATCH 043/108] Makefile corrections after first test of `make all` (part 1) --- tools/mksurfdata_esmf/Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index edf81e2492..e234ba41d6 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -100,6 +100,11 @@ STANDARD = \ # and I added here because it spans 1979-2030: # crop-global-SSP2-4.5-vrandne120 CROP = \ + crop-global-hist \ + crop-global-hist-low-res \ + crop-global-hist-ne16 \ + crop-global-hist-ne30 \ + crop-global-hist-mpasa480 \ crop-global-hist-1700 \ crop-global-1850-ne120 \ crop-global-present-vrandne120 \ @@ -277,6 +282,10 @@ crop-global-hist-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh +crop-global-hist-mpasa480 : FORCE + $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + 1x1-numa-present : FORCE $(SUBSETDATA_POINT_ALLLU) --create-surface $(SUBSETDATA_1X1_NUMAIA) From 98ee05958092cd4fa4f0c027bba6fcedabf54401 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 16 Sep 2025 18:17:17 -0600 Subject: [PATCH 044/108] Makefile / _multi.py updates after first test of 'make all' (part 2) --- .../ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 12 ++++++------ tools/mksurfdata_esmf/Makefile | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 0bd5109967..0613394085 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -24,7 +24,7 @@ "global-present", "global-present-low-res", "global-present-ultra-hi-res", - "global-hist-1850-f19", + "global-hist-1850-1and2deg", "global-hist-1850-low-res", "crop-tropics-present", "crop", @@ -197,6 +197,7 @@ def main(): "potveg_res": ["0.9x1.25", "1.9x2.5", "ne16np4.pg3", "ne30np4.pg3"], "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60", "mpasa30", "ne30np4.pg3"], "1700_res": ["0.9x1.25", "360x720cru"], + "1and2deg_no_crop": ["1.9x2.5", "0.9x1.25", "ne30np4.pg3"], "f09": ["0.9x1.25"], "f19": ["1.9x2.5"], "hcru": ["360x720cru"], @@ -207,8 +208,7 @@ def main(): "low_res_no_crop": ["4x5", "10x15"], "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], - "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4.pg2", "ne3np4"], + "low_res": ["ne3np4.pg2", "ne3np4.pg3", "ne3np4", "4x5", "10x15"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], @@ -246,9 +246,9 @@ def main(): "--start-year 2000 --end-year 2000 --nocrop --res", "ultra_hi_res_no_crop", ), - "global-hist-1850-f19": ( + "global-hist-1850-1and2deg": ( "--start-year 1850 --end-year 2023 --nocrop --res", - "f19", + "1and2deg_no_crop", ), "global-hist-1850-low-res": ( "--start-year 1850 --end-year 2023 --nocrop --res", @@ -316,7 +316,7 @@ def main(): ), "crop-global-hist": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", - "standard_res_no_f09", + "standard_res", ), "crop-global-hist-low-res": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index e234ba41d6..5f3956796b 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -92,7 +92,7 @@ STANDARD = \ global-potveg \ global-present \ global-present-low-res \ - global-hist-1850-f19 \ + global-hist-1850-1and2deg \ global-hist-1850-low-res \ # NOTE slevis 2025/9/10: For CTSM5.4, I removed from CROP: @@ -178,7 +178,7 @@ global-present-low-res : FORCE $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh -global-hist-1850-f19 : FORCE +global-hist-1850-1and2deg : FORCE $(MKSURFDATA) --number-of-nodes 8 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh global-hist-1850-low-res : FORCE @@ -271,7 +271,7 @@ crop-global-hist-1700 : FORCE $(BATCHJOBS) $@.sh crop-global-hist-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 14 --tasks-per-node 32 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 128 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-hist-ne16 : FORCE From 60e1907ba7ff355d53e654e8d99282d509a211a0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 16 Sep 2025 18:18:53 -0600 Subject: [PATCH 045/108] Makefile / _multi.py updates after first test of 'make all' (part 3) --- .../gen_mksurfdata_jobscript_multi.py | 37 ++++++++++++++++--- tools/mksurfdata_esmf/Makefile | 31 ++++++++++++++-- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 0613394085..b038154be0 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -30,6 +30,7 @@ "crop", "crop-global-present", "crop-global-present-low-res", + "crop-global-present-ne3", "crop-global-present-ne16", "crop-global-present-ne30", "crop-global-present-vrandne120", @@ -37,12 +38,16 @@ "crop-global-present-nldas", "crop-global-1850", "crop-global-1850-low-res", + "crop-global-1850-ne3", "crop-global-1850-ne16", "crop-global-1850-ne30", "crop-global-1850-ne120", "crop-global-1850-mpasa480", "crop-global-hist", "crop-global-hist-low-res", + "crop-global-hist-ne3-1", + "crop-global-hist-ne3-2", + "crop-global-hist-ne3-3", "crop-global-hist-ne16", "crop-global-hist-ne30", "crop-global-hist-1700", @@ -205,14 +210,16 @@ def main(): "mpasa120": ["mpasa120"], "f10": ["10x15"], "f45": ["4x5"], - "low_res_no_crop": ["4x5", "10x15"], + "low_res": ["4x5", "10x15"], "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["ne3np4.pg2", "ne3np4.pg3", "ne3np4", "4x5", "10x15"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], - "ne3": ["ne3np4", "ne3np4.pg3"], + "ne3": ["ne3np4.pg2", "ne3np4.pg3", "ne3np4"], + "ne3_1": ["ne3np4"], + "ne3_2": ["ne3np4.pg2"], + "ne3_3": ["ne3np4.pg3"], "ne16": ["ne16np4.pg3"], "ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"], "ne120": ["ne120np4.pg3"], @@ -240,7 +247,7 @@ def main(): ), "global-present-low-res": ( "--start-year 2000 --end-year 2000 --nocrop --res", - "low_res_no_crop", + "low_res", ), "global-present-ultra-hi-res": ( "--start-year 2000 --end-year 2000 --nocrop --res", @@ -252,7 +259,7 @@ def main(): ), "global-hist-1850-low-res": ( "--start-year 1850 --end-year 2023 --nocrop --res", - "low_res_no_crop", + "low_res", ), "crop-tropics-present": ( "--start-year 2000 --end-year 2000 --res", @@ -266,6 +273,10 @@ def main(): "--start-year 2000 --end-year 2000 --res", "low_res", ), + "crop-global-present-ne3": ( + "--start-year 2000 --end-year 2000 --res", + "ne3", + ), "crop-global-present-ne16": ( "--start-year 2000 --end-year 2000 --res", "ne16", @@ -294,6 +305,10 @@ def main(): "--start-year 1850 --end-year 1850 --res", "low_res", ), + "crop-global-1850-ne3": ( + "--start-year 1850 --end-year 1850 --res", + "ne3", + ), "crop-global-1850-ne16": ( "--start-year 1850 --end-year 1850 --res", "ne16", @@ -322,6 +337,18 @@ def main(): "--start-year 1850 --end-year 2023 --nosurfdata --res", "low_res", ), + "crop-global-hist-ne3-1": ( + "--start-year 1850 --end-year 2023 --nosurfdata --res", + "ne3_1", + ), + "crop-global-hist-ne3-2": ( + "--start-year 1850 --end-year 2023 --nosurfdata --res", + "ne3_2", + ), + "crop-global-hist-ne3-3": ( + "--start-year 1850 --end-year 2023 --nosurfdata --res", + "ne3_3", + ), "crop-global-hist-ne16": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", "ne16", diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 5f3956796b..e94d8edd4d 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -102,6 +102,9 @@ STANDARD = \ CROP = \ crop-global-hist \ crop-global-hist-low-res \ + crop-global-hist-ne3-1 \ + crop-global-hist-ne3-2 \ + crop-global-hist-ne3-3 \ crop-global-hist-ne16 \ crop-global-hist-ne30 \ crop-global-hist-mpasa480 \ @@ -112,10 +115,12 @@ CROP = \ crop-global-present-ne30 \ crop-global-present \ crop-global-present-low-res \ + crop-global-present-ne3 \ crop-global-present-ne16 \ crop-global-present-mpasa480 \ crop-global-1850 \ crop-global-1850-low-res \ + crop-global-1850-ne3 \ crop-global-1850-ne16 \ crop-global-1850-ne30 \ crop-global-1850-mpasa480 \ @@ -215,7 +220,11 @@ crop-global-present : FORCE $(BATCHJOBS) $@.sh crop-global-present-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + +crop-global-present-ne3 : FORCE + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-present-ne16 : FORCE @@ -243,7 +252,11 @@ crop-global-1850 : FORCE $(BATCHJOBS) $@.sh crop-global-1850-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + +crop-global-1850-ne3 : FORCE + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-1850-ne16 : FORCE @@ -271,7 +284,19 @@ crop-global-hist-1700 : FORCE $(BATCHJOBS) $@.sh crop-global-hist-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 128 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + +crop-global-hist-ne3-1: FORCE + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + +crop-global-hist-ne3-2: FORCE + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(BATCHJOBS) $@.sh + +crop-global-hist-ne3-3: FORCE + $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-hist-ne16 : FORCE From 8c7a0de09e10d887c668580c4bdbc51cb2ef1f12 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 17 Sep 2025 16:51:39 -0600 Subject: [PATCH 046/108] Add input_pftdata_filename variable to landuse.timeseries files --- tools/mksurfdata_esmf/src/mksurfdata.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mksurfdata_esmf/src/mksurfdata.F90 b/tools/mksurfdata_esmf/src/mksurfdata.F90 index 35ff1807cd..c2ecc9c308 100644 --- a/tools/mksurfdata_esmf/src/mksurfdata.F90 +++ b/tools/mksurfdata_esmf/src/mksurfdata.F90 @@ -968,8 +968,8 @@ program mksurfdata rcode = pio_put_var(pioid, pio_varid, (/ntim/), year) rcode = pio_inq_varid(pioid, 'time', pio_varid) rcode = pio_put_var(pioid, pio_varid, (/ntim/), year) - !rcode = pio_inq_varid(pioid, 'input_pftdata_filename', pio_varid) - !rcode = pio_put_var(pioid, pio_varid, (/1,ntim/), (/len_trim(string),1/), trim(string)) + rcode = pio_inq_varid(pioid, 'input_pftdata_filename', pio_varid) + rcode = pio_put_var(pioid, pio_varid, (/1,ntim/), trim(string)) call pio_syncfile(pioid) ! Create pctpft data at model resolution from file fname From 883012b7a40577665ccba14a155dc49af80a7cb4 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 17 Sep 2025 16:58:20 -0600 Subject: [PATCH 047/108] Update README.md with how to turn on DEBUG in mksurfdata_esmf --- tools/mksurfdata_esmf/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/mksurfdata_esmf/README.md b/tools/mksurfdata_esmf/README.md index f49d23fb61..95064a9839 100644 --- a/tools/mksurfdata_esmf/README.md +++ b/tools/mksurfdata_esmf/README.md @@ -100,6 +100,7 @@ This will bring in CIME and ccs_config which are required for building. ``` shell # Assuming pwd is the tools/mksurfdata_esmf directory +setenv DEBUG TRUE # only if debugging and your shell is tcsh (in bash use: export DEBUG=TRUE) ./gen_mksurfdata_build # For machines with a cime build ``` From 14cab8a108608e1239c07f9cd2fe6e34f15dcb89 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 19 Sep 2025 15:18:20 -0600 Subject: [PATCH 048/108] Add new expected failure for issue #3495 --- cime_config/testdefs/ExpectedTestFails.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 49ccc9f46a..fe3237afa5 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -98,6 +98,12 @@ + + + FAIL + #3495 + + FAIL From e66386b4100bef89f4b585ff0402dd1ff2d791b4 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 23 Sep 2025 18:05:00 -0600 Subject: [PATCH 049/108] Introduce cmip_era flag (= cmip6 or cmip7) to namelist_defaults --- .../namelist_defaults_cmip_era.xml | 23 +++++++++++++++++++ bld/namelist_files/namelist_defaults_ctsm.xml | 12 +++++++--- .../namelist_definition_ctsm.xml | 6 +++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 bld/namelist_files/namelist_defaults_cmip_era.xml diff --git a/bld/namelist_files/namelist_defaults_cmip_era.xml b/bld/namelist_files/namelist_defaults_cmip_era.xml new file mode 100644 index 0000000000..81c10af811 --- /dev/null +++ b/bld/namelist_files/namelist_defaults_cmip_era.xml @@ -0,0 +1,23 @@ + + + + + + + + + +cmip7 +cmip6 +cmip6 +cmip6 +cmip6 + + diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 80c96947b9..84fecb14d0 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1807,10 +1807,14 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_16pfts_c241007.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_1850_78pfts_c240908.nc - + lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c250723.nc - + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc + lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c250723.nc + +-lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc @@ -1825,8 +1829,10 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.nc - + lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c250723.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index 69a243bd27..4fbf3f9777 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -2364,6 +2364,12 @@ A sim_year_range of 1000-1002 or 1000-1004 corresponds to data used for testing A sim_year_range that goes beyond 2005 corresponds to historical data until 2005 and then scenario data beyond that point. + +Whether to use CMIP6 or CMIP7 fsurdat/landuse files. +As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. + + Namelist entries to demand be provided on the namelist. From 0f4808c662c1ec24bbf0160a9c53b9b6063f37e8 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 23 Sep 2025 18:06:38 -0600 Subject: [PATCH 050/108] Introduce CLM_CMIP_ERA flag to env_run.xml (= cmip6 or cmip7) --- bld/CLMBuildNamelist.pm | 5 +++++ cime_config/config_component.xml | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 4effcf76c7..d30654a80d 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -735,6 +735,11 @@ sub setup_cmdl_resolution { $log->verbose_message( "This is NOT a NEON site" ); } + # + # To determine CMIP era + # + $nl_flags->{'cmip_era'} = $envxml_ref->{'CLM_CMIP_ERA'}; + } #------------------------------------------------------------------------------- diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index f869d0e362..e0006ede9f 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -156,6 +156,20 @@ This is typically set by the compset. + + char + cmip6,cmip7 + cmip7 + + cmip6 + cmip6 + + run_component_ctsm + env_run.xml + Whether to use CMIP6 or CMIP7 fsurdat/landuse files. + As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. + + logical From a30efabaf286a391b8e3fa0fda61c8e540d4a483 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 26 Sep 2025 16:21:46 -0600 Subject: [PATCH 051/108] Remove newly introduced namelist_defaults_cmip_era.xml --- .../namelist_defaults_cmip_era.xml | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 bld/namelist_files/namelist_defaults_cmip_era.xml diff --git a/bld/namelist_files/namelist_defaults_cmip_era.xml b/bld/namelist_files/namelist_defaults_cmip_era.xml deleted file mode 100644 index 81c10af811..0000000000 --- a/bld/namelist_files/namelist_defaults_cmip_era.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - -cmip7 -cmip6 -cmip6 -cmip6 -cmip6 - - From f408835fbacfae4a644bdcebb9c3485c725f3fe6 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 26 Sep 2025 16:24:36 -0600 Subject: [PATCH 052/108] Add cmip7 flag also for historical landuse files (f09, f19, ne30) --- bld/namelist_files/namelist_defaults_ctsm.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 84fecb14d0..777b3bf78e 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1891,9 +1891,9 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c241007.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250723.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c250723.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc @@ -1923,7 +1923,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c250723.nc Date: Fri, 26 Sep 2025 16:47:21 -0600 Subject: [PATCH 053/108] Add the cmip_era flag to all fsurdat/landuse add_default calls --- bld/CLMBuildNamelist.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index d30654a80d..65b9ef642e 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -2519,11 +2519,13 @@ sub setup_logic_demand { # For landuse.timeseries try with crop on first eise try with exact settings # Logic for this is identical for fsurdat if ( $item eq "flanduse_timeseries" ) { + $settings{'cmip_era'} = $nl_flags->{'cmip_era'}; $settings{'use_crop'} = ".true."; $settings{'nofail'} = 1; } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $item, %settings ); if ( $item eq "flanduse_timeseries" ) { + $settings{'cmip_era'} = $nl_flags->{'cmip_era'}; $settings{'nofail'} = 0; $settings{'use_crop'} = $nl_flags->{'use_crop'}; if ( ! defined($nl->get_value( $item )) ) { @@ -2573,6 +2575,7 @@ sub setup_logic_surface_dataset { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var, 'hgrid'=>$nl_flags->{'res'}, 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'neon'=>$nl_flags->{'neon'}, 'neonsite'=>$nl_flags->{'neonsite'}, + 'cmip_era'=>$nl_flags->{'cmip_era'}, 'sim_year'=>$nl_flags->{'sim_year'}, 'use_vichydro'=>$nl_flags->{'use_vichydro'}, 'use_crop'=>".true.", 'use_fates'=>$nl_flags->{'use_fates'}, 'nofail'=>1); } @@ -2586,6 +2589,7 @@ sub setup_logic_surface_dataset { 'hgrid'=>$nl_flags->{'res'}, 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'use_vichydro'=>$nl_flags->{'use_vichydro'}, 'sim_year'=>$nl_flags->{'sim_year'}, 'use_fates'=>$nl_flags->{'use_fates'}, 'neon'=>$nl_flags->{'neon'}, 'neonsite'=>$nl_flags->{'neonsite'}, + 'cmip_era'=>$nl_flags->{'cmip_era'}, 'use_crop'=>$nl_flags->{'use_crop'} ); } # From 61014874652a7b53918eff6ad62fa4185579d9be Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 30 Sep 2025 16:34:01 -0600 Subject: [PATCH 054/108] Rm previously expected failures requiring finidat with c13/c14 to PASS --- cime_config/testdefs/ExpectedTestFails.xml | 28 ---------------------- 1 file changed, 28 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index fe3237afa5..0fdb023f3d 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -29,34 +29,6 @@ - - - FAIL - #3311 - Requires finidat with c13/c14 to PASS - - - - - FAIL - #3311 - Requires finidat with c13/c14 to PASS - - - - - FAIL - #3311 - Requires finidat with c13/c14 to PASS - - - - - FAIL - #3311 - Requires finidat with c13/c14 to PASS - - FAIL From 3a0870f33850be4a4abefdfdbc82679deed48838 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 30 Sep 2025 17:28:36 -0600 Subject: [PATCH 055/108] Rm another expected failure that required finidat with c13/c14 to PASS --- cime_config/testdefs/ExpectedTestFails.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 0fdb023f3d..abe747b0fe 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -29,14 +29,6 @@ - - - FAIL - #3311 - Requires finidat with c13/c14 to PASS - - - FAIL From db3540d48d16e21189710c1077dc819f6b53f406 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 1 Oct 2025 15:45:35 -0600 Subject: [PATCH 056/108] Mention CLM_CMIP_ERA in namelist error message for easier debugging --- bld/CLMBuildNamelist.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 65b9ef642e..4ec187557a 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -5454,7 +5454,7 @@ sub add_default { " Are defaults provided for this resolution and land mask?" ); } else { $log->fatal_error("No default value found for $var.\n" . - " Are defaults provided for this resolution and land mask?"); + " Are defaults provided in namelist_defaults for this resolution, land mask, and CLM_CMIP_ERA (set in env_run.xml)?"); } } else { From 3b15fbc8a8f1525ce95dee74bdb45560366269ec Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 1 Oct 2025 16:22:05 -0600 Subject: [PATCH 057/108] namelist_defaults updates for better error catching --- bld/namelist_files/namelist_defaults_ctsm.xml | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 777b3bf78e..19bcd4d1c7 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1304,7 +1304,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.3/clmi.interp_from.I1850Clm50BgcCrop-ciso.1366-01-01.0.9x1.25_gx1v7_simyr1850_c240223.nc @@ -1730,8 +1730,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa15_hist_2000_16pfts_c240908.nc - -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_78pfts_c250916.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_78pfts_c240908.nc @@ -1941,61 +1941,61 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP1-2.6_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_10x15_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_360x720cru_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1x1_brazil_SSP2-4.5_1850-2100_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4CONUS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP3-7.0_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP4-6.0_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP5-8.5_1850-2100_78pfts_c240908.nc From 1283fb7bd790dad258e5a980b99284e1ab7e8482 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 1 Oct 2025 17:06:38 -0600 Subject: [PATCH 058/108] Remove another expected failure documented in issue #1733 --- cime_config/testdefs/ExpectedTestFails.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index abe747b0fe..945bf5b4cb 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -137,13 +137,6 @@ - - - FAIL - #1733 - - - FAIL From 14f647df3b00a29ce4f8d3420d65388fcbe66549 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 1 Oct 2025 17:17:57 -0600 Subject: [PATCH 059/108] Remove expected failure in MODEL_BUILD documented in issue #3182 --- cime_config/testdefs/ExpectedTestFails.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 945bf5b4cb..0b2c558647 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -156,10 +156,6 @@ - - FAIL - #3182 - FAIL #3182 From 6c8128a6205cdd037dda847c40ba6c7c7f896c94 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 2 Oct 2025 11:52:13 -0600 Subject: [PATCH 060/108] Add details to CLM_CMIP_ERA documentation in env_run.xml --- cime_config/config_component.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index e0006ede9f..edef8320e3 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -167,7 +167,9 @@ run_component_ctsm env_run.xml Whether to use CMIP6 or CMIP7 fsurdat/landuse files. - As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. + As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. Caveats: +1) We supply only cmip7 C13/C14 isotope datasets, so these get used regardless. +2) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. From a8124542e598546b0d0006699b49105b29eae421 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 2 Oct 2025 12:04:13 -0600 Subject: [PATCH 061/108] Add back the cmip6 flanduse defaults for f09, f19, ne30 --- bld/namelist_files/namelist_defaults_ctsm.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 19bcd4d1c7..e977c6e050 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1893,8 +1893,12 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc From 968eb7b6cb84465bb3164811ae455d9e8f4cd99e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 2 Oct 2025 12:19:31 -0600 Subject: [PATCH 062/108] Add back the cmip6 fsurdat default for f09 2000 --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index e977c6e050..6330e5e136 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1732,6 +1732,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa3p75_hist_2000_16pfts_c240908.nc< lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_78pfts_c250916.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_78pfts_c240908.nc From d4af81e68f8b8c20ca994d960ee66297521000e2 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 2 Oct 2025 12:26:45 -0600 Subject: [PATCH 063/108] Add another detail to the CLM_CMIP_ERA documentation in env_run.xml --- cime_config/config_component.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index edef8320e3..429ec32d98 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -169,7 +169,8 @@ Whether to use CMIP6 or CMIP7 fsurdat/landuse files. As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. Caveats: 1) We supply only cmip7 C13/C14 isotope datasets, so these get used regardless. -2) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. +2) We supply only cmip7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only cmip6 population density. +3) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. From 7bf8c5b0f30c12209fce00975becc1ce1c7684a5 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 2 Oct 2025 12:33:17 -0600 Subject: [PATCH 064/108] Add same details to the cmip_era documentation in namelist_definition --- bld/namelist_files/namelist_definition_ctsm.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index 4fbf3f9777..7e481e6d86 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -2367,7 +2367,10 @@ A sim_year_range that goes beyond 2005 corresponds to historical data until 2005 Whether to use CMIP6 or CMIP7 fsurdat/landuse files. -As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. +As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. Caveats: +1) We supply only cmip7 C13/C14 isotope datasets, so these get used regardless. +2) We supply only cmip7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only cmip6 population density. +3) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. Date: Thu, 2 Oct 2025 14:10:48 -0600 Subject: [PATCH 065/108] Put back use_init_interp that I removed in 71f2db2 --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6330e5e136..2f0e291285 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1512,7 +1512,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.2000-01-01-00000.nc Date: Thu, 2 Oct 2025 14:14:11 -0600 Subject: [PATCH 066/108] Remove SSP test from expected fails --- cime_config/testdefs/ExpectedTestFails.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 0b2c558647..48a621a3f5 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -331,14 +331,6 @@ - - - FAIL - #3250 - This should be resolved for the 5.4 release. - - - From c429f5f799e86b39cadc54eac2303a7328c9088d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Oct 2025 17:11:11 -0600 Subject: [PATCH 067/108] Changing build-namelist_test.pl; corresponding bug-fix in nml defaults I still need to fix four tests in build-namelist_test.pl. Three other tests are expected failures. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- bld/unit_testers/build-namelist_test.pl | 30 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 2f0e291285..f6588d3ffe 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1816,7 +1816,7 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c250723.nc --lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index ac5956506f..2236c5fda7 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -42,7 +42,7 @@ sub make_env_run { my %settings = @_; # Set default settings - my %env_vars = ( DIN_LOC_ROOT=>"MYDINLOCROOT", GLC_TWO_WAY_COUPLING=>"FALSE", LND_SETS_DUST_EMIS_DRV_FLDS=>"TRUE", NEONSITE=>"", PLUMBER2SITE=>"" ); + my %env_vars = ( DIN_LOC_ROOT=>"MYDINLOCROOT", GLC_TWO_WAY_COUPLING=>"FALSE", LND_SETS_DUST_EMIS_DRV_FLDS=>"TRUE", NEONSITE=>"", PLUMBER2SITE=>"", CLM_CMIP_ERA=>"cmip7" ); # Set any settings that came in from function call foreach my $item ( keys(%settings) ) { $env_vars{$item} = $settings{$item}; @@ -261,7 +261,7 @@ sub cat_and_create_namelistinfile { my $options = "-co2_ppmv 250 "; $options .= " -res 10x15 -ssp_rcp SSP2-4.5 -envxml_dir ."; - &make_env_run(); + &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "options: $options" ); $cfiles->checkfilesexist( "default", $mode ); @@ -611,6 +611,16 @@ sub cat_and_create_namelistinfile { system( "touch $finidat" ); my %failtest = ( + "cmip7_w_issp" =>{ options=>"-envxml_dir . -ssp_rcp SSP4-6.0", + namelst=>"", + CLM_CMIP_ERA=>"cmip7", + phys=>"clm6_0", + }, + "cmip6_w_i2000" =>{ options=>"-envxml_dir . -use_case 2000_control", + namelst=>"", + CLM_CMIP_ERA=>"cmip6", + phys=>"clm6_0", + }, "coldstart but with IC file"=>{ options=>"-clm_start_type cold -envxml_dir .", namelst=>"finidat='$finidat'", phys=>"clm5_0", @@ -1361,7 +1371,7 @@ sub cat_and_create_namelistinfile { my $options = $failtest{$key}{"options"}; my $namelist = $failtest{$key}{"namelst"}; my %settings; - foreach my $xmlvar ( "GLC_TWO_WAY_COUPLING", "LND_SETS_DUST_EMIS_DRV_FLDS") { + foreach my $xmlvar ( "GLC_TWO_WAY_COUPLING", "LND_SETS_DUST_EMIS_DRV_FLDS", "CLM_CMIP_ERA") { if ( defined($failtest{$key}{$xmlvar}) ) { $settings{$xmlvar} = $failtest{$key}{$xmlvar}; } @@ -1611,7 +1621,7 @@ sub cat_and_create_namelistinfile { foreach my $usecase ( @usecases ) { print "usecase = $usecase\n"; $options = "-res 0.9x1.25 -use_case $usecase -envxml_dir ."; - &make_env_run(); + &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); my $expect_fail = undef; foreach my $failusecase ( @expect_fails ) { if ( $failusecase eq $usecase ) { @@ -1832,15 +1842,21 @@ sub cat_and_create_namelistinfile { my $startymd = undef; if ( ($usecase eq "1850_control") || ($usecase eq "20thC_transient") ) { $startymd = 18500101; + &make_env_run(); } elsif ( $usecase eq "2000_control") { $startymd = 20000101; + &make_env_run(); } elsif ( $usecase eq "2010_control") { $startymd = 20100101; + &make_env_run(); + } elsif ( $usecase eq "1850-2100_SSP2-4.5_transient") { + $startymd = 20150101; + &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); } else { $startymd = 20150101; + &make_env_run(); } $options = "-bgc bgc -res $res -use_case $usecase -envxml_dir . -namelist '&a start_ymd=$startymd/'"; - &make_env_run(); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "$options" ); $cfiles->checkfilesexist( "$options", $mode ); @@ -1877,11 +1893,11 @@ sub cat_and_create_namelistinfile { } # Transient ssp_rcp scenarios that work my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); +my $startymd = 20150101; +&make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); foreach my $usecase ( "1850-2100_SSP2-4.5_transient" ) { - my $startymd = 20150101; foreach my $res ( @tran_res ) { $options = "-res $res -bgc bgc -crop -use_case $usecase -envxml_dir . -namelist '&a start_ymd=$startymd/'"; - &make_env_run(); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "$options" ); $cfiles->checkfilesexist( "$options", $mode ); From db26aaa3929b3e32c6d76dae5316c3dabc89f31b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Oct 2025 18:13:08 -0600 Subject: [PATCH 068/108] Fix 2 build-namelist tests that started failing in ctsm5.3.032 --- bld/unit_testers/build-namelist_test.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index 2236c5fda7..70cd776691 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -2030,7 +2030,8 @@ sub cat_and_create_namelistinfile { foreach my $bgc ( "sp", "bgc" ) { my $lndtuningmode = "${phys}_${forc}"; if ( $lndtuningmode eq "clm6_0_CRUv7" or - $lndtuningmode eq "clm4_5_CRUJRA2024") { + $lndtuningmode eq "clm4_5_CRUJRA2024" or + $lndtuningmode eq "clm5_0_CRUJRA2024") { next; } my $clmoptions = "-res $res -mask $mask -sim_year $simyr -envxml_dir . -lnd_tuning_mod $lndtuningmode -bgc $bgc"; From f16276d738c9aa54a121d76af20e49947fe2e4cc Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Oct 2025 18:16:11 -0600 Subject: [PATCH 069/108] Rename 2nd inventoryfileDNE test to useFATESLUH2fileDNE --- bld/unit_testers/build-namelist_test.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index 70cd776691..db096652a9 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -1156,7 +1156,7 @@ sub cat_and_create_namelistinfile { namelst=>"use_fates_lupft=.true.", phys=>"clm4_5", }, - "inventoryfileDNE" =>{ options=>"-bgc fates -envxml_dir . -no-megan", + "useFATESLUH2fileDNE" =>{ options=>"-bgc fates -envxml_dir . -no-megan", namelst=>"use_fates_luh=.true., fluh_timeseries='zztop'", phys=>"clm4_5", }, From 8100fa8b5dc21d7bd084d566dcd1f5e052e25f65 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Oct 2025 18:19:48 -0600 Subject: [PATCH 070/108] Resolve build-namelist tests, though not all, yet --- bld/unit_testers/build-namelist_test.pl | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index db096652a9..b741f57baa 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -569,12 +569,30 @@ sub cat_and_create_namelistinfile { &make_config_cache($phys); foreach my $options ( "--res 0.9x1.25 --bgc sp --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=18501223/'", + "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", + ) { + my $file = $startfile; + &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); + eval{ system( "$bldnml -envxml_dir . $options > $tempfile 2>&1 " ); }; + is( $@, '', "options: $options" ); + $cfiles->checkfilesexist( "$options", $mode ); + $cfiles->shownmldiff( "default", $mode ); + if ( defined($opts{'compare'}) ) { + $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode ); + $cfiles->dodiffonfile( "lnd_in", "$options", $mode ); + $cfiles->comparefiles( "$options", $mode, $opts{'compare'} ); + } + if ( defined($opts{'generate'}) ) { + $cfiles->copyfiles( "$options", $mode ); + } + &cleanup(); +} +foreach my $options ( "-bgc fates -use_case 2000_control -no-megan", "-bgc fates -use_case 20thC_transient -no-megan", "-bgc fates -use_case 20thC_transient -no-megan -no-crop --res 4x5", "-bgc fates -use_case 1850_control -no-megan -namelist \"&a use_fates_sp=T, soil_decomp_method='None'/\"", "-bgc sp -use_case 2000_control -res 0.9x1.25 -namelist '&a use_soil_moisture_streams = T/'", - "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", "-namelist \"&a dust_emis_method='Zender_2003', zender_soil_erod_source='lnd' /'\"", "-bgc bgc -use_case 2000_control -namelist \"&a fire_method='nofire'/\" -crop", "-res 0.9x1.25 -bgc sp -use_case 1850_noanthro_control -drydep", From 3beef40fd30c4fe15a1d9160163c65d1b9d953ef Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Oct 2025 19:22:51 -0600 Subject: [PATCH 071/108] Resolved remaining fails (except 2 expected ones) in build-namelist --- bld/unit_testers/build-namelist_test.pl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index b741f57baa..7c5fc59bb0 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -570,6 +570,8 @@ sub cat_and_create_namelistinfile { foreach my $options ( "--res 0.9x1.25 --bgc sp --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=18501223/'", "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", + "--res 1.9x2.5 --bgc bgc --use_case 1850_control --namelist '&a start_ymd=18500101/'", + "--res 1.9x2.5 --bgc bgc --use_case 20thC_transient --namelist '&a start_ymd=18500101/'", ) { my $file = $startfile; &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); @@ -629,16 +631,11 @@ sub cat_and_create_namelistinfile { system( "touch $finidat" ); my %failtest = ( - "cmip7_w_issp" =>{ options=>"-envxml_dir . -ssp_rcp SSP4-6.0", + "cmip7_w_issp" =>{ options=>"-envxml_dir . -use_case 1850-2100_SSP2-4.5_transient", namelst=>"", CLM_CMIP_ERA=>"cmip7", phys=>"clm6_0", }, - "cmip6_w_i2000" =>{ options=>"-envxml_dir . -use_case 2000_control", - namelst=>"", - CLM_CMIP_ERA=>"cmip6", - phys=>"clm6_0", - }, "coldstart but with IC file"=>{ options=>"-clm_start_type cold -envxml_dir .", namelst=>"finidat='$finidat'", phys=>"clm5_0", From 807040de0173631367c323510298005f1393c23a Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 17:34:39 -0600 Subject: [PATCH 072/108] Change from "if a equals b" to "if a contains b" where b are SSP cases --- bld/unit_testers/build-namelist_test.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index 7c5fc59bb0..2fce56de4d 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -163,7 +163,7 @@ sub cat_and_create_namelistinfile { # # Figure out number of tests that will run # -my $ntests = 3394; +my $ntests = 3396; if ( defined($opts{'compare'}) ) { $ntests += 2061; @@ -1864,7 +1864,7 @@ sub cat_and_create_namelistinfile { } elsif ( $usecase eq "2010_control") { $startymd = 20100101; &make_env_run(); - } elsif ( $usecase eq "1850-2100_SSP2-4.5_transient") { + } elsif ( $usecase =~ "2100_SSP") { $startymd = 20150101; &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); } else { From 826cee4b55428dc24f6d26c69e79a0f0618a8904 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 17:37:52 -0600 Subject: [PATCH 073/108] Add LAI streams test to expected fails for now --- cime_config/testdefs/ExpectedTestFails.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 48a621a3f5..e6f4295275 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -29,6 +29,13 @@ + + + FAIL + #3529 + We will generate new fsurdat files with the new raw lai file to resolve this issue. + + FAIL From 2e271ca50710c4d2f83ab68ede04f1bfa14ea50f Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 17:46:04 -0600 Subject: [PATCH 074/108] Remove unnecessary change to namelist_definition_ctsm.xml --- bld/namelist_files/namelist_definition_ctsm.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index 7e481e6d86..69a243bd27 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -2364,15 +2364,6 @@ A sim_year_range of 1000-1002 or 1000-1004 corresponds to data used for testing A sim_year_range that goes beyond 2005 corresponds to historical data until 2005 and then scenario data beyond that point. - -Whether to use CMIP6 or CMIP7 fsurdat/landuse files. -As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. Caveats: -1) We supply only cmip7 C13/C14 isotope datasets, so these get used regardless. -2) We supply only cmip7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only cmip6 population density. -3) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. - - Namelist entries to demand be provided on the namelist. From 92dd6d5215dbed19dfa2da7655265f7e220bc55e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 18:01:37 -0600 Subject: [PATCH 075/108] Add comment explaining why I split hist-ne3 into three separate jobs --- tools/mksurfdata_esmf/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index e94d8edd4d..037d004ad6 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -99,6 +99,7 @@ STANDARD = \ # crop-global-future # and I added here because it spans 1979-2030: # crop-global-SSP2-4.5-vrandne120 +# and I split ne3 into ne3-1, ne3-2, ne3-3 for historical because the combined ne3 job took >12 hours in the queue CROP = \ crop-global-hist \ crop-global-hist-low-res \ From c3e1ca1a2d494d6e72ae7cac87c7479bf55d0af4 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 18:17:40 -0600 Subject: [PATCH 076/108] Point to corrected raw lai file and correspondng soil color file --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index cd9a5b058a..938840bfe1 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -10,7 +10,7 @@ - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_pftlai_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_pftlai_clm6_histLUH3_2005_c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -21,7 +21,7 @@ - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_soilcolor_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc From 5a09596588e9659afa81a11ccd57a3b6e59a712e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Oct 2025 18:29:55 -0600 Subject: [PATCH 077/108] Added back 1x1_brazil_transient to the mksurfdata_esmf Makefile --- tools/mksurfdata_esmf/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 037d004ad6..8a31f8bffe 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -143,10 +143,10 @@ all : all-subset global-present-ultra-hi-res crop standard crop-tropics-present # These are all the surface datasets generated by subset_data # This runs interactively and does not send jobs to the batch queue # NOTE slevis 2025/9/10: For CTSM5.4, I removed from all-subset: -# 1x1_brazil-transient # 1x1-smallville-present all-subset : \ 1x1_brazil-present \ + 1x1_brazil-transient \ 1x1-numa-present \ 1x1-smallville-1850 \ 1x1-smallville-transient \ From 2ea100a1a0568f176b2c3ac32cf5009104eda152 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Oct 2025 10:26:41 -0600 Subject: [PATCH 078/108] Revert c3e1ca1 "Point to corrected raw lai file and corresp. soil color" --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 938840bfe1..cd9a5b058a 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -10,7 +10,7 @@ - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_pftlai_clm6_histLUH3_2005_c251012.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_pftlai_CLIM.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -21,7 +21,7 @@ - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.nc + lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_soilcolor_CLIM.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc From 4ff9e681dd71dfd6fcedac1450b744c7081e4991 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Oct 2025 14:26:46 -0600 Subject: [PATCH 079/108] New and updated comments pertaining to CLM_CMIP_ERA --- bld/CLMBuildNamelist.pm | 5 ++++- bld/unit_testers/build-namelist_test.pl | 1 + cime_config/config_component.xml | 11 +++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 4ec187557a..689470d737 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -737,7 +737,10 @@ sub setup_cmdl_resolution { # # To determine CMIP era - # + # TODO slevis: Ideally this line would occupy a new subroutine, e.g. + # subr. process_envxml_flags that would get called from + # process_namelist_user_input. This would allow other such + # XML variables to be set in the same place in the future (issue #3547). $nl_flags->{'cmip_era'} = $envxml_ref->{'CLM_CMIP_ERA'}; } diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index 2fce56de4d..725a5defff 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -567,6 +567,7 @@ sub cat_and_create_namelistinfile { $phys = "clm5_0"; $mode = "-phys $phys"; &make_config_cache($phys); +# Four tests that require CLM_CMIP_ERA set to cmip6 foreach my $options ( "--res 0.9x1.25 --bgc sp --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=18501223/'", "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 429ec32d98..e7e8f68314 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -167,10 +167,13 @@ run_component_ctsm env_run.xml Whether to use CMIP6 or CMIP7 fsurdat/landuse files. - As of ctsm5.4 we do not have CMIP7 pft raw datasets for SSPs and NOANTHRO, so default to cmip6 for these. For other compsets default to cmip7. User may modify to a non-default value in env_run.xml. Caveats: -1) We supply only cmip7 C13/C14 isotope datasets, so these get used regardless. -2) We supply only cmip7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only cmip6 population density. -3) We supply only cmip6 nitrogen deposition (ndep), so this gets used regardless. + As of ctsm5.4 we do not have CMIP7 PFT raw datasets for SSPs and NOANTHRO, so default to CMIP6 for these. For other compsets default to CMIP7. User may modify to a non-default value in env_run.xml. +Caveats: +1) We supply only CMIP7 C13/C14 isotope datasets, so these get used regardless. +2) We supply only CMIP7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only CMIP6 population density. +3) We supply only CMIP6 nitrogen deposition (ndep), so this gets used regardless. +4) For DATM we supply only CMIP6 aerosols. +5) For DATM we supply only CMIP6 CO2 From 92ee1a16addef9a42916dddc5b7b31b9c5dc252b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Oct 2025 18:12:14 -0600 Subject: [PATCH 080/108] Point to corrected raw lai file and corresp. soil color file This is identical to and replaces the earlier commit c3e1ca1a2d494d6e72ae7cac87c7479bf55d0af4 that I had to reverse. --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index cd9a5b058a..b8d88352b7 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -10,7 +10,7 @@ - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_pftlai_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_pftlai_clm6_histLUH3_2005_c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -21,7 +21,7 @@ - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histMKSRFDeg025_250417/mksrf_landuse_ctsm53_soilcolor_CLIM.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.c250417.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc From f1ea8889e3aaecf90c6f2391892cd53f9cc33f9d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Oct 2025 18:19:54 -0600 Subject: [PATCH 081/108] Correction to soilcolor file name --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index b8d88352b7..938840bfe1 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -21,7 +21,7 @@ - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc From e64f426ea35dfd220ea90652b596a80f5c684381 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 16 Oct 2025 11:35:11 -0600 Subject: [PATCH 082/108] Upd. to latest 1700-2023 & noanthro landuse files ...generated when the corrected lai & soilcolor raw datasets were generated; we're switching to these new landuse files because they ended up with 0.01% diffs in PCT_NAT_PFT and PCT_CFT values relative to the previous version --- tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 938840bfe1..1d242a11c5 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -204,37 +204,37 @@ version of the raw dataset will probably go away. - + - lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRNOANTHRODeg025_240831/mksrf_landuse_ctsm53_histTRNOANTHRO_1.c240831.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_NOANTHRO_CMIP7/mksrf_landuse_clm6_noanthroLUH3_1.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc lnd/clm2/rawdata/mksrf_urban_0.05x0.05_zerourbanpct.cdf5.c181014.nc - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1700.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_1700.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1700_c250423.nc - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_1850.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_1850.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1850_c250423.nc - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2000.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_2000.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2000.cdf5.c20220325.nc lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2000_c250423.nc - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_2005.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_2005.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2005.cdf5.c20220325.nc lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2005_c250423.nc @@ -252,7 +252,7 @@ version of the raw dataset will probably go away. - lnd/clm2/rawdata/CTSM54RawData/globalctsm53histCMIP7Deg025_250417/mksrf_landuse_ctsm53_histCMIP7_%y.c250417.nc + lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_%y.c251012.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_%y_c250423.nc From bbc9e40966910eb68c534bf5499f53710648ac5b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 16 Oct 2025 15:19:06 -0600 Subject: [PATCH 083/108] Add test back to expected failures (issue #1733) The test seemed fixed in a short range of tags: ctsm5.3.063 to .072 and alpha-ctsm5.4.CMIP7.09.ctsm5.3.068 to .075 --- cime_config/testdefs/ExpectedTestFails.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 1084e9d8ca..5d4d51e123 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -144,6 +144,13 @@ + + + FAIL + #1733 + + + FAIL From 37ae51ed472b21581aa352d505b0a16499b69e90 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 16 Oct 2025 18:00:33 -0600 Subject: [PATCH 084/108] Stop NOANTHRO from defaulting to cmip_era cmip6 --- cime_config/config_component.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index e7e8f68314..13140ad083 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -161,13 +161,12 @@ cmip6,cmip7 cmip7 - cmip6 cmip6 run_component_ctsm env_run.xml Whether to use CMIP6 or CMIP7 fsurdat/landuse files. - As of ctsm5.4 we do not have CMIP7 PFT raw datasets for SSPs and NOANTHRO, so default to CMIP6 for these. For other compsets default to CMIP7. User may modify to a non-default value in env_run.xml. + As of ctsm5.4 we do not have CMIP7 PFT raw datasets for SSPs, so default to CMIP6 for these. For other compsets default to CMIP7. User may modify to a non-default value in env_run.xml. Caveats: 1) We supply only CMIP7 C13/C14 isotope datasets, so these get used regardless. 2) We supply only CMIP7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only CMIP6 population density. From 5399e09acc08b00fd96351c33b6938a5dfaac214 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 17 Oct 2025 17:20:27 -0600 Subject: [PATCH 085/108] Change VR and ne120 year range from 1979-2030 to 1979-2023 --- .../ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 6 +++--- tools/mksurfdata_esmf/Makefile | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index b038154be0..1bae37bb29 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -58,7 +58,7 @@ "crop-global-SSP2-4.5-f19", "crop-global-SSP2-4.5-f10", "crop-global-SSP2-4.5-f45", - "crop-global-SSP2-4.5-vrandne120", + "crop-global-hist-vrandne120", "crop-global-SSP2-4.5-ne3", "crop-global-SSP2-4.5-ne16", "crop-global-SSP2-4.5-ne30", @@ -389,8 +389,8 @@ def main(): "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", "f45", ), - "crop-global-SSP2-4.5-vrandne120": ( - "--start-year 1979 --end-year 2030 --ssp-rcp SSP2-4.5 --res", + "crop-global-hist-vrandne120": ( + "--start-year 1979 --end-year 2023 --res", "vr_and_ne120", ), "crop-global-SSP2-4.5-ne3": ( diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 8a31f8bffe..79b863d7ac 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -97,8 +97,8 @@ STANDARD = \ # NOTE slevis 2025/9/10: For CTSM5.4, I removed from CROP: # crop-global-future -# and I added here because it spans 1979-2030: -# crop-global-SSP2-4.5-vrandne120 +# and I added here because it spans 1979-2023: +# crop-global-hist-vrandne120 # and I split ne3 into ne3-1, ne3-2, ne3-3 for historical because the combined ne3 job took >12 hours in the queue CROP = \ crop-global-hist \ @@ -125,7 +125,7 @@ CROP = \ crop-global-1850-ne16 \ crop-global-1850-ne30 \ crop-global-1850-mpasa480 \ - crop-global-SSP2-4.5-vrandne120 \ + crop-global-hist-vrandne120 \ # Build the executable if it doesn't exist and any target depends on it $(MKSURFDATA_EXE): @@ -350,8 +350,8 @@ crop-global-future : crop-global-SSP1-1.9-f09 \ crop-global-SSP2-4.5-low-res : crop-global-SSP2-4.5-f10 \ crop-global-SSP2-4.5-f45 \ crop-global-SSP2-4.5-ne3 -# NOTE slevis 2025/9/10: For CTSM5.4, I moved to CROP because it spans 1979-2030: -# crop-global-SSP2-4.5-vrandne120 +# NOTE slevis 2025/9/10: For CTSM5.4, I moved to CROP because it spans 1979-2023: +# crop-global-hist-vrandne120 crop-global-SSP2-4.5 : crop-global-SSP2-4.5-f09 \ crop-global-SSP2-4.5-f19 \ crop-global-SSP2-4.5-hcru \ @@ -400,7 +400,7 @@ crop-global-SSP2-4.5-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-SSP2-4.5-vrandne120 : FORCE +crop-global-hist-vrandne120 : FORCE $(MKSURFDATA) --number-of-nodes 2 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh From ad3b2c9844c10aa4e371111c128bc9d616967f02 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 20 Oct 2025 12:41:37 -0600 Subject: [PATCH 086/108] Upd. to ccs_config_cesm1.0.61_add_domain_ne3np4.pg2_1 to gen. datasets --- .gitmodules | 2 +- ccs_config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index a9bfb47b0c..f0e6ed2ef6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,7 +68,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/mizuRoute [submodule "ccs_config"] path = ccs_config url = https://github.com/ESMCI/ccs_config_cesm.git -fxtag = ccs_config_cesm1.0.61 +fxtag = ccs_config_cesm1.0.61_add_domain_ne3np4.pg2_1 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git diff --git a/ccs_config b/ccs_config index b20a207bc9..d686615fac 160000 --- a/ccs_config +++ b/ccs_config @@ -1 +1 @@ -Subproject commit b20a207bc918b956b8dad44c14c4471aff9331ee +Subproject commit d686615faceac30705b199f592808e3558ac176b From fb4306b594e2e08b978f1d53773f8b5b1e9ede42 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 21 Oct 2025 17:24:52 -0600 Subject: [PATCH 087/108] Add comments as recommended in code review --- .../ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 4 ++++ tools/mksurfdata_esmf/Makefile | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 1bae37bb29..f0fd65862f 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -389,6 +389,10 @@ def main(): "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", "f45", ), + # NOTE 2025/10/21: When CMIP7 future scenarios become available, + # change 2023 to 2030 for a so-called "midpoint" future scenario. + # This future-proofs these cases, so that as time moves on, these + # simulations will still include the most recent historical year. "crop-global-hist-vrandne120": ( "--start-year 1979 --end-year 2023 --res", "vr_and_ne120", diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 79b863d7ac..1a6badd0c7 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -97,9 +97,9 @@ STANDARD = \ # NOTE slevis 2025/9/10: For CTSM5.4, I removed from CROP: # crop-global-future -# and I added here because it spans 1979-2023: +# Here I added this because it spans 1979-2023. When CMIP7 future scenarios become available, this will span 1979-2030: # crop-global-hist-vrandne120 -# and I split ne3 into ne3-1, ne3-2, ne3-3 for historical because the combined ne3 job took >12 hours in the queue +# Also I split ne3 into ne3-1, ne3-2, ne3-3 for historical because the combined ne3 job took >12 hours in the queue CROP = \ crop-global-hist \ crop-global-hist-low-res \ @@ -336,7 +336,11 @@ crop-global-hist-mpasa480 : FORCE # # Crop with future scenarios -# +# NOTE 2025/10/21: Time periods extending beyond 2023 combine CMIP7 data +# for the historical period and CMIP6 data beyond 2023. +# This introduces a discontinuity in 2024. +# TODO: Add crop-global-future back when the CMIP7 data become available. +# See other corresponding crop-global-future comment elsewhere in this Makefile. crop-global-future : crop-global-SSP1-1.9-f09 \ crop-global-SSP1-2.6-f09 \ @@ -352,6 +356,7 @@ crop-global-SSP2-4.5-low-res : crop-global-SSP2-4.5-f10 \ crop-global-SSP2-4.5-ne3 # NOTE slevis 2025/9/10: For CTSM5.4, I moved to CROP because it spans 1979-2023: # crop-global-hist-vrandne120 +# When CMIP7 future scenario data become available, this will span 1979-2030. crop-global-SSP2-4.5 : crop-global-SSP2-4.5-f09 \ crop-global-SSP2-4.5-f19 \ crop-global-SSP2-4.5-hcru \ From 6c1cc2dc703508d9b173c592f3cb4077b858c3db Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 23 Oct 2025 15:47:17 -0600 Subject: [PATCH 088/108] CTSM5.4 updates to default_data_[1850,2000].cfg & modify_smallville.sh --- tools/modify_input_files/modify_smallville.sh | 12 ++++++------ tools/site_and_regional/default_data_1850.cfg | 8 ++++---- tools/site_and_regional/default_data_2000.cfg | 14 +++++++------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tools/modify_input_files/modify_smallville.sh b/tools/modify_input_files/modify_smallville.sh index 4dc7c58e9b..f4694e95c2 100755 --- a/tools/modify_input_files/modify_smallville.sh +++ b/tools/modify_input_files/modify_smallville.sh @@ -7,14 +7,14 @@ module load nco # This script runs from the mksurfdata_esmf/Makefile. # When running standalone, it may need "subset_data_single_point/" in front # of each landuse.timeseries file name. - file_to_2100="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-2100_78pfts_c$(date +%y%m%d).nc" - file_to_1855="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_c$(date +%y%m%d).nc" - file_lake="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynLakes_c$(date +%y%m%d).nc" - file_urban="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynUrban_c$(date +%y%m%d).nc" - file_pft="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynPft_c$(date +%y%m%d).nc" + file_whole="landuse.timeseries_1x1_smallvilleIA_hist_1850-2023_78pfts_c$(date +%y%m%d).nc" + file_to_1855="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_c$(date +%y%m%d).nc" + file_lake="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynLakes_c$(date +%y%m%d).nc" + file_urban="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynUrban_c$(date +%y%m%d).nc" + file_pft="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynPft_c$(date +%y%m%d).nc" # Trim the file to just the years 1850-1855 -ncks -d time,0,5 $file_to_2100 $file_to_1855 +ncks -d time,0,5 $file_whole $file_to_1855 # Replace all values in the LAKE and CROP variables ncap2 -s "PCT_LAKE=array(0.,0.,PCT_CROP); PCT_LAKE={0.,50.,25.,25.,25.,25.} ; PCT_LAKE_MAX=array(50.,50.,PCT_CROP_MAX); PCT_CROP=array(0.,0.,PCT_LAKE); PCT_CROP={0.,25.,12.,12.,12.,12.}; PCT_CROP_MAX=array(25.,25.,PCT_LAKE_MAX)" $file_to_1855 $file_lake diff --git a/tools/site_and_regional/default_data_1850.cfg b/tools/site_and_regional/default_data_1850.cfg index ce68b1debf..a86176acd8 100644 --- a/tools/site_and_regional/default_data_1850.cfg +++ b/tools/site_and_regional/default_data_1850.cfg @@ -15,12 +15,12 @@ precname = CLMCRUJRA2024.Precip tpqwname = CLMCRUJRA2024.TPQW [surfdat] -dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 -surfdat_78pft = surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 +surfdat_78pft = surfdata_0.9x1.25_hist_1850_78pfts_c251022.nc [landuse] -dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 -landuse_78pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 +landuse_78pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc [domain] file = share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc diff --git a/tools/site_and_regional/default_data_2000.cfg b/tools/site_and_regional/default_data_2000.cfg index 60c012561c..e43af3f7e3 100644 --- a/tools/site_and_regional/default_data_2000.cfg +++ b/tools/site_and_regional/default_data_2000.cfg @@ -1,5 +1,5 @@ [main] -clmforcingindir = /glade/campaign/cesm/cesmdata/cseg/inputdata +clmforcingindir = /glade/campaign/cesm/cesmdata/inputdata [datm] dir = atm/datm7/atm_forcing.datm7.CRUJRA.0.5d.c20241231/three_stream @@ -15,16 +15,16 @@ precname = CLMCRUJRA2024.Precip tpqwname = CLMCRUJRA2024.TPQW [surfdat] -dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 -surfdat_16pft = surfdata_0.9x1.25_hist_2000_16pfts_c240908.nc -surfdat_78pft = surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 +surfdat_16pft = surfdata_0.9x1.25_hist_2000_16pfts_c251022.nc +surfdat_78pft = surfdata_0.9x1.25_hist_2000_78pfts_c251022.nc mesh_dir = share/meshes/ mesh_surf = fv0.9x1.25_141008_ESMFmesh.nc [landuse] -dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 -landuse_16pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc -landuse_78pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 +landuse_16pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc +landuse_78pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc [domain] file = share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc From 05baeec9f35a42035c44d8ad755831b7f1e46cce Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 28 Oct 2025 15:41:02 -0600 Subject: [PATCH 089/108] Prevent IHist ne0np4 from ending up with SSP designation This was causing a ctsm_sci test to fail. IHist ne0np4 cases now stop in 2023 instead of continuing into SSP yrs since we do not have CMIP7 SSP data. --- cime_config/config_component.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 13140ad083..e991288cc5 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -238,7 +238,6 @@ Caveats: 1850-2100_SSP3-7.0_transient 1850-2100_SSP5-3.4_transient 1850-2100_SSP2-4.5_transient - 1850-2100_SSP2-4.5_transient 1850-2100_SSP1-1.9_transient 1850-2100_SSP4-3.4_transient 1850-2100_SSP4-6.0_transient From a94b45f5e311e2f4a91772e6591d00ca0e78eca0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 28 Oct 2025 15:47:04 -0600 Subject: [PATCH 090/108] Update fsurdat/landuse paths in namelist_defaults (WIP) --- bld/namelist_files/namelist_defaults_ctsm.xml | 170 +++++++++--------- 1 file changed, 87 insertions(+), 83 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index f6588d3ffe..20d6c5aac1 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1715,166 +1715,168 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa60_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa60_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa15_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa15_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa3p75_hist_2000_16pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa3p75_hist_2000_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_78pfts_c250916.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_brazil_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_5x5_amazon_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_5x5_amazon_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg2_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.125nldas2_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.125nldas2_hist_2000_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_T42_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_360x720cru_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_C96_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_numaIA_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_numaIA_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa480_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa120_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_2000_78pfts_c240925.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4_hist_2000_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg2_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne120np4.pg3_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4CONUS.ne30x8_hist_2000_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4CONUS.ne30x8_hist_2000_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_vancouverCAN_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_vancouverCAN_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_mexicocityMEX_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_mexicocityMEX_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_urbanc_alpha_synth_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_urbanc_alpha_synth_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_16pfts_c240926.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_16pfts_c241007.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_360x720cru_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa480_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa120_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c250723.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg2_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_1850_78pfts_c240925.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_C96_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_smallvilleIA_synth_hist_1850_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_smallvilleIA_synth_hist_1850_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2000_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_1850_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_brazil_hist_1850_78pfts_c251023.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne120np4.pg3_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_1850_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_1979_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_1979_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_1979_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_1979_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4CONUS.ne30x8_hist_1979_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4CONUS.ne30x8_hist_1979_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_PtVeg_nourb_1850_16pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_PtVeg_nourb_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/16PFT_mixed/surfdata_1x1_NEON_${NEONSITE}_hist_2000_16pfts_c240912.nc +lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/16PFT_mixed/surfdata_1x1_NEON_${NEONSITE}_hist_2000_16pfts_c251023.nc -lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_${NEONSITE}_hist_2000_78pfts_c240912.nc +lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_${NEONSITE}_hist_2000_78pfts_c251023.nc @@ -1882,66 +1884,68 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c240926.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c241007.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250723.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c250723.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4CONUS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4CONUS.ne30x8_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_SSP2-4.5_1850-2100_78pfts_c240908.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_10x15_SSP2-4.5_1850-2100_78pfts_c240908.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_10x15_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_360x720cru_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_360x720cru_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1x1_brazil_SSP2-4.5_1850-2100_78pfts_c240912.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1x1_brazil_hist_1850-2023_78pfts_c251023.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_mpasa120_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4_hist_1850-2023_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4.pg2_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4.pg3_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne16np4.pg3_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c250723.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_C96_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/landuse.timeseries_1x1_smallvilleIA_synth_1850-1855_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/landuse.timeseries_1x1_smallvilleIA_synth_1850-1855_78pfts_c251023.nc From 8325e76255b3dc9969379da25282503afe4af449 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 29 Oct 2025 09:44:44 -0600 Subject: [PATCH 091/108] Add/remove fsurdat/landuse paths according to the grids spreadsheet https://docs.google.com/spreadsheets/d/1Osq56e423CF107zhoNQ0VS7-iH_JXLF9AtCvBdXyfJ4/edit?usp=sharing --- bld/namelist_files/namelist_defaults_ctsm.xml | 45 +++++++++++++++---- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 35c97a5e06..49528abb14 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1734,8 +1734,12 @@ lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_2000_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_2000_16pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_2000_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa60_hist_2000_16pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa30_hist_2000_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa15_hist_2000_16pfts_c251022.nc @@ -1797,6 +1801,8 @@ lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_2000_78pfts_c251022. lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_2000_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_2000_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.NATL.ne30x8_hist_2000_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_2000_78pfts_c251022.nc @@ -1817,6 +1823,12 @@ lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_urbanc_alpha_synth_hist_ lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_16pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_16pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_1850_16pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_16pfts_c251022.nc @@ -1871,14 +1883,24 @@ lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_1850_78pfts_c251022. lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_1979_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.NATL.ne30x8_hist_1979_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_1979_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4CONUS.ne30x8_hist_1979_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_1979_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_PtVeg_nourb_1850_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_PtVeg_nourb_1850_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_PtVeg_nourb_1850_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_PtVeg_nourb_1850_16pfts_c251022.nc @@ -1905,6 +1927,12 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_10x15_hist_1850-2023_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_16pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_hist_1979-2023_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.NATL.ne30x8_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4CONUS.ne30x8_hist_1979-2023_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne120np4.pg3_hist_1979-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4.pg3_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne16np4.pg3_hist_1850-2023_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4_hist_1850-2023_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg2_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4CONUS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc - lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP3-7.0_1850-2100_78pfts_c240908.nc From a41b9c59d0f34f0f679d174864ec51c3e8409109 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 30 Oct 2025 16:37:49 -0600 Subject: [PATCH 092/108] CTSM5.4 updates to finidata (not all tests pass so troubleshooting) --- bld/namelist_files/namelist_defaults_ctsm.xml | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 49528abb14..83da36d03e 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1353,49 +1353,49 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_f09_121_1850.clm2.r.0041-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_f09_127_1850.clm2.r.0102-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_ne30_120_1850.clm2.r.0041-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_ne30_126_1850.clm2.r.0102-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_f09_121_HIST.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_f09_127_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_ne30_120_HIST.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_ne30_126_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_pSASU.clm2.r.0161-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_pSASU.clm2.r.0161-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm53065_54surfdata_PPEcal115_115_pSASU.clm2.r.0161-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f19_125_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.2000-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.2000-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.2000-01-01-00000.nc @@ -1539,13 +1539,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="20100101" sim_year="2010" use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." phys="clm6_0" ->lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.2010-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.2010-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.2010-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.2010-01-01-00000.nc @@ -1573,14 +1573,14 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="19790101" sim_year="1979" use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." phys="clm6_0" ->lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.1979-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.1979-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.1979-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.1979-01-01-00000.nc From ad7251dcd0ebb1496fae70a7fdfbec148bb39927 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 30 Oct 2025 17:31:59 -0600 Subject: [PATCH 093/108] hgrid="10x15" needed cmip6/cmip7 distinction for tests to pass --- bld/namelist_files/namelist_defaults_ctsm.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 83da36d03e..10f369be56 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1841,8 +1841,10 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc - + lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_1850_78pfts_c251022.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_78pfts_c251022.nc From 9104e372f457d71528993cf09d26f784865e2363 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 31 Oct 2025 16:30:56 -0600 Subject: [PATCH 094/108] Add back use_init_interp for failing f09 test, ne30 test This is temporary while fsurdat/landuse and finidat files are not entirely consistent. We plan to make them all consistent for clm6. --- bld/namelist_files/namelist_defaults_ctsm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 10f369be56..8d5eb56821 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1524,13 +1524,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.2000-01-01-00000.nc From db6c43ffbedb994a2251d2f10e58ff5c10f41249 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 31 Oct 2025 16:53:01 -0600 Subject: [PATCH 095/108] Additions in prep for the next PR where we add tests for new grids --- bld/namelist_files/namelist_defaults_ctsm.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 8d5eb56821..ba8ee5982d 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -785,6 +785,8 @@ attributes from the config_cache.xml file (with keys converted to upper-case). maxpft="17" use_cn=".false." use_crop=".false." hgrid="ne0np4.ARCTIC.ne30x4" >.true. .true. +.true. .true. .true. +.true. .true. .true. @@ -985,6 +989,10 @@ attributes from the config_cache.xml file (with keys converted to upper-case). hgrid="ne3np4.pg3" >hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. +hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. + - + hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. +hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. + +hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. + From a11cede8144b6dc829e799bc5121f29641e96a87 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 6 Nov 2025 14:17:18 -0700 Subject: [PATCH 096/108] Add ctsm_sci tests for new grids (ctsm5.4) --- bld/namelist_files/namelist_defaults_ctsm.xml | 13 +------ cime_config/testdefs/testlist_clm.xml | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index ba8ee5982d..6bd5c61579 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -785,8 +785,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case). maxpft="17" use_cn=".false." use_crop=".false." hgrid="ne0np4.ARCTIC.ne30x4" >.true. .true. -.true. .true. .true. -.true. .true. .true. @@ -1050,7 +1046,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). >hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. @@ -1209,11 +1205,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case). >hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. - - hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. @@ -1893,8 +1884,6 @@ lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_brazil_hist_1850_78pfts_c251023.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_1850_78pfts_c251022.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c251022.nc diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 4e9a8c222e..16e451ec33 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -411,6 +411,15 @@ + + + + + + + + + @@ -931,6 +940,15 @@ + + + + + + + + + @@ -1102,6 +1120,15 @@ + + + + + + + + + @@ -2513,6 +2540,16 @@ + + + + + + + + + + From 6d702a2549d892e29553691fe523e04122f6b5b0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 7 Nov 2025 10:54:29 -0700 Subject: [PATCH 097/108] namelist_defaults updates for ne120pg3 to pick up correct finidat --- bld/namelist_files/namelist_defaults_ctsm.xml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6bd5c61579..c38427cf60 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -785,6 +785,8 @@ attributes from the config_cache.xml file (with keys converted to upper-case). maxpft="17" use_cn=".false." use_crop=".false." hgrid="ne0np4.ARCTIC.ne30x4" >.true. .true. +.true. hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. +hgrid=ne120np4.pg3 maxpft=17 mask=tx0.1v3 use_cn=.false. use_crop=.false. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. @@ -1506,7 +1508,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case). >lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTICGRIS_ne30x8_mt12_simyr1979_c200806.nc - + +lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc + Date: Mon, 10 Nov 2025 11:41:29 -0700 Subject: [PATCH 098/108] fixes #3594 --- cime_config/config_component.xml | 2 +- python/ctsm/site_and_regional/tower_arg_parse.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index f869d0e362..b5ecf5ed57 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -418,7 +418,7 @@ char - v1,v2,v3,latest + v1,v2,v3,v4,latest latest run_component_ctsm env_run.xml diff --git a/python/ctsm/site_and_regional/tower_arg_parse.py b/python/ctsm/site_and_regional/tower_arg_parse.py index 33b3db2afa..10ede664db 100644 --- a/python/ctsm/site_and_regional/tower_arg_parse.py +++ b/python/ctsm/site_and_regional/tower_arg_parse.py @@ -195,7 +195,7 @@ def get_parser(args, description, valid_neon_sites, valid_plumber_sites): dest="user_version", required=False, type=str, - choices=["v1", "v2", "v3"], + choices=["v1", "v2", "v3", "v4"], ) parser.add_argument( From cc4ba8292715e3bb0e6b10a4aaa1ee4c57ce38de Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 10 Nov 2025 13:15:51 -0700 Subject: [PATCH 099/108] Add IHist test for the new ne3pg2 grid --- cime_config/testdefs/testlist_clm.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 16e451ec33..913580c77b 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -949,6 +949,15 @@ + + + + + + + + + From 69453b7556383116be491f47f74c2196940424de Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 14 Nov 2025 12:31:33 -0700 Subject: [PATCH 100/108] finidat update from code review, plus a typo correction So far no change in test-suite results (aux_clm and ctsm_sci). --- bld/namelist_files/namelist_defaults_ctsm.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index c38427cf60..46f3c3eeaf 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1220,8 +1220,8 @@ attributes from the config_cache.xml file (with keys converted to upper-case). hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=ne120np4.pg3 maxpft=17 mask=tx0.1v3 use_cn=.false. use_crop=.false. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. +hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. @@ -1508,15 +1508,15 @@ attributes from the config_cache.xml file (with keys converted to upper-case). >lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTICGRIS_ne30x8_mt12_simyr1979_c200806.nc - - +lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc From aae49a096ec581b210bb367beb724df149978fd1 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 14 Nov 2025 16:24:03 -0700 Subject: [PATCH 101/108] fsurdat validation tool --- .../mksurfdata_esmf/validate_fsurdat_files.sh | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 tools/mksurfdata_esmf/validate_fsurdat_files.sh diff --git a/tools/mksurfdata_esmf/validate_fsurdat_files.sh b/tools/mksurfdata_esmf/validate_fsurdat_files.sh new file mode 100755 index 0000000000..b1e68ad233 --- /dev/null +++ b/tools/mksurfdata_esmf/validate_fsurdat_files.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# Validation/verification of new fsurdat files +# -------------------------------------------- +# WRITTEN by slevis after discussions with ekluzek. +# DATE of original script 2025/11/11. +# +# LOCATION: I first used this script in the directory +# .../inputdata/lnd/clm2/surfdata_esmf/ctsm5.4.0/validation +# +# CAVEAT: For new CTSM versions, use this script as a template with the +# understanding that aspects of the code will need to change. +# +# PURPOSE and DETAILS +# ------------------- +# This script +# 1) uses cprnc to compare ctsm5.4 versus ctsm5.3 files by generating +# cprnc.out files. +# 2) greps for fields with differences (RMS or NORMALIZED) that are >=1. +# The strictest grep threshold that I found isolates potentially +# unexpected changes is E-03. I determined this empirically using two +# types of problematic fsurdat files from the recent past: +# - No LAI, SAI, and heights for pfts 15 and 16. +# - No soil textures in parts of the world in unstructured grids. +# These "unexpected" fields appear alongside expected diffs (discussed +# below) when grepping for E+. Grepping for less than E-03 starts to +# capture fields with smaller differences and is likely to miss +# unexpected problematic fields. +# +# Step after running the script +# ----------------------------- +# Interactively and iteratively build this grep command to confirm that +# all fields in the script's grep output are expected. This list of +# fields is ctsm5.4-specific: +# >>> grep NORM grep_E+_surfdata_cprnc.out | grep -v ROOF | grep -v WALL | grep -v URBAN | grep -v BUILDING | grep -v abm | grep -v CANYON | grep -v CONST_HARVEST | grep -v ROAD | grep -v UNREPRESENTED_PFT | grep -v PCT_NATVEG +# +# If the grep command reveals unexpected fields, investigate. +# +# ----------------------------- +# +# Separate subjective comparison +# ------------------------------ +# >>> ncdiff surfdata_new.nc surfdata_old.nc surfdata_new_vs_old.nc +# >>> ncview surfdata_new_vs_old.nc +# Focus on fields with larger RMS diffs in the cprnc output. +# For ctsm5.4 I got approval for expected diffs from +# - Keith Oleson for diffs in urban fields +# - Peter Lawrence for diffs in const_harvest, unrep_pft, pct_natveg, pct_nat_pft +# - Fang Li (a few months ago) for diffs in abm. +# ncvis works like ncview for unstructured grids (e.g. ne30), though it +# seems to crash when I give it a "diff" file generated by ncdiff. +# +# Another validation step +# ----------------------- +# Run mksurfdata_esmf with a different number of processors and confirm +# bit-for-bit same results. + +echo "starting grids loop" + +# The first loop of grids has different ctsm5.3 date stamp. +# Skip ne3np4.pg2 as present only in ctsm5.4. +grids=("ne3np4") + +for grid in "${grids[@]}" + + do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_1850_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_1850_78pfts_c240925.nc >& surfdata_$grid\_hist_1850_78pfts_ctsm5.4v5.3.cprnc.out + /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_78pfts_c240925.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + echo "done $grid" + +done + +# Second loop of grids. +grids=("4x5" "10x15" "0.9x1.25" "1.9x2.5" "mpasa120" "mpasa480" "ne16np4.pg3" "ne120np4.pg3" "ne3np4.pg3" "ne30np4" "ne30np4.pg2" "ne30np4.pg3") +for grid in "${grids[@]}" + + do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_1850_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_1850_78pfts_c240908.nc >& surfdata_$grid\_hist_1850_78pfts_ctsm5.4v5.3.cprnc.out + /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_78pfts_c240908.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + echo "done $grid" + +done + +# Third loop of grids. +# Skip mpasa30 as present only in ctsm5.4. +# Skip 1850 as only 2000 is present. +grids=("mpasa3p75" "mpasa15" "mpasa60") +for grid in "${grids[@]}" + + do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_16pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_16pfts_c240908.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + echo "done $grid" + +done + +# grep for E+ to catch larger diffs. +for file in surfdata_*cprnc.out + do grep -H NORM $file | grep 'E+' >> grep_E+_surfdata_cprnc.out +done + +exit From eca1eb0a2b435c094b525f335b650e2eddae6bf0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 18 Nov 2025 12:20:34 -0700 Subject: [PATCH 102/108] Revised validation tool based on Erik's code review --- .../mksurfdata_esmf/validate_fsurdat_files.sh | 74 +++++++++++++------ 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/tools/mksurfdata_esmf/validate_fsurdat_files.sh b/tools/mksurfdata_esmf/validate_fsurdat_files.sh index b1e68ad233..2158a30435 100755 --- a/tools/mksurfdata_esmf/validate_fsurdat_files.sh +++ b/tools/mksurfdata_esmf/validate_fsurdat_files.sh @@ -3,18 +3,18 @@ # Validation/verification of new fsurdat files # -------------------------------------------- # WRITTEN by slevis after discussions with ekluzek. -# DATE of original script 2025/11/11. # -# LOCATION: I first used this script in the directory +# LOCATION: slevis first used this script in the directory # .../inputdata/lnd/clm2/surfdata_esmf/ctsm5.4.0/validation # # CAVEAT: For new CTSM versions, use this script as a template with the -# understanding that aspects of the code will need to change. +# understanding that aspects of the code will need to change. Search +# the string "current" for items that may need to change in the future. # # PURPOSE and DETAILS # ------------------- # This script -# 1) uses cprnc to compare ctsm5.4 versus ctsm5.3 files by generating +# 1) uses cprnc to compare NEW_VERSION versus OLD_VERSION files by generating # cprnc.out files. # 2) greps for fields with differences (RMS or NORMALIZED) that are >=1. # The strictest grep threshold that I found isolates potentially @@ -31,10 +31,14 @@ # ----------------------------- # Interactively and iteratively build this grep command to confirm that # all fields in the script's grep output are expected. This list of -# fields is ctsm5.4-specific: +# fields here is ctsm5.4-specific: # >>> grep NORM grep_E+_surfdata_cprnc.out | grep -v ROOF | grep -v WALL | grep -v URBAN | grep -v BUILDING | grep -v abm | grep -v CANYON | grep -v CONST_HARVEST | grep -v ROAD | grep -v UNREPRESENTED_PFT | grep -v PCT_NATVEG # # If the grep command reveals unexpected fields, investigate. +# The list of fields to check depends on which fields you expect to have +# answer changes. The magnitude of the differences will depend on the +# specifics of what changed. Ensure you only see the answer changes that +# you expect. # # ----------------------------- # @@ -42,50 +46,74 @@ # ------------------------------ # >>> ncdiff surfdata_new.nc surfdata_old.nc surfdata_new_vs_old.nc # >>> ncview surfdata_new_vs_old.nc -# Focus on fields with larger RMS diffs in the cprnc output. -# For ctsm5.4 I got approval for expected diffs from -# - Keith Oleson for diffs in urban fields -# - Peter Lawrence for diffs in const_harvest, unrep_pft, pct_natveg, pct_nat_pft -# - Fang Li (a few months ago) for diffs in abm. -# ncvis works like ncview for unstructured grids (e.g. ne30), though it -# seems to crash when I give it a "diff" file generated by ncdiff. +# - Focus on fields with larger RMS diffs in the cprnc output. +# - ncvis works like ncview for unstructured grids (e.g. ne30), though +# slevis found ncvis to crash when reading a "diff" file generated by ncdiff. # # Another validation step # ----------------------- # Run mksurfdata_esmf with a different number of processors and confirm # bit-for-bit same results. +# Settings to be used in the comparisons below. +# Paths are hardwired to derecho currently. +newdatestamp=c251022 # USER DEFINED +newdir=ctsm5.4.0 # USER DEFINED +olddir=ctsm5.3.0 # USER DEFINED +olddatestamp=c240908 # USER DEFINED +olddatestamp_ne3np4=c240925 # USER DEFINED +cimetoolspath=/glade/campaign/cesm/cesmdata/cseg/tools/cime/tools +CPRNC=$cimetoolspath/cprnc/cprnc + echo "starting grids loop" -# The first loop of grids has different ctsm5.3 date stamp. -# Skip ne3np4.pg2 as present only in ctsm5.4. +# The first loop of grids (unlike the other loops) uses olddatestamp_ne3np4 currently. +# Skip ne3np4.pg2 as present only in NEW_VERSION currently so may wish to add in future versions. grids=("ne3np4") for grid in "${grids[@]}" - do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_1850_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_1850_78pfts_c240925.nc >& surfdata_$grid\_hist_1850_78pfts_ctsm5.4v5.3.cprnc.out - /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_78pfts_c240925.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + # 1850_78pft files + do $CPRNC ../surfdata_$grid\_hist_1850_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1850_78pfts_$olddatestamp_ne3np4.nc >& surfdata_$grid\_hist_1850_78pfts_$newdir\_vs_$olddir.cprnc.out + # 2000_78pft files + $CPRNC ../surfdata_$grid\_hist_2000_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_78pfts_$olddatestamp_ne3np4.nc >& surfdata_$grid\_hist_2000_78pfts_$newdir\_vs_$olddir.cprnc.out echo "done $grid" done # Second loop of grids. -grids=("4x5" "10x15" "0.9x1.25" "1.9x2.5" "mpasa120" "mpasa480" "ne16np4.pg3" "ne120np4.pg3" "ne3np4.pg3" "ne30np4" "ne30np4.pg2" "ne30np4.pg3") +grids=("C96" "360x720cru" "4x5" "10x15" "0.9x1.25" "1.9x2.5" "mpasa120" "mpasa480" "ne16np4.pg3" "ne120np4.pg3" "ne3np4.pg3" "ne30np4" "ne30np4.pg2" "ne30np4.pg3") for grid in "${grids[@]}" - do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_1850_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_1850_78pfts_c240908.nc >& surfdata_$grid\_hist_1850_78pfts_ctsm5.4v5.3.cprnc.out - /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_78pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_78pfts_c240908.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + # 1850_78pft files + do $CPRNC ../surfdata_$grid\_hist_1850_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1850_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_1850_78pfts_$newdir\_vs_$olddir.cprnc.out + # 2000_78pft files + $CPRNC ../surfdata_$grid\_hist_2000_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_2000_78pfts_$newdir\_vs_$olddir.cprnc.out echo "done $grid" done # Third loop of grids. -# Skip mpasa30 as present only in ctsm5.4. -# Skip 1850 as only 2000 is present. -grids=("mpasa3p75" "mpasa15" "mpasa60") +# Skip 1850 as only 2000 is present currently. +# Skip mpasa30 as present only in NEW_VERSION currently so may wish to add in future versions. +# Skip mpasa3p75 because cprnc runs out of memory at that resolution currently. +grids=("mpasa60" "mpasa15") +for grid in "${grids[@]}" + + # 2000_16pft files + do $CPRNC ../surfdata_$grid\_hist_2000_16pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_16pfts_$olddatestamp.nc >& surfdata_$grid\_hist_2000_16pfts_$newdir\_vs_$olddir.cprnc.out + echo "done $grid" + +done + +# Fourth loop of grids: for 1979 files. +# Skip ne0np4.NATL.ne30x8 and ne120np4.pg3 as present only in NEW_VERSION currently so may wish to add in future versions. +grids=("ne0np4.ARCTICGRIS.ne30x8" "ne0np4.ARCTIC.ne30x4" "ne0np4CONUS.ne30x8" "ne0np4.POLARCAP.ne30x4") + for grid in "${grids[@]}" - do /glade/campaign/cesm/cesmdata/cseg/tools/cime/tools/cprnc/cprnc ../surfdata_$grid\_hist_2000_16pfts_c251022.nc ../../ctsm5.3.0/surfdata_$grid\_hist_2000_16pfts_c240908.nc >& surfdata_$grid\_hist_2000_78pfts_ctsm5.4v5.3.cprnc.out + # 1979_78pft files + do $CPRNC ../surfdata_$grid\_hist_1979_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1979_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_1979_78pfts_$newdir\_vs_$olddir.cprnc.out echo "done $grid" done From 669a651b41012a74c7288534299c392a577f28cc Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 20 Nov 2025 15:32:48 -0700 Subject: [PATCH 103/108] Update default CRU-JRA stream_fldfilename_cultivar_gdds. Derived from half-degree run started 1959-01-01, forced with CRU-JRA, at tag alpha-ctsm5.4.CMIP7.15.ctsm5.3.079. Growing seasons defined by files [sh]dates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.nc. Maximum growing season length in generate_gdds.py derived from mxmat in clm60_params.crop_omni02.c251120.nc with no 'cushion'. generate_gdds.py first season 1995 and last season 2005. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 46f3c3eeaf..3ccf8ab3b6 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2230,7 +2230,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 -lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/cultivar_gdds.c251120.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc From f03f38367a5a6f939c4ee8308db908b511e5f7a6 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 20 Nov 2025 15:54:15 -0700 Subject: [PATCH 104/108] Update default CRU-JRA stream_fldFileName_gdd20_baseline. Derived from half-degree run started 1959-01-01, forced with CRU-JRA, at tag alpha-ctsm5.4.CMIP7.15.ctsm5.3.079. generate_gdd20_baseline -v GDDB20 -y1 1995 -yN 2005. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 3ccf8ab3b6..5dfd73094a 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2245,7 +2245,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/cropdata/calendars/processed/360x720_120830_ESMFmesh_c20210507_cdf5.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdd20_baseline.c251120.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdd20bl.copied_from.gdds_20230829_161011.v2.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/sdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/hdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc From 8547e796139f6703eedcf95caba6e42e3f64cff5 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 20 Nov 2025 16:20:15 -0700 Subject: [PATCH 105/108] Update clm6 paramfile: omni02 crop params. --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 5dfd73094a..e9a6d76a91 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -572,7 +572,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/clm60_params.ctsm6_li2024.c250822.nc +lnd/clm2/paramdata/clm60_params.crop_omni02.c251120.nc lnd/clm2/paramdata/clm50_params.c250311.nc lnd/clm2/paramdata/clm45_params.c250311.nc From cb95678630e570239aaf346627d1b620111031fc Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 20 Nov 2025 16:56:55 -0700 Subject: [PATCH 106/108] Use old stream_fldFileName_gdd20_baseline for GSWP3 tunings. --- bld/namelist_files/namelist_defaults_ctsm.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index e9a6d76a91..6ef265e6d4 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2246,6 +2246,9 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdd20_baseline.c251120.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdd20bl.copied_from.gdds_20230829_161011.v2.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/sdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/hdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc From 368b3d0657b58ff29195d486a4ffbd0198ff5c36 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 21 Nov 2025 10:04:13 -0700 Subject: [PATCH 107/108] CLMBuildNamelist: Account for lnd_tuning_mode in setting stream_fldFileName_gdd20_baseline. --- bld/CLMBuildNamelist.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index d83eaf088d..642bd7c2e4 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -4401,7 +4401,7 @@ sub setup_logic_cropcal_streams { 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'} ); if ( &value_is_true($cropcals_rx_adapt) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_gdd20_baseline', 'stream_gdd20_seasons'=>$stream_gdd20_seasons); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_gdd20_baseline', 'stream_gdd20_seasons'=>$stream_gdd20_seasons, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}); } } From eb684001256ad18f451eca8d25c33ff9a5acff20 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 25 Nov 2025 17:58:54 -0700 Subject: [PATCH 108/108] Revert "Merge remote-tracking branch 'escomp/post-5.4' into NEON_v4" This reverts commit 409e5893a03d328421a8bd54a3fa55ec19322292, reversing changes made to 81f5dda9dd9d6c2d4195f0359d3ecb2f3bdd7873. --- .gitmodules | 2 +- bld/CLMBuildNamelist.pm | 21 +- bld/namelist_files/namelist_defaults_ctsm.xml | 376 +++++++----------- bld/unit_testers/build-namelist_test.pl | 55 +-- ccs_config | 2 +- cime_config/config_component.xml | 20 +- cime_config/testdefs/ExpectedTestFails.xml | 75 ++-- cime_config/testdefs/testlist_clm.xml | 46 --- .../gen_mksurfdata_jobscript_multi.py | 100 ++--- .../gen_mksurfdata_jobscript_single.py | 2 +- src/biogeochem/CNFireLi2024Mod.F90 | 37 +- tools/mksurfdata_esmf/Makefile | 86 +--- tools/mksurfdata_esmf/README.md | 1 - .../gen_mksurfdata_namelist.xml | 33 +- .../modify_1x1_urbanc_alpha.cfg | 2 - .../src/mkagfirepkmonthMod.F90 | 31 +- tools/mksurfdata_esmf/src/mksurfdata.F90 | 4 +- .../mksurfdata_esmf/validate_fsurdat_files.sh | 126 ------ tools/modify_input_files/modify_smallville.sh | 12 +- tools/site_and_regional/default_data_1850.cfg | 8 +- tools/site_and_regional/default_data_2000.cfg | 14 +- 21 files changed, 328 insertions(+), 725 deletions(-) delete mode 100755 tools/mksurfdata_esmf/validate_fsurdat_files.sh diff --git a/.gitmodules b/.gitmodules index 3ac408352f..2abc02aa48 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,7 +68,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/mizuRoute [submodule "ccs_config"] path = ccs_config url = https://github.com/ESMCI/ccs_config_cesm.git -fxtag = ccs_config_cesm1.0.61_add_domain_ne3np4.pg2_1 +fxtag = ccs_config_cesm1.0.61 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 642bd7c2e4..8cc5b25187 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -735,14 +735,6 @@ sub setup_cmdl_resolution { $log->verbose_message( "This is NOT a NEON site" ); } - # - # To determine CMIP era - # TODO slevis: Ideally this line would occupy a new subroutine, e.g. - # subr. process_envxml_flags that would get called from - # process_namelist_user_input. This would allow other such - # XML variables to be set in the same place in the future (issue #3547). - $nl_flags->{'cmip_era'} = $envxml_ref->{'CLM_CMIP_ERA'}; - } #------------------------------------------------------------------------------- @@ -2375,7 +2367,6 @@ sub setup_logic_urban { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_hac'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_explicit_ac'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_traffic'); - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'init_interp_fill_missing_urban_with_HD'); } #------------------------------------------------------------------------------- @@ -2522,13 +2513,11 @@ sub setup_logic_demand { # For landuse.timeseries try with crop on first eise try with exact settings # Logic for this is identical for fsurdat if ( $item eq "flanduse_timeseries" ) { - $settings{'cmip_era'} = $nl_flags->{'cmip_era'}; $settings{'use_crop'} = ".true."; $settings{'nofail'} = 1; } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $item, %settings ); if ( $item eq "flanduse_timeseries" ) { - $settings{'cmip_era'} = $nl_flags->{'cmip_era'}; $settings{'nofail'} = 0; $settings{'use_crop'} = $nl_flags->{'use_crop'}; if ( ! defined($nl->get_value( $item )) ) { @@ -2578,7 +2567,6 @@ sub setup_logic_surface_dataset { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var, 'hgrid'=>$nl_flags->{'res'}, 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'neon'=>$nl_flags->{'neon'}, 'neonsite'=>$nl_flags->{'neonsite'}, - 'cmip_era'=>$nl_flags->{'cmip_era'}, 'sim_year'=>$nl_flags->{'sim_year'}, 'use_vichydro'=>$nl_flags->{'use_vichydro'}, 'use_crop'=>".true.", 'use_fates'=>$nl_flags->{'use_fates'}, 'nofail'=>1); } @@ -2592,7 +2580,6 @@ sub setup_logic_surface_dataset { 'hgrid'=>$nl_flags->{'res'}, 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'use_vichydro'=>$nl_flags->{'use_vichydro'}, 'sim_year'=>$nl_flags->{'sim_year'}, 'use_fates'=>$nl_flags->{'use_fates'}, 'neon'=>$nl_flags->{'neon'}, 'neonsite'=>$nl_flags->{'neonsite'}, - 'cmip_era'=>$nl_flags->{'cmip_era'}, 'use_crop'=>$nl_flags->{'use_crop'} ); } # @@ -4397,11 +4384,9 @@ sub setup_logic_cropcal_streams { if ( &value_is_true($cropcals_rx) or &value_is_true($cropcals_rx_adapt) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_swindow_start'); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_swindow_end'); - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_cultivar_gdds', - 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'} - ); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_cultivar_gdds'); if ( &value_is_true($cropcals_rx_adapt) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_gdd20_baseline', 'stream_gdd20_seasons'=>$stream_gdd20_seasons, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldFileName_gdd20_baseline', 'stream_gdd20_seasons'=>$stream_gdd20_seasons); } } @@ -5461,7 +5446,7 @@ sub add_default { " Are defaults provided for this resolution and land mask?" ); } else { $log->fatal_error("No default value found for $var.\n" . - " Are defaults provided in namelist_defaults for this resolution, land mask, and CLM_CMIP_ERA (set in env_run.xml)?"); + " Are defaults provided for this resolution and land mask?"); } } else { diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6ef265e6d4..1bb029844c 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -280,13 +280,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case). li2014qianfrc 90.d00 +4.0d00 1.8d00 0.3d00 1.0d00 -4.0d00 -3.0d00 - 30.0d00 80.0d00 0.3d00 @@ -385,7 +383,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 80.0d00 0.85d00 0.98d00 -0.04d00 +0.01d00 0.28d-4 0.010d00 0.71d-4 @@ -404,11 +402,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 85.0d00 0.85d00 0.98d00 -0.03d00 +0.01d00 0.28d-4 0.010d00 0.71d-4 -0.34d00 +0.3d00 0.33d00 75.d00 825.d00 @@ -572,7 +570,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/clm60_params.crop_omni02.c251120.nc +lnd/clm2/paramdata/ctsm60_params_cal115_c250813.nc lnd/clm2/paramdata/clm50_params.c250311.nc lnd/clm2/paramdata/clm45_params.c250311.nc @@ -785,8 +783,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case). maxpft="17" use_cn=".false." use_crop=".false." hgrid="ne0np4.ARCTIC.ne30x4" >.true. .true. -.true. hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. - hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. @@ -1207,22 +1199,21 @@ attributes from the config_cache.xml file (with keys converted to upper-case). >hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. +hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. + + hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. - + hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. -hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. - -hgrid=ne120np4.pg3 maxpft=79 mask=tx0.1v3 use_cn=.true. use_crop=.true. irrigate=.true. glc_nec=10 do_transient_pfts=.false. use_excess_ice=.false. - @@ -1323,7 +1314,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.3/clmi.interp_from.I1850Clm50BgcCrop-ciso.1366-01-01.0.9x1.25_gx1v7_simyr1850_c240223.nc @@ -1360,49 +1351,49 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_f09_127_1850.clm2.r.0102-01-01-00000.nc + phys="clm6_0" use_init_interp=".true." +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_f09_121_1850.clm2.r.0041-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_ne30_126_1850.clm2.r.0102-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_ne30_120_1850.clm2.r.0041-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_f09_127_HIST.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_f09_121_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_SP_ne30_126_HIST.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_SP_ne30_120_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_pSASU.clm2.r.0161-01-01-00000.nc + phys="clm6_0" use_init_interp=".true." +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_pSASU.clm2.r.0161-01-01-00000.nc + phys="clm6_0" use_init_interp=".true." +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f19_125_pSASU.clm2.r.0161-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53065_54surfdata_PPEcal115_115_pSASU.clm2.r.0161-01-01-00000.nc lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTICGRIS_ne30x8_mt12_simyr1979_c200806.nc - -lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc - + lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc @@ -1537,14 +1522,14 @@ attributes from the config_cache.xml file (with keys converted to upper-case). lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.2000-01-01-00000.nc + phys="clm6_0" +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.2000-01-01-00000.nc @@ -1552,13 +1537,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="20100101" sim_year="2010" use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." phys="clm6_0" ->lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.2010-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.2010-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.2010-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.2010-01-01-00000.nc @@ -1586,14 +1571,14 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="19790101" sim_year="1979" use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." phys="clm6_0" ->lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_f09_124_HIST.clm2.r.1979-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115f09_118_HIST.clm2.r.1979-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4.CMIP7_ciso_ctsm5.3.075_ne30_123_HIST_popDens.clm2.r.1979-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm5.4_5.3.068_PPEcal115_116_HIST.clm2.r.1979-01-01-00000.nc @@ -1740,190 +1725,158 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_2000_16pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa60_hist_2000_16pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa30_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa60_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa15_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa15_hist_2000_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa3p75_hist_2000_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa3p75_hist_2000_16pfts_c240908.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_2000_78pfts_c251022.nc - + lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_brazil_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_5x5_amazon_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_5x5_amazon_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg2_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.125nldas2_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.125nldas2_hist_2000_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_T42_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_360x720cru_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_C96_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_numaIA_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_numaIA_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa480_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa120_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4_hist_2000_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg2_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_2000_78pfts_c240925.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne120np4.pg3_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_2000_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.NATL.ne30x8_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4CONUS.ne30x8_hist_2000_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4CONUS.ne30x8_hist_2000_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_vancouverCAN_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_vancouverCAN_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_mexicocityMEX_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_mexicocityMEX_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_urbanc_alpha_synth_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_urbanc_alpha_synth_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_16pfts_c240926.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_16pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_16pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_1850_16pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_16pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_16pfts_c241007.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_360x720cru_hist_1850_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c251022.nc - +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_1850_78pfts_c240908.nc + lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_hist_1850_78pfts_c251022.nc - + lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_10x15_hist_1850_78pfts_c251022.nc - + lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_10x15_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_4x5_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa480_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_mpasa120_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c251022.nc - +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.nc + lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4.pg2_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne3np4_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_1850_78pfts_c240925.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_C96_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_smallvilleIA_synth_hist_1850_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_smallvilleIA_synth_hist_1850_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2000_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1x1_brazil_hist_1850_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_1850_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne120np4.pg3_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTICGRIS.ne30x8_hist_1979_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_1979_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.NATL.ne30x8_hist_1979_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.ARCTIC.ne30x4_hist_1979_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_1979_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4.POLARCAP.ne30x4_hist_1979_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne0np4CONUS.ne30x8_hist_1979_78pfts_c251022.nc - -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne120np4.pg3_hist_1979_78pfts_c251022.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne0np4CONUS.ne30x8_hist_1979_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_PtVeg_nourb_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_1.9x2.5_PtVeg_nourb_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne16np4.pg3_PtVeg_nourb_1850_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_PtVeg_nourb_1850_16pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_PtVeg_nourb_1850_16pfts_c240908.nc -lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/16PFT_mixed/surfdata_1x1_NEON_${NEONSITE}_hist_2000_16pfts_c251023.nc +lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/16PFT_mixed/surfdata_1x1_NEON_${NEONSITE}_hist_2000_16pfts_c240912.nc -lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_${NEONSITE}_hist_2000_78pfts_c251023.nc +lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_${NEONSITE}_hist_2000_78pfts_c240912.nc @@ -1931,82 +1884,60 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c251022.nc + >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_10x15_hist_1850-2023_16pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_16pfts_c251022.nc + >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_hist_1850-2023_16pfts_c241007.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1.9x2.5_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_hist_1979-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_hist_1979-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.NATL.ne30x8_hist_1979-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_hist_1979-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne0np4CONUS.ne30x8_hist_1979-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne120np4.pg3_hist_1979-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4CONUS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_4x5_hist_1850-2023_78pfts_c251022.nc + >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_10x15_hist_1850-2023_78pfts_c251022.nc + >lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_10x15_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_360x720cru_hist_1850-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_360x720cru_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_1x1_brazil_hist_1850-2023_78pfts_c251023.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1x1_brazil_SSP2-4.5_1850-2100_78pfts_c240912.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_mpasa120_hist_1850-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4.pg2_hist_1850-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne3np4.pg3_hist_1850-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne16np4.pg3_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg2_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c251022.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_C96_hist_1850-2023_78pfts_c251022.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.4.0/synthetic/landuse.timeseries_1x1_smallvilleIA_synth_1850-1855_78pfts_c251023.nc +>lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/landuse.timeseries_1x1_smallvilleIA_synth_1850-1855_78pfts_c240908.nc @@ -2014,52 +1945,61 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP1-2.6_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_4x5_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_10x15_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_360x720cru_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1x1_brazil_SSP2-4.5_1850-2100_78pfts_c240912.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTICGRIS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.ARCTIC.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4.POLARCAP.ne30x4_SSP2-4.5_1979-2026_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne0np4CONUS.ne30x8_SSP2-4.5_1979-2026_78pfts_c240908.nc + -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP3-7.0_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP4-6.0_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_0.9x1.25_SSP5-8.5_1850-2100_78pfts_c240908.nc @@ -2229,32 +2169,20 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 2000 2000 - -lnd/clm2/cropdata/calendars/processed/cultivar_gdds.c251120.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20250809_025305.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc - lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/360x720_120830_ESMFmesh_c20210507_cdf5.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000.20231005_145103.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/gdd20_baseline.c251120.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc -lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/gdds_20230829_161011.tweaked_latlons.nc +lnd/clm2/cropdata/calendars/processed/20230714_cropcals_pr2_1deg.actually2deg.1980-2009.from_GDDB20.interpd_halfdeg.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/gdd20bl.copied_from.gdds_20230829_161011.v2.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/sdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/hdates_ggcmi_crop_calendar_phase3_v1.01_nninterp-hcru_hcru_mt13.2000-2000.20230728_165845.tweaked_latlons.nc lnd/clm2/cropdata/calendars/processed/360x720_120830_ESMFmesh_c20210507_cdf5.tweaked_latlons.nc - none @@ -2348,8 +2276,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc -lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc +lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc + lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc @@ -2366,8 +2294,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/firedata/clmforc.Li_2018_SSP2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc -lnd/clm2/firedata/clmforc.Li_2025_CMIP7_SSP3CMIP6_hdm_0.5x0.5_simyr1850-2100_c250717.nc -lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc +lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc + lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc lnd/clm2/firedata/clmforc.Li_2018_SSP4_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc @@ -2668,10 +2596,6 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 general - -.true. - diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index 725a5defff..ac5956506f 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -42,7 +42,7 @@ sub make_env_run { my %settings = @_; # Set default settings - my %env_vars = ( DIN_LOC_ROOT=>"MYDINLOCROOT", GLC_TWO_WAY_COUPLING=>"FALSE", LND_SETS_DUST_EMIS_DRV_FLDS=>"TRUE", NEONSITE=>"", PLUMBER2SITE=>"", CLM_CMIP_ERA=>"cmip7" ); + my %env_vars = ( DIN_LOC_ROOT=>"MYDINLOCROOT", GLC_TWO_WAY_COUPLING=>"FALSE", LND_SETS_DUST_EMIS_DRV_FLDS=>"TRUE", NEONSITE=>"", PLUMBER2SITE=>"" ); # Set any settings that came in from function call foreach my $item ( keys(%settings) ) { $env_vars{$item} = $settings{$item}; @@ -163,7 +163,7 @@ sub cat_and_create_namelistinfile { # # Figure out number of tests that will run # -my $ntests = 3396; +my $ntests = 3394; if ( defined($opts{'compare'}) ) { $ntests += 2061; @@ -261,7 +261,7 @@ sub cat_and_create_namelistinfile { my $options = "-co2_ppmv 250 "; $options .= " -res 10x15 -ssp_rcp SSP2-4.5 -envxml_dir ."; - &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); + &make_env_run(); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "options: $options" ); $cfiles->checkfilesexist( "default", $mode ); @@ -567,35 +567,14 @@ sub cat_and_create_namelistinfile { $phys = "clm5_0"; $mode = "-phys $phys"; &make_config_cache($phys); -# Four tests that require CLM_CMIP_ERA set to cmip6 foreach my $options ( "--res 0.9x1.25 --bgc sp --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=18501223/'", - "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", - "--res 1.9x2.5 --bgc bgc --use_case 1850_control --namelist '&a start_ymd=18500101/'", - "--res 1.9x2.5 --bgc bgc --use_case 20thC_transient --namelist '&a start_ymd=18500101/'", - ) { - my $file = $startfile; - &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); - eval{ system( "$bldnml -envxml_dir . $options > $tempfile 2>&1 " ); }; - is( $@, '', "options: $options" ); - $cfiles->checkfilesexist( "$options", $mode ); - $cfiles->shownmldiff( "default", $mode ); - if ( defined($opts{'compare'}) ) { - $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode ); - $cfiles->dodiffonfile( "lnd_in", "$options", $mode ); - $cfiles->comparefiles( "$options", $mode, $opts{'compare'} ); - } - if ( defined($opts{'generate'}) ) { - $cfiles->copyfiles( "$options", $mode ); - } - &cleanup(); -} -foreach my $options ( "-bgc fates -use_case 2000_control -no-megan", "-bgc fates -use_case 20thC_transient -no-megan", "-bgc fates -use_case 20thC_transient -no-megan -no-crop --res 4x5", "-bgc fates -use_case 1850_control -no-megan -namelist \"&a use_fates_sp=T, soil_decomp_method='None'/\"", "-bgc sp -use_case 2000_control -res 0.9x1.25 -namelist '&a use_soil_moisture_streams = T/'", + "--res 1.9x2.5 --bgc bgc --use_case 1850-2100_SSP2-4.5_transient --namelist '&a start_ymd=19101023/'", "-namelist \"&a dust_emis_method='Zender_2003', zender_soil_erod_source='lnd' /'\"", "-bgc bgc -use_case 2000_control -namelist \"&a fire_method='nofire'/\" -crop", "-res 0.9x1.25 -bgc sp -use_case 1850_noanthro_control -drydep", @@ -632,11 +611,6 @@ sub cat_and_create_namelistinfile { system( "touch $finidat" ); my %failtest = ( - "cmip7_w_issp" =>{ options=>"-envxml_dir . -use_case 1850-2100_SSP2-4.5_transient", - namelst=>"", - CLM_CMIP_ERA=>"cmip7", - phys=>"clm6_0", - }, "coldstart but with IC file"=>{ options=>"-clm_start_type cold -envxml_dir .", namelst=>"finidat='$finidat'", phys=>"clm5_0", @@ -1172,7 +1146,7 @@ sub cat_and_create_namelistinfile { namelst=>"use_fates_lupft=.true.", phys=>"clm4_5", }, - "useFATESLUH2fileDNE" =>{ options=>"-bgc fates -envxml_dir . -no-megan", + "inventoryfileDNE" =>{ options=>"-bgc fates -envxml_dir . -no-megan", namelst=>"use_fates_luh=.true., fluh_timeseries='zztop'", phys=>"clm4_5", }, @@ -1387,7 +1361,7 @@ sub cat_and_create_namelistinfile { my $options = $failtest{$key}{"options"}; my $namelist = $failtest{$key}{"namelst"}; my %settings; - foreach my $xmlvar ( "GLC_TWO_WAY_COUPLING", "LND_SETS_DUST_EMIS_DRV_FLDS", "CLM_CMIP_ERA") { + foreach my $xmlvar ( "GLC_TWO_WAY_COUPLING", "LND_SETS_DUST_EMIS_DRV_FLDS") { if ( defined($failtest{$key}{$xmlvar}) ) { $settings{$xmlvar} = $failtest{$key}{$xmlvar}; } @@ -1637,7 +1611,7 @@ sub cat_and_create_namelistinfile { foreach my $usecase ( @usecases ) { print "usecase = $usecase\n"; $options = "-res 0.9x1.25 -use_case $usecase -envxml_dir ."; - &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); + &make_env_run(); my $expect_fail = undef; foreach my $failusecase ( @expect_fails ) { if ( $failusecase eq $usecase ) { @@ -1858,21 +1832,15 @@ sub cat_and_create_namelistinfile { my $startymd = undef; if ( ($usecase eq "1850_control") || ($usecase eq "20thC_transient") ) { $startymd = 18500101; - &make_env_run(); } elsif ( $usecase eq "2000_control") { $startymd = 20000101; - &make_env_run(); } elsif ( $usecase eq "2010_control") { $startymd = 20100101; - &make_env_run(); - } elsif ( $usecase =~ "2100_SSP") { - $startymd = 20150101; - &make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); } else { $startymd = 20150101; - &make_env_run(); } $options = "-bgc bgc -res $res -use_case $usecase -envxml_dir . -namelist '&a start_ymd=$startymd/'"; + &make_env_run(); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "$options" ); $cfiles->checkfilesexist( "$options", $mode ); @@ -1909,11 +1877,11 @@ sub cat_and_create_namelistinfile { } # Transient ssp_rcp scenarios that work my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); -my $startymd = 20150101; -&make_env_run( 'CLM_CMIP_ERA'=>"cmip6" ); foreach my $usecase ( "1850-2100_SSP2-4.5_transient" ) { + my $startymd = 20150101; foreach my $res ( @tran_res ) { $options = "-res $res -bgc bgc -crop -use_case $usecase -envxml_dir . -namelist '&a start_ymd=$startymd/'"; + &make_env_run(); eval{ system( "$bldnml $options > $tempfile 2>&1 " ); }; is( $@, '', "$options" ); $cfiles->checkfilesexist( "$options", $mode ); @@ -2046,8 +2014,7 @@ sub cat_and_create_namelistinfile { foreach my $bgc ( "sp", "bgc" ) { my $lndtuningmode = "${phys}_${forc}"; if ( $lndtuningmode eq "clm6_0_CRUv7" or - $lndtuningmode eq "clm4_5_CRUJRA2024" or - $lndtuningmode eq "clm5_0_CRUJRA2024") { + $lndtuningmode eq "clm4_5_CRUJRA2024") { next; } my $clmoptions = "-res $res -mask $mask -sim_year $simyr -envxml_dir . -lnd_tuning_mod $lndtuningmode -bgc $bgc"; diff --git a/ccs_config b/ccs_config index d686615fac..b20a207bc9 160000 --- a/ccs_config +++ b/ccs_config @@ -1 +1 @@ -Subproject commit d686615faceac30705b199f592808e3558ac176b +Subproject commit b20a207bc918b956b8dad44c14c4471aff9331ee diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 2860165114..b5ecf5ed57 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -156,25 +156,6 @@ This is typically set by the compset. - - char - cmip6,cmip7 - cmip7 - - cmip6 - - run_component_ctsm - env_run.xml - Whether to use CMIP6 or CMIP7 fsurdat/landuse files. - As of ctsm5.4 we do not have CMIP7 PFT raw datasets for SSPs, so default to CMIP6 for these. For other compsets default to CMIP7. User may modify to a non-default value in env_run.xml. -Caveats: -1) We supply only CMIP7 C13/C14 isotope datasets, so these get used regardless. -2) We supply only CMIP7 population density with ctsm6 in non-SSP cases, because the fire model is calibrated to that; conversely, for pre-ctsm6 and for SSP we supply only CMIP6 population density. -3) We supply only CMIP6 nitrogen deposition (ndep), so this gets used regardless. -4) For DATM we supply only CMIP6 aerosols. -5) For DATM we supply only CMIP6 CO2 - - logical @@ -238,6 +219,7 @@ Caveats: 1850-2100_SSP3-7.0_transient 1850-2100_SSP5-3.4_transient 1850-2100_SSP2-4.5_transient + 1850-2100_SSP2-4.5_transient 1850-2100_SSP1-1.9_transient 1850-2100_SSP4-3.4_transient 1850-2100_SSP4-6.0_transient diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index d21fc39c42..1acc725738 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -29,13 +29,42 @@ - + FAIL - #3529 - We will generate new fsurdat files with the new raw lai file to resolve this issue. + #3311 + Requires finidat with c13/c14 to PASS + + + FAIL + #3311 + Requires finidat with c13/c14 to PASS + + + + + FAIL + #3311 + Requires finidat with c13/c14 to PASS + + + + + FAIL + #3311 + Requires finidat with c13/c14 to PASS + + + + + FAIL + #3311 + Requires finidat with c13/c14 to PASS + + + FAIL @@ -69,12 +98,6 @@ - - - FAIL - #3495 - - FAIL @@ -93,6 +116,20 @@ #3454 + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + FAIL @@ -170,6 +207,10 @@ + + FAIL + #3182 + FAIL #3182 @@ -338,22 +379,6 @@ - - - FAIL - #3252 - This should be resolved for the 5.4 release. - - - - - - FAIL - #3252 - This should be resolved for the 5.4 release. - - - diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 913580c77b..4e9a8c222e 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -411,15 +411,6 @@ - - - - - - - - - @@ -940,24 +931,6 @@ - - - - - - - - - - - - - - - - - - @@ -1129,15 +1102,6 @@ - - - - - - - - - @@ -2549,16 +2513,6 @@ - - - - - - - - - - diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index f0fd65862f..5a5425dc60 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -24,41 +24,35 @@ "global-present", "global-present-low-res", "global-present-ultra-hi-res", - "global-hist-1850-1and2deg", - "global-hist-1850-low-res", + "global-hist-1850-f19", + "global-hist-1850-f45", "crop-tropics-present", "crop", "crop-global-present", "crop-global-present-low-res", - "crop-global-present-ne3", "crop-global-present-ne16", "crop-global-present-ne30", - "crop-global-present-vrandne120", + "crop-global-present-ne120", "crop-global-present-mpasa480", "crop-global-present-nldas", "crop-global-1850", "crop-global-1850-low-res", - "crop-global-1850-ne3", "crop-global-1850-ne16", "crop-global-1850-ne30", "crop-global-1850-ne120", "crop-global-1850-mpasa480", "crop-global-hist", "crop-global-hist-low-res", - "crop-global-hist-ne3-1", - "crop-global-hist-ne3-2", - "crop-global-hist-ne3-3", "crop-global-hist-ne16", "crop-global-hist-ne30", - "crop-global-hist-1700", - "crop-global-hist-mpasa480", + "crop-global-hist-f09", "crop-global-SSP1-1.9-f09", "crop-global-SSP1-2.6-f09", "crop-global-SSP2-4.5-f09", "crop-global-SSP2-4.5-f19", "crop-global-SSP2-4.5-f10", "crop-global-SSP2-4.5-f45", - "crop-global-hist-vrandne120", + "crop-global-SSP2-4.5-ne0np4", "crop-global-SSP2-4.5-ne3", "crop-global-SSP2-4.5-ne16", "crop-global-SSP2-4.5-ne30", @@ -151,9 +145,7 @@ def write_runscript( runfile.write(f"{output} \n") check = f"if [ $? != 0 ]; then echo 'Error running resolution {res}'; exit -4; fi" runfile.write(f"{check} \n") - runfile.write( - f"echo Confirm completion of fsurdat/landuse generation in the .log file {res}\n" - ) + runfile.write(f"echo Successfully ran resolution {res}\n") runfile.write(f"echo Successfully ran {jobscript_file}\n") @@ -199,10 +191,7 @@ def main(): # ], # -------------------------- resolution_dict = { - "potveg_res": ["0.9x1.25", "1.9x2.5", "ne16np4.pg3", "ne30np4.pg3"], - "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60", "mpasa30", "ne30np4.pg3"], - "1700_res": ["0.9x1.25", "360x720cru"], - "1and2deg_no_crop": ["1.9x2.5", "0.9x1.25", "ne30np4.pg3"], + "standard_res_no_crop": ["0.9x1.25", "1.9x2.5", "mpasa60"], "f09": ["0.9x1.25"], "f19": ["1.9x2.5"], "hcru": ["360x720cru"], @@ -210,25 +199,28 @@ def main(): "mpasa120": ["mpasa120"], "f10": ["10x15"], "f45": ["4x5"], - "low_res": ["4x5", "10x15"], + "low_res_no_crop": ["4x5", "10x15"], "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], + "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], + "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], - "ne3": ["ne3np4.pg2", "ne3np4.pg3", "ne3np4"], - "ne3_1": ["ne3np4"], - "ne3_2": ["ne3np4.pg2"], - "ne3_3": ["ne3np4.pg3"], + "ne3": ["ne3np4", "ne3np4.pg3"], "ne16": ["ne16np4.pg3"], "ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"], - "ne120": ["ne120np4.pg3"], - "vr_and_ne120": [ + "ne0np4": [ + "ne0np4.ARCTICGRIS.ne30x8", + "ne0np4.ARCTIC.ne30x4", + "ne0np4CONUS.ne30x8", + "ne0np4.POLARCAP.ne30x4", + ], + "ne120": [ "ne0np4.ARCTICGRIS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4CONUS.ne30x8", "ne0np4.POLARCAP.ne30x4", - "ne0np4.NATL.ne30x8", "ne120np4.pg3", ], } @@ -239,7 +231,7 @@ def main(): dataset_dict = { "global-potveg": ( "--start-year 1850 --end-year 1850 --nocrop --potveg --res", - "potveg_res", + "f09", ), "global-present": ( "--start-year 2000 --end-year 2000 --nocrop --res", @@ -247,19 +239,19 @@ def main(): ), "global-present-low-res": ( "--start-year 2000 --end-year 2000 --nocrop --res", - "low_res", + "low_res_no_crop", ), "global-present-ultra-hi-res": ( "--start-year 2000 --end-year 2000 --nocrop --res", "ultra_hi_res_no_crop", ), - "global-hist-1850-1and2deg": ( + "global-hist-1850-f19": ( "--start-year 1850 --end-year 2023 --nocrop --res", - "1and2deg_no_crop", + "f19", ), - "global-hist-1850-low-res": ( + "global-hist-1850-f45": ( "--start-year 1850 --end-year 2023 --nocrop --res", - "low_res", + "f45", ), "crop-tropics-present": ( "--start-year 2000 --end-year 2000 --res", @@ -273,10 +265,6 @@ def main(): "--start-year 2000 --end-year 2000 --res", "low_res", ), - "crop-global-present-ne3": ( - "--start-year 2000 --end-year 2000 --res", - "ne3", - ), "crop-global-present-ne16": ( "--start-year 2000 --end-year 2000 --res", "ne16", @@ -285,9 +273,9 @@ def main(): "--start-year 2000 --end-year 2000 --res", "ne30", ), - "crop-global-present-vrandne120": ( + "crop-global-present-ne120": ( "--start-year 2000 --end-year 2000 --res", - "vr_and_ne120", + "ne120", ), "crop-global-present-mpasa480": ( "--start-year 2000 --end-year 2000 --res", @@ -305,10 +293,6 @@ def main(): "--start-year 1850 --end-year 1850 --res", "low_res", ), - "crop-global-1850-ne3": ( - "--start-year 1850 --end-year 1850 --res", - "ne3", - ), "crop-global-1850-ne16": ( "--start-year 1850 --end-year 1850 --res", "ne16", @@ -325,30 +309,14 @@ def main(): "--start-year 1850 --end-year 1850 --res", "mpasa480", ), - "crop-global-hist-mpasa480": ( - "--start-year 1850 --end-year 2023 --nosurfdata --res", - "mpasa480", - ), "crop-global-hist": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", - "standard_res", + "standard_res_no_f09", ), "crop-global-hist-low-res": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", "low_res", ), - "crop-global-hist-ne3-1": ( - "--start-year 1850 --end-year 2023 --nosurfdata --res", - "ne3_1", - ), - "crop-global-hist-ne3-2": ( - "--start-year 1850 --end-year 2023 --nosurfdata --res", - "ne3_2", - ), - "crop-global-hist-ne3-3": ( - "--start-year 1850 --end-year 2023 --nosurfdata --res", - "ne3_3", - ), "crop-global-hist-ne16": ( "--start-year 1850 --end-year 2023 --nosurfdata --res", "ne16", @@ -357,9 +325,9 @@ def main(): "--start-year 1850 --end-year 2023 --nosurfdata --res", "ne30", ), - "crop-global-hist-1700": ( + "crop-global-hist-f09": ( "--start-year 1700 --end-year 2023 --res", - "1700_res", + "f09", ), "crop-global-SSP1-1.9-f09": ( "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP1-1.9 --res", @@ -389,13 +357,9 @@ def main(): "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", "f45", ), - # NOTE 2025/10/21: When CMIP7 future scenarios become available, - # change 2023 to 2030 for a so-called "midpoint" future scenario. - # This future-proofs these cases, so that as time moves on, these - # simulations will still include the most recent historical year. - "crop-global-hist-vrandne120": ( - "--start-year 1979 --end-year 2023 --res", - "vr_and_ne120", + "crop-global-SSP2-4.5-ne0np4": ( + "--start-year 1979 --end-year 2026 --ssp-rcp SSP2-4.5 --res", + "ne0np4", ), "crop-global-SSP2-4.5-ne3": ( "--start-year 1850 --end-year 2100 --nosurfdata --ssp-rcp SSP2-4.5 --res", diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py index 1413e49158..c3f762380e 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_single.py @@ -266,7 +266,7 @@ def write_runscript_part2(namelist_file, runfile, executable, mksurfdata_path, e check = f'if [ $? != 0 ]; then echo "Error running for namelist {namelist_file}"; exit -4; fi' runfile.write(f"{check} \n") - runfile.write("echo Confirm completion of fsurdat/landuse generation in the .log file\n") + runfile.write("echo Successfully ran resolution\n") def main(): diff --git a/src/biogeochem/CNFireLi2024Mod.F90 b/src/biogeochem/CNFireLi2024Mod.F90 index d4c05f63bc..dbad9a773d 100644 --- a/src/biogeochem/CNFireLi2024Mod.F90 +++ b/src/biogeochem/CNFireLi2024Mod.F90 @@ -7,8 +7,11 @@ module CNFireLi2024Mod ! module for fire dynamics ! created in Nov, 2012 and revised in Apr, 2013 by F. Li and S. Levis ! based on Li et al. (2012a,b; 2013) - ! revised in Apr, 2014 according to Li and Lawrance (2017) - ! revised in Jun, 2024 and modified in May, 2025, according to Li et al. (2025, in prep.) + ! revised in Apr, 2014 according to Li et al.(2014) + ! revised in May, 2015, according to Li et al. (2015, in prep.) + ! Fire-related parameters were calibrated or tuned in May, 2015 based on the + ! 20th Century transient simulations at f19_g16 with a CLM4.5 version + ! (clm50fire), CRUNCEPv5, and climatological lightning data. ! ! !USES: use shr_kind_mod , only : r8 => shr_kind_r8 @@ -144,10 +147,6 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ real(r8) :: fs ! hd-dependent fires suppression (0-1) real(r8) :: ig ! total ignitions (count/km2/hr) real(r8) :: hdmlf ! human density - real(r8) :: topoi ! influence of topography on fires (0-1), where 1 indicates no impact. - ! can be removed if CLM consider Arctic C3 grass in plateau-> - ! intense light-> much more C allocated to fine roots than leaf, - ! and roots decreasing infiltration real(r8) :: arh, arh30 !combustability of fuel related to RH and RH30 real(r8) :: afuel !weight for arh and arh30 real(r8) :: btran_col(bounds%begc:bounds%endc) @@ -181,7 +180,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ defo_fire_precip_thresh_bdt => cnfire_const%defo_fire_precip_thresh_bdt, & ! Input: [real(r8) ] (mm/day) Max running mean daily precip allowing deforestation fire for broadleaf deciduous trees borpeat_fire_soilmoist_denom => cnfire_const%borpeat_fire_soilmoist_denom, & ! Input: [real(r8) ] (unitless) Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless) nonborpeat_fire_precip_denom => cnfire_const%nonborpeat_fire_precip_denom, & ! Input: [real(r8) ] (unitless) Denominator of precipitation in equation relating that to non-boreal peat fire (unitless) - forc_topo_g => atm2lnd_inst%forc_topo_grc , & ! Input: [real(r8) (:) ] atmospheric surface height, a.k.a. elevation (m) + fsr_pft => pftcon%fsr_pft , & ! Input: fd_pft => pftcon%fd_pft , & ! Input: rswf_min => pftcon%rswf_min , & ! Input: @@ -198,8 +197,8 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ forc_t => atm2lnd_inst%forc_t_downscaled_col , & ! Input: [real(r8) (:) ] downscaled atmospheric temperature (Kelvin) forc_rain => wateratm2lndbulk_inst%forc_rain_downscaled_col , & ! Input: [real(r8) (:) ] downscaled rain forc_snow => wateratm2lndbulk_inst%forc_snow_downscaled_col , & ! Input: [real(r8) (:) ] downscaled snow - prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. precipitation - rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. relative humidity + prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. precipitation + rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. relative humidity dwt_smoothed => cnveg_state_inst%dwt_smoothed_patch , & ! Input: [real(r8) (:) ] change in patch weight (-1 to 1) on the gridcell, smoothed over the year cropf_col => cnveg_state_inst%cropf_col , & ! Input: [real(r8) (:) ] cropland fraction in veg column gdp_lf => this%gdp_lf_col , & ! Input: [real(r8) (:) ] gdp data @@ -303,8 +302,8 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ if( patch%itype(p) > nc4_grass )then cropf_col(c) = cropf_col(c) + patch%wtcol(p) end if - ! Exclude crops and bare soil - if (patch%itype(p) <= nc4_grass .and. patch%itype(p) >= ndllf_evr_tmp_tree) then + ! For natural vegetation + if (patch%itype(p) <= nc4_grass ) then lfwt(c) = lfwt(c) + patch%wtgcell(p) end if end do @@ -517,10 +516,6 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ g = col%gridcell(c) ! For crop - ! cropf_col(c) * col%wtgcell(c) > 0.1_r8 is added because fires are rare in - ! gridcells with limited cropland coverage based on GFED5. Also, this helps to - ! avoid abm (crop fire peak month) regridding error from 0.05 degree to lower resolution - ! The condition could be removed if CLM supports the use of mode in abm inputs regridding if( forc_t(c) >= SHR_CONST_TKFRZ .and. patch%itype(p) > nc4_grass .and. & kmo == abm_lf(c) .and. & burndate(p) >= 999 .and. patch%wtcol(p) > 0._r8 )then ! catch crop burn time @@ -621,15 +616,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ cnfire_params%ignition_efficiency*(1._r8-fs)* & (lfwt(c)**0.5) end if - - ! Reduce burnability at high elevations - if(forc_topo_g(g) <= 2500._r8)then !influence of topography on fires - topoi = 1._r8 - else - topoi = 0.004_r8 - end if - - nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) * topoi !fire counts/km2/sec + nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) !fire counts/km2/sec Lb_lf = 1._r8+10._r8*(1._r8-EXP(-0.06_r8*forc_wind(g))) spread_m = fire_m**0.5_r8 fd_col(c) = (lfwt(c)*lgdp1_col(c)*lpop_col(c))**0.5_r8 * fd_col(c) @@ -652,7 +639,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_ / (trotr1_col(c) + trotr2_col(c)) cli = max(0._r8,min(1._r8,1._r8-prec30_col(c)*secspday/cri))* & - (0.67_r8*min(0.01_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.001_r8) * & + (15._r8*min(0.0016_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.009_r8)* & max(0._r8,min(1._r8,(0.25_r8-(forc_rain(c)+forc_snow(c))*secsphr)/0.25_r8)) farea_burned(c) = farea_burned(c)+fb*cli*(cli_scale/secspday) diff --git a/tools/mksurfdata_esmf/Makefile b/tools/mksurfdata_esmf/Makefile index 1a6badd0c7..835f732a02 100644 --- a/tools/mksurfdata_esmf/Makefile +++ b/tools/mksurfdata_esmf/Makefile @@ -14,7 +14,7 @@ # To generate a single dataset, run make with the name of the rule you # want to build. For example, to generate the crop data set for 1x1_numaIA: # -# make 1x1-numa-present +# make crop-numa # # NOTE: The default behavior is to parallelize data set creation using # the batch system by submitting jobs to the batch queue (on Derecho). @@ -81,51 +81,36 @@ URBALPHA_TMP2_FNAME := surfdata_1x1_urbanc_alpha_hist_2000_78pfts_tmp.nc URBALPHA_FNAME := surfdata_1x1_urbanc_alpha_hist_2000_78pfts_c$(CDATE).nc SUBSETDATA_1X1_MEXICOCITY := --lat 19.5 --lon 260.5 --site 1x1_mexicocityMEX --out-surface $(MEXICOCITY_TMP_FNAME) SUBSETDATA_1X1_VANCOUVER := --lat 49.5 --lon 236.5 --site 1x1_vancouverCAN --out-surface $(VANCOUVER_TMP_FNAME) -SUBSETDATA_1X1_URBALPHA := --lat -37.7308 --lon 360 --site 1x1_urbanc_alpha --out-surface $(URBALPHA_TMP_FNAME) +SUBSETDATA_1X1_URBALPHA := --lat -37.7308 --lon 0 --site 1x1_urbanc_alpha --out-surface $(URBALPHA_TMP_FNAME) # ne120np4 and hi-res are for high resolution, ne16np4 is for mid-resolution testing # low-res is for low resolutions for testing # nldas is for NWP working with WRF # STANDARD means no crop, so 16 pfts -# global-hist-1850-low-res is used by FATES; we expected to phase it out, but to f45 we added f10 in ctsm5.4 +# global-hist-1850-f45 is used by FATES and we expect it to be phased out STANDARD = \ global-potveg \ global-present \ global-present-low-res \ - global-hist-1850-1and2deg \ - global-hist-1850-low-res \ - -# NOTE slevis 2025/9/10: For CTSM5.4, I removed from CROP: -# crop-global-future -# Here I added this because it spans 1979-2023. When CMIP7 future scenarios become available, this will span 1979-2030: -# crop-global-hist-vrandne120 -# Also I split ne3 into ne3-1, ne3-2, ne3-3 for historical because the combined ne3 job took >12 hours in the queue + global-hist-1850-f19 \ + global-hist-1850-f45 \ + CROP = \ - crop-global-hist \ - crop-global-hist-low-res \ - crop-global-hist-ne3-1 \ - crop-global-hist-ne3-2 \ - crop-global-hist-ne3-3 \ - crop-global-hist-ne16 \ - crop-global-hist-ne30 \ - crop-global-hist-mpasa480 \ - crop-global-hist-1700 \ + crop-global-future \ + crop-global-hist-f09 \ crop-global-1850-ne120 \ - crop-global-present-vrandne120 \ + crop-global-present-ne120 \ crop-global-present-nldas \ crop-global-present-ne30 \ crop-global-present \ crop-global-present-low-res \ - crop-global-present-ne3 \ crop-global-present-ne16 \ crop-global-present-mpasa480 \ crop-global-1850 \ crop-global-1850-low-res \ - crop-global-1850-ne3 \ crop-global-1850-ne16 \ crop-global-1850-ne30 \ crop-global-1850-mpasa480 \ - crop-global-hist-vrandne120 \ # Build the executable if it doesn't exist and any target depends on it $(MKSURFDATA_EXE): @@ -142,12 +127,11 @@ all : all-subset global-present-ultra-hi-res crop standard crop-tropics-present # These are all the surface datasets generated by subset_data # This runs interactively and does not send jobs to the batch queue -# NOTE slevis 2025/9/10: For CTSM5.4, I removed from all-subset: -# 1x1-smallville-present all-subset : \ 1x1_brazil-present \ 1x1_brazil-transient \ 1x1-numa-present \ + 1x1-smallville-present \ 1x1-smallville-1850 \ 1x1-smallville-transient \ 1x1-cidadinho-present \ @@ -184,10 +168,10 @@ global-present-low-res : FORCE $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh -global-hist-1850-1and2deg : FORCE +global-hist-1850-f19 : FORCE $(MKSURFDATA) --number-of-nodes 8 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -global-hist-1850-low-res : FORCE +global-hist-1850-f45 : FORCE $(MKSURFDATA) --number-of-nodes 2 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh # @@ -221,11 +205,7 @@ crop-global-present : FORCE $(BATCHJOBS) $@.sh crop-global-present-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - -crop-global-present-ne3 : FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-present-ne16 : FORCE @@ -236,7 +216,7 @@ crop-global-present-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh -crop-global-present-vrandne120 : FORCE +crop-global-present-ne120 : FORCE $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 01:00:00 $(BATCHJOBS) $@.sh @@ -253,11 +233,7 @@ crop-global-1850 : FORCE $(BATCHJOBS) $@.sh crop-global-1850-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - -crop-global-1850-ne3 : FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 1 --tasks-per-node 64 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-1850-ne16 : FORCE @@ -280,24 +256,12 @@ crop-global-hist : FORCE $(MKSURFDATA) --number-of-nodes 72 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-hist-1700 : FORCE +crop-global-hist-f09 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-hist-low-res : FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - -crop-global-hist-ne3-1: FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - -crop-global-hist-ne3-2: FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - -crop-global-hist-ne3-3: FORCE - $(MKSURFDATA) --number-of-nodes 1 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 + $(MKSURFDATA) --number-of-nodes 14 --tasks-per-node 32 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh crop-global-hist-ne16 : FORCE @@ -308,10 +272,6 @@ crop-global-hist-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-hist-mpasa480 : FORCE - $(MKSURFDATA) --number-of-nodes 4 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 - $(BATCHJOBS) $@.sh - 1x1-numa-present : FORCE $(SUBSETDATA_POINT_ALLLU) --create-surface $(SUBSETDATA_1X1_NUMAIA) @@ -336,11 +296,7 @@ crop-global-hist-mpasa480 : FORCE # # Crop with future scenarios -# NOTE 2025/10/21: Time periods extending beyond 2023 combine CMIP7 data -# for the historical period and CMIP6 data beyond 2023. -# This introduces a discontinuity in 2024. -# TODO: Add crop-global-future back when the CMIP7 data become available. -# See other corresponding crop-global-future comment elsewhere in this Makefile. +# crop-global-future : crop-global-SSP1-1.9-f09 \ crop-global-SSP1-2.6-f09 \ @@ -354,14 +310,12 @@ crop-global-future : crop-global-SSP1-1.9-f09 \ crop-global-SSP2-4.5-low-res : crop-global-SSP2-4.5-f10 \ crop-global-SSP2-4.5-f45 \ crop-global-SSP2-4.5-ne3 -# NOTE slevis 2025/9/10: For CTSM5.4, I moved to CROP because it spans 1979-2023: -# crop-global-hist-vrandne120 -# When CMIP7 future scenario data become available, this will span 1979-2030. crop-global-SSP2-4.5 : crop-global-SSP2-4.5-f09 \ crop-global-SSP2-4.5-f19 \ crop-global-SSP2-4.5-hcru \ crop-global-SSP2-4.5-ne16 \ crop-global-SSP2-4.5-ne30 \ + crop-global-SSP2-4.5-ne0np4 \ crop-global-SSP2-4.5-C96 \ crop-global-SSP2-4.5-mpasa120 @@ -405,7 +359,7 @@ crop-global-SSP2-4.5-ne30 : FORCE $(MKSURFDATA) --number-of-nodes 9 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh -crop-global-hist-vrandne120 : FORCE +crop-global-SSP2-4.5-ne0np4 : FORCE $(MKSURFDATA) --number-of-nodes 2 --scenario $@ --jobscript-file $@.sh --walltime 12:00:00 $(BATCHJOBS) $@.sh diff --git a/tools/mksurfdata_esmf/README.md b/tools/mksurfdata_esmf/README.md index 95064a9839..f49d23fb61 100644 --- a/tools/mksurfdata_esmf/README.md +++ b/tools/mksurfdata_esmf/README.md @@ -100,7 +100,6 @@ This will bring in CIME and ccs_config which are required for building. ``` shell # Assuming pwd is the tools/mksurfdata_esmf directory -setenv DEBUG TRUE # only if debugging and your shell is tcsh (in bash use: export DEBUG=TRUE) ./gen_mksurfdata_build # For machines with a cime build ``` diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml index 1d242a11c5..a2266bf0a0 100644 --- a/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml +++ b/tools/mksurfdata_esmf/gen_mksurfdata_namelist.xml @@ -10,7 +10,7 @@ - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_pftlai_clm6_histLUH3_2005_c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histMKSRFDeg025_240709/mksrf_landuse_ctsm53_pftlai_CLIM.c240709.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -21,7 +21,7 @@ - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_soilcolor_clm6_histLUH3_2005_c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histMKSRFDeg025_240709/mksrf_landuse_ctsm53_soilcolor_CLIM.c240709.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc @@ -93,7 +93,7 @@ - lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc + lnd/clm2/mappingdata/grids/UNSTRUCTgrid_3x3min_nomask_cdf5_c200129.nc @@ -168,7 +168,7 @@ version of the raw dataset will probably go away. - lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c250715.nc + lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c240821.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.5x0.5_nomask_cdf5_c200129.nc @@ -204,40 +204,40 @@ version of the raw dataset will probably go away. - + - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_NOANTHRO_CMIP7/mksrf_landuse_clm6_noanthroLUH3_1.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRNOANTHRODeg025_240831/mksrf_landuse_ctsm53_histTRNOANTHRO_1.c240831.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc lnd/clm2/rawdata/mksrf_urban_0.05x0.05_zerourbanpct.cdf5.c181014.nc - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_1700.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRENDY2024Deg025_240728/mksrf_landuse_ctsm53_histTRENDY2024_1700.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc - lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1700_c250423.nc + lnd/clm2/rawdata/gao_oneill_urban/historical/urban_properties_GaoOneil_05deg_ThreeClass_1850_cdf5_c20220910.nc - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_1850.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRENDY2024Deg025_240728/mksrf_landuse_ctsm53_histTRENDY2024_1850.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_1850.cdf5.c20220325.nc - lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_1850_c250423.nc + lnd/clm2/rawdata/gao_oneill_urban/historical/urban_properties_GaoOneil_05deg_ThreeClass_1850_cdf5_c20220910.nc - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_2000.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRENDY2024Deg025_240728/mksrf_landuse_ctsm53_histTRENDY2024_2000.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2000.cdf5.c20220325.nc - lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2000_c250423.nc + lnd/clm2/rawdata/gao_oneill_urban/historical/urban_properties_GaoOneil_05deg_ThreeClass_2000_cdf5_c20220910.nc - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_2005.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRENDY2024Deg025_240728/mksrf_landuse_ctsm53_histTRENDY2024_2005.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_2005.cdf5.c20220325.nc - lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_2005_c250423.nc + lnd/clm2/rawdata/gao_oneill_urban/historical/urban_properties_GaoOneil_05deg_ThreeClass_2005_cdf5_c20220910.nc @@ -251,11 +251,12 @@ version of the raw dataset will probably go away. + - lnd/clm2/rawdata/CTSM54RawData/CLM6_LUH3_HIST_CMIP7/mksrf_landuse_clm6_histLUH3_%y.c251012.nc + lnd/clm2/rawdata/CTSM53RawData/globalctsm53histTRENDY2024Deg025_240728/mksrf_landuse_ctsm53_histTRENDY2024_%y.c240728.nc lnd/clm2/mappingdata/grids/UNSTRUCTgrid_0.25x0.25_nomask_cdf5_c200129.nc lnd/clm2/rawdata/lake_area/mksurf_lake_0.05x0.05_hist_clm5_hydrolakes_%y.cdf5.c20220325.nc - lnd/clm2/rawdata/CTSM54RawData/urban_properties/urban_properties_CMIP7_ThreeClass_%y_c250423.nc + lnd/clm2/rawdata/gao_oneill_urban/historical/urban_properties_GaoOneil_05deg_ThreeClass_%y_cdf5_c20220910.nc diff --git a/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg b/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg index 1e509ccb8f..bdb27ac43d 100644 --- a/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg +++ b/tools/mksurfdata_esmf/modify_1x1_urbanc_alpha.cfg @@ -32,8 +32,6 @@ lnd_lat_2 = 90 lnd_lon_1 = 0 # easternmost longitude for rectangle lnd_lon_2 = 360 -# Upper limit of longitudes, from format being either [-180, 180] or [0, 360] -lon_type = 360 # user-defined mask in a file, as alternative to setting lat/lon values landmask_file = UNSET diff --git a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 index 417658245c..6115e813f9 100644 --- a/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 +++ b/tools/mksurfdata_esmf/src/mkagfirepkmonthMod.F90 @@ -20,9 +20,9 @@ module mkagfirepkmonthMod public :: mkagfirepkmon ! Set agricultural fire peak month - integer , parameter :: min_valid = 1 ! month value for January - integer , parameter :: max_valid = 13 ! value for no agricultural fire - integer , parameter :: unsetmon = 14 ! value for no data + integer , parameter :: min_valid = 1 + integer , parameter :: max_valid = 12 + integer , parameter :: unsetmon = 13 type(ESMF_DynamicMask) :: dynamicMask @@ -36,10 +36,6 @@ module mkagfirepkmonthMod subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! ! Make agricultural fire peak month data from higher resolution data - ! by selecting the dominant value from values 1 through 13 - ! where 13 means no agricultural fire. - ! - ! The relevant subroutine is get_dominant_indices. ! ! input/output variables character(len=*) , intent(in) :: file_mesh_i ! input mesh file name @@ -58,9 +54,9 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) integer :: k integer :: ni,no integer :: ns_i, ns_o - integer , allocatable :: mask_i(:) ! input grid: mesh file landmask - real(r4), allocatable :: rmask_i(:) ! input grid: raw dataset landmask - real(r8), allocatable :: frac_o(:) ! output grid: agricultural fire peak month + integer , allocatable :: mask_i(:) + real(r4), allocatable :: rmask_i(:) + real(r8), allocatable :: frac_o(:) integer , allocatable :: idata_i(:) ! input grid: agricultural fire peak month integer , allocatable :: agfirepkmon_o(:) ! agricultural fire peak month real(r4), pointer :: dataptr(:) @@ -120,10 +116,6 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) call mkpio_get_rawdata(pioid_i, 'abm', mesh_i, idata_i, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return call ESMF_VMLogMemInfo("After mkpio_getrawdata in "//trim(subname)) - ! Update idata_i to unsetmon where mask_i == 0, i.e. over ocean - do ni = 1, ns_i - if (mask_i(ni) == 0) idata_i(ni) = unsetmon - end do ! Create ESMF fields that will be used below field_i = ESMF_FieldCreate(mesh_i, ESMF_TYPEKIND_R4, meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) @@ -150,7 +142,6 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Create a dynamic mask object ! The dynamic mask object further holds a pointer to the routine that will be called in order to ! handle dynamically masked elements - in this case its DynMaskProc (see below) - ! This calls subroutine get_dominant_indices call ESMF_DynamicMaskSetR4R8R4(dynamicMask, dynamicMaskRoutine=get_dominant_indices, & handleAllElements=.true., rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -173,7 +164,6 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Check validity of output data if (min_bad(agfirepkmon_o, min_valid, 'agfirepkmon') .or. & max_bad(agfirepkmon_o, unsetmon , 'agfirepkmon')) then - if (root_task) write(ndiag, '(a)') trim(subname)//" error in agfirepkmon_o value range: expect min_valid to unsetmon which equal ", min_valid, unsetmon call shr_sys_abort() end if @@ -188,7 +178,7 @@ subroutine mkagfirepkmon(file_mesh_i, file_data_i, mesh_o, pioid_o, rc) ! Output diagnostics comparing global area of each peak month on input and output grids call output_diagnostics_index(mesh_i, mesh_o, mask_i, frac_o, & - min_valid, unsetmon, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) + 1, 13, idata_i, agfirepkmon_o, 'peak fire month', ndiag, rc) if (chkerr(rc,__LINE__,u_FILE_u)) call shr_sys_abort() ! Release memory @@ -216,16 +206,15 @@ subroutine get_dominant_indices(dynamicMaskList, dynamicSrcMaskValue, dynamicDst ! input/output arguments type(ESMF_DynamicMaskElementR4R8R4) , pointer :: dynamicMaskList(:) - real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue ! Source (i.e. input) grid mask - real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue ! Destination (i.e. output) grid mask - integer , intent(out) :: rc ! error status + real(ESMF_KIND_R4) , intent(in), optional :: dynamicSrcMaskValue + real(ESMF_KIND_R4) , intent(in), optional :: dynamicDstMaskValue + integer , intent(out) :: rc ! local variables integer :: ni, no, n real(ESMF_KIND_R4) :: wts_o(min_valid:max_valid) integer :: maxindex(1) logical :: hasdata - character(len=*), parameter :: subname = 'get_dominant_indices' !--------------------------------------------------------------- rc = ESMF_SUCCESS diff --git a/tools/mksurfdata_esmf/src/mksurfdata.F90 b/tools/mksurfdata_esmf/src/mksurfdata.F90 index c2ecc9c308..35ff1807cd 100644 --- a/tools/mksurfdata_esmf/src/mksurfdata.F90 +++ b/tools/mksurfdata_esmf/src/mksurfdata.F90 @@ -968,8 +968,8 @@ program mksurfdata rcode = pio_put_var(pioid, pio_varid, (/ntim/), year) rcode = pio_inq_varid(pioid, 'time', pio_varid) rcode = pio_put_var(pioid, pio_varid, (/ntim/), year) - rcode = pio_inq_varid(pioid, 'input_pftdata_filename', pio_varid) - rcode = pio_put_var(pioid, pio_varid, (/1,ntim/), trim(string)) + !rcode = pio_inq_varid(pioid, 'input_pftdata_filename', pio_varid) + !rcode = pio_put_var(pioid, pio_varid, (/1,ntim/), (/len_trim(string),1/), trim(string)) call pio_syncfile(pioid) ! Create pctpft data at model resolution from file fname diff --git a/tools/mksurfdata_esmf/validate_fsurdat_files.sh b/tools/mksurfdata_esmf/validate_fsurdat_files.sh deleted file mode 100755 index 2158a30435..0000000000 --- a/tools/mksurfdata_esmf/validate_fsurdat_files.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/bash - -# Validation/verification of new fsurdat files -# -------------------------------------------- -# WRITTEN by slevis after discussions with ekluzek. -# -# LOCATION: slevis first used this script in the directory -# .../inputdata/lnd/clm2/surfdata_esmf/ctsm5.4.0/validation -# -# CAVEAT: For new CTSM versions, use this script as a template with the -# understanding that aspects of the code will need to change. Search -# the string "current" for items that may need to change in the future. -# -# PURPOSE and DETAILS -# ------------------- -# This script -# 1) uses cprnc to compare NEW_VERSION versus OLD_VERSION files by generating -# cprnc.out files. -# 2) greps for fields with differences (RMS or NORMALIZED) that are >=1. -# The strictest grep threshold that I found isolates potentially -# unexpected changes is E-03. I determined this empirically using two -# types of problematic fsurdat files from the recent past: -# - No LAI, SAI, and heights for pfts 15 and 16. -# - No soil textures in parts of the world in unstructured grids. -# These "unexpected" fields appear alongside expected diffs (discussed -# below) when grepping for E+. Grepping for less than E-03 starts to -# capture fields with smaller differences and is likely to miss -# unexpected problematic fields. -# -# Step after running the script -# ----------------------------- -# Interactively and iteratively build this grep command to confirm that -# all fields in the script's grep output are expected. This list of -# fields here is ctsm5.4-specific: -# >>> grep NORM grep_E+_surfdata_cprnc.out | grep -v ROOF | grep -v WALL | grep -v URBAN | grep -v BUILDING | grep -v abm | grep -v CANYON | grep -v CONST_HARVEST | grep -v ROAD | grep -v UNREPRESENTED_PFT | grep -v PCT_NATVEG -# -# If the grep command reveals unexpected fields, investigate. -# The list of fields to check depends on which fields you expect to have -# answer changes. The magnitude of the differences will depend on the -# specifics of what changed. Ensure you only see the answer changes that -# you expect. -# -# ----------------------------- -# -# Separate subjective comparison -# ------------------------------ -# >>> ncdiff surfdata_new.nc surfdata_old.nc surfdata_new_vs_old.nc -# >>> ncview surfdata_new_vs_old.nc -# - Focus on fields with larger RMS diffs in the cprnc output. -# - ncvis works like ncview for unstructured grids (e.g. ne30), though -# slevis found ncvis to crash when reading a "diff" file generated by ncdiff. -# -# Another validation step -# ----------------------- -# Run mksurfdata_esmf with a different number of processors and confirm -# bit-for-bit same results. - -# Settings to be used in the comparisons below. -# Paths are hardwired to derecho currently. -newdatestamp=c251022 # USER DEFINED -newdir=ctsm5.4.0 # USER DEFINED -olddir=ctsm5.3.0 # USER DEFINED -olddatestamp=c240908 # USER DEFINED -olddatestamp_ne3np4=c240925 # USER DEFINED -cimetoolspath=/glade/campaign/cesm/cesmdata/cseg/tools/cime/tools -CPRNC=$cimetoolspath/cprnc/cprnc - -echo "starting grids loop" - -# The first loop of grids (unlike the other loops) uses olddatestamp_ne3np4 currently. -# Skip ne3np4.pg2 as present only in NEW_VERSION currently so may wish to add in future versions. -grids=("ne3np4") - -for grid in "${grids[@]}" - - # 1850_78pft files - do $CPRNC ../surfdata_$grid\_hist_1850_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1850_78pfts_$olddatestamp_ne3np4.nc >& surfdata_$grid\_hist_1850_78pfts_$newdir\_vs_$olddir.cprnc.out - # 2000_78pft files - $CPRNC ../surfdata_$grid\_hist_2000_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_78pfts_$olddatestamp_ne3np4.nc >& surfdata_$grid\_hist_2000_78pfts_$newdir\_vs_$olddir.cprnc.out - echo "done $grid" - -done - -# Second loop of grids. -grids=("C96" "360x720cru" "4x5" "10x15" "0.9x1.25" "1.9x2.5" "mpasa120" "mpasa480" "ne16np4.pg3" "ne120np4.pg3" "ne3np4.pg3" "ne30np4" "ne30np4.pg2" "ne30np4.pg3") -for grid in "${grids[@]}" - - # 1850_78pft files - do $CPRNC ../surfdata_$grid\_hist_1850_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1850_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_1850_78pfts_$newdir\_vs_$olddir.cprnc.out - # 2000_78pft files - $CPRNC ../surfdata_$grid\_hist_2000_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_2000_78pfts_$newdir\_vs_$olddir.cprnc.out - echo "done $grid" - -done - -# Third loop of grids. -# Skip 1850 as only 2000 is present currently. -# Skip mpasa30 as present only in NEW_VERSION currently so may wish to add in future versions. -# Skip mpasa3p75 because cprnc runs out of memory at that resolution currently. -grids=("mpasa60" "mpasa15") -for grid in "${grids[@]}" - - # 2000_16pft files - do $CPRNC ../surfdata_$grid\_hist_2000_16pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_2000_16pfts_$olddatestamp.nc >& surfdata_$grid\_hist_2000_16pfts_$newdir\_vs_$olddir.cprnc.out - echo "done $grid" - -done - -# Fourth loop of grids: for 1979 files. -# Skip ne0np4.NATL.ne30x8 and ne120np4.pg3 as present only in NEW_VERSION currently so may wish to add in future versions. -grids=("ne0np4.ARCTICGRIS.ne30x8" "ne0np4.ARCTIC.ne30x4" "ne0np4CONUS.ne30x8" "ne0np4.POLARCAP.ne30x4") - -for grid in "${grids[@]}" - - # 1979_78pft files - do $CPRNC ../surfdata_$grid\_hist_1979_78pfts_$newdatestamp.nc ../../$olddir/surfdata_$grid\_hist_1979_78pfts_$olddatestamp.nc >& surfdata_$grid\_hist_1979_78pfts_$newdir\_vs_$olddir.cprnc.out - echo "done $grid" - -done - -# grep for E+ to catch larger diffs. -for file in surfdata_*cprnc.out - do grep -H NORM $file | grep 'E+' >> grep_E+_surfdata_cprnc.out -done - -exit diff --git a/tools/modify_input_files/modify_smallville.sh b/tools/modify_input_files/modify_smallville.sh index f4694e95c2..4dc7c58e9b 100755 --- a/tools/modify_input_files/modify_smallville.sh +++ b/tools/modify_input_files/modify_smallville.sh @@ -7,14 +7,14 @@ module load nco # This script runs from the mksurfdata_esmf/Makefile. # When running standalone, it may need "subset_data_single_point/" in front # of each landuse.timeseries file name. - file_whole="landuse.timeseries_1x1_smallvilleIA_hist_1850-2023_78pfts_c$(date +%y%m%d).nc" - file_to_1855="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_c$(date +%y%m%d).nc" - file_lake="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynLakes_c$(date +%y%m%d).nc" - file_urban="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynUrban_c$(date +%y%m%d).nc" - file_pft="landuse.timeseries_1x1_smallvilleIA_synth_hist_1850-1855_78pfts_dynPft_c$(date +%y%m%d).nc" + file_to_2100="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-2100_78pfts_c$(date +%y%m%d).nc" + file_to_1855="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_c$(date +%y%m%d).nc" + file_lake="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynLakes_c$(date +%y%m%d).nc" + file_urban="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynUrban_c$(date +%y%m%d).nc" + file_pft="landuse.timeseries_1x1_smallvilleIA_SSP2-4.5_1850-1855_78pfts_dynPft_c$(date +%y%m%d).nc" # Trim the file to just the years 1850-1855 -ncks -d time,0,5 $file_whole $file_to_1855 +ncks -d time,0,5 $file_to_2100 $file_to_1855 # Replace all values in the LAKE and CROP variables ncap2 -s "PCT_LAKE=array(0.,0.,PCT_CROP); PCT_LAKE={0.,50.,25.,25.,25.,25.} ; PCT_LAKE_MAX=array(50.,50.,PCT_CROP_MAX); PCT_CROP=array(0.,0.,PCT_LAKE); PCT_CROP={0.,25.,12.,12.,12.,12.}; PCT_CROP_MAX=array(25.,25.,PCT_LAKE_MAX)" $file_to_1855 $file_lake diff --git a/tools/site_and_regional/default_data_1850.cfg b/tools/site_and_regional/default_data_1850.cfg index a86176acd8..ce68b1debf 100644 --- a/tools/site_and_regional/default_data_1850.cfg +++ b/tools/site_and_regional/default_data_1850.cfg @@ -15,12 +15,12 @@ precname = CLMCRUJRA2024.Precip tpqwname = CLMCRUJRA2024.TPQW [surfdat] -dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 -surfdat_78pft = surfdata_0.9x1.25_hist_1850_78pfts_c251022.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 +surfdat_78pft = surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc [landuse] -dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 -landuse_78pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 +landuse_78pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc [domain] file = share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc diff --git a/tools/site_and_regional/default_data_2000.cfg b/tools/site_and_regional/default_data_2000.cfg index e43af3f7e3..60c012561c 100644 --- a/tools/site_and_regional/default_data_2000.cfg +++ b/tools/site_and_regional/default_data_2000.cfg @@ -1,5 +1,5 @@ [main] -clmforcingindir = /glade/campaign/cesm/cesmdata/inputdata +clmforcingindir = /glade/campaign/cesm/cesmdata/cseg/inputdata [datm] dir = atm/datm7/atm_forcing.datm7.CRUJRA.0.5d.c20241231/three_stream @@ -15,16 +15,16 @@ precname = CLMCRUJRA2024.Precip tpqwname = CLMCRUJRA2024.TPQW [surfdat] -dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 -surfdat_16pft = surfdata_0.9x1.25_hist_2000_16pfts_c251022.nc -surfdat_78pft = surfdata_0.9x1.25_hist_2000_78pfts_c251022.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 +surfdat_16pft = surfdata_0.9x1.25_hist_2000_16pfts_c240908.nc +surfdat_78pft = surfdata_0.9x1.25_hist_2000_78pfts_c240908.nc mesh_dir = share/meshes/ mesh_surf = fv0.9x1.25_141008_ESMFmesh.nc [landuse] -dir = lnd/clm2/surfdata_esmf/ctsm5.4.0 -landuse_16pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc -landuse_78pft = landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c251022.nc +dir = lnd/clm2/surfdata_esmf/ctsm5.3.0 +landuse_16pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc +landuse_78pft = landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc [domain] file = share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc