24小时热门版块排行榜    

查看: 2190  |  回复: 21
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wo8165827

金虫 (小有名气)

[交流] 【求助】帮忙VASP写个小程序 已有4人参与

用Linux帮忙VASP写个小程序,

要求:
1 查找到某一目录下文件夹中的OZSICAR
2 提取OZSICAR中最后一个E0的数据,如提取“ E0= -.73812181E+01”  (OZSICAR中有很多E0)
3 将提取的E0数据放到一个文件下"log"
回复此楼
计算的魅力
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangle_xq

银虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
wo8165827(金币+5):辛苦了。 2010-09-13 13:51:08
aylayl08(金币+2):good 2010-09-15 15:46:28
引用回帖:
Originally posted by wo8165827 at 2010-09-13 11:12:46:

谢谢您的提示。
这是我的run.sh文件内容:

#!/bin/bash
grep "E0=" */OSZICAR | tail -1 | awk '{print $6}' >>log

我要提取E0的文件夹很多如:
[img]http://pic.muchong.com/201 ...

实在是不好解释,给你列出个例子,你看看吧。
CODE:
#:~/test$ cat AgCu/OSZICAR
reading files
WARNING: wrap around errors must be expected
entering main loop
      N     E                dE          d eps    ncg  rms     rms(c)
CG :  1   -.13238703E+04   -.132E+04   -.934E+02  56  .28E+02
CG :  2   -.13391360E+04   -.152E+02   -.982E+01  82  .54E+01
CG :  3   -.13397892E+04   -.653E+00   -.553E+00  72  .13E+01  .14E+00
CG :  4   -.13400939E+04   -.304E+00   -.287E+00  84  .48E+00  .39E-01
CG :  5   -.13401306E+04   -.366E-01   -.322E-01  69  .35E+00  .17E-01
CG :  6   -.13401489E+04   -.183E-01   -.169E-01  75  .74E-01  .66E-02
CG :  7   -.13401516E+04   -.267E-02   -.250E-02  68  .47E-01  .37E-02
CG :  8   -.13401522E+04   -.567E-03   -.489E-03  53  .15E-01  .90E-03
   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
.......
.......
   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
#:~/test$ ls *
AgAG:
OSZICAR

AgAu:
OSZICAR

AgCu:
OSZICAR
#:~/test$ grep "E0=" */OSZICAR
AgAG/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAG/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAu/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAu/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgCu/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgCu/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04

请注意这里的OSZICAR,我OSZICAR中都是含有两行能量输出值的。由于你的计算不知道在什么时候截止。所以在查找关键字的时候会出现上述重复的现象。而之前给出的命令,运行得到的结果如下。
CODE:
#:~/test$ grep "E0=" */OSZICAR | tail -1 | awk '{print $4}'
-.13401522E+04
#:~/test$ grep "E0=" */OSZICAR | tail -1 | awk '{print $5}'
E0=
#:~/test$ grep "E0=" */OSZICAR | tail -1 | awk '{print $6}'
-.13397340E+04

为了比较,列出了3个字段的运行结果。估计现在能明白字段的含义了。这里解释一下楼上给出的tail -1我当时没有细想,现在想来这个语句是不适用的。采用以下语句重复出现同一文件中的能量值。
CODE:
#:~/test$ grep "E0=" */OSZICAR
AgAG/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAG/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAu/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgAu/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgCu/OSZICAR:   1 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04
AgCu/OSZICAR:   2 F= -.13401522E+04 E0= -.13397340E+04  d E = -.13402E+04

据我查看到的OSZICAR的内容,最后一行就是最终能量输出值,除非计算中途停止。若你可以保证计算均得到了正确的结果,可使用以下代码查看。(由于不同系统的Shell命令定义少有差别,我的代码是在Ubuntu的Bash下测试的。)
CODE:
#!/bin/sh
if [ -f log ]; then rm log; fi;
for subfolder in $(ls)
do
  if [ -d $subfolder ]
   then
     echo -n $subfolder"\t" >> log
     tail --line=1 $subfolder/OSZICAR | awk '{print $5}' >> log
  fi
done

网络日志 http://blog.163.com/wangle_xq/ 关注计算材料科学的应用,以及相关的计算机技术。文章以转贴为主,少量原创。欢迎参观
19楼2010-09-13 13:16:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 22 个回答

huangyc

木虫 (正式写手)


wo8165827(金币+5): 2010-09-11 17:16:12
cenwanglai(金币+1):谢谢提示。 2010-09-12 11:53:01


grep F OSZICAR  > log
2楼2010-09-11 16:23:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by huangyc at 2010-09-11 16:23:07:


grep F OSZICAR  > log

这个能提取E0的数据吗?我只要最后一个数据呢?

[ Last edited by wo8165827 on 2010-9-11 at 17:16 ]
计算的魅力
3楼2010-09-11 16:41:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher


wo8165827(金币+5):谢谢 2010-09-11 18:51:15
zzy870720z(金币+1):谢谢指点 2010-09-12 09:17:10
引用回帖:
Originally posted by wo8165827 at 2010-09-11 16:41:50:



这个能提取E0的数据吗?我只要最后一个数据呢?

[ Last edited by wo8165827 on 2010-9-11 at 17:16 ]

grep "E0= " OZSICAR | tail -1 | tee log
4楼2010-09-11 17:26:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见