Skip to main content

Unit Conventions (Rydberg Atomic Units)

KRONOS uses Rydberg atomic units throughout the codebase. This is the same convention used by Quantum ESPRESSO and differs from Hartree atomic units — used by VASP and CP2K — by factors of 2 in the kinetic energy, Hartree potential, and Coulomb tail. Mixing up conventions is the most common source of silent numerical errors when porting formulas from papers; this page lists every critical formula with its Rydberg form. See Key Algorithms for how these formulas appear in the solver pseudocode.

KRONOS uses Rydberg atomic units throughout. This differs from Hartree atomic units by factors of 2 in key places.

QuantityRydberg AUHartree AUConversion
Energy unit1 Ry = 13.6057 eV1 Ha = 27.2114 eV1 Ha = 2 Ry
Length unit1 bohr = 0.529177 Asame--
Kinetic energyT = |k+G|^2T = |k+G|^2 / 2factor of 2
Hartree potentialV_H(G) = 8pi n(G)/|G|^2V_H(G) = 4pi n(G)/|G|^2factor of 2
Coulomb potentialV = -2Z/rV = -Z/rfactor of 2
Force unitRy/bohrHa/bohrfactor of 2

Input lattice vectors are specified in Angstrom and converted to bohr internally. Atom positions are in fractional coordinates (dimensionless, range [0,1)). The wavefunction cutoff ecutwfc and density cutoff ecutrho are in Ry.

Critical Rydberg-Unit Formulas

Kinetic: T|psi>_G = |k+G|^2 * psi_G (NOT |k+G|^2/2)

Hartree: V_H(G) = 8*pi * n(G) / |G|^2 (NOT 4*pi)

Coulomb tail: V_loc(r) --> -2*Z/r as r --> inf (NOT -Z/r)

Local PP FT: V_loc(G) = V_loc_short(G) + 8*pi*Z / (Omega * |G|^2)
where the analytic term subtracts the -2Z/r Coulomb tail

Total energy: E_tot = E_band - E_H + E_xc - int(V_xc * n) + E_ewald + E_smearing
(double-counting correction removes Hartree and XC overcounting)

Type System

TypeDefinitionUsage
real_tdoubleScalar quantities
complex_tstd::complex<double>Wavefunction coefficients (always float64)
Vec3std::array<double, 3>Positions, k-vectors, G-vectors, forces
Mat3std::array<std::array<double,3>,3>Lattice, reciprocal lattice
CVecstd::vector<complex_t>G-space wavefunctions, potentials
RVecstd::vector<double>Real-space densities, potentials