w90_berry Module

This module computes various "Berry phase" related properties

Key REFERENCES

  • WYSV06 = PRB 74, 195118 (2006) (anomalous Hall conductivity - AHC)
  • YWVS07 = PRB 75, 195121 (2007) (Kubo frequency-dependent conductivity)
  • LVTS12 = PRB 85, 014435 (2012) (orbital magnetization and AHC)
  • CTVR06 = PRB 74, 024408 (2006) ( " " )
  • IATS18 = arXiv:1804.04030 (2018) (nonlinear shift current)
  • QZYZ18 = PRB 98, 214402 (2018) (spin Hall conductivity - SHC)

Uses

  • module~~w90_berry~~UsesGraph module~w90_berry w90_berry module~w90_constants w90_constants module~w90_berry->module~w90_constants

Used by

  • module~~w90_berry~~UsedByGraph module~w90_berry w90_berry proc~k_path k_path proc~k_path->module~w90_berry module~w90_gyrotropic w90_gyrotropic module~w90_gyrotropic->module~w90_berry proc~k_slice k_slice proc~k_slice->module~w90_berry program~postw90 postw90 program~postw90->module~w90_berry program~postw90->module~w90_gyrotropic

Contents


Variables

TypeVisibility AttributesNameInitial
integer, private, parameter, dimension(3):: alpha_A =(/2, 3, 1/)
integer, private, parameter, dimension(3):: beta_A =(/3, 1, 2/)
integer, private, parameter, dimension(6):: alpha_S =(/1, 2, 3, 1, 1, 2/)
integer, private, parameter, dimension(6):: beta_S =(/1, 2, 3, 2, 3, 3/)
integer, public, parameter, dimension(6):: berry_alpha_S =alpha_S
integer, public, parameter, dimension(6):: berry_beta_S =beta_S
integer, public, parameter:: berry_alpha_beta_S(3,3) =reshape((/1, 4, 5, 4, 2, 6, 5, 6, 3/), (/3, 3/))

Subroutines

public subroutine berry_main()

Computes the following quantities: (i) Anomalous Hall conductivity (from Berry curvature) (ii) Complex optical conductivity (Kubo-Greenwood) & JDOS (iii) Orbital magnetization (iv) Nonlinear shift current (v) Spin Hall conductivity

Arguments

None

public subroutine berry_get_imf_klist(kpt, imf_k_list, occ, ladpt)

Calculates the Berry curvature traced over the occupied states, -2Im[f(k)] [Eq.33 CTVR06, Eq.6 LVTS12] for a list of Fermi energies, and stores it in axial-vector form

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: kpt(3)
real(kind=dp), intent(out), dimension(:, :, :):: imf_k_list
real(kind=dp), intent(in), optional dimension(:):: occ
logical, intent(in), optional dimension(:):: ladpt

public subroutine berry_get_imfgh_klist(kpt, imf_k_list, img_k_list, imh_k_list, occ, ladpt)

Calculates the three quantities needed for the orbital magnetization:

Read more…

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: kpt(3)
real(kind=dp), intent(out), optional dimension(:, :, :):: imf_k_list
real(kind=dp), intent(out), optional dimension(:, :, :):: img_k_list
real(kind=dp), intent(out), optional dimension(:, :, :):: imh_k_list
real(kind=dp), intent(in), optional dimension(:):: occ
logical, intent(in), optional dimension(:):: ladpt

private subroutine berry_get_kubo_k(kpt, kubo_H_k, kubo_AH_k, jdos_k, kubo_H_k_spn, kubo_AH_k_spn, jdos_k_spn)

Contribution from point k to the complex interband optical conductivity, separated into Hermitian (H) and anti-Hermitian (AH) parts. Also returns the joint density of states

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: kpt(3)
complex(kind=dp), intent(out), dimension(:, :, :):: kubo_H_k
complex(kind=dp), intent(out), dimension(:, :, :):: kubo_AH_k
real(kind=dp), intent(out), dimension(:):: jdos_k
complex(kind=dp), intent(out), optional dimension(:, :, :, :):: kubo_H_k_spn
complex(kind=dp), intent(out), optional dimension(:, :, :, :):: kubo_AH_k_spn
real(kind=dp), intent(out), optional dimension(:, :):: jdos_k_spn

public subroutine berry_get_sc_klist(kpt, sc_k_list)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: kpt(3)
real(kind=dp), intent(out), dimension(:, :, :):: sc_k_list

public subroutine berry_get_shc_klist(kpt, shc_k_fermi, shc_k_freq, shc_k_band)

!

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: kpt(3)
real(kind=dp), intent(out), optional :: shc_k_fermi(nfermi)
complex(kind=dp), intent(out), optional :: shc_k_freq(kubo_nfreq)
real(kind=dp), intent(out), optional :: shc_k_band(num_wann)

private subroutine berry_print_progress(loop_k, start_k, end_k, step_k)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: loop_k
integer, intent(in) :: start_k
integer, intent(in) :: end_k
integer, intent(in) :: step_k