Пирамидальный черчение DOS

Я пытаюсь построить DOS (плотность состояний) с пиматгеном, но я не могу заставить его работать. Первое знакомство self а также class функции в Python, поэтому я в растерянности.

Эта ссылка объясняет пакет, который имеет нужную мне функцию (мне нужно использовать get_site_t2g_eg_resolved_dos(site) часть класса 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()

Этот код возвращает ошибку, и я уверен, что это потому, что функция get_site_t2g_eg_resolved_dos не используется правильно.

Даже если вы не знаете pymatgen с предоставленными ссылками, я думаю, вы могли бы помочь мне в правильном использовании функций, я был бы очень признателен. Заранее спасибо!


Изменить: Как выглядит код, который я пытаюсь сделать сейчас, оставьте оба, потому что я не уверен, правильно ли я делаю.

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()

Ошибка в выводе:

Traceback (most recent call last):
  File "t2g2g.py", line 21, in <module>
    data= a.get_site_t2g_eg_resolved_dos(structure)
  File "/usr/local/lib/python2.7/dist-packages/pymatgen/electronic_structure/dos.py", line 351, in get_site_t2g_eg_resolved_dos
    for s, atom_dos in self.pdos.items():
AttributeError: 'list' object has no attribute 'items'

1 ответ

Если вы не сдались здесь, это решение

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/ например) для построения графика.

Другие вопросы по тегам