Orbital projected or atom projected band structure

Concerns issues with computing quasiparticle corrections to the DFT eigenvalues - i.e., the self-energy within the GW approximation (-g n), or considering the Hartree-Fock exchange only (-x)

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano

Post Reply
Dhanjit
Posts: 40
Joined: Sun Jun 12, 2022 4:18 am
Location: Tezpur, Assam, India

Orbital projected or atom projected band structure

Post by Dhanjit » Sun Feb 23, 2025 8:29 pm

Dear developers,
Is it possible to obtain an atom projected or orbital projected band structure in yambo similar to the attached figure?
source: J. Phys. Chem. Lett. 2021, 12, 1765−1771
You do not have the required permissions to view the files attached to this post.
Dhanjit Talukdar
Research Scholar,
Optoelectronics and Photonics Laboratory,
Department of Physics,
Tezpur University, Assam, India

User avatar
Daniele Varsano
Posts: 4198
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: Orbital projected or atom projected band structure

Post by Daniele Varsano » Mon Feb 24, 2025 9:17 am

Dear Dhanjit,

yes it is. You need to perform a projwfc calculation with QE first, and then calculate the DOS using ypp indicating the projections you need in the ypp input file.

Other option is to use the yambopy platform, see here for an example:
https://wiki.yambo-code.eu/wiki/index.p ... _structure

Best,

Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

Dhanjit
Posts: 40
Joined: Sun Jun 12, 2022 4:18 am
Location: Tezpur, Assam, India

Re: Orbital projected or atom projected band structure

Post by Dhanjit » Mon Feb 24, 2025 9:43 am

Dear Daniele,
Thank you for the swift response. The tutorial is done using Yambopy. Can you help me out with the general version code. What should I modify in the following command for h-BN unit cell to get the atom projected band structure?
# Version 5.0.4 Revision 19598 Hash 20b2ffa04
# Branch is 5.0
# MPI+HDF5_IO Build
# http://www.yambo-code.org
#
ElecTemp= 0.000000 eV # Electronic Temperature
BoseTemp=-1.000000 eV # Bosonic Temperature
StdoHash= 40 # [IO] Live-timing Hashes
electrons # [R] Electronic properties
infver # [R] Input file variables verbosity
dos # [R] DOS
PROJECT_mode= "ATOM" # Instruct ypp how to project the DOS. ATOM, LINE, PLANE.
PROJECT_path= "none" # Project path. PLANE mode: 3 points in the plane. LINE mode: any series of points.
PROJECT_steps=-1 # Project LINE/PLANE-axis steps.
PROJECT_depth= 1 # Project perpendicular direction divisions.
PROJECT_threshold= 5.000000 # [o/o] Project threshold above which the project DOS is printed.
INTERP_mode= "BOLTZ" # Interpolation mode (NN=nearest point, BOLTZ=boltztrap aproach)
INTERP_Shell_Fac= 20.00000 # The bigger it is a higher number of shells is used
INTERP_NofNN= 1 # Number of Nearest sites in the NN method
% INTERP_Grid
-1 |-1 |-1 | # Interpolation BZ Grid
%
GfnQPdb= "E < ./all_Bz/ndb.QP" # [EXTQP G] Database action
GfnQP_INTERP_NN= 1 # [EXTQP G] Interpolation neighbours (NN mode)
GfnQP_INTERP_shells= 20.00000 # [EXTQP G] Interpolation shells (BOLTZ mode)
GfnQP_DbGd_INTERP_mode= "NN" # [EXTQP G] Interpolation DbGd mode
% GfnQP_E
0.000000 | 1.000000 | 1.000000 | # [EXTQP G] E parameters (c/v) eV|adim|adim
%
GfnQP_Z= ( 1.000000 , 0.000000 ) # [EXTQP G] Z factor (c/v)
GfnQP_Wv_E= 0.000000 eV # [EXTQP G] W Energy reference (valence)
% GfnQP_Wv
0.000000 | 0.000000 | 0.000000 | # [EXTQP G] W parameters (valence) eV| 1|eV^-1
%
GfnQP_Wv_dos= 0.000000 eV # [EXTQP G] W dos pre-factor (valence)
GfnQP_Wc_E= 0.000000 eV # [EXTQP G] W Energy reference (conduction)
% GfnQP_Wc
0.000000 | 0.000000 | 0.000000 | # [EXTQP G] W parameters (conduction) eV| 1 |eV^-1
%
GfnQP_Wc_dos= 0.000000 eV # [EXTQP G] W dos pre-factor (conduction)
% DOSERange
-9.000000 | 9.000000 | eV # Energy range
%
DOSESteps= 500 # Energy steps
DOS_broad= 0.100000 eV # Broadening of the DOS
% DOS_bands
1 | 40 | # DOS bands
%
#DOSUsesOcc # Weight the DOS with the occupation factors
% PDOS_atoms
-1 |-1 | # Select atom number range
%
% PDOS_kinds
1 | 1 | # Select atom kind range
%
% PDOS_wfcs
-1 |-1 | # Select projector range
%
% PDOS_l
1 |1 | # Select angular momentum l range
%
% PDOS_j
-1.000000 |-1.000000 | # Select angular momentum j range
%
% PDOS_m
-10 |-10 | # Select angular momentum m range
%
The QE calculations include SCF, NSCF, and pdos (projwfc). Should we do kpdos as well prior to GW calculation?
Dhanjit Talukdar
Research Scholar,
Optoelectronics and Photonics Laboratory,
Department of Physics,
Tezpur University, Assam, India

User avatar
Daniele Varsano
Posts: 4198
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: Orbital projected or atom projected band structure

Post by Daniele Varsano » Mon Feb 24, 2025 11:39 am

Dear Dhanjit,

I suggest you to use yambopy, anyway you can find information on ypp looking for PDOS in the forum e.g. have a look at these threads:

viewtopic.php?t=1829
viewtopic.php?t=2714
viewtopic.php?t=2441

Best,
Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

Ponnappa
Posts: 20
Joined: Sat Sep 07, 2024 7:26 pm

Re: Orbital projected or atom projected band structure

Post by Ponnappa » Thu Mar 13, 2025 1:05 pm

Dear Developers,
In the above discussions, the projected DOS is for GW, and the projected band structure is from PBE. Is it possible to do the GW projected band structure?

Regards,
Ponnappa K. P.
Ponnappa K. P.
Phd Student
Harish Chadra Research Institute, India

User avatar
palful
Posts: 93
Joined: Tue Jan 26, 2016 11:23 am
Location: Modena and Milan

Re: Orbital projected or atom projected band structure

Post by palful » Thu Mar 13, 2025 7:22 pm

Dear Ponnappa,

In order to plot a projected band structure using quasiparticle energies instead of DFT ones, my suggestion is to create a python script in which you (i) extract a scissor operator from your GW data (explained in the GW section of the yambopy tutorial), and (ii) apply it to the DFT eigenvalues before plotting them. If you are using `ProjwfcXML`, the DFT eigenvalues would be stored in `ProjwfcXML.eigen`.

Another possibility is to simply replace the energy values of `ProjwfcXML.eigen` with the quasiparticle energies read with the class `YamboQPDB` before doing the plotting. Here you should be careful that the energy arrays in the two classes may not have the same format, and also there shouldn't be any reordering of the band indices between the DFT and GW bands.

Best,
Fulvio
Dr. Fulvio Paleari
S3-CNR Institute of Nanoscience and MaX Center
Modena, Italy

Post Reply