Read_DGModel3D_t Subroutine

public subroutine Read_DGModel3D_t(this, fileName)

Arguments

TypeIntentOptionalAttributesName
class(DGModel3D_t), intent(inout) :: this
character, intent(in) :: fileName

Calls

proc~~read_dgmodel3d_t~~CallsGraph proc~read_dgmodel3d_t Read_DGModel3D_t interface~open_hdf5 Open_HDF5 proc~read_dgmodel3d_t->interface~open_hdf5 interface~readarray_hdf5 ReadArray_HDF5 proc~read_dgmodel3d_t->interface~readarray_hdf5 proc~close_hdf5 Close_HDF5 proc~read_dgmodel3d_t->proc~close_hdf5 proc~datasetexists_hdf5 DatasetExists_HDF5 proc~read_dgmodel3d_t->proc~datasetexists_hdf5 proc~open_hdf5_serial Open_HDF5_serial interface~open_hdf5->proc~open_hdf5_serial proc~open_hdf5_parallel Open_HDF5_parallel interface~open_hdf5->proc~open_hdf5_parallel proc~readarray_hdf5_real_r1_parallel ReadArray_HDF5_real_r1_parallel interface~readarray_hdf5->proc~readarray_hdf5_real_r1_parallel proc~readarray_hdf5_real_r3_parallel ReadArray_HDF5_real_r3_parallel interface~readarray_hdf5->proc~readarray_hdf5_real_r3_parallel proc~readarray_hdf5_real_r1_serial ReadArray_HDF5_real_r1_serial interface~readarray_hdf5->proc~readarray_hdf5_real_r1_serial proc~readarray_hdf5_int32_r1_parallel ReadArray_HDF5_int32_r1_parallel interface~readarray_hdf5->proc~readarray_hdf5_int32_r1_parallel proc~readarray_hdf5_real_r4_parallel ReadArray_HDF5_real_r4_parallel interface~readarray_hdf5->proc~readarray_hdf5_real_r4_parallel proc~readarray_hdf5_real_r4_serial ReadArray_HDF5_real_r4_serial interface~readarray_hdf5->proc~readarray_hdf5_real_r4_serial proc~readarray_hdf5_real_r5_serial ReadArray_HDF5_real_r5_serial interface~readarray_hdf5->proc~readarray_hdf5_real_r5_serial proc~readarray_hdf5_real_r3_serial ReadArray_HDF5_real_r3_serial interface~readarray_hdf5->proc~readarray_hdf5_real_r3_serial proc~readarray_hdf5_real_r2_serial ReadArray_HDF5_real_r2_serial interface~readarray_hdf5->proc~readarray_hdf5_real_r2_serial proc~readarray_hdf5_int32_r1_serial ReadArray_HDF5_int32_r1_serial interface~readarray_hdf5->proc~readarray_hdf5_int32_r1_serial proc~readarray_hdf5_real_r2_parallel ReadArray_HDF5_real_r2_parallel interface~readarray_hdf5->proc~readarray_hdf5_real_r2_parallel proc~readarray_hdf5_int32_r2_parallel ReadArray_HDF5_int32_r2_parallel interface~readarray_hdf5->proc~readarray_hdf5_int32_r2_parallel proc~readarray_hdf5_int32_r2_serial ReadArray_HDF5_int32_r2_serial interface~readarray_hdf5->proc~readarray_hdf5_int32_r2_serial h5fclose_f h5fclose_f proc~close_hdf5->h5fclose_f h5close_f h5close_f proc~close_hdf5->h5close_f h5lexists_f h5lexists_f proc~datasetexists_hdf5->h5lexists_f h5sclose_f h5sclose_f proc~readarray_hdf5_real_r1_parallel->h5sclose_f h5screate_simple_f h5screate_simple_f proc~readarray_hdf5_real_r1_parallel->h5screate_simple_f h5pcreate_f h5pcreate_f proc~readarray_hdf5_real_r1_parallel->h5pcreate_f h5dclose_f h5dclose_f proc~readarray_hdf5_real_r1_parallel->h5dclose_f h5sselect_hyperslab_f h5sselect_hyperslab_f proc~readarray_hdf5_real_r1_parallel->h5sselect_hyperslab_f h5dget_space_f h5dget_space_f proc~readarray_hdf5_real_r1_parallel->h5dget_space_f h5dopen_f h5dopen_f proc~readarray_hdf5_real_r1_parallel->h5dopen_f h5pset_dxpl_mpio_f h5pset_dxpl_mpio_f proc~readarray_hdf5_real_r1_parallel->h5pset_dxpl_mpio_f h5dget_type_f h5dget_type_f proc~readarray_hdf5_real_r1_parallel->h5dget_type_f h5dread_f h5dread_f proc~readarray_hdf5_real_r1_parallel->h5dread_f h5pclose_f h5pclose_f proc~readarray_hdf5_real_r1_parallel->h5pclose_f h5tclose_f h5tclose_f proc~readarray_hdf5_real_r1_parallel->h5tclose_f proc~readarray_hdf5_real_r3_parallel->h5sclose_f proc~readarray_hdf5_real_r3_parallel->h5screate_simple_f proc~readarray_hdf5_real_r3_parallel->h5pcreate_f proc~readarray_hdf5_real_r3_parallel->h5dclose_f proc~readarray_hdf5_real_r3_parallel->h5sselect_hyperslab_f proc~readarray_hdf5_real_r3_parallel->h5dget_space_f proc~readarray_hdf5_real_r3_parallel->h5dopen_f proc~readarray_hdf5_real_r3_parallel->h5pset_dxpl_mpio_f proc~readarray_hdf5_real_r3_parallel->h5dget_type_f proc~readarray_hdf5_real_r3_parallel->h5dread_f proc~readarray_hdf5_real_r3_parallel->h5pclose_f proc~readarray_hdf5_real_r3_parallel->h5tclose_f h5open_f h5open_f proc~open_hdf5_serial->h5open_f h5fcreate_f h5fcreate_f proc~open_hdf5_serial->h5fcreate_f h5fopen_f h5fopen_f proc~open_hdf5_serial->h5fopen_f proc~readarray_hdf5_real_r1_serial->h5dclose_f proc~readarray_hdf5_real_r1_serial->h5dopen_f proc~readarray_hdf5_real_r1_serial->h5dread_f h5kind_to_type h5kind_to_type proc~readarray_hdf5_real_r1_serial->h5kind_to_type proc~readarray_hdf5_int32_r1_parallel->h5sclose_f proc~readarray_hdf5_int32_r1_parallel->h5screate_simple_f proc~readarray_hdf5_int32_r1_parallel->h5pcreate_f proc~readarray_hdf5_int32_r1_parallel->h5dclose_f proc~readarray_hdf5_int32_r1_parallel->h5sselect_hyperslab_f proc~readarray_hdf5_int32_r1_parallel->h5dget_space_f proc~readarray_hdf5_int32_r1_parallel->h5dopen_f proc~readarray_hdf5_int32_r1_parallel->h5pset_dxpl_mpio_f proc~readarray_hdf5_int32_r1_parallel->h5dget_type_f proc~readarray_hdf5_int32_r1_parallel->h5dread_f proc~readarray_hdf5_int32_r1_parallel->h5pclose_f proc~readarray_hdf5_int32_r1_parallel->h5tclose_f proc~readarray_hdf5_real_r4_parallel->h5sclose_f proc~readarray_hdf5_real_r4_parallel->h5screate_simple_f proc~readarray_hdf5_real_r4_parallel->h5pcreate_f proc~readarray_hdf5_real_r4_parallel->h5dclose_f proc~readarray_hdf5_real_r4_parallel->h5sselect_hyperslab_f proc~readarray_hdf5_real_r4_parallel->h5dget_space_f proc~readarray_hdf5_real_r4_parallel->h5dopen_f proc~readarray_hdf5_real_r4_parallel->h5pset_dxpl_mpio_f proc~readarray_hdf5_real_r4_parallel->h5dget_type_f proc~readarray_hdf5_real_r4_parallel->h5dread_f proc~readarray_hdf5_real_r4_parallel->h5pclose_f proc~readarray_hdf5_real_r4_parallel->h5tclose_f h5pset_fapl_mpio_f h5pset_fapl_mpio_f proc~open_hdf5_parallel->h5pset_fapl_mpio_f proc~open_hdf5_parallel->h5open_f proc~open_hdf5_parallel->h5fcreate_f proc~open_hdf5_parallel->h5pcreate_f proc~open_hdf5_parallel->h5pclose_f proc~open_hdf5_parallel->h5fopen_f proc~readarray_hdf5_real_r4_serial->h5dclose_f proc~readarray_hdf5_real_r4_serial->h5dopen_f proc~readarray_hdf5_real_r4_serial->h5dread_f proc~readarray_hdf5_real_r4_serial->h5kind_to_type proc~readarray_hdf5_real_r5_serial->h5dclose_f proc~readarray_hdf5_real_r5_serial->h5dopen_f proc~readarray_hdf5_real_r5_serial->h5dread_f proc~readarray_hdf5_real_r5_serial->h5kind_to_type proc~readarray_hdf5_real_r3_serial->h5dclose_f proc~readarray_hdf5_real_r3_serial->h5dopen_f proc~readarray_hdf5_real_r3_serial->h5dread_f proc~readarray_hdf5_real_r3_serial->h5kind_to_type proc~readarray_hdf5_real_r2_serial->h5dclose_f proc~readarray_hdf5_real_r2_serial->h5dopen_f proc~readarray_hdf5_real_r2_serial->h5dread_f proc~readarray_hdf5_real_r2_serial->h5kind_to_type proc~readarray_hdf5_int32_r1_serial->h5dclose_f proc~readarray_hdf5_int32_r1_serial->h5dopen_f proc~readarray_hdf5_int32_r1_serial->h5dread_f proc~readarray_hdf5_int32_r1_serial->h5kind_to_type proc~readarray_hdf5_real_r2_parallel->h5sclose_f proc~readarray_hdf5_real_r2_parallel->h5screate_simple_f proc~readarray_hdf5_real_r2_parallel->h5pcreate_f proc~readarray_hdf5_real_r2_parallel->h5dclose_f proc~readarray_hdf5_real_r2_parallel->h5sselect_hyperslab_f proc~readarray_hdf5_real_r2_parallel->h5dget_space_f proc~readarray_hdf5_real_r2_parallel->h5dopen_f proc~readarray_hdf5_real_r2_parallel->h5pset_dxpl_mpio_f proc~readarray_hdf5_real_r2_parallel->h5dget_type_f proc~readarray_hdf5_real_r2_parallel->h5dread_f proc~readarray_hdf5_real_r2_parallel->h5pclose_f proc~readarray_hdf5_real_r2_parallel->h5tclose_f proc~readarray_hdf5_int32_r2_parallel->h5sclose_f proc~readarray_hdf5_int32_r2_parallel->h5screate_simple_f proc~readarray_hdf5_int32_r2_parallel->h5pcreate_f proc~readarray_hdf5_int32_r2_parallel->h5dclose_f proc~readarray_hdf5_int32_r2_parallel->h5sselect_hyperslab_f proc~readarray_hdf5_int32_r2_parallel->h5dget_space_f proc~readarray_hdf5_int32_r2_parallel->h5dopen_f proc~readarray_hdf5_int32_r2_parallel->h5pset_dxpl_mpio_f proc~readarray_hdf5_int32_r2_parallel->h5dget_type_f proc~readarray_hdf5_int32_r2_parallel->h5dread_f proc~readarray_hdf5_int32_r2_parallel->h5pclose_f proc~readarray_hdf5_int32_r2_parallel->h5tclose_f proc~readarray_hdf5_int32_r2_serial->h5dclose_f proc~readarray_hdf5_int32_r2_serial->h5dopen_f proc~readarray_hdf5_int32_r2_serial->h5dread_f proc~readarray_hdf5_int32_r2_serial->h5kind_to_type

