w90_hamiltonian Module

Module to obtain the Hamiltonian in a Wannier basis This is a simplified routine, more sophisticated properties are found in postw90 (e.g. w90_get_oper)


Uses

  • module~~w90_hamiltonian~~UsesGraph module~w90_hamiltonian w90_hamiltonian module~w90_constants w90_constants module~w90_hamiltonian->module~w90_constants module~w90_error w90_error module~w90_hamiltonian->module~w90_error module~w90_types w90_types module~w90_hamiltonian->module~w90_types module~w90_comms w90_comms module~w90_error->module~w90_comms module~w90_error_base w90_error_base module~w90_error->module~w90_error_base module~w90_types->module~w90_constants module~w90_comms->module~w90_constants module~w90_comms->module~w90_error_base

Used by

  • module~~w90_hamiltonian~~UsedByGraph module~w90_hamiltonian w90_hamiltonian proc~plot_main plot_main proc~plot_main->module~w90_hamiltonian proc~tran_main tran_main proc~tran_main->module~w90_hamiltonian proc~wann_main wann_main proc~wann_main->module~w90_hamiltonian

Subroutines

public subroutine hamiltonian_setup(ham_logical, print_output, ws_region, w90_calculation, ham_k, ham_r, real_lattice, wannier_centres_translated, irvec, mp_grid, ndegen, num_kpts, num_wann, nrpts, rpt_origin, bands_plot_mode, stdout, timer, error, transport_mode, comm)

Allocate arrays and setup data

Arguments

Type IntentOptional Attributes Name
type(ham_logical_type), intent(inout) :: ham_logical
type(print_output_type), intent(in) :: print_output
type(ws_region_type), intent(in) :: ws_region
type(w90_calculation_type), intent(in) :: w90_calculation
complex(kind=dp), intent(inout), allocatable :: ham_k(:,:,:)
complex(kind=dp), intent(inout), allocatable :: ham_r(:,:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
real(kind=dp), intent(inout), allocatable :: wannier_centres_translated(:,:)
integer, intent(inout), allocatable :: irvec(:,:)
integer, intent(in) :: mp_grid(3)
integer, intent(inout), allocatable :: ndegen(:)
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
integer, intent(inout) :: nrpts
integer, intent(inout) :: rpt_origin
character(len=*), intent(in) :: bands_plot_mode
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
character(len=20), intent(in) :: transport_mode
type(w90_comm_type), intent(in) :: comm

public subroutine hamiltonian_dealloc(ham_logical, ham_k, ham_r, wannier_centres_translated, irvec, ndegen, error, comm)

Deallocate module data

Arguments

Type IntentOptional Attributes Name
type(ham_logical_type), intent(inout) :: ham_logical
complex(kind=dp), intent(inout), allocatable :: ham_k(:,:,:)
complex(kind=dp), intent(inout), allocatable :: ham_r(:,:,:)
real(kind=dp), intent(inout), allocatable :: wannier_centres_translated(:,:)
integer, intent(inout), allocatable :: irvec(:,:)
integer, intent(inout), allocatable :: ndegen(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

public subroutine hamiltonian_get_hr(atom_data, dis_manifold, ham_logical, real_space_ham, print_output, ham_k, ham_r, u_matrix, u_matrix_opt, eigval, kpt_latt, real_lattice, wannier_centres, wannier_centres_translated, irvec, shift_vec, nrpts, num_bands, num_kpts, num_wann, have_disentangled, stdout, timer, error, lsitesymmetry, comm)

Calculate the Hamiltonian in the WF basis

Arguments

Type IntentOptional Attributes Name
type(atom_data_type), intent(in) :: atom_data
type(dis_manifold_type), intent(in) :: dis_manifold
type(ham_logical_type), intent(inout) :: ham_logical
type(real_space_ham_type), intent(inout) :: real_space_ham
type(print_output_type), intent(in) :: print_output
complex(kind=dp), intent(inout), allocatable :: ham_k(:,:,:)
complex(kind=dp), intent(inout) :: ham_r(:,:,:)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
real(kind=dp), intent(in) :: eigval(:,:)
real(kind=dp), intent(in) :: kpt_latt(:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
real(kind=dp), intent(in) :: wannier_centres(:,:)
real(kind=dp), intent(inout) :: wannier_centres_translated(:,:)
integer, intent(inout) :: irvec(:,:)
integer, intent(inout), allocatable :: shift_vec(:,:)
integer, intent(inout) :: nrpts
integer, intent(in) :: num_bands
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
logical, intent(in) :: have_disentangled
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
logical, intent(in) :: lsitesymmetry
type(w90_comm_type), intent(in) :: comm

public subroutine hamiltonian_write_hr(ham_r, irvec, ndegen, nrpts, num_wann, timing_level, seedname, timer, error, comm)

Write the Hamiltonian in the WF basis

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: ham_r(:,:,:)
integer, intent(in) :: irvec(:,:)
integer, intent(in) :: ndegen(:)
integer, intent(in) :: nrpts
integer, intent(in) :: num_wann
integer, intent(in) :: timing_level
character(len=50), intent(in) :: seedname
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

public subroutine hamiltonian_wigner_seitz(ws_region, print_output, real_lattice, irvec, mp_grid, ndegen, nrpts, rpt_origin, stdout, timer, error, count_pts, comm)

Calculates a grid of points that fall inside of (and eventually on the surface of) the Wigner-Seitz supercell centered on the origin of the B lattice with primitive translations nmonkh(1)a_1+nmonkh(2)a_2+nmonkh(3)*a_3

Arguments

Type IntentOptional Attributes Name
type(ws_region_type), intent(in) :: ws_region
type(print_output_type), intent(in) :: print_output
real(kind=dp), intent(in) :: real_lattice(3,3)
integer, intent(inout), allocatable :: irvec(:,:)
integer, intent(in) :: mp_grid(3)
integer, intent(inout), allocatable :: ndegen(:)
integer, intent(inout) :: nrpts
integer, intent(inout) :: rpt_origin
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
logical, intent(in) :: count_pts
type(w90_comm_type), intent(in) :: comm

public subroutine hamiltonian_write_tb(kmesh_info, ham_r, m_matrix, kpt_latt, real_lattice, irvec, ndegen, nrpts, num_kpts, num_wann, timing_level, seedname, timer, dist_k, error, comm)

Write in a single file all the information that is needed to set up a Wannier-based tight-binding model: * lattice vectors * <0n|H|Rn> * <0n|r|Rn>

Arguments

Type IntentOptional Attributes Name
type(kmesh_info_type), intent(in) :: kmesh_info
complex(kind=dp), intent(in) :: ham_r(:,:,:)
complex(kind=dp), intent(in) :: m_matrix(:,:,:,:)
real(kind=dp), intent(in) :: kpt_latt(:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
integer, intent(in) :: irvec(:,:)
integer, intent(in) :: ndegen(:)
integer, intent(in) :: nrpts
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
integer, intent(in) :: timing_level
character(len=50), intent(in) :: seedname
type(timer_list_type), intent(inout) :: timer
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm