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 | ||
|---|---|---|---|---|---|---|
| type(pw90_band_deriv_degen_type), | intent(in) | :: | pw90_band_deriv_degen | |||
| complex(kind=dp), | intent(in) | :: | delHH(:,:,:) |
the delHH matrix (derivative of H) at kpt |
||
| complex(kind=dp), | intent(in) | :: | UU(:,:) |
the rotation matrix that gives the eigenvectors of HH |
||
| real(kind=dp), | intent(in) | :: | eig(num_wann) | |||
| real(kind=dp), | intent(out) | :: | del_eig(num_wann,3) | |||
| integer, | intent(in) | :: | num_wann | |||
| type(w90_error_type), | intent(out), | allocatable | :: | error | ||
| type(w90_comm_type), | intent(in) | :: | comm |
subroutine wham_get_eig_deleig_TB_conv(pw90_band_deriv_degen, delHH, UU, eig, del_eig, num_wann, & error, comm) !================================================! ! 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_postw90_types, only: pw90_band_deriv_degen_type use w90_comms, only: w90_comm_type ! arguments type(pw90_band_deriv_degen_type), intent(in) :: pw90_band_deriv_degen type(w90_error_type), allocatable, intent(out) :: error type(w90_comm_type), intent(in) :: comm integer, intent(in) :: num_wann real(kind=dp), intent(out) :: del_eig(num_wann, 3) real(kind=dp), intent(in) :: eig(num_wann) complex(kind=dp), intent(in) :: delHH(:, :, :) !! the delHH matrix (derivative of H) at kpt complex(kind=dp), intent(in) :: UU(:, :) !! the rotation matrix that gives the eigenvectors of HH call wham_get_deleig_a(del_eig(:, 1), eig, delHH(:, :, 1), UU, num_wann, & pw90_band_deriv_degen, error, comm) if (allocated(error)) return call wham_get_deleig_a(del_eig(:, 2), eig, delHH(:, :, 2), UU, num_wann, & pw90_band_deriv_degen, error, comm) if (allocated(error)) return call wham_get_deleig_a(del_eig(:, 3), eig, delHH(:, :, 3), UU, num_wann, & pw90_band_deriv_degen, error, comm) if (allocated(error)) return end subroutine wham_get_eig_deleig_TB_conv