跳转至

20. 空间群对称性(化简 10)

化简 9 用 Monkhorst-Pack 网格把 BZ 积分离散为 \(N_1 \times N_2 \times N_3\) 个 k 点。但对一个高对称晶体(比如立方 Si),这几百个 k 点中很多物理等价——一个对称操作(旋转、反演等)能把其中一个映射到另一个,它们的能带结构相同。这一步利用空间群对称性把等价 k 点合并成"不可约 BZ",计算量降到原来的 \(1/N_{\text{sym}}\),代价几乎为零。对 ML 读者:这就是 inductive bias + 等变性带来的"免费午餐"。


1. 化简位置

12 步化简链中的第 10 步:空间群对称性(space group symmetry)。

  • 前一步:化简 9 k 点网格,典型 \(8^3 = 512\) 个点
  • 本步:利用晶体的对称性,把等价 k 点合并,只算不可约 BZ 中的几十个
  • 下一步:化简 11(SCF 自洽迭代)——每个 k 点本身还要 self-consistent 求解

与之前的化简不同,化简 10 不引入新误差(纯数学利用),只减少计算量。但"对称性检测"本身可能出错,对应 benchmark 里 space_group 评分字段。


2. 上一步的困难

化简 9 后,一个 \(8 \times 8 \times 8\) 网格有 512 个 k 点。每个 k 点上都要解一次 KS 矩阵特征值问题(大小 \(\sim 10^4\)),串起来是个巨大的计算。

但晶体有对称性:如果晶格在某操作 \(\hat{R}\)(旋转、反演、镜面)下不变,那么

\[\varepsilon_{n,\hat{R}\vec{k}} = \varepsilon_{n,\vec{k}}, \quad \phi_{n,\hat{R}\vec{k}}(\vec{r}) = \phi_{n,\vec{k}}(\hat{R}^{-1}\vec{r})\]

两个 k 点物理等价。算一次 \(\vec{k}\),另一个通过对称性映射就能得到,不需要再对角化。

对 Si(立方 \(m\bar{3}m\),48 个对称操作),\(8^3 = 512\) 个 k 点压缩到大约 29 个——算力降 17 倍。


3. 引入的假设 / 近似

核心:本步不做新的物理近似,只是利用已有晶格结构里的对称性

但实现层面引入: - 对称性检测:给定原子位置,程序要判断哪些操作是对称操作 - 对称容差(symmetry tolerance):原子位置有数值噪声时,要容忍到什么程度 - 磁性对称 vs 结构对称:反铁磁体的结构可能对称但磁矩打破对称——需要用户显式处理

代价(实现层): - 输入结构数值不精确 → 检测不到对称性 → 用完整 k 网格 → 浪费算力(正确性 OK) - 输入结构过度对称(噪声被认成对称)→ 错误压缩 → 结果有偏(少见但可能) - 磁性 / SOC / 外场 → 破坏结构对称性 → 需要 nosym=.true. 或特殊处理


4. 引入的新概念

4.1 空间群(space group)——230 种

晶体的完整对称群,包含: - 平移(translations):格矢 \(\vec{R} = n_1 \vec{a}_1 + n_2 \vec{a}_2 + n_3 \vec{a}_3\) - 点对称(point operations):旋转、反演、镜面 - 螺旋(screw axes):旋转 + 沿旋转轴平移分数格矢 - 滑移(glide planes):镜面 + 沿镜面平面平移分数格矢

3D 空间共有 230 种空间群,编号 1–230(见 International Tables for Crystallography)。

4.2 点群(point group)——32 种

只保留点对称操作(不含平移),是空间群的"无平移商群"。3D 共 32 种晶体学点群

4.3 晶系(crystal system)——7 种

按点对称性分类:

晶系 点群示例 晶格关系
Cubic \(m\bar{3}m\), \(\bar{4}3m\) \(a=b=c, \alpha=\beta=\gamma=90°\)
Tetragonal \(4/mmm\) \(a=b\neq c, \alpha=\beta=\gamma=90°\)
Orthorhombic \(mmm\) \(a\neq b\neq c, \alpha=\beta=\gamma=90°\)
Hexagonal \(6/mmm\) \(a=b\neq c, \gamma=120°\)
Trigonal (Rhombohedral) \(\bar{3}m\) \(a=b=c, \alpha=\beta=\gamma\neq 90°\)(或 hexagonal 变体)
Monoclinic \(2/m\) \(a\neq b\neq c, \alpha=\gamma=90°, \beta\neq 90°\)
Triclinic \(\bar{1}\) 全不等

DFTBench 评分字段 crystal_system 就是这 7 个之一。

4.4 空间群符号——两套记号

国际记号(Hermann-Mauguin):由"格心类型"+"对称元素"组成

  • 首字母 = 格心类型(Bravais centering):
  • P:primitive(简单)
  • I:body-centered(体心,I = innenzentriert)
  • F:face-centered(面心)
  • A/B/C:单面心(base-centered)
  • R:rhombohedral(三角)
  • 后续:沿主要晶体方向的旋转/镜面符号
  • 数字 2, 3, 4, 6 = 旋转轴阶数
  • -n(或上划 \(\bar{n}\))= 旋转反演轴
  • m = 镜面
  • a, b, c, n, d = 滑移面(不同方向的滑移)
  • / 分隔 = 旋转轴 "垂直于" 镜面(4/m = 4 次轴 + 垂直镜面)

例子解读: - Fd-3m (Si, diamond, No. 227):F 面心 + d 滑移 + \(\bar{3}\)(3 次反演轴)+ m 镜面 - F-43m (GaAs, zinc blende, No. 216):F 面心 + \(\bar{4}\)(4 次反演轴)+ 3 次轴 + m 镜面(没有反演中心) - Pm-3m (BaTiO₃ cubic paraelectric, No. 221):P 简单立方 + m 镜面 + \(\bar{3}\) + m,最高对称立方 - P4mm (BaTiO₃ tetragonal ferroelectric, No. 99):P 简单四方 + 4 次轴 + 两个镜面,沿 c 轴打破反演 → 铁电

Schoenflies 记号\(O_h\)(立方最高对称)、\(T_d\)(四面体)、\(D_{4h}\)(四方双金字塔)、\(C_{2v}\) 等。分子化学更常用。

查表工具:Bilbao Crystallographic Server,http://www.cryst.ehu.es/

4.5 例子:benchmark 中典型材料

材料 空间群 编号 点群 晶系
Si (diamond) \(Fd\bar{3}m\) 227 \(m\bar{3}m\) cubic
GaAs (zinc blende) \(F\bar{4}3m\) 216 \(\bar{4}3m\) cubic
NaCl (rock salt) \(Fm\bar{3}m\) 225 \(m\bar{3}m\) cubic
Fe (bcc) \(Im\bar{3}m\) 229 \(m\bar{3}m\) cubic
Cu (fcc) \(Fm\bar{3}m\) 225 \(m\bar{3}m\) cubic
BaTiO₃ (cubic paraelectric) \(Pm\bar{3}m\) 221 \(m\bar{3}m\) cubic
BaTiO₃ (tetragonal ferroelectric) \(P4mm\) 99 \(4mm\) tetragonal
ZnO (wurtzite) \(P6_3mc\) 186 \(6mm\) hexagonal
Bi₂Se₃ \(R\bar{3}m\) 166 \(\bar{3}m\) trigonal
LiNbO₃ \(R3c\) 161 \(3m\) trigonal

4.6 不可约 BZ(irreducible Brillouin zone, IBZ)

完整 BZ 里通过对称操作不能互相到达的最小区域。对 Si(\(O_h\) 群 48 元素),IBZ 是 BZ 的 1/48。

k 点压缩规则: - 完整 \(N^3\) 网格的 k 点 - 对每个 k 点 \(\vec{k}\),取所有 \(\{\hat{R}\vec{k}\}\) 的"轨道(orbit)" - 每个轨道贡献 1 个不可约 k 点(代表元)+ 权重 = 轨道大小 - 最终:\(N_{\text{ik}} \approx N^3 / N_{\text{sym}}\),权重总和归一


5. QE 中的对称性处理

5.1 自动检测

QE 启动 SCF 时自动做: 1. 从 ATOMIC_POSITIONS + CELL_PARAMETERS 检测布拉维格子 2. 找出所有对称操作 \(\hat{R}\)(旋转 + 平移),验证每个操作 + 原子交换后总体不变 3. 压缩 k 点网格到不可约 BZ 4. 在 SCF 中用对称性约束力、应力、密度

输出示例:

     Sym. Ops., with inversion, found ( 24 have fractional translation)
         48 Sym. Ops. (with inversion) found
...
     number of k points=    29
——48 个对称操作,512 k 点压缩到 29。

5.2 相关 &SYSTEM 字段

&SYSTEM
  nosym       = .false.   ! 默认 false,启用对称性
  noinv       = .false.   ! 默认 false,允许使用时间反演对称
  no_t_rev    = .false.
/

调试/特殊情况关闭对称性:

nosym = .true.

对称容差(symm_tolsymm_threshold)通过环境变量或编译默认控制。pymatgen / spglib 里对应 symprec(典型 1e-3 Å)和 angle_tolerance(典型 5°)。

5.3 磁性结构 + 对称性

纯结构对称 ≠ 磁性对称。反铁磁 NiO(层内同向、层间反向)结构是 \(Fm\bar{3}m\)(rock salt),但磁序降低对称性。QE 的做法: - nspin = 2:启用自旋极化 - starting_magnetization(1) = 1.0starting_magnetization(2) = -1.0:初始磁矩 - QE 检测磁序后会自动降低对称群(或者用户需要 nosym 强制)


6. 对应 benchmark 条目

6.1 评分字段直接来自化简 10

evaluate/compare.pyCOMPARISON_RULES

字段 类型 来源
space_group exact match 弛豫后结构的空间群符号(如 "Fd-3m"
space_group_number exact match 空间群编号(1–230,如 227
point_group exact match 点群符号(如 "m-3m"
crystal_system exact match 晶系(如 "cubic"

6.2 分析管线

DFTAgent 怎么得出这些: 1. QE vc-relax 输出弛豫后的 CELL_PARAMETERS + ATOMIC_POSITIONS 2. 用 pymatgen 的 SpacegroupAnalyzer(底层是 spglib)分析 3. 提取 get_space_group_symbol()get_space_group_number()get_point_group_symbol()get_crystal_system() 4. 与 materials JSONinfo.space_group(预期值)比对

6.3 坑:评分对"字符串完全相等"敏感

  • pymatgen 返回 "Fd-3m" vs spglib 直接返回 "Fd\bar{3}m"(unicode \(\bar{3}\))vs 另一个库返回 "F d -3 m"——字符串不一致就扣分
  • 评分前需要字符串归一化
  • 数字编号 space_group_number 更鲁棒,优先用

6.4 与 ground_truth 缺失的关系

即使代码走通了,由于 ground_truth 字段当前为空(见 report_ground_truth.md),这几个字段的比对不会产生有意义的评分。自制 DFTBench 时需要自己填上预期值(从 Materials Project API 查询或文献)。


7. ML 类比

7.1 对称性 = 数据的等变性 (equivariance) inductive bias

  • CNN 用 平移等变(translation equivariance):同一滤波器在所有位置共享参数
  • 晶体计算用 空间群等变:同一能带在对称 k 点取同值
  • 等变网络(SE(3)-equivariant NNs, e3nn)正是这个思想推到 DFT 精神——建模分子/晶体的物理量必须尊重对称
  • 免费午餐:等变让参数变少 + 训练样本效率变高;对称让 k 点变少 + 计算加速

7.2 空间群压缩 k 点 = 共享计算

和 CNN 里的 shared convolution 完全同构: - CNN:不同位置的特征图用同一卷积核 → 参数减少 \(N\) 倍 - DFT:不同对称 k 点共享同一次对角化结果 → 计算量减少 \(N_{\text{sym}}\)

7.3 230 空间群 = "所有可能的晶体架构分类"

类比 ML 里的"神经网络架构家族":ResNet vs Transformer vs Mamba 是有限几十种模式。3D 晶体也是有限的——只有 230 种空间群架构,每种晶体必属其一。这是一个罕见的"物理给出硬约束"的完备分类。

7.4 晶系 = 特征空间的顶层聚类

7 个晶系是粗分类,32 点群是细分类,230 空间群是最细。类似于 ML 里: - coarse label (7) → medium label (32) → fine label (230) - 三级层次分类

7.5 对称容差 = fuzzy 匹配阈值

ML 里比较两个 embedding 要设 cosine 阈值;这里比较"对称操作后的原子位置"要设 symprec。太严 → 错过对称;太松 → 误判对称。调参直觉完全迁移。

7.6 磁性破缺对称 = 约束优化中的对称破缺

和 ML 里 GAN 训练 mode collapse 有点像(高对称解是局部极值,磁性偏好低对称)。或者 spin glass 的 replica symmetry breaking——同一套规则下突然破缺成多个分支。


8. 典型取值与常见坑

8.1 对称性容差

  • pymatgen SpacegroupAnalyzer 默认 symprec=0.01 Å:对弛豫后清洁结构 OK
  • 对 DFT 弛豫的数值噪声结构可以放到 symprec=0.1 识别真对称
  • 对完美对称输入(如来自 Materials Project 的 CIF)可以收紧到 1e-3

8.2 空间群识别的典型坑

  1. 数值噪声:DFT 弛豫后原子位置可能偏离理想对称 \(10^{-4}\) Å,默认容差可能检测不到
  2. 解决:放宽 symprec,或在评分前做一次"symmetrize"
  3. 原胞选择:同一晶体用不同原胞表示(原胞 vs 常规晶胞 vs 超胞)可能让对称检测失败
  4. 解决:用 SpacegroupAnalyzer.get_conventional_standard_structure() 统一到常规胞
  5. 磁性对称NiO 的结构空间群 \(Fm\bar{3}m\),但反铁磁有磁性空间群 \(Fm'\bar{3}m'\)
  6. 评分只看结构对称,不对磁性对称扣分——这是 DFTBench 的简化
  7. 铁电相变BaTiO₃ 高温立方 \(Pm\bar{3}m\)、低温四方 \(P4mm\)、更低温正交 \(Amm2\)、最低温三方 \(R3m\)
  8. 温度不同预期空间群不同;benchmark 要明确是哪个相
  9. 对称性输入与输出不一致ibrav 指定了立方,但 ATOMIC_POSITIONS 破坏了立方对称(例如 BaTiO₃ 带了 Ti 位移)→ QE 检测不到完整立方对称 → 可能对 k 点压缩不彻底
  10. 孪晶 / 畴:弛豫可能落到两个等价的低对称解之一,评分时要接受同一空间群下的等价结构

8.3 nosym=.true. 的使用场景

  • 调试:隔离对称性 bug
  • 外电场 / 外磁场打破对称
  • 分数占据(disordered):占据数打破对称
  • SOC:spin-orbit coupling 把结构对称缩减到磁性对称
  • 高温 MD:瞬时结构无严格对称

8.4 对称性 + vc-relax 的协同

vc-relax 里 QE 用对称性约束应力张量——这样晶格优化保持晶系不变。例如立方结构弛豫后仍然立方,不会在数值噪声下跑成三斜。

但如果初始结构打破了某对称(你想看 BaTiO₃ 从 cubic 跑到 tetragonal),要用 nosym=.true. 或用正确的低对称 ibrav

8.5 benchmark 中 agent 的常见错误

  • 对称性评分错:参数默认 nosym=.true.(有些模板会)→ 弛豫后晶格数值扰动大 → pymatgen 检测到的空间群降级
  • 反向:过高容差 → 把实际上的低对称结构误识为高对称
  • 磁性材料:nspin=2 启用但没正确设初始磁矩 → 弛豫到错磁序 → 结构空间群看着对、能量和磁矩都错

下一步阅读

  • 21-scf-iteration.md — 化简 11:SCF 自洽迭代。每个(不可约)k 点上还要解自洽方程 \(V_{\text{eff}}[\rho] \leftrightarrow \rho\)
  • 22-bfgs-relax.md — 化简 12:BFGS 结构弛豫。外层优化晶格和原子位置,常与对称性约束联动
  • 30-observables.md — DFT 能算的物性。空间群/点群决定哪些物性允许(如 \(P4mm\) 允许铁电极化、\(Pm\bar{3}m\) 不允许)