- #!/bin/bash
- #This script is used to monitor energy change during TS optimization with dimer method of cp2k.
- inf=`ls *.out`
- grep ENERGY ${inf} |head -1|awk '{print NR-1,"\t",$9}' > energy.txt
- grep "Informations at step" ${inf} -B 12|grep ENERGY |awk '{print NR,"\t",$9}' >> energy.txt
- cat energy.txt | awk 'NR==1{a=$2} NR>1{print NR-1,"\t",($2-a)*27.2114}' > deltaE.txt
- gnuplot -p << EOF
- set grid
- set xlabel "steps"
- set ylabel "Energy Variation (eV)"
- unset key
- plot "deltaE.txt" u 1:2 w lp lw 1 lc rgb "dark-blue" ps 1 pt 7
- EOF
- rm -f energy.txt
- rm -f deltaE.txt
复制代码 使用脚本时需要调用gnuplot画图,CentOS8中可以直接使用yum安装该软件。另外满分推荐MobaXterm这个免费的win下远程软件,这个软件可以直接调用Linux下的图形窗口如gnuplot、VMD、以及Multiwfn的一些绘图窗口等。所以Xshell之类的软件也就再无用武之地了。
使用:将脚本放到如~/script的目录下,然后在./bashrc中设置export PATH=$PATH:/home/xxx/script,之后就可以在任何目录下输入DMmonitor.sh使用脚本了。
下面简单说明一下脚本的运行流程:
inf=`ls *.out` 是将该目录下的cp2k输出文件名赋给变量inf (一般使用cp2k计算时都习惯每算一个文件就建一个目录,不会把好几个算例放到同一个目录下,所以直接使用了变量赋值);
grep ENERGY ${inf} |head -1|awk '{print NR-1,"\t",$9}' > energy.txt 是提取out文件中第一个SCF结束后的能量来作为体系的初始能量。这里与坛友djjj148的设置有所不同,他是设置了第一个rotation步骤结束后的能量为体系的初始能量,也无所谓,想用这个能量的改一下这一行就可以了。
grep "Informations at step" ${inf} -B 12|grep ENERGY |awk '{print NR,"\t",$9}' >> energy.txt Dimer 算法的运行流程有两步,旋转和平移过程。具体介绍阅读sob老师的(http://sobereva.com/44)博文。grep "Informations at step" ${inf} -B 12|head -1 这步是抓取每次dimer优化后当前体系的总能量,-B,berfoe,即向上抓取n行;awk '{print NR,"\t",$9}' 中 NR代表行号,这里面print NR就代表输出过渡态优化步数了。\t代表tab分隔。
cat energy.txt | awk 'NR==1{a=$2} NR>1{print NR-1,"\t",($2-a)*27.2114}' > deltaE.txt 这步就是将每步过渡态优化后的能量与体系的初始能量相减。energy.txt文件中第一行是体系的初始能量,NR==1{a=$2} 就是将体系的初始能量赋给变量a;NR>1{print NR-1,"\t",($2-a)*27.2114}表示将每步的过渡态能量与初始能量求差并且转化成以eV为单位输出,并且只打印第1,2,3。。。步过渡态能量的差值。
set grid 设置作图区域的网格线
set xlabel "steps" 设置x轴标签
set ylabel "Energy Variation (eV)" 设置y轴标签
unset key 取消显示图例
plot "deltaE.txt" u 1:2 w lp lw 1 lc rgb "dark-blue" ps 1 pt 7 u,using;1:2,代表作图的x、y轴数据是第几列;lp,linepoint的简写,点线样式;lw,line wides,线宽;lc,line color。这里如果不知道要用什么线型以及颜色,可以在输入gnuplot进入绘图模式后再输入test查看线的样式。另外也可以参照这篇文章设置线颜色(http://t066v5.coding-pages.com/2014/04/06/gnuplot%E9%A2%9C%E8%89%B2%E8%AE%BE%E7%BD%AE/);ps,pointsize,点的尺寸;pt,pointtype,点的类型;
rm两个文件确保下次使用脚本时产生的数据不会累加到当前的文件中。