diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md
index 758b1c5..d0ff439 100644
--- a/docs/ChangeLog.md
+++ b/docs/ChangeLog.md
@@ -1,3 +1,23 @@
+
+# Tag name: mosart1.1.08
+### Originator(s): samrabin
+### Date: Jan 14, 2025
+### One-line Summary: Standardize time metadata
+
+Standardizes a dimension name of output variable time_bounds, as well as attributes for that plus mcdate, mcsec, mdcur, and mscur.
+
+Contributors: Adam Phillips, Erik Kluzek
+
+Fixes ESCOMP/MOSART#53
+Contributes to https://github.com/ESCOMP/CTSM/issues/1693
+
+Testing: standard testing (ekluzek)
+ izumi ---- OK
+ derecho -- OK
+
+See https://github.com/ESCOMP/MOSART/pull/66 for more details
+Contributes to https://github.com/ESCOMP/CTSM/pull/2052
+
# Tag name: mosart1.1.07
### Originator(s): erik
diff --git a/src/cpl/nuopc/rof_import_export.F90 b/src/cpl/nuopc/rof_import_export.F90
index 08dbc60..80cc7c7 100644
--- a/src/cpl/nuopc/rof_import_export.F90
+++ b/src/cpl/nuopc/rof_import_export.F90
@@ -113,10 +113,8 @@ subroutine advertise_fields(gcomp, flds_scalar_name, rc)
call fldlist_add(fldsToRof_num, fldsToRof, 'Flrl_rofsub')
call fldlist_add(fldsToRof_num, fldsToRof, 'Flrl_rofi')
call fldlist_add(fldsToRof_num, fldsToRof, 'Flrl_irrig')
- if ( ctl%rof_from_glc ) then
- call fldlist_add(fldsToRof_num, fldsToRof, 'Fgrg_rofl') ! liq runoff from glc
- call fldlist_add(fldsToRof_num, fldsToRof, 'Fgrg_rofi') ! ice runoff from glc
- end if
+ call fldlist_add(fldsToRof_num, fldsToRof, 'Fgrg_rofl') ! liq runoff from glc
+ call fldlist_add(fldsToRof_num, fldsToRof, 'Fgrg_rofi') ! ice runoff from glc
do n = 1,fldsToRof_num
call NUOPC_Advertise(importState, standardName=fldsToRof(n)%stdname, &
diff --git a/src/riverroute/mosart_histfile.F90 b/src/riverroute/mosart_histfile.F90
index 316a5a3..61f96d9 100644
--- a/src/riverroute/mosart_histfile.F90
+++ b/src/riverroute/mosart_histfile.F90
@@ -151,7 +151,7 @@ module mosart_histfile
type(file_desc_t), target :: nfid(max_tapes) ! file ids
type(file_desc_t), target :: ncid_hist(max_tapes) ! file ids for history restart files
integer :: time_dimid ! time dimension id
- integer :: hist_interval_dimid ! time bounds dimension id
+ integer :: nbnd_dimid ! time bounds dimension id
integer :: strlen_dimid ! string dimension id
!-----------------------------------------------------------------------
@@ -697,7 +697,7 @@ subroutine htape_create (t, histrest)
call ncd_defdim(lnfid, 'string_length', 8, strlen_dimid)
if ( .not. lhistrest )then
- call ncd_defdim(lnfid, 'hist_interval', 2, hist_interval_dimid)
+ call ncd_defdim(lnfid, 'nbnd', 2, nbnd_dimid)
call ncd_defdim(lnfid, 'time', ncd_unlimited, time_dimid)
if (mainproc)then
write(iulog,*) trim(subname),' : Successfully defined netcdf history file ',t
@@ -766,7 +766,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 (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, &
@@ -790,22 +790,28 @@ subroutine htape_timeconst(t, mode)
long_name = 'current date (YYYYMMDD) at end of ' // step_or_bounds
call ncd_defvar(nfid(t) , 'mcdate', ncd_int, 1, dim1id , varid, &
long_name = long_name)
+ call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
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 = long_name, units='s')
+ call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
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 = long_name)
+ call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
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 = long_name)
+ call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
call ncd_defvar(nfid(t) , 'nstep' , ncd_int, 1, dim1id , varid, &
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
+ dim2id(1) = nbnd_dimid; dim2id(2) = time_dimid
+ if (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')
+ long_name = 'time interval endpoints', &
+ units=str)
+ call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
end if
dim2id(1) = strlen_dimid; dim2id(2) = time_dimid
@@ -840,7 +846,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 (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