Skip to content

Commit faedff3

Browse files
committed
doc
1 parent 99862f0 commit faedff3

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

API.md

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ call h%open(filename, action, mpi, comp_lvl)
3131
!! Opens hdf5 file
3232
3333
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')
3535
logical, intent(in) :: mpi !< .true.: use HDF5-MPI .false.: use serial HDF5
3636
integer, intent(in), optional :: comp_lvl !< 0: no compression. 1-9: ZLIB compression, higher is more compressior
3737
```
3838

3939
```fortran
4040
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
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)
4747
logical, 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
5355
call 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
7071
call h%shape(dataset_name, dims)
72+
7173
character(*), intent(in) :: dataset_name
7274
integer(HSIZE_T), intent(out), allocatable :: dims(:)
7375
```
@@ -93,15 +95,24 @@ character(*), intent(in) :: dname
9395
Does dataset "dname" exist in this HDF5 file?
9496

9597
```fortran
96-
exists = h%exist(dname)
98+
tf = h%exist(dname)
99+
97100
character(*), 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+
100111
Is dataset "dname" contiguous on disk?
101112

102113
```fortran
103114
tf = h%is_contig(dname)
104-
!! is dataset contiguous
115+
105116
character(*), intent(in) :: dname
106117
```
107118

@@ -140,18 +151,18 @@ character(*), intent(in) :: dname
140151

141152
```fortran
142153
call h%chunks(dname, chunk_size)
154+
143155
character(*), intent(in) :: dname
144156
integer, 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
164175
Otherwise, 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
169180
character(*), intent(in) :: dname
170181
class(*), intent(in) :: value(..) !< array to write
171182
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
173184
integer, intent(in), optional :: chunk_size(rank(value)) !< override auto-chunking
174185
logical, 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
180191
call h%writeattr(dname, attr, attrval)
192+
181193
character(*), intent(in) :: dname, attr !< dataset name, attribute name
182194
class(*), intent(in) :: attrval(:) !< character, real, integer
183195
```
@@ -204,3 +216,9 @@ call h%readattr(dname, attr, attrval)
204216
character(*), intent(in) :: dname, attr !< dataset name, attribute name
205217
class(*), 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

Comments
 (0)