使用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基矢下的坐标,否则得到的矢量方向是错误的。

VESTA 矢量设置 image4.png
VESTA 矢量设置 image5.png

要在Lattice vector notation……一栏中输入abc基失下的某矢量坐标;
注意:Lattice vector notation……一栏表示以当前晶胞的lattice为基矢

而Modulus along crystallographic axes……一栏表示以当前晶胞的原胞lattice为基矢

坐标变换#

所以问题在于,如何将一个xyz基矢下的直角坐标转为abc基矢下的坐标

注意到

http://www.w3.org/1998/Math/MathML" display="block">Coor in xyz=Coor in abc×(a,b,c)

在这里http://www.w3.org/1998/Math/MathML" display="inline">(a,b,c)是晶格矩阵,如下

3.13692000000000  0.00000000000000 0.00000000000000
0.00000000000000  1.62244500000000 4.33376600000000
0.00000000000000 -1.62244500000000 4.33376600000000

所以让xyz坐标行向量右乘晶格矩阵的逆矩阵,得到的就是abc下的坐标。

原子质量与振动幅度#

变换到abc下的坐标之后,还需让矢量除以当前原子质量的平方根