|
2017-09-26 15:47:47
vasp轨迹文件的格式经常变动, 这样导致和vmd的插件不兼容, 查看的时候只能显示一帧. 我最近使用的vasp 5.4.4输出的轨迹文件XDATCAR就存在这个问题. 为了解决这个问题, 我写了一个简单的脚本, 将XDATCAR转换为gromacs格式以便使用vmd查看. 简单来说, gromacs的gro格式是一种类似于xyz的格式, 但其中的坐标以nm为单位, 同时最后一行添加盒子矢量的信息.
x2gro.bsh | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | File=XDATCAR
awk ' BEGIN {Rad2Deg=180/4*atan2(1,1)}{Tips=$0
getline; a=$1/10; b=a; c=a;
if(NF>=2)b=$2/10; if(NF>=3)c=$3/10
getline; ax=$1*a; ay=$2*b; az=$3*c
getline; bx=$1*a; by=$2*b; bz=$3*c
getline; cx=$1*a; cy=$2*b; cz=$3*c
Natm=0
getline; Nelm=NF; for(i=1; i<=Nelm; i++) Sym[i]=$i
getline; for(i=1; i<=Nelm; i++){ Numb[i]=$i; Natm=Natm+$i}
getline; step=$NFYesCar=0; if($0~/^[::space::]*[C|c]/)YesCar=1
print Tips " step= "step
print Natm
n=0
for(i=1; i<=Nelm; i++){for(j=1; j<=Numb[i]; j++){
getline; n++
x=$1/10; y=$2/10; z=$3/10
if(!YesCar){x=ax*$1+ay*$2+az*$3y=bx*$1+by*$2+bz*$3z=cx*$1+cy*$2+cz*$3}
printf("%8s%7s%5d%8.3f%8.3f%8.3f\n", i"ELM", Sym[i], n, x, y, z)}}
print ax, by, cz, ay, az, bx, bz, cx, cy
}'$File > $File.gro |
◆本文地址: https://jerkwin.github.io/2017/09/26/新版VASP轨迹文件转换为GROMACS格式/, 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-3 08:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社