【求助】侯老师的vasp入门的晶格优化部分没看懂,问一下
复杂的情况,以六角结构Mg的晶格常数为例
1.先进行一次体积保持不变的粒子驰豫的计算(ISIF=5)
2再把优化得到的CONTCAR拷贝成POSCAR,进行一次静态的计算
3对a的值取10个左右的点,每个点重复上面两步,得到静态计算下volume-Etot的关系。
这三部的脚步可以通过以下脚步run_cell来进行,内容如下:
#!/bin/sh
rm WAVECAR
for i in 5.20 5.23 5.26 5.29 5.32 5.35 5.38 5.41 5.44 5.47
do
cat > POSCAR << !
ureadopef
$i
0 -1 0
0.8660254 0.5 0
0 0 1.6230530
2
Direct
0.666666667 0.333333333 0.75
0.333333333 0.666666667 0.25
!
cp INCAR.relax INCAR
echo "a=$i angestrom"; mpiexec -np 8 vasp
cp CONTCAR POSCAR
cp INCAR.static INCAR
echo "a= $i angstrom ";mpiexec -np 8 vasp
E=`grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5}'`
V=`grep "volume" OUTCAR | tail -1 | awk '{printf "%12.4f \n", $5}'`
echo $V $E >>EtVo.dat
done
4.采用状态方程拟合得到的平衡态下的体积,体弹性模量。
5.在该体积下,重复上面第2步和第3步,得到平衡状态下的其他晶胞参数。这一步也就是:在的到了E(V)曲线后,通过状态方程拟合得到平衡状态下的体积,计算出上面脚本中变量$i的值(弱弱的问一句,晶胞形状都改变了,怎么算a的值啊?就算还是按六角结构来算,a和c的关系不知道,怎么算啊,还是按照初始时a/c的比值来算吗?
($i
0 -1 0
0.8660254 0.5 0
0 0 1.6230530))
并改变$i的循环值,再运行run_cell计算一次,得到其他的结构参数c和位置u。
(弱弱的再问:改变$i的循环值不还是在算a吗?算a和算c有什么区别吗?另外算位置u是不是固定晶胞形状和体积只改变原子位置就行了,改一下INCAR就可以了,没必要在运行runcell了吧?)
[ Last edited by magiczerg on 2010-8-14 at 20:19 ] 返回小木虫查看更多
通过设定V不变,驰豫原子位置及形状(c/a)->平衡位置
在做$i循环时,固定住c/a,(平衡位置的基矢是保持不变)
此时i循环,->改变V(c,a相应改变,但c/a不变),->TOTEN
拟合E-V曲线,
找到E最小时的V,->确定c,a(平衡位置晶格参数)
我觉得
1)保持V不变(改变形状和离子位置),不同的V对应于不同的E --〉得到E-V曲线,确定平衡时的V0
2)在平衡体积V0下,改变$i(当然c/a值要变了),找到平衡晶格常数
能不能更详细一点啊。
随便举个例子假如是一个四方晶系,未优化前a=b=5A c=4A
POSCAR为
example
1
5 0 0
0 5 0
0 0 4
2
Direct
0 0 0
0.25 0.5 0.5
1.经过优化后,根据E-V曲线,发现V=110(A**3)能量最低。那此时V0=110(A**3)
2.在V0下改变$i,如何写POSCAR才能保证体积是V0啊?runcell中写POSCAR这一段如何实现啊?$i的范围是怎么确定的,能不能以此为例说明一下啊,谢谢
[ Last edited by magiczerg on 2010-8-15 at 08:26 ]
,
这个你子计算吧,c=V0/(a*b), c的范围可以参考Vo对应的值
哦? 我用CASTEP的不用这个,不过依然顶一个
弄这个run_cell的东西,主要是为了得到E-V曲线,然后通过状态方程拟合得到平衡体积和体弹性模量。如果你只想得到平衡体积以及相应的晶格常数和原子位置,直接ISIF=3做fully optimization就可以了。