Guido, Am 26.02.2017 um 17:11 schrieb Guido granda muñoz <[email protected]<mailto:[email protected]>>:
Hello, I am new in hdf5, and I recently encountered a problem. I am using fortran 90 and a fortran 90 hdf5 wrapper (https://github.com/galtay/sphray/tree/master/hdf5_wrapper) to read and write from many hdf5 files. The process of reading, modifying data and writing is done inside a do loop. I found that the code runs fine until a certain point when It shows the error message: ***Abort HDF5 : Unable to open HDF5 file in open_file()! file name : /mnt/su3ctm/ggranda/cp_test2/rep_-1_-1_-2/ivol31/galaxies.hdf5 I have checked out and the file exist, so that is not the problem. I think is something connected with hdf5. The code is the following: subroutine replications_translation(n_a,nsub,lbox,directory) ! subroutine to do the translations along all the the replications ! it makes use of the ! n_a: number of replications per axis ! nsub: number of subvolumes ! lbox: box size ! x: x coordinate ! y: y coordinate ! z: z coordinate ! directory: folder that contains the replications ! redshift: character that specifies the redshift (e.g. iz200) integer, intent(in) :: n_a,nsub real, dimension(:),allocatable :: x,y,z,dc,decl,ra real, intent(in) :: lbox character(*), intent(in) :: directory !character(5), intent(in) ::redshift character(2) :: temp_i,temp_j,temp_k,temp_subv integer :: i,j,k,l,ifile,dims(1),rank,count_l count_l=0 do i=-n_a,n_a write(temp_i,"(I2)") i do j=-n_a,n_a write(temp_j,"(I2)") j do k=-n_a,n_a write(temp_k,"(I2)") k do l=30,nsub-1 write(temp_subv,"(I2)") l call hdf5_open_file(ifile,directory//'rep_'//trim(adjustl(temp_i))//'_'//trim(adjustl(temp_j))//'_'//trim(adjustl(temp_k))//'/ivol'//trim(adjustl(temp_subv))//'/galaxies.hdf5',readonly=.false.) call hdf5_get_dimensions(ifile,'Output001/mhalo',rank,dims) allocate(x(dims(1)),y(dims(1)),z(dims(1)),dc(dims(1)),ra(dims(1)),decl(dims(1))) call hdf5_read_data(ifile,'Output001/xgal',x) call hdf5_read_data(ifile,'Output001/ygal',y) call hdf5_read_data(ifile,'Output001/zgal',z) x =x+i*lbox y =y+j*lbox z =z+k*lbox dc =sqrt(x**2.0+y**2.0+z**2.0) decl=asin(z/dc) ra =atan2(y,x) call hdf5_write_data(ifile,'Output001/xgal_t',x,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/xgal_t/Comment','X(lightcone) coordinate of this galaxy [Mpc/h]') call hdf5_write_data(ifile,'Output001/ygal_t',y,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/ygal_t/Comment','Y(lightcone) coordinate of this galaxy [Mpc/h]') call hdf5_write_data(ifile,'Output001/zgal_t',z,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/zgal_t/Comment','Z(lightcone) coordinate of this galaxy [Mpc/h]') call hdf5_write_data(ifile,'Output001/dc',dc,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/dc/Comment','Comoving distance [Mpc/h]') !print *, "check hdf5" call hdf5_write_data(ifile,'Output001/ra',ra,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/ra/Comment',"Right ascention") call hdf5_write_data(ifile,'Output001/decl',decl,overwrite=.true.) call hdf5_write_attribute(ifile,'Output001/decl/Comment',"Declination") call hdf5_close_file(ifile) print *, "Done with "//directory//'rep_'//trim(adjustl(temp_i))//'_'//trim(adjustl(temp_j))//'_'//trim(adjustl(temp_k))//'/ivol'//trim(adjustl(temp_subv))//'/galaxies.hdf5' deallocate(x,y,z,dc,ra,decl) count_l=count_l+1 print *, "number =",count_l enddo enddo enddo enddo Could you please help me with that? The number of files that I need to open, read, write is tremendous. So, I dont know if that is a limitation for hdf5 or if my code is written with not good practices and that is causing the crash. Thanks in advance, Have you checked for resource leakage? HDF5 is special in that way that a close of a file does not necessarily release all handles associated with the file. So, if you leave a handle to a dataset, attribute, data type, etc dangling for each file, after some time space is exhausted and HDF5 will crash on you in a weird way. Been there, done that. As you have not provided all your subroutines I cannot see if this is the case with your code. Regards, Mark Koennecke -- Guido _______________________________________________ Hdf-forum is for HDF software users discussion. [email protected]<mailto:[email protected]> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
_______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
