我正在使用 pyiron 运行 Vasp 计算。我可以通过访问ElectronicStructure
和Dos
对象轻松绘制状态的总密度,例如
from pyiron.project import Project
pr = Project('tmp')
pr.remove_jobs(recursive=True)
vasp = pr.create_job(pr.job_type.Vasp, 'vasp')
vasp.structure = pr.create_ase_bulk('Al')
vasp.run()
dos = vasp.get_electronic_structure().get_dos()
dos.plot_total_dos()
有没有绘制隐藏在某处的带结构的类似方便的方法?
虽然没有直接的绘图函数,但可以使用特征值矩阵绘制频带结构
import matplotlib.pylab as plt
plt.plot(vasp.get_electronic_structure().eigenvalue_matrix);
或者手动绘制它,你可以使用:
# The trace is system dependent, in this example we use:
trace = np.array([[0, 0, 0], # Gamma
[1, 0, 0], # X
[1, 1, 0], # M
[0, 0, 0], # Gamma
[0, 0, 1], # Z
[1, 0, 1], # R
[1, 1, 1], # A
[0, 0, 1]]) # Z
label_ticks = ['$\Gamma$', 'X', 'M', '$\Gamma$', 'Z', 'R', 'A', 'Z']
energy = ham['output/electronic_structure/eig_matrix']
E_f = ham_chg['output/electronic_structure/efermi']
energy -= E_f
n_kpoints = len(energy)
n_trace = int(n_kpoints / (len(trace)-1))
normal_ticks = [i*n_trace for i in range(len(trace))]
plt.axhline(y=0, ls='--', color='k')
plt.plot(energy, 'r-')
plt.xlim(normal_ticks[0], normal_ticks[-1])
plt.xticks(normal_ticks, label_ticks)
plt.grid(axis='x')
plt.ylabel("Energy - $E_F$ [eV]")
plt.ylim(-1, 1);
这需要两个 VASP 计算,首先计算电荷密度:
ham_1.write_charge_density = True
执行此作业后,您可以使用电荷密度通过从上一个作业重新启动来计算带结构:
ham_2 = ham.restart_from_charge_density(job_name="job_band", icharg=11)
但据我所知,我们目前没有自动化功能。
如果您使用 VASP 计算波段结构,一个名为 VASPKIT 的友好工具将帮助您轻松绘制它!这是a link!安装完成后,在文件夹中打开 vaspkit,然后键入:21
211) Band-Structure
212) Projected Band-Structure of Only-One-Selected Atom
213) Projected Band-Structure of Each Element
214) Projected Band-Structure of Selected Atoms
215) Projected Band-Structure by Element-Weights
216) The Sum of Projected Band for Selected Atoms and Orbitals
然后,您可以按照提示自动绘制能带图。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(1条)