bash+vasp+vaspkit能量应变计算弹性常数
admin
2023-09-02 17:05:29
0

脚本分享


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

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



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-08
Ionic Relaxation
NELMIN = 6
NSW = 100
IBRION = 2
ISIF = 2 (Must be 2)
EDIFFG = -1E-02

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

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

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



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




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



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




在每一个应变文件夹内则是施加了应变的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 $i
for k in strain_0.000 strain_-0.005 strain_+0.005 strain_-0.010 strain_+0.010 strain_-0.015 strain_+0.015
#k 为单独应变命名的文件的名称,可根据需要灵活改写
do
cd $k
mpirun -np 24 vasp|tee runlog
#vasp的执行命令,请根据实际计算环境和需要进行改写
cd ..
echo $i-$k
echo $i-$k
done
cd ..
done

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

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

vaspkit -task 201|tee vpkitlog

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


愿有所成


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

引喻失义 妄自菲薄

相关内容