24小时热门版块排行榜    

查看: 2453  |  回复: 22

wo8165827

金虫 (小有名气)

[交流] 【求助】帮忙编个用于VASP小程序 已有6人参与

帮忙编个用于VASP小程序,我的NSW设置为10,算完一次后
cp CONTCAR POSCAR 在算第二次,知道到达精度为止。往往都要
输上好几次。因此想编个小程序来替代重复的工作。

要求是开始计算时就只有INCAR POSCAR POTCAR KPOINTS ,输入命令VASP>log1&
计算,当计算完一次后输入命令
cp CONTCAR POSCAR 和VASP>log2&
再算第二次,直到输出文件logi提示:
reached required accuracy - stopping structural energy minimisation
计算结束。
同时每次计算输出文件logi将保留。并输入一个Summary 记录出每一步算出的能量。

先谢谢大家了。。。。。
回复此楼

» 收录本帖的淘帖专辑推荐

vasp

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

计算的魅力
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

y1ding

铁杆木虫 (著名写手)

wo8165827(金币+1):谢谢, 2010-04-25 09:02
NSW为什么不设大一点
2楼2010-04-24 21:10:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


gavinliu7390(金币+1):长见识了! 2010-04-24 23:47
wo8165827(金币+7):谢谢 2010-04-25 08:59
wo8165827(金币+5):谢谢, 2010-04-25 09:02
不用VASP,不过写这个还是比较容易的。
#!/bin/bash
OK=0
try=1
declare -a energy
char='reached required accuracy - stopping structural energy      minimisation'
while [ $OK -eq 0 ]
   do
   vasp > log${try} &
   wait
   energy[$try]=$(......) #自己写提取出能量值吧
   OK=$(grep $char log${try} |wc -l )
   cp CONTCAR POSCAR
   try=$(( try+1 ))
   done
i=1
while [ $i -lt $try ]
do

echo -e "$i \t ${energy[$i]}  "
i=$(( i+1 ))
done
===========================
自己写提取总能的那点吧
grep,cut,sed,tail,head,awk 用这几个总是足够了
引用回帖:
Originally posted by wo8165827 at 2010-04-24 20:36:21:
帮忙编个用于VASP小程序,我的NSW设置为10,算完一次后
cp CONTCAR POSCAR 在算第二次,知道到达精度为止。往往都要
输上好几次。因此想编个小程序来替代重复的工作。

要求是开始计算时就只有INCAR POSCAR  ...

[ Last edited by tjyl on 2010-4-24 at 23:46 ]
3楼2010-04-24 23:44:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gavinliu7390

木虫 (著名写手)

叶落鹰飞

wo8165827(金币+1):谢了 2010-04-25 08:59
说实话, 我就没看明白你到底要干什么?
为什么重复计算那么多次?
停止的标准是什么? 感觉就是进入了个死循环。
这样的脚本,估计谁也不会给你编的。
真理是一点点接近的!
4楼2010-04-24 23:44:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

lz说的是只要出现那句话就行了。
所以就直接 grep一下,然后计算行数
引用回帖:
Originally posted by gavinliu7390 at 2010-04-24 23:44:19:
说实话, 我就没看明白你到底要干什么?
为什么重复计算那么多次?
停止的标准是什么? 感觉就是进入了个死循环。
这样的脚本,估计谁也不会给你编的。

5楼2010-04-24 23:47:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gavinliu7390

木虫 (著名写手)

叶落鹰飞

wo8165827(金币+2):谢谢 2010-04-25 08:58
引用回帖:
Originally posted by tjyl at 2010-04-24 23:47:44:
lz说的是只要出现那句话就行了。
所以就直接 grep一下,然后计算行数

因为他取的是NSW=10,有时候10步不能收敛。所以不会出现那句话。
如果他直接将NSW取的大一些。例如NSW=100. 就不用这个脚本了,最后收敛一定会出现那句话。

真理是一点点接近的!
6楼2010-04-24 23:54:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★ ★
gavinliu7390(金币+3):感谢热心的顾问! 2010-04-25 00:04
wo8165827(金币+1):谢谢 2010-04-25 08:58

不过LZ要什么就给什么吧。
引用回帖:
Originally posted by gavinliu7390 at 2010-04-24 23:54:05:



因为他取的是NSW=10,有时候10步不能收敛。所以不会出现那句话。
如果他直接将NSW取的大一些。例如NSW=100. 就不用这个脚本了,最后收敛一定会出现那句话。


7楼2010-04-24 23:58:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenweiguang

金虫 (小有名气)

wo8165827(金币+1):谢谢 2010-04-25 08:57
直接收敛不就完了吗
这样每次10步的其实浪费时间
8楼2010-04-25 03:38:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

引用回帖:
Originally posted by chenweiguang at 2010-04-25 03:38:41:
直接收敛不就完了吗
这样每次10步的其实浪费时间

谢谢各位了。不过还是有区别的,我当初也是这样认为的NSW=60,可是老师说这样不行,有可能到基态。我还特意去测试了下,有些体系算出来的总能还真的有差距的。
计算的魅力
9楼2010-04-25 08:57:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo8165827

金虫 (小有名气)

[quote]Originally posted by gavinliu7390 at 2010-04-24 23:54:05:



因为他取的是NSW=10,有时候10步不能收敛。所以不会出现那句话。
如果他直接将NSW取的大一些。例如NSW=100. 就不用这个脚本了,最后收敛一定会出现那句话。


是的,如果直接去上100,这时达到基态时,是我们初始设置的晶胞参数的基态,而在INCAR里选择优化的参数是ISIF=3,要达到体系的基态的话,可能还需要cp CONTCAR POSCAR才行的。。

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