Skip to content

Commit

Permalink
ESMF_ConfigGetAttribute from model_configure
Browse files Browse the repository at this point in the history
  • Loading branch information
NickSzapiro-NOAA committed Sep 13, 2024
1 parent f0bb577 commit 9c98e3f
Showing 1 changed file with 36 additions and 31 deletions.
67 changes: 36 additions & 31 deletions cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,9 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
integer :: ilo, ihi, jlo, jhi ! beginning and end of physical domain
integer :: nfh, fh_s
character(len=256) :: timestr
real(dbl_kind), allocatable :: restart_fh(:)
real(kind=ESMF_KIND_R8), allocatable :: restart_fh(:)
type(ESMF_TimeInterval) :: fhInterval
type(ESMF_Config) :: CF_mc
character(len=char_len_long) :: diag_filename = 'unset'
character(len=char_len_long) :: logmsg
character(len=char_len_long) :: single_column_lnd_domainfile
Expand Down Expand Up @@ -532,38 +533,42 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
end if

! Set up times to write non-interval restarts
call NUOPC_CompAttributeGet(gcomp, name='restart_fh', isPresent=isPresent, isSet=isSet, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (isPresent .and. isSet) then
call NUOPC_CompAttributeGet(gcomp, name='restart_fh', value=cvalue, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

! convert string to a list of integer restart_fh values
nfh = 1 + count(transfer(trim(cvalue), 'a', len(cvalue)) == ",")
allocate(restart_fh(1:nfh))
allocate(restartFhTimes(1:nfh)) !not deallocated
read(cvalue,*)restart_fh(1:nfh)

! create a list of times at each restart_fh
call ESMF_ClockGet( clock, currTime=currTime, rc=rc )
if (ChkErr(rc,__LINE__,u_FILE_u)) return
do n = 1,nfh
fh_s = NINT(3600*restart_fh(n))
call ESMF_TimeIntervalSet(fhInterval, s=fh_s, rc=rc)
inquire(FILE='model_configure', EXIST=isPresent)
if (isPresent) then !model_configure exists. this is ufs run
CF_mc = ESMF_ConfigCreate(rc=rc)
call ESMF_ConfigLoadFile(config=CF_mc,filename='model_configure' ,rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return

nfh = ESMF_ConfigGetLen(config=CF_mc, label ='restart_fh:',rc=rc)
if (nfh .gt. 0) then
allocate(restart_fh(1:nfh))
allocate(restartFhTimes(1:nfh)) !not deallocated

call ESMF_ConfigGetAttribute(CF_mc,valueList=restart_fh,label='restart_fh:', rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return
! create a list of times at each restart_fh
call ESMF_ClockGet( clock, currTime=currTime, rc=rc )
if (ChkErr(rc,__LINE__,u_FILE_u)) return
restartFhTimes(n) = currTime + fhInterval
call ESMF_TimePrint(restartFhTimes(n), options="string", preString="restart_fh at ", unit=timestr, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (mastertask) then
if (mod(fh_s,dtime) /= 0) then
write(nu_diag,'(A)')trim(subname)//trim(timestr)//' will not be written'
else
write(nu_diag,'(A)')trim(subname)//trim(timestr)//' will be written'
do n = 1,nfh
fh_s = NINT(3600*restart_fh(n))
call ESMF_TimeIntervalSet(fhInterval, s=fh_s, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
restartFhTimes(n) = currTime + fhInterval
call ESMF_TimePrint(restartFhTimes(n), options="string", preString="restart_fh at ", unit=timestr, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (mastertask) then
if (mod(fh_s,dtime) /= 0) then
write(nu_diag,'(A)')trim(subname)//trim(timestr)//' will not be written'
else
write(nu_diag,'(A)')trim(subname)//trim(timestr)//' will be written'
end if
end if
end if
end do
deallocate(restart_fh)
end if
end do
deallocate(restart_fh)
end if !nfh>0
call ESMF_ConfigDestroy(CF_mc, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return
end if !model_configure

!----------------------------------------------------------------------------
! First cice initialization phase - before initializing grid info
Expand Down

0 comments on commit 9c98e3f

Please sign in to comment.