24小时热门版块排行榜    

查看: 2470  |  回复: 22

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-04-24 23:44:07:
不用VASP,不过写这个还是比较容易的。
#!/bin/bash
OK=0
try=1
declare -a energy
char='reached required accuracy - stopping structural energy      minimisation'
while [ $OK -eq 0 ]
   do
   v ...

能量哪里是用grep 提取就可以了吗?
计算的魅力
11楼2010-04-25 09:25:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-04-24 23:44:07:
不用VASP,不过写这个还是比较容易的。
#!/bin/bash
OK=0
try=1
declare -a energy
char='reached required accuracy - stopping structural energy      minimisation'
while [ $OK -eq 0 ]
   do
   v ...

刚运行了下,出错了。错误提示:
./run:/bin/bash:bad interpreter:没有那个文件。
可以帮忙下吗?
还有一个就是
你在程序中的
while [ $OK -eq 0 ]
   do
   vasp > log${try} &
   wait
   energy[$try]=$('grep "reached" OSZICAR | tail -1 | awk '{printf "%f \n", $5}'')
   OK=$(grep $char log${try} |wc -l )
   cp CONTCAR POSCAR
   try=$(( try+1 ))
   done
提取能量是我加的。不知道正确吗?
计算的魅力
12楼2010-04-25 10:03:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
用grep 搜索含有关键字的行,然后使用 awk 提取出这行指定的列就是了
引用回帖:
Originally posted by wo8165827 at 2010-04-25 09:25:50:



能量哪里是用grep 提取就可以了吗?

13楼2010-04-25 10:11:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-04-25 10:11:45:
用grep 搜索含有关键字的行,然后使用 awk 提取出这行指定的列就是了

提示错误了。可以帮忙看看下吗?
计算的魅力
14楼2010-04-25 11:05:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gavinliu7390

木虫 (著名写手)

叶落鹰飞


小木虫(金币+0.5):给个红包,谢谢回帖交流
两种方法的结果应该相等。
出现不同一般有三种情况。
1, 收敛参数精度不够.
2, 有时候一次收敛是不够的,也就是先设nsw=100,收敛后, 再进行一次优化,基本就可以达到基态了.
3, 因为优化的时候是有算法的,你每次停止后,前面储存的信息都没了,自然会重新找路径优化,所以路径上部会太一样. 也有可能结构发生了变化,也就是空间群发生了变化, 这个需要注意.
既然boss说了, 那就没办法了.   Since boss is always right!
真理是一点点接近的!
15楼2010-04-25 12:23:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
脚本开头 是 顶格写
#!/bin/bash

没有bash你不写这行也无所谓的,反正又没有用什么bash特有的语法。
energy[$try]=$('grep "reached" OSZICAR | tail -1 | awk '{printf "%f \n", $5}")

这行有点问题,要注意 ' ,"这些细节的地方
energy[$try]=$( grep "reached" OSZICAR | tail -1 | awk '{print   $5}' )
在使用awk中的print和printf时,print类似echo,只是直接输出,当需要更多格式控制的时候使用printf, 其实你这里没有必要用printf,直接print还省事点的。
引用回帖:
Originally posted by wo8165827 at 2010-04-25 10:03:22:



刚运行了下,出错了。错误提示:
./run:/bin/bash:bad interpreter:没有那个文件。
可以帮忙下吗?
还有一个就是
你在程序中的
while [ $OK -eq 0 ]
   do
   vasp > log${try} &
   wait
...

16楼2010-04-25 15:26:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by gavinliu7390 at 2010-04-25 12:23:43:
两种方法的结果应该相等。
出现不同一般有三种情况。
1, 收敛参数精度不够.
2, 有时候一次收敛是不够的,也就是先设nsw=100,收敛后, 再进行一次优化,基本就可以达到基态了.
3, 因为优化的时候是有算法的,你每 ...

呵呵,是啊。BOSS的话不听不行啊。呵呵。谢谢你的提示。。。
计算的魅力
17楼2010-04-25 19:07:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-04-25 15:26:38:
脚本开头 是 顶格写
#!/bin/bash

没有bash你不写这行也无所谓的,反正又没有用什么bash特有的语法。
energy[$try]=$('grep "reached" OSZICAR | tail -1 | awk ' ...

好的。我试运下,谢谢大侠的帮助。
计算的魅力
18楼2010-04-25 19:16:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-04-25 15:26:38:
脚本开头 是 顶格写
#!/bin/bash

没有bash你不写这行也无所谓的,反正又没有用什么bash特有的语法。
energy[$try]=$('grep "reached" OSZICAR | tail -1 | awk ' ...

还是出问题了,呵呵,麻烦你了。我把#!/bin/bash去了运行了错现了如下错误:

': not a valid identifier
./run: line 21: syntax error: unexpected end of file
计算的魅力
19楼2010-04-25 20:37:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
你看提示吧。。。
21行
你注意别写错了之类的
引用回帖:
Originally posted by wo8165827 at 2010-04-25 20:37:27:





还是出问题了,呵呵,麻烦你了。我把#!/bin/bash去了运行了错现了如下错误:

': not a valid identifier
./run: line 21: syntax error: unexpected end of file

20楼2010-04-25 21:30:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wo8165827 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见