Given a k point, this function returns eigenvalues E and derivatives of the eigenvalues dE/dk_a, using wham_get_deleig_a
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in), | dimension(3) | :: | kpt | the three coordinates of the k point vector (in relative coordinates) |
|
real(kind=dp), | intent(in) | :: | eig(num_wann) | |||
real(kind=dp), | intent(out) | :: | del_eig(num_wann,3) | |||
complex(kind=dp), | intent(in), | dimension(:, :, :) | :: | delHH | the delHH matrix (derivative of H) at kpt |
|
complex(kind=dp), | intent(in), | dimension(:, :) | :: | UU | the rotation matrix that gives the eigenvectors of HH |
subroutine wham_get_eig_deleig_TB_conv(kpt, eig, del_eig, delHH, UU)
! modified version of wham_get_eig_deleig for the TB convention
! avoids recalculating delHH and UU, works with input values
!! Given a k point, this function returns eigenvalues E and
!! derivatives of the eigenvalues dE/dk_a, using wham_get_deleig_a
!
use w90_parameters, only: num_wann
use w90_get_oper, only: HH_R, get_HH_R
use w90_postw90_common, only: pw90common_fourier_R_to_k
use w90_utility, only: utility_diagonalize
real(kind=dp), dimension(3), intent(in) :: kpt
!! the three coordinates of the k point vector (in relative coordinates)
real(kind=dp), intent(out) :: del_eig(num_wann, 3)
real(kind=dp), intent(in) :: eig(num_wann)
complex(kind=dp), dimension(:, :, :), intent(in) :: delHH
!! the delHH matrix (derivative of H) at kpt
complex(kind=dp), dimension(:, :), intent(in) :: UU
!! the rotation matrix that gives the eigenvectors of HH
call wham_get_deleig_a(del_eig(:, 1), eig, delHH(:, :, 1), UU)
call wham_get_deleig_a(del_eig(:, 2), eig, delHH(:, :, 2), UU)
call wham_get_deleig_a(del_eig(:, 3), eig, delHH(:, :, 3), UU)
end subroutine wham_get_eig_deleig_TB_conv