24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 5340  |  回复: 14
本帖产生 2 个 1ST强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

mika

金虫 (正式写手)

纳米宝贝

[求助] 从outcar中提取原子坐标的脚本

想从outcar里面提取每一步自洽后指定原子的xyz坐标,请问有没有相关的脚本啊,谢谢
回复此楼

» 猜你喜欢

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

dxcharlary

专家顾问 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
其实算出来有个文件叫XDATCAR,就是楼主要的东西。
13楼2012-05-04 17:55:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

gfei2008

木虫 (小有名气)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
WDD880227: 金币+2, 感谢您的详细解答~~很有帮助 2012-05-03 08:24:54
有个简单的指令你试试:grep "POSITION" -n OUTCAR
这个n表示你的原子数目,你把得到的数据存到一个文件下面,然后用ultraedit 去掉一些不用的提示就可以得到你想要的数据。
例如:grep "POSITION" -n OUTCAR>data
然后得到的坐标和受力在这个data文件中,然后用ultraedit处理一下就可以啦。
2楼2012-05-02 23:37:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dxf_dxf_dxf

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
fzx2008: 金币+5, 1ST强帖+1, 谢谢指教,详细 2012-05-03 13:04:02
你好!我用官方的例子来解释。
首先,vasp进行几何优化时(IBRION=2 or 3,ISIF=2,3,5等)时,才会移动原子。vasp会根据ISIF的值改变晶格常数或移动原子位置,求出体系能量最小或受力最小对应的几何结构。当设置了IBRION和ISIF参数之后,vasp实际会进行三层循环(见mannual09版7.1节Fig3):
最内层循环,是用来矩阵对角化,求解薛定谔方程。
vasp会先给出一个初始解,带入薛定谔方程。
如果没有达到收敛条件,则修改后再次带入方程
中层循环,是用来求出自洽的电荷密度。
vasp会先猜测一个初始的电荷密度,由此构造薛定谔方程,求解得到波函数,再根据新的波函数算出(输出的)电荷密度,和(输入的)初始电荷密度对比。
如果差别没有达到收敛条件,则二者混合后作为新的输入电荷密度,重复上一步。
在mannual6.7节NWRITE-tag中,这一步对应于“electronic step”
在OUTCAR中,对应类似与“----------- Iteration    3(   2)  ----------------”中的“2”
外层循环,是用来求出能量最低、受力最小的几何结构。
vasp会根据初始POSCAR文件求出体系的总能和受力情况。根据算法改变晶格常数或离子位置,得到新的结构,再次求出总能和受力。
如果差别或绝对值未达到收敛条件,则继续改变晶格常数或离子位置。
在mannual6.7节NWRITE-tag中,这一步对应于“ion step”
在OUTCAR中,对应类似与“----------- Iteration    3(   2)  ----------------”中的“3”

如果在INCAR文件中没有设置NWRITE参数,则在OUTCAR文件中可以看到每一次ion step结束后vasp会给出优化情况:

vasp.5.2.2 15Apr09 complex
executed on             LinuxIFC date 2012.05.03  12:04:41
running on    8 nodes
distr:  one band on    1 nodes,    8 groups
--------------------------------------------------------------------------------------------------------
INCAR:
   ...
--------------------------------------------------------------------------------------------------------
...
...
----------------------------------------- Iteration    1(   1)  ---------------------------------------
    POTLOK:  cpu time    0.01: real time    0.01
    ...
----------------------------------------- Iteration    1(   2)  ---------------------------------------
     ...
--------------------------------------------------------------------------------------------------------
...
------------------------aborting loop because EDIFF is reached----------------------------------------
...
VOLUME and BASIS-vectors are now :
-----------------------------------------------------------------------------
...
direct lattice vectors reciprocal lattice vectors 0.000000000 2.750000000 2.750000000 -0.181818182 0.181818182 0.181818182 2.750000000 0.000000000 2.750000000 0.181818182 -0.181818182 0.181818182 2.750000000 2.750000000 0.000000000 0.181818182 0.181818182 -0.181818182
...
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.81250      4.81250      4.81250         0.000000      0.000000      0.000000
      0.68750      0.68750      0.68750         0.000000      0.000000      0.000000
-----------------------------------------------------------------------------------
...
----------------------------------------- Iteration    2(   1)  ---------------------------------------
  ...
------------------------ aborting loop because EDIFF is reached----------------------------------------
...
VOLUME and BASIS-vectors are now :
-----------------------------------------------------------------------------
...

