w90_wannier90_readwrite_read Subroutine

public subroutine w90_wannier90_readwrite_read(settings, band_plot, dis_control, dis_spheres, dis_manifold, fermi_energy_list, fermi_surface_data, output_file, wvfn_read, wann_control, real_space_ham, kpoint_path, w90_system, tran, print_output, wann_plot, ws_region, real_lattice, w90_calculation, bohr, symmetrize_eps, num_bands, num_kpts, num_wann, optimisation, calc_only_A, cp_pp, gamma_only, lsitesymmetry, use_bloch_phases, seedname, stdout, error, comm)

Uses

  • proc~~w90_wannier90_readwrite_read~~UsesGraph proc~w90_wannier90_readwrite_read w90_wannier90_readwrite_read module~w90_constants w90_constants proc~w90_wannier90_readwrite_read->module~w90_constants module~w90_utility w90_utility proc~w90_wannier90_readwrite_read->module~w90_utility module~w90_utility->module~w90_constants module~w90_comms w90_comms module~w90_utility->module~w90_comms module~w90_comms->module~w90_constants module~w90_error_base w90_error_base module~w90_comms->module~w90_error_base

Read parameters and calculate derived values

Note on parallelization: this function should be called from the root node only!

Arguments

Type IntentOptional Attributes Name
type(settings_type), intent(inout) :: settings
type(band_plot_type), intent(inout) :: band_plot
type(dis_control_type), intent(inout) :: dis_control
type(dis_spheres_type), intent(inout) :: dis_spheres
type(dis_manifold_type), intent(inout) :: dis_manifold
real(kind=dp), intent(inout), allocatable :: fermi_energy_list(:)
type(fermi_surface_plot_type), intent(inout) :: fermi_surface_data
type(output_file_type), intent(inout) :: output_file
type(wvfn_read_type), intent(inout) :: wvfn_read
type(wann_control_type), intent(inout) :: wann_control
type(real_space_ham_type), intent(inout) :: real_space_ham
type(kpoint_path_type), intent(inout) :: kpoint_path
type(w90_system_type), intent(inout) :: w90_system
type(transport_type), intent(inout) :: tran
type(print_output_type), intent(inout) :: print_output
type(wannier_plot_type), intent(inout) :: wann_plot
type(ws_region_type), intent(inout) :: ws_region
real(kind=dp), intent(inout) :: real_lattice(3,3)
type(w90_calculation_type), intent(inout) :: w90_calculation
real(kind=dp), intent(in) :: bohr
real(kind=dp), intent(inout) :: symmetrize_eps
integer, intent(inout) :: num_bands
integer, intent(inout) :: num_kpts
integer, intent(inout) :: num_wann
integer, intent(inout) :: optimisation
logical, intent(out) :: calc_only_A
logical, intent(out) :: cp_pp
logical, intent(inout) :: gamma_only
logical, intent(inout) :: lsitesymmetry
logical, intent(out) :: use_bloch_phases
character(len=*), intent(in) :: seedname
integer, intent(in) :: stdout
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

Calls

