Answers:
我的主要经验是晶体结构,晶体中只有有限数量的点对称。因此,我将使用的算法与您在分子中使用的算法略有不同。但是,对于大分子,不可能出现连续的对称性,例如H 2或CO 2中的轴向对称性,因此方法应该很好地重叠。确定系统中的对称性时,要考虑两种不同但相关的对称性:局部对称性和全局对称性。
局部对称性是特定点周围局部环境的对称性。特别是,每个原子位置的对称性决定了局部原子分裂,并在某种程度上决定了化学环境,并且是全局对称性的一个子集。例如,在苯的局部对称性由两个反射面及一的轴(180 ∘旋转对称)。(显然,只需要执行两个操作即可生成整个本地点组。)
从算法的角度来看,我们要做的是首先找到目标原子的最近邻居,然后枚举我们可以围绕中心原子旋转该环境并使它保持不变的所有方法。从数学上讲,它正在求解所有正交矩阵,使得
其中和→ x j是相同物种的原子的位置,而→ x c是中心原子或目标原子的位置。但是,在尝试求解一般A之前,我将首先考虑较简单的形式,例如是否存在反射平面。
另一个想法是使用角动量矩阵作为旋转的生成器,然后
其中Ñ ∈ [R 3为约其与角度的旋转的单元矢量φ被执行,并且→ 大号 = (大号 X,大号 ÿ,大号 Ž)是三维角动量矩阵向量。那么A将只有3个未知数。
在局部对称性决定单个原子周围的环境的地方,全局对称性决定了原子如何相互交换。确定全局对称性的第一步是确定等效原子。首先,确定到最接近的邻居(如果需要,第二更接近或更高)原子的类型和相对方向。如果两个原子的相邻原子具有相同的空间排列,则它们是等效的。这很容易计算。
第二步与局部对称情况大致相同,除了分子的质心很可能是对称中心。在这一点上,如果确定了局部对称性,则可能只需要找到几个唯一的操作即可生成整个组。例如,在B20晶体结构,每个原子有一个本地对称性,并且由包括2倍(所产生的完整的点群旋转)螺杆轴,其将一个原子成另一种。在苯,需要两个操作:6倍(60 ∘)通过旋转中心轴和反射面二等分的键。
编辑:对于B20结构,您可以使用轴中的两个来生成完整的组。这样可以避免必须找出自动确定螺丝轴的方法。
注意:在全局区域中使用局部对称区域中的思想要谨慎,要进行对称操作,还必须改变环境。因此,如果您从上方找到,则它将仅给出候选对称性,因为该转换可能不会类似地适当地更改环境,因此需要进一步检查。例如,如果苯环的氢原子沿着一侧从环的平面伸出,那么将碳-碳键平分的反射平面会很好,但是类似地平分键的180 180旋转则不会,因为不重现当地环境。
编辑-翻译:以上关于局部对称性的讨论忽略了另一种复杂情况:翻译。形式上,正确的对称操作是
其中和→ x k,如上所述,而→ t是任意转换。在同晶中
其中是一个原始晶格翻译和Ñ 我 ∈ Ž,所以点群和翻译是完全分开的。在非同形晶体中,→ t可以由非本原平移组成。两者之间的区别仅在于,对于同构晶体,可以找到一个旋转中心,但是对于非同构晶体,则不正确。在后一种意义上,分子系统很可能是“非对称的”,并且需要添加翻译才能完全实现该基团。
在一些软件包中使用了旧的代码SYMMOL。以下论文描述了它使用的算法:
T. Pilati和A. Forni,“ SYMMOL:在给定前缀公差的情况下,在原子簇中找到最大对称基团的程序”,J。Appl。水晶 1998. 31,503-504。
基本上,它确定惯性中心,然后应用可能的对称操作,并尝试确定是否存在转换向量,以在给定的公差范围内将操作的几何图形映射到原始几何图形上。该代码本身不再可以从作者的网站上获得,但可以在此处使用(带有一组示例输入文件)。
我很高兴回答这个问题,这里有高质量的开源代码:
https://github.com/mcodev31/libmsym
libmsym是一个C库,用于处理分子中的点组对称性。它可以确定,对称和生成任何点组的分子。它还可以为所有点组和轨道角动量(l)的子集生成原子轨道的对称适应线性组合,并将轨道投影到具有大分量的不可约表示中。
我已将libmysm改编为Avogadro,并应于2015年8月晚些时候发布。
我相信作者目前正在完成有关细节的手稿。答案发布后,我将对其进行修改。
如果您仍然对此感兴趣,我有一个python脚本,它将为您提供指定容差内任何分子的(阿贝尔)点族(对称地非冗余)原子。
我的例程与我看到的许多其他例程之间的区别在于,初始方向并不重要,因此在未指定初始点组的情况下进行几何优化的结果很有用(通常,这样的假设可能会限制几何形状,迫使其对称并给出非平衡基态。)
如果您仍然感兴趣,请告诉我,我在这里分享。
我曾经写过一个小的Python脚本来检测分子的点群对称性。如果您有兴趣,请参阅https://github.com/sunqm/pyscf/blob/master/symm/geom.py
有一些软件包,例如Materials Studio,可以为您自动识别分子的点组。但是,如果您想自己弄清楚它,有一个不错的流程图将引导您完成该过程。您也可以在Otterbein对称网站上查看一些教程和交互式演示。