direct lattice vectors                 reciprocal lattice vectors
     0.000000000  2.721754370  2.721754370    -0.183705042  0.183705042  0.183705042
     2.721754370  0.000000000  2.721754370     0.183705042 -0.183705042  0.183705042
     2.721754370  2.721754370  0.000000000     0.183705042  0.183705042 -0.183705042
...
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.76307      4.76307      4.76307         0.000000      0.000000      0.000000
      0.68044      0.68044      0.68044         0.000000      0.000000      0.000000
-----------------------------------------------------------------------------------

...
----------------------------------------- Iteration    3(   1)  ---------------------------------------
...
------------------------ aborting loop because EDIFF is reached ----------------------------------------
...
VOLUME and BASIS-vectors are now :
-----------------------------------------------------------------------------
...

  direct lattice vectors                 reciprocal lattice vectors
     0.000000000  2.732453619  2.732453619    -0.182985723  0.182985723  0.182985723
     2.732453619  0.000000000  2.732453619     0.182985723 -0.182985723  0.182985723
     2.732453619  2.732453619  0.000000000     0.182985723  0.182985723 -0.182985723
...
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.78179      4.78179      4.78179         0.000000      0.000000      0.000000
      0.68311      0.68311      0.68311         0.000000      0.000000      0.000000
-----------------------------------------------------------------------------------

...
--------------------------------------------------------------------------------------------------------
    POTLOK:  cpu time    0.01: real time    0.01
--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------
reached required accuracy - stopping structural energy minimisation
...

由上可知,整个优化过程,外层循环执行了3次,共产生了四个结构:
初始结构
引用回帖:
原胞基矢
0.000000000 2.750000000 2.750000000
2.750000000 0.000000000 2.750000000
2.750000000 2.750000000 0.000000000
原子位置(相对于原胞基矢)
0.87500000 0.87500000 0.87500000
0.12500000 0.12500000 0.12500000
原子位置(相对于笛卡尔系)
4.81250000 4.81250000 4.81250000
0.68750000 0.68750000 0.68750000

第一次外层循环结束后的结构
引用回帖:
原胞基矢
     0.000000000  2.750000000  2.750000000
     2.750000000  0.000000000  2.750000000
     2.750000000  2.750000000  0.000000000
原子位置(相对于笛卡尔系)
      4.81250      4.81250      4.81250
      0.68750      0.68750      0.68750

第二次外层循环结束后的结构
引用回帖:
原胞基矢
     0.000000000  2.721754370  2.721754370
     2.721754370  0.000000000  2.721754370
     2.721754370  2.721754370  0.000000000
原子位置(相对于笛卡尔系)
     4.76307      4.76307      4.76307
      0.68044      0.68044      0.68044

第三次外层循环结束后的结构
引用回帖:
原胞基矢
     0.000000000  2.732453619  2.732453619
     2.732453619  0.000000000  2.732453619
     2.732453619  2.732453619  0.000000000
原子位置(相对于笛卡尔系)
      4.78179      4.78179      4.78179
      0.68311      0.68311      0.68311

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 2_4_diamondSi_vol_rex.tar.bz2
  • 2012-05-03 12:15:48, 1.39 M
