使用vesta将振动模式可视化#
适用条件与 Gamma 点#
注意:只有Gamma点可以直接加矢量来说明振动方向;因为Gamma点的振动模式是0相位的,没有虚部,只有实部。对于非gamma点的振动模式,需要先通过扩胞(将超胞作为原胞)重新算声子,先将所研究的q点折叠到Gamma点,再画其本征矢量。
包括后面针对虚频模式进行原子移动操作时,也必须先将虚频的q点折叠到Gamma点,才能进行后续操作。
声子振动模式可视化网站
https://henriquemiranda.github.io/phononwebsite/phonon.html
总之,要以网站的振动模式为准(band.yaml文件),vesta画出来的振动模式,包括每个原子的箭头长度、方向都应该和网站的一致。否则说明vesta操作有问题。
读取本征矢量#
找一个例子
Phonopy输出的band.yaml文件里面的本征矢量是在xyz基失下的坐标;
注意,这里的矢量没有对原子质量进行处理,在后面vesta中为每个原子赋予一个“矢量箭头”时,矢量箭头的长度应该和振动幅度对应。
- # 9
frequency: 17.3538834396
eigenvector:
- # atom 1
- [-0.00000000000000, 0.00000000000000]
- [-0.00000000000000, 0.00000000000000]
- [ 0.14170102692836, 0.00000000000000]
- # atom 2
- [ 0.00000000000000, 0.00000000000000]
- [ 0.00000000000000, 0.00000000000000]
- [-0.88894613534899, 0.00000000000000]
- # atom 3
- [ 0.00000000000000, 0.00000000000000]
- [ 0.00000000000001, 0.00000000000000]
- [ 0.43544252357697, 0.00000000000000]
- # atom 4
- [-0.00000000000000, 0.00000000000000]
- [-0.00000000000000, 0.00000000000000]
- [ 0.00924099975501, 0.00000000000000]QE的ph.x输出的dyn文件中的本征矢量也是xyz基失下的坐标
Dynamical Matrix in cartesian axes
q = ( 0.000000000 0.000000000 0.000000000 )freq (9) = 17.352862 [THz] = 578.829167 [cm-1]
( 0.000000 0.000000 0.000000 0.000000 -0.048764 0.000000 )
( 0.000000 0.000000 -0.000000 0.000000 0.896526 0.000000 )
(-0.000000 0.000000 -0.000000 0.000000 -0.440293 0.000000 )
( 0.000000 0.000000 0.000000 0.000000 -0.002246 0.000000 )在 VESTA 中设置矢量#
在vesta中给原子添加矢量时,需要先知道矢量在abc基失下的坐标。即,不能直接输入xyz基矢下的坐标,否则得到的矢量方向是错误的。


要在Lattice vector notation……一栏中输入abc基失下的某矢量坐标;
注意:Lattice vector notation……一栏表示以当前晶胞的lattice为基矢
而Modulus along crystallographic axes……一栏表示以当前晶胞的原胞lattice为基矢
坐标变换#
所以问题在于,如何将一个xyz基矢下的直角坐标转为abc基矢下的坐标
注意到
在这里是晶格矩阵,如下
3.13692000000000 0.00000000000000 0.00000000000000
0.00000000000000 1.62244500000000 4.33376600000000
0.00000000000000 -1.62244500000000 4.33376600000000所以让xyz坐标行向量右乘晶格矩阵的逆矩阵,得到的就是abc下的坐标。
原子质量与振动幅度#
变换到abc下的坐标之后,还需让矢量除以当前原子质量的平方根