Do the two DFT codes agree closely enough to mix their data without a correction?
Partly. Energy differences agreed to 0.8 meV/atom for TaW but differed by 6.8 for VW, so a per-code correction term was adopted.
In the log: Mixing VASP and Quantum ESPRESSO data: the prior art, and the mechanism it fixes
mixedDate not stated in the log; it was written between the commit of 2026-09-16 19:06 and the first commit that contains it, 2026-09-19 08:35rung 4 · DFT0 predictions · 1 result paragraphEXPERIMENTS.md lines 10601–10641, lines 10643–10655, lines 10741–10774
What E164 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E164.svg).
Pre-registration
The pre-registration, as written
E164, the settings on each side, read rather than assumed.
RHEA (VASP) PBE; PAW with semicore (W/V/Mo/Nb/Ti/Zr/Hf `_sv`, Cr/Ta `_pv`); ENCUT 500 eV;
Methfessel-Paxton order 1, σ = 0.1 eV; KSPACING 0.15 (2π/Å); EDIFF 1e-6; no spin
ours (QE) PBE; pslibrary 1.0.0 PAW with semicore (`spn`, V `spnl`); 50 / 400 Ry;
Marzari-Vanderbilt, degauss 0.02 Ry = 0.27 eV; 6x6x6 on 16-atom cells; no spin
Same functional, same potential class with semicore states on both sides — the case the
Δ-gauge rates at ~1 meV/atom. Two things do not match and the anchor runs correct them:
the smearing (MV 0.27 eV against MP1 0.1 eV — a different free-energy functional at a
different width, worth meV on a metal) and the k-spacing. Chromium has no local
pseudopotential, so the Δ-check covers eight elements and the flywheel's refusal on Cr
stands until one is fetched.
Results
EXPERIMENTS.md · line 10741
E164 result — the Δ-check as designed was invalid; the part of it that is valid gives
0.8 / 3.2 / 6.8 meV/atom.
The full table read a cross-code residual of +69.4 ± 16.3 meV/atom on six binaries. That
number is mine, not the codes': the VASP elemental reference attached to each element anchor
was the raw rattled 54-atom RHEA cell (the only pure-element VASP energy in the database),
while the QE reference was the ideal 2-atom cell I built for the run — a rattle energy of
tens of meV/atom, largest for W and Ta, and the residual pattern sits exactly there (TaW,
VW ≈ +80; TaV ≈ +47). I broke the standing rule on matched references inside the instrument
meant to test it. The "under 2 meV/atom" prediction was not tested by that table, and the
+69 is withdrawn as a measurement of anything but my reference mismatch.
What the same runs do measure cleanly: each binary was computed at two lattice constants in
both codes on identical structures, so the energy difference between its two volumes
cancels every reference — the Δ-gauge's own quantity, over ~12% strain rather than ACWF's ±6%:
pair E(a_hi) − E(a_lo), VASP QE residual (meV/atom)
TaV −63.8 −60.6 3.2
TaW −33.6 −34.4 0.8
VW −8.9 −2.1 6.8
Under 2 holds for TaW; TaV is between; VW crosses the 5 meV/atom line that was set as the
trigger for a per-source term. Vanadium is the one element here whose pseudopotential is a
different flavour (spnl, with an extra semicore projector) — a named suspect, not a verdict,
on one pair at one strain.
The elemental side cannot be made code-clean with what exists. A QE equation of state for
Ta, V, W (cheap) would give QE's own equilibrium references, but the VASP side has no ideal
pure cell — only rattled ones, or RHEA's corrected cells, which carry the MACE bridge and its
~12 meV/atom floor (E151). So a 2 meV/atom cross-code test of formation energies is out of
reach without VASP access; only EOS-shape comparisons like the one above are. Branch
adopted: the per-source point term in the eCE (E164's mechanism 2), which absorbs exactly a
per-element per-code offset, and QE points enter training only through it — with the VW
6.8 carried as a stated uncertainty on any mixed-source ordering energy involving V.
The full record
This entry is written in 3 separate places in the log, shown here in log order.
EXPERIMENTS.md · lines 10601–10641
E164 — Mixing VASP and Quantum ESPRESSO data: the prior art, and the mechanism it fixes
The operator asked whether combining VASP and Quantum ESPRESSO data has a known common
mechanism. It has, in two parts.
1. Precision across codes is measured, not assumed. The Δ-gauge (Lejaeghere et al.,
Science 351, aad3000, 2016; 15 codes, 71 elemental EOS) and its successor ACWF (Bosoni et
al., Nat. Rev. Phys. 6, 45, 2024; 960 EOS, Z = 1-96, two all-electron references) find that
modern VASP-PAW and Quantum ESPRESSO with SSSP reproduce the same PBE equation of state to
~0.3-1 meV/atom per element; codes with mutual Δ under 1-2 meV/atom are declared
indistinguishable. ACWF also states that total energies must not be compared across
different materials even within one code — their own reuse test was off by up to 1 eV/atom
— because parameter choices are consistent along an EOS, not between systems. So what can
cross codes is a difference under matched settings, and the only legitimate bridge is
each code referenced to its own elements, which is what ece_flywheel.py already refuses to
proceed without (E77). The residual after that referencing is of order Δ, i.e. ~1 meV/atom
when both sides use current potentials at converged cutoffs — not the ~5 the flywheel's
comment assumed.
2. When sources differ by more than Δ, the field does not rerun — it conditions.
MatPES measured PBE against r2SCAN at 107 meV/atom average on identical structures. Three
mechanisms handle that: a learned residual model between sources (arXiv:2607.24327, GNN,
14.3 meV/atom MAE PBE→r2SCAN); multi-fidelity training with a per-source one-hot or
trainable embedding (Chen, Zuo, Ye & Ong, Nat. Comput. Sci. 2021; SevenNet-MF,
arXiv:2409.07947; Oerder, Schmieden & Hamaekers 2025 — the embedding in the readout layer,
a per-source element-wise constant, cut the r2SCAN data needed by 10x); and Materials
Project-style compatibility corrections (fitted per-element offsets on anchors). For a
cluster expansion the embedding is a per-source point term, which the singlets absorb
exactly — a one-line change in the eCE, not a new model.
The mechanism this project adopts (P4, now with names):
both sides PBE; VASP-PAW (RHEA) against QE with a current SSSP/pslibrary set at converged
cutoff and k-grid — checked, not assumed (below);
every source referenced to its own corrected pure elements (done for RHEA in E151's
follow-up; owed for QE — Hf, Ti, Zr have no stable bcc and need the same treatment);
a Δ-check on ~20 shared anchor structures — the nine elemental bcc cells and B2
binaries RHEA already holds in VASP, recomputed in QE — reporting the per-element residual
after referencing. Predicted: under 2 meV/atom; if so QE points join training with no
further correction. Falsified above 5 meV/atom: then a per-source point term is added to
the eCE (the multi-fidelity embedding) rather than any rerun, and the residual is carried
as a stated uncertainty on every mixed-source energy.
EXPERIMENTS.md · lines 10643–10655
E164, the settings on each side, read rather than assumed.
RHEA (VASP) PBE; PAW with semicore (W/V/Mo/Nb/Ti/Zr/Hf `_sv`, Cr/Ta `_pv`); ENCUT 500 eV;
Methfessel-Paxton order 1, σ = 0.1 eV; KSPACING 0.15 (2π/Å); EDIFF 1e-6; no spin
ours (QE) PBE; pslibrary 1.0.0 PAW with semicore (`spn`, V `spnl`); 50 / 400 Ry;
Marzari-Vanderbilt, degauss 0.02 Ry = 0.27 eV; 6x6x6 on 16-atom cells; no spin
Same functional, same potential class with semicore states on both sides — the case the
Δ-gauge rates at ~1 meV/atom. Two things do not match and the anchor runs correct them:
the smearing (MV 0.27 eV against MP1 0.1 eV — a different free-energy functional at a
different width, worth meV on a metal) and the k-spacing. Chromium has no local
pseudopotential, so the Δ-check covers eight elements and the flywheel's refusal on Cr
stands until one is fetched.
EXPERIMENTS.md · lines 10741–10774
E164 result — the Δ-check as designed was invalid; the part of it that is valid gives
0.8 / 3.2 / 6.8 meV/atom.
The full table read a cross-code residual of +69.4 ± 16.3 meV/atom on six binaries. That
number is mine, not the codes': the VASP elemental reference attached to each element anchor
was the raw rattled 54-atom RHEA cell (the only pure-element VASP energy in the database),
while the QE reference was the ideal 2-atom cell I built for the run — a rattle energy of
tens of meV/atom, largest for W and Ta, and the residual pattern sits exactly there (TaW,
VW ≈ +80; TaV ≈ +47). I broke the standing rule on matched references inside the instrument
meant to test it. The "under 2 meV/atom" prediction was not tested by that table, and the
+69 is withdrawn as a measurement of anything but my reference mismatch.
What the same runs do measure cleanly: each binary was computed at two lattice constants in
both codes on identical structures, so the energy difference between its two volumes
cancels every reference — the Δ-gauge's own quantity, over ~12% strain rather than ACWF's ±6%:
pair E(a_hi) − E(a_lo), VASP QE residual (meV/atom)
TaV −63.8 −60.6 3.2
TaW −33.6 −34.4 0.8
VW −8.9 −2.1 6.8
Under 2 holds for TaW; TaV is between; VW crosses the 5 meV/atom line that was set as the
trigger for a per-source term. Vanadium is the one element here whose pseudopotential is a
different flavour (spnl, with an extra semicore projector) — a named suspect, not a verdict,
on one pair at one strain.
The elemental side cannot be made code-clean with what exists. A QE equation of state for
Ta, V, W (cheap) would give QE's own equilibrium references, but the VASP side has no ideal
pure cell — only rattled ones, or RHEA's corrected cells, which carry the MACE bridge and its
~12 meV/atom floor (E151). So a 2 meV/atom cross-code test of formation energies is out of
reach without VASP access; only EOS-shape comparisons like the one above are. Branch
adopted: the per-source point term in the eCE (E164's mechanism 2), which absorbs exactly a
per-element per-code offset, and QE points enter training only through it — with the VW
6.8 carried as a stated uncertainty on any mixed-source ordering energy involving V.
Related entries
E77 — The DFT comparison was subtracting different atoms, and is withdrawn
E151 — Is the corrected label a label, or is it the correction's error?