band-unfolding / bandup

BandUP: Band Unfolding code for Plane-wave based calculations
http://www.ifm.liu.se/theomod/compphys/band-unfolding
GNU General Public License v3.0
98 stars 50 forks source link

Quetion about BandUp within VASP #11

Closed chengyangXu closed 3 years ago

chengyangXu commented 3 years ago

Your code is very helpful! Ihave a question whether it is supported in SOC calculation in VASP and provides band projection on specific element or orbitals?

Thank you!

stepan-tsirkin commented 3 years ago

Yes, SOC is supported, as described in this paper: https://journals.aps.org/prb/abstract/10.1103/PhysRevB.91.041116

If I understand correctly, you mean projection to atomic orbitals? No, this is not implemented.

paulovcmedeiros commented 3 years ago

Just an addendum: Projection to atomic orbitals is supported for VASP. See the " --orbitals" and "projected-unfold" options.

cai-xiaomeng commented 3 years ago

Does the band unfolding code support MBj (MetaGGA) calculation in VASP?

Thank you!

stepan-tsirkin commented 3 years ago

Dear @cai-xiaomeng

I think there should be no problem with using metaGGA in VASP, as long as they allow to evaluate arbitrary k-points (lines) non-self-consistently. You may try and tell us if any problem arises.

In contrast, calculations involving Hartree-fock exchange (e.g. HSE) will not work, because they must be done on regular grids only.

Cheers, Stepan.

cai-xiaomeng commented 3 years ago

Dear Professor

Thank you so much for your help!

About using metaGGA in VASP, the KPOINTS file includes the K-mesh with normal weights and the high symmetry points with zero weight. And an example of KPOINTS file for metaGGA calculation is attached. KPOINTS.log

BandUp needs two main steps to calculate the band structure of supercell. (1) Do a self-consistent calculation to get converged CHGCAR. (2) Read CHGCAR from step(1) and do a non-self-consistent calculation to get WAVECAR. (3) Read WAVECAR from step(2) and do band unfolding.

If I want to consider MBJ for BandUp calculations, would it be possible to change the above steps like the following? (1) Do a self-consistent calculation to get WAVECAR. And the KPOINTS file used in this step is arranged like the attached file. KPOINTS.log

(2) Read WAVECAR from step(1) and do band unfolding.

All in all, can BandUp deal with the WAVECAR file calculated from the self-consistent calculation?

Thank you again for your attention to this matter!

stepan-tsirkin commented 3 years ago

Dear @cai-xiaomeng ,

In principle, WAVECAR is just a collection of k-points, so the procedure you suggest makes sense in principle, but not sure if it will work out of the box right now. You may try and tell me if/which errors you get. Important that the points you add to the KPOINTS file (with zero weights) are those you obtain on the "step_2"

You may also try to adjust the following example to your needs: https://github.com/stepan-tsirkin/bandup/tree/bandupy/tutorial/Quantum_ESPRESSO_bandupy

bandupy may be installed via 'pip install bandupy' and it is a new (developing) python version of bandupy, inteded for more flexibility. But it is not well tested yet.

Please tell me if you have problems, or if you succeed.

Regards, Stepan.

PS. Although not mandatory, but I would appreciate if you introduce yourself with a real name and affiliation.

cai-xiaomeng commented 3 years ago

Got it! Really appreciate your help! And my real name is Xiaomeng Cai. I'm a graduate student from Shanghai Jiao Tong University, China.

cai-xiaomeng commented 3 years ago

Dear Dr. Stepan

I unfolded the band structure of Cu54Se27 on its primitive fcc structure Cu2Se with metaGGA and the process was successful.

My question is that the file 'KPOINTS_supercell.out' produced in step2 contains 59 kpoints in supercell brillouin zone, and there are 71 kpoints in primitive cell brillouin zone (Please refer to the attached file). The thing is that the L point with fraction coords. (0.5, 0.5, 0.5) in primitive cell brillouin zone should correspond to (-0.5, 0.5, -0.5) point in supercell brillouin zone. But in this 'KPOINTS_supercell.out' file there is no (-0.5, 0.5, -0.5) point in the supercell brillouin zone. So my doubt is that how to find out which k point in the file unfolds on to the L point in primitive cell brillouin zone .

All in all, would it be possible to find out that a specific k point with a given band index in primitive cell brillouin zone folded back to which k point in the supercell brillouin zone and the corresponding band index.

I would be very grateful indeed for any help you could give me. step_2_get_kpts_to_be_used_in_the_SC_band_struc_calcs.zip

stepan-tsirkin commented 3 years ago

Dear @cai-xiaomeng , please note that the reduced coordinate of k-points are defined modulo 1, so +0.5 and -0.5 is the same (as well as e.g. -0.6 and +0.4). Your 'KPOINTS_supercell.out' contains a point:

-0.50000 -0.50000 -0.50000 1

probably this is your L point.

What do you mean by "band index" speaking about k-points ?

cai-xiaomeng commented 3 years ago

Dear Dr. Stepan, Thank you for your reply. The band index means the number of the energy bands. There are 22 bands in Cu2Se primitive cell, while 594 bands in Cu54Se27 supercell. Owning to the band folding, there become more bands after increasing the size of the cell.

For example, would it be possible to find out that L point of 18th band in primitive cell band structure folded back to which k point and which band in the supercell band structure.

Thanks again! Looking forward to hearing from you.

stepan-tsirkin commented 3 years ago

Dear Xiaomeng,

when your supercell is not perfect (otherwise there is no point in evaluating it), then "which band unfolds where" is not a well-defined question. A point in the SCBZ unfolds to multiple points of the PBZ, and in fact every band unfolds to each of those points, just with different weights. So, the unfolded bandstructure also contains 594 bands, just for many of those the weight is close to zero. But you need to fix a threshold to say if the band unfolded to a particular point or not, be it 0.01, 0.1 or 0.5, it is an arbitrary choice. Anyway, the energy is conserved upon unfolding, so you can say that the band with a particular energy in the unfolded bandstructure came form the band in the folded bandstructure with the exactly same energy and you can see its index. But what is irts index in the unfolded bandstructure is not a defined question.