|
复习一下线性代数知识更容易理解晶格矢量变换。立方晶胞的三个矢量相互正交且等长,因此设计一个变换矩阵其实很容易,参照下图理解
比如目标是一个c'轴垂直于原先的(111)晶面的正交超胞,那么可以直接取c' = a + b + c(向量加法,下同),因为立方晶系的[111]晶向确实垂直于(111)晶面。然后在(111)晶面上随便找两个相互垂直的矢量就能作为a'和b'轴,这里取a' = -a + b,b' = -a -b + 2*c。最后按VESTA惯例整理系数就能把变换矩阵输入软件了。
实际上这个思想也能推广到其他形如(n11)的晶面指数,在立方晶系中(n11)与(11n)是等价的{n11}晶面族,经过类似推导得到这样的变换矩阵。对于简单立方与体心立方的晶体,该矩阵刚好给出变换后最小的重复单元;而对于面心立方的晶体,由于面心与顶点等价,该矩阵中的系数有时能取半,如2楼的矩阵就是代入n = 6并除以2的形式。若同时还需要扩胞,将变换矩阵中每一列的系数各自乘整数即可,第一二列对应表面的长宽,第三列对应表面的厚度。(如果结构原胞的cif文件有对称性,为避免晶格矢量变换的旋转/扩胞操作丢失原子,最好先点Remove symmetry把原胞内由对称性确定的原子坐标找全。)
在VESTA里去Edit - Edit Data - Unit Cell修改Lattice parameters的时候,由于保持不变的是原子的分数坐标而不是绝对的空间坐标,实际起到了拉长晶胞而不是给晶胞添加真空区的效果。要添真空区的话可以先File - Export Data导出用笛卡尔坐标记录结构的POSCAR文件,再用文本编辑器修改盒子尺寸;或者导出cif后用multiwfn的几何操作(http://sobereva.com/610)处理。
显示晶体结构的时候画面上的原子数可能多于实际原子组成,这种视觉效果是因为(1)软件把特定坐标的原子(不一定是0)放在盒子边界,且(2)软件把盒子边界上的原子显示在两端以表示平移的周期性,而不是按实际组成只显示一个。这并不影响原子实际位置,比如multiwfn图形窗口的other settings - toggle showing all boundary atoms就能改变该视觉效果。非要确保不这样显示的话只能自行修改笛卡尔坐标了,比如把所有原子的z坐标都加一个常数以将结构平移到z > 0的位置。 |
|