Skip to content

Commit

Permalink
add timestamps to rpointer files
Browse files Browse the repository at this point in the history
  • Loading branch information
jedwards4b committed Sep 6, 2024
1 parent f67cb8a commit 0341aeb
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 36 deletions.
13 changes: 5 additions & 8 deletions cesm/driver/esm_time_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ subroutine esm_time_clockInit(ensemble_driver, instance_driver, logunit, maintas

if (read_restart) then

call NUOPC_CompAttributeGet(instance_driver, name='drv_restart_pointer', value=restart_file, rc=rc)
call NUOPC_CompAttributeGet(instance_driver, name='drv_restart_pointer', value=restart_pfile, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

if (trim(restart_file) /= 'none') then
Expand All @@ -141,20 +141,17 @@ subroutine esm_time_clockInit(ensemble_driver, instance_driver, logunit, maintas
if(isPresent) then
call NUOPC_CompAttributeGet(instance_driver, name="inst_suffix", value=inst_suffix, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
restart_pfile = replace_text(restart_file, ".cpl", ".cpl."//inst_suffix)
else
inst_suffix = ""
endif

restart_pfile = replace_text(restart_file, ".cpl", ".cpl."//inst_suffix)

if (maintask) then
print *,__FILE__,__LINE__,trim(restart_file)
inquire( file=trim(restart_file), exist=exists)
inquire( file=trim(restart_pfile), exist=exists)
print *,__FILE__,__LINE__,trim(restart_pfile), exists
if (.not. exists) then
restart_pfile = "rpointer.cpl"
if (inst_suffix .ne. "") restart_pfile = trim(restart_pfile)//'.'//inst_suffix
endif
print *,__FILE__,__LINE__,trim(restart_file)

call ESMF_LogWrite(trim(subname)//" read rpointer file = "//trim(restart_pfile), &
ESMF_LOGMSG_INFO)
Expand Down Expand Up @@ -334,7 +331,7 @@ subroutine esm_time_clockInit(ensemble_driver, instance_driver, logunit, maintas
endif
contains
FUNCTION Replace_Text (s,text,rep) RESULT(outs)
CHARACTER(*) :: s,text,rep
CHARACTER(len=*) :: s,text,rep
CHARACTER(LEN(s)+100) :: outs ! provide outs with extra 100 char len
INTEGER :: i, nt, nr

Expand Down
51 changes: 23 additions & 28 deletions mediator/med_phases_restart_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ subroutine med_phases_restart_write(gcomp, rc)
use med_io_mod , only : med_io_close, med_io_date2yyyymmdd, med_io_sec2hms
use med_phases_history_mod, only : auxcomp
use med_constants_mod , only : SecPerDay => med_constants_SecPerDay

use nuopc_shr_methods , only : shr_get_rpointer_name
! Input/output variables
type(ESMF_GridComp) :: gcomp
integer, intent(out) :: rc
Expand Down Expand Up @@ -172,9 +172,9 @@ subroutine med_phases_restart_write(gcomp, rc)
character(ESMF_MAXSTR) :: case_name ! case name
character(ESMF_MAXSTR) :: restart_file ! Local path to restart filename
character(ESMF_MAXSTR) :: restart_pfile ! Local path to restart pointer filename
character(ESMF_MAXSTR) :: cpl_inst_tag ! instance tag
character(ESMF_MAXSTR) :: restart_dir ! Optional restart directory name
character(ESMF_MAXSTR) :: cvalue ! attribute string
character(ESMF_MAXSTR) :: cpl_inst_tag ! instance tag
logical :: alarmIsOn ! generic alarm flag
real(R8) :: tbnds(2) ! CF1.0 time bounds
logical :: isPresent
Expand All @@ -197,14 +197,6 @@ subroutine med_phases_restart_write(gcomp, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call NUOPC_CompAttributeGet(gcomp, name='case_name', value=case_name, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call NUOPC_CompAttributeGet(gcomp, name='inst_suffix', isPresent=isPresent, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if(isPresent) then
call NUOPC_CompAttributeGet(gcomp, name='inst_suffix', value=cpl_inst_tag, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
else
cpl_inst_tag = ""
endif
call NUOPC_CompAttributeGet(gcomp, name='restart_dir', isPresent=isPresent, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if(isPresent) then
Expand Down Expand Up @@ -296,12 +288,20 @@ subroutine med_phases_restart_write(gcomp, rc)
! 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 NUOPC_CompAttributeGet(gcomp, name='inst_suffix', isPresent=isPresent, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (isPresent) then
call NUOPC_CompAttributeGet(gcomp, name='inst_suffix', value=cpl_inst_tag, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
else
cpl_inst_tag = ""
endif

write(restart_file,"(6a)") trim(restart_dir)//trim(case_name),'.cpl', trim(cpl_inst_tag),'.r.',&
trim(nexttimestr),'.nc'

if (maintask) then
restart_pfile = "rpointer.cpl"//trim(cpl_inst_tag)
call shr_get_rpointer_name(gcomp, 'cpl', next_ymd, next_tod, restart_pfile, 'write', rc)
call ESMF_LogWrite(trim(subname)//" write rpointer file = "//trim(restart_pfile), ESMF_LOGMSG_INFO)
open(newunit=unitn, file=restart_pfile, form='FORMATTED')
write(unitn,'(a)') trim(restart_file)
Expand Down Expand Up @@ -480,13 +480,14 @@ subroutine med_phases_restart_read(gcomp, rc)

! Read mediator restart

use ESMF , only : ESMF_GridComp, ESMF_VM, ESMF_Clock, ESMF_Time, ESMF_MAXSTR
use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS, ESMF_FAILURE
use ESMF , only : ESMF_LOGMSG_ERROR, ESMF_VMBroadCast
use ESMF , only : ESMF_GridCompGet, ESMF_ClockGet, ESMF_ClockPrint
use ESMF , only : ESMF_FieldBundleIsCreated, ESMF_TimeGet
use NUOPC , only : NUOPC_CompAttributeGet
use med_io_mod , only : med_io_read
use ESMF , only : ESMF_GridComp, ESMF_VM, ESMF_Clock, ESMF_Time, ESMF_MAXSTR
use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS, ESMF_FAILURE
use ESMF , only : ESMF_LOGMSG_ERROR, ESMF_VMBroadCast
use ESMF , only : ESMF_GridCompGet, ESMF_ClockGet, ESMF_ClockPrint
use ESMF , only : ESMF_FieldBundleIsCreated, ESMF_TimeGet
use NUOPC , only : NUOPC_CompAttributeGet
use med_io_mod , only : med_io_read
use nuopc_shr_methods, only : shr_get_rpointer_name

! Input/output variables
type(ESMF_GridComp) :: gcomp
Expand All @@ -501,10 +502,10 @@ subroutine med_phases_restart_read(gcomp, rc)
integer :: n
integer :: ierr, unitn
integer :: yr,mon,day,sec ! time units
integer :: curr_ymd
character(ESMF_MAXSTR) :: case_name ! case name
character(ESMF_MAXSTR) :: restart_file ! Local path to restart filename
character(ESMF_MAXSTR) :: restart_pfile ! Local path to restart pointer filename
character(ESMF_MAXSTR) :: cpl_inst_tag ! instance tag
logical :: isPresent
character(len=*), parameter :: subname='(med_phases_restart_read)'
!---------------------------------------
Expand All @@ -520,14 +521,6 @@ subroutine med_phases_restart_read(gcomp, rc)
! Get case name and inst suffix
call NUOPC_CompAttributeGet(gcomp, name='case_name', value=case_name, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call NUOPC_CompAttributeGet(gcomp, name='inst_suffix', isPresent=isPresent, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (isPresent) then
call NUOPC_CompAttributeGet(gcomp, name='inst_suffix', value=cpl_inst_tag, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
else
cpl_inst_tag = ""
endif

! Get the clock info
call ESMF_GridCompGet(gcomp, clock=clock)
Expand All @@ -536,6 +529,8 @@ subroutine med_phases_restart_read(gcomp, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call ESMF_TimeGet(currtime,yy=yr, mm=mon, dd=day, s=sec, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call ymd2date(yr,mon,day,curr_ymd)

write(currtimestr,'(i4.4,a,i2.2,a,i2.2,a,i5.5)') yr,'-',mon,'-',day,'-',sec
if (dbug_flag > 1) then
call ESMF_LogWrite(trim(subname)//": currtime = "//trim(currtimestr), ESMF_LOGMSG_INFO)
Expand All @@ -546,8 +541,8 @@ subroutine med_phases_restart_read(gcomp, rc)
endif

! Get the restart file name from the pointer file
restart_pfile = "rpointer.cpl"//trim(cpl_inst_tag)
if (maintask) then
call shr_get_rpointer_name(gcomp, 'cpl', curr_ymd, sec, restart_pfile, 'read', rc)
call ESMF_LogWrite(trim(subname)//" read rpointer file = "//trim(restart_pfile), ESMF_LOGMSG_INFO)
open(newunit=unitn, file=restart_pfile, form='FORMATTED', status='old', iostat=ierr)
read (unitn,'(a)', iostat=ierr) restart_file
Expand Down

0 comments on commit 0341aeb

Please sign in to comment.