This register makes provenance review measurable. Each row is a module that another computational materials science code also implements, and records three things about it:
The third column is the one no automated check can fill. A wording search finds red-flag phrases; it does not find carried-over structure (PROVENANCE.md § 4.4). The review procedure, and the rule that a review is a research session done by someone who did not write the code, are in PROVENANCE.md § 3.
Paths are relative to the repository root. "Not cited in the source" means the module names its method but cites no paper for it; those gaps are listed under Citation gaps.
| Module | Code | Published sources | Validation | Reviewer | Date | Compared against | Result |
|---|---|---|---|---|---|---|---|
| PAW/USPP augmentation and D-matrix | src/layer_3_representation/pseudopotential/ultrasoft/, src/layer_3_representation/pseudopotential/paw/compensation_charge.hpp, src/layer_4_computation/paw/one_center/ (d_matrix.hpp, energy.hpp, densities.hpp) | Vanderbilt, PRB 41, 7892 (1990), Eqs. (11), (18) and (20) (overlap operator, augmented density, Q_ij(r)); Laasonen, Pasquarello, Car, Lee & Vanderbilt, PRB 47, 10142 (1993), Eqs. (12)–(13) (effective potential and the D-matrix integral), (27)–(28) and (32) (L-resolved Q_ij^L and its radial transform); Blöchl, PRB 50, 17953 (1994), Eqs. (16)–(21) (one-center densities, the E = Ẽ + E¹ − Ẽ¹ split) and (24) (his moments, which include the nuclear charge); Kresse & Joubert, PRB 59, 1758 (1999), Eqs. (5)–(7) and (22)–(27) (one-center densities and energies with a pseudized core, moments, compensation charge), (44)–(47) (D_ij) and (61)–(62) (compensation-function shape, unit moment). The shape's wavenumbers differ from their Eq. (63): see Open questions. | tests/unit/layer_4_computation/paw/one_center/test_energy_and_d_matrix.cpp (OneCenterDMatrixTest.IsTheDerivativeOfTheOneCenterEnergy, a finite-difference gate; OneCenterDMatrixTest.GgaDerivativeIdentityHolds); tests/unit/layer_3_representation/pseudopotential/planewave/ultrasoft/internal/test_charge_density_augmentation.cpp; tests/unit/layer_3_representation/pseudopotential/paw/test_compensation_charge.cpp; tests/validation/test_qe_energy_comparison.py (test_qe_energy_comparison, test_qe_paw_energy_comparison, against Quantum ESPRESSO 7.5 + LibXC 7.0.0); tests/validation/test_paw_irreducible_wedge_consistency.py | — | — | — | not yet reviewed |
| Force and stress augmentation terms | src/layer_5_properties/forces/planewave/pseudopotential/ultrasoft/internal/augmentation.hpp, src/layer_5_properties/stress_tensor/planewave/pseudopotential/ultrasoft/internal/augmentation.hpp | Force: Laasonen, Pasquarello, Car, Lee & Vanderbilt, PRB 47, 10142 (1993), Eq. (43), third term, with Eqs. (38) and (61); the header also derives it from the structure-factor derivative. Stress: the Q_ij(G) expansion it differentiates is the Fourier transform of Eq. (27) of the same paper, with the radial transform of Eq. (32) (the header's earlier credit to Vanderbilt, PRB 41, 7892 (1990) stays); strain derivative in the formalism of Nielsen & Martin, PRB 32, 3780 (1985). | tests/validation/test_paw_pressure_and_gamma_forces.py (pressure is −dE/dV of Q3's own energy, origin invariance of the stress, Γ-only forces are −dE/dx); tests/validation/test_paw_forces_and_stress.py (analytic forces against central finite differences on ultrasoft and PAW datasets, full zone and irreducible wedge) | — | — | — | not yet reviewed |
| Symmetry | src/layer_1_structure/symmetry/symmetry.hpp, src/layer_1_structure/symmetry/operation.hpp, src/layer_4_computation/paw/one_center/occupation_symmetrization.hpp | Space-group detection is delegated to the spglib library, cited as its documentation asks: Togo, Shinohara & Tanaka, Sci. Technol. Adv. Mater.: Methods 4, 2384822 (2024). Q3's own irreducible-wedge reduction and symmetrization cite no paper. | tests/unit/layer_1_structure/symmetry/test_symmetry.cpp (ReduceKpointsInternalUsesActualCrystalSymmetryNotBravaisLattice checks Q3's reduction against spglib's; vector symmetrization under reduced symmetry); tests/unit/layer_1_structure/symmetry/test_operation.cpp; tests/validation/test_screw_axis_wedge_consistency.py; tests/validation/test_paw_irreducible_wedge_consistency.py; tests/validation/test_stress_baseline.py (test_low_symmetry_reduction_matches_the_explicit_full_zone) | — | — | — | not yet reviewed |
| k-point grids | src/layer_1_structure/reciprocal_space/kpoints_grid.hpp, src/layer_1_structure/reciprocal_space/kpoint_neighbor_shells.hpp | Monkhorst & Pack, PRB 13, 5188 (1976) (no equation number cited). Neighbor shells: Marzari & Vanderbilt, PRB 56, 12847 (1997), Eq. (B1) (completeness condition). | tests/unit/layer_1_structure/reciprocal_space/test_kpoints_grid.cpp (counts, weights summing to 2, points in the zone); tests/unit/layer_1_structure/reciprocal_space/test_kpoint_neighbor_shells.cpp; tests/unit/layer_1_structure/symmetry/test_symmetry.cpp (ReducedGeneratedGridsPreserveDimensionsShiftsWeightsAndReduction); tests/validation/test_supercell_folding_consistency.py | — | — | — | not yet reviewed |
| Ewald | src/layer_4_computation/effective_potential/internal/electrostatic/ewald_summation.hpp, src/layer_5_properties/forces/planewave/internal/ewald.hpp, src/layer_5_properties/stress_tensor/planewave/internal/ewald.hpp | P. P. Ewald, Ann. Phys. 369, 253 (1921), in all three headers; the stress header also cites Nielsen & Martin, PRB 32, 3780 (1985). | tests/unit/layer_4_computation/effective_potential/internal/electrostatic/test_ewald_summation.cpp (EwaldTest.SiliconEwaldEnergy against a reference value; lattice-image invariance); tests/unit/layer_5_properties/forces/planewave/internal/test_ewald.cpp; tests/unit/layer_5_properties/stress_tensor/planewave/internal/test_ewald.cpp; tests/validation/test_stress_baseline.py (test_ewald_tensor_is_the_gradient_of_the_ewald_energy, test_gamma_ewald_energy_and_stress_are_storage_invariant, test_low_symmetry_stress_and_every_component_match_quantum_espresso) | — | — | — | not yet reviewed |
| Broyden mixing | src/layer_4_computation/iterator/internal/mixing/reciprocal_space/broyden.hpp, src/layer_4_computation/iterator/internal/mixing/preconditioner/ | D. D. Johnson, PRB 38, 12807 (1988) (modified Broyden); Kerker, PRB 23, 3082 (1981) (preconditioner); Raczkowski, Canning & Wang, PRB 64, 121101(R) (2001) (local Thomas–Fermi preconditioner). No equation numbers cited. Placing the preconditioner before the history is documented in the header as Q3's own choice. | tests/unit/layer_4_computation/iterator/internal/mixing/reciprocal_space/test_broyden.cpp (ConvergesTowardFixedPoint, NonUniformMetricWeightsProduceHandVerifiedResult, TwoSpinChannelsConvergeWithMagnetizationMetric); tests/unit/layer_4_computation/iterator/internal/mixing/preconditioner/test_kerker.cpp, test_local_thomas_fermi.cpp; end to end through every SCF case in tests/regression/parity_matrix.yml and tests/validation/test_qe_energy_comparison.py | — | — | — | not yet reviewed |
| Davidson | src/layer_4_computation/diagonalizer/planewave/davidson.hpp, src/layer_4_computation/diagonalizer/planewave/internal/subspace_manager/ | E. R. Davidson, J. Comput. Phys. 17, 87 (1975), used in block form (all bands expanded together). | No dedicated unit test of the iteration (tests/unit/layer_4_computation/diagonalizer/planewave/test_factory.cpp covers construction only). Checked end to end by tests/validation/test_qe_energy_comparison.py, tests/validation/test_band_structure.py, tests/validation/test_gpu_energy_parity.py and tests/validation/test_mpi_band_parallelism.py | — | — | — | not yet reviewed |
Found while seeding the register. Each is a module that implemented a published method without citing it; the fix is a citation in the module's header, written in the approved form of PROVENANCE.md § 4.1, after checking the reference against the paper itself. All six were closed on 2026-10-21, each reference checked against the paper's own bibliographic record and, where the row asked for equation numbers, against the paper's text.
| Module | Missing citation | Status |
|---|---|---|
| Ewald (energy, force, stress) | The Ewald summation | Closed 2026-10-21: P. P. Ewald, Ann. Phys. 369, 253 (1921), in all three headers. |
| k-point grids | Monkhorst–Pack meshes | Closed 2026-10-21: H. J. Monkhorst & J. D. Pack, PRB 13, 5188 (1976), in kpoints_grid.hpp. |
| Davidson | The block Davidson method | Closed 2026-10-21: E. R. Davidson, J. Comput. Phys. 17, 87 (1975), in davidson.hpp. |
| Stress (augmentation and rest) | The Nielsen–Martin stress formalism | Closed 2026-10-21: O. H. Nielsen & R. M. Martin, PRB 32, 3780 (1985), in the stress-tensor entry point, the Ewald and augmentation stress headers and the gradient-correction stress headers; the entry point also cites PRB 32, 3792 (1985) for the plane-wave expressions, and the gradient-correction headers cite A. Dal Corso & R. Resta, PRB 50, 4327 (1994), for the gradient-corrected term, which the 1985 papers (written for the local-density approximation) do not contain. |
| Symmetry | spglib | Closed 2026-10-21: A. Togo, K. Shinohara & I. Tanaka, Sci. Technol. Adv. Mater.: Methods 4, 2384822 (2024), the reference spglib's README asks users to cite, in symmetry.hpp. |
| All PAW/USPP rows | Equation numbers for each term | Closed 2026-10-21: equation numbers from Vanderbilt (1990), Laasonen et al. (1993), Blöchl (1994) and Kresse & Joubert (1999) in each header the two rows name; see the rows above. One question this raised is open, below. |
The validation column has one gap of the same kind: the Davidson iteration has no unit test of its own, so a defect in it is found only through end-to-end energies.
src/layer_3_representation/pseudopotential/paw/compensation_charge.hpp describes its shape as the Kresse–Joubert construction. The form matches their Eq. (61), a sum of two spherical Bessel functions normalized to unit moment by Eq. (62), but the wavenumbers do not: Q3 takes them from the zeros of j_L and uses the coefficients for the unit moment and a zero slope at the radius, while their Eq. (63) takes them from the zeros of j_L′ and uses the coefficients for the unit moment and g_L = 0 at the radius. Both vanish smoothly at the radius; the functions differ. The header now states the difference. Whether the parity gates the header cites are sensitive to it is a question for a person, not a comment change.A review is a research session (PROVENANCE.md § 3), done by someone who did not write the module. It may read GPL source; it never opens proprietary source. It writes no code: a defect it finds is fixed later, in a separate implementation session.
When the review is done, fill in the row's last four columns in a pull request of its own:
YYYY-MM-DD.no structural correspondence found, or findings with a link to the issue that tracks them. A finding is fixed by rewriting the code, never by deleting its provenance comment (PROVENANCE.md § 4.3).A row whose module is later rewritten goes back to not yet reviewed: the review covered the code as it was, not the code as it is.
Adding a module is the same pull request that adds the module, with its review columns at not yet reviewed.