使用Pymatflow辅助Quantum ESPRESSO计算能带
疫情期间,我们要积极响应国家、社会的号召待乖乖在家里。学校暂时肯定回不去了,待在家里我们也可以好好学习哦。今天我将自己陆陆续续花了半年利用课余时间用Python写的一个DFT计算流程管理工具Pymatflow整理并发布到了PyPI上。
Pymatflow本质上是一个为开源软件如Quantum ESPRESSO、CP2K、SIESTA等自动生成输入文件以及将任务在本地运行或者提交到服务器运行的工具。
为了向大家介绍该工具,我这里以一个实际的能带结构计算的例子来展示如何使用Pymatflow:
这里假设已经在服务器上安装了Pymatflow,然后你的服务器的作业调度器是PBS。具体的安装办法是:
pip install pymatflow --user
注意要将`~/.local/bin`加入到你的`PATH`中,如果你是系统管理员,也可以直接:
sudo pip install pymatfow
然后准备好xyz格式的结构文件,这里以MoS2作为作为模拟对象。
结构文件(mos2.xyz)内容如下:
6
cell: 3.1922380 0.0000000 0.0000000 | -1.5961190 2.7645592 0.0000000 | 0.0000000 0.0000000 13.3782944
Mo 1.5961190 0.9215197 3.3445736
Mo 0.0000000 1.8430395 10.0337208
S 1.5961190 0.9215197 8.4695574
S 0.0000000 1.8430395 4.9087370
S 1.5961190 0.9215197 11.5978843
S 0.0000000 1.8430395 1.7804102
需要注意的是为了让Pymatflow能够正确读取结构,你需要在xyz结构文件的第二行指定体系的晶胞参数,就像上述内容中所示。
然后就开始进行静态SCF的计算,将mos2.xyz文件与对应的贋势文件放在一个目录下 ,然后运行一下命令:
qe-scf.py -f mos2.xyz -d mos2-band --ecutwfc 80 --kpoints-mp 3 3 3 0 0 0 --runopt=gen --auto=3
等待上述任务完成后执行一下命令进行nscf的计算:
qe-nscf.py -f mos2.xyz -d mos2-band --ecutwfc 80 --kpoints-mp 5 5 5 0 0 0 --runopt=gen --auto=3
然后你需要准备一个能带高对称点路径文件,示例如下:
11
0.000000 0.000000 0.000000 #GAMMA 15
0.000000 0.500000 0.000000 #Z 15
0.000000 0.500000 0.500000 #D 15
0.000000 0.000000 0.500000 #B 15
0.000000 0.000000 0.000000 #GAMMA 15
-0.500000 0.000000 0.500000 #A 15
-0.500000 0.500000 0.500000 #E 15
0.000000 0.500000 0.000000 #Z 15
-0.500000 0.500000 0.000000 #C_2 15
-0.500000 0.000000 0.000000 #Y_2 15
0.000000 0.000000 0.000000 #GAMMA 15
等nscf计算结束后,执行以下命令进行能带结构的计算:
qe-bands.py -f mos2.xyz -d mos2-band --ecutwfc 80 --crystal-b-file kpath.txt --runopt=gen --auto=3
支持能带结构计算就完成了,运行以下命令进行作图:
post-qe-bands.py -d mos2-band
得到结果如下:
该工具在我的日常学习工作中扮演者比较重要的角色,可以很大程度提高我的工作效率(当然撇去开发时间不算)。另外需要注意的是此工具的使用需要使用者对自己在做什么有清晰的认识,具体的计算参数的设置可以通过命令行参数传递给程序。
目前Pymatflow对QE、CP2K的结构驰豫、晶胞参数优化、SCF、能带计算、过渡态计算等有较好的支持,我也会继续增加功能和进行维护,感兴趣的朋友也可以联系我一起维护。由于才整理好代码部分,文档还未整理完全,目前会通过此公众号发布一些使用案例来和大家交流。有好的建议欢迎发送邮件到`pymatflow@163.com`
更多文章
微信公众号
欢迎关注微信公众号”生材有道”, 可以订阅更多资讯。