eulerian_set_ReadH5HUT Subroutine

private impure subroutine eulerian_set_ReadH5HUT(this, iter, time, list, step)

Reads Eulerian data using H5HUT.

Type Bound

eulerian_set

Arguments

Type IntentOptional Attributes Name
class(eulerian_set), intent(inout) :: this

An Eulerian Set

integer, intent(out) :: iter

Iteration at write

real(kind=wp), intent(out) :: time

Time at write

character(len=str8), intent(in), optional :: list(:)

Names of fields to write

integer, intent(in), optional :: step

User supplied step to open


Calls

proc~~eulerian_set_readh5hut~~CallsGraph proc~eulerian_set_readh5hut eulerian_set%eulerian_set_ReadH5HUT none~readsingle eulerian_set%ReadSingle proc~eulerian_set_readh5hut->none~readsingle proc~eulerian_set_getindex eulerian_set%eulerian_set_GetIndex proc~eulerian_set_readh5hut->proc~eulerian_set_getindex proc~h5hut_obj_final h5hut_obj%h5hut_obj_Final proc~eulerian_set_readh5hut->proc~h5hut_obj_final proc~h5hut_obj_init h5hut_obj%h5hut_obj_Init proc~eulerian_set_readh5hut->proc~h5hut_obj_init proc~h5hut_obj_jumptostep h5hut_obj%h5hut_obj_JumpToStep proc~eulerian_set_readh5hut->proc~h5hut_obj_jumptostep proc~h5hut_obj_lasttimestep h5hut_obj%h5hut_obj_LastTimeStep proc~eulerian_set_readh5hut->proc~h5hut_obj_lasttimestep proc~eulerian_set_readsingleh5hut eulerian_set%eulerian_set_ReadSingleH5HUT none~readsingle->proc~eulerian_set_readsingleh5hut proc~eulerian_set_readsinglehdf5 eulerian_set%eulerian_set_ReadSingleHDF5 none~readsingle->proc~eulerian_set_readsinglehdf5 none~get~3 hashtbl_obj%Get proc~eulerian_set_getindex->none~get~3 proc~hashtbl_obj_hashstring hashtbl_obj%hashtbl_obj_HashString proc~eulerian_set_getindex->proc~hashtbl_obj_hashstring proc~hdf5_obj_final hdf5_obj%hdf5_obj_Final proc~h5hut_obj_final->proc~hdf5_obj_final proc~hdf5_obj_init hdf5_obj%hdf5_obj_Init proc~h5hut_obj_init->proc~hdf5_obj_init none~readattributes hdf5_obj%ReadAttributes proc~h5hut_obj_jumptostep->none~readattributes proc~h5hut_obj_setstep h5hut_obj%h5hut_obj_SetStep proc~h5hut_obj_jumptostep->proc~h5hut_obj_setstep proc~h5hut_obj_lasttimestep->none~readattributes proc~h5hut_obj_getnsteps h5hut_obj%h5hut_obj_GetNSteps proc~h5hut_obj_lasttimestep->proc~h5hut_obj_getnsteps proc~h5hut_obj_lasttimestep->proc~h5hut_obj_setstep proc~hashtbl_obj_get_int4 hashtbl_obj%hashtbl_obj_Get_int4 none~get~3->proc~hashtbl_obj_get_int4 proc~hashtbl_obj_get_int8 hashtbl_obj%hashtbl_obj_Get_int8 none~get~3->proc~hashtbl_obj_get_int8 proc~hashtbl_obj_get_real_dp hashtbl_obj%hashtbl_obj_Get_real_dp none~get~3->proc~hashtbl_obj_get_real_dp proc~hashtbl_obj_get_real_sp hashtbl_obj%hashtbl_obj_Get_real_sp none~get~3->proc~hashtbl_obj_get_real_sp proc~hdf5_obj_readattributes0d hdf5_obj%hdf5_obj_ReadAttributes0D none~readattributes->proc~hdf5_obj_readattributes0d proc~hdf5_obj_readattributes1d hdf5_obj%hdf5_obj_ReadAttributes1D none~readattributes->proc~hdf5_obj_readattributes1d cell cell proc~eulerian_set_readsingleh5hut->cell proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~eulerian_set_readsingleh5hut->proc~eulerian_obj_updateghostcells proc~eulerian_set_readsinglehdf5->cell proc~eulerian_set_readsinglehdf5->proc~eulerian_obj_updateghostcells proc~hdf5_obj_readgroupnames hdf5_obj%hdf5_obj_ReadGroupNames proc~h5hut_obj_getnsteps->proc~hdf5_obj_readgroupnames proc~hdf5_obj_creategroup hdf5_obj%hdf5_obj_CreateGroup proc~h5hut_obj_setstep->proc~hdf5_obj_creategroup h5garbage_collect_f h5garbage_collect_f proc~hdf5_obj_final->h5garbage_collect_f proc~hashtbl_obj_final hashtbl_obj%hashtbl_obj_Final proc~hdf5_obj_final->proc~hashtbl_obj_final h5open_f h5open_f proc~hdf5_obj_init->h5open_f proc~hashtbl_obj_init hashtbl_obj%hashtbl_obj_Init proc~hdf5_obj_init->proc~hashtbl_obj_init proc~eulerian_obj_updateghostcells_x eulerian_obj_base%eulerian_obj_UpdateGhostCells_x proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_x proc~eulerian_obj_updateghostcells_y eulerian_obj_base%eulerian_obj_UpdateGhostCells_y proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_y proc~eulerian_obj_updateghostcells_z eulerian_obj_base%eulerian_obj_UpdateGhostCells_z proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_z none~get~2 sllist_obj%Get proc~hashtbl_obj_get_int4->none~get~2 proc~hashtbl_obj_get_int8->none~get~2 proc~hashtbl_obj_get_real_dp->none~get~2 proc~hashtbl_obj_get_real_sp->none~get~2 proc~hdf5_obj_creategroup->proc~hashtbl_obj_hashstring h5gcreate_f h5gcreate_f proc~hdf5_obj_creategroup->h5gcreate_f proc~hashtbl_obj_put hashtbl_obj%hashtbl_obj_Put proc~hdf5_obj_creategroup->proc~hashtbl_obj_put proc~hdf5_obj_closegroup hdf5_obj%hdf5_obj_CloseGroup proc~hdf5_obj_creategroup->proc~hdf5_obj_closegroup proc~hdf5_obj_fixgroupname hdf5_obj%hdf5_obj_FixGroupName proc~hdf5_obj_creategroup->proc~hdf5_obj_fixgroupname h5aclose_f h5aclose_f proc~hdf5_obj_readattributes0d->h5aclose_f h5aget_space_f h5aget_space_f proc~hdf5_obj_readattributes0d->h5aget_space_f h5aget_type_f h5aget_type_f proc~hdf5_obj_readattributes0d->h5aget_type_f h5aopen_f h5aopen_f proc~hdf5_obj_readattributes0d->h5aopen_f h5aread_f h5aread_f proc~hdf5_obj_readattributes0d->h5aread_f h5sclose_f h5sclose_f proc~hdf5_obj_readattributes0d->h5sclose_f h5sget_simple_extent_dims_f h5sget_simple_extent_dims_f proc~hdf5_obj_readattributes0d->h5sget_simple_extent_dims_f proc~hdf5_obj_readattributes0d->proc~hdf5_obj_closegroup proc~hdf5_obj_getgroupobject hdf5_obj%hdf5_obj_GetGroupObject proc~hdf5_obj_readattributes0d->proc~hdf5_obj_getgroupobject proc~hdf5_obj_opengroup hdf5_obj%hdf5_obj_OpenGroup proc~hdf5_obj_readattributes0d->proc~hdf5_obj_opengroup proc~hdf5_obj_readattributes1d->h5aclose_f proc~hdf5_obj_readattributes1d->h5aget_space_f proc~hdf5_obj_readattributes1d->h5aget_type_f proc~hdf5_obj_readattributes1d->h5aopen_f proc~hdf5_obj_readattributes1d->h5aread_f proc~hdf5_obj_readattributes1d->h5sclose_f proc~hdf5_obj_readattributes1d->h5sget_simple_extent_dims_f proc~hdf5_obj_readattributes1d->proc~hdf5_obj_closegroup proc~hdf5_obj_readattributes1d->proc~hdf5_obj_getgroupobject proc~hdf5_obj_readattributes1d->proc~hdf5_obj_opengroup h5gn_members_f h5gn_members_f proc~hdf5_obj_readgroupnames->h5gn_members_f h5iget_name_f h5iget_name_f proc~hdf5_obj_readgroupnames->h5iget_name_f h5oclose_f h5oclose_f proc~hdf5_obj_readgroupnames->h5oclose_f h5oget_info_f h5oget_info_f proc~hdf5_obj_readgroupnames->h5oget_info_f h5oopen_by_idx_f h5oopen_by_idx_f proc~hdf5_obj_readgroupnames->h5oopen_by_idx_f proc~hdf5_obj_readgroupnames->proc~hdf5_obj_fixgroupname proc~sllist_obj_get_int4 sllist_obj%sllist_obj_Get_int4 none~get~2->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8 sllist_obj%sllist_obj_Get_int8 none~get~2->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp sllist_obj%sllist_obj_Get_real_dp none~get~2->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp sllist_obj%sllist_obj_Get_real_sp none~get~2->proc~sllist_obj_get_real_sp proc~eulerian_obj_updateghostcells_x->cell mpi_irecv mpi_irecv proc~eulerian_obj_updateghostcells_x->mpi_irecv mpi_isend mpi_isend proc~eulerian_obj_updateghostcells_x->mpi_isend mpi_waitall mpi_waitall proc~eulerian_obj_updateghostcells_x->mpi_waitall proc~eulerian_obj_updateghostcells_y->cell proc~eulerian_obj_updateghostcells_y->mpi_irecv proc~eulerian_obj_updateghostcells_y->mpi_isend proc~eulerian_obj_updateghostcells_y->mpi_waitall proc~eulerian_obj_updateghostcells_z->cell proc~eulerian_obj_updateghostcells_z->mpi_irecv proc~eulerian_obj_updateghostcells_z->mpi_isend proc~eulerian_obj_updateghostcells_z->mpi_waitall proc~sllist_obj_put sllist_obj%sllist_obj_Put proc~hashtbl_obj_put->proc~sllist_obj_put proc~hdf5_obj_closegroup->proc~hashtbl_obj_hashstring proc~hdf5_obj_closegroup->proc~hdf5_obj_fixgroupname proc~hdf5_obj_closegroup->proc~hdf5_obj_getgroupobject h5gclose_f h5gclose_f proc~hdf5_obj_closegroup->h5gclose_f proc~hashtbl_obj_remove hashtbl_obj%hashtbl_obj_Remove proc~hdf5_obj_closegroup->proc~hashtbl_obj_remove proc~hdf5_obj_getgroupobject->none~get~3 proc~hdf5_obj_getgroupobject->proc~hashtbl_obj_hashstring proc~hdf5_obj_getgroupobject->proc~hdf5_obj_fixgroupname proc~hdf5_obj_opengroup->proc~hashtbl_obj_hashstring proc~hdf5_obj_opengroup->proc~hashtbl_obj_put proc~hdf5_obj_opengroup->proc~hdf5_obj_fixgroupname proc~hdf5_obj_opengroup->proc~hdf5_obj_getgroupobject h5oopen_f h5oopen_f proc~hdf5_obj_opengroup->h5oopen_f proc~sllist_obj_remove sllist_obj%sllist_obj_Remove proc~hashtbl_obj_remove->proc~sllist_obj_remove proc~sllist_obj_get_int4->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp->proc~sllist_obj_get_real_sp proc~sllist_obj_put->proc~sllist_obj_put

