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_comms w90_comms module~w90_hamiltonian->module~w90_comms module~w90_constants w90_constants module~w90_hamiltonian->module~w90_constants module~w90_comms->module~w90_constants module~w90_io w90_io module~w90_comms->module~w90_io module~w90_io->module~w90_constants

Used by

  • module~~w90_hamiltonian~~UsedByGraph module~w90_hamiltonian w90_hamiltonian proc~tran_cut_hr_one_dim tran_cut_hr_one_dim proc~tran_cut_hr_one_dim->module~w90_hamiltonian proc~tran_lcr_2c2_build_ham tran_lcr_2c2_build_ham proc~tran_lcr_2c2_build_ham->module~w90_hamiltonian proc~wannier_run wannier_run proc~wannier_run->module~w90_hamiltonian proc~tran_lcr_2c2_sort tran_lcr_2c2_sort proc~tran_lcr_2c2_sort->module~w90_hamiltonian proc~master_sort_and_group master_sort_and_group proc~master_sort_and_group->module~w90_hamiltonian proc~wann_main wann_main proc~wann_main->module~w90_hamiltonian proc~plot_main plot_main proc~plot_main->module~w90_hamiltonian proc~check_and_sort_similar_centres check_and_sort_similar_centres proc~check_and_sort_similar_centres->module~w90_hamiltonian proc~tran_main tran_main proc~tran_main->module~w90_hamiltonian proc~plot_fermi_surface plot_fermi_surface proc~plot_fermi_surface->module~w90_hamiltonian proc~plot_interpolate_bands plot_interpolate_bands proc~plot_interpolate_bands->module~w90_hamiltonian program~wannier wannier program~wannier->module~w90_hamiltonian proc~tran_reduce_hr tran_reduce_hr proc~tran_reduce_hr->module~w90_hamiltonian proc~tran_write_xyz tran_write_xyz proc~tran_write_xyz->module~w90_hamiltonian proc~tran_find_integral_signatures tran_find_integral_signatures proc~tran_find_integral_signatures->module~w90_hamiltonian

Contents


Variables

TypeVisibility AttributesNameInitial
complex(kind=dp), public, save, allocatable:: ham_r(:,:,:)

Hamiltonian matrix in WF representation

integer, public, save, allocatable:: irvec(:,:)

The irpt-th Wigner-Seitz grid point has components irvec(1:3,irpt) in the basis of the lattice vectors

integer, public, save, allocatable:: shift_vec(:,:)
integer, public, save, allocatable:: ndegen(:)

Weight of the irpt-th point is 1/ndegen(irpt)

integer, public, save:: nrpts

number of Wigner-Seitz grid points

integer, public, save:: rpt_origin

index of R=0

real(kind=dp), public, save, allocatable:: wannier_centres_translated(:,:)

translated Wannier centres

logical, private, save:: ham_have_setup =.false.
logical, private, save:: have_translated =.false.
logical, private, save:: use_translation =.false.
logical, private, save:: have_ham_r =.false.
logical, private, save:: have_ham_k =.false.
logical, private, save:: hr_written =.false.
logical, private, save:: tb_written =.false.
complex(kind=dp), private, save, allocatable:: ham_k(:,:,:)

Subroutines

public subroutine hamiltonian_setup()

Allocate arrays and setup data

Arguments

None

public subroutine hamiltonian_dealloc()

Deallocate module data

Arguments

None

public subroutine hamiltonian_get_hr()

Calculate the Hamiltonian in the WF basis

Arguments

None

public subroutine hamiltonian_write_hr()

Write the Hamiltonian in the WF basis

Arguments

None

private subroutine hamiltonian_wigner_seitz(count_pts)

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 AttributesName
logical, intent(in) :: count_pts

Only count points and return

public subroutine hamiltonian_write_rmn()

Write out the matrix elements of r

Arguments

None

public subroutine hamiltonian_write_tb()

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

None