TABLE OF CONTENTS


etsf_io_dielectric_get

[ Top ] [ etsf_dielectric ] [ Methods ]

NAME

etsf_io_dielectric_get

FUNCTION

Read an opened ETSF file to get data related to the given group. Only associated pointers of argument @folder will be accessed. If any accessed variable is missing, this routine returns an error (usually an access_mode_id of argument error_data set to ERROR_MODE_INQ). Any other errors implies a return with @lstat = .false..

INPUTS

OUTPUT

SIDE EFFECTS

NOTES

This file has been automatically generated by the autogen_subroutines.py script. Any change you would bring to it will systematically be overwritten.

SOURCE

subroutine etsf_io_dielectric_get(ncid, folder, lstat, error_data, use_atomic_units)

  !Arguments ------------------------------------
  integer, intent(in) :: ncid
  type(etsf_dielectric), intent(inout) :: folder
  logical, intent(out) :: lstat
  type(etsf_io_low_error), intent(out) :: error_data
  logical, optional, intent(in) :: use_atomic_units

  !Local variables-------------------------------
  character(len = *), parameter :: my_name = 'etsf_io_dielectric_get'
  logical :: my_use_atomic_units
  integer,allocatable :: varid(:)
  integer,allocatable :: start(:)
  integer,allocatable :: count(:)
  integer :: len
  character(etsf_charlen) :: flag


  ! *************************************************************************

!DEBUG
!write (*,*) 'etsf_io_dielectric_get : enter'
!ENDDEBUG

  ! Get values for optional arguments, set default.
  if (present(use_atomic_units)) then
    my_use_atomic_units = use_atomic_units
  else
    my_use_atomic_units = .true.
  end if
  
  allocate(varid(19))
  
  if (associated(folder%frequencies_dielectric_function)) then
    call etsf_io_low_read_var(ncid, "frequencies_dielectric_function", &
                            & folder%frequencies_dielectric_function, &
                            & lstat, ncvarid = varid(1), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (associated(folder%qpoints_dielectric_function)) then
    call etsf_io_low_read_var(ncid, "qpoints_dielectric_function", &
                            & folder%qpoints_dielectric_function, &
                            & lstat, ncvarid = varid(2), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (associated(folder%qpoints_gamma_limit)) then
    call etsf_io_low_read_var(ncid, "qpoints_gamma_limit", &
                            & folder%qpoints_gamma_limit, &
                            & lstat, ncvarid = varid(3), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%dielectric_function)) then
    call etsf_io_low_read_var(ncid, "dielectric_function", &
                            & folder%dielectric_function, &
                            & lstat, ncvarid = varid(4), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%dielectric_function_head)) then
    call etsf_io_low_read_var(ncid, "dielectric_function_head", &
                            & folder%dielectric_function_head, &
                            & lstat, ncvarid = varid(5), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%dielectric_function_lower_wing)) then
    call etsf_io_low_read_var(ncid, "dielectric_function_lower_wing", &
                            & folder%dielectric_function_lower_wing, &
                            & lstat, ncvarid = varid(6), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%dielectric_function_upper_wing)) then
    call etsf_io_low_read_var(ncid, "dielectric_function_upper_wing", &
                            & folder%dielectric_function_upper_wing, &
                            & lstat, ncvarid = varid(7), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_dielectric_function)) then
    call etsf_io_low_read_var(ncid, "inverse_dielectric_function", &
                            & folder%inverse_dielectric_function, &
                            & lstat, ncvarid = varid(8), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_dielectric_function_head)) then
    call etsf_io_low_read_var(ncid, "inverse_dielectric_function_head", &
                            & folder%inverse_dielectric_function_head, &
                            & lstat, ncvarid = varid(9), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_dielectric_function_lower_wing)) then
    call etsf_io_low_read_var(ncid, "inverse_dielectric_function_lower_wing", &
                            & folder%inverse_dielectric_function_lower_wing, &
                            & lstat, ncvarid = varid(10), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_dielectric_function_upper_wing)) then
    call etsf_io_low_read_var(ncid, "inverse_dielectric_function_upper_wing", &
                            & folder%inverse_dielectric_function_upper_wing, &
                            & lstat, ncvarid = varid(11), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%polarizability)) then
    call etsf_io_low_read_var(ncid, "polarizability", &
                            & folder%polarizability, &
                            & lstat, ncvarid = varid(12), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%polarizability_head)) then
    call etsf_io_low_read_var(ncid, "polarizability_head", &
                            & folder%polarizability_head, &
                            & lstat, ncvarid = varid(13), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%polarizability_lower_wing)) then
    call etsf_io_low_read_var(ncid, "polarizability_lower_wing", &
                            & folder%polarizability_lower_wing, &
                            & lstat, ncvarid = varid(14), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%polarizability_upper_wing)) then
    call etsf_io_low_read_var(ncid, "polarizability_upper_wing", &
                            & folder%polarizability_upper_wing, &
                            & lstat, ncvarid = varid(15), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_polarizability)) then
    call etsf_io_low_read_var(ncid, "inverse_polarizability", &
                            & folder%inverse_polarizability, &
                            & lstat, ncvarid = varid(16), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_polarizability_head)) then
    call etsf_io_low_read_var(ncid, "inverse_polarizability_head", &
                            & folder%inverse_polarizability_head, &
                            & lstat, ncvarid = varid(17), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_polarizability_lower_wing)) then
    call etsf_io_low_read_var(ncid, "inverse_polarizability_lower_wing", &
                            & folder%inverse_polarizability_lower_wing, &
                            & lstat, ncvarid = varid(18), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  if (etsf_io_low_var_associated(folder%inverse_polarizability_upper_wing)) then
    call etsf_io_low_read_var(ncid, "inverse_polarizability_upper_wing", &
                            & folder%inverse_polarizability_upper_wing, &
                            & lstat, ncvarid = varid(19), &
                            & error_data = error_data)
    if (.not. lstat) then
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
  end if
  
  deallocate(varid)

!DEBUG
!write (*,*) 'etsf_io_dielectric_get : exit'
!ENDDEBUG

end subroutine etsf_io_dielectric_get