This archive contains the data supporting the manuscript of the same title. The calculations are for bulk antiferromagnetic (type-II) NiO in a four-atom rhombohedral cell, and comprise the Wannierization of the Kohn-Sham manifold, the linear-response calculation of the on-site (U) and inter-site (V) Hubbard parameters, DFT+U+V calculations that co-opt the Wannier interface to modify the definition of the Hubbard projectors, and the construction of the block-diagonalizing and hybridized projectors discussed in the manuscript.
The NiO/ directory contains the full calculation workflow, one numbered subdirectory per step:
| Step | Contents |
|---|---|
| 01-wannierization | SCF and NSCF ground state (pw.x), spin-resolved Wannierization (wannier90.x + pw2wannier90.x) |
| 02-calculate-u-and-v | Linear-response calculation of U and V with the HP code (HUBBARD.dat, NiO.Hubbard_parameters.dat) |
| 03-dft-plus-u-plus-v | DFT+U+V SCF calculation with Wannier functions as Hubbard projectors, supplied via the wannier2pw interface |
| 04-diagonalizing-projectors | Construction of the block-diagonalizing projectors (via hubbard-umat) and their real-space representation |
| 05-hybridized-orbitals | Construction of the hybridized (intersite-rotated) projectors and their real-space representation |
Each step directory contains the Quantum ESPRESSO / Wannier90 input (.in, .win) and output (.out, .wout) files, plus a run.sh that reproduces the step.
The NiO/ directory additionally contains:
| Path (within NiO/) | Contents |
|---|---|
| plot_potential_gamma.py, plot_potential.py | Scripts that generate the potential-matrix figures of the manuscript (main text and Supplemental Material) from 03-dft-plus-u-plus-v/03-scf/NiO.xml and .../nsg.dat (both included) |
| */NiO.dn_000*.cube | The thirteen spin-down orbital cube files rendered in the projector-isosurface figure of the manuscript (original Wannier functions in 01-wannierization/04-wannierize-down/03-w90/, block-diagonalizing projectors in 04-diagonalizing-projectors/02-w90-plot-orbitals/, hybridized projectors in 05-hybridized-orbitals/02-w90-plot-orbitals/) |
| pseudos/ | The norm-conserving pseudopotentials used (PseudoDojo v0.4.1, scalar-relativistic, PBEsol, standard accuracy) |
At the top level of the archive:
| Path | Contents |
|---|---|
| patches/ | A required patch to Quantum ESPRESSO; see below |
| src/hubbard_demo/ | The Python package implementing the projector rotations (block-diagonalization and intersite hybridization), potential construction, and Wannier90 .chk patching. Command-line entry points: hubbard-umat, hubbard-exact-diagonalization, hubbard-patch-chk |
| tests/ | Unit tests for hubbard_demo (the test fixtures are taken from an independent LiCoO2 calculation, exercising the same code paths on a different material) |
Large regenerable intermediates (wavefunctions, tmp/ directories, UNK* files, .amn/.mmn/.chk matrices, and cube files other than the thirteen shown in the manuscript) are omitted; running the workflow below regenerates them.
pw.x, hp.x, pw2wannier90.x) including the wannier2pw interface of Carta et al., Phys. Rev. Res. 7, 013289 (2025), which supplies Wannier functions to pw.x as custom localized Hubbard projectors, and additionally patched with patches/qe-write-nsg-file.patch (included in this archive), which makes pw.x write the generalized occupation matrices consumed by the plotting scripts to nsg.dat at the end of a DFT+U+V calculationhubbard_demo and the plotting scripts)Note: hubbard_demo assumes real occupation matrices, which is exact for collinear calculations without spin–orbit coupling (the case treated here, and the only case the bundled nsg.dat patch writes out). For complex occupations (noncollinear or spin–orbit-coupled systems) the numerator index convention in intersite_generator_S and the array dtype would both need changing — see the warning in that function's docstring.
The data consumed by the potential-matrix figures is included, so they can be regenerated directly:
uv sync
cd NiO
uv run python plot_potential_gamma.py # main-text figure
uv run python plot_potential.py # Supplemental Material figure
The unit tests can be run with uv run --extra test pytest tests/.
QE_DIRECTORY (path to the Quantum ESPRESSO bin/ directory), W90_DIRECTORY (path to the Wannier90 directory), and optionally PARA_PREFIX (e.g. mpirun -n 8).cd NiO && ./run.sh — this executes steps 01 through 05 in order. Each step's run.sh can also be invoked individually, provided the preceding steps have been run (data flows between steps via relative paths).Edward Linscott edward.linscott@psi.ch / edwardlinscott@gmail.com