24小时热门版块排行榜    

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

043114076

木虫 (正式写手)

[交流] Vasp NEB 计算前原子排序脚本 已有6人参与

使用vasp NEB计算反应路径一般会使用nebmake.pl 进行插点生成一系列的POSCAR,常常会遇到初始结构和最终结构POSCAR的原子顺序并不一一对应的情况,这样插点就会出现结构混乱。我自己写了个排序的脚本用于自动排序,供大家参考使用:
使用方法:将下面的脚本拷贝到一个文件,比如pos_order.sh。根据自己的情况修改begin和end两个变量。运行:sh pos_order.sh POSCAR.start POSCAR.end
生成一个POSCAR.end.new。其中POSCAR.start 和POSCAR.end 是初始结构和最终结构,可以使用其他名字。
CODE:
#!/bin/bash

begin=9 #输入结构开始行号
end=133 #输入结构结束行号
headline=`awk "BEGIN{print $begin-1}"`
head -n $headline $2 > $2.new
awk -v begin=$begin -v end=$end '
    (FILENAME==ARGV[1])&&(FNR>=begin)&&(FNR<=end){x0[FNR]=$1;y0[FNR]=$2;z0[FNR]=$3}
    (FILENAME==ARGV[2])&&(FNR>=begin)&&(FNR<=end){x1[FNR]=$1;y1[FNR]=$2;z1[FNR]=$3}
     END{for(i=begin;i<=end;i=i+1){
          rmin=1;
          for(j=begin;j<=end;j=j+1){
            r=(x0[i]-x1[j])^2+(y0[i]-y1[j])^2+(z0[i]-z1[j])^2;
            if(r<rmin){rmin=r;nr=j}
            };
          x2[i]=x1[nr];y2[i]=y1[nr];z2[i]=z1[nr];
          printf("%9.6f%9.6f%9.6f\n",x2[i],y2[i],z2[i])
          };
        }' $1 $2 >> $2.new

回复此楼

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

量化软件 VASP软件从入门到高深

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

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

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

吕小强强

新虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
顶了  不过动力学的  FFF  TTT  都变没了 有影响吗
4楼2015-02-07 09:22:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

dujunhui

金虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
这么好的帖子,怎么没人顶
2楼2014-09-15 11:10:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zb3ynf

银虫 (初入文坛)

引用回帖:
2楼: Originally posted by dujunhui at 2014-09-15 11:10:04
这么好的帖子,怎么没人顶

无比感谢!!!!!!!!!!!!!
3楼2014-09-20 16:19:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

043114076

木虫 (正式写手)

引用回帖:
4楼: Originally posted by 吕小强强 at 2015-02-07 09:22:05
顶了  不过动力学的  FFF  TTT  都变没了 有影响吗

如果设定了Selective Dyanamic, 是有影响的. 不过稍微修改一下脚本就可以实现.
5楼2015-02-09 08:57:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见