

Pymatgen轻松一键绘制能带(bandstructure)和态密度(DOS)图-高通量计算系列教程
时间:2023年9月18日
推荐镜像:unimol-qsar:v0.1
推荐计算资源:CPU
内容: pymatgen是Materials Project开发的一个python库,主要用于高通量计算的输入文件设置与输出文件处理,相关软件还有Fireworks,custodian,atomate,matminer,这些软件为高通量计算提供了一个完整的解决方案。pymatgen功能强大,针对Vasp的功能最为完善,利用pymatgen可以完成大部分Vasp计算的自动化处理,优势明显,大家可以自己去进一步学习,这里只为大家简单介绍一下pymatgen在能带结构与电子态密度画图方面的简单应用。
使用方式:您可在 Bohrium Notebook 上直接运行。您可以点击界面上方蓝色按钮 开始连接
,选择 unimol-qsar任意一镜像
镜像及任何一款节点配置,稍等片刻即可运行。如您遇到任何问题,请联系 bohrium@dp.tech 。
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速作图,请直接看文末快速指南。
我们正式开始。我们计算的是Si N Ti,POSCAR中只有三种原子。当前目录下有四个文件夹,so是优化计算,scf是自恰计算,bs是能带计算,dos是态密度计算,计算已经完成。注意:以!开头的是shell命令
pymatgen是面向对象编程,发挥了python的长处,因此我们首先需要创建要处理的对象。
调用pymatgen.io.vasp.outputs模块,通过处理对应的vasprun.xml文件,得到两个对象dos_data与bs_data,包含了能带和态密度的所有信息。
得到这两个对象以后,我们就可以根据自己的需求来画各种图,相应的模块是pymatgen.electronic_structure.plotter。
/opt/conda/lib/python3.8/site-packages/pymatgen/io/vasp/inputs.py:1820: UnknownPotcarWarning: POTCAR data with symbol N does not match any VASP POTCAR known to pymatgen. There is a possibility your POTCAR is corrupted or that the pymatgen database is incomplete. warnings.warn( /opt/conda/lib/python3.8/site-packages/pymatgen/io/vasp/inputs.py:1820: UnknownPotcarWarning: POTCAR data with symbol Si does not match any VASP POTCAR known to pymatgen. There is a possibility your POTCAR is corrupted or that the pymatgen database is incomplete. warnings.warn( /opt/conda/lib/python3.8/site-packages/pymatgen/io/vasp/inputs.py:1820: UnknownPotcarWarning: POTCAR data with symbol Ti does not match any VASP POTCAR known to pymatgen. There is a possibility your POTCAR is corrupted or that the pymatgen database is incomplete. warnings.warn(
原始的能带与态密度图

将能带与态密度投影到元素

将能带投影到元素,态密度投影到轨道

能带图
pymatgen中BSPlotter与BSPlotterProjected可以满足我们关于能带画图的绝大部分需求。
原始能带图


投影到元素的能带



态密度图
我们可以利用DosPlotter来画各种态密度图。DosPlotter有两个重要的参数,一是sigma,与INCAR中的SIGMA对应,我们可以通过调节sigma值的大小来调节态密度图的光滑程度。二是stack,可以决定作图方式是曲线还是面积,具体如下。
总态密度



投影到轨道的态密度

投影到元素的态密度

以上就是全部内容,我在上边提到的各种方法还有许多参数,值得大家去仔细研究,大家也可以通过matplotlib设置图的字体和颜色等信息,定制各种高质量的能带与态密度图。
pymatgen除了画图还在许多其他方面有强大的功能,有兴趣的可以自己去研究。接下来是针对python小白的简单粗暴的操作指南。
快速指南
要求 | 方法 |
---|---|
原始的能带与态密度图 | In[2] + In[3] |
将能带与态密度投影到元素 | In[2] + In[4] |
将能带投影到元素,态密度投影到轨道 | In[2] + In[5] |
原始能带图 | In[2] + In[6] 或 In[2] + In[7] |
总态密度 | In[2] + In[11] |
投影到轨道的态密度 | In[2] + In[13] |
投影到元素的态密度 | In[2] + In[14] |
参考
pymatgen画能带图方法-高通量计算初探: http://blog.wangruixing.cn/2019/05/19/pymatgen-band/
pymatgen 能带与态密度绘图教程: https://mp.weixin.qq.com/s/y7if55laqS-R16It-QGUiw







