通过cif文件和空间群国际晶体表, 推演出所有的坐标

步骤1 根据cif文件, 找出每个原子的 x,y,z坐标

以MgF2.cif为例

步骤2 将数据都代入各行循环计算

步骤3 根据不同的类型, 对每个坐标进行平移

MgF2的空间群号, MgF2.cif 可见:

根据55号国际晶体表, 可见:

类型为P时, Site symmetry为空, 即不做任何平移, 直接进行第四步.

经过1, 2步骤, 得到 n(行原子数值) * m(行等效位循环) 个(x, y, z)坐标数据 , 将得到 n * m 的每个坐标数据,平移.

那么, 平移多少?

根据《230个空间群国际晶体表》, 以223号为例

类型为 F 的平移量为(0, 1/2, 1/2), (1/2, 0, 1/2), (1/2, 1/2, 0)

230个空间群, 类型分为: C, P, A, I, R

它们分别的平移量为 C:(1/2, 1/2, 0), P-none, A:(0, 1/2, 1/2), I:(1/2, 1/2, 1/2), R:(2/3, 1/3, 1/3), (1/3, 2/3, 2/3)

[(0, 0, 0)暂时都不看]

步骤4 将得到的坐标进行再次平移, 筛选出合格的点

首先判断, 点的x,y,z坐标是否超出了(0, 1)范围, 对各个坐标进行修正.

然后, 进行以下平移操作: (0, 0 , 0) 偏移量用在这里

(1, 0, 0)

(-1, 0, 0)

(0, 1, 0)

(0, -1, 0)

(0, 0, 1)

(0, 0, -1)

(0, 1, 1)

(1, 0, 1)

(1, 1, 0)

(1, 1, 1)

最后, x, y, z 任一超出了(0, 1) 范围, 此点不要.

至此, 所有坐标全部得到.

以下是我的程序运行的结果:

posted @ 2021-05-28 10:33  QLuffe  阅读(694)  评论(1)    收藏  举报