@@ -31,14 +31,14 @@ call h%open(filename, action, mpi, comp_lvl)
3131!! Opens hdf5 file
3232
3333character(*), intent(in) :: filename
34- character(*), intent(in), optional :: action !< 'r', 'w', 'rw', 'r+'
34+ character(*), intent(in), optional :: action !< 'r', 'r+', ' w', 'rw' (default 'r')
3535logical, intent(in) :: mpi !< .true.: use HDF5-MPI .false.: use serial HDF5
3636integer, intent(in), optional :: comp_lvl !< 0: no compression. 1-9: ZLIB compression, higher is more compressior
3737```
3838
3939``` fortran
4040call h%close(close_hdf5_interface)
41- !! This must be called on each HDF5 file to flush buffers to disk
41+ !! This must be called on each open file to flush buffers to disk
4242!! data loss can occur if program terminates before this procedure
4343!!
4444!! close_hdf5_interface is when you know you have exactly one HDF5 file in your
@@ -47,11 +47,12 @@ call h%close(close_hdf5_interface)
4747logical, intent(in), optional :: close_hdf5_interface
4848```
4949
50- To avoid memory leaks or corrupted files, always "close()" all hDF5 files before STOPping the Fortran program.
50+ To avoid memory leaks or corrupted files, always "close" files before STOPping the Fortran program.
51+
52+ ## Flush data to disk while file is open
5153
5254``` fortran
5355call h%flush()
54- !! request operating system flush data to disk.
5556```
5657
5758## Disk variable (dataset) inquiry
@@ -68,6 +69,7 @@ Get disk dataset shape (1D vector)
6869
6970``` fortran
7071call h%shape(dataset_name, dims)
72+
7173character(*), intent(in) :: dataset_name
7274integer(HSIZE_T), intent(out), allocatable :: dims(:)
7375```
@@ -93,15 +95,24 @@ character(*), intent(in) :: dname
9395Does dataset "dname" exist in this HDF5 file?
9496
9597``` fortran
96- exists = h%exist(dname)
98+ tf = h%exist(dname)
99+
97100character(*), intent(in) :: dname
98101```
99102
103+ Does attribute "attr" exist for object "obj" in this file?
104+
105+ ``` fortran
106+ tf = h%exist_attr(obj, attr)
107+
108+ character(*), intent(in) :: obj, attr
109+ ```
110+
100111Is dataset "dname" contiguous on disk?
101112
102113``` fortran
103114tf = h%is_contig(dname)
104- !! is dataset contiguous
115+
105116character(*), intent(in) :: dname
106117```
107118
@@ -140,18 +151,18 @@ character(*), intent(in) :: dname
140151
141152``` fortran
142153call h%chunks(dname, chunk_size)
154+
143155character(*), intent(in) :: dname
144156integer, intent(out) :: chunk_size(:)
145157```
146158
147159## create dataset softlink
148160
149- HDF5 can create dataset softlinks within an HDF5 file:
161+ One of the key features of HDF5 is the ability to create dataset softlinks within an HDF5 file:
150162
151163``` fortran
152- call h%softlink(tgt, link)
153-
154- character(*), intent(in) :: tgt, & !< target path to link dataset
164+ call h%softlink(target, link)
165+ character(*), intent(in) :: target, & !< target path to link dataset
155166 link !< soft link path to create
156167```
157168
@@ -164,20 +175,21 @@ If overall dataset dimensions "dset_dims" is present, data is collectively gathe
164175Otherwise, h5fortran-mpi assumes that root has all the data to be written and ignores the workers.
165176
166177``` fortran
167- call h%write(dname, value, dset_dims, istart, iend, chunk_size, compact)
178+ call h%write(dname, value, dset_dims, istart, iend, stride, chunk_size, compact)
168179!! write 0d..7d dataset
169180character(*), intent(in) :: dname
170181class(*), intent(in) :: value(..) !< array to write
171182integer, intent(in), dimension(rank(value)), optional :: dset_dims
172- integer, intent(in), optional, dimension(rank(value)) :: istart, iend !< array slicing for hyperslab
183+ integer, intent(in), optional, dimension(rank(value)) :: istart, iend, stride !< array slicing for hyperslab
173184integer, intent(in), optional :: chunk_size(rank(value)) !< override auto-chunking
174185logical, intent(in), optional :: compact !< faster I/O for sub-64 kB datasets
175186```
176187
177- Write dataset attribute (e.g. units or instrument):
188+ Write dataset attribute (e.g. units or instrument)
178189
179190``` fortran
180191call h%writeattr(dname, attr, attrval)
192+
181193character(*), intent(in) :: dname, attr !< dataset name, attribute name
182194class(*), intent(in) :: attrval(:) !< character, real, integer
183195```
@@ -204,3 +216,9 @@ call h%readattr(dname, attr, attrval)
204216character(*), intent(in) :: dname, attr !< dataset name, attribute name
205217class(*), intent(inout) :: attrval(:) !< character scalar; real vector, integer vector
206218```
219+
220+ ## delete attribute
221+
222+ ``` fortran
223+ call h%delete_attr(dname, attr)
224+ ```
0 commit comments