w90_dos Module

Compute Density of States


Uses

  • module~~w90_dos~~UsesGraph module~w90_dos w90_dos module~w90_constants w90_constants module~w90_dos->module~w90_constants module~w90_error w90_error module~w90_dos->module~w90_error 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_comms->module~w90_constants module~w90_comms->module~w90_error_base

Used by

  • module~~w90_dos~~UsedByGraph module~w90_dos w90_dos module~w90_boltzwann w90_boltzwann module~w90_boltzwann->module~w90_dos program~postw90 postw90 program~postw90->module~w90_dos program~postw90->module~w90_boltzwann

Subroutines

public subroutine dos_main(pw90_berry, dis_manifold, pw90_dos, kpoint_dist, kpt_latt, pw90_oper_read, pw90_band_deriv_degen, pw90_spin, ws_region, w90_system, print_output, wannier_data, ws_distance, wigner_seitz, HH_R, SS_R, u_matrix, v_matrix, eigval, real_lattice, scissors_shift, mp_grid, num_bands, num_kpts, num_wann, effective_model, have_disentangled, spin_decomp, seedname, stdout, timer, error, comm)

Computes the electronic density of states. Can resolve into up-spin and down-spin parts, project onto selected Wannier orbitals, and use adaptive broadening, as in PRB 75, 195121 (2007) [YWVS07].

Arguments

Type IntentOptional Attributes Name
type(pw90_berry_mod_type), intent(in) :: pw90_berry
type(dis_manifold_type), intent(in) :: dis_manifold
type(pw90_dos_mod_type), intent(in) :: pw90_dos
type(kpoint_dist_type), intent(in) :: kpoint_dist
real(kind=dp), intent(in) :: kpt_latt(:,:)
type(pw90_oper_read_type), intent(in) :: pw90_oper_read
type(pw90_band_deriv_degen_type), intent(in) :: pw90_band_deriv_degen
type(pw90_spin_mod_type), intent(in) :: pw90_spin
type(ws_region_type), intent(in) :: ws_region
type(w90_system_type), intent(in) :: w90_system
type(print_output_type), intent(in) :: print_output
type(wannier_data_type), intent(in) :: wannier_data
type(ws_distance_type), intent(inout) :: ws_distance
type(wigner_seitz_type), intent(inout) :: wigner_seitz
complex(kind=dp), intent(inout), allocatable :: HH_R(:,:,:)
complex(kind=dp), intent(inout), allocatable :: SS_R(:,:,:,:)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
complex(kind=dp), intent(in) :: v_matrix(:,:,:)
real(kind=dp), intent(in) :: eigval(:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
real(kind=dp), intent(in) :: scissors_shift
integer, intent(in) :: mp_grid(3)
integer, intent(in) :: num_bands
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
logical, intent(in) :: effective_model
logical, intent(in) :: have_disentangled
logical, intent(in) :: spin_decomp
character(len=50), intent(in) :: seedname
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

public subroutine dos_get_k(num_elec_per_state, ws_region, kpt, EnergyArray, eig_k, dos_k, num_wann, wannier_data, real_lattice, mp_grid, pw90_dos, spin_decomp, pw90_spin, ws_distance, wigner_seitz, HH_R, SS_R, smearing, error, comm, levelspacing_k, UU)

This subroutine calculates the contribution to the DOS of a single k point

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_elec_per_state
type(ws_region_type), intent(in) :: ws_region
real(kind=dp), intent(in) :: kpt(3)
real(kind=dp), intent(in) :: EnergyArray(:)
real(kind=dp), intent(in) :: eig_k(:)
real(kind=dp), intent(out) :: dos_k(:,:)
integer, intent(in) :: num_wann
type(wannier_data_type), intent(in) :: wannier_data
real(kind=dp), intent(in) :: real_lattice(3,3)
integer, intent(in) :: mp_grid(3)
type(pw90_dos_mod_type), intent(in) :: pw90_dos
logical, intent(in) :: spin_decomp
type(pw90_spin_mod_type), intent(in) :: pw90_spin
type(ws_distance_type), intent(inout) :: ws_distance
type(wigner_seitz_type), intent(in) :: wigner_seitz
complex(kind=dp), intent(inout), allocatable :: HH_R(:,:,:)
complex(kind=dp), intent(inout), allocatable :: SS_R(:,:,:,:)
type(pw90_smearing_type), intent(in) :: smearing
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm
real(kind=dp), intent(in), optional :: levelspacing_k(:)
complex(kind=dp), intent(in), optional :: UU(:,:)

public subroutine dos_get_levelspacing(del_eig, kmesh, levelspacing, num_wann, recip_lattice)

This subroutine calculates the level spacing, i.e. how much the level changes near a given point of the interpolation mesh

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: del_eig(:,:)

Band velocities, already corrected when degeneracies occur

integer, intent(in) :: kmesh(3)

array of three integers, giving the number of k points along each of the three directions defined by the reciprocal lattice vectors

real(kind=dp), intent(out) :: levelspacing(num_wann)

On output, the spacing for each of the bands (in eV)

integer, intent(in) :: num_wann
real(kind=dp), intent(in) :: recip_lattice(3,3)