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。
祝同志们计算顺利!
阅读(176) | 评论(0) | 转发(0) |