failed if dataset does not exists
empty datasets are not written out
This commit is contained in:
parent
27322847a4
commit
63c417fbe0
|
@ -82,7 +82,8 @@ module HDF5_utilities
|
|||
HDF5_addGroup, &
|
||||
HDF5_read, &
|
||||
HDF5_write, &
|
||||
HDF5_setLink
|
||||
HDF5_setLink, &
|
||||
HDF5_objectExists
|
||||
contains
|
||||
|
||||
subroutine HDF5_utilities_init
|
||||
|
@ -241,18 +242,46 @@ end function HDF5_openGroup
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief close a group
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine HDF5_closeGroup(ID)
|
||||
subroutine HDF5_closeGroup(group_id)
|
||||
|
||||
implicit none
|
||||
integer(HID_T), intent(in) :: ID
|
||||
integer(HID_T), intent(in) :: group_id
|
||||
integer(HDF5_ERR_TYPE) :: hdferr
|
||||
|
||||
call h5gclose_f(ID, hdferr)
|
||||
if (hdferr < 0) call IO_error(1_pInt,ext_msg = 'HDF5_closeGroup: h5gclose_f (el is ID)', el = int(ID,pInt))
|
||||
call h5gclose_f(group_id, hdferr)
|
||||
if (hdferr < 0) call IO_error(1_pInt,ext_msg = 'HDF5_closeGroup: h5gclose_f (el is ID)', el = int(group_id,pInt))
|
||||
|
||||
end subroutine HDF5_closeGroup
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief check whether a group or a dataset exists
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
logical function HDF5_objectExists(loc_id,path)
|
||||
|
||||
implicit none
|
||||
integer(HID_T), intent(in) :: loc_id
|
||||
character(len=*), intent(in), optional :: path
|
||||
integer(HDF5_ERR_TYPE) :: hdferr
|
||||
character(len=256) :: p
|
||||
|
||||
if (present(path)) then
|
||||
p = trim(path)
|
||||
else
|
||||
p = '.'
|
||||
endif
|
||||
|
||||
call h5lexists_f(loc_id, p, HDF5_objectExists, hdferr)
|
||||
if (hdferr < 0) call IO_error(1_pInt,ext_msg = 'HDF5_objectExists: h5oexists_by_name_f')
|
||||
|
||||
if(HDF5_objectExists) then
|
||||
call h5oexists_by_name_f(loc_id, p, HDF5_objectExists, hdferr)
|
||||
if (hdferr < 0) call IO_error(1_pInt,ext_msg = 'HDF5_objectExists: h5oexists_by_name_f')
|
||||
endif
|
||||
|
||||
end function HDF5_objectExists
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief adds a string attribute to the path given relative to the location
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -162,7 +162,8 @@ subroutine results_writeVectorDataset(group,dataset,label,SIunit)
|
|||
|
||||
groupHandle = results_openGroup(group)
|
||||
call HDF5_write(groupHandle,dataset,label)
|
||||
call HDF5_addAttribute(groupHandle,'Unit',SIunit,label)
|
||||
if (HDF5_objectExists(groupHandle,label)) &
|
||||
call HDF5_addAttribute(groupHandle,'Unit',SIunit,label)
|
||||
call HDF5_closeGroup(groupHandle)
|
||||
|
||||
end subroutine results_writeVectorDataset
|
||||
|
|
Loading…
Reference in New Issue