dos_get_levelspacing Subroutine

public subroutine dos_get_levelspacing(del_eig, kmesh, levelspacing)

Uses

  • proc~~dos_get_levelspacing~~UsesGraph proc~dos_get_levelspacing dos_get_levelspacing module~w90_postw90_common w90_postw90_common proc~dos_get_levelspacing->module~w90_postw90_common module~w90_parameters w90_parameters proc~dos_get_levelspacing->module~w90_parameters module~w90_comms w90_comms module~w90_postw90_common->module~w90_comms module~w90_constants w90_constants module~w90_postw90_common->module~w90_constants module~w90_io w90_io module~w90_parameters->module~w90_io module~w90_parameters->module~w90_constants module~w90_io->module~w90_constants module~w90_comms->module~w90_io module~w90_comms->module~w90_constants

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

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in), dimension(num_wann, 3):: del_eig

Band velocities, already corrected when degeneracies occur

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

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), dimension(num_wann):: levelspacing

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


Calls

proc~~dos_get_levelspacing~~CallsGraph proc~dos_get_levelspacing dos_get_levelspacing interface~pw90common_kmesh_spacing pw90common_kmesh_spacing proc~dos_get_levelspacing->interface~pw90common_kmesh_spacing proc~kmesh_spacing_singleinteger kmesh_spacing_singleinteger interface~pw90common_kmesh_spacing->proc~kmesh_spacing_singleinteger proc~kmesh_spacing_mesh kmesh_spacing_mesh interface~pw90common_kmesh_spacing->proc~kmesh_spacing_mesh

Called by

proc~~dos_get_levelspacing~~CalledByGraph proc~dos_get_levelspacing dos_get_levelspacing proc~calctdfanddos calcTDFandDOS proc~calctdfanddos->proc~dos_get_levelspacing proc~dos_main dos_main proc~dos_main->proc~dos_get_levelspacing proc~boltzwann_main boltzwann_main proc~boltzwann_main->proc~calctdfanddos

Contents

Source Code


Source Code

  subroutine dos_get_levelspacing(del_eig, kmesh, levelspacing)
    !! This subroutine calculates the level spacing, i.e. how much the level changes
    !! near a given point of the interpolation mesh
    use w90_parameters, only: num_wann
    use w90_postw90_common, only: pw90common_kmesh_spacing

    real(kind=dp), dimension(num_wann, 3), intent(in) :: del_eig
    !! Band velocities, already corrected when degeneracies occur
    integer, dimension(3), intent(in)                :: kmesh
    !! 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), dimension(num_wann), intent(out)  :: levelspacing
    !! On output, the spacing for each of the bands (in eV)

    real(kind=dp) :: Delta_k
    integer :: band

    Delta_k = pw90common_kmesh_spacing(kmesh)
    do band = 1, num_wann
      levelspacing(band) = &
        sqrt(dot_product(del_eig(band, :), del_eig(band, :)))*Delta_k
    end do

  end subroutine dos_get_levelspacing