Skip to content

Commit

Permalink
Enable writing restarts that can be triggered at any forecast time ("…
Browse files Browse the repository at this point in the history
…restart_fh") via UFS configuration as for other components

Part of ufs-community/ufs-weather-model#2348
  • Loading branch information
NickSzapiro-NOAA authored Dec 11, 2024
1 parent 513f8d1 commit ff7fd76
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ module ice_comp_nuopc
use ice_mesh_mod , only : ice_mesh_init_tlon_tlat_area_hm, ice_mesh_create_scolumn
use ice_prescribed_mod , only : ice_prescribed_init
use ice_scam , only : scol_valid, single_column
#ifndef CESMCOUPLED
use shr_is_restart_fh_mod, only : init_is_restart_fh, is_restart_fh, is_restart_fh_type
#endif

implicit none
private
Expand Down Expand Up @@ -96,6 +99,9 @@ module ice_comp_nuopc
logical :: mastertask
logical :: runtimelog = .false.
logical :: restart_eor = .false. !End of run restart flag
#ifndef CESMCOUPLED
type(is_restart_fh_type) :: restartfh_info ! For flexible restarts in UFS
#endif
integer :: start_ymd ! Start date (YYYYMMDD)
integer :: start_tod ! start time of day (s)
integer :: curr_ymd ! Current date (YYYYMMDD)
Expand Down Expand Up @@ -1024,6 +1030,7 @@ subroutine ModelAdvance(gcomp, rc)
character(char_len_long) :: restart_date
character(char_len_long) :: restart_filename
logical :: isPresent, isSet
logical :: write_restartfh
character(len=*),parameter :: subname=trim(modName)//':(ModelAdvance) '
character(char_len_long) :: msgString
!--------------------------------
Expand Down Expand Up @@ -1175,6 +1182,11 @@ subroutine ModelAdvance(gcomp, rc)
endif
endif

#ifndef CESMCOUPLED
call is_restart_fh(clock, restartfh_info, write_restartfh)
if (write_restartfh) force_restart_now = .true.
#endif

!--------------------------------
! Unpack import state
!--------------------------------
Expand Down Expand Up @@ -1289,6 +1301,7 @@ subroutine ModelSetRunClock(gcomp, rc)
character(len=256) :: stop_option ! Stop option units
integer :: stop_n ! Number until stop interval
integer :: stop_ymd ! Stop date (YYYYMMDD)
integer :: dtime
type(ESMF_ALARM) :: stop_alarm
character(len=128) :: name
integer :: alarmcount
Expand Down Expand Up @@ -1377,6 +1390,11 @@ subroutine ModelSetRunClock(gcomp, rc)
call ESMF_AlarmSet(restart_alarm, clock=mclock, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

#ifndef CESMCOUPLED
call ESMF_TimeIntervalGet( dtimestep, s=dtime, rc=rc )
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call init_is_restart_fh(mcurrTime, dtime, my_task == master_task, restartfh_info)
#endif
end if

!--------------------------------
Expand Down

0 comments on commit ff7fd76

Please sign in to comment.