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,

-- 
Guido
_______________________________________________
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

Reply via email to