Page 1 of 1

Orbital projected or atom projected band structure

Posted: Sun Feb 23, 2025 8:29 pm
by Dhanjit
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

Re: Orbital projected or atom projected band structure

Posted: Mon Feb 24, 2025 9:17 am
by Daniele Varsano
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

Re: Orbital projected or atom projected band structure

Posted: Mon Feb 24, 2025 9:43 am
by Dhanjit
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?

Re: Orbital projected or atom projected band structure

Posted: Mon Feb 24, 2025 11:39 am
by Daniele Varsano
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

Re: Orbital projected or atom projected band structure

Posted: Thu Mar 13, 2025 1:05 pm
by Ponnappa
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.

Re: Orbital projected or atom projected band structure

Posted: Thu Mar 13, 2025 7:22 pm
by palful
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