proc~~w90_wannier90_readwrite_read~~CallsGraph proc~w90_wannier90_readwrite_read w90_wannier90_readwrite_read proc~set_error_input set_error_input proc~w90_wannier90_readwrite_read->proc~set_error_input proc~w90_readwrite_read_algorithm_control w90_readwrite_read_algorithm_control proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_algorithm_control proc~w90_readwrite_read_dis_manifold w90_readwrite_read_dis_manifold proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_dis_manifold proc~w90_readwrite_read_explicit_kpath w90_readwrite_read_explicit_kpath proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_explicit_kpath proc~w90_readwrite_read_fermi_energy w90_readwrite_read_fermi_energy proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_fermi_energy proc~w90_readwrite_read_gamma_only w90_readwrite_read_gamma_only proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_gamma_only proc~w90_readwrite_read_kpath w90_readwrite_read_kpath proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_kpath proc~w90_readwrite_read_units w90_readwrite_read_units proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_units proc~w90_readwrite_read_verbosity w90_readwrite_read_verbosity proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_verbosity proc~w90_readwrite_read_ws_data w90_readwrite_read_ws_data proc~w90_wannier90_readwrite_read->proc~w90_readwrite_read_ws_data proc~w90_wannier90_readwrite_read_band_plot w90_wannier90_readwrite_read_band_plot proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_band_plot proc~w90_wannier90_readwrite_read_bloch_phase w90_wannier90_readwrite_read_bloch_phase proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_bloch_phase proc~w90_wannier90_readwrite_read_constrained_centres w90_wannier90_readwrite_read_constrained_centres proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_constrained_centres proc~w90_wannier90_readwrite_read_disentangle w90_wannier90_readwrite_read_disentangle proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_disentangle proc~w90_wannier90_readwrite_read_dist_cutoff w90_wannier90_readwrite_read_dist_cutoff proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_dist_cutoff proc~w90_wannier90_readwrite_read_fermi_surface w90_wannier90_readwrite_read_fermi_surface proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_fermi_surface proc~w90_wannier90_readwrite_read_hamil w90_wannier90_readwrite_read_hamil proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_hamil proc~w90_wannier90_readwrite_read_one_dim w90_wannier90_readwrite_read_one_dim proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_one_dim proc~w90_wannier90_readwrite_read_outfiles w90_wannier90_readwrite_read_outfiles proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_outfiles proc~w90_wannier90_readwrite_read_plot_info w90_wannier90_readwrite_read_plot_info proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_plot_info proc~w90_wannier90_readwrite_read_post_proc w90_wannier90_readwrite_read_post_proc proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_post_proc proc~w90_wannier90_readwrite_read_restart w90_wannier90_readwrite_read_restart proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_restart proc~w90_wannier90_readwrite_read_sym w90_wannier90_readwrite_read_sym proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_sym proc~w90_wannier90_readwrite_read_transport w90_wannier90_readwrite_read_transport proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_transport proc~w90_wannier90_readwrite_read_w90_calcs w90_wannier90_readwrite_read_w90_calcs proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_w90_calcs proc~w90_wannier90_readwrite_read_wann_plot w90_wannier90_readwrite_read_wann_plot proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_wann_plot proc~w90_wannier90_readwrite_read_wannierise w90_wannier90_readwrite_read_wannierise proc~w90_wannier90_readwrite_read->proc~w90_wannier90_readwrite_read_wannierise proc~comms_sync_error comms_sync_error proc~set_error_input->proc~comms_sync_error proc~set_base_error set_base_error proc~set_error_input->proc~set_base_error proc~w90_readwrite_get_keyword w90_readwrite_get_keyword proc~w90_readwrite_read_algorithm_control->proc~w90_readwrite_get_keyword proc~w90_readwrite_read_dis_manifold->proc~set_error_input proc~w90_readwrite_read_dis_manifold->proc~w90_readwrite_get_keyword proc~set_error_alloc set_error_alloc proc~w90_readwrite_read_explicit_kpath->proc~set_error_alloc proc~set_error_dealloc set_error_dealloc proc~w90_readwrite_read_explicit_kpath->proc~set_error_dealloc proc~w90_readwrite_get_block_length w90_readwrite_get_block_length proc~w90_readwrite_read_explicit_kpath->proc~w90_readwrite_get_block_length proc~w90_readwrite_get_keyword_explicit_kpath w90_readwrite_get_keyword_explicit_kpath proc~w90_readwrite_read_explicit_kpath->proc~w90_readwrite_get_keyword_explicit_kpath proc~w90_readwrite_read_explicit_kpath_points w90_readwrite_read_explicit_kpath_points proc~w90_readwrite_read_explicit_kpath->proc~w90_readwrite_read_explicit_kpath_points proc~w90_readwrite_read_fermi_energy->proc~set_error_input proc~w90_readwrite_read_fermi_energy->proc~set_error_alloc proc~w90_readwrite_read_fermi_energy->proc~w90_readwrite_get_keyword proc~w90_readwrite_read_gamma_only->proc~set_error_input proc~w90_readwrite_read_gamma_only->proc~w90_readwrite_get_keyword proc~w90_readwrite_read_kpath->proc~set_error_input proc~w90_readwrite_read_kpath->proc~set_error_alloc proc~w90_readwrite_read_kpath->proc~set_error_dealloc proc~w90_readwrite_read_kpath->proc~w90_readwrite_get_block_length proc~w90_readwrite_read_kpath->proc~w90_readwrite_get_keyword proc~w90_readwrite_get_keyword_kpath w90_readwrite_get_keyword_kpath proc~w90_readwrite_read_kpath->proc~w90_readwrite_get_keyword_kpath proc~w90_readwrite_read_units->proc~set_error_input proc~w90_readwrite_read_units->proc~w90_readwrite_get_keyword proc~mpirank mpirank proc~w90_readwrite_read_verbosity->proc~mpirank proc~w90_readwrite_read_verbosity->proc~w90_readwrite_get_keyword proc~w90_readwrite_read_ws_data->proc~set_error_input proc~w90_readwrite_read_ws_data->proc~w90_readwrite_get_keyword proc~w90_readwrite_get_keyword_vector w90_readwrite_get_keyword_vector proc~w90_readwrite_read_ws_data->proc~w90_readwrite_get_keyword_vector proc~w90_readwrite_get_vector_length w90_readwrite_get_vector_length proc~w90_readwrite_read_ws_data->proc~w90_readwrite_get_vector_length proc~w90_wannier90_readwrite_read_band_plot->proc~set_error_input proc~w90_wannier90_readwrite_read_band_plot->proc~set_error_alloc proc~w90_wannier90_readwrite_read_band_plot->proc~set_error_dealloc proc~w90_wannier90_readwrite_read_band_plot->proc~w90_readwrite_get_keyword proc~w90_readwrite_get_range_vector w90_readwrite_get_range_vector proc~w90_wannier90_readwrite_read_band_plot->proc~w90_readwrite_get_range_vector proc~w90_wannier90_readwrite_read_bloch_phase->proc~set_error_input proc~w90_wannier90_readwrite_read_bloch_phase->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_constrained_centres->proc~set_error_input proc~w90_wannier90_readwrite_read_constrained_centres->proc~w90_readwrite_get_block_length proc~w90_readwrite_get_centre_constraints w90_readwrite_get_centre_constraints proc~w90_wannier90_readwrite_read_constrained_centres->proc~w90_readwrite_get_centre_constraints proc~w90_wannier90_readwrite_read_disentangle->proc~set_error_input proc~w90_wannier90_readwrite_read_disentangle->proc~set_error_alloc proc~w90_wannier90_readwrite_read_disentangle->proc~w90_readwrite_get_keyword proc~w90_readwrite_get_keyword_block w90_readwrite_get_keyword_block proc~w90_wannier90_readwrite_read_disentangle->proc~w90_readwrite_get_keyword_block proc~w90_wannier90_readwrite_read_dist_cutoff->proc~set_error_input proc~w90_wannier90_readwrite_read_dist_cutoff->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_fermi_surface->proc~set_error_input proc~w90_wannier90_readwrite_read_fermi_surface->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_hamil->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_hamil->proc~w90_readwrite_get_keyword_vector proc~w90_wannier90_readwrite_read_one_dim->proc~set_error_input proc~w90_wannier90_readwrite_read_one_dim->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_outfiles->proc~set_error_input proc~w90_wannier90_readwrite_read_outfiles->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_plot_info->proc~set_error_input proc~w90_wannier90_readwrite_read_plot_info->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_post_proc->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_restart->proc~set_error_input proc~set_error_file set_error_file proc~w90_wannier90_readwrite_read_restart->proc~set_error_file proc~w90_wannier90_readwrite_read_restart->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_sym->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_transport->proc~set_error_input proc~w90_wannier90_readwrite_read_transport->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_w90_calcs->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_wann_plot->proc~set_error_input proc~w90_wannier90_readwrite_read_wann_plot->proc~set_error_alloc proc~w90_wannier90_readwrite_read_wann_plot->proc~set_error_dealloc proc~w90_wannier90_readwrite_read_wann_plot->proc~w90_readwrite_get_keyword proc~w90_wannier90_readwrite_read_wann_plot->proc~w90_readwrite_get_keyword_vector proc~w90_wannier90_readwrite_read_wann_plot->proc~w90_readwrite_get_range_vector proc~w90_wannier90_readwrite_read_wann_plot->proc~w90_readwrite_get_vector_length proc~w90_wannier90_readwrite_read_wannierise->proc~set_error_input proc~w90_wannier90_readwrite_read_wannierise->proc~set_error_alloc proc~w90_wannier90_readwrite_read_wannierise->proc~w90_readwrite_get_keyword proc~set_error_alloc->proc~comms_sync_error proc~set_error_alloc->proc~set_base_error proc~set_error_dealloc->proc~comms_sync_error proc~set_error_dealloc->proc~set_base_error proc~set_error_file->proc~comms_sync_error proc~set_error_file->proc~set_base_error proc~w90_readwrite_get_block_length->proc~set_error_input proc~w90_readwrite_get_centre_constraints->proc~set_error_input proc~w90_readwrite_get_centre_constraints->proc~set_error_alloc proc~w90_readwrite_get_centre_constraints->proc~set_error_dealloc proc~get_centre_constraint_from_column get_centre_constraint_from_column proc~w90_readwrite_get_centre_constraints->proc~get_centre_constraint_from_column proc~utility_frac_to_cart utility_frac_to_cart proc~w90_readwrite_get_centre_constraints->proc~utility_frac_to_cart proc~w90_readwrite_get_keyword->proc~set_error_input proc~set_error_fatal set_error_fatal proc~w90_readwrite_get_keyword->proc~set_error_fatal proc~w90_readwrite_get_keyword_block->proc~set_error_input proc~w90_readwrite_get_keyword_block->proc~set_error_fatal proc~w90_readwrite_get_keyword_explicit_kpath->proc~set_error_input proc~w90_readwrite_get_keyword_kpath->proc~set_error_input proc~w90_readwrite_get_keyword_vector->proc~set_error_input proc~w90_readwrite_get_keyword_vector->proc~set_error_fatal proc~w90_readwrite_get_range_vector->proc~set_error_input proc~w90_readwrite_get_range_vector->proc~w90_readwrite_get_keyword_vector proc~w90_readwrite_get_range_vector->proc~w90_readwrite_get_vector_length proc~w90_readwrite_get_vector_length->proc~set_error_input proc~w90_readwrite_get_vector_length->proc~set_error_fatal proc~w90_readwrite_read_explicit_kpath_points->proc~set_error_input proc~w90_readwrite_read_explicit_kpath_points->proc~set_error_alloc proc~w90_readwrite_read_explicit_kpath_points->proc~set_error_dealloc proc~w90_readwrite_read_explicit_kpath_points->proc~w90_readwrite_get_block_length proc~w90_readwrite_read_explicit_kpath_points->proc~w90_readwrite_get_keyword_block proc~get_centre_constraint_from_column->proc~set_error_input proc~set_error_fatal->proc~comms_sync_error proc~set_error_fatal->proc~set_base_error

