@@ -31,14 +31,14 @@ call h%open(filename, action, mpi, comp_lvl)
31
31
!! Opens hdf5 file
32
32
33
33
character(*), 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')
35
35
logical, intent(in) :: mpi !< .true.: use HDF5-MPI .false.: use serial HDF5
36
36
integer, intent(in), optional :: comp_lvl !< 0: no compression. 1-9: ZLIB compression, higher is more compressior
37
37
```
38
38
39
39
``` fortran
40
40
call 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
42
42
!! data loss can occur if program terminates before this procedure
43
43
!!
44
44
!! 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)
47
47
logical, intent(in), optional :: close_hdf5_interface
48
48
```
49
49
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
51
53
52
54
``` fortran
53
55
call h%flush()
54
- !! request operating system flush data to disk.
55
56
```
56
57
57
58
## Disk variable (dataset) inquiry
@@ -68,6 +69,7 @@ Get disk dataset shape (1D vector)
68
69
69
70
``` fortran
70
71
call h%shape(dataset_name, dims)
72
+
71
73
character(*), intent(in) :: dataset_name
72
74
integer(HSIZE_T), intent(out), allocatable :: dims(:)
73
75
```
@@ -93,15 +95,24 @@ character(*), intent(in) :: dname
93
95
Does dataset "dname" exist in this HDF5 file?
94
96
95
97
``` fortran
96
- exists = h%exist(dname)
98
+ tf = h%exist(dname)
99
+
97
100
character(*), intent(in) :: dname
98
101
```
99
102
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
+
100
111
Is dataset "dname" contiguous on disk?
101
112
102
113
``` fortran
103
114
tf = h%is_contig(dname)
104
- !! is dataset contiguous
115
+
105
116
character(*), intent(in) :: dname
106
117
```
107
118
@@ -140,18 +151,18 @@ character(*), intent(in) :: dname
140
151
141
152
``` fortran
142
153
call h%chunks(dname, chunk_size)
154
+
143
155
character(*), intent(in) :: dname
144
156
integer, intent(out) :: chunk_size(:)
145
157
```
146
158
147
159
## create dataset softlink
148
160
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:
150
162
151
163
``` 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
155
166
link !< soft link path to create
156
167
```
157
168
@@ -164,20 +175,21 @@ If overall dataset dimensions "dset_dims" is present, data is collectively gathe
164
175
Otherwise, h5fortran-mpi assumes that root has all the data to be written and ignores the workers.
165
176
166
177
``` 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)
168
179
!! write 0d..7d dataset
169
180
character(*), intent(in) :: dname
170
181
class(*), intent(in) :: value(..) !< array to write
171
182
integer, 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
173
184
integer, intent(in), optional :: chunk_size(rank(value)) !< override auto-chunking
174
185
logical, intent(in), optional :: compact !< faster I/O for sub-64 kB datasets
175
186
```
176
187
177
- Write dataset attribute (e.g. units or instrument):
188
+ Write dataset attribute (e.g. units or instrument)
178
189
179
190
``` fortran
180
191
call h%writeattr(dname, attr, attrval)
192
+
181
193
character(*), intent(in) :: dname, attr !< dataset name, attribute name
182
194
class(*), intent(in) :: attrval(:) !< character, real, integer
183
195
```
@@ -204,3 +216,9 @@ call h%readattr(dname, attr, attrval)
204
216
character(*), intent(in) :: dname, attr !< dataset name, attribute name
205
217
class(*), intent(inout) :: attrval(:) !< character scalar; real vector, integer vector
206
218
```
219
+
220
+ ## delete attribute
221
+
222
+ ``` fortran
223
+ call h%delete_attr(dname, attr)
224
+ ```
0 commit comments