bash+vasp+vaspkit能量应变计算弹性常数

脚本分享

计算理论弹性常数常用的方法是应力应变,而另一种方法是根据能量变化,对平衡晶格结构施加小应变。能量-应变法对应于弹性刚度张量由总能量对应变的二阶导数导出。一般来说,应力应变法需要更高的计算精度才能达到与能量应变法相同的精度。然而,能量应变法需要的变形比后者小得多。能量应变法比应力应变法具有更小的应力敏感性,而且该方法已经在VASPKIT程序中实现。

 独立弹性常数的数目取决于晶体的对称性。对称性越低意味着独立的弹性常数越多。例如,立方晶体有三个弹性常数,而三斜晶体有21个独立的弹性常数。

bash+vasp+vaspkit能量应变计算弹性常数_第1张图片

https://vaspkit.com/tutorials.html#mechanical-properties

而通过VASPKIT使用能量应变计算理论弹性常数时,生成的计算文件目录众多,需要辅助以bash脚本进行计算。

计算所需要的INCAR(参照vaspkit网站例子)

Global Parameters  ISTART =  0  LREAL  =  F  PREC   =  High  LWAVE  = F  LCHARG = F  ADDGRID= .TRUE.Electronic Relaxation  ISMEAR =  0  SIGMA  =  0.05  NELM   =  40  NELMIN =  4  EDIFF  =  1E-08Ionic Relaxation  NELMIN =  6  NSW    =  100  IBRION =  2  ISIF   =  2    (Must be 2)  EDIFFG = -1E-02

预处理和后处理所需要准备的VPKIT.in文件,如同后面注释所说明的,预处理时第一行开头为1,后处理时为2.

1                    ! 1 for pre-processing; 2 for post-processing3D                   ! 2D for two-dimentional, 3D for bulk7                    ! number of strain case-0.015 -0.010 -0.005 0.000 0.005 0.010 0.015  ! Strain range

笔者准备了一个空间群为Pmm2(序号为25,属于斜方晶系)的POSCAR。

bash+vasp+vaspkit能量应变计算弹性常数_第2张图片

通过vaspkit的201功能生成了能量应变计算的目录

bash+vasp+vaspkit能量应变计算弹性常数_第3张图片

总计有9个大文件夹,分别以该空间群所需要的独立弹性常数来命名

bash+vasp+vaspkit能量应变计算弹性常数_第4张图片

在每个大文件夹内则是以应变强度命名的实际计算执行的文件夹,文件夹的数量可根据预处理的VPKIT.in文件的最后一行的应变设置来更改。

bash+vasp+vaspkit能量应变计算弹性常数_第5张图片

在每一个应变文件夹内则是施加了应变的POSCAR和事先准备好的INCAR、KPOINTS和POTCAR文件的链接,可直接进行vasp计算。

这里通过一个简单的两重for循环命令依次序完成所需要的计算任务。

for i in C11 C11_C12_C22 C11_C13_C33  C22  C22_C23_C13 C33 C44 C55 C66  #i为由独立弹性常数所命名的上级文件夹名称do cd $ifor k in strain_0.000  strain_-0.005  strain_+0.005  strain_-0.010  strain_+0.010  strain_-0.015  strain_+0.015#k 为单独应变命名的文件的名称,可根据需要灵活改写docd $kmpirun -np 24 vasp|tee runlog#vasp的执行命令,请根据实际计算环境和需要进行改写cd ..echo $i-$kecho $i-$kdonecd  ..done

待脚本执行完毕,可更改VPKIT.in文件进行后处理并导出数据。

为了可以将vaspkit所导出的关于声速、德拜温度等结果完整记录,建议执行如下命令

vaspkit -task 201|tee vpkitlog

运行过程记录则会保存在vpkitlog文件(可根据需要灵活命名)中。

愿有所成

bash+vasp+vaspkit能量应变计算弹性常数_第6张图片

更多内容请关注微信公众号:IEchoQ

引喻失义   妄自菲薄

你可能感兴趣的:(vasp,vaspkit,linux)