TABLE OF CONTENTS


ABINIT/calc_sigx_me [ Functions ]

[ Top ] [ Functions ]

NAME

 calc_sigx_me

FUNCTION

 Calculate diagonal and off-diagonal matrix elements of the exchange part of the self-energy operator.

INPUTS

 sigmak_ibz=Index of the k-point in the IBZ.
 bmin, bmax= min and Max band index for GW correction (for this k-point)
 Gsph_x<gsphere_t>= Info on the G-sphere used for Sigma_x
 ikcalc=index in the array Sigp%kptgw2bz of the k-point where GW corrections are calculated
 ltg_k datatype containing information on the little group
 Kmesh <kmesh_t>
 x_ngfft(18)=Information about 3D FFT for the oscillator strengths, see ~abinit/doc/variables/vargs.htm#ngfft
 Vcp <vcoul_t datatype> containing information on the cutoff technique
 Pawtab(psps%ntypat) <type(pawtab_type)>=paw tabulated starting data
 Pawang <type(pawang_type)>=paw angular mesh and related data
 psps <type(pseudopotential_type)>=variables related to pseudopotentials
 Qmesh <kmesh_t> : datatype gathering information of the q-mesh used
 Sigp <sigparams_t> (see the definition of this structured datatype)
 cryst<crystal_t>=Info on unit cell and symmetries
 qp_ebands<ebands_t>=Datatype gathering info on the QP energies (KS if one shot)
 Paw_pwff<pawpwff_t>=Form factor used to calculate the onsite mat. elements of a plane wave.
 allQP_sym(%nkibz, %nsppol)<esymm_t>=Datatype collecting data on the irreducible representations of the
    little group of kcalc in the KS representation as well as the symmetry of the bdgw_k states.
 prtvol=Flags governing verbosity level.

OUTPUT

  Sr%x_mat(bmin:bmax,bmin:bmax,%nsppol*Sigp%nsig_ab)=Matrix elements of Sigma_x.

NOTES

  1) The treatment of the divergence of Gygi+Baldereschi (PRB 1986) [[cite:Gigy1986]] is included.

  2) On the symmetrization of Sigma matrix elements
     If  Sk = k+G0 then  M_G(k, Sq)= e^{-i( Sq+G).t} M_{ S^-1(G}   (k,q)
     If -Sk = k+G0 then  M_G(k,-Sq)= e^{-i(-Sq+G).t} M_{-S^-1(G)}^*(k,q)

 Notice the absence of G0 in the expression. Moreover, when we sum over the little group, it turns out
 that there is a cancellation of the phase factor associated to the non-symmorphic operations due to a
 similar term coming from the symmetrization of \epsilon^{-1}. Mind however that the nonsymmorphic phase
 has to be considered when epsilon^-1 is reconstructed starting from the q-points in the IBZ.

  3) the unitary transformation relating wavefunctions
     at symmetric k-points should be taken into account during the symmetrization
     of the oscillator matrix elements. In case of G_oW_o and GW_o calculations, however,
     it is possible to make an invariant by just including all the degenerate states and
     averaging the final results over the degenerate subset. Here we divide the states
     where the QP energies are required into complexes. Note however that this approach is not
     based on group theory, and it might lead to spurious results in case of accidental degeneracies.


ABINIT/m_sigx [ Modules ]

[ Top ] [ Modules ]

NAME

  m_sigx

FUNCTION

  Calculate diagonal and off-diagonal matrix elements of the exchange part of the self-energy operator.

COPYRIGHT

  Copyright (C) 1999-2022 ABINIT group (FB, GMR, VO, LR, RWG, MG, RShaltaf)
  This file is distributed under the terms of the
  GNU General Public License, see ~abinit/COPYING
  or http://www.gnu.org/copyleft/gpl.txt .

SOURCE

16 #if defined HAVE_CONFIG_H
17 #include "config.h"
18 #endif
19 
20 #include "abi_common.h"
21 
22 module m_sigx
23 
24  use defs_basis
25  use m_abicore
26  use m_gwdefs
27  use m_xmpi
28  use m_defs_ptgroups
29  use m_errors
30  use m_time
31 
32  use defs_datatypes,  only : pseudopotential_type, ebands_t
33  use m_fstrings,      only : itoa, sjoin, ktoa, ltoa
34  use m_hide_blas,     only : xdotc, xgemv
35  use m_numeric_tools, only : hermitianize
36  use m_geometry,      only : normv
37  use m_crystal,       only : crystal_t
38  use m_fft_mesh,      only : rotate_FFT_mesh, cigfft
39  use m_bz_mesh,       only : kmesh_t, findqg0, littlegroup_t
40  use m_gsphere,       only : gsphere_t
41  use m_vcoul,         only : vcoul_t
42  use m_pawpwij,       only : pawpwff_t, pawpwij_t, pawpwij_init, pawpwij_free, paw_rho_tw_g, paw_cross_rho_tw_g
43  use m_paw_pwaves_lmn,only : paw_pwaves_lmn_t
44  use m_pawang,        only : pawang_type
45  use m_pawtab,        only : pawtab_type
46  use m_pawfgrtab,     only : pawfgrtab_type
47  use m_pawcprj,       only : pawcprj_type, pawcprj_alloc, pawcprj_free, pawcprj_copy, paw_overlap
48  use m_paw_nhat,      only : pawmknhat_psipsi
49  use m_paw_sym,       only : paw_symcprj
50  use m_wfd,           only : wfdgw_t, wave_t
51  use m_sigma,         only : sigma_t, sigma_distribute_bks
52  use m_oscillators,   only : rho_tw_g
53  use m_esymm,         only : esymm_t, esymm_symmetrize_mels, esymm_failed
54 
55  implicit none
56 
57  private

ABINIT/sigx_symmetrize [ Functions ]

[ Top ] [ Functions ]

NAME

 sigx_symmetrize

FUNCTION

  Symmetrize Sig_x matrix elements