Source Code

    impure subroutine eulerian_set_ReadH5HUT(this,iter,time,list,step)
      !> Reads Eulerian data using H5HUT.
      implicit none
      class(eulerian_set), intent(inout):: this                                !! An Eulerian Set
      integer,             intent(out)  :: iter                                !! Iteration at write
      real(wp),            intent(out)  :: time                                !! Time at write
      character(str8),     intent(in),   &
                               optional :: list(:)                             !! Names of fields to write
      integer,             intent(in),   &
                               optional :: step                                !! User supplied step to open
      ! Work variables
      type(h5hut_obj) :: h5                                                    !! H5hut structure
      integer         :: n,ind

      ! Nothing to read, if empty
      if (.not.allocated(this%field)) return

      ! Open file
      call h5%Initialize(trim(adjustl(this%read_file)),"R",this%parallel)

      if (.not.present(step)) then
        ! Jump to last step
        call h5%LastTimeStep(iter,time)
      else
        ! Jump to desired step
        call h5%JumpToStep(step,iter,time)
      end if

      if (.not.present(list)) then
        ! Read all fields
        do n=1,size(this%field)
          call this%ReadSingle(h5,n)
        end do
      else
        do  n=1,size(list)
          ! Get index of this Eulerian_obj
          ind = this%GetIndex(list(n))
          if (ind.lt.1) call this%parallel%Stop('Unable to find '//list(n)//' in Eulerian_set')

          call this%ReadSingle(h5,ind)
        end do
      end if

      ! Close file
      call h5%Finalize()

      return
    end subroutine eulerian_set_ReadH5HUT