计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2359|回复 Reply: 2

[CP2K] 监控dimer方法优化TS能量变化的一个小脚本

[复制链接 Copy URL]

327

帖子

9

威望

1995

eV
积分
2502

Level 5 (御坂)

发表于 Post on 2021-11-23 19:25:42 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 丁越 于 2021-11-25 08:39 编辑

监控dimer方法优化TS能量变化的一个小脚本

  最近坛友djjj148分享了CP2K中使用dimer方法时找过渡态的经验(http://bbs.keinsci.com/thread-23516-1-1.html),使得寻找过渡态一下子方便了太多,非常nice!但是我个人觉得在监控能量变化那块Python脚本使用起来有点不方便,有点长,老是记不住,尽管我写了alias。  于是写了shell小脚本来方便监控DM优化过程中能量变化(初次写脚本,写的不对的地方请各位坛友多多批评指正)。

  1. #!/bin/bash
  2. #This script is used to monitor energy change during TS optimization with dimer method of cp2k.

  3. inf=`ls *.out`
  4. grep ENERGY ${inf} |head -1|awk '{print NR-1,"\t",$9}' > energy.txt
  5. grep "Informations at step" ${inf} -B 12|grep ENERGY |awk '{print NR,"\t",$9}' >> energy.txt
  6. cat energy.txt | awk 'NR==1{a=$2} NR>1{print NR-1,"\t",($2-a)*27.2114}' > deltaE.txt

  7. gnuplot -p << EOF
  8. set grid
  9. set xlabel "steps"
  10. set ylabel "Energy Variation (eV)"
  11. unset key
  12. plot "deltaE.txt" u 1:2 w lp lw 1 lc rgb "dark-blue" ps 1 pt 7
  13. EOF

  14. rm -f energy.txt
  15. 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。。。步过渡态能量的差值。

gnuplot 作图时支持交互模式输入,-p,persist,代表告诉程序在退出时不要关闭作图窗口。EOF是什么在sob老师博文(http://bbs.keinsci.com/thread-24929-1-1.html)说的很清楚了。
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两个文件确保下次使用脚本时产生的数据不会累加到当前的文件中。







DMmonitor.sh

569 Bytes, 下载次数 Times of downloads: 11

评分 Rate

参与人数
Participants 3
威望 +1 eV +10 收起 理由
Reason
sobereva + 1
zsu007 + 5
Aridea + 5 好物!

查看全部评分 View all ratings

自由发挥,野蛮生长

132

帖子

0

威望

701

eV
积分
833

Level 4 (黑子)

发表于 Post on 2021-11-23 19:52:24 | 显示全部楼层 Show all
好物,感谢分享~

115

帖子

0

威望

2437

eV
积分
2552

Level 5 (御坂)

发表于 Post on 2022-5-15 23:10:23 | 显示全部楼层 Show all
本帖最后由 neocc 于 2022-5-15 23:13 编辑

如果是在超算没有图形化界面的环境中,推荐 dumb 和 replot


  1. # $1 = out file
  2. # $2 = delay in seconds

  3. gnuplot -p <<EOF
  4. reset session
  5. set term dumb 120,30
  6. set tics nomirror scale 0.5
  7. set grid
  8. set xlabel "steps"
  9. set ylabel "Energy Variation (a.u.)"
  10. unset key
  11. plot '$1-data.txt' u 1:2  w l

  12. stop = 0

  13. while !stop {
  14.     pause $2     # delay in seconds
  15.     replot
  16. }
  17. EOF
复制代码


本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2023-2-7 02:36 , Processed in 0.645659 second(s), 25 queries .

快速回复 返回顶部 返回列表 Return to list