Read parameters and calculate derived values
Note on parallelization: this function should be called from the root node only!
| Type | Intent | Optional | 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 |
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