You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Currently, the band gaps computed using the eigenvalue_band_properties function in pymatgen.io.vasp.outputs (e.g. for the Vasprun or Eigenval classes) are based on the VBM and CBM independent of spin. For some spin-polarized systems, this might result in a band gap that is formally a spin-forbidden transition, which may not be the gap of interest depending on the use-case. Additionally, it is not currently possible to quickly determine if a material might be something like a half-metal, where one spin channel has metallic behavior and the other does not. [Disclaimer: I'm by no means an expert on this topic, so apologies if I've butchered it.]
As an example, see the DOS below. Band gap 1 (and its corresponding CBM and VBM) is the current value computed in Pymatgen. Band gap 2, however, may be a desirable property to compute since there is no spin transition. Band gap 3, while larger than band gap 2, may also be of interest. Currently, there is no way to compute band gap 2 or band gap 3.
Describe the solution you'd like
I propose to add a flag separate_spins that, when set to False (default), does not change the behavior of the eigenvalue band properties. However, when separate_spins is set to True, the returned tuple will contain properties for the spin-up and spin-down channels separately. The user would most likely be interested in the minimum value of band gap 2 and 3, but they can take the minimum on their own if desired.
Describe alternatives you've considered
Nothing major to note.
Additional context
Here is an example of how the band gap can currently be computed.
frompymatgen.io.vasp.outputsimportEigenvaleig=Eigenval('EIGENVAL') # I am proposing to add a new keyword argument herebg=eig.eigenvalue_band_properties[0]
print(bg)
Note
I am currently working on the PR. Hopefully I can submit it soon if you think this is desirable.
The text was updated successfully, but these errors were encountered:
Is your feature request related to a problem? Please describe.
Currently, the band gaps computed using the
eigenvalue_band_properties
function inpymatgen.io.vasp.outputs
(e.g. for theVasprun
orEigenval
classes) are based on the VBM and CBM independent of spin. For some spin-polarized systems, this might result in a band gap that is formally a spin-forbidden transition, which may not be the gap of interest depending on the use-case. Additionally, it is not currently possible to quickly determine if a material might be something like a half-metal, where one spin channel has metallic behavior and the other does not. [Disclaimer: I'm by no means an expert on this topic, so apologies if I've butchered it.]As an example, see the DOS below. Band gap 1 (and its corresponding CBM and VBM) is the current value computed in Pymatgen. Band gap 2, however, may be a desirable property to compute since there is no spin transition. Band gap 3, while larger than band gap 2, may also be of interest. Currently, there is no way to compute band gap 2 or band gap 3.
Describe the solution you'd like
I propose to add a flag
separate_spins
that, when set to False (default), does not change the behavior of the eigenvalue band properties. However, whenseparate_spins
is set to True, the returned tuple will contain properties for the spin-up and spin-down channels separately. The user would most likely be interested in the minimum value of band gap 2 and 3, but they can take the minimum on their own if desired.Describe alternatives you've considered
Nothing major to note.
Additional context
Here is an example of how the band gap can currently be computed.
Note
I am currently working on the PR. Hopefully I can submit it soon if you think this is desirable.
The text was updated successfully, but these errors were encountered: