本帖最后由 丁越 于 2022-4-28 17:33 编辑
QE的一个小辅助工具包QEtoolkit
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[2022-Apr-28]: 1.更新了(vc)vcrelax的输出文件都能向.cif、.gjf、.xyz格式的转换 (即结构优化输出文件向这些格式转化也支持了)。
2. 添加了(vc)relax输出文件产生nscf计算输入文件的功能
修复了vcrelax转nscf文件时晶胞信息没有更新的bug
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、前言 QE已经学习了有一小段时间了,就目前我个人的使用感受来说,QE在一些电子结构分析方面能给CP2K很大的补充,比如可以结合Lobster做COOP、COHP分析,通过DFPT方法计算U、杂化泛函计算能带等等,这些方面CP2K目前还是不能胜任的。缺点来说首当其冲的就是速度,比起CP2K简直慢的不要不要的。。。言归正传,这两天我总结了一下使用QE过程中一些需要程序化的东西,顺便把它整合成了一个小工具包方便使用,包括生成输入文件、输入/出文件向其他格式转化,如.cif,.gjf,.xyz。原子固定、能量收敛监控、k点收敛性测试、动能截断能和电子密度截断能测试。目前为止就添加了这么些功能,其他的我以后想到了再慢慢加入。
二、脚本使用 使用脚本请检查一下用户是否可以调用Multiwfn和gnuplot,否则有些功能是不支持的。
该脚本支持交互式执行和程序界面输入文件名两种形式,交互式执行时输入如"./QEtoolkit.sh xxx.scf.in"。直接执行 ./QEtoolkit 时界面如下所示,并且提示输入相应文件名:
- >----------------------------------------------------------------------------------<
- >- -<
- >- QEtoolkit -<
- >- -<
- >- Author: Yue Ding -<
- >- -<
- >- Version 1.0 (dev) -<
- >- -<
- >----------------------------------------------------------------------------------<
- Note: Below functions are only suit for ibrav=0 combined with angstrom unit
- ******Main Function Menu******
- 0. Generate pw.x input file throuth Multiwfn (.cif, .gjf, etc that supported by Multiwfn)
- 1. Output vcrelax structure to .gjf format
- 2. Output vcrelax structure to .cif format
- 3. Output relaxed structure to .xyz format (both relax and vcrelax)
- 4. Convert pw.x input file to .xyz format
- 5. Convert pw.x input file to .cif format
- 6. Convert pw.x input file to .gjf format
- 7. Fix atoms for slab model
- 8. Monitor energy convergence in SCF, relax, and vcrelax
- 9. Convergence test for ecutwfc and ecutrho
- 10. Convergence test for kpoint
- Input the file name, for example Ni.vcrelax.out
复制代码 非常重要的一点是该脚本只支持ibrav=0 ,并且以angstrom为单位的笛卡尔坐标形式,因为这种形式的坐标在使用上来说是最直观形象的。但是让我非常不理解的是QE为什么会有alat这种格式,拗口之余还非常晦涩。 下面就简单说说这些功能:
* 0号功能是调用Multiwfn生成一个单点文件(xxx.scf.in),这里只要Multiwfn支持的含晶胞信息的结构文件都能产生QE的输入文件,然后用pwgui做进一步修改即可。
* 1、2号功能则是将晶胞优化产生的输出文件转化为.gjf、.cif格式。我们做表面计算的一般流程是优化晶胞 -> 切面 -> 优化slab -> 吸附分子再优化,但是QE的可视化程序比如xcrysden不支持产生cif和gjf文件,导致我们做完晶胞优化完才发现,咦,我还需要切面啊,但是貌似没有程序直接支持pw.x输出文件向cif等格式转化啊。。。唯一办法就是利用xcrysden转化为.xsf格式,然后再用VESTA转成.cif 。
* 3号功能则是直接将结构优化和晶胞优化的输出文件转化为.xyz格式。
* 4、5、6号功能就正好反过来,把pw.x的输入文件再转化为.cif、.gjf、.xyz格式
* 7号功能之前我已经写过了,正好这次把它整合过来
* 8号功能是监测单点、结构优化、晶胞优化过程中的能量收敛情况。脚本中会自动根据输出文件的输出情况做判断,假如输入文件是一个单点文件,那么gnuplot绘图的横坐标含义是每个electronic step 的能量相对第一个电子步能量变化;假如输入文件是一个结构优化输出文件,当第一个离子步没完成或者刚完成时,输出的横坐标含义还是和单点输出一致。只有当完成两个离子步及以上时,横坐标的含义是每个离子步相对于第一个离子步的能量变化。如下是一个Ni的晶胞优化的输出文件。注意纵坐标单位是eV而不是Ry,第7个ionic step是QE做完晶胞优化后会再做一个单点的能量,这是体系最终的能量。
* 9号功能是对动能截断能、电子密度截断能做收敛性测试。输入格式请务必按照 e.g.提示的形式来,否则会有问题。对于PAW赝势,经验法则是电子密度截断能要为动能截断能的4倍;超软赝势则取动能截断能的8~12倍。输入动能截断能的形式如屏幕提示所示:截断能的起始值,扫描步长,截断能的终止值。比如输入30 5 40,则被扫描的动能截断能有“30,35,40”这三个值。注意这里的dual值,根据屏幕提示,这里不是要你输入电子密度截断能的值,而是输入一个倍数值,电子密度截断能=动能截断能*dual,因此按照刚才说的经验法则合理选取倍数。还有一点是假如你输入了多个dual,比如“4 8”,如果上步输入的动能截断能是 “30 5 40”,那么在30的动能截断能下,就会产生电子密度截断分别为“120 和240”的两个输入文件;同理对于动能截断能为35和40,因此总共的输入文件数量将是3*2=6个,被保存在了在当前目录下名为scan_ecut的目录中,产生的输入文件形式是{prefix}_{ecutwfc}_{ecutrho}.scf.in。此外,在scan_ecut的目录下,同样产生了用于pbs队列批量计算的脚本和gnuplot绘图脚本,对于不使用队列的用户来说,把sub_qe.sh脚本中做循环的那部分代码拿出来,然后自己建一个名为sub_qe.sh的可执行文件去批量计算即可。计算完成后,直接gnuplot scan_ecut.gp就可以绘制结果了。
* 10号功能是对于k点做收敛性测试,注意输入格式一定要写为1 1 1,2 3 4,3 3 3等此类样式。这个功能设计时就没有设计为像动能截断能扫描那种样式,那样运行反倒是不灵活的,比如第三个方向的k点每次扫描只取1。同9号功能,批量提交任务的脚本和gnuplot脚本也被输出到了scan_kp的目录下。产生的输入文件的命名形式是{prefix}_{kpoint}.scf.in。下面展示的是一个k点收敛性测试的结果:
以上就是目前为止添加的功能,欢迎大家的建议和意见!
|