Rydberg Atomic Units in Plane-Wave DFT
All equations in KRONOS are written in Rydberg atomic units — the same convention used by Quantum ESPRESSO and most plane-wave codes in the pseudopotential tradition. This page defines both flavors of atomic units, explains where the factor-of-2 difference comes from, lists every conversion you will need, and shows the exact operator forms that appear in the code. If you have ever debugged a kinetic energy that was exactly half what it should be, this page is for you.
Atomic units: the natural scale
Ordinary SI units are inconvenient for atomic-scale calculations. Energies of interest are ~10⁻¹⁸ J; electron–electron distances are ~10⁻¹⁰ m. Working in SI forces every equation to carry large powers of 10, and it hides the physics behind conversion constants.
Atomic units remove this clutter by choosing the four fundamental constants of one-electron quantum mechanics as the unit basis:
| Constant | Symbol | Role |
|---|---|---|
| Electron mass | mass unit | |
| Elementary charge | charge unit | |
| Reduced Planck constant | action unit | |
| Bohr radius | length unit |
In any atomic unit system these constants are each set to a small integer (1 or 2). The choice of which integer determines which flavor of atomic units you get.
Hartree vs Rydberg: the factor of two
Two conventions dominate the DFT literature. They share the same length unit (the bohr) but differ in the energy scale.
Hartree atomic units (used by VASP, CP2K, Gaussian) set:
With these definitions the Schrödinger kinetic operator for a free particle becomes:
and the ground-state energy of hydrogen is .
Rydberg atomic units (used by Quantum ESPRESSO, KRONOS, many pseudopotential codes) set:
Halving and doubling leaves the Bohr radius unchanged — so lengths are identical in both systems. But the energy unit doubles:
which equals Hartree. The kinetic operator becomes:
(the absorbs the factor of 2 that would otherwise sit in the denominator).
Summary of the factor-of-two origin: Rydberg units halve the electron mass. This removes the from the kinetic operator and doubles the Hartree potential prefactor because in Rydberg units. Every difference between Hartree and Rydberg operator forms traces back to these two substitutions.
Conversion table
| Quantity | Rydberg AU | Hartree AU | SI / conventional |
|---|---|---|---|
| Energy | |||
| Energy | |||
| Length | |||
| Force | |||
| Pressure | |||
| Velocity (time unit: ) | — | ||
The energy conversion is the single most important number to memorize. Force and pressure conversions follow immediately because the length unit is shared.
Why KRONOS uses Rydberg
KRONOS targets compatibility with Quantum ESPRESSO (QE) benchmarks as its primary validation reference. QE, PWscf, and most pseudopotential codes in the norm-conserving and PAW traditions were written in Rydberg units because the earliest plane-wave codes (notably those of Arias, Payne, and Gonze) followed the convention of Hamann, Schlüter, and Chiang (1979) for norm-conserving pseudopotentials, which uses Rydberg units.
Concretely, UPF pseudopotential files (the universal format used by QE and KRONOS) store local potentials in Rydberg units. Reading a UPF file and immediately comparing energies against a Hartree-unit code requires multiplying by 2. KRONOS avoids this entire class of off-by-two bugs by staying in Rydberg throughout:
- UPF files read in → no conversion needed
- QE reference energies → direct comparison, no factor of 2
- All KRONOS test baselines are in Ry, matching QE output directly
If you are porting formulas from a Hartree-unit paper or code, multiply every energy by and every potential (energy/charge) by before using it in KRONOS.
Operator forms in Rydberg units
The following table shows the three operators where Hartree and Rydberg units differ
most consequentially. These are the forms implemented in src/hamiltonian/ and
src/potential/.
| Operator | Hartree atomic units | Rydberg atomic units |
|---|---|---|
| Kinetic (G-space) | ||
| Hartree potential (G-space) | ||
| Bare Coulomb |
Kinetic energy
In reciprocal space (plane-wave basis) the kinetic operator is diagonal. For a wavefunction expanded as :
There is no prefactor. The plane-wave cutoff is therefore ecutwfc in Ry,
defined as — not
.
Hartree potential
The Poisson equation in G-space, with in Rydberg units:
The component (average electrostatic) is set to zero for charge-neutral periodic systems (the uniform background cancels it).
Local pseudopotential Fourier transform
The local part of the pseudopotential has a Coulomb tail as (Rydberg convention). In G-space this tail contributes an analytic term:
where is the unit cell volume. The short-range part is the smooth remainder after subtracting the Coulomb tail in real space.
Stress and pressure
The stress tensor in KRONOS is computed in units of . To convert to GPa:
The conversion factor follows from:
Pressure is reported as the negative one-third trace of the stress:
(positive pressure = compression, following the geophysics/thermodynamics sign convention used by QE and most DFT codes).
Common pitfalls
Reading Hartree-unit output and forgetting the factor of 2. If a VASP or CP2K calculation reports a total energy of , the equivalent KRONOS value is . The numbers look wildly different even though they represent the same physical energy. Always check the unit label in output files.
ecutwfc in Hartree vs Rydberg. The cutoff is
equivalent to . VASP ENCUT is in eV (). Getting this wrong produces a basis set that is either half the size
or twice the size intended, with order-of-magnitude errors in convergence.
Applying the 1/2 kinetic prefactor from a Hartree paper. If you copy the kinetic
energy formula from a textbook written in Hartree units and add a , your kinetic
energy will be half the correct value. KRONOS has caught this class of bug repeatedly —
see the Rydberg call-out at the top of docs/physics_notes.md.
ecutrho must be at least 4× ecutwfc (norm-conserving) or 12× (PAW). These factors are the same in both unit systems because they relate two Rydberg cutoffs. No unit conversion is needed here, but they are easy to violate when translating input files from Hartree-unit codes that express the charge density cutoff differently.
Force sum rule in mixed-unit codes. If forces from one layer of a code are
accumulated in Ry/bohr but a second layer computes them in Ha/bohr, the force sum
(Newton's third law self-consistency) will appear violated by a factor of 2. The
KRONOS force validation tests (test_forces) catch this by comparing to finite
differences.
References
- Martin, R. M. Electronic Structure: Basic Theory and Practical Methods, Cambridge University Press, 2004 — Appendix on units
- Quantum ESPRESSO documentation — Units conventions
- NIST CODATA recommended values (2018): physics.nist.gov/cuu/Constants
- Hamann, D. R., Schlüter, M. & Chiang, C. (1979). Norm-Conserving Pseudopotentials, Phys. Rev. Lett. 43, 1494 — original NCP paper establishing the Rydberg convention