from pymatgen.ext.matproj import MPRester
from pymatgen.io.vasp import Vasprun
from pymatgen.analysis.phase_diagram import PhaseDiagram, PDPlotter
vasprun = Vasprun(r"D:\one-hundred structures\1_relax\vasprun.xml")
entry = vasprun.get_computed_entry(inc_structure=True)
#这个entry是你计算的材料的entry
a = MPRester('your own API key')
mp_entries = a.get_entries_in_chemsys(['A', 'B', 'C']) #计算的材料是AxByCz
#这个entry是各元素在mp中的所有的entry
#下面我们需要把两种entry整合起来
compatibility = MaterialsProjectCompatibility()
entry = compatibility.process_entry(entry)
entries = compatibility.process_entries([entry] + mp_entries)
pd = PhaseDiagram(entries)
plotter = PDPlotter(pd, show_unstable=True)
#plotter.show() 可画出相图
#notebook里面是用PDAnalyzer分析化合物的Ehull,而pymatgen新版里面没有PDAnalyzer了,在PhaseDiagram里面,直接执行下行代码即可
ehull = pd.get_e_above_hull(entry)
print("The energy above hull of AxByCz is %.3f eV/atom." % ehull)
#运行结果:
The energy above hull of AxByCz is 0.043 eV/atom.
相的Ehull定义为:相图中该组分的稳定平衡相的线性组合以上的每个原子的归一化能量。
稳定的化合物的Ehull等于0,Ehull的值越高,说明该相越不稳定。