Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1265
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2020-07-15 23:05
个人简介

I am a 废废......

文章分类

全部博文(3)

文章存档

2021年(1)

2020年(2)

我的朋友
最近访客

分类: LINUX

2020-07-15 23:18:17

CPMD波函数测试的自动脚本,将本脚本和第一个测试的输入文件放到一起即可。
这个脚本是对vdb_pbe赝势的截断值进行测试,从20~55,间隔为5,我的输入文件名为:1wopt_cut20.inp。

#!/bin/bash
 
for ((i=0;i<7;i++));
do
  k=`expr $i  \* 5 + 25`
  j=`expr $k + 5`
  inputname="1wopt_cut"$k".inp"
  outputname="1wopt_cut"$k".log"
  nextfname="1wopt_cut"$j".inp"
  dirname="wtest"$k
  cpmd.x $inputname > $outputname
  cp $inputname $nextfname
  mkdir  $dirname
  mv GEOMETRY GEOMETRY.xyz LATEST $inputname  RESTART.1 ./$dirname
  cp $outputname  ./$dirname

  ktext=$k".0"
  jtext=$j".0"
  sed -i '18s/'"${ktext}"'/'"${jtext}"'/g' $nextfname
  j=0
  k=0
  echo "Wavefunction test " $inputname "finished!" ;
done

grep 'TOTAL ENERGY =                   -34'  *.log  >> energy.dat
sed -i 's/'1wopt_cut'/ /g'  energy.dat
sed -i 's/'.log:   (K+E1+L+N+X)           TOTAL ENERGY = '/ /g'  energy.dat
sed -i 's/'A.U.'/ /g'  energy.dat


说明:
1.   k=`expr $i  \* 5 + 25` 这个表达式使用的是shell下的计算方式,注意"`"这个符号是ESC按键下面的`,不要和单引号弄混。此外,计算的表达式运算符和数字间一定要有空格;

2.  sed -i '18s/'"${ktext}"'/'"${jtext}"'/g' $nextfname这句是将第18行的截断值进行字符串替换,18为行号,这个视自己的程序进行更改。在sed命令中使用字符串变量的方法是 sed -i 's/'"${a}"'/'"${b}"'/g' filename。

祝同志们计算顺利!
阅读(139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~