From bdf6b329fce4d72f8944019410aac37855e6ba4e Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Thu, 1 Jun 2023 11:02:53 -0600 Subject: [PATCH 001/159] Changes to remove 0th timestep --- src/biogeochem/CNPhenologyMod.F90 | 6 +++++- src/biogeochem/CNVegetationFacade.F90 | 12 ++++++++++-- src/biogeochem/CropType.F90 | 6 +++++- src/biogeochem/dynCNDVMod.F90 | 6 +++++- src/biogeophys/WaterStateType.F90 | 1 + src/cpl/nuopc/lnd_comp_nuopc.F90 | 19 ++++++++++++++----- src/main/accumulMod.F90 | 7 ++++++- src/main/clm_driver.F90 | 6 ++++-- src/main/histFileMod.F90 | 16 ++++++++++------ src/unit_test_shr/unittestTimeManagerMod.F90 | 3 +++ src/utils/AnnualFluxDribbler.F90 | 6 +++++- src/utils/clm_time_manager.F90 | 11 ++++++++++- 12 files changed, 78 insertions(+), 21 deletions(-) diff --git a/src/biogeochem/CNPhenologyMod.F90 b/src/biogeochem/CNPhenologyMod.F90 index ec04fcbf54..7ce359aa53 100644 --- a/src/biogeochem/CNPhenologyMod.F90 +++ b/src/biogeochem/CNPhenologyMod.F90 @@ -378,7 +378,11 @@ subroutine CNPhenology (bounds, num_soilc, filter_soilc, num_soilp, & ! all restart files having been generated with ! https://github.com/ESCOMP/CTSM/issues/1623 resolved, or we stop having a time ! step 0 (https://github.com/ESCOMP/CTSM/issues/925). - if (num_pcropp > 0 .and. .not. is_first_step()) then +!KO if (num_pcropp > 0 .and. .not. is_first_step()) then +!KO + ! Unknown if all restart files have been generated with 1623 resolved but we no longer have a time step 0 + if (num_pcropp > 0) then +!KO call CropPhenology(num_pcropp, filter_pcropp, & waterdiagnosticbulk_inst, temperature_inst, crop_inst, canopystate_inst, cnveg_state_inst, & cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst, & diff --git a/src/biogeochem/CNVegetationFacade.F90 b/src/biogeochem/CNVegetationFacade.F90 index cc625e2a36..5c91950ca5 100644 --- a/src/biogeochem/CNVegetationFacade.F90 +++ b/src/biogeochem/CNVegetationFacade.F90 @@ -1229,7 +1229,11 @@ subroutine EndOfTimeStepVegDynamics(this, bounds, num_natvegp, filter_natvegp, & ! Call dv (dynamic vegetation) at last time step of year call t_startf('d2dgvm') - if (is_end_curr_year() .and. .not. is_first_step()) then +!KO if (is_end_curr_year() .and. .not. is_first_step()) then +!KO + ! is_first_step check no longer necessary since there is no nstep=0 + if (is_end_curr_year()) then +!KO ! Get date info. kyr is used in lpj(). At end of first year, kyr = 2. call get_curr_date(yr, mon, day, sec) @@ -1281,7 +1285,11 @@ subroutine WriteHistory(this, bounds) ! Write to CNDV history buffer if appropriate if (use_cndv) then - if (is_end_curr_year() .and. .not. is_first_step()) then +!KO if (is_end_curr_year() .and. .not. is_first_step()) then +!KO + ! is_first_step check no longer necessary since there is no nstep=0 + if (is_end_curr_year()) then +!KO call t_startf('clm_drv_io_hdgvm') call CNDVHist( bounds, this%dgvs_inst ) if (masterproc) write(iulog,*) 'Annual CNDV calculations are complete' diff --git a/src/biogeochem/CropType.F90 b/src/biogeochem/CropType.F90 index 6ceeccf7e3..22a38e9c30 100644 --- a/src/biogeochem/CropType.F90 +++ b/src/biogeochem/CropType.F90 @@ -763,7 +763,11 @@ subroutine CropIncrementYear (this, num_pcropp, filter_pcropp) ! Update nyrs when it's the end of the year (unless it's the very start of the ! run). This assumes that, if this patch is active at the end of the year, then it was ! active for the whole year. - if ((kmo == 1 .and. kda == 1 .and. mcsec == 0) .and. .not. is_first_step()) then +!KO if ((kmo == 1 .and. kda == 1 .and. mcsec == 0) .and. .not. is_first_step()) then +!KO + ! is_first_step check no longer necessary since there is no nstep=0 + if ((kmo == 1 .and. kda == 1 .and. mcsec == 0)) then +!KO do fp = 1, num_pcropp p = filter_pcropp(fp) diff --git a/src/biogeochem/dynCNDVMod.F90 b/src/biogeochem/dynCNDVMod.F90 index 76382d175b..57e90d8917 100644 --- a/src/biogeochem/dynCNDVMod.F90 +++ b/src/biogeochem/dynCNDVMod.F90 @@ -99,7 +99,11 @@ subroutine dynCNDV_interp( bounds, dgvs_inst) patch%wtcol(p) = dgvs_inst%fpcgrid_patch(p) + & wt1 * (dgvs_inst%fpcgridold_patch(p) - dgvs_inst%fpcgrid_patch(p)) - if (mon==1 .and. day==1 .and. sec==dtime .and. nstep>0) then +!KO ! I don't think this is necessary since there no longer an nstep=0 +!KO if (mon==1 .and. day==1 .and. sec==dtime .and. nstep>0) then +!KO + if (mon==1 .and. day==1 .and. sec==dtime) then +!KO dgvs_inst%fpcgridold_patch(p) = dgvs_inst%fpcgrid_patch(p) end if end if diff --git a/src/biogeophys/WaterStateType.F90 b/src/biogeophys/WaterStateType.F90 index 751f633875..90e48f0834 100644 --- a/src/biogeophys/WaterStateType.F90 +++ b/src/biogeophys/WaterStateType.F90 @@ -652,6 +652,7 @@ subroutine Restart(this, bounds, ncid, flag, & ! If initial run -- ensure that water is properly bounded (read only) if (flag == 'read' ) then +!KO ! I think leaving this in here is still necessary even though is_first_step is now based on nstep=1 if ( is_first_step() .and. bound_h2osoi) then do c = bounds%begc, bounds%endc l = col%landunit(c) diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index 3852a1bf1b..90ec0fcb0a 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -823,9 +823,10 @@ subroutine ModelAdvance(gcomp, rc) ! TODO: This is currently hard-wired - is there a better way for nuopc? ! Note that the model clock is updated at the end of the time step not at the beginning nstep = get_nstep() - if (nstep > 0) then +!KO ! I don't think this is necessary anymore since there is no longer an nstep=0 +!KO if (nstep > 0) then dosend = .true. - end if +!KO end if !-------------------------------- ! Determine doalb based on nextsw_cday sent from atm model @@ -833,13 +834,21 @@ subroutine ModelAdvance(gcomp, rc) caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.) - if (nstep == 0) then - doalb = .false. - else if (nstep == 1) then +!KO if (nstep == 0) then +!KO doalb = .false. +!KO else if (nstep == 1) then +!KO doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) +!KO else +!KO doalb = (nextsw_cday >= -0.5_r8) +!KO end if +!KO +!KO ! Removed the nstep=0 check + if (nstep == 1) then doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) else doalb = (nextsw_cday >= -0.5_r8) end if +!KO call update_rad_dtime(doalb) !-------------------------------- diff --git a/src/main/accumulMod.F90 b/src/main/accumulMod.F90 index e328632501..3a26c630fb 100644 --- a/src/main/accumulMod.F90 +++ b/src/main/accumulMod.F90 @@ -583,7 +583,12 @@ subroutine update_accum_field_timeavg(this, level, nstep, field) ! time average field: reset every accumulation period; normalize at end of ! accumulation period - if ((mod(nstep,this%period) == 1 .or. this%period == 1) .and. (nstep /= 0))then +!KO ! Since this is equivalent to .not. is_first_step when it was keyed off of nstep=0 +!KO ! I think this can be removed. It seems to be related to the "real" first time step +!KO if ((mod(nstep,this%period) == 1 .or. this%period == 1) .and. (nstep /= 0))then +!KO + if (mod(nstep,this%period) == 1 .or. this%period == 1)then +!KO do k = begi,endi if (this%active(k)) then this%val(k,level) = 0._r8 diff --git a/src/main/clm_driver.F90 b/src/main/clm_driver.F90 index ae178b226c..9ecc77e694 100644 --- a/src/main/clm_driver.F90 +++ b/src/main/clm_driver.F90 @@ -204,6 +204,7 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro ! are passed to CLM in initialization, then this code block can be removed. ! ======================================================================== +!KO I think leaving this in here is still necessary even though is_first_step is now based on nstep=1 need_glacier_initialization = is_first_step() if (need_glacier_initialization) then @@ -1364,7 +1365,8 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro ! FIX(SPM, 082814) - in the fates branch RF and I commented out the if(.not. ! use_fates) then statement ... double check if this is required and why - if (nstep > 0) then +! I don't think this is necessary since there no longer an nstep=0 +!KO if (nstep > 0) then call t_startf('accum') call atm2lnd_inst%UpdateAccVars(bounds_proc) @@ -1397,7 +1399,7 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro end if call t_stopf('accum') - end if +!KO end if ! ============================================================================ ! Update history buffer diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index d5175342f0..8f91da7774 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -2606,7 +2606,10 @@ subroutine htape_timeconst3D(t, & ! !DESCRIPTION: ! Write time constant 3D variables to history tapes. ! Only write out when this subroutine is called (normally only for - ! primary history files at very first time-step, nstep=0). +!KO ! primary history files at very first time-step, nstep=0). +!KO + ! primary history files at very first time-step, nstep=1). +!KO ! Issue the required netcdf wrapper calls to define the history file ! contents. ! @@ -4009,11 +4012,12 @@ subroutine hist_htapes_wrapup( rstwr, nlend, bounds, & cycle end if - ! Skip nstep=0 if monthly average - - if (nstep==0 .and. tape(t)%nhtfrq==0) then - cycle - end if +!KO ! Should no longer be needed +!KO ! Skip nstep=0 if monthly average +!KO +!KO if (nstep==0 .and. tape(t)%nhtfrq==0) then +!KO cycle +!KO end if ! Determine if end of history interval tape(t)%is_endhist = .false. diff --git a/src/unit_test_shr/unittestTimeManagerMod.F90 b/src/unit_test_shr/unittestTimeManagerMod.F90 index 44109d5b86..efc60ec786 100644 --- a/src/unit_test_shr/unittestTimeManagerMod.F90 +++ b/src/unit_test_shr/unittestTimeManagerMod.F90 @@ -177,6 +177,9 @@ subroutine unittest_timemgr_set_nstep(nstep) ! !DESCRIPTION: ! Set the time step number ! +!KO + ! Comment not needed now? +!KO ! Note that the starting time step number is 0, so calling this with nstep = 1 ! advances the time step beyond the starting time step. ! diff --git a/src/utils/AnnualFluxDribbler.F90 b/src/utils/AnnualFluxDribbler.F90 index c7a3b792fe..a6a880d16e 100644 --- a/src/utils/AnnualFluxDribbler.F90 +++ b/src/utils/AnnualFluxDribbler.F90 @@ -258,7 +258,11 @@ subroutine set_curr_delta(this, bounds, delta) do i = beg_index, end_index this%amount_from_this_timestep(i) = delta(i) end do - if (.not. this%allows_non_annual_delta .and. .not. is_first_step()) then +!KO if (.not. this%allows_non_annual_delta .and. .not. is_first_step()) then +!KO + ! is_first_step check no longer necessary since there is no nstep=0 + if (.not. this%allows_non_annual_delta) then +!KO do i = beg_index, end_index if (this%amount_from_this_timestep(i) /= 0._r8) then write(iulog,*) subname//' ERROR: found unexpected non-zero delta mid-year' diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index b8d9930b24..31e9b30927 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -235,6 +235,11 @@ subroutine timemgr_init( ) tm_perp_date = TimeSetymd( perpetual_ymd, 0, "tm_perp_date" ) end if +!KO + ! Advance time step to start at nstep=1 (instead of nstep=0) + call advance_timestep() +!KO + ! Print configuration summary to log file (stdout). if (masterproc) call timemgr_print() @@ -675,6 +680,7 @@ subroutine advance_timestep() call ESMF_ClockAdvance( tm_clock, rc=rc ) call chkrc(rc, sub//': error return from ESMF_ClockAdvance') +!KO Do we want to do this? tm_first_restart_step = .false. end subroutine advance_timestep @@ -1714,7 +1720,10 @@ logical function is_first_step() call ESMF_ClockGet( tm_clock, advanceCount=step_no, rc=rc ) call chkrc(rc, sub//': error return from ESMF_ClockGet') nstep = step_no - is_first_step = (nstep == 0) +!KO is_first_step = (nstep == 0) +!KO + is_first_step = (nstep == 1) +!KO end function is_first_step !========================================================================================= From e15789dc12bc8f45a4a6615602a7e31710e08b0d Mon Sep 17 00:00:00 2001 From: John Alex Date: Wed, 14 Jun 2023 10:35:17 -0600 Subject: [PATCH 002/159] Delete unused hist_add_subscript method (no references in the CTSM repo) --- src/main/histFileMod.F90 | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index d5175342f0..1461d3922b 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -138,7 +138,6 @@ module histFileMod public :: hist_addfld1d ! Add a 1d single-level field to the master field list public :: hist_addfld2d ! Add a 2d multi-level field to the master field list public :: hist_addfld_decomp ! Add a 2d multi-level field to the master field list - public :: hist_add_subscript ! Add a 2d subscript dimension public :: hist_printflds ! Print summary of master field list public :: hist_htapes_build ! Initialize history file handler for initial or continue run public :: hist_update_hbuf ! Updates history buffer for all fields and tapes @@ -5806,31 +5805,6 @@ integer function pointer_index () end function pointer_index - !----------------------------------------------------------------------- - subroutine hist_add_subscript(name, dim) - ! - ! !DESCRIPTION: - ! Add a history variable to the output history tape. - ! - ! !ARGUMENTS: - character(len=*), intent(in) :: name ! name of subscript - integer , intent(in) :: dim ! dimension of subscript - ! - ! !LOCAL VARIABLES: - character(len=*),parameter :: subname = 'hist_add_subscript' - !----------------------------------------------------------------------- - - num_subs = num_subs + 1 - if (num_subs > max_subs) then - write(iulog,*) trim(subname),' ERROR: ',& - ' num_subs = ',num_subs,' greater than max_subs= ',max_subs - call endrun(msg=errMsg(sourcefile, __LINE__)) - endif - subs_name(num_subs) = name - subs_dim(num_subs) = dim - - end subroutine hist_add_subscript - !----------------------------------------------------------------------- subroutine strip_null(str) From ecdddf3384d510c1eac1c7ada1385a28708ee394 Mon Sep 17 00:00:00 2001 From: John Alex Date: Wed, 21 Jun 2023 09:27:21 -0600 Subject: [PATCH 003/159] Remove data only used by hist_add_subscript --- src/main/histFileMod.F90 | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 1461d3922b..39c9d9a0d2 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -182,10 +182,6 @@ module histFileMod ! is 255. But this can't be increased until all hard ! coded values throughout the i/o stack are updated. integer, parameter :: max_chars = 199 ! max chars for char variables - integer, parameter :: max_subs = 100 ! max number of subscripts - integer :: num_subs = 0 ! actual number of subscripts - character(len=32) :: subs_name(max_subs) ! name of subscript - integer :: subs_dim(max_subs) ! dimension of subscript ! type field_info character(len=max_namlen) :: name ! field name @@ -2434,9 +2430,6 @@ subroutine htape_create (t, histrest) ! (although on the history file it will go 1:(nec+1) rather than 0:nec) call ncd_defdim(lnfid, 'elevclas' , maxpatch_glc + 1, dimid) - do n = 1,num_subs - call ncd_defdim(lnfid, subs_name(n), subs_dim(n), dimid) - end do call ncd_defdim(lnfid, 'string_length', hist_dim_name_length, strlen_dimid) call ncd_defdim(lnfid, 'scale_type_string_length', scale_type_strlen, dimid) call ncd_defdim( lnfid, 'levdcmp', nlevdecomp_full, dimid) From b85efc1312739bc060df598d59a3970bd12cfd16 Mon Sep 17 00:00:00 2001 From: John Alex Date: Wed, 21 Jun 2023 11:26:20 -0600 Subject: [PATCH 004/159] Doc that masterlist's actflag is only set for primary history tape in practice. --- src/main/histFileMod.F90 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 2497a14667..3377bb8b29 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -239,8 +239,11 @@ end subroutine copy_entry_interface end interface ! Additional per-field metadata. See also history_entry. - ! These values are specified in hist_addfld* calls but then can be - ! overridden by namelist params like hist_fincl1. + ! For the primary history tape, some fields are enabled here (inside hist_addfld* + ! call) but then can be overridden by namelist params (like hist_fincl1). The + ! fields for other history tapes are theoretically settable here but in + ! practice are all disabled. Fields for those tapes have to be specified + ! explicitly and manually via hist_fincl2 et al. type, extends(entry_base) :: master_entry logical :: actflag(max_tapes) ! which history tapes to write to. character(len=avgflag_strlen) :: avgflag(max_tapes) ! type of time averaging @@ -290,8 +293,8 @@ end subroutine copy_entry_interface type (clmpoint_ra) :: clmptr_ra(max_mapflds) ! Real array data (2D) ! ! History field metadata including which history tapes (if any) it should be output to, and - ! type of accumulation to perform. The field ordering is arbitrary, depending on the order of - ! hist_addfld* calls in the code. + ! type of accumulation to perform. This list contains all possible fields, and their field ordering + ! is arbitrary, as it depends on the order of hist_addfld* calls in the code. ! For the field data itself, see 'tape'. ! type (master_entry) :: masterlist(max_flds) ! master field list From 7278900aa6b6749bf5766e103e31773525d4f81c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 10 Jul 2023 16:48:01 -0600 Subject: [PATCH 005/159] Standardize time_bounds long_name. --- src/main/histFileMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 92ce3dfa95..3e0d4c7597 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3301,7 +3301,7 @@ subroutine htape_timeconst(t, mode) dim2id(1) = hist_interval_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & - long_name = 'history time interval endpoints') + long_name = 'time interval endpoints') dim2id(1) = strlen_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid) From 0ae9dcfa6579f858b05cf0c68532560387bc7f39 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 10 Jul 2023 16:49:40 -0600 Subject: [PATCH 006/159] Add units to time_bounds. --- src/main/histFileMod.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 3e0d4c7597..f2020d4d3f 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3301,7 +3301,8 @@ subroutine htape_timeconst(t, mode) dim2id(1) = hist_interval_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & - long_name = 'time interval endpoints') + long_name = 'time interval endpoints', & + units = str) dim2id(1) = strlen_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid) From 21fae2979961652b58809fcdca4ed60e376237c6 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 10 Jul 2023 16:50:15 -0600 Subject: [PATCH 007/159] Add calendar to time_bounds. --- src/main/histFileMod.F90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index f2020d4d3f..1163c6a77d 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3303,6 +3303,7 @@ subroutine htape_timeconst(t, mode) call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & long_name = 'time interval endpoints', & units = str) + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) dim2id(1) = strlen_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid) From 1eb46c4abe5cee47aae205b81385166f4c2a944c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 10 Jul 2023 16:51:15 -0600 Subject: [PATCH 008/159] Renamed dimension hist_interval to nbnd. Also renamed related dimid variable. --- src/main/histFileMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 1163c6a77d..3c28d0ed5b 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -324,7 +324,7 @@ end subroutine copy_entry_interface type(file_desc_t), target :: nfid(max_tapes) ! file ids type(file_desc_t), target :: ncid_hist(max_tapes) ! file ids for history restart files integer :: time_dimid ! time dimension id - integer :: hist_interval_dimid ! time bounds dimension id + integer :: nbnd_dimid ! time bounds dimension id integer :: strlen_dimid ! string dimension id ! ! Time Constant variable names and filename @@ -2501,7 +2501,7 @@ subroutine htape_create (t, histrest) end if if ( .not. lhistrest )then - call ncd_defdim(lnfid, 'hist_interval', 2, hist_interval_dimid) + call ncd_defdim(lnfid, 'nbnd', 2, nbnd_dimid) call ncd_defdim(lnfid, 'time', ncd_unlimited, time_dimid) if (masterproc)then write(iulog,*) trim(subname), & @@ -3299,7 +3299,7 @@ subroutine htape_timeconst(t, mode) call ncd_defvar(nfid(t) , 'nstep' , ncd_int, 1, dim1id , varid, & long_name = 'time step') - dim2id(1) = hist_interval_dimid; dim2id(2) = time_dimid + dim2id(1) = nbnd_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & long_name = 'time interval endpoints', & units = str) From bbb80802023c6553752dc8f549b9c10c38b82c05 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 11 Jul 2023 13:44:25 -0600 Subject: [PATCH 009/159] Use my RTM/MOSART forks' standardize-time-metadata branches. --- Externals.cfg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index cd6855c9dc..fc9a1e7cb2 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -15,15 +15,15 @@ required = True [rtm] local_path = components/rtm protocol = git -repo_url = https://github.com/ESCOMP/RTM -tag = rtm1_0_78 +repo_url = https://github.com/samsrabin/RTM +tag = d8d9030bd7cb978d0b5da1b2e11a09c81103e9eb required = True [mosart] local_path = components/mosart protocol = git -repo_url = https://github.com/ESCOMP/MOSART -tag = mosart1_0_48 +repo_url = https://github.com/samsrabin/MOSART +tag = adbdcb50addcba657de6846623ca84e29c1a8e8a required = True [mizuRoute] From f255b06114e30acaf60b28e5d81cddc3807f847f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Tue, 11 Jul 2023 14:19:23 -0600 Subject: [PATCH 010/159] Add calendar attribute to mcdate, mcsec, mdcur, and mscur. Also update Externals.cfg to use RTM and MOSART versions that have this same change. --- Externals.cfg | 4 ++-- src/main/histFileMod.F90 | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index fc9a1e7cb2..e3ed9b4818 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -16,14 +16,14 @@ required = True local_path = components/rtm protocol = git repo_url = https://github.com/samsrabin/RTM -tag = d8d9030bd7cb978d0b5da1b2e11a09c81103e9eb +tag = 8ef4d4e1e0979a31edcf21176c31fdd0302f32bc required = True [mosart] local_path = components/mosart protocol = git repo_url = https://github.com/samsrabin/MOSART -tag = adbdcb50addcba657de6846623ca84e29c1a8e8a +tag = 87f09b6a7c508500574271f2bdb8a31bf1f148fc required = True [mizuRoute] diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 3c28d0ed5b..512c0825a4 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3264,6 +3264,7 @@ subroutine htape_timeconst(t, mode) dim1id(1) = time_dimid call ncd_defvar(nfid(t) , 'mcdate', ncd_int, 1, dim1id , varid, & long_name = 'current date (YYYYMMDD)') + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) ! ! add global attribute time_period_freq ! @@ -3292,10 +3293,13 @@ subroutine htape_timeconst(t, mode) call ncd_defvar(nfid(t) , 'mcsec' , ncd_int, 1, dim1id , varid, & long_name = 'current seconds of current date', units='s') + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) call ncd_defvar(nfid(t) , 'mdcur' , ncd_int, 1, dim1id , varid, & long_name = 'current day (from base day)') + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) call ncd_defvar(nfid(t) , 'mscur' , ncd_int, 1, dim1id , varid, & long_name = 'current seconds of current day') + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) call ncd_defvar(nfid(t) , 'nstep' , ncd_int, 1, dim1id , varid, & long_name = 'time step') From a9eb1e72b743a731743059b271997d1f8c3cf527 Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Tue, 25 Jul 2023 12:52:31 -0600 Subject: [PATCH 011/159] Changes for lilac --- src/cpl/lilac/lnd_comp_esmf.F90 | 24 ++++++++++++++++++------ src/cpl/nuopc/lnd_comp_nuopc.F90 | 3 +++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index 298aa730c0..dbb9c26f73 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -631,9 +631,13 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) ! ! See also https://github.com/ESCOMP/CTSM/issues/925 nstep = get_nstep() - if (nstep > 0) then +!KO ! TODO (KWO 07-25-2023) +!KO ! I don't think this is necessary anymore since there is no longer an nstep=0 +!KO ! In fact, according to the comment above we should be able to remove this +!KO ! do while loop and the dosend variable. +!KO if (nstep > 0) then dosend = .true. - end if +!KO end if !-------------------------------- ! Determine calendar day info @@ -680,15 +684,23 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) ! Determine doalb based on nextsw_cday sent from atm model !-------------------------------- - if (nstep == 0) then - doalb = .false. - nextsw_cday = caldayp1 - else if (nstep == 1) then +!KO if (nstep == 0) then +!KO doalb = .false. +!KO nextsw_cday = caldayp1 +!KO else if (nstep == 1) then +!KO !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) +!KO doalb = .false. +!KO else +!KO doalb = (nextsw_cday >= -0.5_r8) +!KO end if +!KO ! Removed the nstep=0 check + if (nstep == 1) then !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) doalb = .false. else doalb = (nextsw_cday >= -0.5_r8) end if +!KO if (masterproc) then write(iulog,*) '------------ LILAC ----------------' diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index 90ec0fcb0a..ef645a10e8 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -823,7 +823,10 @@ subroutine ModelAdvance(gcomp, rc) ! TODO: This is currently hard-wired - is there a better way for nuopc? ! Note that the model clock is updated at the end of the time step not at the beginning nstep = get_nstep() +!KO ! TODO (KWO 07-25-2023) !KO ! I don't think this is necessary anymore since there is no longer an nstep=0 +!KO ! In fact, according to the following comment in src/cpl/lilac/lnd_comp_esmf.F90 we should +!KO ! be able to remove this do while loop and the dosend variable. !KO if (nstep > 0) then dosend = .true. !KO end if From b8be204f5ce92085142ede21b492aca6e73103d1 Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Tue, 25 Jul 2023 16:30:15 -0600 Subject: [PATCH 012/159] Remove do while loop and dosend variable. --- src/cpl/lilac/lnd_comp_esmf.F90 | 26 ++++++++++++++------------ src/cpl/nuopc/lnd_comp_nuopc.F90 | 13 ++++++------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index dbb9c26f73..b959dbabb7 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -554,7 +554,7 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) integer :: nstep ! time step index logical :: rstwr ! .true. ==> write restart file before returning logical :: nlend ! .true. ==> last time-step - logical :: dosend ! true => send data back to driver +!KO logical :: dosend ! true => send data back to driver logical :: doalb ! .true. ==> do albedo calculation on this time step real(r8) :: nextsw_cday ! calday from clock of next radiation computation real(r8) :: caldayp1 ! ctsm calday plus dtime offset @@ -621,22 +621,24 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) !-------------------------------- dtime = get_step_size() - dosend = .false. - do while(.not. dosend) +!KO dosend = .false. +!KO do while(.not. dosend) - ! We assume that the land model time step matches the coupling interval. However, - ! we still need this while loop to handle the initial time step (time 0). We may - ! want to get rid of this time step 0 in the lilac coupling, at which point we - ! should be able to remove this while loop and dosend variable. +!KO ! We assume that the land model time step matches the coupling interval. However, +!KO ! we still need this while loop to handle the initial time step (time 0). We may +!KO ! want to get rid of this time step 0 in the lilac coupling, at which point we +!KO ! should be able to remove this while loop and dosend variable. +!KO + ! We assume that the land model time step matches the coupling interval. +!KO ! - ! See also https://github.com/ESCOMP/CTSM/issues/925 +!KO ! See also https://github.com/ESCOMP/CTSM/issues/925 nstep = get_nstep() -!KO ! TODO (KWO 07-25-2023) !KO ! I don't think this is necessary anymore since there is no longer an nstep=0 !KO ! In fact, according to the comment above we should be able to remove this -!KO ! do while loop and the dosend variable. +!KO ! do while loop and the dosend variable. I've done that here. !KO if (nstep > 0) then - dosend = .true. +!KO dosend = .true. !KO end if !-------------------------------- @@ -787,7 +789,7 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) call advance_timestep() - end do +!KO end do !-------------------------------- ! Check that internal clock is in sync with lilac driver clock diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index ef645a10e8..82e386c6da 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -741,7 +741,7 @@ subroutine ModelAdvance(gcomp, rc) integer :: localPeCount ! Number of local Processors logical :: rstwr ! .true. ==> write restart file before returning logical :: nlend ! .true. ==> last time-step - logical :: dosend ! true => send data back to driver +!KO logical :: dosend ! true => send data back to driver logical :: doalb ! .true. ==> do albedo calculation on this time step real(r8) :: nextsw_cday ! calday from clock of next radiation computation real(r8) :: caldayp1 ! ctsm calday plus dtime offset @@ -817,18 +817,17 @@ subroutine ModelAdvance(gcomp, rc) !-------------------------------- dtime = get_step_size() - dosend = .false. - do while(.not. dosend) +!KO dosend = .false. +!KO do while(.not. dosend) ! TODO: This is currently hard-wired - is there a better way for nuopc? ! Note that the model clock is updated at the end of the time step not at the beginning nstep = get_nstep() -!KO ! TODO (KWO 07-25-2023) !KO ! I don't think this is necessary anymore since there is no longer an nstep=0 !KO ! In fact, according to the following comment in src/cpl/lilac/lnd_comp_esmf.F90 we should -!KO ! be able to remove this do while loop and the dosend variable. +!KO ! be able to remove this do while loop and the dosend variable. I've done that here. !KO if (nstep > 0) then - dosend = .true. +!KO dosend = .true. !KO end if !-------------------------------- @@ -934,7 +933,7 @@ subroutine ModelAdvance(gcomp, rc) call advance_timestep() call t_stopf ('lc_ctsm2_adv_timestep') - end do +!KO end do ! Check that internal clock is in sync with master clock ! Note that the driver clock has not been updated yet - so at this point From 7f38c07983cef12c5d86213059bff6cb4a12452d Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Tue, 25 Jul 2023 17:03:42 -0600 Subject: [PATCH 013/159] Fix unit tests for nstep starting at 1 instead of 0 --- src/unit_test_shr/unittestTimeManagerMod.F90 | 8 +------- .../test/clm_time_manager_test/test_clm_time_manager.pf | 8 ++++---- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/unit_test_shr/unittestTimeManagerMod.F90 b/src/unit_test_shr/unittestTimeManagerMod.F90 index efc60ec786..8e1cdb3f36 100644 --- a/src/unit_test_shr/unittestTimeManagerMod.F90 +++ b/src/unit_test_shr/unittestTimeManagerMod.F90 @@ -177,12 +177,6 @@ subroutine unittest_timemgr_set_nstep(nstep) ! !DESCRIPTION: ! Set the time step number ! -!KO - ! Comment not needed now? -!KO - ! Note that the starting time step number is 0, so calling this with nstep = 1 - ! advances the time step beyond the starting time step. - ! ! !USES: use clm_time_manager, only : advance_timestep ! @@ -195,7 +189,7 @@ subroutine unittest_timemgr_set_nstep(nstep) character(len=*), parameter :: subname = 'unittest_timemgr_set_nstep' !----------------------------------------------------------------------- - do n = 1, nstep + do n = 2, nstep call advance_timestep() end do diff --git a/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf b/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf index 435d795e50..239f9924cf 100644 --- a/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf +++ b/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf @@ -277,7 +277,7 @@ contains end subroutine getPrevYearfrac_leapYearAtYearBoundary_returnsCorrectValue @Test - subroutine getNstep_step0(this) + subroutine getNstep_step1(this) class(TestTimeManager), intent(inout) :: this integer :: nstep @@ -285,8 +285,8 @@ contains nstep = get_nstep() - @assertEqual(0, nstep) - end subroutine getNstep_step0 + @assertEqual(1, nstep) + end subroutine getNstep_step1 @Test subroutine getNstep_step3(this) @@ -378,7 +378,7 @@ contains call unittest_timemgr_setup(dtime=dtime) - call set_nstep(1) + call set_nstep(2) is_first = is_first_step() From 750ed1d20e04778470f8b2c11cedc7f9d7e93b64 Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Thu, 27 Jul 2023 10:10:51 -0600 Subject: [PATCH 014/159] Cleanup. --- src/cpl/lilac/lnd_comp_esmf.F90 | 266 ++++++++++++++----------------- src/cpl/nuopc/lnd_comp_nuopc.F90 | 186 ++++++++++----------- 2 files changed, 201 insertions(+), 251 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index b959dbabb7..3d4b90bfba 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -554,7 +554,6 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) integer :: nstep ! time step index logical :: rstwr ! .true. ==> write restart file before returning logical :: nlend ! .true. ==> last time-step -!KO logical :: dosend ! true => send data back to driver logical :: doalb ! .true. ==> do albedo calculation on this time step real(r8) :: nextsw_cday ! calday from clock of next radiation computation real(r8) :: caldayp1 ! ctsm calday plus dtime offset @@ -621,175 +620,146 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) !-------------------------------- dtime = get_step_size() -!KO dosend = .false. -!KO do while(.not. dosend) - -!KO ! We assume that the land model time step matches the coupling interval. However, -!KO ! we still need this while loop to handle the initial time step (time 0). We may -!KO ! want to get rid of this time step 0 in the lilac coupling, at which point we -!KO ! should be able to remove this while loop and dosend variable. -!KO - ! We assume that the land model time step matches the coupling interval. -!KO - ! -!KO ! See also https://github.com/ESCOMP/CTSM/issues/925 - nstep = get_nstep() -!KO ! I don't think this is necessary anymore since there is no longer an nstep=0 -!KO ! In fact, according to the comment above we should be able to remove this -!KO ! do while loop and the dosend variable. I've done that here. -!KO if (nstep > 0) then -!KO dosend = .true. -!KO end if - - !-------------------------------- - ! Determine calendar day info - !-------------------------------- - - calday = get_curr_calday(reuse_day_365_for_day_366=.true.) - caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.) - - !-------------------------------- - ! Get time of next atmospheric shortwave calculation - !-------------------------------- - - ! TODO(NS): nextsw_cday should come directly from atmosphere! - ! For now I am setting nextsw_cday to be the same caldayp1 - ! - ! See also https://github.com/ESCOMP/CTSM/issues/860 - - nextsw_cday = calday - if (masterproc) then - write(iulog,*) trim(subname) // '... nextsw_cday is : ', nextsw_cday - end if - !-------------------------------- - ! Obtain orbital values - !-------------------------------- - - call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf ) - call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf ) - - if (masterproc) then - write(iulog,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' - write(iulog,F02) 'nextsw_cday is : ', nextsw_cday - write(iulog,F02) 'calday is : ', calday - write(iulog,F02) 'eccen is : ', eccen - write(iulog,F02) 'mvelpp is : ', mvelpp - write(iulog,F02) 'lambm0 is : ', lambm0 - write(iulog,F02) 'obliqr is : ', obliqr - write(iulog,F02) 'declin is : ', declin - write(iulog,F02) 'declinp1 is : ', declinp1 - write(iulog,* ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' - end if + ! We assume that the land model time step matches the coupling interval. + nstep = get_nstep() - !-------------------------------- - ! Determine doalb based on nextsw_cday sent from atm model - !-------------------------------- - -!KO if (nstep == 0) then -!KO doalb = .false. -!KO nextsw_cday = caldayp1 -!KO else if (nstep == 1) then -!KO !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) -!KO doalb = .false. -!KO else -!KO doalb = (nextsw_cday >= -0.5_r8) -!KO end if -!KO ! Removed the nstep=0 check - if (nstep == 1) then - !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) - doalb = .false. - else - doalb = (nextsw_cday >= -0.5_r8) - end if -!KO - - if (masterproc) then - write(iulog,*) '------------ LILAC ----------------' - write(iulog,*) 'nstep : ', nstep - write(iulog,*) 'calday : ', calday - write(iulog,*) 'caldayp1 : ', caldayp1 - write(iulog,*) 'nextsw_cday : ', nextsw_cday - write(iulog,*) 'doalb : ', doalb - write(iulog,*) '-------------------------------------' - end if + !-------------------------------- + ! Determine calendar day info + !-------------------------------- - call update_rad_dtime(doalb) + calday = get_curr_calday(reuse_day_365_for_day_366=.true.) + caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.) - !-------------------------------- - ! Determine if time to write restart - !-------------------------------- + !-------------------------------- + ! Get time of next atmospheric shortwave calculation + !-------------------------------- - call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return + ! TODO(NS): nextsw_cday should come directly from atmosphere! + ! For now I am setting nextsw_cday to be the same caldayp1 + ! + ! See also https://github.com/ESCOMP/CTSM/issues/860 - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - rstwr = .false. - endif - if (masterproc) then - write(iulog,*)' restart alarm is ',rstwr - end if + nextsw_cday = calday + if (masterproc) then + write(iulog,*) trim(subname) // '... nextsw_cday is : ', nextsw_cday + end if + + !-------------------------------- + ! Obtain orbital values + !-------------------------------- - !-------------------------------- - ! Determine if time to stop - !-------------------------------- + call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf ) + call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf ) - call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return + if (masterproc) then + write(iulog,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + write(iulog,F02) 'nextsw_cday is : ', nextsw_cday + write(iulog,F02) 'calday is : ', calday + write(iulog,F02) 'eccen is : ', eccen + write(iulog,F02) 'mvelpp is : ', mvelpp + write(iulog,F02) 'lambm0 is : ', lambm0 + write(iulog,F02) 'obliqr is : ', obliqr + write(iulog,F02) 'declin is : ', declin + write(iulog,F02) 'declinp1 is : ', declinp1 + write(iulog,* ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + end if - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - nlend = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - nlend = .false. - endif - if (masterproc) then - write(iulog,*)' stop alarm is ',nlend - end if + !-------------------------------- + ! Determine doalb based on nextsw_cday sent from atm model + !-------------------------------- - !-------------------------------- - ! Run CTSM - !-------------------------------- + if (nstep == 1) then + !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) + doalb = .false. + else + doalb = (nextsw_cday >= -0.5_r8) + end if - call t_barrierf('sync_ctsm_run1', mpicom) + if (masterproc) then + write(iulog,*) '------------ LILAC ----------------' + write(iulog,*) 'nstep : ', nstep + write(iulog,*) 'calday : ', calday + write(iulog,*) 'caldayp1 : ', caldayp1 + write(iulog,*) 'nextsw_cday : ', nextsw_cday + write(iulog,*) 'doalb : ', doalb + write(iulog,*) '-------------------------------------' + end if + + call update_rad_dtime(doalb) + + !-------------------------------- + ! Determine if time to write restart + !-------------------------------- - ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of - ! the timestep and is preferred for restart file names - ! TODO: is this correct for lilac? + call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc) + if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet(nexttime, yy=yr_lilac, mm=mon_lilac, dd=day_lilac, s=tod_lilac, rc=rc) + rstwr = .true. + call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return - write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_lilac, mon_lilac, day_lilac, tod_lilac + else + rstwr = .false. + endif + if (masterproc) then + write(iulog,*)' restart alarm is ',rstwr + end if - call t_startf ('ctsm_run') - call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic=.false.) - call t_stopf ('ctsm_run') + !-------------------------------- + ! Determine if time to stop + !-------------------------------- - !-------------------------------- - ! Pack export state - !-------------------------------- + call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return - call t_startf ('lc_lnd_export') - call export_fields(export_state, bounds, rc) + if (ESMF_AlarmIsRinging(alarm, rc=rc)) then + if (ChkErr(rc,__LINE__,u_FILE_u)) return + nlend = .true. + call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call t_stopf ('lc_lnd_export') + else + nlend = .false. + endif + if (masterproc) then + write(iulog,*)' stop alarm is ',nlend + end if + + !-------------------------------- + ! Run CTSM + !-------------------------------- + + call t_barrierf('sync_ctsm_run1', mpicom) + + ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of + ! the timestep and is preferred for restart file names + ! TODO: is this correct for lilac? + + call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call ESMF_TimeGet(nexttime, yy=yr_lilac, mm=mon_lilac, dd=day_lilac, s=tod_lilac, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_lilac, mon_lilac, day_lilac, tod_lilac - !-------------------------------- - ! Advance ctsm time step - !-------------------------------- + call t_startf ('ctsm_run') + call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic=.false.) + call t_stopf ('ctsm_run') - call advance_timestep() + !-------------------------------- + ! Pack export state + !-------------------------------- + + call t_startf ('lc_lnd_export') + call export_fields(export_state, bounds, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call t_stopf ('lc_lnd_export') + + !-------------------------------- + ! Advance ctsm time step + !-------------------------------- -!KO end do + call advance_timestep() !-------------------------------- ! Check that internal clock is in sync with lilac driver clock diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index 82e386c6da..a6c97f617b 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -741,7 +741,6 @@ subroutine ModelAdvance(gcomp, rc) integer :: localPeCount ! Number of local Processors logical :: rstwr ! .true. ==> write restart file before returning logical :: nlend ! .true. ==> last time-step -!KO logical :: dosend ! true => send data back to driver logical :: doalb ! .true. ==> do albedo calculation on this time step real(r8) :: nextsw_cday ! calday from clock of next radiation computation real(r8) :: caldayp1 ! ctsm calday plus dtime offset @@ -817,123 +816,104 @@ subroutine ModelAdvance(gcomp, rc) !-------------------------------- dtime = get_step_size() -!KO dosend = .false. -!KO do while(.not. dosend) - - ! TODO: This is currently hard-wired - is there a better way for nuopc? - ! Note that the model clock is updated at the end of the time step not at the beginning - nstep = get_nstep() -!KO ! I don't think this is necessary anymore since there is no longer an nstep=0 -!KO ! In fact, according to the following comment in src/cpl/lilac/lnd_comp_esmf.F90 we should -!KO ! be able to remove this do while loop and the dosend variable. I've done that here. -!KO if (nstep > 0) then -!KO dosend = .true. -!KO end if - - !-------------------------------- - ! Determine doalb based on nextsw_cday sent from atm model - !-------------------------------- - - caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.) - -!KO if (nstep == 0) then -!KO doalb = .false. -!KO else if (nstep == 1) then -!KO doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) -!KO else -!KO doalb = (nextsw_cday >= -0.5_r8) -!KO end if -!KO -!KO ! Removed the nstep=0 check - if (nstep == 1) then - doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) - else - doalb = (nextsw_cday >= -0.5_r8) - end if -!KO - call update_rad_dtime(doalb) - !-------------------------------- - ! Determine if time to stop - !-------------------------------- + ! TODO: This is currently hard-wired - is there a better way for nuopc? + ! Note that the model clock is updated at the end of the time step not at the beginning + nstep = get_nstep() - call ESMF_ClockGetAlarm(clock, alarmname='alarm_stop', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return + !-------------------------------- + ! Determine doalb based on nextsw_cday sent from atm model + !-------------------------------- - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - nlend = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - nlend = .false. - endif + caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.) - !-------------------------------- - ! Determine if time to write restart - !-------------------------------- - rstwr = .false. - if (nlend .and. write_restart_at_endofrun) then - rstwr = .true. - else - call ESMF_ClockGetAlarm(clock, alarmname='alarm_restart', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (ESMF_AlarmIsCreated(alarm, rc=rc)) then - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - endif - endif - end if + if (nstep == 1) then + doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8) + else + doalb = (nextsw_cday >= -0.5_r8) + end if - !-------------------------------- - ! Run CTSM - !-------------------------------- + call update_rad_dtime(doalb) - ! call ESMF_VMBarrier(vm, rc=rc) - ! if (ChkErr(rc,__LINE__,u_FILE_u)) return + !-------------------------------- + ! Determine if time to stop + !-------------------------------- - call t_startf ('shr_orb_decl') - ! Note - the orbital inquiries set the values in clm_varorb via the module use statements - call clm_orbital_update(clock, iulog, masterproc, eccen, obliqr, lambm0, mvelpp, rc) + call ESMF_ClockGetAlarm(clock, alarmname='alarm_stop', alarm=alarm, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + + if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - calday = get_curr_calday(reuse_day_365_for_day_366=.true.) - call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf ) - call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf ) - call t_stopf ('shr_orb_decl') - - call t_startf ('ctsm_run') - ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of - ! the timestep and is preferred for restart file names - call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc) + nlend = .true. + call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet(nexttime, yy=yr_sync, mm=mon_sync, dd=day_sync, s=tod_sync, rc=rc) + else + nlend = .false. + endif + + !-------------------------------- + ! Determine if time to write restart + !-------------------------------- + rstwr = .false. + if (nlend .and. write_restart_at_endofrun) then + rstwr = .true. + else + call ESMF_ClockGetAlarm(clock, alarmname='alarm_restart', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_sync, mon_sync, day_sync, tod_sync - call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic) - call t_stopf ('ctsm_run') + if (ESMF_AlarmIsCreated(alarm, rc=rc)) then + if (ESMF_AlarmIsRinging(alarm, rc=rc)) then + if (ChkErr(rc,__LINE__,u_FILE_u)) return + rstwr = .true. + call ESMF_AlarmRingerOff( alarm, rc=rc ) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + endif + endif + end if - !-------------------------------- - ! Pack export state - !-------------------------------- + !-------------------------------- + ! Run CTSM + !-------------------------------- - call t_startf ('lc_lnd_export') - call export_fields(gcomp, bounds, glc_present, rof_prognostic, & - water_inst%waterlnd2atmbulk_inst, lnd2atm_inst, lnd2glc_inst, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call t_stopf ('lc_lnd_export') + ! call ESMF_VMBarrier(vm, rc=rc) + ! if (ChkErr(rc,__LINE__,u_FILE_u)) return - !-------------------------------- - ! Advance ctsm time step - !-------------------------------- + call t_startf ('shr_orb_decl') + ! Note - the orbital inquiries set the values in clm_varorb via the module use statements + call clm_orbital_update(clock, iulog, masterproc, eccen, obliqr, lambm0, mvelpp, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + calday = get_curr_calday(reuse_day_365_for_day_366=.true.) + call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf ) + call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf ) + call t_stopf ('shr_orb_decl') + + call t_startf ('ctsm_run') + ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of + ! the timestep and is preferred for restart file names + call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call ESMF_TimeGet(nexttime, yy=yr_sync, mm=mon_sync, dd=day_sync, s=tod_sync, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_sync, mon_sync, day_sync, tod_sync + call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic) + call t_stopf ('ctsm_run') + + !-------------------------------- + ! Pack export state + !-------------------------------- + + call t_startf ('lc_lnd_export') + call export_fields(gcomp, bounds, glc_present, rof_prognostic, & + water_inst%waterlnd2atmbulk_inst, lnd2atm_inst, lnd2glc_inst, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call t_stopf ('lc_lnd_export') - call t_startf ('lc_ctsm2_adv_timestep') - call advance_timestep() - call t_stopf ('lc_ctsm2_adv_timestep') + !-------------------------------- + ! Advance ctsm time step + !-------------------------------- -!KO end do + call t_startf ('lc_ctsm2_adv_timestep') + call advance_timestep() + call t_stopf ('lc_ctsm2_adv_timestep') ! Check that internal clock is in sync with master clock ! Note that the driver clock has not been updated yet - so at this point From caa384b75ce962e2fa1d7c4fc22f92fc45ffd4a4 Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Tue, 1 Aug 2023 11:36:15 -0600 Subject: [PATCH 015/159] Remove comment. --- src/utils/clm_time_manager.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index 31e9b30927..da8c73ed43 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -680,7 +680,6 @@ subroutine advance_timestep() call ESMF_ClockAdvance( tm_clock, rc=rc ) call chkrc(rc, sub//': error return from ESMF_ClockAdvance') -!KO Do we want to do this? tm_first_restart_step = .false. end subroutine advance_timestep From 0dfd9018c7cd7581127c7ee4fee51554b00f196d Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Thu, 3 Aug 2023 12:42:27 -0600 Subject: [PATCH 016/159] Remove BACKWARD COMPATIBILITY comment. --- src/biogeochem/CNPhenologyMod.F90 | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/biogeochem/CNPhenologyMod.F90 b/src/biogeochem/CNPhenologyMod.F90 index 7ce359aa53..4f5323b888 100644 --- a/src/biogeochem/CNPhenologyMod.F90 +++ b/src/biogeochem/CNPhenologyMod.F90 @@ -366,21 +366,8 @@ subroutine CNPhenology (bounds, num_soilc, filter_soilc, num_soilp, & soilstate_inst, temperature_inst, atm2lnd_inst, wateratm2lndbulk_inst, cnveg_state_inst, & cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst) - ! BACKWARDS_COMPATIBILITY(wjs, 2022-02-03) Old restart files generated at the end - ! of the year can indicate that a crop was panted on Jan 1, because that used to be - ! the time given to the last time step of the year. This would cause problems if we - ! ran CropPhenology in time step 0, because now time step 0 is labeled as Dec 31, - ! so CropPhenology would see the crop as having been planted 364 days ago, and so - ! would want to harvest this newly-planted crop. To avoid this situation, we avoid - ! calling CropPhenology on time step 0. - ! - ! This .not. is_first_step() condition can be removed either when we can rely on - ! all restart files having been generated with - ! https://github.com/ESCOMP/CTSM/issues/1623 resolved, or we stop having a time - ! step 0 (https://github.com/ESCOMP/CTSM/issues/925). !KO if (num_pcropp > 0 .and. .not. is_first_step()) then !KO - ! Unknown if all restart files have been generated with 1623 resolved but we no longer have a time step 0 if (num_pcropp > 0) then !KO call CropPhenology(num_pcropp, filter_pcropp, & From c9c89a80b5c0706c74b4f7dafa10fe0b8e5cee1e Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 1 Nov 2023 15:27:03 -0600 Subject: [PATCH 017/159] Correct a comment. --- python/ctsm/crop_calendars/generate_gdds_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index cb05f1920d..b677423173 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -217,7 +217,7 @@ def import_and_process_1yr( else: chunks = None - # Get h2 file (list) + # Get h1 file (list) h1_pattern = os.path.join(indir, "*h1.*.nc") h1_filelist = glob.glob(h1_pattern) if not h1_filelist: From d0592208e9cdd9579a0ace44b994fcf77dec1c33 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 1 Nov 2023 15:35:39 -0600 Subject: [PATCH 018/159] Print error()s to console, not just log file. --- python/ctsm/crop_calendars/generate_gdds_functions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index b677423173..e741b59bb7 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -45,6 +45,7 @@ def log(logger, string): def error(logger, string): + print(string) logger.error(string) raise RuntimeError(string) From b311d1d35b34eb05ad12e9276832404ca64f8562 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 1 Nov 2023 15:27:44 -0600 Subject: [PATCH 019/159] Rearrange search for h2 files in import_and_process_1yr(). --- .../ctsm/crop_calendars/generate_gdds_functions.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index e741b59bb7..74207c6e2c 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -478,13 +478,14 @@ def import_and_process_1yr( log(logger, f" Importing accumulated GDDs...") clm_gdd_var = "GDDACCUM" myVars = [clm_gdd_var, "GDDHARV"] - pattern = os.path.join(indir, f"*h2.{thisYear-1}-01-01*.nc") - h2_files = glob.glob(pattern) - if not h2_files: - pattern = os.path.join(indir, f"*h2.{thisYear-1}-01-01*.nc.base") + patterns = [f"*h2.{thisYear-1}-01-01*.nc", f"*h2.{thisYear-1}-01-01*.nc.base"] + for p in patterns: + pattern = os.path.join(indir, p) h2_files = glob.glob(pattern) - if not h2_files: - error(logger, f"No files found matching pattern '*h2.{thisYear-1}-01-01*.nc(.base)'") + if h2_files: + break + if not h2_files: + error(logger, f"No files found matching patterns: {patterns}") h2_ds = utils.import_ds( h2_files, myVars=myVars, From fa843e5ee095431bd5faf1930be8c764fb392f8e Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 1 Nov 2023 15:36:15 -0600 Subject: [PATCH 020/159] Fix h2 file patterns in import_and_process_1yr(). --- python/ctsm/crop_calendars/generate_gdds_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index 74207c6e2c..bc197cd429 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -478,7 +478,7 @@ def import_and_process_1yr( log(logger, f" Importing accumulated GDDs...") clm_gdd_var = "GDDACCUM" myVars = [clm_gdd_var, "GDDHARV"] - patterns = [f"*h2.{thisYear-1}-01-01*.nc", f"*h2.{thisYear-1}-01-01*.nc.base"] + patterns = [f"*h2.{thisYear-1}-01*.nc", f"*h2.{thisYear-1}-01*.nc.base"] for p in patterns: pattern = os.path.join(indir, p) h2_files = glob.glob(pattern) From c0bf3a166a8d5f965750030eba693cb00d9e8aa6 Mon Sep 17 00:00:00 2001 From: wwieder Date: Mon, 18 Mar 2024 06:26:08 -0600 Subject: [PATCH 021/159] BNF usermods --- .../BNF/BNF_Bon/include_user_mods | 1 + .../usermods_dirs/BNF/BNF_Bon/shell_commands | 10 +++ .../usermods_dirs/BNF/BNF_Bon/user_nl_clm | 22 ++++++ .../BNF/BNF_Bon/user_nl_datm_streams | 71 +++++++++++++++++++ .../BNF/BNF_Har/include_user_mods | 1 + .../usermods_dirs/BNF/BNF_Har/shell_commands | 10 +++ .../usermods_dirs/BNF/BNF_Har/user_nl_clm | 23 ++++++ .../BNF/BNF_Har/user_nl_datm_streams | 71 +++++++++++++++++++ .../BNF/BNF_Man/include_user_mods | 1 + .../usermods_dirs/BNF/BNF_Man/shell_commands | 10 +++ .../usermods_dirs/BNF/BNF_Man/user_nl_clm | 22 ++++++ .../BNF/BNF_Man/user_nl_datm_streams | 71 +++++++++++++++++++ .../usermods_dirs/BNF/defaults/shell_commands | 18 +++++ 13 files changed, 331 insertions(+) create mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods create mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands create mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm create mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams create mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods create mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/shell_commands create mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm create mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams create mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods create mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/shell_commands create mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm create mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams create mode 100644 cime_config/usermods_dirs/BNF/defaults/shell_commands diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods new file mode 100644 index 0000000000..b152996d95 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods @@ -0,0 +1 @@ +../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands new file mode 100644 index 0000000000..18bc60ee38 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands @@ -0,0 +1,10 @@ + +# Change below line if you move the subset data directory + +./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon + +./xmlchange PTS_LON=212.25 + +./xmlchange PTS_LAT=64.75 + +./xmlchange CLM_USRDAT_NAME='BNF_Bon' diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm new file mode 100644 index 0000000000..ce0cb8fddb --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm @@ -0,0 +1,22 @@ +!---------------------------------------------------------------------------------- +! Users should add all user specific namelist changes below in the form of +! namelist_var = new_namelist_value +! +! EXCEPTIONS: +! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting +! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting +! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting +! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting +! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting +! Set co2_ppmv with CCSM_CO2_PPMV option +! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options +! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases +! (includes $inst_string for multi-ensemble cases) +! or with CLM_FORCE_COLDSTART to do a cold start +! or set it with an explicit filename here. +! Set maxpatch_glc with GLC_NEC option +! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable +!---------------------------------------------------------------------------------- + +flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets +fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Bon_c221108.nc' diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams new file mode 100644 index 0000000000..dbd7b81f92 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams @@ -0,0 +1,71 @@ +!------------------------------------------------------------------------ +! This file is used to modify datm.streams.xml generated in $RUNDIR +! Entries should have the form +! :<= new stream_value> +! The following are accepted values for an assume streamname of foo +! foo:meshfile = character string +! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) +! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) +! foo:taxmode = one of [cycle, extend, limit] +! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] +! foo:readmode = single (only suported mode right now) +! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] +! foo:dtlimit = real (1.5 is default) +! foo:year_first = integer +! foo:year_last = integer +! foo:year_align = integer +! foo:vectors = one of [none,u:v] +! foo:lev_dimname: = one of [null,name of level dimenion name] +! foo:offset = integer +! As an example: +! foo:year_first = 1950 +! would change the stream year_first stream_entry to 1950 for the foo stream block +! NOTE: multi-line inputs are enabled by adding a \ at the end of the line +! As an emaple: +! foo:datafiles=foo1,foo2, \ +! foo3 +! Will yield the following new entry for datafiles in stream foo +! +! foo1 +! foo2 +! foo3 +! +!----------------------------------------------------------------------- +!CLM_USRDAT.BNF_Bon:offset = -48600 +!CLM_USRDAT.BNF_Bon:dtlimit = 30 +!CLM_USRDAT.BNF_Bon:year_first = 1850 +!CLM_USRDAT.BNF_Bon:year_align = 1850 +!CLM_USRDAT.BNF_Bon:year_last = 1869 + +CLM_USRDAT.BNF_Bon:datavars = \ + PRECTmms Faxa_precn, \ + FSDS Faxa_swdn, \ + ZBOT Sa_z, \ + TBOT Sa_tbot, \ + WIND Sa_wind, \ + QATM Sa_shum, \ + PSRF Sa_pbot, \ + FLDS Faxa_lwdn + +CLM_USRDAT.BNF_Bon:datafiles = \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1850.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1851.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1852.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1853.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1854.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1855.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1856.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1857.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1858.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1859.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1860.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1861.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1862.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1863.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1864.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1865.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1866.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1867.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1868.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1869.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods new file mode 100644 index 0000000000..b152996d95 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods @@ -0,0 +1 @@ +../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands new file mode 100644 index 0000000000..04d998473f --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands @@ -0,0 +1,10 @@ + +# Change below line if you move the subset data directory + +./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har + +./xmlchange PTS_LON=287.75 + +./xmlchange PTS_LAT=42.75 + +./xmlchange CLM_USRDAT_NAME='BNF_Har' diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm new file mode 100644 index 0000000000..33c4a27486 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm @@ -0,0 +1,23 @@ +!---------------------------------------------------------------------------------- +! Users should add all user specific namelist changes below in the form of +! namelist_var = new_namelist_value +! +! EXCEPTIONS: +! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting +! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting +! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting +! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting +! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting +! Set co2_ppmv with CCSM_CO2_PPMV option +! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options +! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases +! (includes $inst_string for multi-ensemble cases) +! or with CLM_FORCE_COLDSTART to do a cold start +! or set it with an explicit filename here. +! Set maxpatch_glc with GLC_NEC option +! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable +!---------------------------------------------------------------------------------- + +flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets +fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Har_c221109.nc' + diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams new file mode 100644 index 0000000000..583fe0eb3c --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams @@ -0,0 +1,71 @@ +!------------------------------------------------------------------------ +! This file is used to modify datm.streams.xml generated in $RUNDIR +! Entries should have the form +! :<= new stream_value> +! The following are accepted values for an assume streamname of foo +! foo:meshfile = character string +! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) +! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) +! foo:taxmode = one of [cycle, extend, limit] +! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] +! foo:readmode = single (only suported mode right now) +! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] +! foo:dtlimit = real (1.5 is default) +! foo:year_first = integer +! foo:year_last = integer +! foo:year_align = integer +! foo:vectors = one of [none,u:v] +! foo:lev_dimname: = one of [null,name of level dimenion name] +! foo:offset = integer +! As an example: +! foo:year_first = 1950 +! would change the stream year_first stream_entry to 1950 for the foo stream block +! NOTE: multi-line inputs are enabled by adding a \ at the end of the line +! As an emaple: +! foo:datafiles=foo1,foo2, \ +! foo3 +! Will yield the following new entry for datafiles in stream foo +! +! foo1 +! foo2 +! foo3 +! +!----------------------------------------------------------------------- +!CLM_USRDAT.BNF_Har:offset = -48600 +!CLM_USRDAT.BNF_Har:dtlimit = 30 +!CLM_USRDAT.BNF_Har:year_first = 1850 +!CLM_USRDAT.BNF_Har:year_align = 1850 +!CLM_USRDAT.BNF_Har:year_last = 1869 + +CLM_USRDAT.BNF_Har:datavars = \ + PRECTmms Faxa_precn, \ + FSDS Faxa_swdn, \ + ZBOT Sa_z, \ + TBOT Sa_tbot, \ + WIND Sa_wind, \ + QATM Sa_shum, \ + PSRF Sa_pbot, \ + FLDS Faxa_lwdn + +CLM_USRDAT.BNF_Har:datafiles = \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1850.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1851.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1852.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1853.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1854.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1855.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1856.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1857.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1858.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1859.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1860.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1861.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1862.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1863.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1864.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1865.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1866.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1867.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1868.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1869.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods new file mode 100644 index 0000000000..b152996d95 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods @@ -0,0 +1 @@ +../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands new file mode 100644 index 0000000000..72529f64d5 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands @@ -0,0 +1,10 @@ + +# Change below line if you move the subset data directory + +./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man + +./xmlchange PTS_LON=299.75 + +./xmlchange PTS_LAT=-3.25 + +./xmlchange CLM_USRDAT_NAME='BNF_Man' diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm new file mode 100644 index 0000000000..5d5ec2dd03 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm @@ -0,0 +1,22 @@ +!---------------------------------------------------------------------------------- +! Users should add all user specific namelist changes below in the form of +! namelist_var = new_namelist_value +! +! EXCEPTIONS: +! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting +! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting +! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting +! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting +! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting +! Set co2_ppmv with CCSM_CO2_PPMV option +! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options +! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases +! (includes $inst_string for multi-ensemble cases) +! or with CLM_FORCE_COLDSTART to do a cold start +! or set it with an explicit filename here. +! Set maxpatch_glc with GLC_NEC option +! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable +!---------------------------------------------------------------------------------- + +flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets +fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Man_c221109.nc' diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams new file mode 100644 index 0000000000..4a9786ef07 --- /dev/null +++ b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams @@ -0,0 +1,71 @@ +!------------------------------------------------------------------------ +! This file is used to modify datm.streams.xml generated in $RUNDIR +! Entries should have the form +! :<= new stream_value> +! The following are accepted values for an assume streamname of foo +! foo:meshfile = character string +! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) +! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) +! foo:taxmode = one of [cycle, extend, limit] +! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] +! foo:readmode = single (only suported mode right now) +! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] +! foo:dtlimit = real (1.5 is default) +! foo:year_first = integer +! foo:year_last = integer +! foo:year_align = integer +! foo:vectors = one of [none,u:v] +! foo:lev_dimname: = one of [null,name of level dimenion name] +! foo:offset = integer +! As an example: +! foo:year_first = 1950 +! would change the stream year_first stream_entry to 1950 for the foo stream block +! NOTE: multi-line inputs are enabled by adding a \ at the end of the line +! As an emaple: +! foo:datafiles=foo1,foo2, \ +! foo3 +! Will yield the following new entry for datafiles in stream foo +! +! foo1 +! foo2 +! foo3 +! +!----------------------------------------------------------------------- +!CLM_USRDAT.BNF_Man:offset = -48600 +!CLM_USRDAT.BNF_Man:dtlimit = 30 +!CLM_USRDAT.BNF_Man:year_first = 1850 +!CLM_USRDAT.BNF_Man:year_align = 1850 +!CLM_USRDAT.BNF_Man:year_last = 1869 + +CLM_USRDAT.BNF_Man:datavars = \ + PRECTmms Faxa_precn, \ + FSDS Faxa_swdn, \ + ZBOT Sa_z, \ + TBOT Sa_tbot, \ + WIND Sa_wind, \ + QATM Sa_shum, \ + PSRF Sa_pbot, \ + FLDS Faxa_lwdn + +CLM_USRDAT.BNF_Man:datafiles = \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1850.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1851.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1852.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1853.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1854.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1855.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1856.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1857.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1858.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1859.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1860.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1861.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1862.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1863.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1864.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1865.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1866.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1867.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1868.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1869.nc, \ + /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/defaults/shell_commands b/cime_config/usermods_dirs/BNF/defaults/shell_commands new file mode 100644 index 0000000000..c9319f85bc --- /dev/null +++ b/cime_config/usermods_dirs/BNF/defaults/shell_commands @@ -0,0 +1,18 @@ + +# Change below line if you move the subset data directory +./xmlchange MPILIB=mpi-serial +./xmlchange DIN_LOC_ROOT_CLMFORC='/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN' +./xmlchange STOP_OPTION=nyears +./xmlchange CONTINUE_RUN=FALSE + +# Explicitly set PIO Type to NETCDF since this is a single processor case (should already be set this way) +./xmlchange PIO_TYPENAME=netcdf +./xmlchange DATM_YR_ALIGN=1851,DATM_YR_END=1870,DATM_YR_START=1851 +./xmlchange PIO_REARRANGER_LND=1 +# Set up a simulation from cold start +./xmlchange CLM_FORCE_COLDSTART=on +./xmlchange CLM_ACCELERATED_SPINUP=on +./xmlchange STOP_N=100 +./xmlchange REST_N=100 +./xmlchange RUN_STARTDATE=0001-01-01 +./xmlchange RESUBMIT=1 From 89e9f328459a36dc93ea7edfc79d85dd3be4da70 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 25 Sep 2024 12:03:12 -0600 Subject: [PATCH 022/159] Update WhatsNewInCTSM5.3.md --- WhatsNewInCTSM5.3.md | 63 ++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/WhatsNewInCTSM5.3.md b/WhatsNewInCTSM5.3.md index b1f753081b..1fabfd1192 100644 --- a/WhatsNewInCTSM5.3.md +++ b/WhatsNewInCTSM5.3.md @@ -1,53 +1,48 @@ -Purpose and description of changes since ctsm5.2.005 ----------------------------------------------------- +# What's new in CTSM 5.3 (tag `ctsm5.3.0`) -Bring in updates needed for the CESM3.0 science capability/functionality "chill". Most importantly bringing -in: CN Matrix to speed up spinup for the BGC model, updated surface datasets, updated Leung 2023 dust emissions, -explicit Air Conditioning for the Urban model, updates to crop calendars. For clm6_0 physics these options are now -default turned on in addition to Sturm snow, and excess ice. +## Purpose and description of changes since CTSM 5.2 (tag `ctsm5.2.005`) +- Adds CN Matrix method to speed up spinup for the BGC model. +- Updates surface datasets. +- Brings in new Leung 2023 dust emissions. +- Adds explicit air conditioning for the urban model. +- Updates crop calendars. +- Updates fire model with various improvements, including default parameterization against climate reanalysis from CRU-JRA instead of GSWP. +- FATES compsets can now be run with transient land use. -Changes to CTSM Infrastructure: -=============================== +These changes were needed ahead of the CESM3 capability/functionality "chill". For `clm6_0` physics these options are now turned on by default, in addition to Sturm snow and excess ice. - - manage_externals removed and replaced by git-fleximod - - Ability to handle CAM7 in LND_TUNING_MODE +## Changes to CTSM infrastructure + - `manage_externals` removed and replaced by `git-fleximod` + - Ability to handle CAM7 in `LND_TUNING_MODE` -Changes to CTSM Answers: -======================== +## Changes to CTSM answers - Changes to defaults for clm6_0 physics: + Changes to defaults for `clm6_0` physics: - Urban explicit A/C turned on - - Snow thermal conductivity is now Sturm_1997 - - New IC file for f09 1850 + - Snow thermal conductivity method is now `Sturm_1997` + - New initial conditions file for f09 ("1-degree") 1850, with more in progress - New crop calendars - - Dust emissions is now Leung_2023 + - Dust emissions method is now `Leung_2023` - Excess ice is turned on - - Updates to MEGAN for BVOC's + - Updates to MEGAN for BVOCs - Updates to BGC fire method Changes for all physics versions: - - Parameter files updated - FATES parameter file updated - Glacier region 1 is now undefined - - Update in FATES transient Land use + - Update in FATES transient land use - Pass active glacier (CISM) runoff directly to river model (MOSART) - - Add the option for using matrix for Carbon/Nitrogen BGC spinup + - Add the option for using Matrix CN method for Carbon/Nitrogen BGC spinup -New surface datasets: -===================== +## New surface datasets -- With new surface datasets the following GLC fields have region "1" set to UNSET: - glacier_region_behavior, glacier_region_melt_behavior, glacier_region_ice_runoff_behavior +- With new surface datasets the following GLC fields have region "1" set to UNSET: glacier_region_behavior, glacier_region_melt_behavior, glacier_region_ice_runoff_behavior - Updates to allow creating transient landuse timeseries files going back to 1700. -- Fix an important bug on soil fields that was there since ctsm5.2.0. This results in mksurfdata_esmf now giving identical answers with a change in number of processors, as it should. -- Add in creation of ne0np4.POLARCAP.ne30x4 surface datasets. -- Add version to the surface datasets. -- Remove the --hires_pft option from mksurfdata_esmf as we don't have the datasets for it. -- Remove VIC fields from surface datasets. - -New input datasets to mksurfdata_esmf: -====================================== - -- Updates in PFT/LAI/soil-color raw datasets (now from the TRENDY2024 timeseries that ends in 2023), as well as two fire datasets (AG fire, peatland), and the glacier behavior dataset. +- Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should. +- Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid. +- Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version. +- Remove the `--hires_pft` option from `mksurfdata_esmf` as we don't have the datasets for it. +- Remove `VIC` fields from surface datasets. +- Updates to input datasets in PFT/LAI/soil-color raw datasets (now from the TRENDY2024 timeseries that ends in 2023), as well as two fire datasets (crop fire peak month, peatland fraction), and the glacier behavior dataset. From 9f07cf99e2758f79213ff35ceebf991953e54eb8 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Thu, 26 Sep 2024 15:15:42 -0600 Subject: [PATCH 023/159] add timestamps to rpointer files --- src/cpl/nuopc/lnd_comp_nuopc.F90 | 5 +++- src/main/clm_initializeMod.F90 | 6 ++++- src/main/restFileMod.F90 | 39 ++++++++++++++++++++--------- src/utils/clm_time_manager.F90 | 42 ++++++++++++++++---------------- 4 files changed, 57 insertions(+), 35 deletions(-) diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index 3852a1bf1b..c977953627 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -656,7 +656,10 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) ! --------------------- ! Finish initializing ctsm ! --------------------- - call initialize2(ni, nj) + call ESMF_ClockGet(clock, currTime=currtime, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + + call initialize2(ni, nj, currtime) !-------------------------------- ! Create land export state diff --git a/src/main/clm_initializeMod.F90 b/src/main/clm_initializeMod.F90 index 340a799908..573331c3c3 100644 --- a/src/main/clm_initializeMod.F90 +++ b/src/main/clm_initializeMod.F90 @@ -124,12 +124,13 @@ subroutine initialize1(dtime) end subroutine initialize1 !----------------------------------------------------------------------- - subroutine initialize2(ni,nj) + subroutine initialize2(ni,nj, currtime) ! ! !DESCRIPTION: ! CLM initialization second phase ! ! !USES: + use ESMF , only : ESMF_Time use clm_varcon , only : spval use clm_varpar , only : natpft_lb, natpft_ub, cft_lb, cft_ub, maxpatch_glc use clm_varpar , only : surfpft_lb, surfpft_ub @@ -185,6 +186,7 @@ subroutine initialize2(ni,nj) ! ! !ARGUMENTS integer, intent(in) :: ni, nj ! global grid sizes + type(ESMF_Time), intent(in) :: currtime ! ! !LOCAL VARIABLES: integer :: c,g,i,j,k,l,n,p ! indices @@ -344,10 +346,12 @@ subroutine initialize2(ni,nj) source=create_nutrient_competition_method(bounds_proc)) call readParameters(photosyns_inst) + ! Initialize time manager if (nsrest == nsrStartup) then call timemgr_init() else + call timemgr_init(curr_date_in=currtime) call restFile_getfile(file=fnamer, path=pnamer) call restFile_open( flag='read', file=fnamer, ncid=ncid ) call timemgr_restart_io( ncid=ncid, flag='read' ) diff --git a/src/main/restFileMod.F90 b/src/main/restFileMod.F90 index 6a574406fd..b7f98209dd 100644 --- a/src/main/restFileMod.F90 +++ b/src/main/restFileMod.F90 @@ -6,13 +6,13 @@ module restFileMod ! ! !USES: #include "shr_assert.h" - use shr_kind_mod , only : r8 => shr_kind_r8 + use shr_kind_mod , only : r8 => shr_kind_r8, CL=>shr_kind_CL use decompMod , only : bounds_type, get_proc_clumps, get_clump_bounds use decompMod , only : bounds_level_proc use spmdMod , only : masterproc, mpicom use abortutils , only : endrun use shr_log_mod , only : errMsg => shr_log_errMsg - use clm_time_manager , only : timemgr_restart_io, get_nstep + use clm_time_manager , only : timemgr_restart_io, get_nstep, get_curr_date use subgridRestMod , only : subgridRestWrite, subgridRestRead, subgridRest_read_cleanup use accumulMod , only : accumulRest use clm_instMod , only : clm_instRest @@ -340,6 +340,7 @@ subroutine restFile_read_pfile( pnamer ) ! !USES: use fileutils , only : opnfil, getavu, relavu use clm_varctl, only : rpntfil, rpntdir, inst_suffix + use mpi, only : MPI_CHARACTER ! ! !ARGUMENTS: character(len=*), intent(out) :: pnamer ! full path of restart file @@ -347,8 +348,11 @@ subroutine restFile_read_pfile( pnamer ) ! !LOCAL VARIABLES: !EOP integer :: i ! indices + integer :: yr, mon, day, tod + character(len=17) :: timestamp integer :: nio ! restart unit integer :: status ! substring check status + logical :: found character(len=256) :: locfn ! Restart pointer file name !----------------------------------------------------------------------- @@ -359,17 +363,24 @@ subroutine restFile_read_pfile( pnamer ) ! New history files are always created for branch runs. if (masterproc) then - write(iulog,*) 'Reading restart pointer file....' + nio = getavu() + call get_curr_date(yr, mon, day, tod) + write(timestamp,'(".",i4.4,"-",i2.2,"-",i2.2,"-",i5.5)'),yr,mon,day,tod + locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)//timestamp + inquire(file=trim(locfn), exist=found) + if(.not. found) then + locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix) + endif + write(iulog,*) 'Reading restart pointer file: ',trim(locfn) + + call opnfil (locfn, nio, 'f') + read (nio,'(a256)') pnamer + call relavu (nio) endif - - nio = getavu() - locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix) - call opnfil (locfn, nio, 'f') - read (nio,'(a256)') pnamer - call relavu (nio) + call mpi_bcast (pnamer, CL, MPI_CHARACTER, 0, mpicom, status) if (masterproc) then - write(iulog,*) 'Reading restart data.....' + write(iulog,*) 'Reading restart data: ',trim(pnamer) write(iulog,'(72a1)') ("-",i=1,60) end if @@ -422,12 +433,16 @@ subroutine restFile_write_pfile( fnamer ) ! !LOCAL VARIABLES: integer :: m ! index integer :: nio ! restart pointer file + integer :: yr, mon, day, tod + character(len=17) :: timestamp character(len=256) :: filename ! local file name !----------------------------------------------------------------------- if (masterproc) then + call get_curr_date(yr, mon, day, tod) + write(timestamp,'(".",i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr, mon, day, tod nio = getavu() - filename= trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix) + filename= trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)//timestamp call opnfil( filename, nio, 'f' ) write(nio,'(a)') fnamer @@ -466,7 +481,7 @@ subroutine restFile_open( flag, file, ncid ) ! Open netcdf restart file if (masterproc) then - write(iulog,*) 'Reading restart dataset' + write(iulog,*) 'Reading restart dataset: ', trim(file) end if call ncd_pio_openfile (ncid, trim(file), 0) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index 955d98057a..b0bcef0691 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -177,7 +177,8 @@ end subroutine set_timemgr_init !========================================================================================= - subroutine timemgr_init( ) + subroutine timemgr_init(curr_date_in ) + type(ESMF_Time), intent(in), optional :: curr_date_in !--------------------------------------------------------------------------------- ! Initialize the ESMF time manager from the sync clock @@ -187,8 +188,8 @@ subroutine timemgr_init( ) character(len=*), parameter :: sub = 'clm::timemgr_init' integer :: rc ! return code type(ESMF_Time) :: start_date ! start date for run - type(ESMF_Time) :: curr_date ! temporary date used in logic type(ESMF_Time) :: ref_date ! reference date for time coordinate + type(ESMF_Time) :: curr_date ! temporary date used in logic type(ESMF_TimeInterval) :: day_step_size ! day step size type(ESMF_TimeInterval) :: step_size ! timestep size !--------------------------------------------------------------------------------- @@ -211,8 +212,11 @@ subroutine timemgr_init( ) start_date = TimeSetymd( start_ymd, start_tod, "start_date" ) ! Initialize current date - - curr_date = start_date + if(present(curr_date_in)) then + curr_date = curr_date_in + else + curr_date = start_date + endif call ESMF_TimeIntervalSet( step_size, s=dtime, rc=rc ) call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size') @@ -253,7 +257,7 @@ subroutine init_clock( start_date, ref_date, curr_date ) !--------------------------------------------------------------------------------- ! Purpose: Initialize the clock based on the start_date, ref_date and curr_date ! - use ESMF , only : ESMF_ClockCreate, ESMF_ClockAdvance + use ESMF , only : ESMF_ClockCreate, ESMF_ClockAdvance, esmf_clockiscreated type(ESMF_Time), intent(in) :: start_date ! start date for run type(ESMF_Time), intent(in) :: ref_date ! reference date for time coordinate @@ -277,6 +281,7 @@ subroutine init_clock( start_date, ref_date, curr_date ) ! manager included in cime appears to require stopTime. call ESMF_TimeSet(stop_date, yy=really_big_year, mm=12, dd=31, s=0, & calendar=tm_cal, rc=rc) + call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size') ! Error check @@ -299,9 +304,10 @@ subroutine init_clock( start_date, ref_date, curr_date ) ! Initialize the clock + tm_clock = ESMF_ClockCreate(name="CLM Time-manager clock", timeStep=step_size, startTime=start_date, & stopTime=stop_date, refTime=ref_date, rc=rc) - call chkrc(rc, sub//': error return from ESMF_ClockSetup') + call chkrc(rc, sub//': error return from ESMF_ClockCreate') ! Advance clock to the current time (in case of a restart) @@ -496,11 +502,12 @@ end subroutine timemgr_restart_io !========================================================================================= - subroutine timemgr_restart( ) + subroutine timemgr_restart() !--------------------------------------------------------------------------------- ! Restart the ESMF time manager using the synclock for ending date. ! + character(len=*), parameter :: sub = 'clm::timemgr_restart' integer :: rc ! return code integer :: yr, mon, day, tod ! Year, month, day, and second as integers @@ -520,16 +527,15 @@ subroutine timemgr_restart( ) dtime = rst_step_sec - ! Initialize start date from restart info - - start_date = TimeSetymd( rst_start_ymd, rst_start_tod, "start_date" ) + ! Check start date from restart info - ! Initialize current date from restart info + if (rst_start_ymd .ne. start_ymd .or. rst_start_tod .ne. start_tod) then + call shr_sys_abort(sub//'ERROR: mismatch in start date with restart file') + endif - curr_date = TimeSetymd( rst_curr_ymd, rst_curr_tod, "curr_date" ) - - call ESMF_TimeIntervalSet( step_size, s=dtime, rc=rc ) - call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size') + if (rst_ref_ymd .ne. ref_ymd .or. rst_ref_tod .ne. ref_tod) then + call shr_sys_abort(sub//'ERROR: mismatch in reference date with restart file') + endif call ESMF_TimeIntervalSet( day_step_size, d=1, rc=rc ) call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting day_step_size') @@ -540,12 +546,6 @@ subroutine timemgr_restart( ) ! Initialize ref date from restart info - ref_date = TimeSetymd( rst_ref_ymd, rst_ref_tod, "ref_date" ) - - ! Initialize clock - - call init_clock( start_date, ref_date, curr_date) - ! Advance the timestep. ! Data from the restart file corresponds to the last timestep of the previous run. From 718bd4177d18c21fa651d5c944b11cfb9ebd575a Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Thu, 17 Oct 2024 12:58:34 -0600 Subject: [PATCH 024/159] reverse initialization of alarm_stop and alarm_restart --- src/cpl/nuopc/lnd_comp_nuopc.F90 | 45 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index c977953627..a6aab619ce 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -1042,53 +1042,54 @@ subroutine ModelSetRunClock(gcomp, rc) call ESMF_LogWrite(subname//'setting alarms for ' // trim(name), ESMF_LOGMSG_INFO) !---------------- - ! Restart alarm + ! Stop alarm !---------------- - call NUOPC_CompAttributeGet(gcomp, name="restart_option", value=restart_option, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call NUOPC_CompAttributeGet(gcomp, name="restart_n", value=cvalue, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="stop_n", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) restart_n + read(cvalue,*) stop_n - call NUOPC_CompAttributeGet(gcomp, name="restart_ymd", value=cvalue, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="stop_ymd", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) restart_ymd + read(cvalue,*) stop_ymd - call alarmInit(mclock, restart_alarm, restart_option, & - opt_n = restart_n, & - opt_ymd = restart_ymd, & + call alarmInit(mclock, stop_alarm, stop_option, & + opt_n = stop_n, & + opt_ymd = stop_ymd, & RefTime = mcurrTime, & - alarmname = 'alarm_restart', rc=rc) + alarmname = 'alarm_stop', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_AlarmSet(restart_alarm, clock=mclock, rc=rc) + call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return !---------------- - ! Stop alarm + ! Restart alarm !---------------- - call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="restart_option", value=restart_option, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call NUOPC_CompAttributeGet(gcomp, name="stop_n", value=cvalue, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="restart_n", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) stop_n + read(cvalue,*) restart_n - call NUOPC_CompAttributeGet(gcomp, name="stop_ymd", value=cvalue, rc=rc) + call NUOPC_CompAttributeGet(gcomp, name="restart_ymd", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) stop_ymd + read(cvalue,*) restart_ymd - call alarmInit(mclock, stop_alarm, stop_option, & - opt_n = stop_n, & - opt_ymd = stop_ymd, & + call alarmInit(mclock, restart_alarm, restart_option, & + opt_n = restart_n, & + opt_ymd = restart_ymd, & RefTime = mcurrTime, & - alarmname = 'alarm_stop', rc=rc) + alarmname = 'alarm_restart', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc) + call ESMF_AlarmSet(restart_alarm, clock=mclock, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + end if !-------------------------------- From 1e81456204eeb0032c7f2514171c8c2396f709f8 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 17 Oct 2024 17:59:47 -0600 Subject: [PATCH 025/159] Remove a comment unrelated to these modifications --- src/main/histFileMod.F90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index bebc40f733..e449714e3c 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -5278,10 +5278,6 @@ character(len=max_length_filename) function set_hist_filename (hist_freq, hist_m write(cdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr,mon,day,sec endif write(hist_index,'(i1.1)') hist_file - 1 - ! TODO slevis: After hist_index add "i" or "a" - ! For guidance on how to split the files, search for - ! maxsplitfiles in https://github.com/ESCOMP/CAM/pull/903/files - ! See CAM#1003 for a bug-fix in monthly avged output set_hist_filename = "./"//trim(caseid)//"."//trim(compname)//trim(inst_suffix)//& ".h"//hist_index//"."//trim(cdate)//".nc" From e381e9d991b2ca47af5be0a9b55199a5b6e92fa8 Mon Sep 17 00:00:00 2001 From: wwieder Date: Thu, 7 Nov 2024 14:35:55 -0700 Subject: [PATCH 026/159] alternative nfix temperature cost function --- src/biogeochem/CNFUNMod.F90 | 153 ++++++++++++++++++++++++++++++++++-- src/main/pftconMod.F90 | 18 +++++ 2 files changed, 163 insertions(+), 8 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index a6614fe4b9..65524a6ba5 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -26,7 +26,7 @@ module CNFUNMod use pftconMod , only : pftcon, npcropmin use decompMod , only : bounds_type use clm_varctl , only : use_nitrif_denitrif,use_flexiblecn - use CNSharedParamsMod , only : use_matrixcn + use CNSharedParamsMod , only : use_matrixcn use abortutils , only : endrun use CNVegstateType , only : cnveg_state_type use CNVegCarbonStateType , only : cnveg_carbonstate_type @@ -290,7 +290,8 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: litterfall_n(bounds%begp:bounds%endp) ! N loss based on the leafc to litter (gN/m2) real(r8) :: litterfall_n_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2) real(r8) :: litterfall_c_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2) - real(r8) :: tc_soisno(bounds%begc:bounds%endc,1:nlevdecomp) ! Soil temperature (degrees Celsius) + real(r8) :: tc_soisno(bounds%begc:bounds%endc,1:nlevdecomp) ! Soil temperature (degrees Celsius) + real(r8) :: tc_soila10(bounds%begc:bounds%endc) ! 10 day running mean Soil temperature (degrees Celsius) real(r8) :: npp_remaining(bounds%begp:bounds%endp,1:nstp) ! A temporary variable for npp_remaining(gC/m2) real(r8) :: n_passive_step(bounds%begp:bounds%endp,1:nstp) ! N taken up by transpiration at substep(gN/m2) real(r8) :: n_passive_acc(bounds%begp:bounds%endp) ! N acquired by passive uptake (gN/m2) @@ -467,6 +468,18 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: total_c_spent_retrans real(r8) :: total_c_accounted_retrans + ! Nfix parameters from Bytnerowicz et al. (2022), + ! TODO, remove now that these have been put on parameter files + ! Temperate (and boreal) + !real(r8) :: nfix_tmin = -2.04_r8 + !real(r8) :: nfix_topt = 32.10_r8 + !real(r8) :: nfix_tmax = 43.98_r8 + ! Tropical parameters + !real(r8) :: nfix_tmin = 7.04_r8 ! Minimum temperature for tropical Nfix + !real(r8) :: nfix_topt = 33.22_r8 ! Optimum temperature for tropical Nfix + !real(r8) :: nfix_tmax = 45.35_r8 ! Max temperature for tropical N fix + + !------end of not_use_nitrif_denitrif------! !-------------------------------------------------------------------- @@ -507,6 +520,9 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& b_fix => pftcon%b_fix , & ! Input: A BNF parameter c_fix => pftcon%c_fix , & ! Input: A BNF parameter s_fix => pftcon%s_fix , & ! Input: A BNF parameter + nfix_tmin => pftcon%nfix_tmin , & ! Input: A BNF parameter + nfix_topt => pftcon%nfix_topt , & ! Input: A BNF parameter + nfix_tmax => pftcon%nfix_tmax , & ! Input: A BNF parameter akc_active => pftcon%akc_active , & ! Input: A mycorrhizal uptake ! parameter akn_active => pftcon%akn_active , & ! Input: A mycorrhizal uptake @@ -706,6 +722,8 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& ! liquid water (kg/m2) (new) (-nlevsno+1:nlevgrnd) t_soisno => temperature_inst%t_soisno_col , & ! Input: [real(r8) (:,:)] ! soil temperature (Kelvin) (-nlevsno+1:nlevgrnd) + soila10 => temperature_inst%soila10_col , & ! Input: [real(r8) (:) ] + ! col 10-day running mean of the 12cm soil layer temperature (K) crootfr => soilstate_inst%crootfr_patch & ! Input: [real(r8) (:,:)] ! fraction of roots for carbon in each soil layer (nlevgrnd) ) @@ -1041,9 +1059,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& npp_to_nonmyc_nh4(:) = 0.0_r8 npp_to_fixation(:) = 0.0_r8 npp_to_retrans(:) = 0.0_r8 - - - + unmetDemand = .TRUE. plant_ndemand_pool_step(p,istp) = plant_ndemand_pool(p) * permyc(p,istp) npp_remaining(p,istp) = availc_pool(p) * permyc(p,istp) @@ -1051,16 +1067,32 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& ! if (plant_ndemand_pool_step(p,istp) .gt. 0._r8) then ! ! plant_ndemand_pool_step > 0.0 - + do j = 1, nlevdecomp tc_soisno(c,j) = t_soisno(c,j) - tfrz + ! running mean soil temperature only calculated for single soil layer + tc_soila10(c) = soila10(c) - tfrz + if(pftcon%c3psn(patch%itype(p)).eq.1)then fixer=1 else fixer=0 endif - costNit(j,icostFix) = fun_cost_fix(fixer,a_fix(ivt(p)),b_fix(ivt(p))& - ,c_fix(ivt(p)) ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + ! TODO, make this a name list change determining which equation to use + ! This calls the Houlton function. + ! costNit(j,icostFix) = fun_cost_fix(fixer,a_fix(ivt(p)),b_fix(ivt(p))& + ! ,c_fix(ivt(p)) ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + + ! Bytnerowicz no acclimation calculation + costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, nfix_tmin(ivt(p))& + ,nfix_topt(ivt(p)), nfix_tmax(ivt(p)), big_cost,crootfr(p,j)& + ,s_fix(ivt(p)), tc_soisno(c,j)) + + + ! Bytnerowicz acclimation calculation + !costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_Acc(fixer,nfix_tmin,nfix_topt& + !,nfix_tmax ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soila10(c)) + end do cost_fix(p,1:nlevdecomp) = costNit(:,icostFix) @@ -1608,6 +1640,111 @@ real(r8) function fun_cost_fix(fixer,a_fix,b_fix,c_fix,big_cost,crootfr,s_fix, t end if ! ends up with the fixer or non-fixer decision end function fun_cost_fix + + +!========================================================================================= + real(r8) function fun_cost_fix_Bytnerowicz_noAcc(fixer,nfix_tmin,nfix_topt,nfix_tmax,big_cost,crootfr,s_fix, tc_soisno) + +! Description: +! Calculate the cost of fixing N by nodules. +! Code Description: +! This code is written to CTSM5.1 by Will Wieder 11/17/2022, modified for CLM6 11/01/2024 + + implicit none +!-------------------------------------------------------------------------- +! Function result. +!-------------------------------------------------------------------------- +! real(r8) , intent(out) :: cost_of_n !!! cost of fixing N (kgC/kgN) +!-------------------------------------------------------------------------- + integer, intent(in) :: fixer ! flag indicating if plant is a fixer + ! 1=yes, otherwise no. + real(r8), intent(in) :: nfix_tmin ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: nfix_topt ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: nfix_tmax ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: big_cost ! an arbitrary large cost (gC/gN) + real(r8), intent(in) :: crootfr ! fraction of roots for carbon that are in this layer + real(r8), intent(in) :: s_fix ! Inverts Houlton et al. 2008 and constrains between 7.5 and 12.5 + real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius) + + if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then + fun_cost_fix_Bytnerowicz_noAcc = (-1*s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& + ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& + ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) + + else + fun_cost_fix_Bytnerowicz_noAcc = big_cost + end if ! ends up with the fixer or non-fixer decision + + end function fun_cost_fix_Bytnerowicz_noAcc +!========================================================================================= + +! TODO, likely just remove the acclimation fuction, as it seems pretty complicated and didn't change point-scale results +!========================================================================================= + real(r8) function fun_cost_fix_Bytnerowicz_Acc(fixer,nfix_tmin,nfix_topt,nfix_tmax,big_cost,crootfr,s_fix,tc_soisno,tc_soila10) + +! Description: +! Calculate the cost of fixing N by nodules. +! Code Description: +! This code is written to CTSM5.1 by Will Wieder 11/17/2022 + + implicit none +!-------------------------------------------------------------------------- +! Function result. +!-------------------------------------------------------------------------- +! real(r8) , intent(out) :: cost_of_n !!! cost of fixing N (kgC/kgN) +!-------------------------------------------------------------------------- + integer, intent(in) :: fixer ! flag indicating if plant is a fixer + ! 1=yes, otherwise no. + real(r8), intent(inout) :: nfix_tmin ! As in Bytnerowicz et al. (2022) + real(r8), intent(inout) :: nfix_topt ! As in Bytnerowicz et al. (2022) + real(r8), intent(inout) :: nfix_tmax ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: big_cost ! an arbitrary large cost (gC/gN) + real(r8), intent(in) :: crootfr ! fraction of roots for carbon that are in this layer + real(r8), intent(in) :: s_fix ! Inverts Houlton et al. 2008 and constrains between 7.5 and 12.5 + real(r8), intent(in) :: tc_soila10 ! 10 day running mean soil temperature, 12 cm (degrees Celsius) + real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius) + + ! Temperate temperature function + !if (tc_soila10 < 18.5_r8) then + ! nfix_tmin = -2.04_r8 + ! nfix_topt = 32.10_r8 + ! nfix_tmax = 43.98_r8 + !else if (tc_soila10 >= 18.5_r8 .and. tc_soila10 < 28.5_r8) then + ! nfix_tmin = 0.697_r8 * tc_soila10 - 14.93_r8 + ! nfix_topt = 0.047_r8 * tc_soila10 + 31.24_r8 + ! nfix_tmax = 0.009_r8 * tc_soila10 + 43.82_r8 + !else + ! nfix_tmin = 4.93_r8 + ! nfix_topt = 32.58_r8 + ! nfix_tmax = 44.08_r8 + !end if + !Tropical temperature function !Tmax never changes! + nfix_tmax = 45.35_r8 + if (tc_soila10 < 18.5_r8) then + nfix_tmin = 2.37_r8 !parameter not the same as in noACC + nfix_topt = 30.34_r8 + else if (tc_soila10 >= 18.5_r8 .and. tc_soila10 < 28.5_r8) then + nfix_tmin = 0.932_r8 * tc_soila10 - 14.87_r8 + nfix_topt = 0.574_r8 * tc_soila10 + 19.72_r8 + else if (tc_soila10 >= 28.5_r8) then + nfix_tmin = 11.69_r8 + nfix_topt = 36.08_r8 + end if + + if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then + fun_cost_fix_Bytnerowicz_Acc = (-1*s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& + ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& + ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) + + !fun_cost_fix = (-1*s_fix) * 1.0_r8 / (1.25_r8* (exp(a_fix + b_fix * tc_soila10 * (1._r8 - 0.5_r8 * tc_soila10 / c_fix)) )) + else + fun_cost_fix_Bytnerowicz_Acc = big_cost + end if ! ends up with the fixer or non-fixer decision + + end function fun_cost_fix_Bytnerowicz_Acc +!========================================================================================= + + !========================================================================================= real(r8) function fun_cost_active(sminn_layer,big_cost,kc_active,kn_active,rootc_dens,crootfr,smallValue) diff --git a/src/main/pftconMod.F90 b/src/main/pftconMod.F90 index b987879c03..977a6f03e0 100644 --- a/src/main/pftconMod.F90 +++ b/src/main/pftconMod.F90 @@ -268,6 +268,9 @@ module pftconMod real(r8), allocatable :: b_fix (:) ! A BNF parameter real(r8), allocatable :: c_fix (:) ! A BNF parameter real(r8), allocatable :: s_fix (:) ! A BNF parameter + real(r8), allocatable :: nfix_tmin (:) ! A BNF parameter + real(r8), allocatable :: nfix_topt (:) ! A BNF parameter + real(r8), allocatable :: nfix_tmax (:) ! A BNF parameter real(r8), allocatable :: akc_active (:) ! A mycorrhizal uptake parameter real(r8), allocatable :: akn_active (:) ! A mycorrhizal uptake parameter real(r8), allocatable :: ekc_active (:) ! A mycorrhizal uptake parameter @@ -485,6 +488,9 @@ subroutine InitAllocate (this) allocate( this%b_fix (0:mxpft) ) allocate( this%c_fix (0:mxpft) ) allocate( this%s_fix (0:mxpft) ) + allocate( this%nfix_tmin (0:mxpft) ) + allocate( this%nfix_topt (0:mxpft) ) + allocate( this%nfix_tmax (0:mxpft) ) allocate( this%akc_active (0:mxpft) ) allocate( this%akn_active (0:mxpft) ) allocate( this%ekc_active (0:mxpft) ) @@ -880,6 +886,15 @@ subroutine InitRead(this) call ncd_io('s_fix', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) + call ncd_io('nfix_tmin', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) + + call ncd_io('nfix_topt', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) + + call ncd_io('nfix_tmax', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) + call ncd_io('akc_active', this%akc_active, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) @@ -1575,6 +1590,9 @@ subroutine Clean(this) deallocate( this%b_fix) deallocate( this%c_fix) deallocate( this%s_fix) + deallocate( this%nfix_tmin) + deallocate( this%nfix_topt) + deallocate( this%nfix_tmax) deallocate( this%akc_active) deallocate( this%akn_active) deallocate( this%ekc_active) From d07fd9d4271cc86cb3b02e24458d72b9585e649d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 11 Nov 2024 17:59:56 -0700 Subject: [PATCH 027/159] Removed comments with prefix !KO --- src/biogeochem/CNPhenologyMod.F90 | 3 -- src/biogeochem/CNVegetationFacade.F90 | 8 ----- src/biogeochem/CropType.F90 | 4 --- src/biogeochem/dynCNDVMod.F90 | 4 --- src/biogeophys/WaterStateType.F90 | 1 - src/main/clm_driver.F90 | 50 ++++++++++++--------------- src/main/histFileMod.F90 | 10 ------ src/utils/AnnualFluxDribbler.F90 | 3 -- src/utils/clm_time_manager.F90 | 7 +--- 9 files changed, 24 insertions(+), 66 deletions(-) diff --git a/src/biogeochem/CNPhenologyMod.F90 b/src/biogeochem/CNPhenologyMod.F90 index d1024e350f..5ad4fb1157 100644 --- a/src/biogeochem/CNPhenologyMod.F90 +++ b/src/biogeochem/CNPhenologyMod.F90 @@ -392,10 +392,7 @@ subroutine CNPhenology (bounds, num_soilc, filter_soilc, num_soilp, & soilstate_inst, temperature_inst, atm2lnd_inst, wateratm2lndbulk_inst, cnveg_state_inst, & cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst) -!KO if (num_pcropp > 0 .and. .not. is_first_step()) then -!KO if (num_pcropp > 0) then -!KO call CropPhenology(num_pcropp, filter_pcropp, & waterdiagnosticbulk_inst, temperature_inst, crop_inst, canopystate_inst, cnveg_state_inst, & cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst, & diff --git a/src/biogeochem/CNVegetationFacade.F90 b/src/biogeochem/CNVegetationFacade.F90 index 74a49f16a0..dd20ce50a2 100644 --- a/src/biogeochem/CNVegetationFacade.F90 +++ b/src/biogeochem/CNVegetationFacade.F90 @@ -1285,11 +1285,7 @@ subroutine EndOfTimeStepVegDynamics(this, bounds, num_natvegp, filter_natvegp, & ! Call dv (dynamic vegetation) at last time step of year call t_startf('d2dgvm') -!KO if (is_end_curr_year() .and. .not. is_first_step()) then -!KO - ! is_first_step check no longer necessary since there is no nstep=0 if (is_end_curr_year()) then -!KO ! Get date info. kyr is used in lpj(). At end of first year, kyr = 2. call get_curr_date(yr, mon, day, sec) @@ -1341,11 +1337,7 @@ subroutine WriteHistory(this, bounds) ! Write to CNDV history buffer if appropriate if (use_cndv) then -!KO if (is_end_curr_year() .and. .not. is_first_step()) then -!KO - ! is_first_step check no longer necessary since there is no nstep=0 if (is_end_curr_year()) then -!KO call t_startf('clm_drv_io_hdgvm') call CNDVHist( bounds, this%dgvs_inst ) if (masterproc) write(iulog,*) 'Annual CNDV calculations are complete' diff --git a/src/biogeochem/CropType.F90 b/src/biogeochem/CropType.F90 index 9279347a44..54395c4668 100644 --- a/src/biogeochem/CropType.F90 +++ b/src/biogeochem/CropType.F90 @@ -930,11 +930,7 @@ subroutine CropIncrementYear (this, num_pcropp, filter_pcropp) ! Update nyrs when it's the end of the year (unless it's the very start of the ! run). This assumes that, if this patch is active at the end of the year, then it was ! active for the whole year. -!KO if ((kmo == 1 .and. kda == 1 .and. mcsec == 0) .and. .not. is_first_step()) then -!KO - ! is_first_step check no longer necessary since there is no nstep=0 if ((kmo == 1 .and. kda == 1 .and. mcsec == 0)) then -!KO do fp = 1, num_pcropp p = filter_pcropp(fp) diff --git a/src/biogeochem/dynCNDVMod.F90 b/src/biogeochem/dynCNDVMod.F90 index 57e90d8917..d95313772a 100644 --- a/src/biogeochem/dynCNDVMod.F90 +++ b/src/biogeochem/dynCNDVMod.F90 @@ -99,11 +99,7 @@ subroutine dynCNDV_interp( bounds, dgvs_inst) patch%wtcol(p) = dgvs_inst%fpcgrid_patch(p) + & wt1 * (dgvs_inst%fpcgridold_patch(p) - dgvs_inst%fpcgrid_patch(p)) -!KO ! I don't think this is necessary since there no longer an nstep=0 -!KO if (mon==1 .and. day==1 .and. sec==dtime .and. nstep>0) then -!KO if (mon==1 .and. day==1 .and. sec==dtime) then -!KO dgvs_inst%fpcgridold_patch(p) = dgvs_inst%fpcgrid_patch(p) end if end if diff --git a/src/biogeophys/WaterStateType.F90 b/src/biogeophys/WaterStateType.F90 index 15763c47a7..35441d65d9 100644 --- a/src/biogeophys/WaterStateType.F90 +++ b/src/biogeophys/WaterStateType.F90 @@ -810,7 +810,6 @@ subroutine Restart(this, bounds, ncid, flag, & ! If initial run -- ensure that water is properly bounded (read only) if (flag == 'read' ) then -!KO ! I think leaving this in here is still necessary even though is_first_step is now based on nstep=1 if ( is_first_step() .and. bound_h2osoi) then do c = bounds%begc, bounds%endc l = col%landunit(c) diff --git a/src/main/clm_driver.F90 b/src/main/clm_driver.F90 index e3f57afc8c..f93143d9e3 100644 --- a/src/main/clm_driver.F90 +++ b/src/main/clm_driver.F90 @@ -206,7 +206,6 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro ! are passed to CLM in initialization, then this code block can be removed. ! ======================================================================== -!KO I think leaving this in here is still necessary even though is_first_step is now based on nstep=1 need_glacier_initialization = is_first_step() if (need_glacier_initialization) then @@ -1369,41 +1368,38 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro ! FIX(SPM, 082814) - in the fates branch RF and I commented out the if(.not. ! use_fates) then statement ... double check if this is required and why -! I don't think this is necessary since there no longer an nstep=0 -!KO if (nstep > 0) then - call t_startf('accum') + call t_startf('accum') - call atm2lnd_inst%UpdateAccVars(bounds_proc) + call atm2lnd_inst%UpdateAccVars(bounds_proc) - call temperature_inst%UpdateAccVars(bounds_proc, crop_inst) + call temperature_inst%UpdateAccVars(bounds_proc, crop_inst) - call canopystate_inst%UpdateAccVars(bounds_proc) + call canopystate_inst%UpdateAccVars(bounds_proc) - call water_inst%UpdateAccVars(bounds_proc) + call water_inst%UpdateAccVars(bounds_proc) - call energyflux_inst%UpdateAccVars(bounds_proc) + call energyflux_inst%UpdateAccVars(bounds_proc) - ! COMPILER_BUG(wjs, 2014-11-30, pgi 14.7) For pgi 14.7 to be happy when - ! compiling this threaded, I needed to change the dummy arguments to be - ! pointers, and get rid of the explicit bounds in the subroutine call. - ! call bgc_vegetation_inst%UpdateAccVars(bounds_proc, & - ! t_a10_patch=temperature_inst%t_a10_patch(bounds_proc%begp:bounds_proc%endp), & - ! t_ref2m_patch=temperature_inst%t_ref2m_patch(bounds_proc%begp:bounds_proc%endp)) - call bgc_vegetation_inst%UpdateAccVars(bounds_proc, & - t_a10_patch=temperature_inst%t_a10_patch, & - t_ref2m_patch=temperature_inst%t_ref2m_patch) + ! COMPILER_BUG(wjs, 2014-11-30, pgi 14.7) For pgi 14.7 to be happy when + ! compiling this threaded, I needed to change the dummy arguments to be + ! pointers, and get rid of the explicit bounds in the subroutine call. + ! call bgc_vegetation_inst%UpdateAccVars(bounds_proc, & + ! t_a10_patch=temperature_inst%t_a10_patch(bounds_proc%begp:bounds_proc%endp), & + ! t_ref2m_patch=temperature_inst%t_ref2m_patch(bounds_proc%begp:bounds_proc%endp)) + call bgc_vegetation_inst%UpdateAccVars(bounds_proc, & + t_a10_patch=temperature_inst%t_a10_patch, & + t_ref2m_patch=temperature_inst%t_ref2m_patch) - if (use_crop) then - call crop_inst%CropUpdateAccVars(bounds_proc, & - temperature_inst%t_ref2m_patch, temperature_inst%t_soisno_col) - end if + if (use_crop) then + call crop_inst%CropUpdateAccVars(bounds_proc, & + temperature_inst%t_ref2m_patch, temperature_inst%t_soisno_col) + end if - if(use_fates) then - call clm_fates%UpdateAccVars(bounds_proc) - end if + if(use_fates) then + call clm_fates%UpdateAccVars(bounds_proc) + end if - call t_stopf('accum') -!KO end if + call t_stopf('accum') ! ============================================================================ ! Update history buffer diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index b98847ccc2..b51d98fa20 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -2662,10 +2662,7 @@ subroutine htape_timeconst3D(t, & ! !DESCRIPTION: ! Write time constant 3D variables to history tapes. ! Only write out when this subroutine is called (normally only for -!KO ! primary history files at very first time-step, nstep=0). -!KO ! primary history files at very first time-step, nstep=1). -!KO ! Issue the required netcdf wrapper calls to define the history file ! contents. ! @@ -4140,13 +4137,6 @@ subroutine hist_htapes_wrapup( rstwr, nlend, bounds, & cycle end if -!KO ! Should no longer be needed -!KO ! Skip nstep=0 if monthly average -!KO -!KO if (nstep==0 .and. tape(t)%nhtfrq==0) then -!KO cycle -!KO end if - ! Determine if end of history interval tape(t)%is_endhist = .false. if (tape(t)%nhtfrq==0) then !monthly average diff --git a/src/utils/AnnualFluxDribbler.F90 b/src/utils/AnnualFluxDribbler.F90 index a6a880d16e..8ea854b904 100644 --- a/src/utils/AnnualFluxDribbler.F90 +++ b/src/utils/AnnualFluxDribbler.F90 @@ -258,11 +258,8 @@ subroutine set_curr_delta(this, bounds, delta) do i = beg_index, end_index this%amount_from_this_timestep(i) = delta(i) end do -!KO if (.not. this%allows_non_annual_delta .and. .not. is_first_step()) then -!KO ! is_first_step check no longer necessary since there is no nstep=0 if (.not. this%allows_non_annual_delta) then -!KO do i = beg_index, end_index if (this%amount_from_this_timestep(i) /= 0._r8) then write(iulog,*) subname//' ERROR: found unexpected non-zero delta mid-year' diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index 924075937d..ea9d98599d 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -238,10 +238,8 @@ subroutine timemgr_init( ) tm_perp_date = TimeSetymd( perpetual_ymd, 0, "tm_perp_date" ) end if -!KO - ! Advance time step to start at nstep=1 (instead of nstep=0) + ! Advance time step to start at nstep=1 call advance_timestep() -!KO ! Print configuration summary to log file (stdout). @@ -1750,10 +1748,7 @@ logical function is_first_step() call ESMF_ClockGet( tm_clock, advanceCount=step_no, rc=rc ) call chkrc(rc, sub//': error return from ESMF_ClockGet') nstep = step_no -!KO is_first_step = (nstep == 0) -!KO is_first_step = (nstep == 1) -!KO end function is_first_step !========================================================================================= From a4b9dcff6bcc36ab64a4dd37a03df4e879d1bbba Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 12 Nov 2024 12:07:59 -0700 Subject: [PATCH 028/159] Update docstring of is_first_step function --- src/utils/clm_time_manager.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index ea9d98599d..63f089a65e 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -1734,7 +1734,7 @@ end function is_end_curr_year logical function is_first_step() !--------------------------------------------------------------------------------- - ! Return true on first step of initial run only. + ! Return true on first step of any run. ! Local variables character(len=*), parameter :: sub = 'clm::is_first_step' From 88d5b0f0d7d5adf036d4661009a89f654bcd9cd8 Mon Sep 17 00:00:00 2001 From: wwieder Date: Tue, 12 Nov 2024 13:10:44 -0700 Subject: [PATCH 029/159] cleanup and print errors --- src/biogeochem/CNFUNMod.F90 | 147 +++++++++--------------------------- src/main/pftconMod.F90 | 6 +- 2 files changed, 39 insertions(+), 114 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index 65524a6ba5..7665a2fbca 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -291,7 +291,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: litterfall_n_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2) real(r8) :: litterfall_c_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2) real(r8) :: tc_soisno(bounds%begc:bounds%endc,1:nlevdecomp) ! Soil temperature (degrees Celsius) - real(r8) :: tc_soila10(bounds%begc:bounds%endc) ! 10 day running mean Soil temperature (degrees Celsius) real(r8) :: npp_remaining(bounds%begp:bounds%endp,1:nstp) ! A temporary variable for npp_remaining(gC/m2) real(r8) :: n_passive_step(bounds%begp:bounds%endp,1:nstp) ! N taken up by transpiration at substep(gN/m2) real(r8) :: n_passive_acc(bounds%begp:bounds%endp) ! N acquired by passive uptake (gN/m2) @@ -468,19 +467,9 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: total_c_spent_retrans real(r8) :: total_c_accounted_retrans - ! Nfix parameters from Bytnerowicz et al. (2022), - ! TODO, remove now that these have been put on parameter files - ! Temperate (and boreal) !real(r8) :: nfix_tmin = -2.04_r8 !real(r8) :: nfix_topt = 32.10_r8 !real(r8) :: nfix_tmax = 43.98_r8 - ! Tropical parameters - !real(r8) :: nfix_tmin = 7.04_r8 ! Minimum temperature for tropical Nfix - !real(r8) :: nfix_topt = 33.22_r8 ! Optimum temperature for tropical Nfix - !real(r8) :: nfix_tmax = 45.35_r8 ! Max temperature for tropical N fix - - - !------end of not_use_nitrif_denitrif------! !-------------------------------------------------------------------- !------------ @@ -501,6 +490,8 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& integer :: icost ! a local index integer :: fixer ! 0 = non-fixer, 1 ! =fixer + !TODO, make namelist option + integer :: nfix_method = 2 ! 1 = Houlton, 2 = Bytnerowicz logical :: unmetDemand ! True while there ! is still demand for N logical :: local_use_flexibleCN ! local version of use_flexCN @@ -510,7 +501,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& !-------------------------------------------------------------------- !--------------------------------- - associate(ivt => patch%itype , & ! Input: [integer (:) ] p + associate(ivt => patch%itype , & ! Input: [integer (:) ] p leafcn => pftcon%leafcn , & ! Input: leaf C:N (gC/gN) season_decid => pftcon%season_decid , & ! Input: binary flag for seasonal ! -deciduous leaf habit (0 or 1) @@ -538,10 +529,10 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& perecm => pftcon%perecm , & ! Input: The fraction of ECM ! -associated PFT grperc => pftcon%grperc , & ! Input: growth percentage - fun_cn_flex_a => pftcon%fun_cn_flex_a , & ! Parameter a of FUN-flexcn link code (def 5) - fun_cn_flex_b => pftcon%fun_cn_flex_b , & ! Parameter b of FUN-flexcn link code (def 200) - fun_cn_flex_c => pftcon%fun_cn_flex_c , & ! Parameter b of FUN-flexcn link code (def 80) - FUN_fracfixers => pftcon%FUN_fracfixers , & ! Fraction of C that can be used for fixation. + fun_cn_flex_a => pftcon%fun_cn_flex_a , & ! Parameter a of FUN-flexcn link code (def 5) + fun_cn_flex_b => pftcon%fun_cn_flex_b , & ! Parameter b of FUN-flexcn link code (def 200) + fun_cn_flex_c => pftcon%fun_cn_flex_c , & ! Parameter b of FUN-flexcn link code (def 80) + FUN_fracfixers => pftcon%FUN_fracfixers , & ! Fraction of C that can be used for fixation. leafcn_offset => cnveg_state_inst%leafcn_offset_patch , & ! Output: ! [real(r8) (:)] Leaf C:N used by FUN plantCN => cnveg_state_inst%plantCN_patch , & ! Output: [real(r8) (:)] Plant @@ -722,8 +713,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& ! liquid water (kg/m2) (new) (-nlevsno+1:nlevgrnd) t_soisno => temperature_inst%t_soisno_col , & ! Input: [real(r8) (:,:)] ! soil temperature (Kelvin) (-nlevsno+1:nlevgrnd) - soila10 => temperature_inst%soila10_col , & ! Input: [real(r8) (:) ] - ! col 10-day running mean of the 12cm soil layer temperature (K) crootfr => soilstate_inst%crootfr_patch & ! Input: [real(r8) (:,:)] ! fraction of roots for carbon in each soil layer (nlevgrnd) ) @@ -1070,45 +1059,48 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& do j = 1, nlevdecomp tc_soisno(c,j) = t_soisno(c,j) - tfrz - ! running mean soil temperature only calculated for single soil layer - tc_soila10(c) = soila10(c) - tfrz if(pftcon%c3psn(patch%itype(p)).eq.1)then fixer=1 else fixer=0 endif - ! TODO, make this a name list change determining which equation to use - ! This calls the Houlton function. - ! costNit(j,icostFix) = fun_cost_fix(fixer,a_fix(ivt(p)),b_fix(ivt(p))& - ! ,c_fix(ivt(p)) ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) - - ! Bytnerowicz no acclimation calculation - costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, nfix_tmin(ivt(p))& - ,nfix_topt(ivt(p)), nfix_tmax(ivt(p)), big_cost,crootfr(p,j)& - ,s_fix(ivt(p)), tc_soisno(c,j)) + ! TODO, make this a name list change determining which equation to use + if (nfix_method == 1) then + ! This calls the Houlton function. + costNit(j,icostFix) = fun_cost_fix(fixer,& + a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)),& + big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + elseif (nfix_method == 2) then + ! Bytnerowicz no acclimation calculation + + ! Hardwiring the parameters works + !costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer,& + ! nfix_tmin, nfix_topt, nfix_tmax& + ! ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + + ! Debug print statements + !write(iulog,*) "tmin, topt, tmax =", nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)) + !write(iulog,*) "a_fix, b_fix, c_fix =", a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)) + costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & + nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)), & + big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) - ! Bytnerowicz acclimation calculation - !costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_Acc(fixer,nfix_tmin,nfix_topt& - !,nfix_tmax ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soila10(c)) + endif end do cost_fix(p,1:nlevdecomp) = costNit(:,icostFix) !-------------------------------------------------------------------- - !------------ ! If passive uptake is insufficient, consider fixation, ! mycorrhizal ! non-mycorrhizal, storage, and retranslocation. !-------------------------------------------------------------------- - !------------ !-------------------------------------------------------------------- - !------------ ! Costs of active uptake. !-------------------------------------------------------------------- - !------------ !------Mycorrhizal Uptake Cost-----------------! do j = 1,nlevdecomp rootc_dens_step = rootc_dens(p,j) * permyc(p,istp) @@ -1658,19 +1650,19 @@ real(r8) function fun_cost_fix_Bytnerowicz_noAcc(fixer,nfix_tmin,nfix_topt,nfix_ !-------------------------------------------------------------------------- integer, intent(in) :: fixer ! flag indicating if plant is a fixer ! 1=yes, otherwise no. - real(r8), intent(in) :: nfix_tmin ! As in Bytnerowicz et al. (2022) - real(r8), intent(in) :: nfix_topt ! As in Bytnerowicz et al. (2022) - real(r8), intent(in) :: nfix_tmax ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: nfix_tmin ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: nfix_topt ! As in Bytnerowicz et al. (2022) + real(r8), intent(in) :: nfix_tmax ! As in Bytnerowicz et al. (2022) real(r8), intent(in) :: big_cost ! an arbitrary large cost (gC/gN) real(r8), intent(in) :: crootfr ! fraction of roots for carbon that are in this layer - real(r8), intent(in) :: s_fix ! Inverts Houlton et al. 2008 and constrains between 7.5 and 12.5 + real(r8), intent(in) :: s_fix ! Inverts the temperature function for a cost function real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius) if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then - fun_cost_fix_Bytnerowicz_noAcc = (-1*s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& - ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& - ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) - + fun_cost_fix_Bytnerowicz_noAcc = (-1*s_fix) * 1._r8 / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& + ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& + ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) + fun_cost_fix_Bytnerowicz_noAcc = min(fun_cost_fix_Bytnerowicz_noAcc,big_cost) else fun_cost_fix_Bytnerowicz_noAcc = big_cost end if ! ends up with the fixer or non-fixer decision @@ -1678,73 +1670,6 @@ real(r8) function fun_cost_fix_Bytnerowicz_noAcc(fixer,nfix_tmin,nfix_topt,nfix_ end function fun_cost_fix_Bytnerowicz_noAcc !========================================================================================= -! TODO, likely just remove the acclimation fuction, as it seems pretty complicated and didn't change point-scale results -!========================================================================================= - real(r8) function fun_cost_fix_Bytnerowicz_Acc(fixer,nfix_tmin,nfix_topt,nfix_tmax,big_cost,crootfr,s_fix,tc_soisno,tc_soila10) - -! Description: -! Calculate the cost of fixing N by nodules. -! Code Description: -! This code is written to CTSM5.1 by Will Wieder 11/17/2022 - - implicit none -!-------------------------------------------------------------------------- -! Function result. -!-------------------------------------------------------------------------- -! real(r8) , intent(out) :: cost_of_n !!! cost of fixing N (kgC/kgN) -!-------------------------------------------------------------------------- - integer, intent(in) :: fixer ! flag indicating if plant is a fixer - ! 1=yes, otherwise no. - real(r8), intent(inout) :: nfix_tmin ! As in Bytnerowicz et al. (2022) - real(r8), intent(inout) :: nfix_topt ! As in Bytnerowicz et al. (2022) - real(r8), intent(inout) :: nfix_tmax ! As in Bytnerowicz et al. (2022) - real(r8), intent(in) :: big_cost ! an arbitrary large cost (gC/gN) - real(r8), intent(in) :: crootfr ! fraction of roots for carbon that are in this layer - real(r8), intent(in) :: s_fix ! Inverts Houlton et al. 2008 and constrains between 7.5 and 12.5 - real(r8), intent(in) :: tc_soila10 ! 10 day running mean soil temperature, 12 cm (degrees Celsius) - real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius) - - ! Temperate temperature function - !if (tc_soila10 < 18.5_r8) then - ! nfix_tmin = -2.04_r8 - ! nfix_topt = 32.10_r8 - ! nfix_tmax = 43.98_r8 - !else if (tc_soila10 >= 18.5_r8 .and. tc_soila10 < 28.5_r8) then - ! nfix_tmin = 0.697_r8 * tc_soila10 - 14.93_r8 - ! nfix_topt = 0.047_r8 * tc_soila10 + 31.24_r8 - ! nfix_tmax = 0.009_r8 * tc_soila10 + 43.82_r8 - !else - ! nfix_tmin = 4.93_r8 - ! nfix_topt = 32.58_r8 - ! nfix_tmax = 44.08_r8 - !end if - !Tropical temperature function !Tmax never changes! - nfix_tmax = 45.35_r8 - if (tc_soila10 < 18.5_r8) then - nfix_tmin = 2.37_r8 !parameter not the same as in noACC - nfix_topt = 30.34_r8 - else if (tc_soila10 >= 18.5_r8 .and. tc_soila10 < 28.5_r8) then - nfix_tmin = 0.932_r8 * tc_soila10 - 14.87_r8 - nfix_topt = 0.574_r8 * tc_soila10 + 19.72_r8 - else if (tc_soila10 >= 28.5_r8) then - nfix_tmin = 11.69_r8 - nfix_topt = 36.08_r8 - end if - - if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then - fun_cost_fix_Bytnerowicz_Acc = (-1*s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& - ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& - ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) - - !fun_cost_fix = (-1*s_fix) * 1.0_r8 / (1.25_r8* (exp(a_fix + b_fix * tc_soila10 * (1._r8 - 0.5_r8 * tc_soila10 / c_fix)) )) - else - fun_cost_fix_Bytnerowicz_Acc = big_cost - end if ! ends up with the fixer or non-fixer decision - - end function fun_cost_fix_Bytnerowicz_Acc -!========================================================================================= - - !========================================================================================= real(r8) function fun_cost_active(sminn_layer,big_cost,kc_active,kn_active,rootc_dens,crootfr,smallValue) diff --git a/src/main/pftconMod.F90 b/src/main/pftconMod.F90 index 977a6f03e0..19165b24be 100644 --- a/src/main/pftconMod.F90 +++ b/src/main/pftconMod.F90 @@ -886,13 +886,13 @@ subroutine InitRead(this) call ncd_io('s_fix', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - call ncd_io('nfix_tmin', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + call ncd_io('nfix_tmin', this%nfix_tmin, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - call ncd_io('nfix_topt', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + call ncd_io('nfix_topt', this%nfix_topt, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - call ncd_io('nfix_tmax', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) + call ncd_io('nfix_tmax', this%nfix_tmax, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) call ncd_io('akc_active', this%akc_active, 'read', ncid, readvar=readv, posNOTonfile=.true.) From 4d0ac482f2fb26750f571b6c014e94e7c563ab5b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 12 Nov 2024 13:14:03 -0700 Subject: [PATCH 030/159] New update of function's docstring --- src/utils/clm_time_manager.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index 63f089a65e..be174d6a45 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -1734,7 +1734,7 @@ end function is_end_curr_year logical function is_first_step() !--------------------------------------------------------------------------------- - ! Return true on first step of any run. + ! Return true on first step of starup and hybrid runs. ! Local variables character(len=*), parameter :: sub = 'clm::is_first_step' From e578ae70e4f77fafdabbc8396712c8351ce4c921 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 12 Nov 2024 13:16:29 -0700 Subject: [PATCH 031/159] Fix typo in comment --- src/utils/clm_time_manager.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index be174d6a45..64c5f32efc 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -1734,7 +1734,7 @@ end function is_end_curr_year logical function is_first_step() !--------------------------------------------------------------------------------- - ! Return true on first step of starup and hybrid runs. + ! Return true on first step of startup and hybrid runs. ! Local variables character(len=*), parameter :: sub = 'clm::is_first_step' From bd51b8c04edd5f394ab60ec7f84ba75b2586e073 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 12 Nov 2024 15:17:24 -0700 Subject: [PATCH 032/159] Correct a variable name that came in with a merge conflict --- python/ctsm/crop_calendars/generate_gdds_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index 25012703d2..3e412814df 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -552,7 +552,7 @@ def import_and_process_1yr( log(logger, " Importing accumulated GDDs...") clm_gdd_var = "GDDACCUM" myVars = [clm_gdd_var, "GDDHARV"] - patterns = [f"*h2.{thisYear-1}-01*.nc", f"*h2.{thisYear-1}-01*.nc.base"] + patterns = [f"*h2.{this_year-1}-01*.nc", f"*h2.{this_year-1}-01*.nc.base"] for p in patterns: pattern = os.path.join(indir, p) h2_files = glob.glob(pattern) From ac081217a4c8e37ec7c3afbf0e6391b42d9eba08 Mon Sep 17 00:00:00 2001 From: wwieder Date: Tue, 12 Nov 2024 16:35:13 -0700 Subject: [PATCH 033/159] remove print statements --- src/biogeochem/CNFUNMod.F90 | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index 7665a2fbca..25fb2f79c0 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -467,9 +467,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: total_c_spent_retrans real(r8) :: total_c_accounted_retrans - !real(r8) :: nfix_tmin = -2.04_r8 - !real(r8) :: nfix_topt = 32.10_r8 - !real(r8) :: nfix_tmax = 43.98_r8 !------end of not_use_nitrif_denitrif------! !-------------------------------------------------------------------- !------------ @@ -1074,15 +1071,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) elseif (nfix_method == 2) then ! Bytnerowicz no acclimation calculation - - ! Hardwiring the parameters works - !costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer,& - ! nfix_tmin, nfix_topt, nfix_tmax& - ! ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) - - ! Debug print statements - !write(iulog,*) "tmin, topt, tmax =", nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)) - !write(iulog,*) "a_fix, b_fix, c_fix =", a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)) costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)), & big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) From e87b119d74be6c19c4f787e60ca9ec1e9eacbefd Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 12 Nov 2024 17:44:25 -0700 Subject: [PATCH 034/159] Correct another error that came in with a merge conflict --- python/ctsm/crop_calendars/generate_gdds_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index 3e412814df..42b56629f9 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -560,7 +560,7 @@ def import_and_process_1yr( break if not h2_files: error(logger, f"No files found matching patterns: {patterns}") - h2_ds = utils.import_ds( + h2_ds = import_ds( h2_files, my_vars=my_vars, my_vegtypes=crops_to_read, From c42cd12499aaa455404edf3041f611adbe9e288d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 13 Nov 2024 12:39:32 -0700 Subject: [PATCH 035/159] Update .gitmodules to the mosart/rtm tags corresponding to this ctsm --- .gitmodules | 4 ++-- components/mosart | 2 +- components/rtm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 225f2f75ac..36eea24b0f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_80 +fxtag = rtm1_0_82 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.02 +fxtag = mosart1.1.04 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART diff --git a/components/mosart b/components/mosart index e2ffe00004..9fe1ea8774 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit e2ffe00004cc416cfc8bcfae2a949474075c1d1f +Subproject commit 9fe1ea87742f2bfee64b1d99c27467a06d87761e diff --git a/components/rtm b/components/rtm index b3dfcfbba5..1d10716e86 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798 +Subproject commit 1d10716e86c6f1b5feb196e20313b881537ac851 From 71fbe09a16ffbbfb210913492343e0eb98308478 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 14 Nov 2024 15:52:52 -0700 Subject: [PATCH 036/159] cropcal_module.py import_output(): Handle "instantaneous files." --- python/ctsm/crop_calendars/cropcal_module.py | 33 +++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index 719d352665..28c40e2133 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -443,10 +443,7 @@ def import_output( ) # Convert time axis to integer year, saving original as 'cftime' - this_ds_gs = this_ds_gs.assign_coords( - {"cftime": this_ds["time_bounds"].isel({"hist_interval": 0})} - ) - this_ds_gs = this_ds_gs.assign_coords({"time": [t.year for t in this_ds_gs["cftime"].values]}) + this_ds_gs = convert_time_to_int_year(filename, this_ds, this_ds_gs) # Get number of harvests this_ds_gs["NHARVESTS"] = (this_ds_gs["GDDHARV_PERHARV"] > 0).sum(dim="mxharvests") @@ -457,6 +454,34 @@ def import_output( return this_ds_gs, any_bad +def convert_time_to_int_year(filename, this_ds, this_ds_gs): + """ + Convert time axis to integer year, saving original as 'cftime' + """ + if "time_bounds" in this_ds: + # Always true before PR #2838, when even files with all instantaneous variables got + # time_bounds saved. After that PR (and before the segregation of instantaneous and other + # variables onto separate files), files with an instantaneous variable first in their list + # do not get time_bounds saved. + this_ds_gs = this_ds_gs.assign_coords( + {"cftime": this_ds["time_bounds"].isel({"hist_interval": 0})} + ) + this_ds_gs = this_ds_gs.assign_coords( + {"time": [t.year for t in this_ds_gs["cftime"].values]} + ) + elif this_ds["time"].attrs["long_name"] == "time at end of time step": + # This is an "instantaneous file." + this_ds_gs = this_ds_gs.assign_coords({"cftime": this_ds["time"]}) + this_ds_gs = this_ds_gs.assign_coords( + {"time": [t.year - 1 for t in this_ds_gs["cftime"].values]} + ) + else: + raise RuntimeError( + f"{filename} is neither an instantaneous nor a combined/non-instantaneous file." + ) + + return this_ds_gs + def handle_zombie_crops(this_ds): """ From dedd1349dfb32388bf0e66d0bc04dc3079d7c8b1 Mon Sep 17 00:00:00 2001 From: wwieder Date: Thu, 14 Nov 2024 17:49:11 -0700 Subject: [PATCH 037/159] removing BNF usermod_dirs --- .../BNF/BNF_Bon/include_user_mods | 1 - .../usermods_dirs/BNF/BNF_Bon/shell_commands | 10 --- .../usermods_dirs/BNF/BNF_Bon/user_nl_clm | 22 ------ .../BNF/BNF_Bon/user_nl_datm_streams | 71 ------------------- .../BNF/BNF_Har/include_user_mods | 1 - .../usermods_dirs/BNF/BNF_Har/shell_commands | 10 --- .../usermods_dirs/BNF/BNF_Har/user_nl_clm | 23 ------ .../BNF/BNF_Har/user_nl_datm_streams | 71 ------------------- .../BNF/BNF_Man/include_user_mods | 1 - .../usermods_dirs/BNF/BNF_Man/shell_commands | 10 --- .../usermods_dirs/BNF/BNF_Man/user_nl_clm | 22 ------ .../BNF/BNF_Man/user_nl_datm_streams | 71 ------------------- .../usermods_dirs/BNF/defaults/shell_commands | 18 ----- 13 files changed, 331 deletions(-) delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/shell_commands delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/shell_commands delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm delete mode 100644 cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams delete mode 100644 cime_config/usermods_dirs/BNF/defaults/shell_commands diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods deleted file mode 100644 index b152996d95..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Bon/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands deleted file mode 100644 index 18bc60ee38..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Bon/shell_commands +++ /dev/null @@ -1,10 +0,0 @@ - -# Change below line if you move the subset data directory - -./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon - -./xmlchange PTS_LON=212.25 - -./xmlchange PTS_LAT=64.75 - -./xmlchange CLM_USRDAT_NAME='BNF_Bon' diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm deleted file mode 100644 index ce0cb8fddb..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_clm +++ /dev/null @@ -1,22 +0,0 @@ -!---------------------------------------------------------------------------------- -! Users should add all user specific namelist changes below in the form of -! namelist_var = new_namelist_value -! -! EXCEPTIONS: -! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting -! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting -! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting -! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting -! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting -! Set co2_ppmv with CCSM_CO2_PPMV option -! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options -! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases -! (includes $inst_string for multi-ensemble cases) -! or with CLM_FORCE_COLDSTART to do a cold start -! or set it with an explicit filename here. -! Set maxpatch_glc with GLC_NEC option -! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable -!---------------------------------------------------------------------------------- - -flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets -fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Bon_c221108.nc' diff --git a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams deleted file mode 100644 index dbd7b81f92..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Bon/user_nl_datm_streams +++ /dev/null @@ -1,71 +0,0 @@ -!------------------------------------------------------------------------ -! This file is used to modify datm.streams.xml generated in $RUNDIR -! Entries should have the form -! :<= new stream_value> -! The following are accepted values for an assume streamname of foo -! foo:meshfile = character string -! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) -! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) -! foo:taxmode = one of [cycle, extend, limit] -! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] -! foo:readmode = single (only suported mode right now) -! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] -! foo:dtlimit = real (1.5 is default) -! foo:year_first = integer -! foo:year_last = integer -! foo:year_align = integer -! foo:vectors = one of [none,u:v] -! foo:lev_dimname: = one of [null,name of level dimenion name] -! foo:offset = integer -! As an example: -! foo:year_first = 1950 -! would change the stream year_first stream_entry to 1950 for the foo stream block -! NOTE: multi-line inputs are enabled by adding a \ at the end of the line -! As an emaple: -! foo:datafiles=foo1,foo2, \ -! foo3 -! Will yield the following new entry for datafiles in stream foo -! -! foo1 -! foo2 -! foo3 -! -!----------------------------------------------------------------------- -!CLM_USRDAT.BNF_Bon:offset = -48600 -!CLM_USRDAT.BNF_Bon:dtlimit = 30 -!CLM_USRDAT.BNF_Bon:year_first = 1850 -!CLM_USRDAT.BNF_Bon:year_align = 1850 -!CLM_USRDAT.BNF_Bon:year_last = 1869 - -CLM_USRDAT.BNF_Bon:datavars = \ - PRECTmms Faxa_precn, \ - FSDS Faxa_swdn, \ - ZBOT Sa_z, \ - TBOT Sa_tbot, \ - WIND Sa_wind, \ - QATM Sa_shum, \ - PSRF Sa_pbot, \ - FLDS Faxa_lwdn - -CLM_USRDAT.BNF_Bon:datafiles = \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1850.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1851.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1852.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1853.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1854.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1855.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1856.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1857.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1858.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1859.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1860.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1861.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1862.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1863.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1864.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1865.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1866.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1867.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1868.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1869.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Bon/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods deleted file mode 100644 index b152996d95..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Har/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands deleted file mode 100644 index 04d998473f..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Har/shell_commands +++ /dev/null @@ -1,10 +0,0 @@ - -# Change below line if you move the subset data directory - -./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har - -./xmlchange PTS_LON=287.75 - -./xmlchange PTS_LAT=42.75 - -./xmlchange CLM_USRDAT_NAME='BNF_Har' diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm deleted file mode 100644 index 33c4a27486..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_clm +++ /dev/null @@ -1,23 +0,0 @@ -!---------------------------------------------------------------------------------- -! Users should add all user specific namelist changes below in the form of -! namelist_var = new_namelist_value -! -! EXCEPTIONS: -! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting -! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting -! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting -! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting -! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting -! Set co2_ppmv with CCSM_CO2_PPMV option -! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options -! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases -! (includes $inst_string for multi-ensemble cases) -! or with CLM_FORCE_COLDSTART to do a cold start -! or set it with an explicit filename here. -! Set maxpatch_glc with GLC_NEC option -! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable -!---------------------------------------------------------------------------------- - -flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets -fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Har_c221109.nc' - diff --git a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams deleted file mode 100644 index 583fe0eb3c..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Har/user_nl_datm_streams +++ /dev/null @@ -1,71 +0,0 @@ -!------------------------------------------------------------------------ -! This file is used to modify datm.streams.xml generated in $RUNDIR -! Entries should have the form -! :<= new stream_value> -! The following are accepted values for an assume streamname of foo -! foo:meshfile = character string -! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) -! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) -! foo:taxmode = one of [cycle, extend, limit] -! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] -! foo:readmode = single (only suported mode right now) -! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] -! foo:dtlimit = real (1.5 is default) -! foo:year_first = integer -! foo:year_last = integer -! foo:year_align = integer -! foo:vectors = one of [none,u:v] -! foo:lev_dimname: = one of [null,name of level dimenion name] -! foo:offset = integer -! As an example: -! foo:year_first = 1950 -! would change the stream year_first stream_entry to 1950 for the foo stream block -! NOTE: multi-line inputs are enabled by adding a \ at the end of the line -! As an emaple: -! foo:datafiles=foo1,foo2, \ -! foo3 -! Will yield the following new entry for datafiles in stream foo -! -! foo1 -! foo2 -! foo3 -! -!----------------------------------------------------------------------- -!CLM_USRDAT.BNF_Har:offset = -48600 -!CLM_USRDAT.BNF_Har:dtlimit = 30 -!CLM_USRDAT.BNF_Har:year_first = 1850 -!CLM_USRDAT.BNF_Har:year_align = 1850 -!CLM_USRDAT.BNF_Har:year_last = 1869 - -CLM_USRDAT.BNF_Har:datavars = \ - PRECTmms Faxa_precn, \ - FSDS Faxa_swdn, \ - ZBOT Sa_z, \ - TBOT Sa_tbot, \ - WIND Sa_wind, \ - QATM Sa_shum, \ - PSRF Sa_pbot, \ - FLDS Faxa_lwdn - -CLM_USRDAT.BNF_Har:datafiles = \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1850.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1851.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1852.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1853.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1854.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1855.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1856.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1857.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1858.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1859.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1860.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1861.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1862.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1863.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1864.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1865.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1866.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1867.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1868.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1869.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Har/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods b/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods deleted file mode 100644 index b152996d95..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Man/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../defaults diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands b/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands deleted file mode 100644 index 72529f64d5..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Man/shell_commands +++ /dev/null @@ -1,10 +0,0 @@ - -# Change below line if you move the subset data directory - -./xmlchange CLM_USRDAT_DIR=/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man - -./xmlchange PTS_LON=299.75 - -./xmlchange PTS_LAT=-3.25 - -./xmlchange CLM_USRDAT_NAME='BNF_Man' diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm deleted file mode 100644 index 5d5ec2dd03..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_clm +++ /dev/null @@ -1,22 +0,0 @@ -!---------------------------------------------------------------------------------- -! Users should add all user specific namelist changes below in the form of -! namelist_var = new_namelist_value -! -! EXCEPTIONS: -! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting -! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting -! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting -! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting -! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting -! Set co2_ppmv with CCSM_CO2_PPMV option -! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options -! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases -! (includes $inst_string for multi-ensemble cases) -! or with CLM_FORCE_COLDSTART to do a cold start -! or set it with an explicit filename here. -! Set maxpatch_glc with GLC_NEC option -! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable -!---------------------------------------------------------------------------------- - -flanduse_timeseries = ' ' ! This isn't needed for a non transient case, but will be once we start using transient compsets -fsurdat = '$CLM_USRDAT_DIR/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr2000_BNF_Man_c221109.nc' diff --git a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams b/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams deleted file mode 100644 index 4a9786ef07..0000000000 --- a/cime_config/usermods_dirs/BNF/BNF_Man/user_nl_datm_streams +++ /dev/null @@ -1,71 +0,0 @@ -!------------------------------------------------------------------------ -! This file is used to modify datm.streams.xml generated in $RUNDIR -! Entries should have the form -! :<= new stream_value> -! The following are accepted values for an assume streamname of foo -! foo:meshfile = character string -! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) -! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) -! foo:taxmode = one of [cycle, extend, limit] -! foo:tintalgo = one of [lower,upper,nearest,linear,coszen] -! foo:readmode = single (only suported mode right now) -! foo:mapalgo = one of [bilinear,redist,nn,consf,consd,none] -! foo:dtlimit = real (1.5 is default) -! foo:year_first = integer -! foo:year_last = integer -! foo:year_align = integer -! foo:vectors = one of [none,u:v] -! foo:lev_dimname: = one of [null,name of level dimenion name] -! foo:offset = integer -! As an example: -! foo:year_first = 1950 -! would change the stream year_first stream_entry to 1950 for the foo stream block -! NOTE: multi-line inputs are enabled by adding a \ at the end of the line -! As an emaple: -! foo:datafiles=foo1,foo2, \ -! foo3 -! Will yield the following new entry for datafiles in stream foo -! -! foo1 -! foo2 -! foo3 -! -!----------------------------------------------------------------------- -!CLM_USRDAT.BNF_Man:offset = -48600 -!CLM_USRDAT.BNF_Man:dtlimit = 30 -!CLM_USRDAT.BNF_Man:year_first = 1850 -!CLM_USRDAT.BNF_Man:year_align = 1850 -!CLM_USRDAT.BNF_Man:year_last = 1869 - -CLM_USRDAT.BNF_Man:datavars = \ - PRECTmms Faxa_precn, \ - FSDS Faxa_swdn, \ - ZBOT Sa_z, \ - TBOT Sa_tbot, \ - WIND Sa_wind, \ - QATM Sa_shum, \ - PSRF Sa_pbot, \ - FLDS Faxa_lwdn - -CLM_USRDAT.BNF_Man:datafiles = \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1850.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1851.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1852.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1853.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1854.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1855.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1856.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1857.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1858.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1859.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1860.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1861.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1862.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1863.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1864.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1865.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1866.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1867.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1868.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1869.nc, \ - /glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN/BNF_Man/CLM1PT_data/1870.nc diff --git a/cime_config/usermods_dirs/BNF/defaults/shell_commands b/cime_config/usermods_dirs/BNF/defaults/shell_commands deleted file mode 100644 index c9319f85bc..0000000000 --- a/cime_config/usermods_dirs/BNF/defaults/shell_commands +++ /dev/null @@ -1,18 +0,0 @@ - -# Change below line if you move the subset data directory -./xmlchange MPILIB=mpi-serial -./xmlchange DIN_LOC_ROOT_CLMFORC='/glade/campaign/cgd/tss/people/wwieder/inputdata/BNFMIP_forcing_from_OCN' -./xmlchange STOP_OPTION=nyears -./xmlchange CONTINUE_RUN=FALSE - -# Explicitly set PIO Type to NETCDF since this is a single processor case (should already be set this way) -./xmlchange PIO_TYPENAME=netcdf -./xmlchange DATM_YR_ALIGN=1851,DATM_YR_END=1870,DATM_YR_START=1851 -./xmlchange PIO_REARRANGER_LND=1 -# Set up a simulation from cold start -./xmlchange CLM_FORCE_COLDSTART=on -./xmlchange CLM_ACCELERATED_SPINUP=on -./xmlchange STOP_N=100 -./xmlchange REST_N=100 -./xmlchange RUN_STARTDATE=0001-01-01 -./xmlchange RESUBMIT=1 From a51816e0de380300b69db9fc3e2c7fa83b267b64 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 14 Nov 2024 21:10:19 -0700 Subject: [PATCH 038/159] Reformat with black. --- python/ctsm/crop_calendars/cropcal_module.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index 28c40e2133..3ea084e1d2 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -454,6 +454,7 @@ def import_output( return this_ds_gs, any_bad + def convert_time_to_int_year(filename, this_ds, this_ds_gs): """ Convert time axis to integer year, saving original as 'cftime' From 3220dbbdb9cd5bcf25e9325e5b0f2ea56978bdeb Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 14 Nov 2024 21:11:18 -0700 Subject: [PATCH 039/159] Add previous commit to .git-blame-ignore-revs. --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index fca4a8315b..32e53646d7 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -27,6 +27,7 @@ d866510188d26d51bcd6d37239283db690af7e82 e096358c832ab292ddfd22dd5878826c7c788968 475831f0fb0e31e97f630eac4e078c886558b61c fd5f177131d63d39e79a13918390bdfb642d781e +a51816e0de380300b69db9fc3e2c7fa83b267b64 # Ran SystemTests and python/ctsm through black python formatter 5364ad66eaceb55dde2d3d598fe4ce37ac83a93c 8056ae649c1b37f5e10aaaac79005d6e3a8b2380 From f147be3a4c3306ccb177ddb8ade0fa7b065f2b3f Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Fri, 15 Nov 2024 10:45:53 -0700 Subject: [PATCH 040/159] Revert "fix typo in fates hydro user_nl_clm" This reverts commit 97d1657754c75fedd6482d4d71b773859029be5d. --- .../testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm index 318a34dfec..15dcf6de1a 100644 --- a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm @@ -2,7 +2,7 @@ hist_mfilt = 365 hist_nhtfrq = -24 hist_empty_htapes = .true. use_fates_planthydro= .true. -fates_paramfile = '$CASEROOT/fates_params_hydrograsstempfix.nc' +fates_paramfile = '$CASEROOT/fates_params_hydrograsstempfix.n' hist_fincl1 = 'FATES_ERRH2O_SZPF', 'FATES_TRAN_SZPF', 'FATES_SAPFLOW_SZPF', 'FATES_ITERH1_SZPF','FATES_ABSROOT_H2O_SZPF', 'FATES_TRANSROOT_H2O_SZPF','FATES_STEM_H2O_SZPF','FATES_LEAF_H2O_SZPF', From ea475c135f13f3ca7e35e7f1650e1a345f3d2c6b Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Fri, 15 Nov 2024 10:46:16 -0700 Subject: [PATCH 041/159] Revert "add shell call to generate fates hydro parameter file on the fly" This reverts commit f2f75351febd4a413b0788dae256443fe5734510. --- .../testmods_dirs/clm/FatesColdHydro/shell_commands | 8 -------- .../testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm | 1 - 2 files changed, 9 deletions(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands deleted file mode 100644 index e629e7ca34..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands +++ /dev/null @@ -1,8 +0,0 @@ -SRCDIR=`./xmlquery SRCROOT --value` -CASEDIR=`./xmlquery CASEROOT --value` -FATESDIR=$SRCDIR/src/fates -FATESPARAMFILE=$CASEDIR/fates_params_hydrograsstempfix.nc - -ncgen -o $FATESPARAMFILE $FATESDIR/parameter_files/fates_params_default.cdl - -$FATESDIR/tools/modify_fates_paramfile.py --O --fin $FATESPARAMFILE --fout $FATESPARAMFILE --var fates_allom_smode --val 1 --allpfts diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm index 15dcf6de1a..f0bdb388eb 100644 --- a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm @@ -2,7 +2,6 @@ hist_mfilt = 365 hist_nhtfrq = -24 hist_empty_htapes = .true. use_fates_planthydro= .true. -fates_paramfile = '$CASEROOT/fates_params_hydrograsstempfix.n' hist_fincl1 = 'FATES_ERRH2O_SZPF', 'FATES_TRAN_SZPF', 'FATES_SAPFLOW_SZPF', 'FATES_ITERH1_SZPF','FATES_ABSROOT_H2O_SZPF', 'FATES_TRANSROOT_H2O_SZPF','FATES_STEM_H2O_SZPF','FATES_LEAF_H2O_SZPF', From ea91981697a64d6d3905a5abb9e955543246821d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 15 Nov 2024 13:47:15 -0700 Subject: [PATCH 042/159] Draft ChangeLog/ChangeSum --- doc/ChangeLog | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 105 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 5a2a3c472e..660aed7921 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,108 @@ =============================================================== +Tag name: ctsm5.3.014 +Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) +Date: Fri 15 Nov 2024 01:24:45 PM MST +One-line Summary: Change history time to be the middle of the time bounds + +Purpose and description of changes +---------------------------------- + + Making the change in order to be consistent with CAM and to make history output more intuitive. + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Partly addresses issue #1059 + +Notes of particular relevance for users +--------------------------------------- +Caveats for users (e.g., need to interpolate initial conditions): + The history time variable now equals the middle of the time bounds. + Instantaneous history tapes now do not include time bounds. + Mixed history tapes do not change the treatment of instantaneous fields or move them to separate tapes, yet. + + +Notes of particular relevance for developers: +--------------------------------------------- +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + +Changes to tests or testing: + This tag introduces changes to the mosart/rtm testlists. + +Testing summary: +---------------- + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + derecho - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + + mosart + derecho ----- OK + izumi ------- OK + + rtm + derecho ----- OK + + any other testing (give details below): + + ctsm_sci + derecho ---- + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: Only time variable + + Summarize any changes to answers, i.e., + - what code configurations: all + - what platforms/compilers: all + - nature of change: only the time variable + + +Other details +------------- +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + rtm, mosart + +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2838 + https://github.com/ESCOMP/MOSART/pull/70 + https://github.com/ESCOMP/RTM/issues/54 + https://github.com/ESCOMP/MOSART/pull/106 + https://github.com/ESCOMP/RTM/pull/39 + +=============================================================== +=============================================================== Tag name: ctsm5.3.012 Originator(s): afoster (Adrianna Foster,UCAR/TSS,303-497-1728) Date: Wed 13 Nov 2024 09:53:51 AM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 87d5709a68..25569e9108 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.014 slevis 11/18/2024 Change history time to be the middle of the time bounds ctsm5.3.012 afoster 11/13/2024 update fates tag ctsm5.3.011 samrabin 11/11/2024 Improve handling of cold-start finidat ctsm5.3.010 afoster 11/09/2024 Merge b4b-dev From c7e13661f2ac15cbb4845aebeff6b81389eccdcf Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 15 Nov 2024 16:41:57 -0700 Subject: [PATCH 043/159] Revert change I brought in with the conflicts --- src/main/accumulMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/accumulMod.F90 b/src/main/accumulMod.F90 index e968e2dae5..0c2462c1f8 100644 --- a/src/main/accumulMod.F90 +++ b/src/main/accumulMod.F90 @@ -595,7 +595,7 @@ subroutine update_accum_field_timeavg(this, level, nstep, field) do k = begi,endi effective_nstep = nstep - this%ndays_reset_shifted(k,level) - time_to_reset = mod(effective_nstep,this%period) == 1 .or. this%period == 1 + time_to_reset = (mod(effective_nstep,this%period) == 1 .or. this%period == 1) .and. effective_nstep /= 0 if (this%active(k) .and. (time_to_reset .or. this%reset(k,level))) then if (this%reset(k,level) .and. .not. time_to_reset) then this%ndays_reset_shifted(k,level) = this%ndays_reset_shifted(k,level) + this%nsteps(k,level) From 5148dbcb34652e58935de25239834ada7c71f22a Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 15 Nov 2024 16:46:25 -0700 Subject: [PATCH 044/159] Update .gitmodules to the mosart/rtm tags corresponding to this ctsm --- .gitmodules | 4 ++-- components/mosart | 2 +- components/rtm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 36eea24b0f..97f70ca427 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_82 +fxtag = rtm1_0_83 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.04 +fxtag = mosart1.1.05 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART diff --git a/components/mosart b/components/mosart index 9fe1ea8774..99b425e618 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit 9fe1ea87742f2bfee64b1d99c27467a06d87761e +Subproject commit 99b425e618a31d077935a0774141aa9bf48fcc13 diff --git a/components/rtm b/components/rtm index 1d10716e86..a2cd8249e4 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit 1d10716e86c6f1b5feb196e20313b881537ac851 +Subproject commit a2cd8249e40e8c61d68fe13145c4cf9d5e098f68 From dc295f71220c939d190e4c9e7dc634eba3c47b17 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 15 Nov 2024 16:50:08 -0700 Subject: [PATCH 045/159] Correct variable name that came in with the conflicts --- python/ctsm/crop_calendars/generate_gdds_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index 42b56629f9..988edf6d89 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -551,7 +551,7 @@ def import_and_process_1yr( log(logger, " Importing accumulated GDDs...") clm_gdd_var = "GDDACCUM" - myVars = [clm_gdd_var, "GDDHARV"] + my_vars = [clm_gdd_var, "GDDHARV"] patterns = [f"*h2.{this_year-1}-01*.nc", f"*h2.{this_year-1}-01*.nc.base"] for p in patterns: pattern = os.path.join(indir, p) From ac5a615cea45ecc3af1c2c29705a00f873a782e2 Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Mon, 18 Nov 2024 10:42:42 -0800 Subject: [PATCH 046/159] update fates tag to sci.1.80.1_api.37.0.0 This tag includes the fix to NGEET/fates#1254 and will allow the current default fates parameter file to be used in fates hydro tests --- .gitmodules | 2 +- src/fates | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 225f2f75ac..7429d412bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,7 +28,7 @@ [submodule "fates"] path = src/fates url = https://github.com/NGEET/fates -fxtag = sci.1.79.3_api.37.0.0 +fxtag = sci.1.80.1_api.37.0.0 fxrequired = AlwaysRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/NCAR/fates-release diff --git a/src/fates b/src/fates index e3e7d2cd86..08f2410fd2 160000 --- a/src/fates +++ b/src/fates @@ -1 +1 @@ -Subproject commit e3e7d2cd86a66f8ca0e8f6dc4a823246a2bdb95b +Subproject commit 08f2410fd2a9e04920eedb4cc2d51a09f68127ec From 67117dade4e881c2b3333c187de4c1ec3bd5deba Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 19 Nov 2024 12:21:38 -0700 Subject: [PATCH 047/159] Update parameter files with the new nfix fields on them --- bld/namelist_files/namelist_defaults_ctsm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 54d3afd5c1..4975088bf6 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -544,10 +544,10 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/ctsm60_params.c241017.nc -lnd/clm2/paramdata/ctsm51_params.c241017.nc -lnd/clm2/paramdata/clm50_params.c241017.nc -lnd/clm2/paramdata/clm45_params.c241017.nc +lnd/clm2/paramdata/ctsm60_params_nfix.c241101.nc +lnd/clm2/paramdata/ctsm60_params_nfix.c241101.nc +lnd/clm2/paramdata/clm50_params_nfix.c241119.nc +lnd/clm2/paramdata/clm45_params_nfix.c241119.nc From 9d9337bf9ce1355c3fb6d68c11eea445085004a6 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 19 Nov 2024 16:31:47 -0700 Subject: [PATCH 048/159] fix (namelist): Change paramfiles to name without nfix in the name, and update ctsm60 file so that it is based on the previous one with the nfix fields just added to the end --- bld/namelist_files/namelist_defaults_ctsm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 4975088bf6..7d1f29fb28 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -544,10 +544,10 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/ctsm60_params_nfix.c241101.nc -lnd/clm2/paramdata/ctsm60_params_nfix.c241101.nc -lnd/clm2/paramdata/clm50_params_nfix.c241119.nc -lnd/clm2/paramdata/clm45_params_nfix.c241119.nc +lnd/clm2/paramdata/ctsm60_params.c241119.nc +lnd/clm2/paramdata/ctsm60_params.c241119.nc +lnd/clm2/paramdata/clm50_params.c241119.nc +lnd/clm2/paramdata/clm45_params.c241119.nc From 1c3ae10584101e01f5fb982442060f6653c675d9 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 20 Nov 2024 15:59:39 -0700 Subject: [PATCH 049/159] Move line inside if-statement --- src/main/histFileMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index c3c17c6b64..8f51d03ec1 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3443,8 +3443,8 @@ subroutine htape_timeconst(t, mode) call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & long_name = 'time interval endpoints', & units = str) + call ncd_putatt(nfid(t), varid, 'calendar', caldesc) end if - call ncd_putatt(nfid(t), varid, 'calendar', caldesc) dim2id(1) = strlen_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid) From eeedbc6ae95373cbd1f27359f54de7693409326d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 21 Nov 2024 17:04:38 -0700 Subject: [PATCH 050/159] Change "if instantaneous" statement with more appropriate conditional --- src/main/histFileMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index bca64474e1..426fa2d7e0 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3372,7 +3372,7 @@ subroutine htape_timeconst(t, mode) dim1id(1) = time_dimid str = 'days since ' // basedate // " " // basesec - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape step_or_bounds = 'time_bounds' long_name = 'time at exact middle of ' // step_or_bounds call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, & @@ -3435,7 +3435,7 @@ subroutine htape_timeconst(t, mode) long_name = 'time step') dim2id(1) = hist_interval_dimid; dim2id(2) = time_dimid - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & long_name = 'history time interval endpoints') end if @@ -3468,7 +3468,7 @@ subroutine htape_timeconst(t, mode) timedata(1) = tape(t)%begtime ! beginning time timedata(2) = mdcur + mscur/secspday ! end time - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape time = (timedata(1) + timedata(2)) * 0.5_r8 call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes) else From 69bd98cb4ff5d99dcfbe104169c74b8b6a1f2855 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 22 Nov 2024 11:23:19 -0700 Subject: [PATCH 051/159] crop_calendars scripts: Handle center-of-period timesteps. --- .../crop_calendars/convert_axis_time2gs.py | 3 +- python/ctsm/crop_calendars/cropcal_module.py | 16 +++---- python/ctsm/crop_calendars/cropcal_utils.py | 42 +++++++++++++++++++ 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/python/ctsm/crop_calendars/convert_axis_time2gs.py b/python/ctsm/crop_calendars/convert_axis_time2gs.py index d48514370d..004dca5518 100644 --- a/python/ctsm/crop_calendars/convert_axis_time2gs.py +++ b/python/ctsm/crop_calendars/convert_axis_time2gs.py @@ -5,6 +5,7 @@ import sys import numpy as np import xarray as xr +from ctsm.crop_calendars.cropcal_utils import get_integer_years try: import pandas as pd @@ -85,7 +86,7 @@ def set_up_ds_with_gs_axis(ds_in): if not any(x in ["mxsowings", "mxharvests"] for x in ds_in[var].dims): data_vars[var] = ds_in[var] # Set up the new dataset - gs_years = [t.year - 1 for t in ds_in.time.values[:-1]] + gs_years = get_integer_years(ds_in)[:-1] coords = ds_in.coords coords["gs"] = gs_years ds_out = xr.Dataset(data_vars=data_vars, coords=coords, attrs=ds_in.attrs) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index 3ea084e1d2..1993225a9c 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -20,23 +20,19 @@ def check_and_trim_years(year_1, year_n, ds_in): """ After importing a file, restrict it to years of interest. """ - ### In annual outputs, file with name Y is actually results from year Y-1. - ### Note that time values refer to when it was SAVED. So 1981-01-01 is for year 1980. - - def get_year_from_cftime(cftime_date): - # Subtract 1 because the date for annual files is when it was SAVED - return cftime_date.year - 1 # Check that all desired years are included - if get_year_from_cftime(ds_in.time.values[0]) > year_1: + year = utils.get_timestep_year(ds_in, ds_in.time.values[0]) + if year > year_1: raise RuntimeError( f"Requested year_1 is {year_1} but first year in outputs is " - + f"{get_year_from_cftime(ds_in.time.values[0])}" + + f"{year}" ) - if get_year_from_cftime(ds_in.time.values[-1]) < year_1: + year = utils.get_timestep_year(ds_in, ds_in.time.values[-1]) + if year < year_1: raise RuntimeError( f"Requested year_n is {year_n} but last year in outputs is " - + f"{get_year_from_cftime(ds_in.time.values[-1])}" + + f"{year}" ) # Remove years outside range of interest diff --git a/python/ctsm/crop_calendars/cropcal_utils.py b/python/ctsm/crop_calendars/cropcal_utils.py index 584046edee..176ce18e9d 100644 --- a/python/ctsm/crop_calendars/cropcal_utils.py +++ b/python/ctsm/crop_calendars/cropcal_utils.py @@ -430,3 +430,45 @@ def make_lon_increasing(xr_obj): raise RuntimeError("Unable to rearrange longitude axis so it's monotonically increasing") return xr_obj.roll(lon=shift, roll_coords=True) + + +def is_inst_file(dsa): + """ + Check whether Dataset or DataArray has time data from an "instantaneous file" + """ + return "at end of" in dsa["time"].attrs["long_name"] + + +def get_beg_inst_timestep_year(timestep): + """ + Get year associated with the BEGINNING of a timestep in an + instantaneous file + """ + year = timestep.year + + is_jan1 = timestep.dayofyr == 1 + is_midnight = timestep.hour == timestep.minute == timestep.second == 0 + if is_jan1 and is_midnight: + year -= 1 + + return year + + +def get_timestep_year(dsa, timestep): + """ + Get the year associated with a timestep, with different handling + depending on whether the file is instantaneous + """ + if is_inst_file(dsa): + year = get_beg_inst_timestep_year(timestep) + else: + year = timestep.year + return year + + +def get_integer_years(dsa): + """ + Convert time axis to numpy array of integer years + """ + out_array = [get_timestep_year(dsa, t) for t in dsa["time"].values] + return out_array From bd7ecaa38bac304c1b5795b5516fd1b77d755356 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 22 Nov 2024 17:09:32 -0700 Subject: [PATCH 052/159] Add SystemTests for RXCROPMATURITY with instantaneous h1. --- cime_config/SystemTests/rxcropmaturity.py | 12 +++++----- cime_config/SystemTests/rxcropmaturityinst.py | 6 +++++ .../SystemTests/rxcropmaturityskipgeninst.py | 6 +++++ cime_config/config_tests.xml | 20 +++++++++++++++++ cime_config/testdefs/testlist_clm.xml | 22 +++++++++++++++++++ 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 cime_config/SystemTests/rxcropmaturityinst.py create mode 100644 cime_config/SystemTests/rxcropmaturityskipgeninst.py diff --git a/cime_config/SystemTests/rxcropmaturity.py b/cime_config/SystemTests/rxcropmaturity.py index fb254c408f..a6569da7dd 100644 --- a/cime_config/SystemTests/rxcropmaturity.py +++ b/cime_config/SystemTests/rxcropmaturity.py @@ -106,7 +106,7 @@ def __init__(self, case): # Which conda environment should we use? self._get_conda_env() - def _run_phase(self, skip_gen=False): + def _run_phase(self, skip_gen=False, h1_inst=False): # Modeling this after the SSP test, we create a clone to be the case whose outputs we don't # want to be saved as baseline. @@ -129,7 +129,7 @@ def _run_phase(self, skip_gen=False): self._set_active_case(case_gddgen) # Set up stuff that applies to both tests - self._setup_all() + self._setup_all(h1_inst) # Add stuff specific to GDD-Generating run logger.info("RXCROPMATURITY log: modify user_nl files: generate GDDs") @@ -264,7 +264,7 @@ def _get_rx_dates(self): logger.error(error_message) raise RuntimeError(error_message) - def _setup_all(self): + def _setup_all(self, h1_inst): logger.info("RXCROPMATURITY log: _setup_all start") # Get some info @@ -274,7 +274,7 @@ def _setup_all(self): # Set sowing dates file (and other crop calendar settings) for all runs logger.info("RXCROPMATURITY log: modify user_nl files: all tests") - self._modify_user_nl_allruns() + self._modify_user_nl_allruns(h1_inst) logger.info("RXCROPMATURITY log: _setup_all done") # Make a surface dataset that has every crop in every gridcell @@ -399,7 +399,7 @@ def _run_check_rxboth_run(self, skip_gen): tool_path, ) - def _modify_user_nl_allruns(self): + def _modify_user_nl_allruns(self, h1_inst): nl_additions = [ "cropcals_rx = .true.", "cropcals_rx_adapt = .false.", @@ -417,6 +417,8 @@ def _modify_user_nl_allruns(self): "hist_type1d_pertape(2) = 'PFTS'", "hist_dov2xy(2) = .false.", ] + if h1_inst: + nl_additions.append("hist_avgflag_pertape(2) = 'I'") self._append_to_user_nl_clm(nl_additions) def _run_generate_gdds(self, case_gddgen): diff --git a/cime_config/SystemTests/rxcropmaturityinst.py b/cime_config/SystemTests/rxcropmaturityinst.py new file mode 100644 index 0000000000..bf8bf7750b --- /dev/null +++ b/cime_config/SystemTests/rxcropmaturityinst.py @@ -0,0 +1,6 @@ +from rxcropmaturity import RXCROPMATURITYSHARED + + +class RXCROPMATURITYINST(RXCROPMATURITYSHARED): + def run_phase(self): + self._run_phase(h1_inst=True) diff --git a/cime_config/SystemTests/rxcropmaturityskipgeninst.py b/cime_config/SystemTests/rxcropmaturityskipgeninst.py new file mode 100644 index 0000000000..4cab9bd7c0 --- /dev/null +++ b/cime_config/SystemTests/rxcropmaturityskipgeninst.py @@ -0,0 +1,6 @@ +from rxcropmaturity import RXCROPMATURITYSHARED + + +class RXCROPMATURITYSKIPGENINST(RXCROPMATURITYSHARED): + def run_phase(self): + self._run_phase(skip_gen=True, h1_inst=True) diff --git a/cime_config/config_tests.xml b/cime_config/config_tests.xml index 12859b9131..ee80087a08 100644 --- a/cime_config/config_tests.xml +++ b/cime_config/config_tests.xml @@ -145,6 +145,16 @@ This defines various CTSM-specific system tests $STOP_N + + As RXCROPMATURITY but ensure instantaneous h1. Can be removed once instantaneous and other variables are on separate files. + 1 + FALSE + FALSE + never + $STOP_OPTION + $STOP_N + + As RXCROPMATURITY but don't actually generate GDDs. Allows short testing with existing GDD inputs. 1 @@ -155,6 +165,16 @@ This defines various CTSM-specific system tests $STOP_N + + As RXCROPMATURITYSKIPGEN but ensure instantaneous h1. Can be removed once instantaneous and other variables are on separate files. + 1 + FALSE + FALSE + never + $STOP_OPTION + $STOP_N + + diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index 351cdc5c80..0f92a28f5d 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -388,6 +388,11 @@ Slope of free living Nitrogen fixation with annual ET Intercept of free living Nitrogen fixation with zero annual ET + +Choice of nfix parameterization + + If TRUE use the undercanopy stability term used with CLM4.5 (Sakaguchi&Zeng, 2008) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index 25fb2f79c0..b2f9a15470 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -206,7 +206,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& use clm_time_manager, only : get_step_size_real, get_curr_date use clm_varpar , only : nlevdecomp use clm_varcon , only : secspday, smallValue, fun_period, tfrz, dzsoi_decomp, spval - use clm_varctl , only : use_nitrif_denitrif + use clm_varctl , only : use_nitrif_denitrif, nfix_method use PatchType , only : patch use subgridAveMod , only : p2c use pftconMod , only : npcropmin @@ -487,8 +487,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& integer :: icost ! a local index integer :: fixer ! 0 = non-fixer, 1 ! =fixer - !TODO, make namelist option - integer :: nfix_method = 2 ! 1 = Houlton, 2 = Bytnerowicz logical :: unmetDemand ! True while there ! is still demand for N logical :: local_use_flexibleCN ! local version of use_flexCN @@ -496,6 +494,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& ! fixers, 2 for non fixers. This will become redundant with the ! 'fixer' parameter if it works. + character(len=32) :: subname = 'CNFUN' !-------------------------------------------------------------------- !--------------------------------- associate(ivt => patch%itype , & ! Input: [integer (:) ] p @@ -1063,19 +1062,19 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& fixer=0 endif - ! TODO, make this a name list change determining which equation to use - if (nfix_method == 1) then - ! This calls the Houlton function. + select case (nfix_method) + case ('Houlton') costNit(j,icostFix) = fun_cost_fix(fixer,& a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)),& big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) - elseif (nfix_method == 2) then - ! Bytnerowicz no acclimation calculation + case ('Bytnerowicz') ! no acclimation calculation costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)), & big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) - - endif + case default + write(iulog,*) subname//' ERROR: unknown nfix_method value: ', nfix_method + call endrun(msg=errMsg(sourcefile, __LINE__)) + end select end do cost_fix(p,1:nlevdecomp) = costNit(:,icostFix) diff --git a/src/main/clm_varctl.F90 b/src/main/clm_varctl.F90 index 9539060200..0989400961 100644 --- a/src/main/clm_varctl.F90 +++ b/src/main/clm_varctl.F90 @@ -227,6 +227,8 @@ module clm_varctl ! real(r8), public :: nfix_timeconst = -1.2345_r8 + character(len=25), public :: nfix_method ! choice of nfix parameterization + !---------------------------------------------------------- ! Physics !---------------------------------------------------------- diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90 index 3f5c58ac0e..61c56f5201 100644 --- a/src/main/controlMod.F90 +++ b/src/main/controlMod.F90 @@ -257,6 +257,8 @@ subroutine control_init(dtime) CNratio_floating, lnc_opt, reduce_dayl_factor, vcmax_opt, & CN_evergreen_phenology_opt, carbon_resp_opt + namelist /clm_nitrogen/ nfix_method + namelist /clm_inparm/ use_soil_moisture_streams ! excess ice flag @@ -882,6 +884,7 @@ subroutine control_spmd() call mpi_bcast (use_c13_timeseries, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (atm_c13_filename, len(atm_c13_filename), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (use_fun, 1, MPI_LOGICAL, 0, mpicom, ier) + call mpi_bcast (nfix_method, len(nfix_method), MPI_CHARACTER, 0, mpicom, ier) end if call mpi_bcast (perchroot, 1, MPI_LOGICAL, 0, mpicom, ier) From 9a96642f83aae0403105f5662c9917d18dea1f5a Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 9 Dec 2024 16:10:10 -0700 Subject: [PATCH 064/159] Update cmeps, cime, share submodules to fix some testing issues --- cime | 2 +- components/cmeps | 2 +- share | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cime b/cime index a8a04e2d9d..b2f271b174 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit a8a04e2d9deac572e6f2222b4f893a575308db99 +Subproject commit b2f271b1742533715a05701b1bdd80a24bb2ad77 diff --git a/components/cmeps b/components/cmeps index 5b7d76978e..51d4124feb 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit 5b7d76978e2fdc661ec2de4ba9834b985decadc6 +Subproject commit 51d4124feb0eb47b99d7ae790b5ea77ce2adfbe7 diff --git a/share b/share index f6f31fd61c..a48ff8790a 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit f6f31fd61cb8f80aee97311fcca64b3e26b0202c +Subproject commit a48ff8790a21d3831873ed9f023a43c606a1ef03 From bd063421d14ec2e72184f04a8a724b3f3ff11c78 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 9 Dec 2024 16:10:25 -0700 Subject: [PATCH 065/159] Update cmeps, cime, share submodules to fix some testing issues --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 518c541299..da37057527 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,7 +76,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git [submodule "cime"] path = cime url = https://github.com/ESMCI/cime -fxtag = cime6.1.48 +fxtag = cime6.1.49 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/cime @@ -84,7 +84,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/cime [submodule "cmeps"] path = components/cmeps url = https://github.com/ESCOMP/CMEPS.git -fxtag = cmeps1.0.26 +fxtag = cmeps1.0.31 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git @@ -100,7 +100,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git [submodule "share"] path = share url = https://github.com/ESCOMP/CESM_share -fxtag = share1.1.5 +fxtag = share1.0.21 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CESM_share From 35dcfb475ebc0d32e4434c7cdcf5115016415fae Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 9 Dec 2024 18:35:17 -0700 Subject: [PATCH 066/159] Change tagname for share tag --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index da37057527..450af64c1f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -100,7 +100,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git [submodule "share"] path = share url = https://github.com/ESCOMP/CESM_share -fxtag = share1.0.21 +fxtag = share1.1.6 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CESM_share From f2f1039171f07bb71c1b2a99d30b75ebb7e03cc5 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 10 Dec 2024 23:52:13 -0700 Subject: [PATCH 067/159] Move usermods_dirs under a clm subdirectory due to a change in cime in cime6.1.37 --- cime_config/usermods_dirs/{ => clm}/NEON/ABBY/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/ABBY/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/BARR/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/BARR/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/BART/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/BART/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/BLAN/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/BLAN/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/BONA/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/BONA/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/CLBJ/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/CLBJ/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/CPER/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/CPER/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/DCFS/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/DCFS/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/DEJU/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/DEJU/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/DELA/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/DELA/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/DSNY/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/DSNY/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ABBY/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ABBY/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BARR/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BARR/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BART/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BART/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BLAN/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BLAN/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BONA/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/BONA/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/CLBJ/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/CLBJ/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/CPER/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/CPER/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DCFS/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DCFS/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DEJU/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DEJU/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DELA/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DELA/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DSNY/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/DSNY/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/GRSM/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/GRSM/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/GUAN/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/GUAN/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/HARV/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/HARV/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/HEAL/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/HEAL/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/JERC/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/JERC/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/JORN/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/JORN/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/KONZ/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/KONZ/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/LAJA/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/LAJA/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/LENO/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/LENO/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/MLBS/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/MLBS/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/MOAB/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/MOAB/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/NIWO/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/NIWO/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/NOGP/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/NOGP/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/OAES/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/OAES/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ONAQ/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ONAQ/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ORNL/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/ORNL/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/OSBS/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/OSBS/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/PUUM/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/PUUM/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/FATES/README.md | 0 .../usermods_dirs/{ => clm}/NEON/FATES/RMNP/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/RMNP/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SCBI/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SCBI/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SERC/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SERC/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SJER/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SJER/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SOAP/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SOAP/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SRER/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/SRER/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/STEI/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/STEI/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TALL/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TALL/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TEAK/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TEAK/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TOOL/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TOOL/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TREE/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/TREE/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/UKFS/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/UKFS/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/UNDE/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/UNDE/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/WOOD/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/WOOD/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/WREF/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/WREF/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/YELL/include_user_mods | 0 .../usermods_dirs/{ => clm}/NEON/FATES/YELL/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/defaults/shell_commands | 0 .../usermods_dirs/{ => clm}/NEON/FATES/defaults/user_nl_clm | 0 .../usermods_dirs/{ => clm}/NEON/FATES/defaults/user_nl_cpl | 0 .../{ => clm}/NEON/FATES/defaults/user_nl_datm_streams | 0 cime_config/usermods_dirs/{ => clm}/NEON/GRSM/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/GRSM/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/GUAN/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/GUAN/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/HARV/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/HARV/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/HEAL/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/HEAL/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/JERC/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/JERC/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/JORN/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/JORN/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/KONA/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/KONA/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/KONZ/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/KONZ/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/LAJA/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/LAJA/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/LENO/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/LENO/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/MLBS/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/MLBS/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/MOAB/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/MOAB/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/NIWO/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/NIWO/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/NOGP/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/NOGP/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/OAES/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/OAES/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/ONAQ/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/ONAQ/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/ORNL/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/ORNL/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/OSBS/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/OSBS/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/PUUM/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/PUUM/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/RMNP/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/RMNP/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/SCBI/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/SCBI/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/SERC/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/SERC/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/SJER/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/SJER/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/SOAP/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/SOAP/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/SRER/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/SRER/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/STEI/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/STEI/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/STER/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/STER/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/TALL/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/TALL/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/TEAK/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/TEAK/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/TOOL/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/TOOL/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/TREE/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/TREE/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/UKFS/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/UKFS/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/UNDE/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/UNDE/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/WOOD/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/WOOD/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/WREF/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/WREF/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/YELL/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/NEON/YELL/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/defaults/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/NEON/defaults/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/NEON/defaults/user_nl_cpl | 0 .../usermods_dirs/{ => clm}/NEON/defaults/user_nl_datm_streams | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AR-SLu/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AR-SLu/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AT-Neu/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AT-Neu/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-ASM/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-ASM/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cow/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cow/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cpr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cpr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Ctr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Ctr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cum/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Cum/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-DaP/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-DaP/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-DaS/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-DaS/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Dry/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Dry/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Emr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Emr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-GWW/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-GWW/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Gin/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Gin/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-How/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-How/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Lit/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Lit/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Otw/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Otw/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Rig/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Rig/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Rob/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Rob/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Sam/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Sam/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Stp/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Stp/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-TTE/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-TTE/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Tum/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Tum/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Whr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Whr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Wrr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Wrr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Ync/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/AU-Ync/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Bra/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Bra/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Lon/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Lon/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Vie/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BE-Vie/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BR-Sa3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BR-Sa3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BW-Ma1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/BW-Ma1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS4/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS4/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS5/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS5/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS6/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS6/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS7/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-NS7/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-Qcu/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-Qcu/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-Qfo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-Qfo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CA-SF3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Cha/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Cha/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Dav/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Dav/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Fru/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Fru/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Oe1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CH-Oe1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Cha/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Cha/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Cng/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Cng/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Dan/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Dan/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Din/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Din/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Du2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Du2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-HaM/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-HaM/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Qia/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CN-Qia/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CZ-wet/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/CZ-wet/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Bay/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Bay/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Geb/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Geb/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Gri/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Gri/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Hai/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Hai/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Kli/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Kli/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Meh/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Meh/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Obe/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Obe/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Seh/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Seh/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-SfN/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-SfN/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Tha/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Tha/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Wet/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DE-Wet/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Fou/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Fou/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Lva/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Lva/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Ris/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Ris/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Sor/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-Sor/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-ZaH/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/DK-ZaH/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-ES1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-ES1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-ES2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-ES2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-LMa/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-LMa/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-LgS/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-LgS/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-VDA/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ES-VDA/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Hyy/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Hyy/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Kaa/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Kaa/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Lom/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Lom/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Sod/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FI-Sod/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Fon/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Fon/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Gri/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Gri/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Hes/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Hes/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-LBr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-LBr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Lq1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Lq1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Lq2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Lq2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Pue/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/FR-Pue/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/GF-Guy/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/GF-Guy/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/HU-Bug/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/HU-Bug/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ID-Pag/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ID-Pag/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IE-Ca1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IE-Ca1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IE-Dri/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IE-Dri/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Amp/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Amp/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-BCi/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-BCi/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-CA3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Col/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Col/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Cpz/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Cpz/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Isp/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Isp/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-LMa/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-LMa/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Lav/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Lav/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-MBo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-MBo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Mal/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Mal/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Noe/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Noe/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Non/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Non/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-PT1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-PT1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ren/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ren/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ro1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ro1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ro2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-Ro2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-SR2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-SR2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-SRo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/IT-SRo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/JP-SMF/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/JP-SMF/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Ca1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Ca1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Hor/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Hor/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Loo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/NL-Loo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PL-wet/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PL-wet/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Esp/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Esp/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Mi1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Mi1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Mi2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/PT-Mi2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Che/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Che/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Fyo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Fyo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Zot/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/RU-Zot/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/SD-Dem/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/SD-Dem/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/SE-Deg/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/SE-Deg/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-Gri/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-Gri/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-Ham/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-Ham/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-PL3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/UK-PL3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-AR1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-AR1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-AR2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-AR2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-ARM/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-ARM/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Aud/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Aud/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bar/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bar/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bkg/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bkg/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Blo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Blo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bo1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Bo1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Cop/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Cop/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-FPe/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-FPe/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-GLE/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-GLE/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Goo/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Goo/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ha1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ha1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ho1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ho1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-KS2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-KS2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Los/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Los/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-MMS/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-MMS/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-MOz/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-MOz/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me4/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me4/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me6/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Me6/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Myb/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Myb/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-NR1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-NR1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ne3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-PFa/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-PFa/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Prr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Prr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP1/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP1/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP2/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP2/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP3/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SP3/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SRG/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SRG/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SRM/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-SRM/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Syv/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Syv/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ton/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Ton/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Tw4/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Tw4/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Twt/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Twt/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-UMB/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-UMB/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Var/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Var/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-WCr/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-WCr/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Whs/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Whs/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Wkg/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/US-Wkg/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ZA-Kru/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ZA-Kru/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ZM-Mon/include_user_mods | 0 .../usermods_dirs/{ => clm}/PLUMBER2/ZM-Mon/shell_commands | 0 .../usermods_dirs/{ => clm}/PLUMBER2/defaults/shell_commands | 0 cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/user_nl_cpl | 0 .../{ => clm}/PLUMBER2/defaults/user_nl_datm_streams | 0 cime_config/usermods_dirs/{ => clm}/_includes/README | 0 .../{ => clm}/_includes/cmip6_carbon_isotopes/user_nl_clm | 0 .../{ => clm}/_includes/cmip6_glaciers_cplhist/user_nl_cpl | 0 .../_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/_includes/output_base/README | 0 .../usermods_dirs/{ => clm}/_includes/output_base/user_nl_clm | 0 .../usermods_dirs/{ => clm}/_includes/output_base_highfreq/README | 0 .../{ => clm}/_includes/output_base_highfreq/include_user_mods | 0 .../{ => clm}/_includes/output_base_highfreq/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/cmip6_deck/include_user_mods | 0 .../{ => clm}/cmip6_evolving_icesheet/include_user_mods | 0 .../usermods_dirs/{ => clm}/cmip6_evolving_icesheet/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/cmip6_waccm_deck/README | 0 .../usermods_dirs/{ => clm}/cmip6_waccm_deck/include_user_mods | 0 .../usermods_dirs/{ => clm}/cmip6_waccm_deck/shell_commands | 0 .../usermods_dirs/{ => clm}/cmip6_waccm_nociso_deck/README | 0 .../{ => clm}/cmip6_waccm_nociso_deck/include_user_mods | 0 .../usermods_dirs/{ => clm}/f09_37x288pt_PanBoreal/shell_commands | 0 .../usermods_dirs/{ => clm}/f09_37x288pt_PanBoreal/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/fates_sp/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/lilac/README | 0 cime_config/usermods_dirs/{ => clm}/lilac/user_nl_ctsm | 0 cime_config/usermods_dirs/{ => clm}/newton_krylov_spinup/README | 0 .../usermods_dirs/{ => clm}/newton_krylov_spinup/shell_commands | 0 .../usermods_dirs/{ => clm}/newton_krylov_spinup/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/output_bgc/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/output_bgc/user_nl_clm | 0 .../usermods_dirs/{ => clm}/output_bgc_highfreq/include_user_mods | 0 .../usermods_dirs/{ => clm}/output_bgc_highfreq/user_nl_clm | 0 cime_config/usermods_dirs/{ => clm}/output_crop/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/output_crop/user_nl_clm | 0 .../{ => clm}/output_crop_highfreq/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/output_sp/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/output_sp/user_nl_clm | 0 .../usermods_dirs/{ => clm}/output_sp_exice/include_user_mods | 0 cime_config/usermods_dirs/{ => clm}/output_sp_exice/user_nl_clm | 0 .../usermods_dirs/{ => clm}/output_sp_highfreq/include_user_mods | 0 .../usermods_dirs/{ => clm}/output_sp_highfreq/user_nl_clm | 0 575 files changed, 0 insertions(+), 0 deletions(-) rename cime_config/usermods_dirs/{ => clm}/NEON/ABBY/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/ABBY/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BARR/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BARR/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BART/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BART/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BLAN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BLAN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BONA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/BONA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/CLBJ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/CLBJ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/CPER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/CPER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DCFS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DCFS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DEJU/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DEJU/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DELA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DELA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DSNY/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/DSNY/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ABBY/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ABBY/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BARR/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BARR/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BART/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BART/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BLAN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BLAN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BONA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/BONA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/CLBJ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/CLBJ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/CPER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/CPER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DCFS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DCFS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DEJU/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DEJU/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DELA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DELA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DSNY/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/DSNY/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/GRSM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/GRSM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/GUAN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/GUAN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/HARV/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/HARV/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/HEAL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/HEAL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/JERC/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/JERC/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/JORN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/JORN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/KONZ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/KONZ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/LAJA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/LAJA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/LENO/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/LENO/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/MLBS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/MLBS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/MOAB/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/MOAB/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/NIWO/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/NIWO/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/NOGP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/NOGP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/OAES/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/OAES/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ONAQ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ONAQ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ORNL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/ORNL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/OSBS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/OSBS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/PUUM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/PUUM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/README.md (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/RMNP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/RMNP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SCBI/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SCBI/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SERC/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SERC/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SJER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SJER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SOAP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SOAP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SRER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/SRER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/STEI/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/STEI/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TALL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TALL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TEAK/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TEAK/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TOOL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TOOL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TREE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/TREE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/UKFS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/UKFS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/UNDE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/UNDE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/WOOD/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/WOOD/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/WREF/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/WREF/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/YELL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/YELL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/defaults/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/defaults/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/defaults/user_nl_cpl (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/FATES/defaults/user_nl_datm_streams (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/GRSM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/GRSM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/GUAN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/GUAN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/HARV/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/HARV/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/HEAL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/HEAL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/JERC/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/JERC/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/JORN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/JORN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/KONA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/KONA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/KONZ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/KONZ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/LAJA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/LAJA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/LENO/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/LENO/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/MLBS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/MLBS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/MOAB/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/MOAB/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/NIWO/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/NIWO/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/NOGP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/NOGP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/OAES/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/OAES/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/ONAQ/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/ONAQ/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/ORNL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/ORNL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/OSBS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/OSBS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/PUUM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/PUUM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/RMNP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/RMNP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SCBI/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SCBI/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SERC/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SERC/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SJER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SJER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SOAP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SOAP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SRER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/SRER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/STEI/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/STEI/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/STER/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/STER/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TALL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TALL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TEAK/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TEAK/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TOOL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TOOL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TREE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/TREE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/UKFS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/UKFS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/UNDE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/UNDE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/WOOD/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/WOOD/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/WREF/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/WREF/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/YELL/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/YELL/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/defaults/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/defaults/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/defaults/user_nl_cpl (100%) rename cime_config/usermods_dirs/{ => clm}/NEON/defaults/user_nl_datm_streams (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AR-SLu/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AR-SLu/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AT-Neu/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AT-Neu/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-ASM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-ASM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cow/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cow/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cpr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cpr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Ctr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Ctr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cum/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Cum/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-DaP/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-DaP/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-DaS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-DaS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Dry/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Dry/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Emr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Emr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-GWW/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-GWW/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Gin/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Gin/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-How/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-How/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Lit/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Lit/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Otw/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Otw/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Rig/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Rig/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Rob/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Rob/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Sam/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Sam/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Stp/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Stp/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-TTE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-TTE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Tum/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Tum/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Whr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Whr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Wrr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Wrr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Ync/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/AU-Ync/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Bra/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Bra/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Lon/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Lon/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Vie/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BE-Vie/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BR-Sa3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BR-Sa3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BW-Ma1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/BW-Ma1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS4/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS4/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS5/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS5/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS6/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS6/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS7/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-NS7/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-Qcu/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-Qcu/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-Qfo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-Qfo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CA-SF3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Cha/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Cha/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Dav/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Dav/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Fru/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Fru/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Oe1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CH-Oe1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Cha/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Cha/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Cng/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Cng/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Dan/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Dan/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Din/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Din/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Du2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Du2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-HaM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-HaM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Qia/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CN-Qia/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CZ-wet/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/CZ-wet/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Bay/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Bay/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Geb/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Geb/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Gri/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Gri/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Hai/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Hai/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Kli/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Kli/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Meh/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Meh/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Obe/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Obe/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Seh/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Seh/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-SfN/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-SfN/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Tha/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Tha/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Wet/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DE-Wet/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Fou/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Fou/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Lva/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Lva/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Ris/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Ris/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Sor/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-Sor/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-ZaH/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/DK-ZaH/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-ES1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-ES1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-ES2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-ES2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-LMa/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-LMa/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-LgS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-LgS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-VDA/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ES-VDA/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Hyy/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Hyy/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Kaa/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Kaa/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Lom/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Lom/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Sod/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FI-Sod/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Fon/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Fon/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Gri/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Gri/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Hes/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Hes/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-LBr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-LBr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Lq1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Lq1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Lq2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Lq2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Pue/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/FR-Pue/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/GF-Guy/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/GF-Guy/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/HU-Bug/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/HU-Bug/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ID-Pag/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ID-Pag/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IE-Ca1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IE-Ca1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IE-Dri/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IE-Dri/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Amp/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Amp/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-BCi/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-BCi/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-CA3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Col/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Col/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Cpz/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Cpz/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Isp/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Isp/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-LMa/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-LMa/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Lav/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Lav/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-MBo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-MBo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Mal/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Mal/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Noe/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Noe/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Non/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Non/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-PT1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-PT1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ren/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ren/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ro1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ro1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ro2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-Ro2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-SR2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-SR2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-SRo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/IT-SRo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/JP-SMF/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/JP-SMF/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Ca1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Ca1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Hor/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Hor/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Loo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/NL-Loo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PL-wet/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PL-wet/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Esp/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Esp/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Mi1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Mi1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Mi2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/PT-Mi2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Che/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Che/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Fyo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Fyo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Zot/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/RU-Zot/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/SD-Dem/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/SD-Dem/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/SE-Deg/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/SE-Deg/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-Gri/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-Gri/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-Ham/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-Ham/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-PL3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/UK-PL3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-AR1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-AR1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-AR2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-AR2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-ARM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-ARM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Aud/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Aud/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bar/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bar/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bkg/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bkg/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Blo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Blo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bo1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Bo1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Cop/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Cop/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-FPe/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-FPe/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-GLE/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-GLE/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Goo/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Goo/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ha1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ha1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ho1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ho1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-KS2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-KS2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Los/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Los/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-MMS/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-MMS/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-MOz/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-MOz/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me4/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me4/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me6/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Me6/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Myb/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Myb/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-NR1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-NR1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ne3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-PFa/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-PFa/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Prr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Prr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP1/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP1/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP2/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP2/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP3/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SP3/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SRG/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SRG/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SRM/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-SRM/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Syv/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Syv/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ton/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Ton/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Tw4/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Tw4/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Twt/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Twt/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-UMB/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-UMB/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Var/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Var/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-WCr/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-WCr/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Whs/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Whs/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Wkg/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/US-Wkg/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ZA-Kru/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ZA-Kru/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ZM-Mon/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/ZM-Mon/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/user_nl_cpl (100%) rename cime_config/usermods_dirs/{ => clm}/PLUMBER2/defaults/user_nl_datm_streams (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/README (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/cmip6_carbon_isotopes/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/cmip6_glaciers_cplhist/user_nl_cpl (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/output_base/README (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/output_base/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/output_base_highfreq/README (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/output_base_highfreq/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/_includes/output_base_highfreq/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_deck/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_evolving_icesheet/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_evolving_icesheet/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_waccm_deck/README (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_waccm_deck/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_waccm_deck/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_waccm_nociso_deck/README (100%) rename cime_config/usermods_dirs/{ => clm}/cmip6_waccm_nociso_deck/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/f09_37x288pt_PanBoreal/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/f09_37x288pt_PanBoreal/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/fates_sp/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/lilac/README (100%) rename cime_config/usermods_dirs/{ => clm}/lilac/user_nl_ctsm (100%) rename cime_config/usermods_dirs/{ => clm}/newton_krylov_spinup/README (100%) rename cime_config/usermods_dirs/{ => clm}/newton_krylov_spinup/shell_commands (100%) rename cime_config/usermods_dirs/{ => clm}/newton_krylov_spinup/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_bgc/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_bgc/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_bgc_highfreq/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_bgc_highfreq/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_crop/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_crop/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_crop_highfreq/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp_exice/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp_exice/user_nl_clm (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp_highfreq/include_user_mods (100%) rename cime_config/usermods_dirs/{ => clm}/output_sp_highfreq/user_nl_clm (100%) diff --git a/cime_config/usermods_dirs/NEON/ABBY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ABBY/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/ABBY/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/ABBY/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/ABBY/shell_commands b/cime_config/usermods_dirs/clm/NEON/ABBY/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/ABBY/shell_commands rename to cime_config/usermods_dirs/clm/NEON/ABBY/shell_commands diff --git a/cime_config/usermods_dirs/NEON/BARR/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BARR/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/BARR/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/BARR/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/BARR/shell_commands b/cime_config/usermods_dirs/clm/NEON/BARR/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/BARR/shell_commands rename to cime_config/usermods_dirs/clm/NEON/BARR/shell_commands diff --git a/cime_config/usermods_dirs/NEON/BART/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BART/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/BART/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/BART/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/BART/shell_commands b/cime_config/usermods_dirs/clm/NEON/BART/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/BART/shell_commands rename to cime_config/usermods_dirs/clm/NEON/BART/shell_commands diff --git a/cime_config/usermods_dirs/NEON/BLAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BLAN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/BLAN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/BLAN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/BLAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/BLAN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/BLAN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/BLAN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/BONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BONA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/BONA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/BONA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/BONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/BONA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/BONA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/BONA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/CLBJ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/CLBJ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/CLBJ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/CLBJ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/CLBJ/shell_commands b/cime_config/usermods_dirs/clm/NEON/CLBJ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/CLBJ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/CLBJ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/CPER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/CPER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/CPER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/CPER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/CPER/shell_commands b/cime_config/usermods_dirs/clm/NEON/CPER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/CPER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/CPER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/DCFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DCFS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/DCFS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/DCFS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/DCFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/DCFS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/DCFS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/DCFS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/DEJU/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DEJU/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/DEJU/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/DEJU/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/DEJU/shell_commands b/cime_config/usermods_dirs/clm/NEON/DEJU/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/DEJU/shell_commands rename to cime_config/usermods_dirs/clm/NEON/DEJU/shell_commands diff --git a/cime_config/usermods_dirs/NEON/DELA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DELA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/DELA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/DELA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/DELA/shell_commands b/cime_config/usermods_dirs/clm/NEON/DELA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/DELA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/DELA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/DSNY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DSNY/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/DSNY/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/DSNY/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/DSNY/shell_commands b/cime_config/usermods_dirs/clm/NEON/DSNY/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/DSNY/shell_commands rename to cime_config/usermods_dirs/clm/NEON/DSNY/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/ABBY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ABBY/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ABBY/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/ABBY/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/ABBY/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ABBY/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ABBY/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/ABBY/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/BARR/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BARR/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BARR/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/BARR/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/BARR/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BARR/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BARR/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/BARR/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/BART/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BART/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BART/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/BART/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/BART/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BART/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BART/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/BART/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/BLAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BLAN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BLAN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/BLAN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/BLAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BLAN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BLAN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/BLAN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/BONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BONA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BONA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/BONA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/BONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BONA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/BONA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/BONA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/CLBJ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/CLBJ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/CLBJ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/CLBJ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/CPER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/CPER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/CPER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/CPER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/CPER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/CPER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/CPER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/CPER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/DCFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DCFS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DCFS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/DCFS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/DCFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DCFS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DCFS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/DCFS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/DEJU/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DEJU/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DEJU/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/DEJU/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/DEJU/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DEJU/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DEJU/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/DEJU/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/DELA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DELA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DELA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/DELA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/DELA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DELA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DELA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/DELA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/DSNY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DSNY/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DSNY/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/DSNY/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/DSNY/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DSNY/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/DSNY/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/DSNY/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/GRSM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/GRSM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/GRSM/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/GRSM/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/GRSM/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/GRSM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/GRSM/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/GRSM/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/GUAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/GUAN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/GUAN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/GUAN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/GUAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/GUAN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/GUAN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/GUAN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/HARV/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/HARV/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/HARV/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/HARV/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/HARV/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/HARV/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/HARV/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/HARV/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/HEAL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/HEAL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/HEAL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/HEAL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/HEAL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/HEAL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/HEAL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/HEAL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/JERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/JERC/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/JERC/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/JERC/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/JERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/JERC/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/JERC/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/JERC/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/JORN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/JORN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/JORN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/JORN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/JORN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/JORN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/JORN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/JORN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/KONZ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/KONZ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/KONZ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/KONZ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/KONZ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/KONZ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/KONZ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/KONZ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/LAJA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/LAJA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/LAJA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/LAJA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/LAJA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/LAJA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/LAJA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/LAJA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/LENO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/LENO/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/LENO/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/LENO/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/LENO/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/LENO/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/LENO/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/LENO/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/MLBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/MLBS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/MLBS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/MLBS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/MLBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/MLBS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/MLBS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/MLBS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/MOAB/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/MOAB/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/MOAB/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/MOAB/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/MOAB/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/MOAB/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/MOAB/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/MOAB/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/NIWO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/NIWO/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/NIWO/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/NIWO/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/NIWO/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/NIWO/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/NIWO/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/NIWO/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/NOGP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/NOGP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/NOGP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/NOGP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/NOGP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/NOGP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/NOGP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/NOGP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/OAES/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/OAES/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/OAES/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/OAES/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/OAES/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/OAES/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/OAES/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/OAES/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/ONAQ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ONAQ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/ONAQ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ONAQ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/ORNL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ORNL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ORNL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/ORNL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/ORNL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ORNL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/ORNL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/ORNL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/OSBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/OSBS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/OSBS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/OSBS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/OSBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/OSBS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/OSBS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/OSBS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/PUUM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/PUUM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/PUUM/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/PUUM/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/PUUM/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/PUUM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/PUUM/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/PUUM/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/README.md b/cime_config/usermods_dirs/clm/NEON/FATES/README.md similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/README.md rename to cime_config/usermods_dirs/clm/NEON/FATES/README.md diff --git a/cime_config/usermods_dirs/NEON/FATES/RMNP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/RMNP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/RMNP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/RMNP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/RMNP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/RMNP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/RMNP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/RMNP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/SCBI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SCBI/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SCBI/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/SCBI/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/SCBI/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SCBI/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SCBI/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/SCBI/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/SERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SERC/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SERC/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/SERC/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/SERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SERC/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SERC/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/SERC/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/SJER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SJER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SJER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/SJER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/SJER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SJER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SJER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/SJER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/SOAP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SOAP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SOAP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/SOAP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/SOAP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SOAP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SOAP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/SOAP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/SRER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SRER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SRER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/SRER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/SRER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SRER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/SRER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/SRER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/STEI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/STEI/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/STEI/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/STEI/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/STEI/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/STEI/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/STEI/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/STEI/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/TALL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TALL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TALL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/TALL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/TALL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TALL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TALL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/TALL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/TEAK/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TEAK/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TEAK/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/TEAK/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/TEAK/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TEAK/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TEAK/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/TEAK/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/TOOL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TOOL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TOOL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/TOOL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/TOOL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TOOL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TOOL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/TOOL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/TREE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TREE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TREE/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/TREE/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/TREE/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TREE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/TREE/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/TREE/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/UKFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/UKFS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/UKFS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/UKFS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/UKFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/UKFS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/UKFS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/UKFS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/UNDE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/UNDE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/UNDE/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/UNDE/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/UNDE/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/UNDE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/UNDE/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/UNDE/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/WOOD/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/WOOD/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/WOOD/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/WOOD/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/WOOD/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/WOOD/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/WOOD/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/WOOD/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/WREF/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/WREF/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/WREF/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/WREF/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/WREF/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/WREF/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/WREF/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/WREF/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/YELL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/YELL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/YELL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/FATES/YELL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/FATES/YELL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/YELL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/YELL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/YELL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/defaults/shell_commands rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/shell_commands diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_clm rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_clm diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_cpl similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_cpl rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_cpl diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams similarity index 100% rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_datm_streams rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams diff --git a/cime_config/usermods_dirs/NEON/GRSM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/GRSM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/GRSM/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/GRSM/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/GRSM/shell_commands b/cime_config/usermods_dirs/clm/NEON/GRSM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/GRSM/shell_commands rename to cime_config/usermods_dirs/clm/NEON/GRSM/shell_commands diff --git a/cime_config/usermods_dirs/NEON/GUAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/GUAN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/GUAN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/GUAN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/GUAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/GUAN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/GUAN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/GUAN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/HARV/include_user_mods b/cime_config/usermods_dirs/clm/NEON/HARV/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/HARV/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/HARV/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/HARV/shell_commands b/cime_config/usermods_dirs/clm/NEON/HARV/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/HARV/shell_commands rename to cime_config/usermods_dirs/clm/NEON/HARV/shell_commands diff --git a/cime_config/usermods_dirs/NEON/HEAL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/HEAL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/HEAL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/HEAL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/HEAL/shell_commands b/cime_config/usermods_dirs/clm/NEON/HEAL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/HEAL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/HEAL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/JERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/JERC/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/JERC/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/JERC/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/JERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/JERC/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/JERC/shell_commands rename to cime_config/usermods_dirs/clm/NEON/JERC/shell_commands diff --git a/cime_config/usermods_dirs/NEON/JORN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/JORN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/JORN/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/JORN/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/JORN/shell_commands b/cime_config/usermods_dirs/clm/NEON/JORN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/JORN/shell_commands rename to cime_config/usermods_dirs/clm/NEON/JORN/shell_commands diff --git a/cime_config/usermods_dirs/NEON/KONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/KONA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/KONA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/KONA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/KONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/KONA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/KONA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/KONA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/KONZ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/KONZ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/KONZ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/KONZ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/KONZ/shell_commands b/cime_config/usermods_dirs/clm/NEON/KONZ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/KONZ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/KONZ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/LAJA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/LAJA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/LAJA/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/LAJA/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/LAJA/shell_commands b/cime_config/usermods_dirs/clm/NEON/LAJA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/LAJA/shell_commands rename to cime_config/usermods_dirs/clm/NEON/LAJA/shell_commands diff --git a/cime_config/usermods_dirs/NEON/LENO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/LENO/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/LENO/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/LENO/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/LENO/shell_commands b/cime_config/usermods_dirs/clm/NEON/LENO/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/LENO/shell_commands rename to cime_config/usermods_dirs/clm/NEON/LENO/shell_commands diff --git a/cime_config/usermods_dirs/NEON/MLBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/MLBS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/MLBS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/MLBS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/MLBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/MLBS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/MLBS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/MLBS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/MOAB/include_user_mods b/cime_config/usermods_dirs/clm/NEON/MOAB/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/MOAB/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/MOAB/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/MOAB/shell_commands b/cime_config/usermods_dirs/clm/NEON/MOAB/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/MOAB/shell_commands rename to cime_config/usermods_dirs/clm/NEON/MOAB/shell_commands diff --git a/cime_config/usermods_dirs/NEON/NIWO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/NIWO/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/NIWO/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/NIWO/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/NIWO/shell_commands b/cime_config/usermods_dirs/clm/NEON/NIWO/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/NIWO/shell_commands rename to cime_config/usermods_dirs/clm/NEON/NIWO/shell_commands diff --git a/cime_config/usermods_dirs/NEON/NOGP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/NOGP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/NOGP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/NOGP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/NOGP/shell_commands b/cime_config/usermods_dirs/clm/NEON/NOGP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/NOGP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/NOGP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/OAES/include_user_mods b/cime_config/usermods_dirs/clm/NEON/OAES/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/OAES/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/OAES/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/OAES/shell_commands b/cime_config/usermods_dirs/clm/NEON/OAES/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/OAES/shell_commands rename to cime_config/usermods_dirs/clm/NEON/OAES/shell_commands diff --git a/cime_config/usermods_dirs/NEON/ONAQ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ONAQ/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/ONAQ/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/ONAQ/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/ONAQ/shell_commands b/cime_config/usermods_dirs/clm/NEON/ONAQ/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/ONAQ/shell_commands rename to cime_config/usermods_dirs/clm/NEON/ONAQ/shell_commands diff --git a/cime_config/usermods_dirs/NEON/ORNL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ORNL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/ORNL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/ORNL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/ORNL/shell_commands b/cime_config/usermods_dirs/clm/NEON/ORNL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/ORNL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/ORNL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/OSBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/OSBS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/OSBS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/OSBS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/OSBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/OSBS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/OSBS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/OSBS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/PUUM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/PUUM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/PUUM/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/PUUM/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/PUUM/shell_commands b/cime_config/usermods_dirs/clm/NEON/PUUM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/PUUM/shell_commands rename to cime_config/usermods_dirs/clm/NEON/PUUM/shell_commands diff --git a/cime_config/usermods_dirs/NEON/RMNP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/RMNP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/RMNP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/RMNP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/RMNP/shell_commands b/cime_config/usermods_dirs/clm/NEON/RMNP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/RMNP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/RMNP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/SCBI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SCBI/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/SCBI/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/SCBI/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/SCBI/shell_commands b/cime_config/usermods_dirs/clm/NEON/SCBI/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/SCBI/shell_commands rename to cime_config/usermods_dirs/clm/NEON/SCBI/shell_commands diff --git a/cime_config/usermods_dirs/NEON/SERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SERC/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/SERC/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/SERC/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/SERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/SERC/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/SERC/shell_commands rename to cime_config/usermods_dirs/clm/NEON/SERC/shell_commands diff --git a/cime_config/usermods_dirs/NEON/SJER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SJER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/SJER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/SJER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/SJER/shell_commands b/cime_config/usermods_dirs/clm/NEON/SJER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/SJER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/SJER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/SOAP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SOAP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/SOAP/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/SOAP/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/SOAP/shell_commands b/cime_config/usermods_dirs/clm/NEON/SOAP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/SOAP/shell_commands rename to cime_config/usermods_dirs/clm/NEON/SOAP/shell_commands diff --git a/cime_config/usermods_dirs/NEON/SRER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SRER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/SRER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/SRER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/SRER/shell_commands b/cime_config/usermods_dirs/clm/NEON/SRER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/SRER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/SRER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/STEI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/STEI/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/STEI/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/STEI/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/STEI/shell_commands b/cime_config/usermods_dirs/clm/NEON/STEI/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/STEI/shell_commands rename to cime_config/usermods_dirs/clm/NEON/STEI/shell_commands diff --git a/cime_config/usermods_dirs/NEON/STER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/STER/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/STER/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/STER/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/STER/shell_commands b/cime_config/usermods_dirs/clm/NEON/STER/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/STER/shell_commands rename to cime_config/usermods_dirs/clm/NEON/STER/shell_commands diff --git a/cime_config/usermods_dirs/NEON/TALL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TALL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/TALL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/TALL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/TALL/shell_commands b/cime_config/usermods_dirs/clm/NEON/TALL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/TALL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/TALL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/TEAK/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TEAK/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/TEAK/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/TEAK/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/TEAK/shell_commands b/cime_config/usermods_dirs/clm/NEON/TEAK/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/TEAK/shell_commands rename to cime_config/usermods_dirs/clm/NEON/TEAK/shell_commands diff --git a/cime_config/usermods_dirs/NEON/TOOL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TOOL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/TOOL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/TOOL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/TOOL/shell_commands b/cime_config/usermods_dirs/clm/NEON/TOOL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/TOOL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/TOOL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/TREE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TREE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/TREE/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/TREE/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/TREE/shell_commands b/cime_config/usermods_dirs/clm/NEON/TREE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/TREE/shell_commands rename to cime_config/usermods_dirs/clm/NEON/TREE/shell_commands diff --git a/cime_config/usermods_dirs/NEON/UKFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/UKFS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/UKFS/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/UKFS/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/UKFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/UKFS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/UKFS/shell_commands rename to cime_config/usermods_dirs/clm/NEON/UKFS/shell_commands diff --git a/cime_config/usermods_dirs/NEON/UNDE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/UNDE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/UNDE/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/UNDE/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/UNDE/shell_commands b/cime_config/usermods_dirs/clm/NEON/UNDE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/UNDE/shell_commands rename to cime_config/usermods_dirs/clm/NEON/UNDE/shell_commands diff --git a/cime_config/usermods_dirs/NEON/WOOD/include_user_mods b/cime_config/usermods_dirs/clm/NEON/WOOD/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/WOOD/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/WOOD/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/WOOD/shell_commands b/cime_config/usermods_dirs/clm/NEON/WOOD/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/WOOD/shell_commands rename to cime_config/usermods_dirs/clm/NEON/WOOD/shell_commands diff --git a/cime_config/usermods_dirs/NEON/WREF/include_user_mods b/cime_config/usermods_dirs/clm/NEON/WREF/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/WREF/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/WREF/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/WREF/shell_commands b/cime_config/usermods_dirs/clm/NEON/WREF/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/WREF/shell_commands rename to cime_config/usermods_dirs/clm/NEON/WREF/shell_commands diff --git a/cime_config/usermods_dirs/NEON/YELL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/YELL/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/NEON/YELL/include_user_mods rename to cime_config/usermods_dirs/clm/NEON/YELL/include_user_mods diff --git a/cime_config/usermods_dirs/NEON/YELL/shell_commands b/cime_config/usermods_dirs/clm/NEON/YELL/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/YELL/shell_commands rename to cime_config/usermods_dirs/clm/NEON/YELL/shell_commands diff --git a/cime_config/usermods_dirs/NEON/defaults/shell_commands b/cime_config/usermods_dirs/clm/NEON/defaults/shell_commands similarity index 100% rename from cime_config/usermods_dirs/NEON/defaults/shell_commands rename to cime_config/usermods_dirs/clm/NEON/defaults/shell_commands diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/NEON/defaults/user_nl_clm rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_clm diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_cpl similarity index 100% rename from cime_config/usermods_dirs/NEON/defaults/user_nl_cpl rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_cpl diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams similarity index 100% rename from cime_config/usermods_dirs/NEON/defaults/user_nl_datm_streams rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams diff --git a/cime_config/usermods_dirs/PLUMBER2/AR-SLu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AR-SLu/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AR-SLu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AR-SLu/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AT-Neu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AT-Neu/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AT-Neu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AT-Neu/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-ASM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-ASM/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-ASM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-ASM/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cow/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cow/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cow/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cow/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cpr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cpr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cpr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cpr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ctr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Ctr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ctr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Ctr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cum/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cum/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cum/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Cum/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaP/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-DaP/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaP/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-DaP/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-DaS/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-DaS/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Dry/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Dry/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Dry/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Dry/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Emr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Emr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Emr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Emr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-GWW/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-GWW/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-GWW/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-GWW/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Gin/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Gin/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Gin/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Gin/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-How/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-How/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-How/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-How/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-How/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-How/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-How/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-How/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Lit/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Lit/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Lit/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Lit/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Otw/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Otw/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Otw/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Otw/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rig/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Rig/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rig/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Rig/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rob/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Rob/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rob/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Rob/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Sam/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Sam/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Sam/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Sam/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Stp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Stp/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Stp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Stp/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-TTE/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-TTE/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-TTE/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-TTE/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Tum/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Tum/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Tum/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Tum/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Whr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Whr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Whr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Whr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Wrr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Wrr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Wrr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Wrr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ync/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Ync/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ync/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/AU-Ync/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Bra/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Bra/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Bra/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Bra/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Lon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Lon/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Lon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Lon/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Vie/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Vie/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Vie/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BE-Vie/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/BR-Sa3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BR-Sa3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/BR-Sa3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BR-Sa3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/BW-Ma1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BW-Ma1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/BW-Ma1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/BW-Ma1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS4/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS4/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS5/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS5/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS5/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS5/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS6/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS6/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS6/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS6/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS7/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS7/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS7/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-NS7/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qcu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-Qcu/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qcu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-Qcu/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qfo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-Qfo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qfo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-Qfo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CA-SF3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Cha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Cha/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Cha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Cha/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Dav/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Dav/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Dav/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Dav/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Fru/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Fru/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Fru/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Fru/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Oe1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Oe1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Oe1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CH-Oe1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Cha/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Cha/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cng/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Cng/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cng/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Cng/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Dan/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Dan/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Dan/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Dan/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Din/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Din/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Din/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Din/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Du2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Du2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Du2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Du2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-HaM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-HaM/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-HaM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-HaM/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Qia/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Qia/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Qia/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CN-Qia/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/CZ-wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CZ-wet/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/CZ-wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/CZ-wet/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Bay/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Bay/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Bay/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Bay/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Geb/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Geb/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Geb/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Geb/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Gri/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Gri/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Hai/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Hai/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Hai/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Hai/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Kli/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Kli/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Kli/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Kli/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Meh/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Meh/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Meh/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Meh/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Obe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Obe/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Obe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Obe/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Seh/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Seh/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Seh/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Seh/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-SfN/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-SfN/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-SfN/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-SfN/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Tha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Tha/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Tha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Tha/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Wet/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DE-Wet/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Fou/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Fou/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Fou/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Fou/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Lva/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Lva/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Lva/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Lva/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Ris/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Ris/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Ris/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Ris/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Sor/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Sor/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Sor/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-Sor/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-ZaH/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-ZaH/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-ZaH/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/DK-ZaH/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-ES1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-ES1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-ES2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-ES2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LMa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-LMa/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LMa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-LMa/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LgS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-LgS/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LgS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-LgS/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-VDA/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-VDA/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-VDA/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ES-VDA/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Hyy/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Hyy/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Hyy/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Hyy/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Kaa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Kaa/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Kaa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Kaa/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Lom/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Lom/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Lom/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Lom/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Sod/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Sod/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Sod/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FI-Sod/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Fon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Fon/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Fon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Fon/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Gri/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Gri/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Hes/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Hes/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Hes/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Hes/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-LBr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-LBr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-LBr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-LBr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Pue/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Pue/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Pue/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/FR-Pue/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/GF-Guy/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/GF-Guy/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/GF-Guy/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/GF-Guy/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/HU-Bug/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/HU-Bug/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/HU-Bug/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/HU-Bug/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ID-Pag/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ID-Pag/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ID-Pag/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ID-Pag/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Ca1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IE-Ca1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Ca1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IE-Ca1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Dri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IE-Dri/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Dri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IE-Dri/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Amp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Amp/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Amp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Amp/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-BCi/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-BCi/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-BCi/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-BCi/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-CA3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Col/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Col/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Col/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Col/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Cpz/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Cpz/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Cpz/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Cpz/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Isp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Isp/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Isp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Isp/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-LMa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-LMa/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-LMa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-LMa/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Lav/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Lav/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Lav/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Lav/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-MBo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-MBo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-MBo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-MBo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Mal/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Mal/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Mal/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Mal/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Noe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Noe/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Noe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Noe/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Non/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Non/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Non/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Non/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-PT1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-PT1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-PT1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-PT1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ren/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ren/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ren/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ren/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SR2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-SR2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SR2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-SR2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SRo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-SRo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SRo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/IT-SRo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/JP-SMF/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/JP-SMF/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/JP-SMF/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/JP-SMF/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Ca1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Ca1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Ca1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Ca1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Hor/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Hor/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Hor/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Hor/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Loo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Loo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Loo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/NL-Loo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/PL-wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PL-wet/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/PL-wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PL-wet/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Esp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Esp/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Esp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Esp/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Che/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Che/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Che/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Che/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Fyo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Fyo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Fyo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Fyo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Zot/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Zot/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Zot/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/RU-Zot/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/SD-Dem/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/SD-Dem/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/SD-Dem/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/SD-Dem/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/SE-Deg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/SE-Deg/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/SE-Deg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/SE-Deg/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-Gri/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-Gri/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Ham/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-Ham/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Ham/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-Ham/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-PL3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-PL3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-PL3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/UK-PL3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-AR1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-AR1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-AR2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-AR2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-ARM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-ARM/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-ARM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-ARM/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Aud/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Aud/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Aud/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Aud/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bar/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bar/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bar/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bar/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bkg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bkg/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bkg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bkg/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Blo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Blo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Blo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Blo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bo1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bo1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bo1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Bo1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Cop/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Cop/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Cop/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Cop/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-FPe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-FPe/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-FPe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-FPe/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-GLE/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-GLE/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-GLE/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-GLE/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Goo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Goo/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Goo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Goo/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ha1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ha1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ha1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ha1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ho1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ho1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ho1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ho1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-KS2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-KS2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-KS2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-KS2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Los/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Los/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Los/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Los/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Los/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Los/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Los/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Los/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MMS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-MMS/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MMS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-MMS/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MOz/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-MOz/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MOz/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-MOz/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me4/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me4/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me6/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me6/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me6/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Me6/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Myb/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Myb/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Myb/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Myb/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-NR1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-NR1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-NR1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-NR1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ne3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-PFa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-PFa/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-PFa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-PFa/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Prr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Prr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Prr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Prr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP1/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP1/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP2/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP2/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP3/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SP3/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRG/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SRG/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRG/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SRG/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SRM/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-SRM/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Syv/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Syv/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Syv/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Syv/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ton/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ton/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ton/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Ton/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Tw4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Tw4/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Tw4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Tw4/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Twt/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Twt/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Twt/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Twt/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-UMB/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-UMB/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-UMB/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-UMB/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Var/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Var/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Var/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Var/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Var/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Var/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Var/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Var/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-WCr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-WCr/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-WCr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-WCr/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Whs/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Whs/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Whs/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Whs/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Wkg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Wkg/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Wkg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/US-Wkg/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ZA-Kru/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ZA-Kru/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ZA-Kru/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ZA-Kru/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/ZM-Mon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ZM-Mon/include_user_mods rename to cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/include_user_mods diff --git a/cime_config/usermods_dirs/PLUMBER2/ZM-Mon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/ZM-Mon/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/shell_commands similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/defaults/shell_commands rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/shell_commands diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_clm rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_clm diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_cpl similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_cpl rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_cpl diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams similarity index 100% rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_datm_streams rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams diff --git a/cime_config/usermods_dirs/_includes/README b/cime_config/usermods_dirs/clm/_includes/README similarity index 100% rename from cime_config/usermods_dirs/_includes/README rename to cime_config/usermods_dirs/clm/_includes/README diff --git a/cime_config/usermods_dirs/_includes/cmip6_carbon_isotopes/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/cmip6_carbon_isotopes/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/_includes/cmip6_carbon_isotopes/user_nl_clm rename to cime_config/usermods_dirs/clm/_includes/cmip6_carbon_isotopes/user_nl_clm diff --git a/cime_config/usermods_dirs/_includes/cmip6_glaciers_cplhist/user_nl_cpl b/cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_cplhist/user_nl_cpl similarity index 100% rename from cime_config/usermods_dirs/_includes/cmip6_glaciers_cplhist/user_nl_cpl rename to cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_cplhist/user_nl_cpl diff --git a/cime_config/usermods_dirs/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm rename to cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm diff --git a/cime_config/usermods_dirs/_includes/output_base/README b/cime_config/usermods_dirs/clm/_includes/output_base/README similarity index 100% rename from cime_config/usermods_dirs/_includes/output_base/README rename to cime_config/usermods_dirs/clm/_includes/output_base/README diff --git a/cime_config/usermods_dirs/_includes/output_base/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/output_base/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/_includes/output_base/user_nl_clm rename to cime_config/usermods_dirs/clm/_includes/output_base/user_nl_clm diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/README b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/README similarity index 100% rename from cime_config/usermods_dirs/_includes/output_base_highfreq/README rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/README diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/_includes/output_base_highfreq/include_user_mods rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/include_user_mods diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/_includes/output_base_highfreq/user_nl_clm rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/user_nl_clm diff --git a/cime_config/usermods_dirs/cmip6_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_deck/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/cmip6_deck/include_user_mods rename to cime_config/usermods_dirs/clm/cmip6_deck/include_user_mods diff --git a/cime_config/usermods_dirs/cmip6_evolving_icesheet/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/cmip6_evolving_icesheet/include_user_mods rename to cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/include_user_mods diff --git a/cime_config/usermods_dirs/cmip6_evolving_icesheet/user_nl_clm b/cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/cmip6_evolving_icesheet/user_nl_clm rename to cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/user_nl_clm diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/README b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/README similarity index 100% rename from cime_config/usermods_dirs/cmip6_waccm_deck/README rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/README diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/cmip6_waccm_deck/include_user_mods rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/include_user_mods diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/shell_commands b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/shell_commands similarity index 100% rename from cime_config/usermods_dirs/cmip6_waccm_deck/shell_commands rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/shell_commands diff --git a/cime_config/usermods_dirs/cmip6_waccm_nociso_deck/README b/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/README similarity index 100% rename from cime_config/usermods_dirs/cmip6_waccm_nociso_deck/README rename to cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/README diff --git a/cime_config/usermods_dirs/cmip6_waccm_nociso_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/cmip6_waccm_nociso_deck/include_user_mods rename to cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/include_user_mods diff --git a/cime_config/usermods_dirs/f09_37x288pt_PanBoreal/shell_commands b/cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/shell_commands similarity index 100% rename from cime_config/usermods_dirs/f09_37x288pt_PanBoreal/shell_commands rename to cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/shell_commands diff --git a/cime_config/usermods_dirs/f09_37x288pt_PanBoreal/user_nl_clm b/cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/f09_37x288pt_PanBoreal/user_nl_clm rename to cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/user_nl_clm diff --git a/cime_config/usermods_dirs/fates_sp/user_nl_clm b/cime_config/usermods_dirs/clm/fates_sp/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/fates_sp/user_nl_clm rename to cime_config/usermods_dirs/clm/fates_sp/user_nl_clm diff --git a/cime_config/usermods_dirs/lilac/README b/cime_config/usermods_dirs/clm/lilac/README similarity index 100% rename from cime_config/usermods_dirs/lilac/README rename to cime_config/usermods_dirs/clm/lilac/README diff --git a/cime_config/usermods_dirs/lilac/user_nl_ctsm b/cime_config/usermods_dirs/clm/lilac/user_nl_ctsm similarity index 100% rename from cime_config/usermods_dirs/lilac/user_nl_ctsm rename to cime_config/usermods_dirs/clm/lilac/user_nl_ctsm diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/README b/cime_config/usermods_dirs/clm/newton_krylov_spinup/README similarity index 100% rename from cime_config/usermods_dirs/newton_krylov_spinup/README rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/README diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/shell_commands b/cime_config/usermods_dirs/clm/newton_krylov_spinup/shell_commands similarity index 100% rename from cime_config/usermods_dirs/newton_krylov_spinup/shell_commands rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/shell_commands diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/user_nl_clm b/cime_config/usermods_dirs/clm/newton_krylov_spinup/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/newton_krylov_spinup/user_nl_clm rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/user_nl_clm diff --git a/cime_config/usermods_dirs/output_bgc/include_user_mods b/cime_config/usermods_dirs/clm/output_bgc/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_bgc/include_user_mods rename to cime_config/usermods_dirs/clm/output_bgc/include_user_mods diff --git a/cime_config/usermods_dirs/output_bgc/user_nl_clm b/cime_config/usermods_dirs/clm/output_bgc/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_bgc/user_nl_clm rename to cime_config/usermods_dirs/clm/output_bgc/user_nl_clm diff --git a/cime_config/usermods_dirs/output_bgc_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_bgc_highfreq/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_bgc_highfreq/include_user_mods rename to cime_config/usermods_dirs/clm/output_bgc_highfreq/include_user_mods diff --git a/cime_config/usermods_dirs/output_bgc_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/output_bgc_highfreq/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_bgc_highfreq/user_nl_clm rename to cime_config/usermods_dirs/clm/output_bgc_highfreq/user_nl_clm diff --git a/cime_config/usermods_dirs/output_crop/include_user_mods b/cime_config/usermods_dirs/clm/output_crop/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_crop/include_user_mods rename to cime_config/usermods_dirs/clm/output_crop/include_user_mods diff --git a/cime_config/usermods_dirs/output_crop/user_nl_clm b/cime_config/usermods_dirs/clm/output_crop/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_crop/user_nl_clm rename to cime_config/usermods_dirs/clm/output_crop/user_nl_clm diff --git a/cime_config/usermods_dirs/output_crop_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_crop_highfreq/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_crop_highfreq/include_user_mods rename to cime_config/usermods_dirs/clm/output_crop_highfreq/include_user_mods diff --git a/cime_config/usermods_dirs/output_sp/include_user_mods b/cime_config/usermods_dirs/clm/output_sp/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_sp/include_user_mods rename to cime_config/usermods_dirs/clm/output_sp/include_user_mods diff --git a/cime_config/usermods_dirs/output_sp/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_sp/user_nl_clm rename to cime_config/usermods_dirs/clm/output_sp/user_nl_clm diff --git a/cime_config/usermods_dirs/output_sp_exice/include_user_mods b/cime_config/usermods_dirs/clm/output_sp_exice/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_sp_exice/include_user_mods rename to cime_config/usermods_dirs/clm/output_sp_exice/include_user_mods diff --git a/cime_config/usermods_dirs/output_sp_exice/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp_exice/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_sp_exice/user_nl_clm rename to cime_config/usermods_dirs/clm/output_sp_exice/user_nl_clm diff --git a/cime_config/usermods_dirs/output_sp_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_sp_highfreq/include_user_mods similarity index 100% rename from cime_config/usermods_dirs/output_sp_highfreq/include_user_mods rename to cime_config/usermods_dirs/clm/output_sp_highfreq/include_user_mods diff --git a/cime_config/usermods_dirs/output_sp_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp_highfreq/user_nl_clm similarity index 100% rename from cime_config/usermods_dirs/output_sp_highfreq/user_nl_clm rename to cime_config/usermods_dirs/clm/output_sp_highfreq/user_nl_clm From 3341540013301ea79b7977cfe6ead0c39493073b Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 11 Dec 2024 00:03:27 -0700 Subject: [PATCH 068/159] Add the clm directory when the usermods_Dirs directory is referenced --- cime_config/config_component.xml | 18 +++++++++--------- .../include_user_mods | 2 +- .../clm/cmip6_deck/include_user_mods | 2 +- .../testmods_dirs/clm/lilac/include_user_mods | 2 +- .../clm/newton_krylov_spinup/README | 2 +- .../clm/newton_krylov_spinup/include_user_mods | 2 +- .../clm/output_bgc_highfreq/include_user_mods | 2 +- .../clm/output_crop_highfreq/include_user_mods | 2 +- .../clm/output_sp_highfreq/include_user_mods | 2 +- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index e7a644f7e2..55ca78f1f4 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -355,15 +355,15 @@ - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/fates_sp - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_nociso_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_nociso_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_nociso_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_deck - $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_nociso_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/fates_sp + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_nociso_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_nociso_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_deck + $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck run_component_ctsm env_case.xml diff --git a/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods index 6d8de3732a..142522f5b3 100644 --- a/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods @@ -1,2 +1,2 @@ ../monthly -../../../../usermods_dirs/output_sp_exice +../../../../usermods_dirs/clm/output_sp_exice diff --git a/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods index 45859d47f6..0f34cfe5cd 100644 --- a/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods @@ -1 +1 @@ -../../../../usermods_dirs/cmip6_deck +../../../../usermods_dirs/clm/cmip6_deck diff --git a/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods index 7b5f17cf20..6e978f6389 100644 --- a/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods @@ -1 +1 @@ -../../../../usermods_dirs/lilac +../../../../usermods_dirs/clm/lilac diff --git a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README index 1363ea696b..4c18c9d65a 100644 --- a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README +++ b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README @@ -1,6 +1,6 @@ slevis 2022/2/1: This testmod tests the newton_krylov_spinup usermod found in -cime_config/usermods_dirs/newton_krylov_spinup +cime_config/usermods_dirs/clm/newton_krylov_spinup combined with the mimics testmod. By default this usermod runs for 20 yrs and writes a history file at that diff --git a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods index 192aa023a8..148f615059 100644 --- a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods @@ -1,2 +1,2 @@ ../mimics -../../../../usermods_dirs/newton_krylov_spinup +../../../../usermods_dirs/clm/newton_krylov_spinup diff --git a/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods index de8b9039c8..0336470fa8 100644 --- a/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods @@ -1,2 +1,2 @@ -../../../../usermods_dirs/output_bgc_highfreq +../../../../usermods_dirs/clm/output_bgc_highfreq ../basic diff --git a/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods index 770abf5cf9..bd3d4850fa 100644 --- a/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods @@ -1,2 +1,2 @@ -../../../../usermods_dirs/output_crop_highfreq +../../../../usermods_dirs/clm/output_crop_highfreq ../basic diff --git a/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods index 2df730d2d0..81287ac4c4 100644 --- a/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods +++ b/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods @@ -1,3 +1,3 @@ ../CLM1PTStartDate -../../../../usermods_dirs/output_sp_highfreq +../../../../usermods_dirs/clm/output_sp_highfreq ../basic From ae9986fd757b31255dc31ace21e3ac265ca43386 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 11 Dec 2024 00:40:37 -0700 Subject: [PATCH 069/159] More change of usermods dirs to be under the clm subdir --- cime_config/usermods_dirs/clm/NEON/FATES/README.md | 2 +- python/ctsm/lilac_build_ctsm.py | 2 +- python/ctsm/site_and_regional/modify_singlept_site_neon.py | 2 +- python/ctsm/site_and_regional/neon_site.py | 6 ++++-- python/ctsm/site_and_regional/plumber2_usermods.py | 2 +- python/ctsm/site_and_regional/run_neon.py | 2 +- python/ctsm/test/test_sys_modify_singlept_site_neon.py | 2 +- python/ctsm/test/test_unit_neon_arg_parse.py | 2 +- tools/site_and_regional/neon_gcs_upload | 2 +- 9 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cime_config/usermods_dirs/clm/NEON/FATES/README.md b/cime_config/usermods_dirs/clm/NEON/FATES/README.md index 49cd2fc767..b801637d9e 100644 --- a/cime_config/usermods_dirs/clm/NEON/FATES/README.md +++ b/cime_config/usermods_dirs/clm/NEON/FATES/README.md @@ -2,7 +2,7 @@ Use these user mods as you would any other user_mods, e.g.: -`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir /glade/work/$user/CTSM/cime_config/usermods_dirs/NEON/FATES/ABBY` +`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir /glade/work/$user/CTSM/cime_config/usermods_dirs/clm/NEON/FATES/ABBY` ## Note on crop sites KONA and STER diff --git a/python/ctsm/lilac_build_ctsm.py b/python/ctsm/lilac_build_ctsm.py index d7b92517c5..c1350005a8 100644 --- a/python/ctsm/lilac_build_ctsm.py +++ b/python/ctsm/lilac_build_ctsm.py @@ -830,7 +830,7 @@ def _stage_runtime_inputs(build_dir, no_pnetcdf): shutil.copyfile( src=os.path.join( - path_to_ctsm_root(), "cime_config", "usermods_dirs", "lilac", "user_nl_ctsm" + path_to_ctsm_root(), "cime_config", "usermods_dirs", "clm", "lilac", "user_nl_ctsm" ), dst=os.path.join(build_dir, _RUNTIME_INPUTS_DIRNAME, "user_nl_ctsm"), ) diff --git a/python/ctsm/site_and_regional/modify_singlept_site_neon.py b/python/ctsm/site_and_regional/modify_singlept_site_neon.py index 5c28bd3582..d0a86a9e3c 100755 --- a/python/ctsm/site_and_regional/modify_singlept_site_neon.py +++ b/python/ctsm/site_and_regional/modify_singlept_site_neon.py @@ -60,7 +60,7 @@ # -- valid neon sites valid = glob.glob( - os.path.join(path_to_ctsm_root(), "cime_config", "usermods_dirs", "NEON", "[!d]*") + os.path.join(path_to_ctsm_root(), "cime_config", "usermods_dirs", "clm", "NEON", "[!d]*") ) valid_neon_sites = [x[-4:] for x in valid] # last 4 letters in each string diff --git a/python/ctsm/site_and_regional/neon_site.py b/python/ctsm/site_and_regional/neon_site.py index 70414d9e5c..73264719ae 100755 --- a/python/ctsm/site_and_regional/neon_site.py +++ b/python/ctsm/site_and_regional/neon_site.py @@ -45,7 +45,9 @@ def build_base_case( ): if user_mods_dirs is None: user_mods_dirs = [ - os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "NEON", self.name) + os.path.join( + self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name + ) ] case_path = super().build_base_case(cesmroot, output_root, res, compset, user_mods_dirs) @@ -94,7 +96,7 @@ def run_case( name of experiment, default False """ user_mods_dirs = [ - os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "NEON", self.name) + os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name) ] tower_type = "NEON" diff --git a/python/ctsm/site_and_regional/plumber2_usermods.py b/python/ctsm/site_and_regional/plumber2_usermods.py index d98899771b..aba6dfa336 100644 --- a/python/ctsm/site_and_regional/plumber2_usermods.py +++ b/python/ctsm/site_and_regional/plumber2_usermods.py @@ -24,7 +24,7 @@ def write_usermods( Write information to be added to user mods """ - site_dir = os.path.join("../../cime_config/usermods_dirs/PLUMBER2/", site) + site_dir = os.path.join("../../cime_config/usermods_dirs/clm/PLUMBER2/", site) if not os.path.isdir(site_dir): os.makedirs(site_dir, exist_ok=True) diff --git a/python/ctsm/site_and_regional/run_neon.py b/python/ctsm/site_and_regional/run_neon.py index 3acbf435b1..ac72554d46 100755 --- a/python/ctsm/site_and_regional/run_neon.py +++ b/python/ctsm/site_and_regional/run_neon.py @@ -177,7 +177,7 @@ def main(description): # The [!Fd]* portion means that we won't retrieve cases that start with: # F (FATES) or d (default). We should be aware of adding cases that start with these. valid_neon_sites = glob.glob( - os.path.join(cesmroot, "cime_config", "usermods_dirs", "NEON", "[!Fd]*") + os.path.join(cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", "[!Fd]*") ) valid_neon_sites = sorted([v.split("/")[-1] for v in valid_neon_sites]) diff --git a/python/ctsm/test/test_sys_modify_singlept_site_neon.py b/python/ctsm/test/test_sys_modify_singlept_site_neon.py index 76a78c3db5..ed7e52ed38 100755 --- a/python/ctsm/test/test_sys_modify_singlept_site_neon.py +++ b/python/ctsm/test/test_sys_modify_singlept_site_neon.py @@ -55,7 +55,7 @@ def test_modify_site(self): sys.argv = [ "modify_singlept_site_neon", "--neon_site", - path_to_ctsm_root() + "/ctsm/cime_config/usermods_dirs/NEON/ABBY", + path_to_ctsm_root() + "/ctsm/cime_config/usermods_dirs/clm/NEON/ABBY", ] # TODO: the above requires a full path instead of site name # because of how run_neon is configured. diff --git a/python/ctsm/test/test_unit_neon_arg_parse.py b/python/ctsm/test/test_unit_neon_arg_parse.py index 4a5b0b9e6c..141b41fbc7 100755 --- a/python/ctsm/test/test_unit_neon_arg_parse.py +++ b/python/ctsm/test/test_unit_neon_arg_parse.py @@ -60,7 +60,7 @@ def test_function(self): description = "" cesmroot = path_to_ctsm_root() valid_neon_sites = glob.glob( - os.path.join(cesmroot, "cime_config", "usermods_dirs", "NEON", "[!d]*") + os.path.join(cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", "[!d]*") ) valid_neon_sites = sorted([v.split("/")[-1] for v in valid_neon_sites]) parsed_arguments = get_parser(sys.argv, description, valid_neon_sites) diff --git a/tools/site_and_regional/neon_gcs_upload b/tools/site_and_regional/neon_gcs_upload index 40afef8e74..1c931e3b8d 100755 --- a/tools/site_and_regional/neon_gcs_upload +++ b/tools/site_and_regional/neon_gcs_upload @@ -126,7 +126,7 @@ def main(description): #os.path.join(os.environ["HOME"],"gcwriter") # Get the list of supported neon sites from usermods - valid_neon_sites = glob.glob(os.path.join(cesmroot,"cime_config","usermods_dirs","NEON","[!d]*")) + valid_neon_sites = glob.glob(os.path.join(cesmroot,"cime_config","usermods_dirs","clm","NEON","[!d]*")) valid_neon_sites = [v.split('/')[-1] for v in valid_neon_sites] filedatestamp = datetime.datetime.now().date() site_list, output_root, file_date, upload_finidat, upload_history = get_parser(sys.argv, description, valid_neon_sites) From 6e5b1b8d2a4c50374fc1930577e3fcec7fe2c8f4 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 11 Dec 2024 10:28:30 -0700 Subject: [PATCH 070/159] Correct path to NEON/PLUMBER2 user_mods_dirs --- 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 9959632470..d42487cfdb 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -368,7 +368,7 @@ sub cat_and_create_namelistinfile { my $phys = "clm6_0"; $mode = "-phys $phys"; &make_config_cache($phys); -my $neondir = "../../cime_config/usermods_dirs/NEON"; +my $neondir = "../../cime_config/usermods_dirs/clm/NEON"; foreach my $site ( "ABBY", "BLAN", "CPER", "DEJU", "GRSM", "HEAL", "KONA", "LENO", "NIWO", "ONAQ", "PUUM", "SERC", "SRER", "TALL", "TREE", "WOOD", "BARR", "BONA", "DCFS", "DELA", "GUAN", "JERC", "KONZ", "MLBS", "NOGP", "ORNL", "RMNP", @@ -421,7 +421,7 @@ sub cat_and_create_namelistinfile { my $phys = "clm6_0"; $mode = "-phys $phys"; &make_config_cache($phys); -my $plumdir = "../../cime_config/usermods_dirs/PLUMBER2"; +my $plumdir = "../../cime_config/usermods_dirs/clm/PLUMBER2"; foreach my $site ( "AR-SLu", "AU-Emr", "AU-TTE", "CA-NS1", "CA-SF3", "CN-HaM", "DE-Obe", "ES-ES1", "FR-Gri", "IE-Dri", "IT-LMa", "IT-SRo", "RU-Fyo", "US-Aud", "US-Ho1", "US-Ne2", "US-Syv", "ZM-Mon", "AT-Neu", "AU-Gin", "AU-Tum", "CA-NS2", "CH-Cha", "CN-Qia", "DE-Seh", "ES-ES2", "FR-Hes", "IT-Amp", "IT-Mal", "JP-SMF", "RU-Zot", "US-Bar", "US-KS2", "US-Ne3", "US-Ton", From acd2266a1679a78c2d391f256db222bf68caeb40 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 11 Dec 2024 10:35:16 -0700 Subject: [PATCH 071/159] More usermods_dir corrections --- README | 4 ++-- cime_config/usermods_dirs/clm/NEON/FATES/README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index c5c06daae7..af8f2cbaaa 100644 --- a/README +++ b/README @@ -126,9 +126,9 @@ cime_config/config_tests.xml ----- Define CTSM specific tests cime_config/config_pes.xml ------- Define Processor layouts for various CTSM grids and compsets cime_config/testdefs ------------- Directory for specification of CTSM testing cime_config/testdefs/ExpectedTestFails.xml -- List of tests that are expected to fail -cime_config/usermods_dirs -------- Directories of sets of user-modification subdirs +cime_config/usermods_dirs/clm ---- Directories of sets of user-modification subdirs (These are directories that add specific user modifications to - simulations created using "cime/scripts/create_newcase --user-mods-dir".) + simulations created using "cime/scripts/create_newcase --user-mods-dir clm/*) tools/mksurfdata_esmf --------- Directory to build program to create surface dataset at any resolution. diff --git a/cime_config/usermods_dirs/clm/NEON/FATES/README.md b/cime_config/usermods_dirs/clm/NEON/FATES/README.md index b801637d9e..2d099771aa 100644 --- a/cime_config/usermods_dirs/clm/NEON/FATES/README.md +++ b/cime_config/usermods_dirs/clm/NEON/FATES/README.md @@ -2,7 +2,7 @@ Use these user mods as you would any other user_mods, e.g.: -`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir /glade/work/$user/CTSM/cime_config/usermods_dirs/clm/NEON/FATES/ABBY` +`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir clm/NEON/FATES/ABBY` ## Note on crop sites KONA and STER From bb6a896ff89719275738f65d559ea7201290cfc2 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 12 Dec 2024 14:22:27 -0700 Subject: [PATCH 072/159] Fix some tests with bad test lengths, they all should have been 765 days --- cime_config/testdefs/testlist_clm.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index bb9af4b06a..ed6aaba0b1 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1524,7 +1524,7 @@ - + @@ -2412,7 +2412,7 @@ - + @@ -2487,7 +2487,7 @@ - + From df1d73a8fa89cea2d8a08ad5ff5eba46821d7111 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Fri, 13 Dec 2024 10:53:36 -0700 Subject: [PATCH 073/159] update cmeps to fix TESTCASE issue --- .gitmodules | 2 +- components/cmeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 450af64c1f..661e7b5274 100644 --- a/.gitmodules +++ b/.gitmodules @@ -84,7 +84,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/cime [submodule "cmeps"] path = components/cmeps url = https://github.com/ESCOMP/CMEPS.git -fxtag = cmeps1.0.31 +fxtag = cmeps1.0.32 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git diff --git a/components/cmeps b/components/cmeps index 51d4124feb..a91cedfe58 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit 51d4124feb0eb47b99d7ae790b5ea77ce2adfbe7 +Subproject commit a91cedfe58658a9fc391195481137a2d83372c25 From df666367b53f86cadaf73bd4b3658058f0b08ad4 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Fri, 13 Dec 2024 11:25:21 -0700 Subject: [PATCH 074/159] Point to cmeps tag --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 450af64c1f..661e7b5274 100644 --- a/.gitmodules +++ b/.gitmodules @@ -84,7 +84,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/cime [submodule "cmeps"] path = components/cmeps url = https://github.com/ESCOMP/CMEPS.git -fxtag = cmeps1.0.31 +fxtag = cmeps1.0.32 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git From 74131679607b1ab873ba9c0d96773e69d386a2d5 Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Fri, 13 Dec 2024 10:39:59 -0800 Subject: [PATCH 075/159] update fates tag to sci.1.80.4_api.37.0.0 --- .gitmodules | 2 +- src/fates | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 7429d412bc..d743e6db81 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,7 +28,7 @@ [submodule "fates"] path = src/fates url = https://github.com/NGEET/fates -fxtag = sci.1.80.1_api.37.0.0 +fxtag = sci.1.80.4_api.37.0.0 fxrequired = AlwaysRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/NCAR/fates-release diff --git a/src/fates b/src/fates index 08f2410fd2..296e1d6a45 160000 --- a/src/fates +++ b/src/fates @@ -1 +1 @@ -Subproject commit 08f2410fd2a9e04920eedb4cc2d51a09f68127ec +Subproject commit 296e1d6a45f05a800073d376286d0537d2290e96 From 9b0be8000a2699dfe2ff5df07411b22ec7375fbe Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 13 Dec 2024 16:59:34 -0700 Subject: [PATCH 076/159] Add if statement to CLMBuildNamelist for correct trigger of error --- bld/CLMBuildNamelist.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 33a8baebbc..6eddf05896 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3395,9 +3395,11 @@ sub setup_logic_mineral_nitrogen_dynamics { } } - my $var = $nl->get_value('nfix_method'); - if ( $var ne "'Houlton'" && $var ne "'Bytnerowicz'" ) { - $log->fatal_error("$var is incorrect entry for the namelist variable nfix_method; expected Houlton or Bytnerowicz"); + if ( &value_is_true($nl_flags->{'use_cn'}) && &value_is_true($nl->get_value('use_fun')) ) { + my $var = $nl->get_value('nfix_method'); + if ( $var ne "'Houlton'" && $var ne "'Bytnerowicz'" ) { + $log->fatal_error("$var is incorrect entry for the namelist variable nfix_method; expected Houlton or Bytnerowicz"); + } } } From 277f6a27d629416a96d438ee745cbafaf94ab6da Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 16 Dec 2024 10:50:53 -0700 Subject: [PATCH 077/159] Update cime and cmeps --- components/cmeps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cmeps b/components/cmeps index 51d4124feb..a91cedfe58 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit 51d4124feb0eb47b99d7ae790b5ea77ce2adfbe7 +Subproject commit a91cedfe58658a9fc391195481137a2d83372c25 From 20c3709d0bdfefb56c444f9c51efc85a4d2d1d4a Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 16 Dec 2024 10:52:15 -0700 Subject: [PATCH 078/159] Add comments on arguments and add error checking for data being sent to CIME build --- python/ctsm/site_and_regional/tower_site.py | 34 +++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/python/ctsm/site_and_regional/tower_site.py b/python/ctsm/site_and_regional/tower_site.py index 31c959cac7..1f5f1aefe4 100644 --- a/python/ctsm/site_and_regional/tower_site.py +++ b/python/ctsm/site_and_regional/tower_site.py @@ -79,23 +79,53 @@ def build_base_case( Args: self: The NeonSite object - base_root (str): - root of the base_case CIME + cesmroot (str): + root of the CESM code to run + output_root (str): + root of the output directory to write to res (str): base_case resolution or gridname compset (str): base case compset + user_mods_dirs (str): + path to the user-mod-directory to use overwrite (bool) : Flag to overwrite the case if exists + setup_only (bool) : + Flag to only do the setup phase """ + # + # Error checking on the input + # + if not os.path.isdir(cesmroot): + abort("Input cesmroot directory does NOT exist: "+str(cesmroot) ) + if not isinstance(res,str): + abort("Input res is NOT a string as expected: "+str(res) ) + if not isinstance(compset,str): + abort("Input compset is NOT a string as expected: "+str(compset) ) + if not isinstance(overwrite,bool): + abort("Input compset is NOT a boolean as expected: "+str(compset) ) + if not isinstance(setup_only,bool): + abort("Input setup_only is NOT a boolean as expected: "+str(setup_only) ) + if not isinstance(user_mods_dirs,list): + abort("Input user_mods_dirs is NOT a list as expected: "+str(user_mods_dirs) ) + for dir in user_mods_dirs: + if not os.path.isdir(dir): + abort("Input user_mods_dirs directory does NOT exist: "+str(dir) ) + print("---- building a base case -------") # pylint: disable=attribute-defined-outside-init self.base_case_root = output_root # pylint: enable=attribute-defined-outside-init if not output_root: output_root = os.getcwd() + + if not os.path.isdir(output_root): + abort("Input output_root directory does NOT exist: "+str(output_root) ) + case_path = os.path.join(output_root, self.name) + logger.info("base_case_name : %s", self.name) logger.info("user_mods_dir : %s", user_mods_dirs[0]) From dd534e887128f6eae53f8132182b2186ae913748 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 09:43:15 -0700 Subject: [PATCH 079/159] Update for cdeps --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index ecee75f3db..c5dfd88c47 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/ESCOMP/CDEPS.git -fxtag = cdeps1.0.54 +fxtag = cdeps1.0.61 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git From f50e93002fce175c4da982e089932e099038d80e Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 12:19:47 -0700 Subject: [PATCH 080/159] Update cdeps which solves the ERP issues on Izumi --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 661e7b5274..9c4aedab91 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/ESCOMP/CDEPS.git -fxtag = cdeps1.0.53 +fxtag = cdeps1.0.61 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git From bd535c710db78420b8e8b9d71d88d8339e899c59 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 12:38:46 -0700 Subject: [PATCH 081/159] Run black --- python/ctsm/site_and_regional/tower_site.py | 27 ++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/python/ctsm/site_and_regional/tower_site.py b/python/ctsm/site_and_regional/tower_site.py index 1f5f1aefe4..2ff8999408 100644 --- a/python/ctsm/site_and_regional/tower_site.py +++ b/python/ctsm/site_and_regional/tower_site.py @@ -98,20 +98,20 @@ def build_base_case( # Error checking on the input # if not os.path.isdir(cesmroot): - abort("Input cesmroot directory does NOT exist: "+str(cesmroot) ) - if not isinstance(res,str): - abort("Input res is NOT a string as expected: "+str(res) ) - if not isinstance(compset,str): - abort("Input compset is NOT a string as expected: "+str(compset) ) - if not isinstance(overwrite,bool): - abort("Input compset is NOT a boolean as expected: "+str(compset) ) - if not isinstance(setup_only,bool): - abort("Input setup_only is NOT a boolean as expected: "+str(setup_only) ) - if not isinstance(user_mods_dirs,list): - abort("Input user_mods_dirs is NOT a list as expected: "+str(user_mods_dirs) ) + abort("Input cesmroot directory does NOT exist: " + str(cesmroot)) + if not isinstance(res, str): + abort("Input res is NOT a string as expected: " + str(res)) + if not isinstance(compset, str): + abort("Input compset is NOT a string as expected: " + str(compset)) + if not isinstance(overwrite, bool): + abort("Input compset is NOT a boolean as expected: " + str(compset)) + if not isinstance(setup_only, bool): + abort("Input setup_only is NOT a boolean as expected: " + str(setup_only)) + if not isinstance(user_mods_dirs, list): + abort("Input user_mods_dirs is NOT a list as expected: " + str(user_mods_dirs)) for dir in user_mods_dirs: if not os.path.isdir(dir): - abort("Input user_mods_dirs directory does NOT exist: "+str(dir) ) + abort("Input user_mods_dirs directory does NOT exist: " + str(dir)) print("---- building a base case -------") # pylint: disable=attribute-defined-outside-init @@ -121,11 +121,10 @@ def build_base_case( output_root = os.getcwd() if not os.path.isdir(output_root): - abort("Input output_root directory does NOT exist: "+str(output_root) ) + abort("Input output_root directory does NOT exist: " + str(output_root)) case_path = os.path.join(output_root, self.name) - logger.info("base_case_name : %s", self.name) logger.info("user_mods_dir : %s", user_mods_dirs[0]) From f0bda7e82ff6690e6063eea617695de596c52fb4 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 12:39:39 -0700 Subject: [PATCH 082/159] Add black reformat to git-blame-ignore --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index fca4a8315b..089e9fbb12 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -52,3 +52,4 @@ aa04d1f7d86cc2503b98b7e2b2d84dbfff6c316b 045d90f1d80f713eb3ae0ac58f6c2352937f1eb0 753fda3ff0147837231a73c9c728dd9ce47b5997 f112ba0bbf96a61d5a4d354dc0dcbd8b0c68145c +bd535c710db78420b8e8b9d71d88d8339e899c59 From 08753cdef0ac621bcb5574dc71f06aa9871a3fd1 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 17 Dec 2024 12:43:32 -0700 Subject: [PATCH 083/159] Correction to if-statemt as in #2838, added here to facilitate testing --- src/main/histFileMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 8f51d03ec1..10b41706d7 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3372,7 +3372,7 @@ subroutine htape_timeconst(t, mode) dim1id(1) = time_dimid str = 'days since ' // basedate // " " // basesec - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape step_or_bounds = 'time_bounds' long_name = 'time at exact middle of ' // step_or_bounds call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, & @@ -3439,7 +3439,7 @@ subroutine htape_timeconst(t, mode) long_name = 'time step') dim2id(1) = nbnd_dimid; dim2id(2) = time_dimid - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, & long_name = 'time interval endpoints', & units = str) @@ -3474,7 +3474,7 @@ subroutine htape_timeconst(t, mode) timedata(1) = tape(t)%begtime ! beginning time timedata(2) = mdcur + mscur/secspday ! end time - if (tape(t)%hlist(1)%avgflag /= 'I') then ! NOT instantaneous fields tape + if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape time = (timedata(1) + timedata(2)) * 0.5_r8 call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes) else From 5347b4824ae0e42b8fd55b157e5d63d81f3eae6f Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 15:34:59 -0700 Subject: [PATCH 084/159] Update share to bring in needed updates for nuopc_shr_methods.F90 which get more some ER tests to work --- .gitmodules | 2 +- share | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 8ef8853a13..2f99e10305 100644 --- a/.gitmodules +++ b/.gitmodules @@ -100,7 +100,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git [submodule "share"] path = share url = https://github.com/ESCOMP/CESM_share -fxtag = share1.1.3 +fxtag = share1.1.6 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CESM_share diff --git a/share b/share index ce2ba18936..a48ff8790a 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit ce2ba18936fb13b15e43432b76259d47b94029f3 +Subproject commit a48ff8790a21d3831873ed9f023a43c606a1ef03 From e55a1540d0260f715058b5425821a3d462449fa6 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 18 Dec 2024 12:23:43 -0700 Subject: [PATCH 085/159] Correct test --- cime_config/testdefs/testlist_clm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index bb9af4b06a..2e900bd3bc 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2487,7 +2487,7 @@ - + From d5991c073041ba7fcbc6fc3cdfeb12a4c04cf574 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 18 Dec 2024 13:05:11 -0700 Subject: [PATCH 086/159] Start changelog --- doc/ChangeLog | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 78 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 5c0c6ba058..86d33a4b26 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,81 @@ =============================================================== +Tag name: ctsm5.3.015 +Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326) +Date: Wed 18 Dec 2024 12:46:57 PM MST +One-line Summary: Update cdeps with cam7 nextsw cday changes + +Purpose and description of changes +---------------------------------- + + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +[Remove any lines that don't apply. Remove entire section if nothing applies.] + +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + +Notes of particular relevance for users +--------------------------------------- + +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): + +Changes made to namelist defaults (e.g., changed parameter values): + +Notes of particular relevance for developers: +--------------------------------------------- + +Changes to tests or testing: + + +Testing summary: regular +---------------- + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: Only for CPLHIST cases, otherwise bit-for-bit + + Summarize any changes to answers, i.e., + - what code configurations: Compsets with DATM^CPLHIST + - what platforms/compilers: All + - nature of change; larger than roundoff/same climate + +Other details +------------- + +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cdeps share + +Pull Requests that document the changes (include PR ids): +(https://github.com/ESCOMP/ctsm/pull) + +=============================================================== +=============================================================== Tag name: ctsm5.3.014 Originator(s): multiple (see contributors below) Date: Tue 03 Dec 2024 04:31:03 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 1ac751ea03..3d265c41a0 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags ctsm5.3.013 erik 11/26/2024 Merge b4b-dev ctsm5.3.012 afoster 11/13/2024 update fates tag From de84a0d332b4dc89723400e5991dc3d4ce2d4f03 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 18 Dec 2024 14:09:33 -0700 Subject: [PATCH 087/159] Update expected fails --- 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 f718582b60..d0130537bb 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -138,6 +138,13 @@ + + + FAIL + #2913 + + + FAIL From 4f59c769a30db1b3dbb82542f69bd27bd9ab7904 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 18 Dec 2024 14:09:52 -0700 Subject: [PATCH 088/159] Finish Change log --- doc/ChangeLog | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 86d33a4b26..58d1794ea5 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,13 +1,15 @@ =============================================================== Tag name: ctsm5.3.015 Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326) -Date: Wed 18 Dec 2024 12:46:57 PM MST +Date: Wed 18 Dec 2024 02:09:40 PM MST One-line Summary: Update cdeps with cam7 nextsw cday changes Purpose and description of changes ---------------------------------- - +Update CDEPS with changes for CAM7 nextsw_cday handling. This changes answers +for CPLHIST cases. We also changed the cam7LndTuningMode tests to turn this on +for DATM to more closely match what CAM7 does. Significant changes to scientifically-supported configurations -------------------------------------------------------------- @@ -28,22 +30,34 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed ---------- -[Remove any lines that don't apply. Remove entire section if nothing applies.] List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Fixes: #2897 Update CDEPS to bring in DATM change regarding nextsw_cday changing answers in CPLHIST cases Notes of particular relevance for users --------------------------------------- Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): - -Changes made to namelist defaults (e.g., changed parameter values): + New namelist parameter for DATM: nextsw_cday_calc + defaults to cam6, set to cam7 for CPLHIST and specific tests + Only applies if iradsw is NOT 0 or 1 + + Here is the documention on this in the namelist_definitial XML for DATM: ++ For CPLHIST cases, this should agree with the version of CAM (or other atmosphere ++ model) used to generate the CPLHIST forcings; the valid values for this variable are ++ based on this: 'cam6' is appropriate for cases generated with the driver ordering in ++ CAM6 and earlier, and 'cam7' is appropriate for cases generated with the driver ++ ordering in CAM7 and later. ++ ++ For 'cam6', the next radiation timestep is set to the present time plus 2 timesteps ++ when mod(tod+dtime,delta_radsw)==0. For 'cam7', the next radiation timestep is set ++ to the present time plus 1 timestep when mod(tod,delta_radsw)==0. Notes of particular relevance for developers: --------------------------------------------- Changes to tests or testing: - + cam7LndTuningMode testmods changed so that iradsw==-1 (hourly) , and nextsw_cday_calc='cam7' Testing summary: regular ---------------- @@ -70,9 +84,12 @@ Other details ------------- List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cdeps share + cdeps to cdeps1.0.57 + share to share1.1.6 Pull Requests that document the changes (include PR ids): (https://github.com/ESCOMP/ctsm/pull) + #2900 -- Update cdeps with cam7 nextsw cday changes =============================================================== =============================================================== From e2c1ae3d6fc68289d643aa1d71f611752c02bc01 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 18 Dec 2024 17:32:20 -0700 Subject: [PATCH 089/159] Update expected fails --- cime_config/testdefs/ExpectedTestFails.xml | 29 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index d0130537bb..a0d6643a92 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -84,21 +84,21 @@ - + FAIL #2619 This failure relates to the following REP failure. - + FAIL #2619 This failure relates to the preceding ERP failure. - + FAIL #2619 @@ -114,7 +114,7 @@ - + FAIL #1733 @@ -127,6 +127,27 @@ + + + FAIL + #2914 + + + + + + FAIL + #2914 + + + + + + FAIL + #2905 + + + FAIL From 588026702b97e14f7935dad2b27a0e0263bc6b32 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 19 Dec 2024 02:26:54 -0700 Subject: [PATCH 090/159] Start the change files --- doc/ChangeLog | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 107 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 58d1794ea5..80e4eef295 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,110 @@ =============================================================== +Tag name: ctsm5.3.016 +Originator(s): jedwards and erik (Erik Kluzek,UCAR/TSS,303-497-1326) +Date: Thu 19 Dec 2024 02:00:31 AM MST +One-line Summary: Rpointer files for restart now have the simulation timestamp in the filename + +Purpose and description of changes +---------------------------------- + +Add the simulation timestamp to the rpointer files. Also update submodules with this change +in CMEPS and CDEPS as well as updated cime to handle it. + +Add a "clm" level directory under usermods_dirs so that the component where user-mods reside +is declared and to make them function the same as test-mods. + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- + +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + +Notes of particular relevance for users +--------------------------------------- + +Caveats for users (e.g., need to interpolate initial conditions): + +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): + +Changes made to namelist defaults (e.g., changed parameter values): + +Changes to the datasets (e.g., parameter, surface or initial files): + +Notes of particular relevance for developers: +--------------------------------------------- + +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + +Changes to tests or testing: + + +Testing summary: regular +---------------- +dd timestamp to rpointer file + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + derecho - + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + derecho - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + + fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--) + derecho ----- + izumi ------- + + any other testing (give details below): + + ctsm_sci + derecho ---- + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: No bit-for-bit + +Other details +------------- + +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cime, cmeps, cdeps + cime to cime6.1.49 + cmeps to cmeps1.0.32 + cdeps to cdeps1.0.61 + + +Pull Requests that document the changes (include PR ids): +(https://github.com/ESCOMP/ctsm/pull) + #2757 -- add timestamp to rpointer file + +=============================================================== +=============================================================== Tag name: ctsm5.3.015 Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326) Date: Wed 18 Dec 2024 02:09:40 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 3d265c41a0..2c0cec5d21 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags ctsm5.3.013 erik 11/26/2024 Merge b4b-dev From 8148ff3b67496fa268fa6468cb8fc66ab6db0c7d Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 19 Dec 2024 15:13:28 -0700 Subject: [PATCH 091/159] Add expected fails for the mpi-serial tests since they are failing for me right now --- cime_config/testdefs/ExpectedTestFails.xml | 188 +++++++++++++++++++++ 1 file changed, 188 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index a0d6643a92..e187225386 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -184,6 +184,194 @@ + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + + + FAIL + #2916 + + + + + FAIL From 48e5e163f66d745b8d8d6cbe6c146c3e05c5a60e Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 19 Dec 2024 15:44:33 -0700 Subject: [PATCH 092/159] Add SSP tests to expected fails --- cime_config/testdefs/ExpectedTestFails.xml | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index e187225386..ea25c74f64 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -165,7 +165,28 @@ #2913 - + + + + FAIL + #2913 + + + + + + FAIL + #2913 + + + + + + FAIL + #2913 + + + FAIL From b14d39d9fe9855a5df8e5c92b435dd0fb5956d55 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 19 Dec 2024 16:23:53 -0700 Subject: [PATCH 093/159] Final Change files --- doc/ChangeLog | 74 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 80e4eef295..cc415555ba 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,14 +1,15 @@ =============================================================== Tag name: ctsm5.3.016 Originator(s): jedwards and erik (Erik Kluzek,UCAR/TSS,303-497-1326) -Date: Thu 19 Dec 2024 02:00:31 AM MST +Date: Thu 19 Dec 2024 04:23:39 PM MST One-line Summary: Rpointer files for restart now have the simulation timestamp in the filename Purpose and description of changes ---------------------------------- Add the simulation timestamp to the rpointer files. Also update submodules with this change -in CMEPS and CDEPS as well as updated cime to handle it. +in CMEPS and CDEPS as well as updated cime to handle it. See the notes below for an explaination +about this. Add a "clm" level directory under usermods_dirs so that the component where user-mods reside is declared and to make them function the same as test-mods. @@ -31,57 +32,77 @@ Does this tag change answers significantly for any of the following physics conf [ ] clm4_5 -Bugs fixed ----------- - -List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: - Notes of particular relevance for users --------------------------------------- Caveats for users (e.g., need to interpolate initial conditions): - -Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): - -Changes made to namelist defaults (e.g., changed parameter values): - -Changes to the datasets (e.g., parameter, surface or initial files): + There are text files that CESM uses to keep track of how far simulations + have progressed. They are simple text files that point to the filename of the latest + restart file for that component. There is such a file for each component. So for CTSM I cases + that's: lnd, cpl, and atm (and rof if it's active). Normally for just extending the length + of a simulations -- the user doesn't have to worry about these files. + + However, if there was a problem when a simulation shut down, it's possible that + different components will have mismatched restarts and rpointer files. In the past this + meant figuring out what restart file should be pointed to in each component rpointer file + and correcting it by hand in an editor. There was only the final set of rpointer files that + was kept for a case. + + Now, with this update the lnd, cpl, and atm rpointer files have the simulation date in the filenames. + So it's easy to spot if the restarts are mismatched for one of the components. Also since + there are matching rpointer files for each time restarts are created it's now easier to make + sure restarts and rpointer files are all correctly matched. And for a user to take a set of restarts + and matching rpointer files to start up from for any part of an existing simulation to start from. + This means you don't have to hand edit the rpointer files and make sure you don't make a mistake + when you do. + + Old rpointer filenames: + rpointer.atm + rpointer.cpl + rpointer.lnd + + New names: + rpointer.atm.YYYY-MM-DD-SSSSS + rpointer.cpl.YYYY-MM-DD-SSSSS + rpointer.lnd.YYYY-MM-DD-SSSSS + + Where YYYY-MM-DD-SSSSS is the year month day and seconds into the day for the simulation timestamp + For example rpointer.lnd.2000-01-01-00000 for a rpointer file for starting at Jan/1st/2000 at midnight + + + NOTE: BACKWARDS COMPATIBLE + For all the components you can use both the new format or old format for the rpointer filenames. + So if you are restarting from an existing case before ctsm5.3.016 you CAN use those rpointer filenames + that don't have the timestamps in the name. Notes of particular relevance for developers: --------------------------------------------- Caveats for developers (e.g., code that is duplicated that requires double maintenance): + There's a lot of testing that failed with this tag, that we'll need to fix soonish. + There are issues on the problems and they are marked as expected fails -Changes to tests or testing: + On Izumi I had to rebuild a bunch of tests as they failed with run_sys_tests submitted under ctsm_pylib. + Note, also that MOSART and RTM were NOT updated to use the new format. Testing summary: regular ---------------- -dd timestamp to rpointer file [PASS means all tests PASS; OK means tests PASS other than expected fails.] build-namelist tests (if CLMBuildNamelist.pm has changed): - derecho - + derecho - PASS (inventoryfileDNE fails as expected) python testing (if python code has changed; see instructions in python/README.md; document testing done): - derecho - + derecho - PASS regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): derecho ----- OK izumi ------- OK - fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--) - derecho ----- - izumi ------- - - any other testing (give details below): - - ctsm_sci - derecho ---- - If the tag used for baseline comparisons was NOT the previous tag, note that here: @@ -98,7 +119,6 @@ List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cime, cm cmeps to cmeps1.0.32 cdeps to cdeps1.0.61 - Pull Requests that document the changes (include PR ids): (https://github.com/ESCOMP/ctsm/pull) #2757 -- add timestamp to rpointer file From d420b69daea1e98d04250b1cb61cb80619ca45c5 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 20 Dec 2024 11:55:23 -0700 Subject: [PATCH 094/159] Update paramfiles for ciso_cwd_hr and cn30 testmods --- cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm | 2 +- .../clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm index edeb0fce21..8a1e5bb216 100644 --- a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm @@ -1,2 +1,2 @@ -paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm51_ciso_cwd_hr_params.c241017.nc' +paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ciso_cwd_hr_params.c241119.nc' hist_fincl1 = 'CWDC_HR','C13_CWDC_HR','C14_CWDC_HR','CWD_HR_L2','CWD_HR_L2_vr','CWD_HR_L3','CWD_HR_L3_vr' diff --git a/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm index b1d856797d..d982aea0f0 100644 --- a/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm +++ b/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm @@ -1,2 +1,2 @@ use_soil_matrixcn = .true. -paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c241017.nc' +paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c241119.nc' From 49490c7a1bcb444cb4af3d404704e10fa1160f55 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 20 Dec 2024 12:06:25 -0700 Subject: [PATCH 095/159] Updated ChangeLog/ChangeSum --- doc/ChangeLog | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 85 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index cc415555ba..75d2c32902 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,88 @@ =============================================================== +Tag name: ctsm5.3.017 +Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) +Date: Fri 20 Dec 2024 11:31:36 AM MST +One-line Summary: Merge b4b-dev + +Purpose and description of changes +---------------------------------- + + #2869 Update temperature cost function for symbiotic Nfix in FUN + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Resolves #2869 + +Notes of particular relevance for users +--------------------------------------- +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): + New namelist variable: nfix_method + +Changes made to namelist defaults (e.g., changed parameter values): + nfix_method default: Houlton + other available option: Bytnerowicz + + +Testing summary: +---------------- + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + derecho - PASS + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- machine unavailable + + +Answer changes +-------------- + +Changes answers relative to baseline: No, but read caveat. + + Summarize any changes to answers, i.e., + - what code configurations: tests with ciso_cwd_hr testmods + - what platforms/compilers: all + - nature of change: irrelevant + + Explanation: + "diff ctsm60_ciso_cwd_hr_params.c241119.asc ctsm60_params.c241119.asc" + differ ONLY in the value of ceta. The previous paramfile for ciso_cwd_hr + showed additional diffs, likely due to problems that we have seen before + when generating new paramfiles. The ciso_cwd_hr tests would not have shown + diffs had the previous paramfile been correct, so I only mention the diffs + here for the record. + + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2869 + +=============================================================== +=============================================================== Tag name: ctsm5.3.016 Originator(s): jedwards and erik (Erik Kluzek,UCAR/TSS,303-497-1326) Date: Thu 19 Dec 2024 04:23:39 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 2c0cec5d21..4da8e2f29d 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.017 slevis 12/20/2024 Merge b4b-dev ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags From e06a33cbbab7743f46e4bc4d98d082707e7d7ae8 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Fri, 20 Dec 2024 17:45:42 -0700 Subject: [PATCH 096/159] Update to latest from cesm3_0_alpha05c planned tags page, the cime update fixes #2915 --- .gitmodules | 4 ++-- components/cism | 2 +- components/cmeps | 2 +- components/mizuRoute | 2 +- components/mosart | 2 +- components/rtm | 2 +- share | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index c5dfd88c47..a489fa1ebd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -84,7 +84,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/cime [submodule "cmeps"] path = components/cmeps url = https://github.com/ESCOMP/CMEPS.git -fxtag = cmeps1.0.32 +fxtag = cmeps1.0.33 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git @@ -100,7 +100,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git [submodule "share"] path = share url = https://github.com/ESCOMP/CESM_share -fxtag = share1.1.6 +fxtag = share1.1.7 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CESM_share diff --git a/components/cism b/components/cism index c84cc9f5b3..41843ef8fe 160000 --- a/components/cism +++ b/components/cism @@ -1 +1 @@ -Subproject commit c84cc9f5b3103766a35d0a7ddd5e9dbd7deae762 +Subproject commit 41843ef8fed91fcf60e2ea217c4f6f2ee5133c5d diff --git a/components/cmeps b/components/cmeps index a91cedfe58..4b636c6f79 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit a91cedfe58658a9fc391195481137a2d83372c25 +Subproject commit 4b636c6f794ca02d854d15c620e26644751b449b diff --git a/components/mizuRoute b/components/mizuRoute index 2ff305a029..81c720c7ee 160000 --- a/components/mizuRoute +++ b/components/mizuRoute @@ -1 +1 @@ -Subproject commit 2ff305a0292cb06789de6cfea7ad3cc0d6173493 +Subproject commit 81c720c7ee51f9c69f2934f696078c42f4493565 diff --git a/components/mosart b/components/mosart index e2ffe00004..99b425e618 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit e2ffe00004cc416cfc8bcfae2a949474075c1d1f +Subproject commit 99b425e618a31d077935a0774141aa9bf48fcc13 diff --git a/components/rtm b/components/rtm index b3dfcfbba5..a2cd8249e4 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798 +Subproject commit a2cd8249e40e8c61d68fe13145c4cf9d5e098f68 diff --git a/share b/share index a48ff8790a..c5e7603c29 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit a48ff8790a21d3831873ed9f023a43c606a1ef03 +Subproject commit c5e7603c29ea5e2fe93ca16d88bc9c7f16175bcd From fe0ec2892248f9c28be05131b68f20f0c15abbd1 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Sat, 21 Dec 2024 01:40:59 -0700 Subject: [PATCH 097/159] Code review responces, timemgr_restart is NO longer done instead of timemgr_init, now timemgr_init is always called, remove things already done in timemgr_init and add documentation around this --- src/utils/clm_time_manager.F90 | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index b0bcef0691..6ebd079c79 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -19,9 +19,9 @@ module clm_time_manager public ::& set_timemgr_init, &! setup startup values - timemgr_init, &! time manager initialization + timemgr_init, &! time manager initialization, called always timemgr_restart_io, &! read/write time manager restart info and restart time manager - timemgr_restart, &! restart the time manager using info from timemgr_restart + timemgr_restart, &! check that time manager is setup coorectly upcon restart timemgr_datediff, &! calculate difference between two time instants advance_timestep, &! increment timestep number get_curr_ESMF_Time, &! get current time in terms of the ESMF_Time @@ -157,7 +157,7 @@ subroutine set_timemgr_init( calendar_in, start_ymd_in, start_tod_in, r ! character(len=*), parameter :: sub = 'clm::set_timemgr_init' - if ( timemgr_set ) call shr_sys_abort( sub//":: timemgr_init or timemgr_restart already called" ) + if ( timemgr_set ) call shr_sys_abort( sub//":: timemgr_init already called" ) if (present(calendar_in) ) calendar = trim(calendar_in) if (present(start_ymd_in) ) start_ymd = start_ymd_in if (present(start_tod_in) ) start_tod = start_tod_in @@ -505,7 +505,10 @@ end subroutine timemgr_restart_io subroutine timemgr_restart() !--------------------------------------------------------------------------------- - ! Restart the ESMF time manager using the synclock for ending date. + ! On restart do some checkcing to make sure time is synchronized with the clock from CESM. + ! Set a couple of variables, and advance the clock, so time is aligned properly. + ! + ! timemgr_init MIST be called before this ! character(len=*), parameter :: sub = 'clm::timemgr_restart' @@ -517,13 +520,10 @@ subroutine timemgr_restart() type(ESMF_TimeInterval) :: day_step_size ! day step size type(ESMF_TimeInterval) :: step_size ! timestep size !--------------------------------------------------------------------------------- - call timemgr_spmdbcast( ) - - ! Initialize calendar from restart info - - call init_calendar() + ! Check that timemgr_init was already called + if ( .not. check_timemgr_initialized(sub) ) return - ! Initialize the timestep from restart info + ! Initialize the timestep dtime = rst_step_sec @@ -555,12 +555,6 @@ subroutine timemgr_restart() tm_first_restart_step = .true. - ! Print configuration summary to log file (stdout). - - if (masterproc) call timemgr_print() - - timemgr_set = .true. - end subroutine timemgr_restart !========================================================================================= From 3b8c132bee1d625d9a49d64cbe1d065760fed244 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Sat, 21 Dec 2024 01:52:57 -0700 Subject: [PATCH 098/159] Add comments about the ordering of the stop and restart alarms --- src/cpl/nuopc/lnd_comp_nuopc.F90 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index c76414bf5d..ed72ef801b 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -1040,9 +1040,10 @@ subroutine ModelSetRunClock(gcomp, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_LogWrite(subname//'setting alarms for ' // trim(name), ESMF_LOGMSG_INFO) - !---------------- + !---------------------------------------------------------------------------------- ! Stop alarm - !---------------- + ! MUST be set before the restart alarm in case restarts happen at the stop alarm + !---------------------------------------------------------------------------------- call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -1064,9 +1065,10 @@ subroutine ModelSetRunClock(gcomp, rc) call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - !---------------- + !---------------------------------------------------------------------------------- ! Restart alarm - !---------------- + ! MUST be set after the stop alarm in case restarts happen at the stop alarm + !---------------------------------------------------------------------------------- call NUOPC_CompAttributeGet(gcomp, name="restart_option", value=restart_option, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return From f30e9f276326bbc1c33fd46a0054e014e3a85079 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 23 Dec 2024 11:04:12 -0700 Subject: [PATCH 099/159] Remove obsolete clm5_1 entry --- bld/namelist_files/namelist_defaults_ctsm.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index eee2ee247a..cee72ca5cf 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -525,7 +525,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case). for the CLM2 data in the CESM distribution --> lnd/clm2/paramdata/ctsm60_params.c241119.nc -lnd/clm2/paramdata/ctsm60_params.c241119.nc lnd/clm2/paramdata/clm50_params.c241119.nc lnd/clm2/paramdata/clm45_params.c241119.nc From 5e27db76738202ce636185f5f1a02b811731fc11 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 23 Dec 2024 11:30:44 -0700 Subject: [PATCH 100/159] Error-check clean-up from Erik's code review --- bld/CLMBuildNamelist.pm | 7 ------- src/biogeochem/CNFUNMod.F90 | 8 +++----- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 13db95e734..2a2d14eb69 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3409,13 +3409,6 @@ sub setup_logic_mineral_nitrogen_dynamics { } } - if ( &value_is_true($nl_flags->{'use_cn'}) && &value_is_true($nl->get_value('use_fun')) ) { - my $var = $nl->get_value('nfix_method'); - if ( $var ne "'Houlton'" && $var ne "'Bytnerowicz'" ) { - $log->fatal_error("$var is incorrect entry for the namelist variable nfix_method; expected Houlton or Bytnerowicz"); - } - } - } diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index b2f9a15470..0b3382f041 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -92,7 +92,6 @@ subroutine readParams ( ncid ) type(file_desc_t),intent(inout) :: ncid ! pio netCDF file id ! ! !LOCAL VARIABLES: - character(len=32) :: subname = 'CNFUNParamsType' character(len=100) :: errCode = '-Error reading in parameters file:' logical :: readv ! has variable been read in or not real(r8) :: tempr ! temporary to read in parameter @@ -135,7 +134,6 @@ subroutine CNFUNInit (bounds,cnveg_state_inst,cnveg_carbonstate_inst,cnveg_nitro integer :: nstep ! time step number integer :: nstep_fun ! Number of ! atmospheric timesteps between calls to FUN - character(len=32) :: subname = 'CNFUNInit' !-------------------------------------------------------------------- !--- @@ -494,7 +492,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& ! fixers, 2 for non fixers. This will become redundant with the ! 'fixer' parameter if it works. - character(len=32) :: subname = 'CNFUN' + character(len=100) :: errCode !-------------------------------------------------------------------- !--------------------------------- associate(ivt => patch%itype , & ! Input: [integer (:) ] p @@ -1072,8 +1070,8 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)), & big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) case default - write(iulog,*) subname//' ERROR: unknown nfix_method value: ', nfix_method - call endrun(msg=errMsg(sourcefile, __LINE__)) + errCode = ' ERROR: unknown nfix_method value: ' // nfix_method + call endrun( msg=trim(errCode) // errMsg(sourcefile, __LINE__)) end select end do From 83e27f79788a858c57111db078bdfc2bb04252b4 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 23 Dec 2024 12:06:04 -0700 Subject: [PATCH 101/159] Move nfix_t* param-read from pftconMod (public) to CNFUNMod (local) --- src/biogeochem/CNFUNMod.F90 | 23 +++++++++++++++++++---- src/main/pftconMod.F90 | 18 ------------------ 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index 0b3382f041..af29d26c74 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -54,6 +54,9 @@ module CNFUNMod type, private :: params_type real(r8) :: ndays_off ! number of days to complete leaf offset + real(r8), allocatable :: nfix_tmin(:) ! A BNF parameter + real(r8), allocatable :: nfix_topt(:) ! A BNF parameter + real(r8), allocatable :: nfix_tmax(:) ! A BNF parameter end type params_type ! @@ -86,6 +89,7 @@ subroutine readParams ( ncid ) ! ! !USES: use ncdio_pio , only : file_desc_t,ncd_io + use clm_varpar, only : mxpft ! !ARGUMENTS: implicit none @@ -106,6 +110,20 @@ subroutine readParams ( ncid ) if ( .not. readv ) call endrun( msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) params_inst%ndays_off=tempr + allocate(params_inst%nfix_tmin(mxpft)) + tString='nfix_tmin' + call ncd_io(trim(tString), params_inst%nfix_tmin(:), 'read', ncid, readvar=readv) + if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) + + allocate(params_inst%nfix_topt(mxpft)) + tString='nfix_topt' + call ncd_io(trim(tString), params_inst%nfix_topt(:), 'read', ncid, readvar=readv) + if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) + + allocate(params_inst%nfix_tmax(mxpft)) + tString='nfix_tmax' + call ncd_io(trim(tString), params_inst%nfix_tmax(:), 'read', ncid, readvar=readv) + if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) end subroutine readParams @@ -505,9 +523,6 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& b_fix => pftcon%b_fix , & ! Input: A BNF parameter c_fix => pftcon%c_fix , & ! Input: A BNF parameter s_fix => pftcon%s_fix , & ! Input: A BNF parameter - nfix_tmin => pftcon%nfix_tmin , & ! Input: A BNF parameter - nfix_topt => pftcon%nfix_topt , & ! Input: A BNF parameter - nfix_tmax => pftcon%nfix_tmax , & ! Input: A BNF parameter akc_active => pftcon%akc_active , & ! Input: A mycorrhizal uptake ! parameter akn_active => pftcon%akn_active , & ! Input: A mycorrhizal uptake @@ -1067,7 +1082,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) case ('Bytnerowicz') ! no acclimation calculation costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & - nfix_tmin(ivt(p)),nfix_topt(ivt(p)),nfix_tmax(ivt(p)), & + params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), & big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) case default errCode = ' ERROR: unknown nfix_method value: ' // nfix_method diff --git a/src/main/pftconMod.F90 b/src/main/pftconMod.F90 index 19165b24be..b987879c03 100644 --- a/src/main/pftconMod.F90 +++ b/src/main/pftconMod.F90 @@ -268,9 +268,6 @@ module pftconMod real(r8), allocatable :: b_fix (:) ! A BNF parameter real(r8), allocatable :: c_fix (:) ! A BNF parameter real(r8), allocatable :: s_fix (:) ! A BNF parameter - real(r8), allocatable :: nfix_tmin (:) ! A BNF parameter - real(r8), allocatable :: nfix_topt (:) ! A BNF parameter - real(r8), allocatable :: nfix_tmax (:) ! A BNF parameter real(r8), allocatable :: akc_active (:) ! A mycorrhizal uptake parameter real(r8), allocatable :: akn_active (:) ! A mycorrhizal uptake parameter real(r8), allocatable :: ekc_active (:) ! A mycorrhizal uptake parameter @@ -488,9 +485,6 @@ subroutine InitAllocate (this) allocate( this%b_fix (0:mxpft) ) allocate( this%c_fix (0:mxpft) ) allocate( this%s_fix (0:mxpft) ) - allocate( this%nfix_tmin (0:mxpft) ) - allocate( this%nfix_topt (0:mxpft) ) - allocate( this%nfix_tmax (0:mxpft) ) allocate( this%akc_active (0:mxpft) ) allocate( this%akn_active (0:mxpft) ) allocate( this%ekc_active (0:mxpft) ) @@ -886,15 +880,6 @@ subroutine InitRead(this) call ncd_io('s_fix', this%s_fix, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - call ncd_io('nfix_tmin', this%nfix_tmin, 'read', ncid, readvar=readv, posNOTonfile=.true.) - if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - - call ncd_io('nfix_topt', this%nfix_topt, 'read', ncid, readvar=readv, posNOTonfile=.true.) - if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - - call ncd_io('nfix_tmax', this%nfix_tmax, 'read', ncid, readvar=readv, posNOTonfile=.true.) - if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) - call ncd_io('akc_active', this%akc_active, 'read', ncid, readvar=readv, posNOTonfile=.true.) if ( .not. readv ) call endrun(msg=' ERROR: error in reading in pft data'//errMsg(sourcefile, __LINE__)) @@ -1590,9 +1575,6 @@ subroutine Clean(this) deallocate( this%b_fix) deallocate( this%c_fix) deallocate( this%s_fix) - deallocate( this%nfix_tmin) - deallocate( this%nfix_topt) - deallocate( this%nfix_tmax) deallocate( this%akc_active) deallocate( this%akn_active) deallocate( this%ekc_active) From c3d9ecc13577c092ff9e32ea0a4acb80e2d6df12 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 24 Dec 2024 13:32:44 -0700 Subject: [PATCH 102/159] Move namelist read for nfix_method to CNFUNMod based on Erik's review --- bld/CLMBuildNamelist.pm | 1 + .../namelist_definition_ctsm.xml | 4 +- src/biogeochem/CNFUNMod.F90 | 61 ++++++++++++++++++- src/main/clm_varctl.F90 | 2 - src/main/controlMod.F90 | 5 +- 5 files changed, 65 insertions(+), 8 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 2a2d14eb69..ab0aab0cc5 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -5209,6 +5209,7 @@ sub write_output_files { } push @groups, "clm_humanindex_inparm"; push @groups, "cnmresp_inparm"; + push @groups, "cnfun_inparm"; push @groups, "photosyns_inparm"; push @groups, "cnfire_inparm"; push @groups, "cn_general"; diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index 3f63ccaa72..ac61b86852 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -388,8 +388,8 @@ Slope of free living Nitrogen fixation with annual ET Intercept of free living Nitrogen fixation with zero annual ET - + Choice of nfix parameterization diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index af29d26c74..b66083db2f 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -48,10 +48,13 @@ module CNFUNMod private ! ! !PUBLIC MEMBER FUNCTIONS: + public :: CNFUNReadNML ! Read in namelist variables public:: readParams ! Read in parameters needed for FUN public:: CNFUNInit ! FUN calculation initialization public:: CNFUN ! Run FUN + character(len=25) :: nfix_method ! choice of nfix parameterization + type, private :: params_type real(r8) :: ndays_off ! number of days to complete leaf offset real(r8), allocatable :: nfix_tmin(:) ! A BNF parameter @@ -85,6 +88,62 @@ module CNFUNMod contains !-------------------------------------------------------------------- !--- + subroutine CNFUNReadNML(NLFilename) + ! + ! !DESCRIPTION: + ! Read in namelist variables + ! + ! !USES: + use fileutils , only : getavu, relavu, opnfil + use shr_nl_mod , only : shr_nl_find_group_name + use spmdMod , only : masterproc, mpicom + use shr_mpi_mod, only : shr_mpi_bcast + use clm_varctl , only : iulog + use spmdMod , only : MPI_CHARACTER + ! + ! !ARGUMENTS: + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! !LOCAL VARIABLES: + integer :: ierr ! error code + integer :: unitn ! unit for namelist file + + character(len=*), parameter :: nmlname = 'cnfun_inparm' + !----------------------------------------------------------------------- + + namelist /cnfun_inparm/ nfix_method + + ! Initialize options to default values, in case they are not specified in + ! the namelist + + if (masterproc) then + unitn = getavu() + write(iulog,*) 'Read in '//nmlname//' namelist' + call opnfil (NLFilename, unitn, 'F') + call shr_nl_find_group_name(unitn, nmlname, status=ierr) + if (ierr == 0) then + read(unitn, nml=cnfun_inparm, iostat=ierr) + if (ierr /= 0) then + call endrun(msg="ERROR reading "//nmlname//"namelist"//errmsg(sourcefile, __LINE__)) + end if + else + call endrun(msg="ERROR finding "//nmlname//"namelist"//errmsg(sourcefile, __LINE__)) + end if + call relavu( unitn ) + end if + + call mpi_bcast (nfix_method, len(nfix_method), MPI_CHARACTER, 0, mpicom, ierr) + + if (masterproc) then + write(iulog,*) ' ' + write(iulog,*) nmlname//' settings:' + write(iulog,nml=cnfun_inparm) + write(iulog,*) ' ' + end if + + end subroutine CNFUNReadNML + + !----------------------------------------------------------------------- subroutine readParams ( ncid ) ! ! !USES: @@ -222,7 +281,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& use clm_time_manager, only : get_step_size_real, get_curr_date use clm_varpar , only : nlevdecomp use clm_varcon , only : secspday, smallValue, fun_period, tfrz, dzsoi_decomp, spval - use clm_varctl , only : use_nitrif_denitrif, nfix_method + use clm_varctl , only : use_nitrif_denitrif use PatchType , only : patch use subgridAveMod , only : p2c use pftconMod , only : npcropmin diff --git a/src/main/clm_varctl.F90 b/src/main/clm_varctl.F90 index 0989400961..9539060200 100644 --- a/src/main/clm_varctl.F90 +++ b/src/main/clm_varctl.F90 @@ -227,8 +227,6 @@ module clm_varctl ! real(r8), public :: nfix_timeconst = -1.2345_r8 - character(len=25), public :: nfix_method ! choice of nfix parameterization - !---------------------------------------------------------- ! Physics !---------------------------------------------------------- diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90 index 61c56f5201..e8121519aa 100644 --- a/src/main/controlMod.F90 +++ b/src/main/controlMod.F90 @@ -119,6 +119,7 @@ subroutine control_init(dtime) ! ! !USES: use CNMRespMod , only : CNMRespReadNML + use CNFUNMod , only : CNFUNReadNML use CNNDynamicsMod , only : CNNDynamicsReadNML use CNPhenologyMod , only : CNPhenologyReadNML use landunit_varcon , only : max_lunit @@ -257,8 +258,6 @@ subroutine control_init(dtime) CNratio_floating, lnc_opt, reduce_dayl_factor, vcmax_opt, & CN_evergreen_phenology_opt, carbon_resp_opt - namelist /clm_nitrogen/ nfix_method - namelist /clm_inparm/ use_soil_moisture_streams ! excess ice flag @@ -598,6 +597,7 @@ subroutine control_init(dtime) if ( use_fun ) then call CNMRespReadNML( NLFilename ) + call CNFUNReadNML( NLFilename ) end if call soilHydReadNML( NLFilename ) @@ -884,7 +884,6 @@ subroutine control_spmd() call mpi_bcast (use_c13_timeseries, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (atm_c13_filename, len(atm_c13_filename), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (use_fun, 1, MPI_LOGICAL, 0, mpicom, ier) - call mpi_bcast (nfix_method, len(nfix_method), MPI_CHARACTER, 0, mpicom, ier) end if call mpi_bcast (perchroot, 1, MPI_LOGICAL, 0, mpicom, ier) From a73a961147e621b456c9e9eb543ad83220438e30 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 24 Dec 2024 13:52:48 -0700 Subject: [PATCH 103/159] Simplify equation based on Erik's review --- src/biogeochem/CNFUNMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index b66083db2f..a379b45a90 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -1718,9 +1718,9 @@ real(r8) function fun_cost_fix_Bytnerowicz_noAcc(fixer,nfix_tmin,nfix_topt,nfix_ real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius) if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then - fun_cost_fix_Bytnerowicz_noAcc = (-1*s_fix) * 1._r8 / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& - ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& - ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) + fun_cost_fix_Bytnerowicz_noAcc = (-s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*& + ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**& + ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) ) fun_cost_fix_Bytnerowicz_noAcc = min(fun_cost_fix_Bytnerowicz_noAcc,big_cost) else fun_cost_fix_Bytnerowicz_noAcc = big_cost From b603c685bb32affd2177df02f2eafac6e9558123 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 24 Dec 2024 16:03:58 -0700 Subject: [PATCH 104/159] Final ChangeLog/ChangeSum --- doc/ChangeLog | 4 ++-- doc/ChangeSum | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 75d2c32902..ed6892a285 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.3.017 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) -Date: Fri 20 Dec 2024 11:31:36 AM MST +Date: Tue 24 Dec 2024 03:43:01 PM MST One-line Summary: Merge b4b-dev Purpose and description of changes @@ -54,7 +54,7 @@ Testing summary: regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): derecho ----- OK - izumi ------- machine unavailable + izumi ------- machine seems problematic at the moment Answer changes diff --git a/doc/ChangeSum b/doc/ChangeSum index 4da8e2f29d..60d46392ff 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,6 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.3.017 slevis 12/20/2024 Merge b4b-dev + ctsm5.3.017 slevis 12/24/2024 Merge b4b-dev ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags From 6603ed2ac813b0a5151df7d1aeb16f570f1764c3 Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Thu, 2 Jan 2025 14:42:42 -0800 Subject: [PATCH 105/159] add PVT test issue #2919 to expected failures --- 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 ea25c74f64..e88cb36954 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -556,6 +556,13 @@ + + + FAIL + #2919 + + + From f6bf737c9c49d0e214be8c5e48ed6b0e0a1797a0 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Sat, 4 Jan 2025 15:21:52 -0700 Subject: [PATCH 106/159] Update submodules to latest slated for the cesm3_0_beta05 tag --- .gitmodules | 8 ++++---- cime | 2 +- components/mosart | 2 +- components/rtm | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitmodules b/.gitmodules index a489fa1ebd..3f08c6f5fa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_83 +fxtag = rtm1_0_84 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.05 +fxtag = mosart1.1.06 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART @@ -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.10 +fxtag = ccs_config_cesm1.0.16 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 @@ -76,7 +76,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git [submodule "cime"] path = cime url = https://github.com/ESMCI/cime -fxtag = cime6.1.49 +fxtag = cime6.1.56 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/cime diff --git a/cime b/cime index b2f271b174..ac8e583108 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit b2f271b1742533715a05701b1bdd80a24bb2ad77 +Subproject commit ac8e583108b1ce1f592a6f6436c71d6dc087f447 diff --git a/components/mosart b/components/mosart index 99b425e618..a246344e9b 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit 99b425e618a31d077935a0774141aa9bf48fcc13 +Subproject commit a246344e9b28e4bb42313749094fa20d45e2b212 diff --git a/components/rtm b/components/rtm index a2cd8249e4..6899b55816 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit a2cd8249e40e8c61d68fe13145c4cf9d5e098f68 +Subproject commit 6899b55816ee4d9b7cf983d74ba2997b97a13c4d From cbe61094d24376892f0b8b2560f7af28cce9e40e Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Sat, 4 Jan 2025 17:24:24 -0700 Subject: [PATCH 107/159] Back up mosart and rtm, so it doesn't bring in answer changes --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index c5dfd88c47..4bb26f4c7f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_83 +fxtag = rtm1_0_80 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.05 +fxtag = mosart1.1.02 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART From adebf76f3f816b63f444b541096605a43a96c3d0 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 6 Jan 2025 14:21:58 -0700 Subject: [PATCH 108/159] Update cime with a fix for SSP issues --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 3f08c6f5fa..04011fc191 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,7 +76,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git [submodule "cime"] path = cime url = https://github.com/ESMCI/cime -fxtag = cime6.1.56 +fxtag = cime6.1.58 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/cime From 730bebed33e1e291ac4dd1d422c8e5a7cbab1e14 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Mon, 6 Jan 2025 15:55:33 -0700 Subject: [PATCH 109/159] Changes to get the LILACSMOKE test to work. Pass current time down to initialize2, change order of alarms to stop first then restart --- src/cpl/lilac/lnd_comp_esmf.F90 | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index 6c8bb2a491..31922c9671 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -374,7 +374,7 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) !-------------------------------- ! Finish initializing ctsm !-------------------------------- - call initialize2(ni,nj) + call initialize2(ni,nj, currTime) call ESMF_LogWrite(subname//"ctsm initialize2 done...", ESMF_LOGMSG_INFO) !-------------------------------- @@ -708,41 +708,41 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) call update_rad_dtime(doalb) !-------------------------------- - ! Determine if time to write restart + ! Determine if time to stop !-------------------------------- - call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) + call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. + nlend = .true. call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return else - rstwr = .false. + nlend = .false. endif if (masterproc) then - write(iulog,*)' restart alarm is ',rstwr + write(iulog,*)' stop alarm is ',nlend end if !-------------------------------- - ! Determine if time to stop + ! Determine if time to write restart !-------------------------------- - call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) + call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - nlend = .true. + rstwr = .true. call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return else - nlend = .false. + rstwr = .false. endif if (masterproc) then - write(iulog,*)' stop alarm is ',nlend + write(iulog,*)' restart alarm is ',rstwr end if !-------------------------------- From 1c81c988a7869f272af3bde0e876a483253bd3a6 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 6 Jan 2025 17:29:13 -0700 Subject: [PATCH 110/159] Bug fix for izumi nag tests to pass --- src/biogeochem/CNFUNMod.F90 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index a379b45a90..0af5efe580 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -169,17 +169,17 @@ subroutine readParams ( ncid ) if ( .not. readv ) call endrun( msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) params_inst%ndays_off=tempr - allocate(params_inst%nfix_tmin(mxpft)) + allocate(params_inst%nfix_tmin(0:mxpft)) tString='nfix_tmin' call ncd_io(trim(tString), params_inst%nfix_tmin(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) - allocate(params_inst%nfix_topt(mxpft)) + allocate(params_inst%nfix_topt(0:mxpft)) tString='nfix_topt' call ncd_io(trim(tString), params_inst%nfix_topt(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) - allocate(params_inst%nfix_tmax(mxpft)) + allocate(params_inst%nfix_tmax(0:mxpft)) tString='nfix_tmax' call ncd_io(trim(tString), params_inst%nfix_tmax(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) @@ -535,7 +535,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: total_N_resistance ! C to of N for whole soil -leaf ! pathway real(r8) :: free_RT_frac=0.0_r8 !fraction of N retranslocation which is automatic/free. - ! SHould be made into a PFT parameter. + ! Should be made into a PFT parameter. real(r8) :: paid_for_n_retrans real(r8) :: free_n_retrans @@ -1136,13 +1136,13 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& select case (nfix_method) case ('Houlton') - costNit(j,icostFix) = fun_cost_fix(fixer,& - a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)),& - big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + costNit(j,icostFix) = fun_cost_fix(fixer, & + a_fix(ivt(p)), b_fix(ivt(p)), c_fix(ivt(p)), & + big_cost, crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j)) case ('Bytnerowicz') ! no acclimation calculation - costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & - params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), & - big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & + params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), & + big_cost,crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j)) case default errCode = ' ERROR: unknown nfix_method value: ' // nfix_method call endrun( msg=trim(errCode) // errMsg(sourcefile, __LINE__)) From 193f844f72a546e3ac9497e7fa76cc603facbf77 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 6 Jan 2025 17:29:13 -0700 Subject: [PATCH 111/159] Bug fix for izumi nag tests to pass --- src/biogeochem/CNFUNMod.F90 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90 index a379b45a90..0af5efe580 100644 --- a/src/biogeochem/CNFUNMod.F90 +++ b/src/biogeochem/CNFUNMod.F90 @@ -169,17 +169,17 @@ subroutine readParams ( ncid ) if ( .not. readv ) call endrun( msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) params_inst%ndays_off=tempr - allocate(params_inst%nfix_tmin(mxpft)) + allocate(params_inst%nfix_tmin(0:mxpft)) tString='nfix_tmin' call ncd_io(trim(tString), params_inst%nfix_tmin(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) - allocate(params_inst%nfix_topt(mxpft)) + allocate(params_inst%nfix_topt(0:mxpft)) tString='nfix_topt' call ncd_io(trim(tString), params_inst%nfix_topt(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) - allocate(params_inst%nfix_tmax(mxpft)) + allocate(params_inst%nfix_tmax(0:mxpft)) tString='nfix_tmax' call ncd_io(trim(tString), params_inst%nfix_tmax(:), 'read', ncid, readvar=readv) if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__)) @@ -535,7 +535,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& real(r8) :: total_N_resistance ! C to of N for whole soil -leaf ! pathway real(r8) :: free_RT_frac=0.0_r8 !fraction of N retranslocation which is automatic/free. - ! SHould be made into a PFT parameter. + ! Should be made into a PFT parameter. real(r8) :: paid_for_n_retrans real(r8) :: free_n_retrans @@ -1136,13 +1136,13 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp& select case (nfix_method) case ('Houlton') - costNit(j,icostFix) = fun_cost_fix(fixer,& - a_fix(ivt(p)),b_fix(ivt(p)),c_fix(ivt(p)),& - big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + costNit(j,icostFix) = fun_cost_fix(fixer, & + a_fix(ivt(p)), b_fix(ivt(p)), c_fix(ivt(p)), & + big_cost, crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j)) case ('Bytnerowicz') ! no acclimation calculation - costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & - params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), & - big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j)) + costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, & + params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), & + big_cost,crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j)) case default errCode = ' ERROR: unknown nfix_method value: ' // nfix_method call endrun( msg=trim(errCode) // errMsg(sourcefile, __LINE__)) From c67acd5eca6d88dadbc351d13feb2298418d4407 Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Tue, 7 Jan 2025 10:33:52 -0800 Subject: [PATCH 112/159] update changelog --- doc/ChangeLog | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 76 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index ed6892a285..e9d3b799e1 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,79 @@ =============================================================== +Tag name: ctsm5.3.018 +Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov) +Date: Tue Jan 7 10:22:51 MST 2025 +One-line Summary: FATES hydro test update + +Purpose and description of changes +---------------------------------- + +This minor update reverts a temporary work around for FATES hydro system tests. +The FATES tag is updated to capture the FATES-side fix to the issue that predicated +the temporary testing workaround. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + + #2878 - Remove fates_allom_smode shell_command update in FatesColdHydro testmod + +Notes of particular relevance for developers: +--------------------------------------------- +Changes to tests or testing: + FATES hydro tests will no long build a custom parameter file on the fly + The one FATES PVT test has been added to expected failure per #2919 + +Testing summary: regular + fates +---------------- + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK (see #2924) + + fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--) + derecho ----- OK + izumi ------- OK + + +Answer changes +-------------- + +Changes answers relative to baseline: Yes, but only for aux_clm fates testmods + + The FATES tag update includes a number of science and bug fix updates since the + last fates tag update, which results in non-B4B changes. These have been reviewed + and differ as expected. + +Other details +------------- +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + fates: sci.1.79.3_api.37.0.0 -> sci.1.80.4_api.37.0.0 + +Pull Requests that document the changes (include PR ids): +(https://github.com/ESCOMP/ctsm/pull) + https://github.com/ESCOMP/CTSM/pull/2882 + +=============================================================== +=============================================================== Tag name: ctsm5.3.017 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) Date: Tue 24 Dec 2024 03:43:01 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 60d46392ff..8784bbd5ea 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.018 glemieux 01/07/2025 FATES hydro test update ctsm5.3.017 slevis 12/24/2024 Merge b4b-dev ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes From 136970d9fe4e1ce3dcfc3733d91174914685dcc7 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 7 Jan 2025 16:24:37 -0700 Subject: [PATCH 113/159] Update change files to point to the tags of the two tmp branch tags that were made --- doc/ChangeLog | 6 +++--- doc/ChangeSum | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index e9d3b799e1..c6eb6974db 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== -Tag name: ctsm5.3.018 +Tag name: tmp-241219.n02.ctsm5.3.016 Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov) -Date: Tue Jan 7 10:22:51 MST 2025 +Date: Tue 07 Jan 2025 04:23:28 PM MST One-line Summary: FATES hydro test update Purpose and description of changes @@ -74,7 +74,7 @@ Pull Requests that document the changes (include PR ids): =============================================================== =============================================================== -Tag name: ctsm5.3.017 +Tag name: tmp-241219.n01.ctsm5.3.016 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) Date: Tue 24 Dec 2024 03:43:01 PM MST One-line Summary: Merge b4b-dev diff --git a/doc/ChangeSum b/doc/ChangeSum index 8784bbd5ea..f3fdf4e96d 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,7 +1,7 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.3.018 glemieux 01/07/2025 FATES hydro test update - ctsm5.3.017 slevis 12/24/2024 Merge b4b-dev +tmp-241219.n02.ctsm5.3.016 01/07/2025 FATES hydro test update +tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags From e58aab50a4a586c0ce14bf78d385ab36466ab124 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 8 Jan 2025 10:53:47 -0700 Subject: [PATCH 114/159] Update timestamp in change files --- doc/ChangeLog | 2 +- doc/ChangeSum | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index c6eb6974db..8e2b20acc1 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: tmp-241219.n02.ctsm5.3.016 Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov) -Date: Tue 07 Jan 2025 04:23:28 PM MST +Date: Wed 08 Jan 2025 10:52:49 AM MST One-line Summary: FATES hydro test update Purpose and description of changes diff --git a/doc/ChangeSum b/doc/ChangeSum index f3fdf4e96d..2c0706055b 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,6 @@ Tag Who Date Summary ============================================================================================================================ -tmp-241219.n02.ctsm5.3.016 01/07/2025 FATES hydro test update +tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes From e97f9d40c14ec2854cc4a39549c23ed945d1510c Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Jan 2025 12:30:56 -0700 Subject: [PATCH 115/159] Add flexCN_FUN_BNF test and corresponding testmods --- cime_config/testdefs/testlist_clm.xml | 9 +++++++++ .../testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods | 1 + .../testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index ed6aaba0b1..200468cf53 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1317,6 +1317,15 @@ + + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods new file mode 100644 index 0000000000..4fbf11b334 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods @@ -0,0 +1 @@ +../flexCN_FUN diff --git a/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm new file mode 100644 index 0000000000..8084f982e1 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm @@ -0,0 +1,2 @@ + nfix_method = 'Bytnerowicz' + From 126e0265b9f14c7ce844d0fa7642d13a6f41e5a8 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Jan 2025 12:39:00 -0700 Subject: [PATCH 116/159] Correct the phase_name for an expected failure --- cime_config/testdefs/ExpectedTestFails.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index e88cb36954..79ead77c74 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -114,7 +114,7 @@ - + FAIL #1733 From f1d1febe6c4ecb6781bc944c44c4561088928ecc Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 8 Jan 2025 18:41:51 -0700 Subject: [PATCH 117/159] Updated ChangeLog/ChangeSum --- doc/ChangeLog | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 5 ++-- 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 8e2b20acc1..fffcc6bca5 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,74 @@ =============================================================== +Tag name: tmp-241219.n03.ctsm5.3.016 +Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) +Date: Wed 08 Jan 2025 06:09:41 PM MST +One-line Summary: Bug fix for izumi nag tests to pass + +Purpose and description of changes +---------------------------------- + + Allocation statements should have been (0:mxpft) instead of (mxpft). + I introduced the bug in a small refactor requested in #2917. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: +Fixes #2924 + +Notes of particular relevance for developers: +--------------------------------------------- +Changes to tests or testing: + Added tests that I should have added in the tmp-241219.n01.ctsm5.3.016 tag: + ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.izumi_nag.clm-flexCN_FUN_BNF + ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.derecho_intel.clm-flexCN_FUN_BNF + +Testing summary: +---------------- + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + derecho used tmp-241219.n02.ctsm5.3.016 + izumi used ctsm5.3.016 because it was the best available baseline + +Answer changes +-------------- + +Changes answers relative to baseline: No but read caveat. + + Summarize any changes to answers, i.e., + - what code configurations: a few Fates cases + - what platforms/compilers: izumi; only because I compared to ctsm5.3.016 + - nature of change: same as in the tmp-241219.n02.ctsm5.3.016 tag + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2925 + +=============================================================== +=============================================================== Tag name: tmp-241219.n02.ctsm5.3.016 Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov) Date: Wed 08 Jan 2025 10:52:49 AM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 2c0706055b..2a34c4cce3 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,7 +1,8 @@ Tag Who Date Summary ============================================================================================================================ -tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update -tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev +tmp-241219.n03.ctsm5.3.016 01/09/2025 Bug fix for izumi nag tests to pass (slevis) +tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update (glemieux) +tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev (slevis) ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags From a322e7589e8ced929cb52eaddcf7ada2a121c794 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 8 Jan 2025 19:11:20 -0700 Subject: [PATCH 118/159] Fix the mizuRoute tag, and bring in one more cime update for SRCROOT for create_clone --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 04011fc191..e862130db7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -60,7 +60,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/MOSART [submodule "mizuRoute"] path = components/mizuRoute url = https://github.com/ESCOMP/mizuRoute -fxtag = cesm-coupling.n02_v2.2.0 +fxtag = cesm-coupling.n03_v2.2.0 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/mizuRoute @@ -76,7 +76,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git [submodule "cime"] path = cime url = https://github.com/ESMCI/cime -fxtag = cime6.1.58 +fxtag = cime6.1.59 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/cime From d19a6795daab31a9bc1e8af65bee5c3dfd40d012 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 8 Jan 2025 19:17:54 -0700 Subject: [PATCH 119/159] Add submodule directory updates --- ccs_config | 2 +- cime | 2 +- components/mizuRoute | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ccs_config b/ccs_config index 6e77e7ee17..a712a92045 160000 --- a/ccs_config +++ b/ccs_config @@ -1 +1 @@ -Subproject commit 6e77e7ee1748a4d3b2497d7ad3943498a7cec2aa +Subproject commit a712a920453dc0cb2831dce576e78c389b567f7e diff --git a/cime b/cime index ac8e583108..addf9e67ce 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit ac8e583108b1ce1f592a6f6436c71d6dc087f447 +Subproject commit addf9e67ceeb0e056de33ee793d67491176dd3a5 diff --git a/components/mizuRoute b/components/mizuRoute index 2ff305a029..362bee329b 160000 --- a/components/mizuRoute +++ b/components/mizuRoute @@ -1 +1 @@ -Subproject commit 2ff305a0292cb06789de6cfea7ad3cc0d6173493 +Subproject commit 362bee329bd6bf1fd45c8f36e006b9c4294bb8ca From bcd684b4e95cda1ac47ee6a118002849fad65c95 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 9 Jan 2025 11:45:46 -0700 Subject: [PATCH 120/159] Finalize ChangeLog --- doc/ChangeLog | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index fffcc6bca5..95477f1d61 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,12 +1,11 @@ =============================================================== Tag name: tmp-241219.n03.ctsm5.3.016 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) -Date: Wed 08 Jan 2025 06:09:41 PM MST +Date: Thu 09 Jan 2025 11:39:37 AM MST One-line Summary: Bug fix for izumi nag tests to pass Purpose and description of changes ---------------------------------- - Allocation statements should have been (0:mxpft) instead of (mxpft). I introduced the bug in a small refactor requested in #2917. @@ -30,7 +29,7 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed ---------- List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: -Fixes #2924 + Fixes #2924 Notes of particular relevance for developers: --------------------------------------------- @@ -49,7 +48,7 @@ Testing summary: izumi ------- OK If the tag used for baseline comparisons was NOT the previous tag, note that here: - derecho used tmp-241219.n02.ctsm5.3.016 + derecho used tmp-241219.n02.ctsm5.3.016 (i.e. the previous tag) izumi used ctsm5.3.016 because it was the best available baseline Answer changes @@ -62,6 +61,11 @@ Changes answers relative to baseline: No but read caveat. - what platforms/compilers: izumi; only because I compared to ctsm5.3.016 - nature of change: same as in the tmp-241219.n02.ctsm5.3.016 tag + Note: Also on izumi I see the following failure in all the tests that 'failed to initialize' + that I had to go back to build and run, whether with ./case.build or ./create_test. For example: + FAIL ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.izumi_nag.clm-noFUN_flexCN BASELINE ctsm5.3.016: ERROR CPRNC failed to open files + I am aware that others have also seen this behavior. + Other details ------------- Pull Requests that document the changes (include PR ids): From 2d8f71d7d321490f84ca716207c1a3b5dd48b07e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 9 Jan 2025 12:40:56 -0700 Subject: [PATCH 121/159] Update ChangeSum --- doc/ChangeSum | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ChangeSum b/doc/ChangeSum index 2a34c4cce3..545a02ff25 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master tmp-241219.n03.ctsm5.3.016 01/09/2025 Bug fix for izumi nag tests to pass (slevis) tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update (glemieux) tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev (slevis) From c12709b3f0f23aed147cf0ea901533c3a4563c45 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 9 Jan 2025 13:05:22 -0700 Subject: [PATCH 122/159] Update ChageLog --- doc/ChangeLog | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 95477f1d61..aad4b50ac1 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,82 @@ =============================================================== +Tag name: ctsm5.3.017 +Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) +Date: Thu 09 Jan 2025 11:56:43 AM MST +One-line Summary: Merge tmp-241219 branch to master + +Purpose and description of changes +---------------------------------- + +Includes three tmp-241219 tags: + tmp-241219.n01.ctsm5.3.016 Merge b4b-dev: + nfix_method options Houlton (default), Bytnerowicz (option) + tmp-241219.n02.ctsm5.3.016 FATES hydro test update + tmp-241219.n03.ctsm5.3.016 Bug fix for izumi nag tests to pass (b4b unless using Bytnerowicz) + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Each separate tag documents this information below. + +Notes of particular relevance for users +--------------------------------------- +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): + nfix_method as explained in tmp-241219.n01.ctsm5.3.016 tag below. + +Notes of particular relevance for developers: +--------------------------------------------- +Changes to tests or testing: + New tests as documented in tmp-241219.n03.ctsm5.3.016 tag below. + +Testing summary: +---------------- + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK (baseline linked to tmp-241219.n03.ctsm5.3.016) + izumi ------- OK (baseline linked to tmp-241219.n03.ctsm5.3.016) + + fates tests: + derecho ----- No new testing; last baseline is fates-sci.1.80.4_api.37.0.0-tmp-241219.n02.ctsm5.3.016 + izumi ------- No new testing; see tmp-241219.n02.ctsm5.3.016 tag below + +Answer changes +-------------- + +Changes answers relative to baseline: Yes, only for aux_clm fates testmods + + Same comment as in tmp-241219.n02.ctsm5.3.016 tag: + The FATES tag update includes a number of science and bug fix updates since the + last fates tag update, which results in non-B4B changes. These have been reviewed + and differ as expected. + +Other details +------------- +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + fates updated to sci.1.80.4_api.37.0.0 + +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2928 + +=============================================================== +=============================================================== Tag name: tmp-241219.n03.ctsm5.3.016 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) Date: Thu 09 Jan 2025 11:39:37 AM MST From 5c2bc3f69f89e1938aa4161463a1e5da5d3e7cff Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 9 Jan 2025 15:07:41 -0700 Subject: [PATCH 123/159] Small update to ChangeLog --- doc/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index aad4b50ac1..1b37b4be63 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -67,6 +67,8 @@ Changes answers relative to baseline: Yes, only for aux_clm fates testmods last fates tag update, which results in non-B4B changes. These have been reviewed and differ as expected. + Also, see caveat in Answer changes for tag tmp-241219.n01.ctsm5.3.016. + Other details ------------- List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): From 332f7c1517ae2316996cab8084324fc01c8f2a55 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 10 Jan 2025 12:01:17 -0700 Subject: [PATCH 124/159] Update to mosart1.1.06 and rtm1_0_84 --- .gitmodules | 4 ++-- components/mosart | 2 +- components/rtm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index a7322bb0e4..bc66fe1682 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_82 +fxtag = rtm1_0_84 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.04 +fxtag = mosart1.1.06 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART diff --git a/components/mosart b/components/mosart index 9fe1ea8774..a246344e9b 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit 9fe1ea87742f2bfee64b1d99c27467a06d87761e +Subproject commit a246344e9b28e4bb42313749094fa20d45e2b212 diff --git a/components/rtm b/components/rtm index 1d10716e86..6899b55816 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit 1d10716e86c6f1b5feb196e20313b881537ac851 +Subproject commit 6899b55816ee4d9b7cf983d74ba2997b97a13c4d From 5d87682c797759f6706c6fe2d4616f249b783954 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 10 Jan 2025 16:22:36 -0700 Subject: [PATCH 125/159] Update ChangeLog/Sum --- doc/ChangeLog | 34 ++++++++++++++++++---------------- doc/ChangeSum | 2 +- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 03faca2e66..6a7d9d45a6 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.3.018 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) -Date: Thu 09 Jan 2025 04:32:03 PM MST +Date: Fri 10 Jan 2025 04:06:17 PM MST One-line Summary: Change history time to be the middle of the time bounds Purpose and description of changes @@ -47,45 +47,47 @@ Caveats for developers (e.g., code that is duplicated that requires double maint Changes to tests or testing: This tag introduces changes to the mosart/rtm testlists. + FAIL RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput RUN + I did not label this failure EXPECTED because the fix comes in later in this series of "history" tags, in particular ctsm5.3.020. + Testing summary: ---------------- [PASS means all tests PASS; OK means tests PASS other than expected fails.] + build-namelist tests + + derecho - PASS + python testing (if python code has changed; see instructions in python/README.md; document testing done): - derecho - + derecho - PASS regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): - derecho ----- previously OK, will repeat - izumi ------- previously OK, will repeat + derecho ----- OK + izumi ------- OK mosart - derecho ----- previously OK, will repeat - izumi ------- previously OK, will repeat + derecho ----- OK + izumi ------- OK rtm - derecho ----- previously OK, will repeat - - any other testing (give details below): - - ctsm_sci - derecho ---- - -If the tag used for baseline comparisons was NOT the previous tag, note that here: - + derecho ----- OK Answer changes -------------- -Changes answers relative to baseline: Only time variable +Changes answers relative to baseline: Only time variable, plus read caveat Summarize any changes to answers, i.e., - what code configurations: all - what platforms/compilers: all - nature of change: only the time variable + Caveat: We see diffs in mosart and cpl output that will be eliminated later in this series of "history" tags, in particular ctsm5.3.020. They are discussed here: +https://github.com/ESCOMP/CTSM/pull/2838#issuecomment-2477608383 +https://github.com/ESCOMP/MOSART/issues/103#issuecomment-2479679014 Other details ------------- diff --git a/doc/ChangeSum b/doc/ChangeSum index 4e76b74c0b..51769e49a2 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,6 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.3.018 slevis 01/??/2025 Change history time to be the middle of the time bounds + ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master tmp-241219.n03.ctsm5.3.016 01/09/2025 Bug fix for izumi nag tests to pass (slevis) tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update (glemieux) From 3ffe654ab903e143516813fc2c06655c627daa13 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 10 Jan 2025 17:52:00 -0700 Subject: [PATCH 126/159] Finalize ChangeLog --- doc/ChangeLog | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 6a7d9d45a6..5357d81b5f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.3.018 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) -Date: Fri 10 Jan 2025 04:06:17 PM MST +Date: Fri 10 Jan 2025 05:37:08 PM MST One-line Summary: Change history time to be the middle of the time bounds Purpose and description of changes @@ -50,6 +50,10 @@ Changes to tests or testing: FAIL RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput RUN I did not label this failure EXPECTED because the fix comes in later in this series of "history" tags, in particular ctsm5.3.020. + I resolved the izumi nag tests that failed to build (due to a bug in rtm and mosart) by introducing the bug-fix manually, as explained here: +https://github.com/ESCOMP/CTSM/pull/2084#issuecomment-2584164690 + In the next tag we expect to update to the rtm/mosart tags that include the fix. + Testing summary: ---------------- From f3a1dc6039d98433d56b2fadb86a371d150508f3 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Jan 2025 15:44:48 -0700 Subject: [PATCH 127/159] call advance_timestep if startup or hybrid, not branch or continue --- src/utils/clm_time_manager.F90 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90 index af9251f58d..3e3d1a8c45 100644 --- a/src/utils/clm_time_manager.F90 +++ b/src/utils/clm_time_manager.F90 @@ -178,6 +178,9 @@ end subroutine set_timemgr_init !========================================================================================= subroutine timemgr_init(curr_date_in ) + + use clm_varctl, only : nsrest, nsrContinue, nsrBranch + type(ESMF_Time), intent(in), optional :: curr_date_in !--------------------------------------------------------------------------------- @@ -243,7 +246,9 @@ subroutine timemgr_init(curr_date_in ) end if ! Advance time step to start at nstep=1 - call advance_timestep() + if (nsrest /= nsrContinue .and. nsrest /= nsrBranch) then + call advance_timestep() + end if ! Print configuration summary to log file (stdout). From b66e1e91f86c0ef4a674beef97826fdf9efa491e Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 12:07:31 -0700 Subject: [PATCH 128/159] Draft ChangeLog/Sum files --- doc/ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 68 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 5357d81b5f..b046fc278a 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,71 @@ =============================================================== +Tag name: ctsm5.3.019 +Originator(s): olyson (Keith Oleson, UCAR/TSS) +Date: Tue 14 Jan 2025 10:55:50 AM MST +One-line Summary: Stop running 0th time step + +Purpose and description of changes +---------------------------------- + As with the last tag, this is also for consistency with CAM. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Fixes #925 + Fixes #2923 + +Testing summary: +---------------- + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + derecho - PASS + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + derecho - PASS + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + +Answer changes +-------------- + +Changes answers relative to baseline: Yes + + Summarize any changes to answers, i.e., + - what code configurations: All + - what platforms/compilers: All + - nature of change: larger than roundoff/same climate + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2084 + +=============================================================== +=============================================================== Tag name: ctsm5.3.018 Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310) Date: Fri 10 Jan 2025 05:37:08 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index 51769e49a2..bf027e98fc 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.019 olyson 01/14/2025 Stop running 0th time step ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master tmp-241219.n03.ctsm5.3.016 01/09/2025 Bug fix for izumi nag tests to pass (slevis) From 8d198cfcf738fa0adc6d346aacbeb6040a39b537 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 13:04:03 -0700 Subject: [PATCH 129/159] Update ChangeLog --- doc/ChangeLog | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index b046fc278a..246d774ab8 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -8,6 +8,10 @@ Purpose and description of changes ---------------------------------- As with the last tag, this is also for consistency with CAM. +Contributors +------------ + Bill Sacks. In the final steps, also slevis. + Significant changes to scientifically-supported configurations -------------------------------------------------------------- @@ -29,7 +33,19 @@ Bugs fixed ---------- List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: Fixes #925 - Fixes #2923 + +Notes of particular relevance for developers: +--------------------------------------------- +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + Same or similar changes needed separately in clm, in mosart, and in rtm. + +Changes to tests or testing: + FAIL RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput RUN + I did not label this failure EXPECTED because the fix is planned for the next tag, ctsm5.3.020. + + I resolved the izumi nag tests that failed to build (due to a bug in rtm and mosart) by introducing the bug-fix manually, as explained here: +https://github.com/ESCOMP/CTSM/pull/2084#issuecomment-2584164690 + In ctsm5.3.020 we plan to update to the rtm/mosart tags that include the fix. Testing summary: ---------------- @@ -59,10 +75,19 @@ Changes answers relative to baseline: Yes - what platforms/compilers: All - nature of change: larger than roundoff/same climate + Caveat: We see diffs in mosart and cpl output that will be eliminated in ctsm5.3.020. They are discussed here: +https://github.com/ESCOMP/CTSM/pull/2838#issuecomment-2477608383 +https://github.com/ESCOMP/MOSART/issues/103#issuecomment-2479679014 + Other details ------------- +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + rtm and mosart were already updated in the previous tag (ctsm5.3.018) to include the corresponding rtm and mosart tags + Pull Requests that document the changes (include PR ids): https://github.com/ESCOMP/ctsm/pull/2084 + https://github.com/ESCOMP/MOSART/pull/67 + https://github.com/ESCOMP/RTM/pull/37 =============================================================== =============================================================== @@ -163,7 +188,7 @@ https://github.com/ESCOMP/MOSART/issues/103#issuecomment-2479679014 Other details ------------- List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): - rtm, mosart + rtm, mosart (see related note in ctsm5.3.019) Pull Requests that document the changes (include PR ids): https://github.com/ESCOMP/ctsm/pull/2838 From 71e56b90f02aa0ddbba4900b2c1bf8bea9c083b3 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 15:19:57 -0700 Subject: [PATCH 130/159] Update ChangeLog --- doc/ChangeLog | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 246d774ab8..f1cf556e41 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.3.019 Originator(s): olyson (Keith Oleson, UCAR/TSS) -Date: Tue 14 Jan 2025 10:55:50 AM MST +Date: Tue 14 Jan 2025 02:46:11 PM MST One-line Summary: Stop running 0th time step Purpose and description of changes @@ -65,6 +65,16 @@ Testing summary: derecho ----- OK izumi ------- OK + mosart + derecho ----- OK + izumi ------- OK + + rtm + derecho ----- OK + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + I repeated the rtm & mosart test-suites with mosart1.1.04 instead of 06 and rtm1_0_82 instead of 84 (all else the same) and compared against the new baselines mosart1.1.06-ctsm5.3.019 and rtm1_0_84-ctsm5.3.019. These gave b4b identical answers. + Answer changes -------------- From d89c86e7776bbf7451860b60038b4725fe7a0560 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 17:46:08 -0700 Subject: [PATCH 131/159] Satisfy black --- python/ctsm/crop_calendars/cropcal_module.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index 44f2ca0293..58dbc53729 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -24,9 +24,7 @@ def check_and_trim_years(year_1, year_n, ds_in): # Check that all desired years are included year = utils.get_timestep_year(ds_in, ds_in.time.values[0]) if year > year_1: - raise RuntimeError( - f"Requested year_1 is {year_1} but first year in outputs is {year}" - ) + raise RuntimeError(f"Requested year_1 is {year_1} but first year in outputs is {year}") year = utils.get_timestep_year(ds_in, ds_in.time.values[-1]) if year < year_1: raise RuntimeError(f"Requested year_n is {year_n} but last year in outputs is {year}") From 31b880c2415892adc16554a0d7cf1b832dc21f8d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 17:49:14 -0700 Subject: [PATCH 132/159] Update .git-blame-ignore-revs --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index c02e20b678..eb3e286e9e 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1,4 +1,5 @@ # Ran python directory through black python formatter +d89c86e7776bbf7451860b60038b4725fe7a0560 b429b63824e09f82e95d2982f14311cbbd8e4a37 d229b5c6689efc4c2a6cef077515c4ccd5c18ff6 4cd83cb3ee6d85eb909403487abf5eeaf4d98911 From ce7f7b2840b8f9e72603d8f4361c6b0f5218c13c Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 14 Jan 2025 18:56:39 -0700 Subject: [PATCH 133/159] Update .gitmodules to mosart1.1.08 and rtm1_0_85 --- .gitmodules | 4 ++-- components/mosart | 2 +- components/rtm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index bc66fe1682..47600cc6dc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_84 +fxtag = rtm1_0_85 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.06 +fxtag = mosart1.1.08 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART diff --git a/components/mosart b/components/mosart index a246344e9b..00a87c9084 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit a246344e9b28e4bb42313749094fa20d45e2b212 +Subproject commit 00a87c9084af1af0d2b14d14e3d432f6808681f9 diff --git a/components/rtm b/components/rtm index 6899b55816..ddcf85934f 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit 6899b55816ee4d9b7cf983d74ba2997b97a13c4d +Subproject commit ddcf85934f9b4bd7d70aabbea872c68fc88e70d1 From 0b740699390bcecb23314e7f2b1ab8b828b27b4d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 11:33:15 -0700 Subject: [PATCH 134/159] Remove expected build failures related to mpi-serial (issue 2916) --- cime_config/testdefs/ExpectedTestFails.xml | 188 --------------------- 1 file changed, 188 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 79ead77c74..ea5d560020 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -204,195 +204,7 @@ #2310 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - - - FAIL - #2916 - - - - - FAIL From 598b54643e0f0c60135505cfebb52f12ff2b0225 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 11:49:59 -0700 Subject: [PATCH 135/159] Add aux_clm_mpi_serial test suite. Useful for redoing tests that failed due to https://github.com/ESCOMP/CTSM/issues/2916, after having replaced libraries/mpi-serial with a fresh copy. --- cime_config/testdefs/testlist_clm.xml | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 200468cf53..1986098533 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -12,6 +12,7 @@ hillslope: Experimental test list used for the hillslope option of the model rxcropmaturity: Short tests to be run during development related to prescribed crop calendars matrixcn: Tests exercising the matrix-CN capability + aux_clm_mpi_serial: aux_clm tests using mpi-serial. Useful for redoing tests that failed due to https://github.com/ESCOMP/CTSM/issues/2916, after having replaced libraries/mpi-serial with a fresh copy. --> @@ -905,6 +906,7 @@ + @@ -1149,6 +1151,7 @@ + @@ -1158,6 +1161,7 @@ + @@ -1701,6 +1705,7 @@ + @@ -1718,6 +1723,7 @@ + @@ -1727,6 +1733,7 @@ + @@ -1736,6 +1743,7 @@ + @@ -1746,6 +1754,7 @@ + @@ -1755,6 +1764,7 @@ + @@ -1764,6 +1774,7 @@ + @@ -1774,6 +1785,7 @@ + @@ -1794,6 +1806,7 @@ + @@ -1868,6 +1881,7 @@ + @@ -1878,6 +1892,7 @@ + @@ -1890,6 +1905,7 @@ + @@ -2257,6 +2273,7 @@ + @@ -2266,9 +2283,12 @@ + + + @@ -2366,6 +2386,7 @@ + @@ -2377,7 +2398,9 @@ + + @@ -2388,8 +2411,10 @@ + + @@ -2401,7 +2426,9 @@ + + @@ -2412,7 +2439,9 @@ + + @@ -2436,8 +2465,10 @@ + + @@ -2449,8 +2480,10 @@ + + @@ -2481,6 +2514,7 @@ + @@ -2526,6 +2560,7 @@ + @@ -2672,6 +2707,7 @@ + @@ -2681,6 +2717,7 @@ + @@ -2732,6 +2769,7 @@ + @@ -2836,7 +2874,9 @@ + + @@ -2845,6 +2885,7 @@ + @@ -2863,6 +2904,7 @@ + @@ -3175,6 +3217,7 @@ + @@ -3417,6 +3460,7 @@ + @@ -3427,6 +3471,7 @@ + @@ -3493,6 +3538,7 @@ + @@ -3637,6 +3683,7 @@ + From d93f8a88a8bddf366a9490c4db4ff252385aad93 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 11:59:49 -0700 Subject: [PATCH 136/159] Add an expected failure due to ESCOMP/CTSM#2913. --- 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 ea5d560020..fa7f9c1844 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -187,6 +187,13 @@ + + + FAIL + #2913 + + + FAIL From c9e2ca841e3d84193cc5544266a132152872de0a Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 14:12:08 -0700 Subject: [PATCH 137/159] Fix conflicts in lilac/lnd_comp_esmf.F90 with 019 version. --- components/mosart | 2 +- components/rtm | 2 +- src/cpl/lilac/lnd_comp_esmf.F90 | 33 --------------------------------- 3 files changed, 2 insertions(+), 35 deletions(-) diff --git a/components/mosart b/components/mosart index a246344e9b..e2ffe00004 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit a246344e9b28e4bb42313749094fa20d45e2b212 +Subproject commit e2ffe00004cc416cfc8bcfae2a949474075c1d1f diff --git a/components/rtm b/components/rtm index 6899b55816..b3dfcfbba5 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit 6899b55816ee4d9b7cf983d74ba2997b97a13c4d +Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798 diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index 7b6fdffa6a..3833c77da5 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -693,13 +693,6 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) call update_rad_dtime(doalb) -<<<<<<< HEAD - !-------------------------------- - ! Determine if time to stop - !-------------------------------- - - call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) -======= !-------------------------------- ! Determine if time to write restart !-------------------------------- @@ -711,7 +704,6 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return rstwr = .true. call ESMF_AlarmRingerOff( alarm, rc=rc ) ->>>>>>> ctsm5.3.019 if (ChkErr(rc,__LINE__,u_FILE_u)) return else rstwr = .false. @@ -724,33 +716,8 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) ! Determine if time to stop !-------------------------------- -<<<<<<< HEAD - !-------------------------------- - ! Determine if time to write restart - !-------------------------------- - - call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - rstwr = .false. - endif - if (masterproc) then - write(iulog,*)' restart alarm is ',rstwr - end if - - !-------------------------------- - ! Run CTSM - !-------------------------------- -======= call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return ->>>>>>> ctsm5.3.019 if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return From 031407c04023aff322f5a63c8e11cdf62155b53d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 14:13:50 -0700 Subject: [PATCH 138/159] lilac/lnd_comp_esmf.F90: Switch stop/restart alarm order. As in ESCOMP/CTSM#2912. --- src/cpl/lilac/lnd_comp_esmf.F90 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index 3833c77da5..0aa0fc9f81 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -694,41 +694,41 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc) call update_rad_dtime(doalb) !-------------------------------- - ! Determine if time to write restart + ! Determine if time to stop !-------------------------------- - call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) + call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. + nlend = .true. call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return else - rstwr = .false. + nlend = .false. endif if (masterproc) then - write(iulog,*)' restart alarm is ',rstwr + write(iulog,*)' stop alarm is ',nlend end if !-------------------------------- - ! Determine if time to stop + ! Determine if time to write restart !-------------------------------- - call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc) + call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (ESMF_AlarmIsRinging(alarm, rc=rc)) then if (ChkErr(rc,__LINE__,u_FILE_u)) return - nlend = .true. + rstwr = .true. call ESMF_AlarmRingerOff( alarm, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return else - nlend = .false. + rstwr = .false. endif if (masterproc) then - write(iulog,*)' stop alarm is ',nlend + write(iulog,*)' restart alarm is ',rstwr end if !-------------------------------- From 2c99ced96b41f652f0ea733d83f21038b75af65b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 16 Jan 2025 15:19:52 -0700 Subject: [PATCH 139/159] Draft ChangeLog/Sum --- doc/ChangeLog | 100 +++++++++++++++++++++++++++++++++++++++++++++++++- doc/ChangeSum | 1 + 2 files changed, 100 insertions(+), 1 deletion(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index f1cf556e41..58c24d909b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,102 @@ =============================================================== +Tag name: ctsm5.3.021 +Originator(s): samrabin (Sam Rabin, UCAR/TSS) +Date: Thu 16 Jan 2025 03:01:32 PM MST +One-line Summary: Standardize time metadata + +Purpose and description of changes +---------------------------------- + Standardizes a dimension name of output variable time_bounds from hist_interval to nbnd. + Standardizes attributes for time_bounds, mcdate, mcsec, mdcur, and mscur.` + +Contributors +------------ + Also Bill Sacks and Erik Kluzek. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed +---------- +List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: + Resolves #1693 + Fixes #2923 + Resolves https://github.com/ESCOMP/MOSART/pull/66 + Resolves https://github.com/ESCOMP/RTM/pull/35 + +Notes of particular relevance for developers: +--------------------------------------------- +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + Same or similar changes needed in all three: clm, rtm, mosart. + +Testing summary: +---------------- + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + derecho - + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + derecho - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- + izumi ------- + + fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--) + derecho ----- + izumi ------- + + any other testing (give details below): + + ctsm_sci + derecho ---- + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: No + Just new metadata in history. + +Other details +------------- +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + mosart1.1.08 + rtm1_0_85 + +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/2052 + https://github.com/ESCOMP/MOSART/pull/66 + https://github.com/ESCOMP/RTM/pull/35 + +=============================================================== +=============================================================== +Tag name: ctsm5.3.020 +Originator(s): samrabin (Sam Rabin, UCAR/TSS) +THIS IS ONLY A PLACEHOLDER +=============================================================== +=============================================================== Tag name: ctsm5.3.019 Originator(s): olyson (Keith Oleson, UCAR/TSS) Date: Tue 14 Jan 2025 02:46:11 PM MST @@ -10,7 +108,7 @@ Purpose and description of changes Contributors ------------ - Bill Sacks. In the final steps, also slevis. + Also Bill Sacks and, in the final steps, slevis. Significant changes to scientifically-supported configurations -------------------------------------------------------------- diff --git a/doc/ChangeSum b/doc/ChangeSum index bf027e98fc..e516bfb155 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.021 samrabin 01/16/2025 Standardize time metadata ctsm5.3.019 olyson 01/14/2025 Stop running 0th time step ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master From 6194751cd574811b7246dffbb647d1e91ab1318f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 15:01:19 -0700 Subject: [PATCH 140/159] Update MOSART and RTM to fix nag build error. --- .gitmodules | 4 ++-- components/mosart | 2 +- components/rtm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 2af7ecf098..9aeb7d4de0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper [submodule "rtm"] path = components/rtm url = https://github.com/ESCOMP/RTM -fxtag = rtm1_0_84 +fxtag = rtm1_0_86 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/RTM @@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM [submodule "mosart"] path = components/mosart url = https://github.com/ESCOMP/MOSART -fxtag = mosart1.1.06 +fxtag = mosart1.1.07 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/MOSART diff --git a/components/mosart b/components/mosart index e2ffe00004..330574fbd8 160000 --- a/components/mosart +++ b/components/mosart @@ -1 +1 @@ -Subproject commit e2ffe00004cc416cfc8bcfae2a949474075c1d1f +Subproject commit 330574fbd8a4810b7a168175690cbf7e1a7f6dab diff --git a/components/rtm b/components/rtm index b3dfcfbba5..26e96f500b 160000 --- a/components/rtm +++ b/components/rtm @@ -1 +1 @@ -Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798 +Subproject commit 26e96f500b9500b32a870db20eed6b1bd37587ea From b427fc9e9396cde2902798569c843d950153abc9 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 17 Jan 2025 11:39:49 -0700 Subject: [PATCH 141/159] Remove two expected failures due to issue ESCOMP/CTSM#2914. These were resolved with PR ESCOMP/CTSM#2912. --- cime_config/testdefs/ExpectedTestFails.xml | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index fa7f9c1844..99648effc8 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -126,21 +126,7 @@ #2310 - - - - FAIL - #2914 - - - - - - FAIL - #2914 - - - + FAIL From bf65082ff05666cbb4019cd7347a073efd40cf5c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 17 Jan 2025 11:48:39 -0700 Subject: [PATCH 142/159] Remove an expected failure due to ESCOMP/CTSM#2905. --- 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 99648effc8..185f1ce54d 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -127,13 +127,6 @@ - - - FAIL - #2905 - - - FAIL From bc03504fe5fa69c9ed9d800ea5817016d09a5035 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 17 Jan 2025 12:19:31 -0700 Subject: [PATCH 143/159] Remove failures expected due to ESCOMP/CTSM#2454. --- cime_config/testdefs/ExpectedTestFails.xml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 185f1ce54d..9735c02f4c 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -221,23 +221,12 @@ - - FAIL - #2454 - FAIL #2325 - - - FAIL - #2454 - - - FAIL From ff2ac19320aa3bca31797fe3faf8eda9f4e3b984 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 17 Jan 2025 12:25:32 -0700 Subject: [PATCH 144/159] Update ChangeLog/ChangeSum. --- doc/ChangeLog | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 56 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index f1cf556e41..2c08950b2d 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,59 @@ =============================================================== +Tag name: ctsm5.3.020 +Originator(s): samrabin (Sam Rabin, UCAR/TSS, samrabin@ucar.edu) +Date: Fri Jan 17 12:21:24 MST 2025 +One-line Summary: Merge b4b-dev + +Purpose and description of changes +---------------------------------- + +Merging b4b-dev and ctsm5.3.019. Includes some improvements to test list / expected failures. + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm6_0 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Notes of particular relevance for developers: +--------------------------------------------- + +Changes to tests or testing: +- New test suite: Useful for redoing tests that failed due to https://github.com/ESCOMP/CTSM/issues/2916, after having replaced libraries/mpi-serial with a fresh copy. + + +Testing summary: +---------------- + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + + +Other details +------------- +[Remove any lines that don't apply. Remove entire section if nothing applies.] + +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): + +Pull Requests that document the changes (include PR ids): +- ESCOMP/CTSM#2938: ctsm5.3.020: Merge b4b-dev 2025-01-16 (https://github.com/ESCOMP/CTSM/pull/2938) + +=============================================================== +=============================================================== Tag name: ctsm5.3.019 Originator(s): olyson (Keith Oleson, UCAR/TSS) Date: Tue 14 Jan 2025 02:46:11 PM MST diff --git a/doc/ChangeSum b/doc/ChangeSum index bf027e98fc..98739639a4 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.020 samrabin 01/17/2025 Merge b4b-dev ctsm5.3.019 olyson 01/14/2025 Stop running 0th time step ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master From 9c48035aad9c6c9b4bec43a1a20f074ab5c33b9f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 23 Jan 2025 13:30:32 -0700 Subject: [PATCH 145/159] Update RXCROPMATURITY for compatibility w/ new history files. --- python/ctsm/crop_calendars/cropcal_module.py | 12 ++++++++---- python/ctsm/crop_calendars/import_ds.py | 2 +- python/ctsm/utils.py | 12 ++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index 58dbc53729..b10773fb9b 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -12,6 +12,7 @@ from ctsm.crop_calendars.check_rx_obeyed import check_rx_obeyed from ctsm.crop_calendars.cropcal_constants import DEFAULT_GDD_MIN from ctsm.crop_calendars.import_ds import import_ds +from ctsm.utils import is_instantaneous MISSING_RX_GDD_VAL = -1 @@ -31,7 +32,12 @@ def check_and_trim_years(year_1, year_n, ds_in): # Remove years outside range of interest ### Include an extra year at the end to finish out final seasons. - ds_in = utils.safer_timeslice(ds_in, slice(f"{year_1+1}-01-01", f"{year_n+2}-01-01")) + slice_yr_1 = year_1 + slice_yr_n = year_n + 1 + if is_instantaneous(ds_in["time"]): + slice_yr_1 += 1 + slice_yr_n += 1 + ds_in = utils.safer_timeslice(ds_in, slice(f"{slice_yr_1}-01-01", f"{slice_yr_n}-01-01")) # Make sure you have the expected number of timesteps (including extra year) n_years_expected = year_n - year_1 + 2 @@ -454,9 +460,7 @@ def convert_time_to_int_year(filename, this_ds, this_ds_gs): # time_bounds saved. After that PR (and before the segregation of instantaneous and other # variables onto separate files), files with an instantaneous variable first in their list # do not get time_bounds saved. - this_ds_gs = this_ds_gs.assign_coords( - {"cftime": this_ds["time_bounds"].isel({"hist_interval": 0})} - ) + this_ds_gs = this_ds_gs.assign_coords({"cftime": this_ds["time_bounds"].isel({"nbnd": 0})}) this_ds_gs = this_ds_gs.assign_coords( {"time": [t.year for t in this_ds_gs["cftime"].values]} ) diff --git a/python/ctsm/crop_calendars/import_ds.py b/python/ctsm/crop_calendars/import_ds.py index 486757492f..f2a4ed929d 100644 --- a/python/ctsm/crop_calendars/import_ds.py +++ b/python/ctsm/crop_calendars/import_ds.py @@ -23,7 +23,7 @@ def compute_derived_vars(ds_in, var): and "HDATES" in ds_in and ds_in.HDATES.dims == ("time", "mxharvests", "patch") ): - year_list = np.array([np.float32(x.year - 1) for x in ds_in.time.values]) + year_list = np.array([np.float32(x.year) for x in ds_in.time.values]) hyears = ds_in["HDATES"].copy() hyears.values = np.tile( np.expand_dims(year_list, (1, 2)), diff --git a/python/ctsm/utils.py b/python/ctsm/utils.py index a5a02a5c9d..e224c5e06e 100644 --- a/python/ctsm/utils.py +++ b/python/ctsm/utils.py @@ -237,3 +237,15 @@ def parse_isoduration(iso_string): # Convert all to timedelta delta_t = timedelta(days=int(days) + 365 * int(years) + 30 * int(months)) return int(delta_t.total_seconds() / 86400) + + +def is_instantaneous(time_var): + """ + Check whether a time variable came from an instantaneous file + """ + long_name = time_var.attrs["long_name"] + if "time at end of" in long_name: + return True + if "time at exact middle" in long_name: + return False + raise RuntimeError(f"Does this long_name mean instantaneous or not? {long_name}") From dc488b39368ccb419392bdf3ef76acd01b86b940 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 23 Jan 2025 14:27:41 -0700 Subject: [PATCH 146/159] Remove duplicate function to check whether instantaneous. --- python/ctsm/crop_calendars/cropcal_utils.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/python/ctsm/crop_calendars/cropcal_utils.py b/python/ctsm/crop_calendars/cropcal_utils.py index 176ce18e9d..c56d3988bd 100644 --- a/python/ctsm/crop_calendars/cropcal_utils.py +++ b/python/ctsm/crop_calendars/cropcal_utils.py @@ -5,6 +5,8 @@ import numpy as np import xarray as xr +from ctsm.utils import is_instantaneous + def define_pftlist(): """ @@ -432,13 +434,6 @@ def make_lon_increasing(xr_obj): return xr_obj.roll(lon=shift, roll_coords=True) -def is_inst_file(dsa): - """ - Check whether Dataset or DataArray has time data from an "instantaneous file" - """ - return "at end of" in dsa["time"].attrs["long_name"] - - def get_beg_inst_timestep_year(timestep): """ Get year associated with the BEGINNING of a timestep in an @@ -459,7 +454,7 @@ def get_timestep_year(dsa, timestep): Get the year associated with a timestep, with different handling depending on whether the file is instantaneous """ - if is_inst_file(dsa): + if is_instantaneous(dsa["time"]): year = get_beg_inst_timestep_year(timestep) else: year = timestep.year From a3344d687ee7f549ead7780f167ab5ad8b489271 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 15:55:52 -0700 Subject: [PATCH 147/159] generate_gdds.py: Add --no-pickle option. --- python/ctsm/crop_calendars/generate_gdds.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/generate_gdds.py b/python/ctsm/crop_calendars/generate_gdds.py index 49226e6f75..1e63fc37f6 100644 --- a/python/ctsm/crop_calendars/generate_gdds.py +++ b/python/ctsm/crop_calendars/generate_gdds.py @@ -43,6 +43,7 @@ def main( unlimited_season_length=False, skip_crops=None, logger=None, + no_pickle=None, ): # pylint: disable=missing-function-docstring,too-many-statements # Directories to save output files and figures @@ -109,7 +110,7 @@ def main( pickle_file = os.path.join(output_dir, f"{first_season}-{last_season}.pickle") h2_ds_file = os.path.join(output_dir, f"{first_season}-{last_season}.h2_ds.nc") - if os.path.exists(pickle_file): + if os.path.exists(pickle_file) and not no_pickle: with open(pickle_file, "rb") as file: ( first_season, @@ -470,6 +471,12 @@ def add_attrs_to_map_ds( type=str, default="", ) + parser.add_argument( + "--no-pickle", + help="Don't read from existing pickle file; instead, overwrite. For troubleshooting.", + action="store_true", + default=False, + ) # Get arguments args = parser.parse_args(sys.argv[1:]) @@ -493,4 +500,5 @@ def add_attrs_to_map_ds( last_land_use_year=args.last_land_use_year, unlimited_season_length=args.unlimited_season_length, skip_crops=args.skip_crops, + no_pickle=args.no_pickle, ) From f13583bab91f5dc488a76cc2cee6d8ca5f4bb957 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 16:05:33 -0700 Subject: [PATCH 148/159] Add RXCROPMATURITY python test script to tools/contrib. --- tools/contrib/test_rxcropmaturity_python.sh | 91 +++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 tools/contrib/test_rxcropmaturity_python.sh diff --git a/tools/contrib/test_rxcropmaturity_python.sh b/tools/contrib/test_rxcropmaturity_python.sh new file mode 100755 index 0000000000..ef4f38ee76 --- /dev/null +++ b/tools/contrib/test_rxcropmaturity_python.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash +set -e + +# Process input arguments +suite_dir="$1" +if [[ ! -d "${suite_dir}" ]]; then + echo "You must provide suite_dir" >&2 + exit 1 +fi +shift +script="$1" +if [[ ! -f "${script}" ]]; then + echo "You must provide script path" >&2 + exit 1 +fi +shift +sdates_file="$1" +if [[ ! -f "${script}" ]]; then + echo "You must provide sdates_file" >&2 + exit 1 +fi + +log_dir="$PWD" + +cd "${suite_dir}" +test_dir_list="$(ls -d RXCROPMATURITY*/ | grep -v gddgen)" + +for conda_env in ctsm_pylib npl; do + echo "${conda_env}" + for d in ${test_dir_list}; do + + # Get test shortname + t="$(echo $d | grep -oE ".*IHist")" + echo -n " $t " + + # Set up + pushd $d 1>/dev/null 2>&1 + logfile="${log_dir}/${t}.${conda_env}.log" + + # Get python command to test + script="check_rxboth_run" + set +e + cmd="$(grep -h "${script}.py" *int.o* | grep -oE "python3.*" | tail -n 1)" + set -e + if [[ "${cmd}" == "" ]]; then + # check_rxboth_run.py wasn't run. Look for generate_gdds.py command. + script="generate_gdds" + set +e + cmd="$(grep -h "${script}.py" *int.o* | grep -oE "python3.*" | tail -n 1)" + set -e + + # Neither were found + if [[ "${cmd}" == "" ]]; then + echo -e "\n Command not found" >&2 + popd 1>/dev/null 2>&1 + continue + fi + + cd ../$t*gddgen + fi + + # Strip extraneous text off command + cmd="$(echo ${cmd} | sed "s/ returned non-zero exit status 1.//")" + cmd="$(echo ${cmd} | sed -E "s/ '$//")" + cmd="$(echo ${cmd} | sed -E "s/'$//")" + + # generate_gdds.py should be run with --no-pickle for troubleshooting + if [[ "${cmd}" == *"generate_gdds.py "* ]]; then + cmd="${cmd} --no-pickle" + fi + + # Run the command + echo -n "${script} " + set +e + conda run -n ${conda_env} ${cmd} 1>"${logfile}" 2>&1 + result=$? + set -e + + # Print emoji to indicate result + if [[ ${result} -eq 0 ]]; then + echo ✅ + else + echo 🔴 + fi + + # Return to test suite directory + popd 1>/dev/null 2>&1 + done +done + +exit 0 From e8b50701e9a09a972e27e14a7324da5322b23ed9 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 12:13:13 -0700 Subject: [PATCH 149/159] Handle instantaneous or non files in compute_derived_vars(). --- python/ctsm/crop_calendars/import_ds.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/import_ds.py b/python/ctsm/crop_calendars/import_ds.py index f2a4ed929d..181d34a9cf 100644 --- a/python/ctsm/crop_calendars/import_ds.py +++ b/python/ctsm/crop_calendars/import_ds.py @@ -10,6 +10,7 @@ from importlib.util import find_spec import numpy as np import xarray as xr +from ctsm.utils import is_instantaneous import ctsm.crop_calendars.cropcal_utils as utils from ctsm.crop_calendars.xr_flexsel import xr_flexsel @@ -23,7 +24,8 @@ def compute_derived_vars(ds_in, var): and "HDATES" in ds_in and ds_in.HDATES.dims == ("time", "mxharvests", "patch") ): - year_list = np.array([np.float32(x.year) for x in ds_in.time.values]) + year_adj = 1 if is_instantaneous(ds_in["time"]) else 0 + year_list = np.array([np.float32(x.year - year_adj) for x in ds_in.time.values]) hyears = ds_in["HDATES"].copy() hyears.values = np.tile( np.expand_dims(year_list, (1, 2)), From 31d4b1fc8e48daa76006f0b1a6db419be5a97a80 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 12:43:14 -0700 Subject: [PATCH 150/159] Handle non/instantaneous files in import_and_process_1yr(). Only remaining failure is under npl: RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHist --- python/ctsm/crop_calendars/generate_gdds.py | 3 +++ .../ctsm/crop_calendars/generate_gdds_functions.py | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/python/ctsm/crop_calendars/generate_gdds.py b/python/ctsm/crop_calendars/generate_gdds.py index 1e63fc37f6..4c08f6a614 100644 --- a/python/ctsm/crop_calendars/generate_gdds.py +++ b/python/ctsm/crop_calendars/generate_gdds.py @@ -145,6 +145,7 @@ def main( else: mxmats = None + h1_instantaneous = None for yr_index, this_yr in enumerate(np.arange(first_season + 1, last_season + 3)): if this_yr <= pickle_year: continue @@ -161,6 +162,7 @@ def main( incl_vegtypes_str, incl_patches1d_itype_veg, mxsowings, + h1_instantaneous, ) = gddfn.import_and_process_1yr( first_season, last_season, @@ -181,6 +183,7 @@ def main( skip_crops, outdir_figs, logger, + h1_instantaneous, ) gddfn.log(logger, f" Saving pickle file ({pickle_file})...") diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py index 299f1e4225..41b1627ed7 100644 --- a/python/ctsm/crop_calendars/generate_gdds_functions.py +++ b/python/ctsm/crop_calendars/generate_gdds_functions.py @@ -10,6 +10,7 @@ import numpy as np import xarray as xr +from ctsm.utils import is_instantaneous import ctsm.crop_calendars.cropcal_utils as utils import ctsm.crop_calendars.cropcal_module as cc from ctsm.crop_calendars.xr_flexsel import xr_flexsel @@ -258,6 +259,7 @@ def import_and_process_1yr( skip_crops, outdir_figs, logger, + h1_instantaneous, ): """ Import one year of CLM output data for GDD generation @@ -287,12 +289,19 @@ def import_and_process_1yr( else: crops_to_read = utils.define_mgdcrop_list_withgrasses() - print(h1_filelist) + # Are h1 files instantaneous? + if h1_instantaneous is None: + h1_instantaneous = is_instantaneous(xr.open_dataset(h1_filelist[0])["time"]) + + if h1_instantaneous: + slice_year = this_year + else: + slice_year = this_year - 1 dates_ds = import_ds( h1_filelist, my_vars=["SDATES", "HDATES"], my_vegtypes=crops_to_read, - time_slice=slice(f"{this_year}-01-01", f"{this_year}-12-31"), + time_slice=slice(f"{slice_year}-01-01", f"{slice_year}-12-31"), chunks=chunks, ) for timestep in dates_ds["time"].values: @@ -810,6 +819,7 @@ def import_and_process_1yr( incl_vegtypes_str, incl_patches1d_itype_veg, mxsowings, + h1_instantaneous, ) From 4c48dfdb1cb1d08e452b729cf38a29dcba3e9dee Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 15:27:09 -0700 Subject: [PATCH 151/159] check_and_trim_years(): Handle slicing in npl conda env. --- python/ctsm/crop_calendars/cropcal_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py index b10773fb9b..5118186cca 100644 --- a/python/ctsm/crop_calendars/cropcal_module.py +++ b/python/ctsm/crop_calendars/cropcal_module.py @@ -37,7 +37,7 @@ def check_and_trim_years(year_1, year_n, ds_in): if is_instantaneous(ds_in["time"]): slice_yr_1 += 1 slice_yr_n += 1 - ds_in = utils.safer_timeslice(ds_in, slice(f"{slice_yr_1}-01-01", f"{slice_yr_n}-01-01")) + ds_in = utils.safer_timeslice(ds_in, slice(f"{slice_yr_1}-01-01", f"{slice_yr_n}-12-31")) # Make sure you have the expected number of timesteps (including extra year) n_years_expected = year_n - year_1 + 2 From 311a89c8b4caf979ffd23db6446ca8e33316d073 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 15:28:48 -0700 Subject: [PATCH 152/159] safer_timeslice(): Add to docstring. --- python/ctsm/crop_calendars/cropcal_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/ctsm/crop_calendars/cropcal_utils.py b/python/ctsm/crop_calendars/cropcal_utils.py index c56d3988bd..51b797502b 100644 --- a/python/ctsm/crop_calendars/cropcal_utils.py +++ b/python/ctsm/crop_calendars/cropcal_utils.py @@ -319,7 +319,8 @@ def safer_timeslice(ds_in, time_slice, time_var="time"): """ ctsm_pylib can't handle time slicing like Dataset.sel(time=slice("1998-01-01", "2005-12-31")) for some reason. This function tries to fall back to slicing by integers. It should work with - both Datasets and DataArrays. + both Datasets and DataArrays. NOTE: This isn't a problem for more modern Python environments. + Even npl-2022b can use the straightforward slicing in the "try" block. """ try: ds_in = ds_in.sel({time_var: time_slice}) From f615af31c28641c44a78fbb85096f30fde792db4 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 15:29:07 -0700 Subject: [PATCH 153/159] safer_timeslice(): Improve exception handling. --- python/ctsm/crop_calendars/cropcal_utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/python/ctsm/crop_calendars/cropcal_utils.py b/python/ctsm/crop_calendars/cropcal_utils.py index 51b797502b..4eaff2c94f 100644 --- a/python/ctsm/crop_calendars/cropcal_utils.py +++ b/python/ctsm/crop_calendars/cropcal_utils.py @@ -324,7 +324,7 @@ def safer_timeslice(ds_in, time_slice, time_var="time"): """ try: ds_in = ds_in.sel({time_var: time_slice}) - except: # pylint: disable=bare-except + except Exception as this_exception: # pylint: disable=broad-except # If the issue might have been slicing using strings, try to fall back to integer slicing can_try_integer_slicing = ( isinstance(time_slice.start, str) @@ -340,15 +340,15 @@ def safer_timeslice(ds_in, time_slice, time_var="time"): if can_try_integer_slicing: fileyears = np.array([x.year for x in ds_in.time.values]) if len(np.unique(fileyears)) != len(fileyears): - print("Could not fall back to integer slicing of years: Time axis not annual") - raise + msg = "Could not fall back to integer slicing of years: Time axis not annual" + raise RuntimeError(msg) from this_exception y_start = int(time_slice.start.split("-")[0]) y_stop = int(time_slice.stop.split("-")[0]) where_in_timeslice = np.where((fileyears >= y_start) & (fileyears <= y_stop))[0] ds_in = ds_in.isel({time_var: where_in_timeslice}) else: - print(f"Could not fall back to integer slicing for time_slice {time_slice}") - raise + msg = f"Could not fall back to integer slicing for time_slice {time_slice}" + raise RuntimeError(msg) from this_exception return ds_in From 8259640f19f9db19847262f45e1946f52fe1b089 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 24 Jan 2025 19:07:45 -0700 Subject: [PATCH 154/159] Minor improvements and fixes to test_rxcropmaturity_python.sh. --- tools/contrib/test_rxcropmaturity_python.sh | 40 ++++++++++++++------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/tools/contrib/test_rxcropmaturity_python.sh b/tools/contrib/test_rxcropmaturity_python.sh index ef4f38ee76..69e9b00a04 100755 --- a/tools/contrib/test_rxcropmaturity_python.sh +++ b/tools/contrib/test_rxcropmaturity_python.sh @@ -1,25 +1,41 @@ #!/usr/bin/env bash set -e +# This script is designed to easily test updated versions of the code in python/ctsm/crop_calendars/ +# on outputs of the rxcropmaturity test suite. For RXCROPMATURITYSKIPGEN tests (i.e., skipping the +# GDD-generating step, it will rerun check_rxboth_run.py. It will also do this for RXCROPMATURITY +# tests whose call of generate_gdds.py completed successfully. For RXCROPMATURITY tests where that +# failed, it will retry the generate_gdds.py call. Tests are performed with both the ctsm_pylib +# and npl conda environments. +# +# Note that the python/ctsm/crop_calendars/ this test uses will be in the same CTSM directory as +# you used to start the tests. +# +# The script takes one positional input: +# suite_dir: The directory where your test suite was performed. E.g., $SCRATCH/tests_0123-142858de. +# +# Output will look something like this (✅ for success, 🔴 for failure): +# ctsm_pylib +# RXCROPMATURITYINST_Lm61.f10_f10_mg37.IHist check_rxboth_run ✅ +# RXCROPMATURITY_Lm61.f10_f10_mg37.IHist generate_gdds 🔴 +# RXCROPMATURITYSKIPGENINST_Ld1097.f10_f10_mg37.IHist check_rxboth_run ✅ +# RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHist check_rxboth_run 🔴 +# npl +# RXCROPMATURITYINST_Lm61.f10_f10_mg37.IHist check_rxboth_run ✅ +# RXCROPMATURITY_Lm61.f10_f10_mg37.IHist generate_gdds ✅ +# RXCROPMATURITYSKIPGENINST_Ld1097.f10_f10_mg37.IHist check_rxboth_run ✅ +# RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHist check_rxboth_run ✅ +# +# Log files for each will be saved as TEST_SHORTNAME.CONDA_ENV.log. + # Process input arguments suite_dir="$1" if [[ ! -d "${suite_dir}" ]]; then echo "You must provide suite_dir" >&2 exit 1 fi -shift -script="$1" -if [[ ! -f "${script}" ]]; then - echo "You must provide script path" >&2 - exit 1 -fi -shift -sdates_file="$1" -if [[ ! -f "${script}" ]]; then - echo "You must provide sdates_file" >&2 - exit 1 -fi +# Where do we save log files? log_dir="$PWD" cd "${suite_dir}" From c216a16d3151e0fb134445787743be655b828f7b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Sat, 25 Jan 2025 11:11:29 -0700 Subject: [PATCH 155/159] Update ccs_config_cesm1.0.16 to ccs_config_cesm1.0.20 --- .gitmodules | 2 +- ccs_config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4b378c4484..3b7de3fd60 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.16 +fxtag = ccs_config_cesm1.0.20 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 a712a92045..77fd32c6c4 160000 --- a/ccs_config +++ b/ccs_config @@ -1 +1 @@ -Subproject commit a712a920453dc0cb2831dce576e78c389b567f7e +Subproject commit 77fd32c6c4b57bb195239753f4c7838f05c1dfe8 From 673b24dd20d99f8986c10270fa76ed388bdbf7dc Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 27 Jan 2025 08:57:09 -0700 Subject: [PATCH 156/159] Update "What's New in CTSM 5.3" from Google Doc. --- WhatsNewInCTSM5.3.md | 150 ++++++++++++++++++++++++++++++------------- 1 file changed, 105 insertions(+), 45 deletions(-) diff --git a/WhatsNewInCTSM5.3.md b/WhatsNewInCTSM5.3.md index 1fabfd1192..00f68894fa 100644 --- a/WhatsNewInCTSM5.3.md +++ b/WhatsNewInCTSM5.3.md @@ -1,48 +1,108 @@ -# What's new in CTSM 5.3 (tag `ctsm5.3.0`) +# What's new in CTSM 5.3 (tag `ctsm5.3.021`) ## Purpose and description of changes since CTSM 5.2 (tag `ctsm5.2.005`) -- Adds CN Matrix method to speed up spinup for the BGC model. -- Updates surface datasets. -- Brings in new Leung 2023 dust emissions. -- Adds explicit air conditioning for the urban model. -- Updates crop calendars. -- Updates fire model with various improvements, including default parameterization against climate reanalysis from CRU-JRA instead of GSWP. -- FATES compsets can now be run with transient land use. - -These changes were needed ahead of the CESM3 capability/functionality "chill". For `clm6_0` physics these options are now turned on by default, in addition to Sturm snow and excess ice. - -## Changes to CTSM infrastructure - - `manage_externals` removed and replaced by `git-fleximod` - - Ability to handle CAM7 in `LND_TUNING_MODE` - -## Changes to CTSM answers - - Changes to defaults for `clm6_0` physics: - - Urban explicit A/C turned on - - Snow thermal conductivity method is now `Sturm_1997` - - New initial conditions file for f09 ("1-degree") 1850, with more in progress - - New crop calendars - - Dust emissions method is now `Leung_2023` - - Excess ice is turned on - - Updates to MEGAN for BVOCs - - Updates to BGC fire method - - Changes for all physics versions: - - Parameter files updated - - FATES parameter file updated - - Glacier region 1 is now undefined - - Update in FATES transient land use - - Pass active glacier (CISM) runoff directly to river model (MOSART) - - Add the option for using Matrix CN method for Carbon/Nitrogen BGC spinup - -## New surface datasets - -- With new surface datasets the following GLC fields have region "1" set to UNSET: glacier_region_behavior, glacier_region_melt_behavior, glacier_region_ice_runoff_behavior -- Updates to allow creating transient landuse timeseries files going back to 1700. -- Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should. -- Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid. -- Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version. -- Remove the `--hires_pft` option from `mksurfdata_esmf` as we don't have the datasets for it. -- Remove `VIC` fields from surface datasets. -- Updates to input datasets in PFT/LAI/soil-color raw datasets (now from the TRENDY2024 timeseries that ends in 2023), as well as two fire datasets (crop fire peak month, peatland fraction), and the glacier behavior dataset. +### New features + +* `manage_externals` replaced by [`git-fleximod`](https://github.com/ESMCI/git-fleximod/blob/main/README.md) ([PR \#2559](https://github.com/ESCOMP/CTSM/pull/2559)) +* No longer runs the 0th time step in first segment of startup and hybrid runs. (Branch and continue runs never had this 0th time step.) ([PR \#2084](https://github.com/ESCOMP/CTSM/pull/2084)) +* CN Matrix method to speed up spinup for the BGC model. ([PR \#640](https://github.com/ESCOMP/CTSM/pull/640); [Liao et al. 2023](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023MS003625)). +* New `Leung_2023` dust emissions ([PR \#1897](https://github.com/ESCOMP/CTSM/pull/1897); [Leung et al 2023](https://doi.org/10.5194/acp-23-6487-2023), [Leung et al. 2024](https://doi.org/10.5194/acp-24-2287-2024)) +* Explicit air conditioning for the urban model ([PR \#2275](https://github.com/ESCOMP/CTSM/pull/2275); [Li et al. 2024](https://agupubs.onlinelibrary.wiley.com/share/NY4AYPREB8Y8BUDP7DXD?target=10.1029/2023MS004107)) +* FATES compsets can now be run with transient land use; off by default ([PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507)) +* Ability to handle CAM7 in `LND_TUNING_MODE` ([PR \#2632](https://github.com/ESCOMP/CTSM/pull/2632)) + +### Answer changes + +Changes to defaults for `clm6_0` physics: + +* Urban explicit A/C turned on (links above) +* Snow thermal conductivity method is now `Sturm1997` ([PR \#2348](https://github.com/ESCOMP/CTSM/pull/2348)`;` see also [discussion \#1960](https://github.com/ESCOMP/CTSM/discussions/1960)) +* New initial conditions files for f09 ("1-degree" 1850, 2000), f19 (“2-degree” 1850), and ne30 (1850, 1979, 2000\) resolutions +* New crop calendars ([PR \#2664](https://github.com/ESCOMP/CTSM/pull/2664); informed by [Rabin et al., 2023](https://gmd.copernicus.org/articles/16/7253/2023/gmd-16-7253-2023.html)) +* Dust emissions method is now `Leung_2023` (links above) +* Excess ice is turned on ([PR \#1787](https://github.com/ESCOMP/CTSM/pull/1787)) +* Updates to MEGAN for BVOCs ([PR \#2588](https://github.com/ESCOMP/CTSM/pull/2588)) +* New BGC fire method `li2024crujra` ([PR \#2684](https://github.com/ESCOMP/CTSM/pull/2684), [PR \#2711](https://github.com/ESCOMP/CTSM/pull/2711), [PR \#2715](https://github.com/ESCOMP/CTSM/issues/2715)): Avoid crop fires during growing season; allow lightning ignitions in tropical closed forests; add effect of landscape fragmentation on ignitions and duration; recalibrate against GFED5 burned area and with CRU-JRA climate. + +Changes for all physics versions: + +* Parameters updated for CRU-JRA forcing: PPE-based modifications were made to the parameters `leafcn`, `slatop`, `froot_leaf`, `medlynslope`, and `kmax`. Lowers LAI and biomass in boreal and tropical forests, without reducing latent heat in the tropics. Affected PFTs: NET temperate, NET boreal, BET tropical, BDS boreal, C3 arctic grass. ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) +* FATES parameter file updated (see section below). +* Pass active glacier (CISM) runoff directly to river model (MOSART) ([MOSART PR \#94](https://github.com/ESCOMP/MOSART/pull/94)) +* New surface datasets and landuse timeseries files (see section below). +* CNMatrix is new default spinup method (links above). + +### Heads up + +* Small glacier changes mean that you can’t use a 5.3 surface dataset with pre-5.3 code and vice versa anymore. (Merged with [PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) +* Updates the definition of history variable “time” from *end* of `time_bounds` to *middle* of `time_bounds`. ([PR \#2838](https://github.com/ESCOMP/CTSM/pull/2838); see section below) +* Standardizes history variable attributes and a history dimension name. ([PR \#2052](https://github.com/ESCOMP/CTSM/pull/2052); see section below) + +## + +## Additional detail + +### Changes related to time and history files + +(Note that the same information in this section applies to MOSART and RTM.) + +Startup and hybrid runs no longer run the 0th time step, consistent with the same change in CAM. (Branch and continue runs never had this 0th time step.) This means you will not get an extraneous initial history file anymore. In some circumstances this may also affect the names of history files. + +In most cases, the history “time” variable is now defined as the middle of a history file’s `time_bounds` instead of the end, for consistency with the same change in CAM. The exception is if you specify `hist_avgflag_pertape = 'I'` for that file, in which case it will be treated as an “instantaneous” file. Instantaneous history files (a) have their `time` coordinate set to the end of the last timestep (as did all history files before this tag) and (b) do not include `time_bounds`. + +The history dimension name `hist_interval` (of output variable `time_bounds`) is standardized to be `nbnd`. History variables `time_bounds`, `mcdate`, `mcsec`, `mdcur`, and `mscur` are standardized to include the calendar attribute. + +### New surface datasets and landuse timeseries files ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) + +* Transient landuse timeseries files going back to 1700 now possible (and made for f09). +* Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should ([issue \#2744](https://github.com/ESCOMP/CTSM/issues/2744)) +* Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid ([PR \#2716](https://github.com/ESCOMP/CTSM/pull/2716), [issue \#2720](https://github.com/ESCOMP/CTSM/issues/2720)) +* Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version ([issue \#2723](https://github.com/ESCOMP/CTSM/issues/2723)) +* Remove outdated hydrology `VIC` (Variable Infiltration Capacity Hydrology model) fields from surface datasets. +* Updates to input datasets: + * PFT/LAI/soil-color raw datasets; now from the TRENDY2024 timeseries that ends in 2023\. (Issues [\#2570](https://github.com/ESCOMP/CTSM/issues/2570) and [\#2452](https://github.com/ESCOMP/CTSM/issues/2452)) + * Two fire datasets: crop fire peak month and peatland fraction. (Issue [\#2618](https://github.com/ESCOMP/CTSM/issues/2618)) + * Glacier behavior dataset (related to how non-Greenland glaciers are handled). (Issue [\#423](https://github.com/ESCOMP/CTSM/issues/423)) + +### Changes to FATES parameter file + +* [PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507) ([ctsm5.2.013](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.2.013)) / [FATES PR \#1116](https://github.com/NGEET/fates/pull/1116) ([sci.1.77.1\_api.36.0.0](https://github.com/NGEET/fates/releases/tag/sci.1.77.0_api.36.0.0)) + * Adds new parameters for new land use harvest mode and land use by PFT capabilities +* [PR \#2700](https://github.com/ESCOMP/CTSM/pull/2700) ([ctsm5.3.003](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.3.003)) / [FATES PR \#1255](https://github.com/NGEET/fates/pull/1255) ([sci.1.78.3\_api.36.1.0](https://github.com/NGEET/fates/releases/tag/sci.1.78.3_api.36.1.0)) + * Adds two arctic shrub PFTs, increasing the number of default PFTs to 14 and update arctic grass parameters ([FATES PR\#1236](https://github.com/NGEET/fates/pull/1236)) + * Splits `fates_turnover_leaf` parameter into canopy and understory specific turnover rates and provides new values for both ([FATES PR\#1136](https://github.com/NGEET/fates/pull/1136)) + * Updates grass allometry parameters ([FATES PR\#1206](https://github.com/NGEET/fates/pull/1206)) + * Changes the prescribe nutrient uptake defaults from 1 to 0 for all PFTs (only relevant to ELM-FATES) + +### Changes to rpointer files + +The rpointer files are simple text files that CESM uses to keep track of how far simulations have progressed, pointing to the filename of the latest restart file for that component. There is one such file for each component, so for CTSM `I` cases that's `lnd`, `cpl`, and `atm` (and `rof` if it's active). Normally, when the user is just extending the length of simulations, there’s no need to worry about these files. + +However, if there was a problem when a simulation shut down, it's possible that different components will have mismatched restarts and rpointer files. In the past, this meant figuring out what restart file should be pointed to in each component rpointer file and correcting it by hand in an editor. There was only the final set of rpointer files that was kept for a case. + +Now, with this update, the `lnd`, `cpl`, and `atm` rpointer files have the simulation date in the filenames, so it's easy to spot if the restarts are mismatched for one of the components. Also, since there are matching rpointer files for each time restarts are created, it's now easier to (a) make sure restarts and rpointer files are all correctly matched and (b) for a user to take a set of restarts and matching rpointer files to start up from for any part of an existing simulation. This means you don't have to hand-edit the rpointer files, making sure you don't make a mistake when you do. + +Old rpointer filenames: + +* `rpointer.atm` +* `rpointer.cpl` +* `rpointer.lnd` + +New names: + +* `rpointer.atm.YYYY-MM-DD-SSSSS` +* `rpointer.cpl.YYYY-MM-DD-SSSSS` +* `rpointer.lnd.YYYY-MM-DD-SSSSS` + +Where `YYYY-MM-DD-SSSSS` is the year, month, day, and seconds into the day for the simulation timestamp. For example, `rpointer.lnd.2000-01-01-00000` for a rpointer file for starting at midnight (beginning of the day) on January 1st, 2000\. + +Note that this is backwards-compatible, so for all the components you can use either the new or old format for the rpointer filenames. Thus, if you are restarting from an existing case before `ctsm5.3.016`, you CAN use the rpointer filenames that don't have the timestamps in the name. + +## Simulations supporting this release + +f19 Clm60Bgc 16pft: [https://github.com/NCAR/LMWG\_dev/issues/70](https://github.com/NCAR/LMWG_dev/issues/70) +f09 with Clm60BgcCrop: [https://github.com/NCAR/LMWG\_dev/issues/69](https://github.com/NCAR/LMWG_dev/issues/69) +ne30 with Clm60BgcCrop: [https://github.com/NCAR/LMWG\_dev/issues/68](https://github.com/NCAR/LMWG_dev/issues/68) + +Note: Dust emissions in CTSM 5.3 will be different from the above simulations because of a tuning update that came in after those. \ No newline at end of file From ab8e1cdd3b70cfb6253682c408e8176775b58704 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 27 Jan 2025 09:06:13 -0700 Subject: [PATCH 157/159] Minor changes to "What's new in CTSM 5.3." --- WhatsNewInCTSM5.3.md | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/WhatsNewInCTSM5.3.md b/WhatsNewInCTSM5.3.md index 00f68894fa..4bd79661cd 100644 --- a/WhatsNewInCTSM5.3.md +++ b/WhatsNewInCTSM5.3.md @@ -4,26 +4,26 @@ ### New features -* `manage_externals` replaced by [`git-fleximod`](https://github.com/ESMCI/git-fleximod/blob/main/README.md) ([PR \#2559](https://github.com/ESCOMP/CTSM/pull/2559)) -* No longer runs the 0th time step in first segment of startup and hybrid runs. (Branch and continue runs never had this 0th time step.) ([PR \#2084](https://github.com/ESCOMP/CTSM/pull/2084)) -* CN Matrix method to speed up spinup for the BGC model. ([PR \#640](https://github.com/ESCOMP/CTSM/pull/640); [Liao et al. 2023](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023MS003625)). -* New `Leung_2023` dust emissions ([PR \#1897](https://github.com/ESCOMP/CTSM/pull/1897); [Leung et al 2023](https://doi.org/10.5194/acp-23-6487-2023), [Leung et al. 2024](https://doi.org/10.5194/acp-24-2287-2024)) -* Explicit air conditioning for the urban model ([PR \#2275](https://github.com/ESCOMP/CTSM/pull/2275); [Li et al. 2024](https://agupubs.onlinelibrary.wiley.com/share/NY4AYPREB8Y8BUDP7DXD?target=10.1029/2023MS004107)) -* FATES compsets can now be run with transient land use; off by default ([PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507)) -* Ability to handle CAM7 in `LND_TUNING_MODE` ([PR \#2632](https://github.com/ESCOMP/CTSM/pull/2632)) +* `manage_externals` replaced by [`git-fleximod`](https://github.com/ESMCI/git-fleximod/blob/main/README.md). ([PR \#2559](https://github.com/ESCOMP/CTSM/pull/2559)) +* No longer runs the 0th time step in first segment of startup and hybrid runs; branch and continue runs never had this 0th time step. ([PR \#2084](https://github.com/ESCOMP/CTSM/pull/2084)) +* New CN Matrix method speeds up spinup for the BGC model. ([PR \#640](https://github.com/ESCOMP/CTSM/pull/640); [Liao et al. 2023](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023MS003625)). +* New `Leung_2023` dust emissions. ([PR \#1897](https://github.com/ESCOMP/CTSM/pull/1897); [Leung et al 2023](https://doi.org/10.5194/acp-23-6487-2023), [Leung et al. 2024](https://doi.org/10.5194/acp-24-2287-2024)) +* Explicit air conditioning for the urban model. ([PR \#2275](https://github.com/ESCOMP/CTSM/pull/2275); [Li et al. 2024](https://agupubs.onlinelibrary.wiley.com/share/NY4AYPREB8Y8BUDP7DXD?target=10.1029/2023MS004107)) +* FATES compsets can now be run with transient land use; off by default. ([PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507)) +* Ability to handle CAM7 in `LND_TUNING_MODE`. ([PR \#2632](https://github.com/ESCOMP/CTSM/pull/2632)) ### Answer changes Changes to defaults for `clm6_0` physics: -* Urban explicit A/C turned on (links above) -* Snow thermal conductivity method is now `Sturm1997` ([PR \#2348](https://github.com/ESCOMP/CTSM/pull/2348)`;` see also [discussion \#1960](https://github.com/ESCOMP/CTSM/discussions/1960)) -* New initial conditions files for f09 ("1-degree" 1850, 2000), f19 (“2-degree” 1850), and ne30 (1850, 1979, 2000\) resolutions -* New crop calendars ([PR \#2664](https://github.com/ESCOMP/CTSM/pull/2664); informed by [Rabin et al., 2023](https://gmd.copernicus.org/articles/16/7253/2023/gmd-16-7253-2023.html)) -* Dust emissions method is now `Leung_2023` (links above) -* Excess ice is turned on ([PR \#1787](https://github.com/ESCOMP/CTSM/pull/1787)) -* Updates to MEGAN for BVOCs ([PR \#2588](https://github.com/ESCOMP/CTSM/pull/2588)) -* New BGC fire method `li2024crujra` ([PR \#2684](https://github.com/ESCOMP/CTSM/pull/2684), [PR \#2711](https://github.com/ESCOMP/CTSM/pull/2711), [PR \#2715](https://github.com/ESCOMP/CTSM/issues/2715)): Avoid crop fires during growing season; allow lightning ignitions in tropical closed forests; add effect of landscape fragmentation on ignitions and duration; recalibrate against GFED5 burned area and with CRU-JRA climate. +* Urban explicit A/C turned on (links above). +* Snow thermal conductivity method is now `Sturm1997`. ([PR \#2348](https://github.com/ESCOMP/CTSM/pull/2348); see also [discussion \#1960](https://github.com/ESCOMP/CTSM/discussions/1960)) +* New initial conditions files for f09 ("1-degree" 1850, 2000), f19 (“2-degree” 1850), and ne30 (1850, 1979, 2000) resolutions. +* New crop calendars. ([PR \#2664](https://github.com/ESCOMP/CTSM/pull/2664); informed by [Rabin et al., 2023](https://gmd.copernicus.org/articles/16/7253/2023/gmd-16-7253-2023.html)) +* Dust emissions method is now `Leung_2023` (links above). +* Excess ice is turned on. ([PR \#1787](https://github.com/ESCOMP/CTSM/pull/1787)) +* Updates to MEGAN for BVOCs. ([PR \#2588](https://github.com/ESCOMP/CTSM/pull/2588)) +* New BGC fire method `li2024crujra`: Avoid crop fires during growing season; allow lightning ignitions in tropical closed forests; add effect of landscape fragmentation on ignitions and duration; recalibrate against GFED5 burned area and with CRU-JRA climate. ([PR \#2684](https://github.com/ESCOMP/CTSM/pull/2684), [PR \#2711](https://github.com/ESCOMP/CTSM/pull/2711), [PR \#2715](https://github.com/ESCOMP/CTSM/issues/2715)) Changes for all physics versions: @@ -49,19 +49,19 @@ Changes for all physics versions: Startup and hybrid runs no longer run the 0th time step, consistent with the same change in CAM. (Branch and continue runs never had this 0th time step.) This means you will not get an extraneous initial history file anymore. In some circumstances this may also affect the names of history files. -In most cases, the history “time” variable is now defined as the middle of a history file’s `time_bounds` instead of the end, for consistency with the same change in CAM. The exception is if you specify `hist_avgflag_pertape = 'I'` for that file, in which case it will be treated as an “instantaneous” file. Instantaneous history files (a) have their `time` coordinate set to the end of the last timestep (as did all history files before this tag) and (b) do not include `time_bounds`. +In most cases, the history `time` variable is now defined as the middle of a history file’s `time_bounds` instead of the end, for consistency with the same change in CAM. The exception is if you specify `hist_avgflag_pertape = 'I'` for that file, in which case it will be treated as an “instantaneous” file. Instantaneous history files (a) have their `time` coordinate set to the end of the last timestep (as did all history files before this tag) and (b) do not include `time_bounds`. The history dimension name `hist_interval` (of output variable `time_bounds`) is standardized to be `nbnd`. History variables `time_bounds`, `mcdate`, `mcsec`, `mdcur`, and `mscur` are standardized to include the calendar attribute. ### New surface datasets and landuse timeseries files ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) * Transient landuse timeseries files going back to 1700 now possible (and made for f09). -* Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should ([issue \#2744](https://github.com/ESCOMP/CTSM/issues/2744)) -* Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid ([PR \#2716](https://github.com/ESCOMP/CTSM/pull/2716), [issue \#2720](https://github.com/ESCOMP/CTSM/issues/2720)) -* Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version ([issue \#2723](https://github.com/ESCOMP/CTSM/issues/2723)) +* Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should. ([Issue \#2744](https://github.com/ESCOMP/CTSM/issues/2744)) +* Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid. ([PR \#2716](https://github.com/ESCOMP/CTSM/pull/2716), [issue \#2720](https://github.com/ESCOMP/CTSM/issues/2720)) +* Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version. ([Issue \#2723](https://github.com/ESCOMP/CTSM/issues/2723)) * Remove outdated hydrology `VIC` (Variable Infiltration Capacity Hydrology model) fields from surface datasets. * Updates to input datasets: - * PFT/LAI/soil-color raw datasets; now from the TRENDY2024 timeseries that ends in 2023\. (Issues [\#2570](https://github.com/ESCOMP/CTSM/issues/2570) and [\#2452](https://github.com/ESCOMP/CTSM/issues/2452)) + * PFT/LAI/soil-color raw datasets; now from the TRENDY2024 timeseries that ends in 2023. (Issues [\#2570](https://github.com/ESCOMP/CTSM/issues/2570) and [\#2452](https://github.com/ESCOMP/CTSM/issues/2452)) * Two fire datasets: crop fire peak month and peatland fraction. (Issue [\#2618](https://github.com/ESCOMP/CTSM/issues/2618)) * Glacier behavior dataset (related to how non-Greenland glaciers are handled). (Issue [\#423](https://github.com/ESCOMP/CTSM/issues/423)) @@ -101,8 +101,8 @@ Note that this is backwards-compatible, so for all the components you can use ei ## Simulations supporting this release -f19 Clm60Bgc 16pft: [https://github.com/NCAR/LMWG\_dev/issues/70](https://github.com/NCAR/LMWG_dev/issues/70) -f09 with Clm60BgcCrop: [https://github.com/NCAR/LMWG\_dev/issues/69](https://github.com/NCAR/LMWG_dev/issues/69) -ne30 with Clm60BgcCrop: [https://github.com/NCAR/LMWG\_dev/issues/68](https://github.com/NCAR/LMWG_dev/issues/68) +- f19 `Clm60Bgc` 16pft: [https://github.com/NCAR/LMWG\_dev/issues/70](https://github.com/NCAR/LMWG_dev/issues/70) +- f09 with `Clm60BgcCrop`: [https://github.com/NCAR/LMWG\_dev/issues/69](https://github.com/NCAR/LMWG_dev/issues/69) +- ne30 with `Clm60BgcCrop`: [https://github.com/NCAR/LMWG\_dev/issues/68](https://github.com/NCAR/LMWG_dev/issues/68) Note: Dust emissions in CTSM 5.3 will be different from the above simulations because of a tuning update that came in after those. \ No newline at end of file From b18f191059da97a312e8b1cfb993fe958492d797 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 27 Jan 2025 09:10:14 -0700 Subject: [PATCH 158/159] Trim trailing whitespace in "What's new in CTSM 5.3." --- WhatsNewInCTSM5.3.md | 80 ++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/WhatsNewInCTSM5.3.md b/WhatsNewInCTSM5.3.md index 4bd79661cd..4717deac30 100644 --- a/WhatsNewInCTSM5.3.md +++ b/WhatsNewInCTSM5.3.md @@ -4,42 +4,42 @@ ### New features -* `manage_externals` replaced by [`git-fleximod`](https://github.com/ESMCI/git-fleximod/blob/main/README.md). ([PR \#2559](https://github.com/ESCOMP/CTSM/pull/2559)) -* No longer runs the 0th time step in first segment of startup and hybrid runs; branch and continue runs never had this 0th time step. ([PR \#2084](https://github.com/ESCOMP/CTSM/pull/2084)) -* New CN Matrix method speeds up spinup for the BGC model. ([PR \#640](https://github.com/ESCOMP/CTSM/pull/640); [Liao et al. 2023](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023MS003625)). -* New `Leung_2023` dust emissions. ([PR \#1897](https://github.com/ESCOMP/CTSM/pull/1897); [Leung et al 2023](https://doi.org/10.5194/acp-23-6487-2023), [Leung et al. 2024](https://doi.org/10.5194/acp-24-2287-2024)) -* Explicit air conditioning for the urban model. ([PR \#2275](https://github.com/ESCOMP/CTSM/pull/2275); [Li et al. 2024](https://agupubs.onlinelibrary.wiley.com/share/NY4AYPREB8Y8BUDP7DXD?target=10.1029/2023MS004107)) -* FATES compsets can now be run with transient land use; off by default. ([PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507)) +* `manage_externals` replaced by [`git-fleximod`](https://github.com/ESMCI/git-fleximod/blob/main/README.md). ([PR \#2559](https://github.com/ESCOMP/CTSM/pull/2559)) +* No longer runs the 0th time step in first segment of startup and hybrid runs; branch and continue runs never had this 0th time step. ([PR \#2084](https://github.com/ESCOMP/CTSM/pull/2084)) +* New CN Matrix method speeds up spinup for the BGC model. ([PR \#640](https://github.com/ESCOMP/CTSM/pull/640); [Liao et al. 2023](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2023MS003625)). +* New `Leung_2023` dust emissions. ([PR \#1897](https://github.com/ESCOMP/CTSM/pull/1897); [Leung et al 2023](https://doi.org/10.5194/acp-23-6487-2023), [Leung et al. 2024](https://doi.org/10.5194/acp-24-2287-2024)) +* Explicit air conditioning for the urban model. ([PR \#2275](https://github.com/ESCOMP/CTSM/pull/2275); [Li et al. 2024](https://agupubs.onlinelibrary.wiley.com/share/NY4AYPREB8Y8BUDP7DXD?target=10.1029/2023MS004107)) +* FATES compsets can now be run with transient land use; off by default. ([PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507)) * Ability to handle CAM7 in `LND_TUNING_MODE`. ([PR \#2632](https://github.com/ESCOMP/CTSM/pull/2632)) ### Answer changes Changes to defaults for `clm6_0` physics: -* Urban explicit A/C turned on (links above). -* Snow thermal conductivity method is now `Sturm1997`. ([PR \#2348](https://github.com/ESCOMP/CTSM/pull/2348); see also [discussion \#1960](https://github.com/ESCOMP/CTSM/discussions/1960)) -* New initial conditions files for f09 ("1-degree" 1850, 2000), f19 (“2-degree” 1850), and ne30 (1850, 1979, 2000) resolutions. -* New crop calendars. ([PR \#2664](https://github.com/ESCOMP/CTSM/pull/2664); informed by [Rabin et al., 2023](https://gmd.copernicus.org/articles/16/7253/2023/gmd-16-7253-2023.html)) -* Dust emissions method is now `Leung_2023` (links above). -* Excess ice is turned on. ([PR \#1787](https://github.com/ESCOMP/CTSM/pull/1787)) -* Updates to MEGAN for BVOCs. ([PR \#2588](https://github.com/ESCOMP/CTSM/pull/2588)) +* Urban explicit A/C turned on (links above). +* Snow thermal conductivity method is now `Sturm1997`. ([PR \#2348](https://github.com/ESCOMP/CTSM/pull/2348); see also [discussion \#1960](https://github.com/ESCOMP/CTSM/discussions/1960)) +* New initial conditions files for f09 ("1-degree" 1850, 2000), f19 (“2-degree” 1850), and ne30 (1850, 1979, 2000) resolutions. +* New crop calendars. ([PR \#2664](https://github.com/ESCOMP/CTSM/pull/2664); informed by [Rabin et al., 2023](https://gmd.copernicus.org/articles/16/7253/2023/gmd-16-7253-2023.html)) +* Dust emissions method is now `Leung_2023` (links above). +* Excess ice is turned on. ([PR \#1787](https://github.com/ESCOMP/CTSM/pull/1787)) +* Updates to MEGAN for BVOCs. ([PR \#2588](https://github.com/ESCOMP/CTSM/pull/2588)) * New BGC fire method `li2024crujra`: Avoid crop fires during growing season; allow lightning ignitions in tropical closed forests; add effect of landscape fragmentation on ignitions and duration; recalibrate against GFED5 burned area and with CRU-JRA climate. ([PR \#2684](https://github.com/ESCOMP/CTSM/pull/2684), [PR \#2711](https://github.com/ESCOMP/CTSM/pull/2711), [PR \#2715](https://github.com/ESCOMP/CTSM/issues/2715)) Changes for all physics versions: -* Parameters updated for CRU-JRA forcing: PPE-based modifications were made to the parameters `leafcn`, `slatop`, `froot_leaf`, `medlynslope`, and `kmax`. Lowers LAI and biomass in boreal and tropical forests, without reducing latent heat in the tropics. Affected PFTs: NET temperate, NET boreal, BET tropical, BDS boreal, C3 arctic grass. ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) -* FATES parameter file updated (see section below). -* Pass active glacier (CISM) runoff directly to river model (MOSART) ([MOSART PR \#94](https://github.com/ESCOMP/MOSART/pull/94)) -* New surface datasets and landuse timeseries files (see section below). +* Parameters updated for CRU-JRA forcing: PPE-based modifications were made to the parameters `leafcn`, `slatop`, `froot_leaf`, `medlynslope`, and `kmax`. Lowers LAI and biomass in boreal and tropical forests, without reducing latent heat in the tropics. Affected PFTs: NET temperate, NET boreal, BET tropical, BDS boreal, C3 arctic grass. ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) +* FATES parameter file updated (see section below). +* Pass active glacier (CISM) runoff directly to river model (MOSART) ([MOSART PR \#94](https://github.com/ESCOMP/MOSART/pull/94)) +* New surface datasets and landuse timeseries files (see section below). * CNMatrix is new default spinup method (links above). ### Heads up -* Small glacier changes mean that you can’t use a 5.3 surface dataset with pre-5.3 code and vice versa anymore. (Merged with [PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) -* Updates the definition of history variable “time” from *end* of `time_bounds` to *middle* of `time_bounds`. ([PR \#2838](https://github.com/ESCOMP/CTSM/pull/2838); see section below) +* Small glacier changes mean that you can’t use a 5.3 surface dataset with pre-5.3 code and vice versa anymore. (Merged with [PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) +* Updates the definition of history variable “time” from *end* of `time_bounds` to *middle* of `time_bounds`. ([PR \#2838](https://github.com/ESCOMP/CTSM/pull/2838); see section below) * Standardizes history variable attributes and a history dimension name. ([PR \#2052](https://github.com/ESCOMP/CTSM/pull/2052); see section below) -## +## ## Additional detail @@ -55,24 +55,24 @@ The history dimension name `hist_interval` (of output variable `time_bounds`) is ### New surface datasets and landuse timeseries files ([PR \#2500](https://github.com/ESCOMP/CTSM/pull/2500)) -* Transient landuse timeseries files going back to 1700 now possible (and made for f09). -* Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should. ([Issue \#2744](https://github.com/ESCOMP/CTSM/issues/2744)) -* Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid. ([PR \#2716](https://github.com/ESCOMP/CTSM/pull/2716), [issue \#2720](https://github.com/ESCOMP/CTSM/issues/2720)) -* Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version. ([Issue \#2723](https://github.com/ESCOMP/CTSM/issues/2723)) -* Remove outdated hydrology `VIC` (Variable Infiltration Capacity Hydrology model) fields from surface datasets. -* Updates to input datasets: - * PFT/LAI/soil-color raw datasets; now from the TRENDY2024 timeseries that ends in 2023. (Issues [\#2570](https://github.com/ESCOMP/CTSM/issues/2570) and [\#2452](https://github.com/ESCOMP/CTSM/issues/2452)) - * Two fire datasets: crop fire peak month and peatland fraction. (Issue [\#2618](https://github.com/ESCOMP/CTSM/issues/2618)) +* Transient landuse timeseries files going back to 1700 now possible (and made for f09). +* Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should. ([Issue \#2744](https://github.com/ESCOMP/CTSM/issues/2744)) +* Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid. ([PR \#2716](https://github.com/ESCOMP/CTSM/pull/2716), [issue \#2720](https://github.com/ESCOMP/CTSM/issues/2720)) +* Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version. ([Issue \#2723](https://github.com/ESCOMP/CTSM/issues/2723)) +* Remove outdated hydrology `VIC` (Variable Infiltration Capacity Hydrology model) fields from surface datasets. +* Updates to input datasets: + * PFT/LAI/soil-color raw datasets; now from the TRENDY2024 timeseries that ends in 2023. (Issues [\#2570](https://github.com/ESCOMP/CTSM/issues/2570) and [\#2452](https://github.com/ESCOMP/CTSM/issues/2452)) + * Two fire datasets: crop fire peak month and peatland fraction. (Issue [\#2618](https://github.com/ESCOMP/CTSM/issues/2618)) * Glacier behavior dataset (related to how non-Greenland glaciers are handled). (Issue [\#423](https://github.com/ESCOMP/CTSM/issues/423)) ### Changes to FATES parameter file -* [PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507) ([ctsm5.2.013](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.2.013)) / [FATES PR \#1116](https://github.com/NGEET/fates/pull/1116) ([sci.1.77.1\_api.36.0.0](https://github.com/NGEET/fates/releases/tag/sci.1.77.0_api.36.0.0)) - * Adds new parameters for new land use harvest mode and land use by PFT capabilities -* [PR \#2700](https://github.com/ESCOMP/CTSM/pull/2700) ([ctsm5.3.003](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.3.003)) / [FATES PR \#1255](https://github.com/NGEET/fates/pull/1255) ([sci.1.78.3\_api.36.1.0](https://github.com/NGEET/fates/releases/tag/sci.1.78.3_api.36.1.0)) - * Adds two arctic shrub PFTs, increasing the number of default PFTs to 14 and update arctic grass parameters ([FATES PR\#1236](https://github.com/NGEET/fates/pull/1236)) - * Splits `fates_turnover_leaf` parameter into canopy and understory specific turnover rates and provides new values for both ([FATES PR\#1136](https://github.com/NGEET/fates/pull/1136)) - * Updates grass allometry parameters ([FATES PR\#1206](https://github.com/NGEET/fates/pull/1206)) +* [PR \#2507](https://github.com/ESCOMP/CTSM/pull/2507) ([ctsm5.2.013](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.2.013)) / [FATES PR \#1116](https://github.com/NGEET/fates/pull/1116) ([sci.1.77.1\_api.36.0.0](https://github.com/NGEET/fates/releases/tag/sci.1.77.0_api.36.0.0)) + * Adds new parameters for new land use harvest mode and land use by PFT capabilities +* [PR \#2700](https://github.com/ESCOMP/CTSM/pull/2700) ([ctsm5.3.003](https://github.com/ESCOMP/CTSM/releases/tag/ctsm5.3.003)) / [FATES PR \#1255](https://github.com/NGEET/fates/pull/1255) ([sci.1.78.3\_api.36.1.0](https://github.com/NGEET/fates/releases/tag/sci.1.78.3_api.36.1.0)) + * Adds two arctic shrub PFTs, increasing the number of default PFTs to 14 and update arctic grass parameters ([FATES PR\#1236](https://github.com/NGEET/fates/pull/1236)) + * Splits `fates_turnover_leaf` parameter into canopy and understory specific turnover rates and provides new values for both ([FATES PR\#1136](https://github.com/NGEET/fates/pull/1136)) + * Updates grass allometry parameters ([FATES PR\#1206](https://github.com/NGEET/fates/pull/1206)) * Changes the prescribe nutrient uptake defaults from 1 to 0 for all PFTs (only relevant to ELM-FATES) ### Changes to rpointer files @@ -85,14 +85,14 @@ Now, with this update, the `lnd`, `cpl`, and `atm` rpointer files have the simul Old rpointer filenames: -* `rpointer.atm` -* `rpointer.cpl` +* `rpointer.atm` +* `rpointer.cpl` * `rpointer.lnd` New names: -* `rpointer.atm.YYYY-MM-DD-SSSSS` -* `rpointer.cpl.YYYY-MM-DD-SSSSS` +* `rpointer.atm.YYYY-MM-DD-SSSSS` +* `rpointer.cpl.YYYY-MM-DD-SSSSS` * `rpointer.lnd.YYYY-MM-DD-SSSSS` Where `YYYY-MM-DD-SSSSS` is the year, month, day, and seconds into the day for the simulation timestamp. For example, `rpointer.lnd.2000-01-01-00000` for a rpointer file for starting at midnight (beginning of the day) on January 1st, 2000\. @@ -101,8 +101,8 @@ Note that this is backwards-compatible, so for all the components you can use ei ## Simulations supporting this release -- f19 `Clm60Bgc` 16pft: [https://github.com/NCAR/LMWG\_dev/issues/70](https://github.com/NCAR/LMWG_dev/issues/70) -- f09 with `Clm60BgcCrop`: [https://github.com/NCAR/LMWG\_dev/issues/69](https://github.com/NCAR/LMWG_dev/issues/69) +- f19 `Clm60Bgc` 16pft: [https://github.com/NCAR/LMWG\_dev/issues/70](https://github.com/NCAR/LMWG_dev/issues/70) +- f09 with `Clm60BgcCrop`: [https://github.com/NCAR/LMWG\_dev/issues/69](https://github.com/NCAR/LMWG_dev/issues/69) - ne30 with `Clm60BgcCrop`: [https://github.com/NCAR/LMWG\_dev/issues/68](https://github.com/NCAR/LMWG_dev/issues/68) Note: Dust emissions in CTSM 5.3 will be different from the above simulations because of a tuning update that came in after those. \ No newline at end of file From e67249fc15529438d373f64d2943f1b39fcf9739 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 29 Jan 2025 17:05:31 -0700 Subject: [PATCH 159/159] Updated ChangeLog/Sum --- doc/ChangeLog | 41 ++++++++++++++++++++++++----------------- doc/ChangeSum | 2 +- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index fc5953a059..0dc446448b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,8 +1,8 @@ =============================================================== Tag name: ctsm5.3.021 Originator(s): samrabin (Sam Rabin, UCAR/TSS) -Date: Fri 17 Jan 2025 12:42:24 PM MST -One-line Summary: Standardize time metadata +Date: Wed 29 Jan 2025 04:21:40 PM MST +One-line Summary: Standardize time metadata (release tag for ctsm5.3) Purpose and description of changes ---------------------------------- @@ -38,6 +38,11 @@ List of CTSM issues fixed (include CTSM Issue # and description) [one per line]: Resolves https://github.com/ESCOMP/MOSART/pull/66 Resolves https://github.com/ESCOMP/RTM/pull/35 +Notes of particular relevance for users +--------------------------------------- +Changes to documentation: + This is the release tag for ctsm5.3, so it includes the file WhatsNewInCTSM5.3.md. + Notes of particular relevance for developers: --------------------------------------------- Caveats for developers (e.g., code that is duplicated that requires double maintenance): @@ -50,27 +55,30 @@ Testing summary: build-namelist tests (if CLMBuildNamelist.pm has changed): - derecho - + derecho - PASS python testing (if python code has changed; see instructions in python/README.md; document testing done): - derecho - + derecho - PASS regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): - derecho ----- - izumi ------- + derecho ----- OK + izumi ------- OK - fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--) - derecho ----- - izumi ------- + fates tests + derecho ----- OK against baseline fates-sci.1.80.4_api.37.0.0-tmp-241219.n02.ctsm5.3.016 + izumi ------- OK against baseline fates-sci.1.80.4_api.37.0.0-ctsm5.3.014 - any other testing (give details below): + ctsm_sci against baseline ctsm_sci-ctsm5.3.016 + derecho ---- OK - ctsm_sci - derecho ---- + rtm tests against baseline rtm1_0_86-ctsm5.3.019 + derecho ----- PASS -If the tag used for baseline comparisons was NOT the previous tag, note that here: + mosart tests against baseline mosart1.1.08-ctsm5.3.019 + derecho ----- OK + izumi ------- PASS Answer changes @@ -82,8 +90,9 @@ Changes answers relative to baseline: No Other details ------------- List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): - mosart1.1.08 - rtm1_0_85 + mosart1.1.07 to mosart1.1.08 + ccs_config_cesm1.0.16 to ccs_config_cesm1.0.20 to gain access to f09_t232 grid + rtm was already updated to rtm1_0_86 in an earlier tag Pull Requests that document the changes (include PR ids): https://github.com/ESCOMP/ctsm/pull/2052 @@ -138,8 +147,6 @@ Testing summary: Other details ------------- -[Remove any lines that don't apply. Remove entire section if nothing applies.] - List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): Pull Requests that document the changes (include PR ids): diff --git a/doc/ChangeSum b/doc/ChangeSum index b69061e8a4..e411947225 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,6 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.3.021 samrabin 01/17/2025 Standardize time metadata + ctsm5.3.021 samrabin 01/29/2025 Standardize time metadata (release tag for ctsm5.3) ctsm5.3.020 samrabin 01/17/2025 Merge b4b-dev ctsm5.3.019 olyson 01/14/2025 Stop running 0th time step ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds