diff --git a/.gitmodules b/.gitmodules index a7acd7fd08..6947e06c73 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 @@ -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.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 @@ -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.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 @@ -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/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 b2f271b174..addf9e67ce 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit b2f271b1742533715a05701b1bdd80a24bb2ad77 +Subproject commit addf9e67ceeb0e056de33ee793d67491176dd3a5 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..362bee329b 160000 --- a/components/mizuRoute +++ b/components/mizuRoute @@ -1 +1 @@ -Subproject commit 2ff305a0292cb06789de6cfea7ad3cc0d6173493 +Subproject commit 362bee329bd6bf1fd45c8f36e006b9c4294bb8ca diff --git a/share b/share index a48ff8790a..c5e7603c29 160000 --- a/share +++ b/share @@ -1 +1 @@ -Subproject commit a48ff8790a21d3831873ed9f023a43c606a1ef03 +Subproject commit c5e7603c29ea5e2fe93ca16d88bc9c7f16175bcd 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 !-------------------------------- 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 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 !=========================================================================================