- 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=$NF
YesCar=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*$3
y=bx*$1+by*$2+bz*$3
z=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
|