Skip to content

Commit b46ba35

Browse files
committed
example: reopen same file, same mode
1 parent ee81204 commit b46ba35

File tree

4 files changed

+41
-17
lines changed

4 files changed

+41
-17
lines changed

cmake/check_hdf5.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ program main
1717
print '(a,i0)', "H5F_ACC_TRUNC_F = ", H5F_ACC_TRUNC_F
1818
print '(a,i0)', "H5F_ACC_RDWR_F = ", H5F_ACC_RDWR_F
1919

20-
if(H5F_ACC_RDONLY_F == H5F_ACC_TRUNC_F .or. H5F_ACC_RDONLY_F == H5F_ACC_RDWR_F) then
20+
if(any(H5F_ACC_RDONLY_F == [H5F_ACC_TRUNC_F, H5F_ACC_RDWR_F])) then
2121
error stop "H5F_ACC_RDONLY, H5F_ACC_TRUNC, H5F_ACC_RDWR are not all distinct"
2222
endif
2323

example/CMakeLists.txt

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.22...3.27)
1+
cmake_minimum_required(VERSION 3.22...4.1)
22

33
project(h5fortranExample
44
LANGUAGES C CXX Fortran)
@@ -11,21 +11,13 @@ find_package(h5fortran CONFIG REQUIRED)
1111
add_library(fortran_interface fortran_interface.f90)
1212
target_link_libraries(fortran_interface PRIVATE h5fortran::h5fortran)
1313

14-
add_executable(ex_fcn ex_fcn.f90)
15-
target_link_libraries(ex_fcn PRIVATE h5fortran::h5fortran)
16-
add_test(NAME Fortran_fcn COMMAND ex_fcn)
14+
foreach(t IN ITEMS ex_fcn ex_oo ex_oo3d char_repeat_read vtk_write)
1715

18-
add_executable(ex_oo ex_oo.f90)
19-
target_link_libraries(ex_oo PRIVATE h5fortran::h5fortran)
20-
add_test(NAME Fortran_oo COMMAND ex_oo)
16+
add_executable(${t} ${t}.f90)
17+
target_link_libraries(${t} PRIVATE h5fortran::h5fortran)
18+
add_test(NAME Fortran_${t} COMMAND ${t})
2119

22-
add_executable(repeat_char_read char_repeat_read.f90)
23-
target_link_libraries(repeat_char_read PRIVATE h5fortran::h5fortran)
24-
25-
## VTK HDF5 write example
26-
add_executable(vtk_write vtk_write.f90)
27-
target_link_libraries(vtk_write PRIVATE h5fortran::h5fortran)
28-
add_test(NAME VTK COMMAND vtk_write ${CMAKE_CURRENT_BINARY_DIR}/vtk.hdf)
20+
endforeach()
2921

3022
## C, C++ examples
3123

@@ -45,11 +37,15 @@ add_test(NAME CPP_fcn COMMAND cpp_fcn)
4537
get_property(test_names DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY TESTS)
4638
set_property(TEST ${test_names} PROPERTY WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
4739

40+
if(NOT DEFINED LINUX AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
41+
set(LINUX true)
42+
endif()
43+
4844
if(WIN32)
4945
set_property(TEST ${test_names} PROPERTY
5046
ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:${ZLIB_INCLUDE_DIRS}/../bin;PATH=path_list_prepend:${h5fortran_DIR}/../bin"
5147
)
52-
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
48+
elseif(LINUX)
5349
set_property(TEST ${test_names} PROPERTY
5450
ENVIRONMENT_MODIFICATION "LD_LIBRARY_PATH=path_list_prepend:${ZLIB_INCLUDE_DIRS}/../lib;LD_LIBRARY_PATH=path_list_prepend:${h5fortran_DIR}/../lib"
5551
)

example/ex_oo3d.f90

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
program demo
2+
3+
use h5fortran, only : hdf5_file
4+
5+
implicit none
6+
7+
character(len=*), parameter :: h5file = 'test_oo3d.h5'
8+
9+
type(hdf5_file) :: h5f
10+
11+
real, allocatable :: v3(:, :, :)
12+
13+
allocate(v3(2, 4, 3))
14+
15+
v3 = 0.
16+
17+
call h5f % open(h5file, action='rw')
18+
call h5f % write('/value1', 123.)
19+
call h5f % close()
20+
21+
print '(2a)', 'opening HDF5 file: ', h5file
22+
call h5f % open(h5file, comp_lvl = 1)
23+
24+
print '(a)', 'Writing 3D array to dataset /value2'
25+
call h5f % write('/value2', v3)
26+
call h5f % close()
27+
28+
end program

example/vtk_write.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ program vtk_write
2626
real, allocatable :: Iterations(:,:,:), IterationsGradient(:,:,:,:)
2727

2828
call get_command_argument(1, filename, status=ierr)
29-
if(ierr /= 0) error stop "please give filename to write"
29+
if(ierr /= 0) filename = "vtk_hdf_example.h5"
3030

3131
call h % open(filename, 'w')
3232

0 commit comments

Comments
 (0)