wham_get_eig_deleig_TB_conv Subroutine

public subroutine wham_get_eig_deleig_TB_conv(pw90_band_deriv_degen, delHH, UU, eig, del_eig, num_wann, error, comm)

Uses

  • proc~~wham_get_eig_deleig_tb_conv~~UsesGraph proc~wham_get_eig_deleig_tb_conv wham_get_eig_deleig_TB_conv module~w90_comms w90_comms proc~wham_get_eig_deleig_tb_conv->module~w90_comms module~w90_postw90_types w90_postw90_types proc~wham_get_eig_deleig_tb_conv->module~w90_postw90_types module~w90_constants w90_constants module~w90_comms->module~w90_constants module~w90_error_base w90_error_base module~w90_comms->module~w90_error_base module~w90_postw90_types->module~w90_comms module~w90_postw90_types->module~w90_constants

Given a k point, this function returns eigenvalues E and derivatives of the eigenvalues dE/dk_a, using wham_get_deleig_a

Arguments

Type IntentOptional 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

Calls

proc~~wham_get_eig_deleig_tb_conv~~CallsGraph proc~wham_get_eig_deleig_tb_conv wham_get_eig_deleig_TB_conv proc~wham_get_deleig_a wham_get_deleig_a proc~wham_get_eig_deleig_tb_conv->proc~wham_get_deleig_a proc~utility_diagonalize utility_diagonalize proc~wham_get_deleig_a->proc~utility_diagonalize proc~utility_rotate utility_rotate proc~wham_get_deleig_a->proc~utility_rotate proc~utility_rotate_diag utility_rotate_diag proc~wham_get_deleig_a->proc~utility_rotate_diag proc~set_error_fatal set_error_fatal proc~utility_diagonalize->proc~set_error_fatal zhpevx zhpevx proc~utility_diagonalize->zhpevx proc~utility_matmul_diag utility_matmul_diag proc~utility_rotate_diag->proc~utility_matmul_diag proc~utility_zgemm_new utility_zgemm_new proc~utility_rotate_diag->proc~utility_zgemm_new proc~comms_sync_error comms_sync_error proc~set_error_fatal->proc~comms_sync_error proc~set_base_error set_base_error proc~set_error_fatal->proc~set_base_error zgemm zgemm proc~utility_zgemm_new->zgemm

Called by

proc~~wham_get_eig_deleig_tb_conv~~CalledByGraph proc~wham_get_eig_deleig_tb_conv wham_get_eig_deleig_TB_conv proc~berry_get_sc_klist berry_get_sc_klist proc~berry_get_sc_klist->proc~wham_get_eig_deleig_tb_conv proc~berry_main berry_main proc~berry_main->proc~berry_get_sc_klist program~postw90 postw90 program~postw90->proc~berry_main

Source Code

  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