File size: 1,192 Bytes
1c703f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.electronic_structure.plotter import BSPlotter
from pymatgen.electronic_structure.core import Spin
import matplotlib.pyplot as plt




def get_band_density_of_states(vasp_xml_path):
    vasprun = Vasprun(vasp_xml_path)

    # Extract total and projected DOS
    total_dos = vasprun.complete_dos

    # Access the energies and DOS values
    energies = total_dos.energies - total_dos.efermi  # Aligning energies with Fermi level
    total_dos_values = total_dos.densities

    return {"energies":energies,"total_dos_values":total_dos_values }

vasp_xml_path="/Users/voicutomut/Documents/GitHub/BespokeMaterials/DB/Databases/JARVIS/JARVIS2D/OPT-Bandst/JVASP-655/vasprun.xml"
b_dft=get_band_density_of_states(vasp_xml_path)
energies=b_dft["energies"]
total_dos_values=b_dft["total_dos_values"]
# Example: Plotting the total DOS
plt.plot(energies, total_dos_values[Spin.up], label='Spin Up')  # Spin-up DOS
if "Spin.down" in total_dos_values:
    plt.plot(energies, total_dos_values[Spin.down], label='Spin Down')  # Spin-down DOS

plt.xlabel('Energy (eV)')
plt.ylabel('DOS')
plt.title('Total Density of States')
plt.legend()
plt.show()