Write a compressed 64-bit float dataset of dimension 4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=hid_t), | intent(in) | :: | loc_id | HDF5 file or group identifier |
||
character(len=*), | intent(in) | :: | dset_name | Name of the dataset to create |
||
integer, | intent(in) | :: | rank | Number of dimensions of dataspace |
||
integer(kind=HSIZE_T), | intent(in), | dimension(*) | :: | dims | Array of the size of each dimension |
|
real(kind=Float64), | intent(in), | dimension(dims(1),dims(2),dims(3),dims(4)) | :: | buf | Buffer with data to be written to the dataset |
|
integer, | intent(out) | :: | error | HDF5 error code |
||
logical, | intent(in), | optional | :: | compress | Flag to compress |
|
integer, | intent(in), | optional | :: | level | Compression level |
subroutine h5ltmake_compressed_dataset_double_f_4(loc_id,&
dset_name, rank, dims, buf, error, compress, level )
!+ Write a compressed 64-bit float dataset of dimension 4
IMPLICIT NONE
integer(hid_t), intent(in) :: loc_id
!+ HDF5 file or group identifier
character(len=*), intent(in) :: dset_name
!+ Name of the dataset to create
integer, intent(in) :: rank
!+ Number of dimensions of dataspace
integer(HSIZE_T), dimension(*), intent(in) :: dims
!+ Array of the size of each dimension
real(Float64), intent(in), &
dimension(dims(1),dims(2),dims(3),dims(4)) :: buf
!+ Buffer with data to be written to the dataset
integer, intent(out) :: error
!+ HDF5 error code
logical, intent(in), optional :: compress
!+ Flag to compress
integer, intent(in), optional :: level
!+ Compression level
integer(HID_T) :: did, sid, plist_id
integer(HSIZE_T) :: cdims(4)
logical :: do_chunk
integer :: c
do_chunk=default_compress
if(present(compress)) then
do_chunk = compress
endif
c = default_compression_level
if(present(level)) then
c = level
endif
if(.not.compress_data) then
call h5ltmake_dataset_double_f(loc_id, dset_name, rank, dims, buf, error)
else
call h5screate_simple_f(rank, dims, sid, error)
call h5pcreate_f(H5P_DATASET_CREATE_F, plist_id, error)
if(do_chunk) then
call h5pset_shuffle_f(plist_id, error)
call h5pset_deflate_f(plist_id, c, error)
call chunk_size(Float64, dims, cdims)
call h5pset_chunk_f(plist_id, rank, cdims, error)
endif
call h5dcreate_f(loc_id, dset_name, H5T_NATIVE_DOUBLE, sid, &
did, error, dcpl_id=plist_id)
call h5dwrite_f(did, H5T_NATIVE_DOUBLE, buf, dims, error)
call h5sclose_f(sid, error)
call h5pclose_f(plist_id, error)
call h5dclose_f(did, error)
endif
end subroutine h5ltmake_compressed_dataset_double_f_4