我试图用pymatgen绘制DOS(状态密度),但我无法使其工作。第一次遇到python中的self
和class
函数,所以我很茫然。
这个link解释了具有我需要的功能的包(我需要使用类get_site_t2g_eg_resolved_dos(site)
的{{1}}部分)。这个link包含这些函数的源代码。查看在线发现的examples我已经制作了此代码
CompleteDos
该代码返回错误,我确信这是因为函数from pymatgen.electronic_structure.dos import CompleteDos
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.electronic_structure.core import Spin, Orbital
data = CompleteDos.get_site_t2g_eg_resolved_dos
plot = DosPlotter(data)
plot.get_plot(-5,5).show()
未正确使用。
即使您不知道pymatgen提供的链接,我认为您可以帮助我正确使用这些功能,我非常感激。提前谢谢!
编辑:我正在尝试的代码现在看起来如何,两者都离开,因为我不确定我是否正确地做事。
get_site_t2g_eg_resolved_dos
输出错误:
from pymatgen.electronic_structure.dos import CompleteDos
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.electronic_structure.core import Spin, Orbital
from pymatgen.io.vasp.outputs import Vasprun, Procar
from pymatgen.core.ion import Ion
vasprun = Vasprun("./vasprun.xml")
pdos = vasprun.pdos
tdos = vasprun.tdos
efermi = vasprun.efermi
energy = vasprun.eigenvalues
structure = vasprun.structures
a = CompleteDos(structure, tdos, pdos)
data = a.get_site_t2g_eg_resolved_dos(structure)
plot = DosPlotter(data)
plot.get_plot().show()
答案 0 :(得分:0)
如果你还没有放弃,那就是解决方案
from pymatgen.electronic_structure.dos import CompleteDos
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.electronic_structure.core import Spin, Orbital
from pymatgen.io.vasp.outputs import Vasprun, Procar
from pymatgen.core.ion import Ion
vasprun = Vasprun("./vasprun.xml")
pdos = vasprun.pdos
tdos = vasprun.tdos
efermi = vasprun.efermi
energy = vasprun.eigenvalues
structure = vasprun.structures
data = vasprun.complete_dos.get_site_t2g_eg_resolved_dos(vasprun.structures[0][0])
plot = DosPlotter()
plot.add_dos("t2g",data['t2g'])
plot.show()
您需要指定站点和模式(t2g / eg)才能绘制。