得到计算前后初末态的构型
要求原子在同一个位置,最开始或者最末尾
rm start.vasp end.vasp
a=9
cp 00/POSCAR start.vasp
cp 00/POSCAR end.vasp
for i in $(seq 1 1 8)
do
sed -n ${a}p 0$i/POSCAR >> start.vasp
done
sed -n ${a}p 09/POSCAR >> start.vasp
for i in $(seq 1 1 8)
do
sed -n ${a}p 0$i/CONTCAR >> end.vasp
done
sed -n ${a}p 09/POSCAR >> end.vasp
sed '6s/$/Na/; 7s/$/9/' start.vasp > star.dat && mv star.dat start.vasp
sed '6s/$/Na/; 7s/$/9/' end.vasp > en.dat && mv en.dat end.vasp
需要修改POSCAR中的原子数目
快速产生初末态的结构构型
#注意:atom1的序号要小于atom2 ,toline要小于atom1和atom2,也就是toline是本种元素的第一行
#需要修改的两个原子的行数
atom1 = 35
atom2 = 36
#需要移动到的行数
toline = 9
#第几个元素
numelement =1
#python从0开始计算
atom1=atom1-1
atom2=atom2-1
toline=toline-1
numelement = numelement-1
elementline =6
# 1. 读取文件内容
with open('POSCAR', 'r') as file:
lines = file.readlines()
# 2. 将第35行移到第9行
lines.insert(toline, lines.pop(atom1))
lines.insert((toline+1), lines.pop(atom2))
element= lines[elementline]
numbers=element.split()
numbers[numelement]=str(int(numbers[numelement])-1)
lines[elementline] = ' '.join(numbers) + '\n'
new_lines_chu = [line for i, line in enumerate(lines) if i != toline]
new_lines_mo = [line for i, line in enumerate(lines) if i != (toline+1)]
# 3. 写回文件
with open('chu.vasp', 'w') as file:
file.writelines(new_lines_chu)
with open('mo.vasp', 'w') as file:
file.writelines(new_lines_mo)
批量做neb的中间态
for i in 20-Mo/ 25-Rh/ 26-Ir/ 32-Ga/ 33-In/ 36-Sb/ 37-Bi/;do cd $i;rm -r 3-neb;mkdir 3-neb;cp ../nebmake.pl 3-neb;cd 3-neb;nebmake.pl ../2-neb-opt/1-chu/CONTCAR ../2-neb-opt/2-mo/CONTCAR 8;wait;cp ../2-neb-opt/1-chu/OUTCAR 00;cp ../2-neb-opt/2-mo/OUTCAR 09;cp ../2-neb-opt/1-chu/POTCAR ./;cd ..;cd ..;done
for i in */;do echo $i;cp dist.pl $i/2-neb-opt;cd $i/2-neb-opt;dist.pl 1-chu/CONTCAR 2-mo/CONTCAR;cd ..;cd ..;done
批量后处理处理数据
mkdir all-results;for i in 18-Ta/ 25-Rh/ 26-Ir/ 32-Ga/ 33-In/ 36-Sb/ 37-Bi/ ;do mkdir all-results/$i;cp vfin.pl nebresults.pl $i/3-neb;cd $i/3-neb;vfin.pl first;wait;cp nebresults.pl first;cd first;nebresults.pl ;wait;cp mep.eps ../../../all-results/$i;cp exts.dat ../../../all-results/$i;cd ../../../;done
NEB后处理
文章里画空位迁移而不是离子迁移的原因
便于不同路径上的拼接
vtst安装
见模拟方法-vasp
转载请注明来源 有问题可通过github提交issue