3楼2012-05-03 12:59:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dxf_dxf_dxf

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
fzx2008: 1ST强帖+1, 谢谢指教 2012-05-03 13:34:14
uuv2010: 金币+10, 多谢分享~ 2012-05-04 18:36:54
由此给出思路及相应脚本:
  首先,要知道体系有多少个原子。这个可以从POSCAR中读取。
  然后,要告诉脚本,你关心的是哪个原子。我们把这个原子在POSCAR中的序号写到一个叫“in”的文件里面,让脚本去读就好了!
  再然后,利用grep从OUTCAR中读取我们关心的信息,并加以处理。
  依据本例,体系共有2个原子,假设我们关心POSCAR中的第二个原子。
  首先,让grep去找关键字“POSITION”,我们关心的数字在这个关键字之后的1(“---"一行)+2(2个原子)行。所以用
CODE:
grep -A3 "POSITION" OUTCAR

命令,把冗长的OUTCAR简化成如下的模样:
引用回帖:
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.81250      4.81250      4.81250         0.000000      0.000000      0.000000
      0.68750      0.68750      0.68750         0.000000      0.000000      0.000000
--
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.76307      4.76307      4.76307         0.000000      0.000000      0.000000
      0.68044      0.68044      0.68044         0.000000      0.000000      0.000000
--
POSITION                                       TOTAL-FORCE (eV/Angst)
-----------------------------------------------------------------------------------
      4.78179      4.78179      4.78179         0.000000      0.000000      0.000000
      0.68311      0.68311      0.68311         0.000000      0.000000      0.000000

这样还不够。我们要把”POSITON“行、”-------“行、分隔符”--“删掉:
这3种类型的行的共同特点是,如果以空格(默认的)为分隔符,则最多只有2项,第三项为空。于是用awk语句的$3>0来过滤掉它们,然后用print $1“ ”$2" "$3打印有用的前三个数字(我们不关心受力)
CODE:
grep -A3 "POSITION" OUTCAR | awk '$3>0 {print $1“  ”$2"  "$3}'

于是结果变成这个样子:
引用回帖:
4.81250  4.81250  4.81250
0.68750  0.68750  0.68750
4.76307  4.76307  4.76307
0.68044  0.68044  0.68044
4.78179  4.78179  4.78179
0.68311  0.68311  0.68311

这样还不够。我们需要的只是我们关心的那一个原子。怎么把它调出来呢?
由于我们保留了所有的原子的位置,因此到目前为止,输出的行数应该=体系原子数x外层循环次数。我们只需要找到行数对体系原子数取余数后结果为我们关心的原子对应的序数的行就行了:
NR%2==0(第2个原子,也就是余数为2,即余数为0)
CODE:
grep -A3 "POSITION" OUTCAR | awk '$3>0 {print $1"  "$2"  "$3}' | awk 'NR%2==0 {print $0}'

结果如下:
引用回帖:
0.68750  0.68750  0.68750
0.68044  0.68044  0.68044
0.68311  0.68311  0.68311

大功告成!
所以语句如下:
引用回帖:
grep -A3 "POSITION" OUTCAR | awk '$3>0 {print $1"  "$2"  "$3}' | awk 'NR%2==0 {print $0}'

当然,你需要明白“A3”中3的含义,还有"NR%2==0"中2和0的含义。否则生搬硬套会得到错误的结果~
4楼2012-05-03 13:26:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料调剂 +4 一样YWY 2026-04-03 4/200 2026-04-03 09:48 by 蓝云思雨
[考研] 材料考研调剂 +10 Gs大王 2026-04-02 10/500 2026-04-03 09:47 by 遗忘消失的灆
[考研] 一志愿厦门大学材料工程专硕354找调剂!!! +8 贝呗钡钡 2026-03-30 8/400 2026-04-03 09:41 by hypershenger
[考研] 一志愿南开大学0710生物学359求调剂 +6 兔兔兔111223314 2026-03-29 8/400 2026-04-02 22:37 by louise0220
[考研] 282求调剂 +3 aaa车辆 2026-04-02 3/150 2026-04-02 21:55 by zllcz
[考研] 一志愿上海海洋大学083200食品学硕,求调剂,接受其他专业 +6 what张 2026-04-01 7/350 2026-04-02 16:48 by zzsw+
[考研] 调剂 +3 好好读书。 2026-04-01 6/300 2026-04-02 15:49 by liumengping
[考研] 285求调剂 +7 AZMK 2026-03-30 13/650 2026-04-01 17:00 by 七度不信任
[考研] 调剂 +5 好好读书。 2026-03-28 7/350 2026-04-01 15:32 by 王亮_大连医科大
[考研] 086000生物与医药298调剂求助 +4 元元青青 2026-03-31 6/300 2026-04-01 11:13 by syh9288
[考研] 318一志愿吉林大学生物与医药 求调剂 +6 笃行致远. 2026-03-28 6/300 2026-04-01 09:28 by oooqiao
[考研] 070300化学专业279调剂 +10 哈哈哈^_^ 2026-03-31 10/500 2026-03-31 23:13 by liu823948201
[考研] 合肥区域性重点一本招收调剂 +4 6266jl 2026-03-30 8/400 2026-03-31 18:43 by 6266jl
[考研] 346求调剂 一志愿070303有机化学 +11 萝卜炖青菜 2026-03-28 12/600 2026-03-31 17:54 by xhai2011
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-29 3/150 2026-03-31 10:06 by cal0306
[考研] 08工科求调剂286 +5 tgs_001 2026-03-28 5/250 2026-03-31 08:18 by 一只好果子?
[考研] 一志愿大连理工大学材料求调剂 +6 Gymno 2026-03-30 6/300 2026-03-31 07:26 by 无际的草原
[考研] 085602 化学工程专硕 340分求调剂 +4 qianbai11 2026-03-29 4/200 2026-03-30 11:34 by 唐沐儿
[考研] 305求调剂 +8 RuiFairyrui 2026-03-28 8/400 2026-03-29 08:22 by fmesaito
[考研] 11408软件工程求调剂 +3 Qiu学ing 2026-03-28 3/150 2026-03-28 21:50 by zhq0425
信息提示
请填处理意见