gyrotropic_get_NOA_Bnl_spin Subroutine

private subroutine gyrotropic_get_NOA_Bnl_spin(S_h, num_occ, occ_list, num_unocc, unocc_list, Bnl)

Uses

  • proc~~gyrotropic_get_noa_bnl_spin~~UsesGraph proc~gyrotropic_get_noa_bnl_spin gyrotropic_get_NOA_Bnl_spin module~w90_constants w90_constants proc~gyrotropic_get_noa_bnl_spin->module~w90_constants

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(in), dimension(:, :, :):: S_h
integer, intent(in) :: num_occ
integer, intent(in), dimension(:):: occ_list
integer, intent(in) :: num_unocc
integer, intent(in), dimension(:):: unocc_list
complex(kind=dp), intent(out), dimension(:, :, :, :):: Bnl

Called by

proc~~gyrotropic_get_noa_bnl_spin~~CalledByGraph proc~gyrotropic_get_noa_bnl_spin gyrotropic_get_NOA_Bnl_spin proc~gyrotropic_get_noa_k gyrotropic_get_NOA_k proc~gyrotropic_get_noa_k->proc~gyrotropic_get_noa_bnl_spin proc~gyrotropic_get_k_list gyrotropic_get_k_list proc~gyrotropic_get_k_list->proc~gyrotropic_get_noa_k proc~gyrotropic_main gyrotropic_main proc~gyrotropic_main->proc~gyrotropic_get_k_list

Contents


Source Code

  subroutine gyrotropic_get_NOA_Bnl_spin(S_h, &
                                         num_occ, occ_list, num_unocc, unocc_list, Bnl)
    !====================================================================!
    !                                                                    !
    ! Calculating the matrix                                             !
    ! B_{nl,ac}^spin(num_occ,num_unocc,3,3)=                             !
    !      -i  eps_{abc}  < u_n | sigma_b | u_l >                        !
    !   ( dimensionless )                                                !
    !====================================================================!

    use w90_constants, only: dp, cmplx_i, cmplx_0

    ! Arguments
    !
    integer, intent(in) ::num_occ, num_unocc
    integer, dimension(:), intent(in) ::occ_list, unocc_list
    complex(kind=dp), dimension(:, :, :), intent(in) ::S_h     !  n,l,a
    complex(kind=dp), dimension(:, :, :, :), intent(out)::Bnl     !   n,l,a,c
    integer n, l, a, b, c, n1, l1

    Bnl(:, :, :, :) = cmplx_0

    do b = 1, 3
      c = alpha_A(b)
      a = beta_A(b)
      do n1 = 1, num_occ
        n = occ_list(n1)
        do l1 = 1, num_unocc
          l = unocc_list(l1)
          Bnl(n1, l1, a, c) = S_h(n, l, b)
        enddo !l1
      enddo !n1
    enddo !b

    Bnl = Bnl*(-cmplx_i)

  end subroutine gyrotropic_get_NOA_Bnl_spin