sumo icon indicating copy to clipboard operation
sumo copied to clipboard

Does SUMO support plotting projection band structures according to lm_orbiltals?

Open zrqustc opened this issue 6 years ago • 8 comments

Dear developers, I know SUMO can plot projection bands with s,p, d orbitals. How about projections according to px,py,pz ,dxy, dz2 and so on?

Best, Ruiqi

zrqustc avatar Nov 27 '19 06:11 zrqustc

Wish the developers can add this function to SUMO~ Great codes by the way

sddastone avatar Nov 29 '19 09:11 sddastone

Sumo gets the orbital-projected bandstructure for Vasp calculations using this method in Pymatgen: https://pymatgen.org/_modules/pymatgen/electronic_structure/bandstructure.html#BandStructure.get_projections_on_elements_and_orbitals

This seems to sum the data together from different directions before it reaches Sumo. In principle we could replace it with some similar function in Sumo, but it would make more sense to change Pymatgen; either by adding a get_projections_on_elements_and_orbitals_and_directions or by adding an optional parameter to the existing function which changes the logic and returns all the sub-orbitals. @utf how feasible does that seem?

ajjackson avatar Nov 29 '19 10:11 ajjackson

It should be simple to add the function you suggest to Pymatgen via either method. I prefer the modifying the existing function tbh.

We could then look at implementing this in sumo.

One thing to note is that that what VASP calls the px,py, pz, etc orbits might not be what you are expecting. These labels are only valid for orbitals that are oriented along the x, y and z cartesian directions. So if you have anything other than rocksalt these orbitals will be essentially meaningless for most atoms. You can reorient the cartesian axes so that the orbitals are aligned correctly but for many crystal structures this will only align 1 atom correctly.

Unless you are really careful and know your orbitals are aligned correctly, plotting a band structure with these labels will be pointless.

utf avatar Dec 03 '19 01:12 utf

Thanks for your reply. I think px,py, and pz calculated by projecting the Kohn-Sham wave functions onto spherical harmonics. Please see the PROCAR. The atoms site is the center. So, we just get the weights of orbitals from PROCAR. We can plot the fat bands according to different orbitals of atoms.

zrqustc avatar Dec 03 '19 02:12 zrqustc

Hi @zrqustc, this is correct. But the orientation of the spherical harmonics is determined by the cartesian x, y, and z directions. If bonds between atoms do not fall exactly along the x, y, and z directions the px, py, and pz orbitals will not be aligned along the cartesian axes, so the lm-decomposed orbitals will not capture the orbitals correctly.

A better method would be to use the LOBSTER package, which can rotate the spherical harmonic orbitals for each site to maximize overlap between the projected atomic orbitals and the actual wave functions.

Pymatgen has recently added support for LOBSTER decomposed projected band structures which will be much more robust. For more details see:

https://github.com/materialsproject/pymatgen/blob/e9e5ad82482219d8568468416a0ff43da5501b95/pymatgen/io/lobster.py#L949

For sumo, I would be more inclined to add support for LOBSTER fatbands rather than Vasp lm-decomposed projected band structures (as mentioned in #60).

utf avatar Dec 03 '19 18:12 utf

I made a rough diagram indicating what I mean:

Screen Shot 2019-12-03 at 11 03 02 AM

Note this issue will also affect lm-decomposed density of states...

utf avatar Dec 03 '19 19:12 utf

@utf That is great.Thanks for your clarification. Right now, I fully understand what you say. I will think about it. I thought we can directly get the weights from PROCAR. I will take a look at the module you mentioned. Thanks again.

zrqustc avatar Dec 03 '19 19:12 zrqustc

Hi all, I want to plot all the orbitals associated with my materials in the band structure. How to do this? Kindly help.

Thanking you, Subhasmita

SubhasmitaRay avatar Apr 01 '22 06:04 SubhasmitaRay