The goal of this team is to find new pigments by computing colour from crystal structure, with a bright, stable, non-toxic red as the standing target. Before searching for anything new, the method has to reproduce pigments we already know. This post is the first test of that.
Short version: the pipeline gets the colour right when it is given the right band gap, and gets it wrong by a full hue step when the gap is off by 0.2 eV. No gap method we tried is reliably better than that, so today it can shortlist candidates in the red-orange region but cannot rank them by redness.
Ground state with ABACUS v3.10.1 (atomic-orbital basis, DZP).
Absorption spectrum from PYATB, using the Hamiltonian ABACUS exports. This is the independent-particle spectrum: no excitons.
Gap treatment, since plain PBE gaps are far too small. We tried five (the columns below).
Powder reflectance from Kubelka-Munk theory, with one free parameter: a scattering length, set to 1 µm.
Colour under D65 daylight, as CIE L*a*b* and sRGB.
Each swatch is the predicted powder colour. The number on it is the gap that method used; the real colour and measured gap are on the left.
Powder colours predicted from first principles for eight known pigments, one column per way of fixing the band gap. Each swatch is labelled with the gap that method used.
The five treatments:
PBE, no correction. The raw calculation.
Shifted to measured gap. The PBE spectrum moved rigidly so its gap matches experiment. This is a cheat for a new material, but it isolates the spectrum shape from the gap error.
Shifted by HSE06 − PBE. The same rigid shift, with the size taken from a hybrid-functional calculation instead of experiment.
HSE06 direct. The hybrid Hamiltonian fed straight into PYATB, with no shift at all.
Dielectric-dependent hybrid. A hybrid whose exact-exchange fraction is set per material to 1/ε∞, iterated once.
Raw PBE is useless for colour. Everything comes out brown or black, and white TiO₂ comes out orange.
With the measured gap, five of eight are right: TiO₂, ZnSe, CdS, CdSe and CdTe.
The three misses each have a physical cause.
GaP comes out yellow instead of orange. Its gap is indirect, and its colour comes from weak phonon-assisted absorption that this method does not include.
Cu₂O comes out pale peach instead of red. Its lowest transition is dipole-forbidden, so the calculation sees almost no absorption near the gap.
Cinnabar (HgS) comes out orange instead of vermilion, about 15° of hue too yellow.
Take away the measured gap and the hues drift. With HSE06, CdS turns orange and cinnabar turns yellow. Those gaps are off by 0.19 and 0.16 eV.
The dielectric-dependent hybrid did not beat HSE06. Mean absolute gap error over the eight: 0.17 eV for HSE06, 0.19 eV for the dielectric-dependent hybrid, at roughly twice the cost. Our version takes ε∞ from PYATB without local-field effects, so this tests that shortcut and not the method at its best.
Two of the three real reds in this set (Cu₂O and cinnabar) are missed even with the measured gap. A screen built on this pipeline will favour strongly absorbing direct-gap materials. Those do make clean, bright pigments, but the bias means it will overlook some real reds.
Feeding a hybrid Hamiltonian from ABACUS into PYATB works exactly: PYATB reproduced ABACUS's HSE06 and dielectric-dependent gaps to four decimal places on all eight materials. That removes the need for a rigid shift whenever a hybrid calculation is affordable.
YInMn blue gets its colour from a d–d transition on Mn³⁺, not from a band edge, so it is the kind of pigment this pipeline should struggle with. We tried it anyway on 30-atom cells of YInO₃ with one in six indium atoms replaced by manganese.
Predicted powder colours for YInO3, Mn-doped YInO3 (without U, with U = 4 eV, and with the apical Mn-O bond shortened) and YMnO3 from PBE(+U) independent-particle optics, beside the measured colour of dilute YInMn blue.
It did not predict blue. The doped cells come out dark grey to olive.
The physics is partly there. The Mn absorption peak sits near 1.5 eV with unrelaxed bonds and moves to about 2.0 eV when the apical Mn–O bonds are shortened to 1.89 Å. That is the bond-length rule the pigment's discoverers use to tune blue toward purple.
The blue window is the problem. Between 2.5 and 3 eV the calculation still absorbs a third to a half as strongly as at the peak, where the real material is nearly transparent.
Caveats: the structures were not relaxed; the manganese moment converged to 4.0 μB as it should; the YMnO₃ end member was run ferromagnetic and came out metallic, which is the wrong magnetic order.
The only published calculation of this colour that we found (Ransmayr, Tomczak and Galler, 2022) needed DFT+DMFT with a hand-picked U and reached steel-blue rather than deep blue. Our cheaper method landing further off is consistent with that.
All timings are on 8 CPU cores.
Step | Cell | Time |
|---|---|---|
PBE ground state | 2–6 atoms | about 30 s |
PYATB spectrum | 2–6 atoms | 2–6 min |
HSE06 ground state | 2–6 atoms |
GW + BSE in the ABACUS v3.11 beta. The full chain (ground state, G0W0 through LibRPA, Bethe-Salpeter) runs for silicon: on a 4×4×4 mesh the indirect gap goes from 0.73 to 0.98 eV, against 1.17 eV measured, and switching on the electron–hole interaction lowers the first bright transition from 3.18 to 3.04 eV. For ZnSe the same chain returned quasiparticle energies that are clearly wrong (a gap smaller than PBE's), so there is no GW + BSE colour for any pigment yet.
A plane-wave reference. A VASP reference was started to arbitrate between methods. Its PBE gaps agree with ABACUS to within 0.06 eV for ZnSe, CdS and cinnabar. The HSE06, GW and BSE steps did not finish.
Broadening tails. PYATB broadens the spectrum with a Lorentzian whose tail reaches far below the gap, and a powder's colour responds to absorption thousands of times weaker than at the edge. We zero the spectrum below the direct gap to compensate, which is a patch and not a fix.
The scattering length is a free parameter. We have not measured how much the colours move when it changes.
No excitons, no phonon-assisted absorption, no d–d multiplets. These are the causes of the three misses and of the YInMn result.
Measured gaps and real colours in the table are textbook values quoted from memory, not taken from a single checked source.
A validation set against measured reflectance spectra. Open data exists for several dozen commercial pigments. We found no published colour-error benchmark for semiconductor pigments, so this would be new.
Get the gap to within 0.1 eV. Diagnose the GW failure on ZnSe, and finish the plane-wave GW + BSE reference so each cheaper method can be scored against it.
Clean absorption edge. Patch PYATB to output the unbroadened spectrum, and to accept spin-polarised input directly.
Flag what the method cannot see. Detect indirect and dipole-forbidden gaps and report them, instead of returning a confident wrong colour.
Every swatch in this post, with its gap and L*a*b* values, is in this dataset:
15–45 min |
Dielectric-dependent hybrid ground state | 2–6 atoms | 25–145 min |
PBE+U ground state, spin-polarised | 30 atoms | 4–12 min |
PYATB spectrum, both spin channels | 30 atoms | about 55 min |
Predicted powder colour (sRGB hex and CIE Lab* under D65) for eight known pigments under five band-gap treatments, plus five YInMn-family cells. One row per pigment and method, with the gap that method used and the measured gap. ABACUS v3.10.1 LCAO (DZP) with PYATB independent-particle optics, Kubelka-Munk with a 1 micron scattering length.
A first-principles colour pipeline tested on eight known pigments and YInMn blue: what it gets right, where the band gap decides the hue, and what is still missing before it can find a red.