@@ -315,7 +315,7 @@ end subroutine MPAS_stream_mgr_finalize!}}}
315315 !-----------------------------------------------------------------------
316316 subroutine MPAS_stream_mgr_create_stream (manager , streamID , direction , filename , &
317317 filenameInterval , referenceTime , recordInterval , &
318- realPrecision , clobberMode , ioType , ierr ) !{{{
318+ realPrecision , clobberMode , gattrUpdate , ioType , ierr ) !{{{
319319
320320 use mpas_io, only : MPAS_IO_PNETCDF
321321
@@ -332,6 +332,7 @@ subroutine MPAS_stream_mgr_create_stream(manager, streamID, direction, filename,
332332 type (MPAS_TimeInterval_type), intent (in ), optional :: recordInterval
333333 integer , intent (in ), optional :: realPrecision
334334 integer , intent (in ), optional :: clobberMode
335+ integer , intent (in ), optional :: gattrUpdate
335336 integer , intent (in ), optional :: ioType
336337 integer , intent (out ), optional :: ierr
337338
@@ -379,6 +380,11 @@ subroutine MPAS_stream_mgr_create_stream(manager, streamID, direction, filename,
379380 else
380381 new_stream % clobber_mode = MPAS_STREAM_CLOBBER_NEVER
381382 end if
383+ if (present (gattrUpdate)) then
384+ new_stream % gattr_update = gattrUpdate
385+ else
386+ new_stream % gattr_update = MPAS_STREAM_GATTR_UPDATE_YES
387+ end if
382388 if (present (ioType)) then
383389 new_stream % io_type = ioType
384390 else
@@ -1772,6 +1778,9 @@ subroutine MPAS_stream_mgr_set_property_int(manager, streamID, propertyName, pro
17721778 case (MPAS_STREAM_PROPERTY_CLOBBER)
17731779 stream_cursor % clobber_mode = propertyValue
17741780
1781+ case (MPAS_STREAM_PROPERTY_GATTR_UPDATE)
1782+ stream_cursor % gattr_update = propertyValue
1783+
17751784 case (MPAS_STREAM_PROPERTY_IOTYPE)
17761785 stream_cursor % io_type = propertyValue
17771786
@@ -2005,6 +2014,9 @@ subroutine MPAS_stream_mgr_get_property_int(manager, streamID, propertyName, pro
20052014 case (MPAS_STREAM_PROPERTY_CLOBBER)
20062015 propertyValue = stream_cursor % clobber_mode
20072016
2017+ case (MPAS_STREAM_PROPERTY_GATTR_UPDATE)
2018+ propertyValue = stream_cursor % gattr_update
2019+
20082020 case (MPAS_STREAM_PROPERTY_IOTYPE)
20092021 propertyValue = stream_cursor % io_type
20102022
@@ -4244,7 +4256,7 @@ end subroutine gen_random
42444256 integer :: output_interval
42454257 type (MPAS_timeInterval_type) :: filename_interval
42464258
4247- if (direction == MPAS_STREAM_OUTPUT) then
4259+ if (direction == MPAS_STREAM_OUTPUT .and. stream % gattr_update == MPAS_STREAM_GATTR_UPDATE_YES ) then
42484260
42494261 !
42504262 ! Write attributes to stream
@@ -5712,7 +5724,7 @@ end subroutine MPAS_stream_mgr_begin_iteration !}}}
57125724 logical function MPAS_stream_mgr_get_next_stream(manager, streamID, directionProperty, activeProperty, & !{{{
57135725 immutableProperty, filenameTemplateProperty, &
57145726 referenceTimeProperty, recordIntervalProperty, precisionProperty, &
5715- filenameIntervalProperty, clobberProperty) result(validStream)
5727+ filenameIntervalProperty, clobberProperty, gattrUpdateProperty ) result(validStream)
57165728
57175729 implicit none
57185730
@@ -5727,6 +5739,7 @@ logical function MPAS_stream_mgr_get_next_stream(manager, streamID, directionPro
57275739 integer, intent(out), optional :: precisionProperty !< Output: Integer describing the precision of the stream
57285740 character (len=StrKIND), intent(out), optional :: filenameIntervalProperty !< Output: String containing the filename interval for the stream
57295741 integer, intent(out), optional :: clobberProperty !< Output: Interger describing the clobber mode of the stream
5742+ integer, intent(out), optional :: gattrUpdateProperty !< Output: Interger describing whether to update global attributes
57305743
57315744 integer :: threadNum
57325745
@@ -5794,6 +5807,10 @@ logical function MPAS_stream_mgr_get_next_stream(manager, streamID, directionPro
57945807 clobberProperty = manager % currentStream % clobber_mode
57955808 end if
57965809
5810+ if ( present(gattrUpdateProperty) ) then
5811+ gattrUpdateProperty = manager % currentStream % gattr_update
5812+ end if
5813+
57975814 end function MPAS_stream_mgr_get_next_stream !}}}
57985815
57995816
@@ -5916,7 +5933,7 @@ end module mpas_stream_manager
59165933
59175934
59185935subroutine stream_mgr_create_stream_c(manager_c, streamID_c, direction_c, filename_c, filename_intv_c, ref_time_c, rec_intv_c, &
5919- immutable_c, precision_c, clobber_c, iotype_c, ierr_c) bind(c) !{{{
5936+ immutable_c, precision_c, clobber_c, gattr_update_c, iotype_c, ierr_c) bind(c) !{{{
59205937
59215938 use mpas_c_interfacing, only : mpas_c_to_f_string
59225939 use iso_c_binding, only : c_char, c_int, c_ptr, c_f_pointer
@@ -5925,7 +5942,8 @@ subroutine stream_mgr_create_stream_c(manager_c, streamID_c, direction_c, filena
59255942 MPAS_STREAM_PROPERTY_FILENAME_INTV, MPAS_STREAM_PROPERTY_REF_TIME, &
59265943 MPAS_STREAM_PROPERTY_RECORD_INTV, MPAS_STREAM_PROPERTY_PRECISION, &
59275944 MPAS_STREAM_PROPERTY_CLOBBER, MPAS_STREAM_CLOBBER_NEVER, MPAS_STREAM_CLOBBER_APPEND, &
5928- MPAS_STREAM_CLOBBER_TRUNCATE, MPAS_STREAM_CLOBBER_OVERWRITE, MPAS_STREAM_PROPERTY_IOTYPE
5945+ MPAS_STREAM_CLOBBER_TRUNCATE, MPAS_STREAM_CLOBBER_OVERWRITE, MPAS_STREAM_PROPERTY_IOTYPE, &
5946+ MPAS_STREAM_PROPERTY_GATTR_UPDATE, MPAS_STREAM_GATTR_UPDATE_YES, MPAS_STREAM_GATTR_UPDATE_NO
59295947 use mpas_stream_manager, only : MPAS_stream_mgr_create_stream, MPAS_stream_mgr_set_property
59305948 use mpas_kind_types, only : StrKIND
59315949 use mpas_derived_types, only : MPAS_LOG_ERR
@@ -5945,13 +5963,14 @@ subroutine stream_mgr_create_stream_c(manager_c, streamID_c, direction_c, filena
59455963 integer(kind=c_int) :: immutable_c
59465964 integer(kind=c_int) :: precision_c
59475965 integer(kind=c_int) :: clobber_c
5966+ integer(kind=c_int) :: gattr_update_c
59485967 integer(kind=c_int) :: iotype_c
59495968 integer(kind=c_int) :: ierr_c
59505969
59515970 type (MPAS_streamManager_type), pointer :: manager
59525971 character(len=StrKIND) :: streamID, filename, filename_interval, reference_time, record_interval
59535972 integer :: direction, immutable, prec, ierr
5954- integer :: clobber_mode, iotype
5973+ integer :: clobber_mode, iotype, gattr_update
59555974
59565975 call c_f_pointer(manager_c, manager)
59575976 call mpas_c_to_f_string(streamID_c, streamID)
@@ -5982,6 +6001,12 @@ subroutine stream_mgr_create_stream_c(manager_c, streamID_c, direction_c, filena
59826001 clobber_mode = MPAS_STREAM_CLOBBER_NEVER
59836002 end if
59846003
6004+ if (gattr_update_c == 0) then
6005+ gattr_update = MPAS_STREAM_GATTR_UPDATE_NO
6006+ else
6007+ gattr_update = MPAS_STREAM_GATTR_UPDATE_YES
6008+ end if
6009+
59856010 if (iotype_c == 0) then
59866011 iotype = MPAS_IO_PNETCDF
59876012 else if (iotype_c == 1) then
@@ -6017,10 +6042,11 @@ subroutine stream_mgr_create_stream_c(manager_c, streamID_c, direction_c, filena
60176042 end if
60186043 call MPAS_stream_mgr_set_property(manager, streamID, MPAS_STREAM_PROPERTY_PRECISION, prec, ierr=ierr)
60196044 call MPAS_stream_mgr_set_property(manager, streamID, MPAS_STREAM_PROPERTY_CLOBBER, clobber_mode, ierr=ierr)
6045+ call MPAS_stream_mgr_set_property(manager, streamID, MPAS_STREAM_PROPERTY_GATTR_UPDATE, gattr_update, ierr=ierr)
60206046 call MPAS_stream_mgr_set_property(manager, streamID, MPAS_STREAM_PROPERTY_IOTYPE, iotype, ierr=ierr)
60216047 else
60226048 call MPAS_stream_mgr_create_stream(manager, streamID, direction, filename, realPrecision=prec, &
6023- clobberMode=clobber_mode, ioType=iotype, ierr=ierr)
6049+ clobberMode=clobber_mode, gattrUpdate=gattr_update, ioType=iotype, ierr=ierr)
60246050 end if
60256051
60266052 if (reference_time /= ' initial_time' ) then
0 commit comments