Called by

proc~~w90_wannier90_readwrite_read~~CalledByGraph proc~w90_wannier90_readwrite_read w90_wannier90_readwrite_read proc~w90_input_reader~2 w90_input_reader proc~w90_input_reader~2->proc~w90_wannier90_readwrite_read proc~w90_input_setopt w90_input_setopt proc~w90_input_setopt->proc~w90_wannier90_readwrite_read proc~w90_input_reader w90_input_reader proc~w90_input_reader->proc~w90_input_reader~2 proc~w90_input_setopt_f w90_input_setopt_f proc~w90_input_setopt_f->proc~w90_input_setopt program~wannier wannier program~wannier->proc~w90_input_reader~2

Source Code

  subroutine w90_wannier90_readwrite_read(settings, band_plot, dis_control, dis_spheres, &
                                          dis_manifold, fermi_energy_list, fermi_surface_data, &
                                          output_file, wvfn_read, wann_control, real_space_ham, &
                                          kpoint_path, w90_system, tran, print_output, wann_plot, &
                                          ws_region, real_lattice, w90_calculation, bohr, &
                                          symmetrize_eps, num_bands, num_kpts, num_wann, &
                                          optimisation, calc_only_A, cp_pp, gamma_only, &
                                          lsitesymmetry, use_bloch_phases, seedname, stdout, &
                                          error, comm)
    !================================================!
    !
    !! Read parameters and calculate derived values
    !!
    !! Note on parallelization: this function should be called
    !! from the root node only!
    !!
    !
    !================================================

    use w90_constants, only: w90_physical_constants_type
    use w90_utility, only: utility_recip_lattice, utility_inverse_mat

    implicit none

    ! arguments
    type(band_plot_type), intent(inout) :: band_plot
    type(dis_control_type), intent(inout) :: dis_control
    type(dis_manifold_type), intent(inout) :: dis_manifold
    type(dis_spheres_type), intent(inout) :: dis_spheres
    type(fermi_surface_plot_type), intent(inout) :: fermi_surface_data
    type(kpoint_path_type), intent(inout) :: kpoint_path
    type(output_file_type), intent(inout) :: output_file
    type(print_output_type), intent(inout) :: print_output
    type(real_space_ham_type), intent(inout) :: real_space_ham
    type(settings_type), intent(inout) :: settings
    type(transport_type), intent(inout) :: tran
    type(w90_calculation_type), intent(inout) :: w90_calculation
    type(w90_comm_type), intent(in) :: comm
    type(w90_error_type), allocatable, intent(out) :: error
    type(w90_system_type), intent(inout) :: w90_system
    type(wann_control_type), intent(inout) :: wann_control
    type(wannier_plot_type), intent(inout) :: wann_plot
    type(ws_region_type), intent(inout) :: ws_region
    type(wvfn_read_type), intent(inout) :: wvfn_read

    integer, intent(inout) :: num_bands
    integer, intent(inout) :: num_kpts
    integer, intent(inout) :: num_wann
    integer, intent(inout) :: optimisation
    integer, intent(in) :: stdout

    real(kind=dp), allocatable, intent(inout) :: fermi_energy_list(:)
    real(kind=dp), intent(in) :: bohr
    real(kind=dp), intent(inout) :: real_lattice(3, 3)
    real(kind=dp), intent(inout) :: symmetrize_eps

    character(len=*), intent(in)  :: seedname

    !Projections
    ! RS: symmetry-adapted Wannier functions
    logical, intent(inout) :: lsitesymmetry
    logical, intent(out) :: use_bloch_phases, cp_pp, calc_only_A
    logical, intent(inout) :: gamma_only

    ! local variables
    logical :: has_kpath
    logical :: has_explicit_kpath