Contents

Source Code


Source Code

  subroutine Read_DGModel3D_t(this,fileName)
    implicit none
    class(DGModel3D_t),intent(inout) :: this
    character(*),intent(in) :: fileName
    ! Local
    integer(HID_T) :: fileId
    integer(HID_T) :: solOffset(1:4)
    integer :: firstElem,ivar
    character(LEN=:),allocatable :: dsetName

    if(this%mesh%decomp%mpiEnabled) then
      call Open_HDF5(fileName,H5F_ACC_RDWR_F,fileId, &
                     this%mesh%decomp%mpiComm)
    else
      call Open_HDF5(fileName,H5F_ACC_RDWR_F,fileId)
    endif

    if(this%mesh%decomp%mpiEnabled) then
      firstElem = this%mesh%decomp%offsetElem(this%mesh%decomp%rankId+1)
      solOffset(1:4) = (/0,0,0,firstElem/)
    endif

    ! A variable whose dataset is absent keeps the value it was initialized
    ! with; see Read_DGModel2D_t for why the check is here.
    do ivar = 1,this%solution%nvar
      dsetName = '/controlgrid/solution/'//trim(this%solution%meta(ivar)%name)
      if(.not. DatasetExists_HDF5(fileId,dsetName)) then
        print*,__FILE__," : Pickup file holds no ",trim(dsetName), &
          " - keeping the initialized value for this variable."
        cycle
      endif
      if(this%mesh%decomp%mpiEnabled) then
        call ReadArray_HDF5(fileId,dsetName, &
                            this%solution%interior(:,:,:,:,ivar),solOffset)
      else
        call ReadArray_HDF5(fileId,dsetName, &
                            this%solution%interior(:,:,:,:,ivar))
      endif
    enddo

    call Close_HDF5(fileId)

    ! Publish the restored solution to the device. Read_DGModel1D_t has always
    ! done this; without it a GPU build restarts from whatever the device
    ! happened to hold (zeros, after Init) and silently discards the pickup
    ! file - the first device-to-host copy of the run, in CalculateEntropy or
    ! the first tendency evaluation, overwrites everything just read. This is
    ! the counterpart of the UpdateHost() that Write_DGModel3D_t performs before
    ! writing, and is a no-op on a CPU build.
    call this%solution%UpdateDevice()

  endsubroutine Read_DGModel3D_t