From bdf6b329fce4d72f8944019410aac37855e6ba4e Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Thu, 1 Jun 2023 11:02:53 -0600 Subject: [PATCH 001/145] 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/145] 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/145] 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/145] 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 a9eb1e72b743a731743059b271997d1f8c3cf527 Mon Sep 17 00:00:00 2001 From: Keith Oleson Date: Tue, 25 Jul 2023 12:52:31 -0600 Subject: [PATCH 005/145] 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 006/145] 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 007/145] 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 008/145] 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 009/145] 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 010/145] 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 011/145] 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 012/145] 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 013/145] 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 014/145] 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 015/145] 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 258792e9c2ecf34d5e7dd58b556b34330edd0884 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 28 Mar 2024 17:27:56 -0600 Subject: [PATCH 016/145] If avgflag /= 'I', time_bounds is present and time = mid of time_bounds ...and other mods that I'm preserving from closed PR #2019, such as - changes to long_names and - treating avgflag as a tape (not field) trait for 'I' and 'L' tapes --- src/main/histFileMod.F90 | 65 +++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 863bf6e987..eb3d42348f 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -1170,6 +1170,7 @@ subroutine htape_addfld (t, f, avgflag) integer :: beg1d,end1d ! beginning and ending indices for this field (assume already set) integer :: num1d_out ! history output 1d size type(bounds_type) :: bounds + character(len=avgflag_strlen) :: avgflag_temp ! local copy of hist_avgflag_pertape(t) character(len=*),parameter :: subname = 'htape_addfld' !----------------------------------------------------------------------- @@ -1300,6 +1301,19 @@ subroutine htape_addfld (t, f, avgflag) tape(t)%hlist(n)%avgflag = avgflag end if + ! Override this tape's avgflag if nhtfrq == 1 + if (tape(t)%nhtfrq == 1) then ! output is instantaneous + hist_avgflag_pertape(t) = 'I' + end if + ! Override this field's avgflag if the namelist or the previous line + ! has set this tape to + ! - instantaneous (I) or + ! - local time (L) + avgflag_temp = hist_avgflag_pertape(t) + if (avgflag_temp == 'I' .or. avgflag_temp(1:1) == 'L') then + tape(t)%hlist(n)%avgflag = avgflag_temp + end if + end subroutine htape_addfld !----------------------------------------------------------------------- @@ -3093,6 +3107,7 @@ subroutine htape_timeconst(t, mode) integer :: mcdate ! current date integer :: yr,mon,day,nbsec ! year,month,day,seconds components of a date integer :: hours,minutes,secs ! hours,minutes,seconds of hh:mm:ss + character(len= 12) :: step_or_bounds ! string used in long_name of several time variables character(len= 10) :: basedate ! base date (yyyymmdd) character(len= 8) :: basesec ! base seconds character(len= 8) :: cdate ! system date @@ -3352,8 +3367,18 @@ subroutine htape_timeconst(t, mode) dim1id(1) = time_dimid str = 'days since ' // basedate // " " // basesec - call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, & - long_name='time',units=str) + if (tape(t)%hlist(1)%avgflag /= '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, & + long_name=long_name, units=str) + call ncd_putatt(nfid(t), varid, 'bounds', 'time_bounds') + else ! instantaneous fields tape + step_or_bounds = 'time step' + long_name = 'time at end of ' // step_or_bounds + call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, & + long_name=long_name, units=str) + end if cal = get_calendar() if ( trim(cal) == NO_LEAP_C )then caldesc = "noleap" @@ -3361,11 +3386,11 @@ subroutine htape_timeconst(t, mode) caldesc = "gregorian" end if call ncd_putatt(nfid(t), varid, 'calendar', caldesc) - call ncd_putatt(nfid(t), varid, 'bounds', 'time_bounds') dim1id(1) = time_dimid + long_name = 'current date (YYYYMMDD) at end of ' // step_or_bounds call ncd_defvar(nfid(t) , 'mcdate', ncd_int, 1, dim1id , varid, & - long_name = 'current date (YYYYMMDD)') + long_name = long_name) ! ! add global attribute time_period_freq ! @@ -3392,18 +3417,23 @@ subroutine htape_timeconst(t, mode) call ncd_putatt(nfid(t), ncd_global, 'time_period_freq', & trim(time_period_freq)) + long_name = 'current seconds of current date at end of ' // step_or_bounds call ncd_defvar(nfid(t) , 'mcsec' , ncd_int, 1, dim1id , varid, & - long_name = 'current seconds of current date', units='s') + long_name = long_name, units='s') + long_name = 'current day (from base day) at end of ' // step_or_bounds call ncd_defvar(nfid(t) , 'mdcur' , ncd_int, 1, dim1id , varid, & - long_name = 'current day (from base day)') + long_name = long_name) + long_name = 'current seconds of current day at end of ' // step_or_bounds call ncd_defvar(nfid(t) , 'mscur' , ncd_int, 1, dim1id , varid, & - long_name = 'current seconds of current day') + long_name = long_name) call ncd_defvar(nfid(t) , 'nstep' , ncd_int, 1, dim1id , varid, & long_name = 'time step') 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') + if (tape(t)%hlist(1)%avgflag /= '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 dim2id(1) = strlen_dimid; dim2id(2) = time_dimid call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid) @@ -3431,13 +3461,16 @@ subroutine htape_timeconst(t, mode) call ncd_io('mscur' , mscur , 'write', nfid(t), nt=tape(t)%ntimes) call ncd_io('nstep' , nstep , 'write', nfid(t), nt=tape(t)%ntimes) - time = mdcur + mscur/secspday + 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 + time = (timedata(1) + timedata(2)) * 0.5_r8 + call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes) + else + time = timedata(2) + end if call ncd_io('time' , time , 'write', nfid(t), nt=tape(t)%ntimes) - timedata(1) = tape(t)%begtime - timedata(2) = time - call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes) - call getdatetime (cdate, ctime) call ncd_io('date_written', cdate, 'write', nfid(t), nt=tape(t)%ntimes) @@ -5254,6 +5287,10 @@ 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 89e9f328459a36dc93ea7edfc79d85dd3be4da70 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 25 Sep 2024 12:03:12 -0600 Subject: [PATCH 017/145] 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 018/145] 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 d6bbcc219db195b2b2441e39d2587e697be98520 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 15:33:42 -0600 Subject: [PATCH 019/145] Update namelist_defaults with ne3np4 fsurdat/landuse files --- bld/namelist_files/namelist_defaults_ctsm.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index d7dc104183..d3a6ec1f7e 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1818,6 +1818,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_2000_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_2000_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_2000_78pfts_c240925.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c240908.nc @@ -1863,6 +1865,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.n lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_1850_78pfts_c240925.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_1850_78pfts_c240908.nc @@ -1873,8 +1877,6 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2 lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_1850_78pfts_c240912.nc - -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c240908.nc @@ -1930,6 +1932,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc Date: Wed, 16 Oct 2024 16:08:06 -0600 Subject: [PATCH 020/145] Add ne3np4 fsurdat/landuse generation to Makefile --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 5de67adb12..2f08f57b0f 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -200,11 +200,11 @@ def main(): "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["4x5", "10x15", "ne3np4.pg3"], + "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], - "ne3": ["ne3np4.pg3"], + "ne3": ["ne3np4", "ne3np4.pg3"], "ne16": ["ne16np4.pg3"], "ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"], "ne0np4": [ From 8002a9dabf3a05739aae43fa34b29c98e9364e73 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 17:12:55 -0600 Subject: [PATCH 021/145] Small important correction to namelist_defaults_ctsm.xml --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index d3a6ec1f7e..b2b49c9aaf 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1980,7 +1980,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc From 8f6905c207d32466d8528905979001f2514666ee Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 17:14:00 -0600 Subject: [PATCH 022/145] Add build-namelist tests for ne3np4 same as existing ne3np4.pg3 --- bld/unit_testers/build-namelist_test.pl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index a1f5e3912f..19fb9b43aa 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -163,7 +163,7 @@ sub cat_and_create_namelistinfile { # # Figure out number of tests that will run # -my $ntests = 3997; +my $ntests = 4141; if ( defined($opts{'compare'}) ) { $ntests += 2437; @@ -1414,7 +1414,7 @@ sub cat_and_create_namelistinfile { print "========================================================================\n"; # Check for ALL resolutions with CLM50SP -my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" ); +my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" ); my @only2000_resolutions = ( "1x1_numaIA", "1x1_brazil", "1x1_mexicocityMEX", "1x1_vancouverCAN", "1x1_urbanc_alpha", "5x5_amazon", "0.125nldas2", "mpasa60", "mpasa15", "mpasa3p75" ); my @regional; foreach my $res ( @resolutions ) { @@ -1451,7 +1451,7 @@ sub cat_and_create_namelistinfile { print " Test important resolutions for BGC and historical\n"; print "==================================================\n"; -my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" ); +my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" ); my @regional; my $nlbgcmode = "bgc"; my $mode = "$phys-$nlbgcmode"; @@ -1678,7 +1678,7 @@ sub cat_and_create_namelistinfile { &cleanup(); } -my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" ); +my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $res ( @crop_res ) { $options = "-bgc bgc -crop -res $res -envxml_dir ."; &make_env_run(); @@ -1767,7 +1767,7 @@ sub cat_and_create_namelistinfile { &cleanup(); } # Transient ssp_rcp scenarios that work -my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); +my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $usecase ( "1850-2100_SSP2-4.5_transient" ) { my $startymd = 20150101; foreach my $res ( @tran_res ) { @@ -1804,7 +1804,7 @@ sub cat_and_create_namelistinfile { "-bgc bgc -clm_demand flanduse_timeseries -sim_year 1850-2000 -namelist '&a start_ymd=18500101/'", "-bgc bgc -envxml_dir . -namelist '&a use_c13=.true.,use_c14=.true.,use_c14_bombspike=.true./'" ); foreach my $clmopts ( @clmoptions ) { - my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); + my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $res ( @clmres ) { $options = "-res $res -envxml_dir . "; &make_env_run( ); From 718bd4177d18c21fa651d5c944b11cfb9ebd575a Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Thu, 17 Oct 2024 12:58:34 -0600 Subject: [PATCH 023/145] 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 024/145] 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 23bb3410bae68cb5bea5efc268f9cf5b247c3d18 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 15:33:42 -0600 Subject: [PATCH 025/145] Update namelist_defaults with ne3np4 fsurdat/landuse files --- bld/namelist_files/namelist_defaults_ctsm.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index ba262d45e1..a47045642a 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1818,6 +1818,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_2000_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_2000_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_2000_78pfts_c240925.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c240908.nc @@ -1865,6 +1867,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.n lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc + +lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_1850_78pfts_c240925.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_1850_78pfts_c240908.nc @@ -1875,8 +1879,6 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2 lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_1850_78pfts_c240912.nc - -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c240908.nc @@ -1942,6 +1944,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc Date: Wed, 16 Oct 2024 16:08:06 -0600 Subject: [PATCH 026/145] Add ne3np4 fsurdat/landuse generation to Makefile --- python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py index 5de67adb12..2f08f57b0f 100755 --- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py +++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py @@ -200,11 +200,11 @@ def main(): "ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"], "standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"], "standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"], - "low_res": ["4x5", "10x15", "ne3np4.pg3"], + "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4"], "mpasa480": ["mpasa480"], "nldas_res": ["0.125nldas2"], "5x5_amazon": ["5x5_amazon"], - "ne3": ["ne3np4.pg3"], + "ne3": ["ne3np4", "ne3np4.pg3"], "ne16": ["ne16np4.pg3"], "ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"], "ne0np4": [ From 99dd05a4f4934c8960a841b0275494628f4d7f5f Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 17:12:55 -0600 Subject: [PATCH 027/145] Small important correction to namelist_defaults_ctsm.xml --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index a47045642a..4a62c1161e 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1992,7 +1992,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc From 68eec5479726b7d5350e8ec6e0be4564f6cda8b0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 16 Oct 2024 17:14:00 -0600 Subject: [PATCH 028/145] Add build-namelist tests for ne3np4 same as existing ne3np4.pg3 --- bld/unit_testers/build-namelist_test.pl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl index b6b31cd644..bbae45d701 100755 --- a/bld/unit_testers/build-namelist_test.pl +++ b/bld/unit_testers/build-namelist_test.pl @@ -163,7 +163,7 @@ sub cat_and_create_namelistinfile { # # Figure out number of tests that will run # -my $ntests = 3997; +my $ntests = 4141; if ( defined($opts{'compare'}) ) { $ntests += 2437; @@ -1419,7 +1419,7 @@ sub cat_and_create_namelistinfile { print "========================================================================\n"; # Check for ALL resolutions with CLM50SP -my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" ); +my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" ); my @only2000_resolutions = ( "1x1_numaIA", "1x1_brazil", "1x1_mexicocityMEX", "1x1_vancouverCAN", "1x1_urbanc_alpha", "5x5_amazon", "0.125nldas2", "mpasa60", "mpasa15", "mpasa3p75" ); my @regional; foreach my $res ( @resolutions ) { @@ -1456,7 +1456,7 @@ sub cat_and_create_namelistinfile { print " Test important resolutions for BGC and historical\n"; print "==================================================\n"; -my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" ); +my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" ); my @regional; my $nlbgcmode = "bgc"; my $mode = "$phys-$nlbgcmode"; @@ -1683,7 +1683,7 @@ sub cat_and_create_namelistinfile { &cleanup(); } -my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" ); +my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $res ( @crop_res ) { $options = "-bgc bgc -crop -res $res -envxml_dir ."; &make_env_run(); @@ -1772,7 +1772,7 @@ sub cat_and_create_namelistinfile { &cleanup(); } # Transient ssp_rcp scenarios that work -my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); +my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $usecase ( "1850-2100_SSP2-4.5_transient" ) { my $startymd = 20150101; foreach my $res ( @tran_res ) { @@ -1809,7 +1809,7 @@ sub cat_and_create_namelistinfile { "-bgc bgc -clm_demand flanduse_timeseries -sim_year 1850-2000 -namelist '&a start_ymd=18500101/'", "-bgc bgc -envxml_dir . -namelist '&a use_c13=.true.,use_c14=.true.,use_c14_bombspike=.true./'" ); foreach my $clmopts ( @clmoptions ) { - my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); + my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" ); foreach my $res ( @clmres ) { $options = "-res $res -envxml_dir . "; &make_env_run( ); From f1f3be706b564dae1f21dace31c7af42a75fd33c Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 23 Oct 2024 15:34:03 -0600 Subject: [PATCH 029/145] Change ptsRLA and ptsRLO tests to ne3 in testlist_clm.xml --- cime_config/testdefs/testlist_clm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 5a3d4d465d..73b6ac8c22 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2261,7 +2261,7 @@ - + @@ -2521,7 +2521,7 @@ - + From 981c1b020914acf6c0d9e63abade6adbbb86bba0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 23 Oct 2024 15:46:37 -0600 Subject: [PATCH 030/145] Updating the ptsRLA and ptsRLO tests to the correct ne3 grid --- cime_config/testdefs/testlist_clm.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 73b6ac8c22..2be343e330 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2261,7 +2261,7 @@ - + @@ -2521,7 +2521,7 @@ - + From 87afe5c0759e091721dc6a675b7b6100dc2bb45d Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Mon, 4 Nov 2024 13:28:18 -0700 Subject: [PATCH 031/145] updates for ne3np4 scam --- src/biogeochem/SatellitePhenologyMod.F90 | 4 +- src/biogeophys/UrbanParamsType.F90 | 120 +++++++++++------------ src/main/ncdio_pio.F90.in | 37 +++---- src/main/organicFileMod.F90 | 18 ++-- 4 files changed, 88 insertions(+), 91 deletions(-) diff --git a/src/biogeochem/SatellitePhenologyMod.F90 b/src/biogeochem/SatellitePhenologyMod.F90 index 3e9341f430..9412d34586 100644 --- a/src/biogeochem/SatellitePhenologyMod.F90 +++ b/src/biogeochem/SatellitePhenologyMod.F90 @@ -13,7 +13,7 @@ module SatellitePhenologyMod use shr_log_mod , only : errMsg => shr_log_errMsg use decompMod , only : bounds_type use abortutils , only : endrun - use clm_varctl , only : iulog, use_lai_streams + use clm_varctl , only : iulog, use_lai_streams, single_column use perf_mod , only : t_startf, t_stopf use spmdMod , only : masterproc, mpicom, iam use laiStreamMod , only : lai_init, lai_advance, lai_interp @@ -311,7 +311,7 @@ subroutine readAnnualVegetation (bounds, canopystate_inst) call ncd_pio_openfile (ncid, trim(locfn), 0) call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns) - if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then + if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then write(iulog,*)trim(subname), 'ldomain and input file do not match dims ' write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj diff --git a/src/biogeophys/UrbanParamsType.F90 b/src/biogeophys/UrbanParamsType.F90 index 4b7b80e4fe..c6443897fe 100644 --- a/src/biogeophys/UrbanParamsType.F90 +++ b/src/biogeophys/UrbanParamsType.F90 @@ -9,9 +9,9 @@ module UrbanParamsType use shr_log_mod , only : errMsg => shr_log_errMsg use abortutils , only : endrun use decompMod , only : bounds_type, subgrid_level_gridcell, subgrid_level_landunit - use clm_varctl , only : iulog, fsurdat + use clm_varctl , only : iulog, fsurdat, single_column use clm_varcon , only : grlnd, spval - use LandunitType , only : lun + use LandunitType , only : lun ! implicit none save @@ -26,21 +26,21 @@ module UrbanParamsType ! ! !PRIVATE TYPE type urbinp_type - real(r8), pointer :: canyon_hwr (:,:) - real(r8), pointer :: wtlunit_roof (:,:) - real(r8), pointer :: wtroad_perv (:,:) - real(r8), pointer :: em_roof (:,:) - real(r8), pointer :: em_improad (:,:) - real(r8), pointer :: em_perroad (:,:) - real(r8), pointer :: em_wall (:,:) - real(r8), pointer :: alb_roof_dir (:,:,:) - real(r8), pointer :: alb_roof_dif (:,:,:) - real(r8), pointer :: alb_improad_dir (:,:,:) - real(r8), pointer :: alb_improad_dif (:,:,:) - real(r8), pointer :: alb_perroad_dir (:,:,:) - real(r8), pointer :: alb_perroad_dif (:,:,:) - real(r8), pointer :: alb_wall_dir (:,:,:) - real(r8), pointer :: alb_wall_dif (:,:,:) + real(r8), pointer :: canyon_hwr (:,:) + real(r8), pointer :: wtlunit_roof (:,:) + real(r8), pointer :: wtroad_perv (:,:) + real(r8), pointer :: em_roof (:,:) + real(r8), pointer :: em_improad (:,:) + real(r8), pointer :: em_perroad (:,:) + real(r8), pointer :: em_wall (:,:) + real(r8), pointer :: alb_roof_dir (:,:,:) + real(r8), pointer :: alb_roof_dif (:,:,:) + real(r8), pointer :: alb_improad_dir (:,:,:) + real(r8), pointer :: alb_improad_dif (:,:,:) + real(r8), pointer :: alb_perroad_dir (:,:,:) + real(r8), pointer :: alb_perroad_dif (:,:,:) + real(r8), pointer :: alb_wall_dir (:,:,:) + real(r8), pointer :: alb_wall_dif (:,:,:) real(r8), pointer :: ht_roof (:,:) real(r8), pointer :: wind_hgt_canyon (:,:) real(r8), pointer :: tk_wall (:,:,:) @@ -92,14 +92,14 @@ module UrbanParamsType real(r8), pointer :: eflx_traffic_factor (:) ! lun multiplicative traffic factor for sensible heat flux from urban traffic (-) contains - procedure, public :: Init - + procedure, public :: Init + end type urbanparams_type ! ! !Urban control variables - character(len= *), parameter, public :: urban_hac_off = 'OFF' - character(len= *), parameter, public :: urban_hac_on = 'ON' - character(len= *), parameter, public :: urban_wasteheat_on = 'ON_WASTEHEAT' + character(len= *), parameter, public :: urban_hac_off = 'OFF' + character(len= *), parameter, public :: urban_hac_on = 'ON' + character(len= *), parameter, public :: urban_wasteheat_on = 'ON_WASTEHEAT' character(len= 16), public :: urban_hac = urban_hac_off logical, public :: urban_explicit_ac = .true. ! whether to use explicit, time-varying AC adoption rate logical, public :: urban_traffic = .false. ! urban traffic fluxes @@ -112,7 +112,7 @@ module UrbanParamsType character(len=*), parameter, private :: sourcefile = & __FILE__ - !----------------------------------------------------------------------- + !----------------------------------------------------------------------- contains @@ -132,11 +132,11 @@ subroutine Init(this, bounds) ! ! !ARGUMENTS: class(urbanparams_type) :: this - type(bounds_type) , intent(in) :: bounds + type(bounds_type) , intent(in) :: bounds ! ! !LOCAL VARIABLES: integer :: j,l,c,p,g ! indices - integer :: nc,fl,ib ! indices + integer :: nc,fl,ib ! indices integer :: dindx ! urban density type index integer :: ier ! error status real(r8) :: sumvf ! sum of view factors for wall or road @@ -182,12 +182,12 @@ subroutine Init(this, bounds) allocate(this%em_perroad (begl:endl)) ; this%em_perroad (:) = nan allocate(this%em_wall (begl:endl)) ; this%em_wall (:) = nan allocate(this%alb_roof_dir (begl:endl,numrad)) ; this%alb_roof_dir (:,:) = nan - allocate(this%alb_roof_dif (begl:endl,numrad)) ; this%alb_roof_dif (:,:) = nan - allocate(this%alb_improad_dir (begl:endl,numrad)) ; this%alb_improad_dir (:,:) = nan - allocate(this%alb_perroad_dir (begl:endl,numrad)) ; this%alb_perroad_dir (:,:) = nan - allocate(this%alb_improad_dif (begl:endl,numrad)) ; this%alb_improad_dif (:,:) = nan - allocate(this%alb_perroad_dif (begl:endl,numrad)) ; this%alb_perroad_dif (:,:) = nan - allocate(this%alb_wall_dir (begl:endl,numrad)) ; this%alb_wall_dir (:,:) = nan + allocate(this%alb_roof_dif (begl:endl,numrad)) ; this%alb_roof_dif (:,:) = nan + allocate(this%alb_improad_dir (begl:endl,numrad)) ; this%alb_improad_dir (:,:) = nan + allocate(this%alb_perroad_dir (begl:endl,numrad)) ; this%alb_perroad_dir (:,:) = nan + allocate(this%alb_improad_dif (begl:endl,numrad)) ; this%alb_improad_dif (:,:) = nan + allocate(this%alb_perroad_dif (begl:endl,numrad)) ; this%alb_perroad_dif (:,:) = nan + allocate(this%alb_wall_dir (begl:endl,numrad)) ; this%alb_wall_dir (:,:) = nan allocate(this%alb_wall_dif (begl:endl,numrad)) ; this%alb_wall_dif (:,:) = nan allocate(this%eflx_traffic_factor (begl:endl)) ; this%eflx_traffic_factor (:) = nan @@ -261,7 +261,7 @@ subroutine Init(this, bounds) ! | \ vsr / | | r | | \ vww / s ! | \ / | h o w | \ / k ! wall | \ / | wall | a | | \ / y - ! |vwr \ / vwr| | d | |vrw \ / vsw + ! |vwr \ / vwr| | d | |vrw \ / vsw ! ------\/------ - - |-----\/----- ! road wall | ! <----- w ----> | @@ -272,20 +272,20 @@ subroutine Init(this, bounds) ! vsw = view factor of sky for wall ! vsr + vwr + vwr = 1 vrw + vww + vsw = 1 ! - ! Source: Masson, V. (2000) A physically-based scheme for the urban energy budget in + ! Source: Masson, V. (2000) A physically-based scheme for the urban energy budget in ! atmospheric models. Boundary-Layer Meteorology 94:357-397 ! ! - Calculate urban land unit aerodynamic constants using Macdonald (1998) as used in ! Grimmond and Oke (1999) ! --------------------------------------------------------------------------------------- - - ! road -- sky view factor -> 1 as building height -> 0 + + ! road -- sky view factor -> 1 as building height -> 0 ! and -> 0 as building height -> infinity this%vf_sr(l) = sqrt(lun%canyon_hwr(l)**2 + 1._r8) - lun%canyon_hwr(l) this%vf_wr(l) = 0.5_r8 * (1._r8 - this%vf_sr(l)) - ! one wall -- sky view factor -> 0.5 as building height -> 0 + ! one wall -- sky view factor -> 0.5 as building height -> 0 ! and -> 0 as building height -> infinity this%vf_sw(l) = 0.5_r8 * (lun%canyon_hwr(l) + 1._r8 - sqrt(lun%canyon_hwr(l)**2+1._r8)) / lun%canyon_hwr(l) @@ -311,7 +311,7 @@ subroutine Init(this, bounds) ! Grimmond and Oke (1999) !---------------------------------------------------------------------------------- - ! Calculate plan area index + ! Calculate plan area index plan_ai = lun%canyon_hwr(l)/(lun%canyon_hwr(l) + 1._r8) ! Building shape shortside/longside ratio (e.g. 1 = square ) @@ -344,7 +344,7 @@ subroutine Init(this, bounds) (1 - lun%z_d_town(l) / lun%ht_roof(l)) * frontal_ai)**(-0.5_r8)) end if - else ! Not urban point + else ! Not urban point this%eflx_traffic_factor(l) = spval this%t_building_min(l) = spval @@ -366,7 +366,7 @@ end subroutine Init !----------------------------------------------------------------------- subroutine UrbanInput(begg, endg, mode) ! - ! !DESCRIPTION: + ! !DESCRIPTION: ! Allocate memory and read in urban input data ! ! !USES: @@ -375,7 +375,7 @@ subroutine UrbanInput(begg, endg, mode) use fileutils , only : getavu, relavu, getfil, opnfil use spmdMod , only : masterproc use domainMod , only : ldomain - use ncdio_pio , only : file_desc_t, ncd_io, ncd_inqvdlen, ncd_inqfdims + use ncdio_pio , only : file_desc_t, ncd_io, ncd_inqvdlen, ncd_inqfdims use ncdio_pio , only : ncd_pio_openfile, ncd_pio_closefile, ncd_inqdid, ncd_inqdlen ! ! !ARGUMENTS: @@ -392,7 +392,7 @@ subroutine UrbanInput(begg, endg, mode) integer :: numrad_i ! input grid: number of solar bands (VIS/NIR) integer :: numurbl_i ! input grid: number of urban landunits integer :: ier,ret ! error status - logical :: isgrid2d ! true => file is 2d + logical :: isgrid2d ! true => file is 2d logical :: readvar ! true => variable is on dataset logical :: has_numurbl ! true => numurbl dimension is on dataset character(len=32) :: subname = 'UrbanInput' ! subroutine name @@ -403,11 +403,11 @@ subroutine UrbanInput(begg, endg, mode) if (mode == 'initialize') then ! Read urban data - + if (masterproc) then write(iulog,*)' Reading in urban input data from fsurdat file ...' end if - + call getfil (fsurdat, locfn, 0) call ncd_pio_openfile (ncid, locfn, 0) @@ -428,20 +428,20 @@ subroutine UrbanInput(begg, endg, mode) if ( nlevurb == 0 ) return ! Allocate dynamic memory - allocate(urbinp%canyon_hwr(begg:endg, numurbl), & - urbinp%wtlunit_roof(begg:endg, numurbl), & + allocate(urbinp%canyon_hwr(begg:endg, numurbl), & + urbinp%wtlunit_roof(begg:endg, numurbl), & urbinp%wtroad_perv(begg:endg, numurbl), & - urbinp%em_roof(begg:endg, numurbl), & - urbinp%em_improad(begg:endg, numurbl), & - urbinp%em_perroad(begg:endg, numurbl), & - urbinp%em_wall(begg:endg, numurbl), & - urbinp%alb_roof_dir(begg:endg, numurbl, numrad), & - urbinp%alb_roof_dif(begg:endg, numurbl, numrad), & - urbinp%alb_improad_dir(begg:endg, numurbl, numrad), & - urbinp%alb_perroad_dir(begg:endg, numurbl, numrad), & - urbinp%alb_improad_dif(begg:endg, numurbl, numrad), & - urbinp%alb_perroad_dif(begg:endg, numurbl, numrad), & - urbinp%alb_wall_dir(begg:endg, numurbl, numrad), & + urbinp%em_roof(begg:endg, numurbl), & + urbinp%em_improad(begg:endg, numurbl), & + urbinp%em_perroad(begg:endg, numurbl), & + urbinp%em_wall(begg:endg, numurbl), & + urbinp%alb_roof_dir(begg:endg, numurbl, numrad), & + urbinp%alb_roof_dif(begg:endg, numurbl, numrad), & + urbinp%alb_improad_dir(begg:endg, numurbl, numrad), & + urbinp%alb_perroad_dir(begg:endg, numurbl, numrad), & + urbinp%alb_improad_dif(begg:endg, numurbl, numrad), & + urbinp%alb_perroad_dif(begg:endg, numurbl, numrad), & + urbinp%alb_wall_dir(begg:endg, numurbl, numrad), & urbinp%alb_wall_dif(begg:endg, numurbl, numrad), & urbinp%ht_roof(begg:endg, numurbl), & urbinp%wind_hgt_canyon(begg:endg, numurbl), & @@ -461,7 +461,7 @@ subroutine UrbanInput(begg, endg, mode) endif call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns) - if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then + if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then write(iulog,*)trim(subname), 'ldomain and input file do not match dims ' write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj @@ -655,7 +655,7 @@ subroutine UrbanInput(begg, endg, mode) call ncd_pio_closefile(ncid) if (masterproc) then - write(iulog,*)' Sucessfully read urban input data' + write(iulog,*)' Sucessfully read urban input data' write(iulog,*) end if @@ -955,7 +955,3 @@ end function IsProgBuildTemp !----------------------------------------------------------------------- end module UrbanParamsType - - - - diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in index 6d58ded872..a8faa30dca 100644 --- a/src/main/ncdio_pio.F90.in +++ b/src/main/ncdio_pio.F90.in @@ -541,14 +541,6 @@ contains character(len=32) :: subname = 'ncd_inqfdims' ! subroutine name !----------------------------------------------------------------------- - if (single_column) then - ni = 1 - nj = 1 - ns = 1 - isgrid2d = .true. - RETURN - end if - ni = 0 nj = 0 @@ -1683,6 +1675,8 @@ contains type(var_desc_t) :: vardesc integer :: oldhandle ! previous value of pio_error_handle character(len=*),parameter :: subname='ncd_io_1d_{TYPE}' ! subroutine name + integer :: ni,nj,ns + logical :: isgrid2d !----------------------------------------------------------------------- start(:) = 0 @@ -1710,18 +1704,19 @@ contains if (single_column) then start(:) = 1 ; count(:) = 1 call scam_field_offsets(ncid,subgrid_level_name,vardesc,start,count) - if (trim(subgrid_level_name) == grlnd) then - n=2 - if (present(nt)) then - start(3) = nt ; count(3) = 1 - n=3 - end if - else + call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) + if (isgrid2d) then n=1 if (present(nt)) then n=2 start(2) = nt ; count(2) = 1 end if + else + n=2 + if (present(nt)) then + start(3) = nt ; count(3) = 1 + n=3 + end if end if call pio_seterrorhandling(ncid, PIO_BCAST_ERROR, oldhandle) #if ({ITYPE}==TYPELOGICAL) @@ -1867,6 +1862,8 @@ contains type(iodesc_plus_type) , pointer :: iodesc_plus type(var_desc_t) :: vardesc character(len=*),parameter :: subname='ncd_io_2d_{TYPE}' ! subroutine name + integer :: ni,nj,ns + logical :: isgrid2d !----------------------------------------------------------------------- start(:)=0 @@ -1905,7 +1902,8 @@ contains if (single_column) then start(:) = 1 ; count(:) = 1 call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count) - if (trim(subgrid_level_name) == grlnd) then + call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) + if (isgrid2d) then count(3) = size(data,dim=2) n=3 if (present(nt)) then @@ -2100,6 +2098,8 @@ contains type(iodesc_plus_type) , pointer :: iodesc_plus type(var_desc_t) :: vardesc character(len=*),parameter :: subname='ncd_io_3d_{TYPE}' ! subroutine name + integer :: ni,nj,ns + logical :: isgrid2d !----------------------------------------------------------------------- subgrid_level_name = dim1name @@ -2116,7 +2116,8 @@ contains start(:) = 1 count(:) = 1 call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count) - if (trim(subgrid_level_name) == grlnd) then + call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) + if (isgrid2d) then count(3) = size(data,dim=2); count(4) = size(data,dim=3) n=4 @@ -2435,7 +2436,7 @@ contains if ( trim(dimname)=='nj'.or. trim(dimname)=='lat'.or. trim(dimname)=='lsmlat') then start(i)=latidx count(i)=1 - else if ( trim(dimname)=='ni'.or. trim(dimname)=='lon'.or. trim(dimname)=='lsmlon') then + else if ( trim(dimname)=='ni'.or. trim(dimname)=='lon'.or. trim(dimname)=='lsmlon'.or. trim(dimname)=='gridcell') then start(i)=lonidx count(i)=1 else if ( trim(dimname)=='column') then diff --git a/src/main/organicFileMod.F90 b/src/main/organicFileMod.F90 index 3adbd5b6f1..5b61a8c0db 100644 --- a/src/main/organicFileMod.F90 +++ b/src/main/organicFileMod.F90 @@ -6,8 +6,8 @@ module organicFileMod ! !MODULE: organicFileMod ! ! !DESCRIPTION: -! Contains methods for reading in organic matter data file which has -! organic matter density for each grid point and soil level +! Contains methods for reading in organic matter data file which has +! organic matter density for each grid point and soil level ! ! !USES use abortutils , only : endrun @@ -30,7 +30,7 @@ module organicFileMod ! !EOP ! -!----------------------------------------------------------------------- +!----------------------------------------------------------------------- contains @@ -42,7 +42,7 @@ module organicFileMod ! !INTERFACE: subroutine organicrd(organic) ! -! !DESCRIPTION: +! !DESCRIPTION: ! Read the organic matter dataset. ! ! !USES: @@ -68,7 +68,7 @@ subroutine organicrd(organic) !EOP character(len=256) :: locfn ! local file name type(file_desc_t) :: ncid ! netcdf id - integer :: ni,nj,ns ! dimension sizes + integer :: ni,nj,ns ! dimension sizes logical :: isgrid2d ! true => file is 2d logical :: readvar ! true => variable is on dataset character(len=32) :: subname = 'organicrd' ! subroutine name @@ -77,9 +77,9 @@ subroutine organicrd(organic) ! Initialize data to zero - no organic matter dataset organic(:,:) = 0._r8 - + ! Read data if file was specified in namelist - + if (fsurdat /= ' ') then if (masterproc) then write(iulog,*) 'Attempting to read organic matter data .....' @@ -90,14 +90,14 @@ subroutine organicrd(organic) call ncd_pio_openfile (ncid, locfn, 0) call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns) - if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then + if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then write(iulog,*)trim(subname), 'ldomain and input file do not match dims ' write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj write(iulog,*)trim(subname), 'ldomain%ns,ns,= ',ldomain%ns,ns call endrun() end if - + call ncd_io(ncid=ncid, varname='ORGANIC', flag='read', data=organic, & dim1name=grlnd, readvar=readvar) if (.not. readvar) call endrun('organicrd: errror reading ORGANIC') From e381e9d991b2ca47af5be0a9b55199a5b6e92fa8 Mon Sep 17 00:00:00 2001 From: wwieder Date: Thu, 7 Nov 2024 14:35:55 -0700 Subject: [PATCH 032/145] 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 033/145] 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 034/145] 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 035/145] 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 036/145] 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 037/145] 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 038/145] 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 039/145] 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 040/145] 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 041/145] 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 042/145] 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 043/145] 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 044/145] 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 045/145] 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 046/145] 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 047/145] 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 048/145] 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 049/145] 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 050/145] 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 051/145] 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 052/145] 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 053/145] 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 054/145] 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 eeedbc6ae95373cbd1f27359f54de7693409326d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 21 Nov 2024 17:04:38 -0700 Subject: [PATCH 055/145] 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 de9bcc0895b693ed8282a280c4cf7ded8d1c51e6 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 4 Dec 2024 14:46:16 -0700 Subject: [PATCH 056/145] update(submodules): Bring in cdeps1.0.57 that has a change for cplhist cases to use the cam7 handling for nextsw_cday, also update share as needed for this to build --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 87676223a0..8ef8853a13 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.57 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 @@ -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.2 +fxtag = share1.1.3 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 c416479dba82445dbe9387bd72ebcb5b77df75cc Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 4 Dec 2024 14:47:49 -0700 Subject: [PATCH 057/145] Update direcotries for submodule update --- components/cdeps | 2 +- share | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/cdeps b/components/cdeps index f6bc97483a..4165d0657d 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit f6bc97483a1bfb7352c6c5610a13ed898a86990b +Subproject commit 4165d0657d6f60e8dba650e9a1771a1344972b76 diff --git a/share b/share index f6f31fd61c..ce2ba18936 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit f6f31fd61cb8f80aee97311fcca64b3e26b0202c +Subproject commit ce2ba18936fb13b15e43432b76259d47b94029f3 From 7df2c84e71a1eb62ec6dd9f71bcc6ea02e89d9be Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Wed, 4 Dec 2024 14:49:20 -0700 Subject: [PATCH 058/145] Update cam7 tuning to use the radsw of -1 and nextsw_cday to be the cam7 mode --- .../testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm | 2 ++ .../testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm create mode 100644 cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm diff --git a/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm new file mode 100644 index 0000000000..c35d3fd9d4 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm @@ -0,0 +1,2 @@ +iradsw = -1 +nextsw_cday_calc = "cam7" diff --git a/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm new file mode 100644 index 0000000000..c35d3fd9d4 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm @@ -0,0 +1,2 @@ +iradsw = -1 +nextsw_cday_calc = "cam7" From 46015e92ec162eb5f00bc873a06cdbd934f71f0c Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Wed, 4 Dec 2024 16:00:35 -0700 Subject: [PATCH 059/145] ctsm warm_start mods --- src/init_interp/initInterp.F90 | 81 ++++++++++++------- .../initInterpMultilevelContainer.F90 | 2 +- src/main/histFileMod.F90 | 8 +- src/main/ncdio_pio.F90.in | 65 ++++++++------- src/main/surfrdMod.F90 | 14 +++- 5 files changed, 104 insertions(+), 66 deletions(-) diff --git a/src/init_interp/initInterp.F90 b/src/init_interp/initInterp.F90 index f6027fe632..40df6eb82c 100644 --- a/src/init_interp/initInterp.F90 +++ b/src/init_interp/initInterp.F90 @@ -820,13 +820,13 @@ subroutine findMinDist( dimname, begi, endi, bego, endo, ncidi, ncido, & write(iulog,*)'calling set_subgrid_info for ',trim(dimname), ' for input' end if call set_subgrid_info(beg=begi, end=endi, dimname=dimname, use_glob=.true., & - ncid=ncidi, active=activei, subgrid=subgridi) + ncid=ncidi, active=activei, subgrid=subgridi, allow_scm=.false.) if (masterproc) then write(iulog,*)'calling set_subgrid_info for ',trim(dimname), ' for output' end if call set_subgrid_info(beg=bego, end=endo, dimname=dimname, use_glob=.false., & - ncid=ncido, active=activeo, subgrid=subgrido) + ncid=ncido, active=activeo, subgrid=subgrido, allow_scm=.true.) select case (interp_method) case (interp_method_general) @@ -859,7 +859,7 @@ end subroutine findMinDist !======================================================================= - subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid) + subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid, allow_scm) ! -------------------------------------------------------------------- ! arguments @@ -869,6 +869,7 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid) logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io logical , intent(out) :: active(beg:end) type(subgrid_type) , intent(inout) :: subgrid + logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data ! ! local variables integer :: n @@ -896,32 +897,32 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid) end if if (dimname == 'pft') then - call read_var_double(ncid=ncid, varname='pfts1d_lon' , data=subgrid%lon , dim1name='pft', use_glob=use_glob) - call read_var_double(ncid=ncid, varname='pfts1d_lat' , data=subgrid%lat , dim1name='pft', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='pfts1d_itypveg', data=subgrid%ptype, dim1name='pft', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='pfts1d_itypcol', data=subgrid%ctype, dim1name='pft', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='pfts1d_ityplun', data=subgrid%ltype, dim1name='pft', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='pfts1d_active' , data=itemp , dim1name='pft', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='pfts1d_lon' , data=subgrid%lon , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) + call read_var_double(ncid=ncid, varname='pfts1d_lat' , data=subgrid%lat , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='pfts1d_itypveg', data=subgrid%ptype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='pfts1d_itypcol', data=subgrid%ctype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='pfts1d_ityplun', data=subgrid%ltype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='pfts1d_active' , data=itemp , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) if (associated(subgrid%topoglc)) then - call read_var_double(ncid=ncid, varname='pfts1d_topoglc', data=subgrid%topoglc, dim1name='pft', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='pfts1d_topoglc', data=subgrid%topoglc, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm) end if else if (dimname == 'column') then - call read_var_double(ncid=ncid, varname='cols1d_lon' , data=subgrid%lon , dim1name='column', use_glob=use_glob) - call read_var_double(ncid=ncid, varname='cols1d_lat' , data=subgrid%lat , dim1name='column', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='cols1d_ityp' , data=subgrid%ctype, dim1name='column', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='cols1d_ityplun', data=subgrid%ltype, dim1name='column', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='cols1d_active' , data=itemp , dim1name='column', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='cols1d_lon' , data=subgrid%lon , dim1name='column', use_glob=use_glob, allow_scm=allow_scm) + call read_var_double(ncid=ncid, varname='cols1d_lat' , data=subgrid%lat , dim1name='column', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='cols1d_ityp' , data=subgrid%ctype, dim1name='column', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='cols1d_ityplun', data=subgrid%ltype, dim1name='column', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='cols1d_active' , data=itemp , dim1name='column', use_glob=use_glob, allow_scm=allow_scm) if (associated(subgrid%topoglc)) then - call read_var_double(ncid=ncid, varname='cols1d_topoglc', data=subgrid%topoglc, dim1name='column', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='cols1d_topoglc', data=subgrid%topoglc, dim1name='column', use_glob=use_glob, allow_scm=allow_scm) end if else if (dimname == 'landunit') then - call read_var_double(ncid=ncid, varname='land1d_lon' , data=subgrid%lon , dim1name='landunit', use_glob=use_glob) - call read_var_double(ncid=ncid, varname='land1d_lat' , data=subgrid%lat , dim1name='landunit', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='land1d_ityplun', data=subgrid%ltype, dim1name='landunit', use_glob=use_glob) - call read_var_int(ncid=ncid, varname='land1d_active' , data=itemp , dim1name='landunit', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='land1d_lon' , data=subgrid%lon , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm) + call read_var_double(ncid=ncid, varname='land1d_lat' , data=subgrid%lat , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='land1d_ityplun', data=subgrid%ltype, dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm) + call read_var_int(ncid=ncid, varname='land1d_active' , data=itemp , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm) else if (dimname == 'gridcell') then - call read_var_double(ncid=ncid, varname='grid1d_lon' , data=subgrid%lon , dim1name='gridcell', use_glob=use_glob) - call read_var_double(ncid=ncid, varname='grid1d_lat' , data=subgrid%lat , dim1name='gridcell', use_glob=use_glob) + call read_var_double(ncid=ncid, varname='grid1d_lon' , data=subgrid%lon , dim1name='gridcell', use_glob=use_glob, allow_scm=allow_scm) + call read_var_double(ncid=ncid, varname='grid1d_lat' , data=subgrid%lat , dim1name='gridcell', use_glob=use_glob, allow_scm=allow_scm) ! All gridcells in the restart file are active itemp(beg:end) = 1 @@ -942,7 +943,7 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid) contains - subroutine read_var_double(ncid, varname, data, dim1name, use_glob) + subroutine read_var_double(ncid, varname, data, dim1name, use_glob, allow_scm) ! Wraps the ncd_io call, providing logic related to whether we're using the 'glob' ! form of ncd_io type(file_desc_t) , intent(inout) :: ncid @@ -950,15 +951,25 @@ subroutine read_var_double(ncid, varname, data, dim1name, use_glob) real(r8), pointer , intent(inout) :: data(:) character(len=*) , intent(in) :: dim1name logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io + logical , intent(in) :: allow_scm ! if .true., use the 'glob' form of ncd_io + + ! local + character(16) :: readflag + + if (allow_scm) then + readflag='read' + else + readflag='read_noscm' + endif if (use_glob) then - call ncd_io(ncid=ncid, varname=varname, flag='read', data=data) + call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data) else - call ncd_io(ncid=ncid, varname=varname, flag='read', data=data, dim1name=dim1name) + call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data, dim1name=dim1name) end if end subroutine read_var_double - subroutine read_var_int(ncid, varname, data, dim1name, use_glob) + subroutine read_var_int(ncid, varname, data, dim1name, use_glob, allow_scm) ! Wraps the ncd_io call, providing logic related to whether we're using the 'glob' ! form of ncd_io type(file_desc_t) , intent(inout) :: ncid @@ -966,11 +977,21 @@ subroutine read_var_int(ncid, varname, data, dim1name, use_glob) integer, pointer , intent(inout) :: data(:) character(len=*) , intent(in) :: dim1name logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io + logical , intent(in) :: allow_scm ! if .true., allow scm data slice + + ! local + character(16) :: readflag + + if (allow_scm) then + readflag='read' + else + readflag='read_noscm' + endif if (use_glob) then - call ncd_io(ncid=ncid, varname=varname, flag='read', data=data) + call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data) else - call ncd_io(ncid=ncid, varname=varname, flag='read', data=data, dim1name=dim1name) + call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data, dim1name=dim1name) end if end subroutine read_var_int @@ -1038,7 +1059,7 @@ subroutine interp_1d_double (varname, varname_i, dimname, begi, endi, bego, endo end if allocate (rbufsli(begi:endi), rbufslo(bego:endo)) - call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read', data=rbufsli) + call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read_noscm', data=rbufsli) call ncd_io(ncid=ncido, varname=trim(varname), flag='read', data=rbufslo, & dim1name=dimname) @@ -1080,7 +1101,7 @@ subroutine interp_1d_int (varname, varname_i, dimname, begi, endi, bego, endo, n allocate (ibufsli(begi:endi), ibufslo(bego:endo)) - call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read', & + call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read_noscm', & data=ibufsli) call ncd_io(ncid=ncido, varname=trim(varname), flag='read', & data=ibufslo, dim1name=dimname) diff --git a/src/init_interp/initInterpMultilevelContainer.F90 b/src/init_interp/initInterpMultilevelContainer.F90 index 5a7b14832a..d26e51c71c 100644 --- a/src/init_interp/initInterpMultilevelContainer.F90 +++ b/src/init_interp/initInterpMultilevelContainer.F90 @@ -732,7 +732,7 @@ subroutine create_snow_interpolators(interp_multilevel_levsno, interp_multilevel ! Read snlsno_source_sgrid allocate(snlsno_source_sgrid(bounds_source%get_begc() : bounds_source%get_endc())) - call ncd_io(ncid=ncid_source, varname='SNLSNO', flag='read', & + call ncd_io(ncid=ncid_source, varname='SNLSNO', flag='read_noscm', & data=snlsno_source_sgrid) snlsno_source_sgrid(:) = abs(snlsno_source_sgrid(:)) diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index b2df9abfab..3634194257 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -5068,9 +5068,9 @@ subroutine hist_restart_ncd (bounds, ncid, flag, rdate) end if call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name), & - dim1name=type1d_out, data=hbuf1d) + dim1name=type1d_out, data=hbuf1d, posNOTonfile=.true.) call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name_acc), & - dim1name=type1d_out, data=nacs1d) + dim1name=type1d_out, data=nacs1d, posNOTonfile=.true.) hbuf(beg1d_out:end1d_out,1) = hbuf1d(beg1d_out:end1d_out) nacs(beg1d_out:end1d_out,1) = nacs1d(beg1d_out:end1d_out) @@ -5079,9 +5079,9 @@ subroutine hist_restart_ncd (bounds, ncid, flag, rdate) deallocate(nacs1d) else call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name), & - dim1name=type1d_out, data=hbuf) + dim1name=type1d_out, data=hbuf, posNOTonfile=.true.) call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name_acc), & - dim1name=type1d_out, data=nacs) + dim1name=type1d_out, data=nacs, posNOTonfile=.true.) end if end do diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in index a8faa30dca..61970527a2 100644 --- a/src/main/ncdio_pio.F90.in +++ b/src/main/ncdio_pio.F90.in @@ -1345,7 +1345,7 @@ contains start(:) = 0 count(:) = 0 - if (flag == 'read') then + if (flag == 'read' .or. flag == 'read_noscm') then call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent) @@ -1374,7 +1374,7 @@ contains #else if (varpresent) then allocate(idata1d(size(data))) - if (single_column) then + if (single_column .and. flag == 'read') then call scam_field_offsets(ncid,'undefined', vardesc,& start, count, found=found, posNOTonfile=posNOTonfile) if ( found )then @@ -1470,7 +1470,7 @@ contains start(:) = 0 count(:) = 0 - if (flag == 'read') then + if (flag == 'read' .or. flag == 'read_noscm') then call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent) @@ -1491,7 +1491,7 @@ contains end if #else if (varpresent) then - if (single_column) then + if (single_column .and. flag == 'read') then call scam_field_offsets(ncid,'undefined', vardesc,& start, count, found=found, posNOTonfile=posNOTonfile) if ( found )then @@ -1640,7 +1640,7 @@ contains !----------------------------------------------------------------------- !TYPE int,double,logical - subroutine ncd_io_1d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, cnvrtnan2fill) + subroutine ncd_io_1d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, cnvrtnan2fill, posNOTonfile) ! ! !DESCRIPTION: ! netcdf I/O for 1d @@ -1654,6 +1654,7 @@ contains integer , optional, intent(in) :: nt ! time sample index logical , optional, intent(out) :: readvar ! true => variable is on initial dataset (read only) logical , optional, intent(in) :: cnvrtnan2fill ! true => convert any NaN's to _FillValue (spval) + logical , optional, intent(in) :: posNOTonfile ! Position is NOT on this file ! ! Local Variables character(len=8) :: subgrid_level_name ! nameg, namel, etc. @@ -1668,15 +1669,16 @@ contains integer :: start(3) ! netcdf start index integer :: count(3) ! netcdf count index integer :: status ! error code + logical :: found ! if true, found lat/lon dims on file logical :: varpresent ! if true, variable is on tape integer :: xtype ! type of var in file integer , pointer :: idata(:) ! Temporary integer data to send to file type(iodesc_plus_type) , pointer :: iodesc_plus type(var_desc_t) :: vardesc integer :: oldhandle ! previous value of pio_error_handle + integer :: ni,nj,ns ! lat/lon indicies + logical :: isgrid2d ! if true, latlon grid character(len=*),parameter :: subname='ncd_io_1d_{TYPE}' ! subroutine name - integer :: ni,nj,ns - logical :: isgrid2d !----------------------------------------------------------------------- start(:) = 0 @@ -1697,26 +1699,26 @@ contains end if #endif - if (flag == 'read') then + if (flag == 'read' .or. flag == 'read_noscm') then call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent) if (varpresent) then if (single_column) then start(:) = 1 ; count(:) = 1 - call scam_field_offsets(ncid,subgrid_level_name,vardesc,start,count) + call scam_field_offsets(ncid,subgrid_level_name,vardesc,start,count,found=found,posNOTonfile=posNOTonfile) call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) if (isgrid2d) then - n=1 - if (present(nt)) then - n=2 - start(2) = nt ; count(2) = 1 - end if - else n=2 if (present(nt)) then start(3) = nt ; count(3) = 1 n=3 end if + else + n=1 + if (present(nt)) then + n=2 + start(2) = nt ; count(2) = 1 + end if end if call pio_seterrorhandling(ncid, PIO_BCAST_ERROR, oldhandle) #if ({ITYPE}==TYPELOGICAL) @@ -1818,7 +1820,7 @@ contains !TYPE int,double subroutine ncd_io_2d_{TYPE}(varname, data, dim1name, lowerb2, upperb2, & - flag, ncid, nt, readvar, switchdim, cnvrtnan2fill) + flag, ncid, nt, readvar, switchdim, cnvrtnan2fill, posNOTonfile ) ! ! !DESCRIPTION: ! Netcdf i/o of 2d @@ -1834,7 +1836,7 @@ contains logical, optional, intent(out) :: readvar ! true => variable is on initial dataset (read only) logical, optional, intent(in) :: switchdim ! true=> permute dim1 and dim2 for output logical, optional, intent(in) :: cnvrtnan2fill ! true => convert any NaN's to _FillValue (spval) - ! + logical, optional, intent(in) :: posNOTonfile ! Position is NOT on this file ! ! !LOCAL VARIABLES: #if ({ITYPE}==TYPEINT) integer , pointer :: temp(:,:) @@ -1857,13 +1859,14 @@ contains logical :: varpresent ! if true, variable is on tape integer :: lb1,lb2 integer :: ub1,ub2 + integer :: ni,nj,ns + logical :: isgrid2d ! if true, latlon grid integer :: xtype ! netcdf type of variable on file + logical :: found ! if true, found lat/lon dims on file type(iodesc_plus_type) , pointer :: iodesc_plus type(var_desc_t) :: vardesc character(len=*),parameter :: subname='ncd_io_2d_{TYPE}' ! subroutine name - integer :: ni,nj,ns - logical :: isgrid2d !----------------------------------------------------------------------- start(:)=0 @@ -1895,13 +1898,13 @@ contains allocate(temp(lb2:ub2,lb1:ub1)) end if - if (flag == 'read') then + if (flag == 'read' .or. flag == 'read_noscm') then call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent) if (varpresent) then - if (single_column) then + if (single_column .and. flag == 'read') then start(:) = 1 ; count(:) = 1 - call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count) + call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count,found=found,posNOTonfile=posNOTonfile) call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) if (isgrid2d) then count(3) = size(data,dim=2) @@ -2065,7 +2068,7 @@ contains !----------------------------------------------------------------------- !TYPE int,double - subroutine ncd_io_3d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar) + subroutine ncd_io_3d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, posNOTonfile) ! ! !DESCRIPTION: ! Netcdf i/o of 3d @@ -2078,7 +2081,7 @@ contains character(len=*) , intent(in) :: dim1name ! dimension 1 name integer, optional, intent(in) :: nt ! time sample index logical, optional, intent(out) :: readvar ! true => variable is on initial dataset (read only) - ! + logical, optional, intent(in) :: posNOTonfile ! Position is NOT on this file ! ! !LOCAL VARIABLES: integer :: ndim1,ndim2 character(len=8) :: subgrid_level_name ! nameg, namel, etc. @@ -2097,9 +2100,10 @@ contains logical :: varpresent ! if true, variable is on tape type(iodesc_plus_type) , pointer :: iodesc_plus type(var_desc_t) :: vardesc - character(len=*),parameter :: subname='ncd_io_3d_{TYPE}' ! subroutine name integer :: ni,nj,ns - logical :: isgrid2d + logical :: isgrid2d ! if true, latlon grid + logical :: found ! if true, found lat/lon dims on file + character(len=*),parameter :: subname='ncd_io_3d_{TYPE}' ! subroutine name !----------------------------------------------------------------------- subgrid_level_name = dim1name @@ -2108,14 +2112,14 @@ contains write(iulog,*) trim(subname),' ',trim(flag),' ',trim(varname),' ',trim(subgrid_level_name) end if - if (flag == 'read') then + if (flag == 'read' .or. flag == 'read_noscm') then call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent) if (varpresent) then - if (single_column) then + if (single_column .and. flag == 'read') then start(:) = 1 count(:) = 1 - call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count) + call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count,found=found,posNOTonfile=posNOTonfile) call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) if (isgrid2d) then count(3) = size(data,dim=2); @@ -2439,6 +2443,9 @@ contains else if ( trim(dimname)=='ni'.or. trim(dimname)=='lon'.or. trim(dimname)=='lsmlon'.or. trim(dimname)=='gridcell') then start(i)=lonidx count(i)=1 + else if ( trim(dimname)=='gridcell') then + start(i)=lonidx + count(i)=1 else if ( trim(dimname)=='column') then allocate (cols1dlon(dimlen)) diff --git a/src/main/surfrdMod.F90 b/src/main/surfrdMod.F90 index 4005ec7845..c70ec28fa0 100644 --- a/src/main/surfrdMod.F90 +++ b/src/main/surfrdMod.F90 @@ -363,8 +363,10 @@ subroutine surfrd_get_num_patches (lfsurdat, actual_maxsoil_patches, actual_nump type(file_desc_t) :: ncid ! netcdf file id integer :: dimid ! netCDF dimension id logical :: cft_dim_exists ! dimension exists on dataset + logical :: natpft_dim_exists ! dimension exists on dataset integer :: check_numpft ! Surface dataset count of numpft, should ! match maxsoil_patches - actual_numcft + integer :: actual_numnatpft ! natpft value from sfc dataset character(len=32) :: subname = 'surfrd_get_num_patches' ! subroutine name !----------------------------------------------------------------------- @@ -396,9 +398,17 @@ subroutine surfrd_get_num_patches (lfsurdat, actual_maxsoil_patches, actual_nump call ncd_inqdlen(ncid, dimid, actual_maxsoil_patches, 'lsmpft') actual_numpft = actual_maxsoil_patches - actual_numcft - call ncd_inqdlen(ncid, dimid, check_numpft, 'natpft') + ! Read numpft + call ncd_inqdid(ncid, 'natpft', dimid, natpft_dim_exists) + if ( natpft_dim_exists ) then + call ncd_inqdlen(ncid, dimid, actual_numnatpft, 'natpft') + call ncd_inqdlen(ncid, dimid, check_numpft, 'natpft') + else + actual_numnatpft = 0 + end if - if(check_numpft.ne.actual_numpft)then +!jt if(check_numpft.ne.actual_numpft)then + if(actual_numcft+actual_numnatpft.ne.actual_maxsoil_patches)then write(iulog,*)'the sum of the cftdim and the natpft dim should match the lsmpft dim in the surface file' write(iulog,*)'natpft: ',check_numpft write(iulog,*)'lsmpft: ',actual_maxsoil_patches From ee5261a34ae9daf7ceac8ee3d956e3c1d1e8ee41 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 5 Dec 2024 14:23:43 -0700 Subject: [PATCH 060/145] This is my understanding of the submodules that need to be used with the rpointer work --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 87676223a0..acbf2a1303 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.37 +fxtag = cime6.1.47 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.16 +fxtag = cmeps1.0.26 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.2 +fxtag = share1.1.5 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 277384b06a00956cd7afa75d24e795daf5e20cf6 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 5 Dec 2024 14:47:34 -0700 Subject: [PATCH 061/145] Another cime submodule update regarding rpointer things --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index acbf2a1303..518c541299 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.47 +fxtag = cime6.1.48 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 a5506fc250b9e6eacfad1815cf21c88618e3ba32 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 5 Dec 2024 14:50:06 -0700 Subject: [PATCH 062/145] First stab at the submodules needed for the rpointer changes, this doesn't include the RTM, MOSART or CTSM changes though --- .gitmodules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index 87676223a0..902f26f5d2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -36,7 +36,7 @@ fxDONOTUSEurl = https://github.com/NCAR/fates-release [submodule "cism"] path = components/cism url = https://github.com/ESCOMP/CISM-wrapper -fxtag = cismwrap_2_2_002 +fxtag = cismwrap_2_2_005 fxrequired = ToplevelRequired # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper @@ -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_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.02 +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 @@ -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.1.3 +fxtag = cesm-coupling.n02_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.37 +fxtag = cime6.1.47 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.16 +fxtag = cmeps1.0.26 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 @@ -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.54 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 @@ -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.2 +fxtag = share1.1.5 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 5d8a23d524125323a7ec1b228bddf4e0732d79ba Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Thu, 5 Dec 2024 15:39:57 -0700 Subject: [PATCH 063/145] Update to latest cime with a new rpointer fix --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 902f26f5d2..e88f93a860 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.47 +fxtag = cime6.1.48 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 66b680db484e5321a79b9fd6566d099bf93e21a7 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Fri, 6 Dec 2024 10:45:07 -0700 Subject: [PATCH 064/145] Fix a syntax error that nag caught --- src/main/restFileMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/restFileMod.F90 b/src/main/restFileMod.F90 index f6a7a96ed9..d82505f4ff 100644 --- a/src/main/restFileMod.F90 +++ b/src/main/restFileMod.F90 @@ -365,7 +365,7 @@ subroutine restFile_read_pfile( pnamer ) if (masterproc) then nio = getavu() call get_curr_date(yr, mon, day, tod) - write(timestamp,'(".",i4.4,"-",i2.2,"-",i2.2,"-",i5.5)'),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 From 80a32ba244e36e6b4ba52feab953418571de4f9f Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 6 Dec 2024 12:10:45 -0700 Subject: [PATCH 065/145] Move nfix_method from a hardwired variable to the namelist --- bld/CLMBuildNamelist.pm | 8 +++++++- bld/namelist_files/namelist_defaults_ctsm.xml | 2 ++ .../namelist_definition_ctsm.xml | 5 +++++ src/biogeochem/CNFUNMod.F90 | 19 +++++++++---------- src/main/clm_varctl.F90 | 2 ++ src/main/controlMod.F90 | 3 +++ 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index cfdb4e9278..33a8baebbc 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3381,7 +3381,7 @@ sub setup_logic_mineral_nitrogen_dynamics { # my ($opts, $nl_flags, $definition, $defaults, $nl) = @_; - my @vars = ( "freelivfix_slope_wet", "freelivfix_intercept" ); + my @vars = ( "freelivfix_slope_wet", "freelivfix_intercept", "nfix_method" ); if ( &value_is_true($nl_flags->{'use_cn'}) && &value_is_true($nl->get_value('use_fun')) ) { foreach my $var ( @vars ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var, @@ -3394,6 +3394,12 @@ 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"); + } + } diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 7d1f29fb28..8674482851 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2024,6 +2024,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 0.0117d00 0.0006d00 +Houlton + 0.83d-06 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 066/145] 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 067/145] 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 068/145] 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 069/145] 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 070/145] 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 071/145] 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 072/145] 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 073/145] 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 074/145] 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 075/145] 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 076/145] 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 077/145] 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 078/145] 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 079/145] 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 080/145] 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 081/145] 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 082/145] 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 083/145] 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 084/145] 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 5347b4824ae0e42b8fd55b157e5d63d81f3eae6f Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 17 Dec 2024 15:34:59 -0700 Subject: [PATCH 085/145] 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 086/145] 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 087/145] 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 088/145] 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 089/145] 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 090/145] 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 091/145] 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 092/145] 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 093/145] 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 094/145] 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 095/145] 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 096/145] 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 097/145] 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 098/145] 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 099/145] 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 100/145] 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 101/145] 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 102/145] 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 103/145] 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 104/145] 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 105/145] 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 106/145] 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 107/145] 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 108/145] 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 109/145] 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 110/145] 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 111/145] 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 112/145] 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 113/145] 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 114/145] 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 115/145] 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 116/145] 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 117/145] 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 118/145] 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 119/145] 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 120/145] 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 121/145] 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 122/145] 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 123/145] 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 124/145] 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 125/145] 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 126/145] 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 127/145] 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 36d95e077823c209ec184ee12187198150aa5236 Mon Sep 17 00:00:00 2001 From: John Truesdale Date: Fri, 10 Jan 2025 23:15:48 -0700 Subject: [PATCH 128/145] bug fix for scam clm warmstart - SCT cam6_prep now produces BFB results with 3d CAM using F2000climo with SROF --- src/main/ncdio_pio.F90.in | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in index 61970527a2..04ed90a6cd 100644 --- a/src/main/ncdio_pio.F90.in +++ b/src/main/ncdio_pio.F90.in @@ -1906,6 +1906,7 @@ contains start(:) = 1 ; count(:) = 1 call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count,found=found,posNOTonfile=posNOTonfile) call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns) + call ncd_inqvdims(ncid, ndims, vardesc) if (isgrid2d) then count(3) = size(data,dim=2) n=3 @@ -1914,11 +1915,9 @@ contains n=4 end if else - count(2) = size(data,dim=2) - n=2 + n=ndims if (present(nt)) then - start(3) = nt ; count(3) = 1 - n=3 + start(n) = nt ; count(n) = 1 end if end if if (present(switchdim)) then From f3a1dc6039d98433d56b2fadb86a371d150508f3 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 13 Jan 2025 15:44:48 -0700 Subject: [PATCH 129/145] 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 130/145] 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 131/145] 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 132/145] 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 0b740699390bcecb23314e7f2b1ab8b828b27b4d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 11:33:15 -0700 Subject: [PATCH 133/145] 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 134/145] 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 135/145] 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 136/145] 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 137/145] 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 6194751cd574811b7246dffbb647d1e91ab1318f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 16 Jan 2025 15:01:19 -0700 Subject: [PATCH 138/145] 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 139/145] 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 140/145] 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 141/145] 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 142/145] 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 6cf536b6f3d96d8d8cdad937c081e0396db79086 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 24 Jan 2025 13:48:24 -0700 Subject: [PATCH 143/145] Replace comment explaining `allow_scm` with the correct one --- src/init_interp/initInterp.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init_interp/initInterp.F90 b/src/init_interp/initInterp.F90 index 40df6eb82c..2f12fbc1ca 100644 --- a/src/init_interp/initInterp.F90 +++ b/src/init_interp/initInterp.F90 @@ -951,7 +951,7 @@ subroutine read_var_double(ncid, varname, data, dim1name, use_glob, allow_scm) real(r8), pointer , intent(inout) :: data(:) character(len=*) , intent(in) :: dim1name logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io - logical , intent(in) :: allow_scm ! if .true., use the 'glob' form of ncd_io + logical , intent(in) :: allow_scm ! if .true., allow scm data slice ! local character(16) :: readflag From af8cd5470d792e05c9e82b40caddcfd52a13ba26 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 24 Jan 2025 13:55:11 -0700 Subject: [PATCH 144/145] Improve `allow_scm` comment further --- src/init_interp/initInterp.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/init_interp/initInterp.F90 b/src/init_interp/initInterp.F90 index 2f12fbc1ca..fb09e5b379 100644 --- a/src/init_interp/initInterp.F90 +++ b/src/init_interp/initInterp.F90 @@ -951,7 +951,7 @@ subroutine read_var_double(ncid, varname, data, dim1name, use_glob, allow_scm) real(r8), pointer , intent(inout) :: data(:) character(len=*) , intent(in) :: dim1name logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io - logical , intent(in) :: allow_scm ! if .true., allow scm data slice + logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data ! local character(16) :: readflag @@ -977,7 +977,7 @@ subroutine read_var_int(ncid, varname, data, dim1name, use_glob, allow_scm) integer, pointer , intent(inout) :: data(:) character(len=*) , intent(in) :: dim1name logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io - logical , intent(in) :: allow_scm ! if .true., allow scm data slice + logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data ! local character(16) :: readflag From 5f8d812d6632d4d879b05e4435a249d5866321bc Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 24 Jan 2025 15:29:10 -0700 Subject: [PATCH 145/145] Add comment explaining the read_noscm flag --- src/init_interp/initInterp.F90 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/init_interp/initInterp.F90 b/src/init_interp/initInterp.F90 index fb09e5b379..468c3207cd 100644 --- a/src/init_interp/initInterp.F90 +++ b/src/init_interp/initInterp.F90 @@ -959,6 +959,10 @@ subroutine read_var_double(ncid, varname, data, dim1name, use_glob, allow_scm) if (allow_scm) then readflag='read' else + ! Flag to distinguish the times during IC interpolation when running in single column mode but + ! need to read the full data grid. Normally single_column means + ! "read the data grid and extract the closest column" but + ! during IC interpolation you need to read in the full grid to be interpolated regardless of the single_column flag. readflag='read_noscm' endif @@ -985,6 +989,10 @@ subroutine read_var_int(ncid, varname, data, dim1name, use_glob, allow_scm) if (allow_scm) then readflag='read' else + ! Flag to distinguish the times during IC interpolation when running in single column mode but + ! need to read the full data grid. Normally single_column means + ! "read the data grid and extract the closest column" but + ! during IC interpolation you need to read in the full grid to be interpolated regardless of the single_column flag. readflag='read_noscm' endif