Symmetry Reduction Implementation — Status & Handover¶
Last updated: 2026-05-23 | Phase: complete — all milestones shipped
Milestone Status¶
# |
Milestone |
Status |
|---|---|---|
M1 |
|
✅ |
M2 |
1e compute reduction (S, T) |
✅ |
M2a |
Wire M2 into 5 drivers |
✅ |
M3 |
|
✅ |
M3b |
|
✅ |
M3b |
|
✅ |
M3b |
|
✅ — origin-fixed cells only |
M4 |
IBZ-native SCF (4 drivers) |
✅ |
M5 |
|
✅ |
M5a |
|
✅ |
SYM5 |
|
✅ |
— |
Non-symmorphic support |
✅ — diamond Fd-3m validated |
SYM6 |
Character tables (Oh, Td, D4h, C6v) |
✅ |
Known Limitations¶
M3b: origin-fixed cells only.
compute_jk_gamma_reducedworks for single-atom primitive cells (Mg, He) but not multi-atom cells (NaCl) — per-atom lattice shifts break cell-pair Wigner-D reconstruction. Verified: Mg J err 2.7e-15.M2a: S/T template workaround. The GDF driver computes full S/T as a template when using the symmetry-reduced path, because pybind11’s LatticeMatrixSet has read-only nbf/cells/blocks. The ERI compute reduction is unaffected.
Module Map¶
Module |
Purpose |
|---|---|
|
Wigner D-matrices (SYM1) |
|
AO permutation matrices (SYM2a) |
|
Lattice-cell orbits (SYM2b) |
|
Atom-pair orbits (SYM2c) |
|
Storage-reduced 1e integrals (SYM3a) |
|
Compute-reduced 1e integrals (SYM3b) |
|
Compute-reduced 2e Fock (M3b) |
|
Group-averaging + force symmetrization (M5, SYM5) |
|
Character tables + irrep projection (SYM6) |
|
|
|
GDF driver with M2a/M5a/M3b integration |
|
BIPOLE drivers with M2a/M4 integration |
C++ Changes¶
File |
Addition |
|---|---|
|
|
|
|
|
pybind11 for all above |