!    integer :: num_exclude_bands
    logical :: found_fermi_energy
    logical :: disentanglement
    character(len=20) :: energy_unit  ! is this not used???
    !! Units for energy

    disentanglement = .false.
    call w90_wannier90_readwrite_read_sym(settings, symmetrize_eps, lsitesymmetry, error, comm)
    if (allocated(error)) return

    call w90_readwrite_read_verbosity(settings, print_output, output_file%svd_omega, error, comm)
    if (allocated(error)) return

    call w90_readwrite_read_algorithm_control(settings, optimisation, error, comm)
    if (allocated(error)) return

    call w90_wannier90_readwrite_read_w90_calcs(settings, w90_calculation, error, comm)
    if (allocated(error)) return

    call w90_wannier90_readwrite_read_transport(settings, w90_calculation%transport, tran, &
                                                w90_calculation%restart, error, comm)
    if (allocated(error)) return

    call w90_wannier90_readwrite_read_dist_cutoff(settings, real_space_ham, error, comm)
    if (allocated(error)) return

    if (.not. (w90_calculation%transport .and. tran%read_ht)) then
      call w90_readwrite_read_units(settings, print_output%lenconfac, print_output%length_unit, &
                                    energy_unit, bohr, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_wannierise(settings, wann_control, num_wann, &
                                                   stdout, print_output%iprint, error, comm)
      if (allocated(error)) return

      call w90_readwrite_read_gamma_only(settings, gamma_only, num_kpts, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_post_proc(settings, cp_pp, calc_only_A, &
                                                  w90_calculation%postproc_setup, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_restart(settings, w90_calculation, seedname, error, comm)
      if (allocated(error)) return

      call w90_readwrite_read_kpath(settings, kpoint_path, has_kpath, w90_calculation%bands_plot, &
                                    error, comm)
      if (allocated(error)) return

      call w90_readwrite_read_explicit_kpath(settings, kpoint_path, has_explicit_kpath, w90_calculation%bands_plot, &
                                             bohr, error, comm)
      if (allocated(error)) return

      if (has_kpath .and. has_explicit_kpath) then
        call set_error_input(error, 'Error: cannot specify both kpath and explicit_kpath', comm)
      end if
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_plot_info(settings, wvfn_read, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_band_plot(settings, band_plot, num_wann, has_kpath, &
                                                  has_explicit_kpath, w90_calculation%bands_plot, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_wann_plot(settings, wann_plot, num_wann, &
                                                  w90_calculation%wannier_plot, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_fermi_surface(settings, fermi_surface_data, &
                                                      w90_calculation%fermi_surface_plot, error, &
                                                      comm)
      if (allocated(error)) return

      call w90_readwrite_read_fermi_energy(settings, found_fermi_energy, fermi_energy_list, error, &
                                           comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_outfiles(settings, output_file, num_kpts, &
                                                 w90_system%num_valence_bands, disentanglement, &
                                                 gamma_only, error, comm)
      if (allocated(error)) return

    end if

    call w90_wannier90_readwrite_read_one_dim(settings, w90_calculation, band_plot, real_space_ham, &
                                              tran%read_ht, error, comm)
    if (allocated(error)) return

    call w90_readwrite_read_ws_data(settings, ws_region, error, comm) !ws_search etc
    if (allocated(error)) return

    if (.not. (w90_calculation%transport .and. tran%read_ht)) then
      call w90_readwrite_read_dis_manifold(settings, dis_manifold, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_disentangle(settings, dis_control, dis_spheres, num_bands, &
                                                    num_wann, bohr, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_hamil(settings, real_space_ham, error, comm)
      if (allocated(error)) return

      call w90_wannier90_readwrite_read_bloch_phase(settings, use_bloch_phases, disentanglement, &
                                                    error, comm)
      if (allocated(error)) return

      if (wann_control%constrain%constrain) then
        call w90_wannier90_readwrite_read_constrained_centres(settings, &
                                                              wann_control, real_lattice, &
                                                              num_wann, print_output%iprint, &
                                                              stdout, error, comm)
        if (allocated(error)) return
      end if
    end if

  end subroutine w90_wannier90_readwrite_read