在一个机器上加几组计算任务
windows下高斯多步计算,不知道该怎么弄? 就是先优化完一个结构之后,自动开始下一个优化(和第一个不是同一个文件),谢谢 有没有输入文件的例子啊? %chk=a.chk %mem=800mb # hf/3-21g opt optA 0 1
A结构坐标 (空格) --link--
%chk=b.chk %mem=800mb # hf/3-21g opt optB 0 1
B结构坐标
用bcf文件就可以啊 如
! !user created batch file list !start=1 !
e:\\cal\\CH4-td-opt.gjf , e:\\cal\\CH4-td-opt.out e:\\cal\\C2H6-631g-opt.gjf , e:\\cal\\C2H6-631g-opt.out
【原创】几个处理输入输出文件的shell 脚本。
Linux 下的shell 脚本是一种批处理语言,可以把单个的命令组合起来,又能够进行判断循环等流程控制。
当面对成百上千个的输入输出文件需要操作时候,除了shell,你还能选择什么呢?这里列出几个常用的操作,并给出相应的解析,希望能对大家有所帮助。 2-5楼
1 把当前目录下所有的
gjf 文件用g03 计算
2 修改gjf 的开头
3 把out文件的能量提取出来,存储到get_energy.log 中,同时生成以能量值为文件名的
out文件,便于排序筛选
4 把out文件的最后一个坐标做成gjf 文件,并赋予新的关键词
10楼 使用方法
all_g03.sh #!/bin/bash for inf in *.gjf do
outf=`echo ${inf}|tr\ g03 < ${inf} >${outf} done
该文件可以把当前目录下所有的gjf文件用g03 计算,文件名后缀自动改为out。 解析 #!/bin/bash
在shell 脚本中,以#开头的行是注释,但在文件最开始的以#! 开头的行指定解析这个脚本所用的程序。此处是bash,还可以是csh,python, tcl等若干。 for inf in *.gjf do ? ? Done
循环,变量为inf,变量取值为当前目录下的所有*.gjf 文件。 outf=`echo ${inf}|tr\
${inf}: shell中变量取值时候需要在前面加$, 当变量名为多个字符时候最好用{} echo ${inf}: 显示inf 的值,此处在每次循环时候为某一个*.gjf 的文件名
echo ${inf}|tr \把inf 替换为out,为同windows 下的g03兼容,用out做后缀 outf=`echo ${inf}|tr \给outf 赋值 g03 < ${inf} >${outf}
用g03 计算,从inf 输入,outf 输出
change_keyword.sh #!/bin/bash dir=ckout mkdir ${dir}
for i in *.gjf do
echo \
echo \ echo \ echo \ echo \
sed '1,5d' ${i} >> ${dir}/${i} echo \ done
此脚本可以批量修改gjf 的开头,输出文件在一个新的文件夹中,文件名不变。 解析 dir=ckout mkdir ${dir}
创建一个叫ckout 的目录,用于存放新生成的文件。
echo \ echo \ echo \ echo \ echo \
新gjf 文件的开头部分,可以根据需要修改。 echo\:写入一个空行
sed '1,5d' ${i} >> ${dir}/${i} 把旧的gjf 文件的坐标部分写入新文件,
'1,5d' 删除(d) 文件的1-5行,5 可以根据需要修改。
echo \ 在文件末尾写入新的空行
get_energy.sh #!/bin/bash dir=get_energy
mkdir ${dir}
for i in *.out do
en=`more ${i} | grep 'Energy'| tail -n 1 | cut -c 13-20` cp -- ${i} ${dir}/${en}_${i} echo \ done
此脚本可以把out文件的能量提取出来,存储到get_energy.log 中,同时生成以能量值为文件名的out文件,便于排序筛选。 解析
en=`more ${i} | grep 'Energy'| tail -n 1 | cut -c 13-20` 获取能量值。
grep'Energy': 对不同的文件,能量的表达不同,am1用”Energy”,hf 用E(RHF),可以根据实际选择。 Tail –n 1: 对于opt 任务,此处可以选择最后一个能量值
cut -c 13-20:截取能量值,13-20个字符,未必就是这么多,可以通过试用得到。注意前面不要有空格和减号。
cp ${i} ${dir}/${en}_${i} 复制文件到新的目录,并命名为 能量_原文件名
echo \ 统计能量到新的文件。
out2gjf.sh
#!/bin/bash dir=out2gjf mkdir ${dir}
for i in *.out do
fil=`echo ${i}|tr \
n=`more ${i}|cat -n|grep Number|tail -n 1|cut -c 1-8` ((n=n+2))
echo \ echo \ echo ${i} >> ${dir}/${fil}
echo \ echo \ ido=0
while((${ido} < 30)) do
((m=n+ido))
more -- ${i} |head -n${m}|tail -n 1|cut -c 14-99 >> ${dir}/${fil}
((ido=ido+1)) done
echo \ done
此脚本可以把out文件的最后一个坐标做成gjf 文件,并赋予新的关键词。 解析
fil=`echo ${i}|tr \
给变量fil 赋值,输入文件的后缀名改变为gjf n=`more ${i}|cat -n|grep Number|tail -n 1|cut -c 1-8` 寻找最后一个坐标所在的位置,n为行号。 ido=0
while((${ido} < 30)) do
((m=n+ido))
more -- ${i} |head-n ${m}|tail -n 1|cut -c 14-99 >> ${dir}/${fil}
((ido=ido+1)) done
把分子坐标写入新的gjf 文件
这里30 为分子的原子数,使用时根据体系原子数修改
说一说这些脚本的使用方法。
以第一个为例
首先给那个all_g03 加上可执行权限 chmod u+x all_g03.sh
然后把它放到一个PATH 包含的路径下面,进入存放gjf 的目录,输入all_g03.sh &,
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库高斯常见问题(3)在线全文阅读。
相关推荐: