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}\)(旋转、反演、镜面)下不变,那么
两个 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
5.2 相关 &SYSTEM 字段¶
调试/特殊情况关闭对称性:
对称容差(symm_tol 或 symm_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.0,starting_magnetization(2) = -1.0:初始磁矩
- QE 检测磁序后会自动降低对称群(或者用户需要 nosym 强制)
6. 对应 benchmark 条目¶
6.1 评分字段直接来自化简 10¶
evaluate/compare.py 的 COMPARISON_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 JSON 的 info.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 空间群识别的典型坑¶
- 数值噪声:DFT 弛豫后原子位置可能偏离理想对称 \(10^{-4}\) Å,默认容差可能检测不到
- 解决:放宽
symprec,或在评分前做一次"symmetrize" - 原胞选择:同一晶体用不同原胞表示(原胞 vs 常规晶胞 vs 超胞)可能让对称检测失败
- 解决:用
SpacegroupAnalyzer.get_conventional_standard_structure()统一到常规胞 - 磁性对称:
NiO的结构空间群 \(Fm\bar{3}m\),但反铁磁有磁性空间群 \(Fm'\bar{3}m'\) - 评分只看结构对称,不对磁性对称扣分——这是 DFTBench 的简化
- 铁电相变:
BaTiO₃高温立方 \(Pm\bar{3}m\)、低温四方 \(P4mm\)、更低温正交 \(Amm2\)、最低温三方 \(R3m\) - 温度不同预期空间群不同;benchmark 要明确是哪个相
- 对称性输入与输出不一致:
ibrav指定了立方,但ATOMIC_POSITIONS破坏了立方对称(例如 BaTiO₃ 带了 Ti 位移)→ QE 检测不到完整立方对称 → 可能对 k 点压缩不彻底 - 孪晶 / 畴:弛豫可能落到两个等价的低对称解之一,评分时要接受同一空间群下的等价结构
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\) 不允许)