All equations below use Rydberg atomic units (ℏ=1, me=1/2, e2=2, a0=1), matching the KRONOS source code. Key consequences: kinetic prefactor is 1 (not 1/2), Hartree prefactor is 8π (not 4π), bare Coulomb potential is −2Z/r (not −Z/r).
Kohn and Sham (1965) reformulated the problem as a set of single-particle equations whose orbitals ψnk reproduce the exact density:
n(r)=∑nkfnk∣ψnk(r)∣2
where fnk are occupation numbers (including k-point weight and spin degeneracy).
The Kohn-Sham equation in Rydberg units reads:
[−∇2+Veff(r)]ψnk(r)=εnkψnk(r)
where the effective potential is:
Veff(r)=VH(r)+Vxc(r)+Vloc(r)
plus the nonlocal pseudopotential operator V^NL acting in reciprocal space. Since Veff depends on n, which depends on the orbitals, which depend on Veff, the equations must be solved self-consistently (the SCF loop).
where Eband=∑nkfnkεnk is the sum of eigenvalues. The double-counting corrections (−EH and −∫Vxcn) remove terms counted twice in Eband. The Ewald energy EEwald is the classical ion-ion interaction.
In code (scf.cpp), the band energy decomposition is:
Eband=Ekin+2EH+Eloc+ENL+∫Vxcn
from which the kinetic energy is extracted as:
Ekin=Eband−2EH−Eloc−ENL−∫Vxcn
For metallic systems with smearing, the free energy includes an entropy term −TS that regularizes partial occupations near the Fermi level.
The basis is truncated by the energy cutoff ecutwfc (in Ry):
∣k+G∣2≤Ecut
Note the absence of the factor 1/2 --- in Rydberg units the kinetic energy operator is −∇2, so TG=∣k+G∣2.
KRONOS uses a shared G-vector basis expanded to cover all k-points: the basis includes every G satisfying ∣k+G∣2≤Ecut for any k-point in the irreducible Brillouin zone. When applying H∣ψ⟩ at a specific k-point, G-vectors outside the per-k cutoff are masked to zero and assigned a high energy wall (104 Ry) so the Davidson solver drives their amplitudes to zero.
Plane waves make two operations diagonal in complementary spaces:
Operation
Diagonal in
Cost
Kinetic energy T∥ψ⟩
G-space: $
\mathbf{k}+\mathbf{G}
Local potential V∥ψ⟩
Real space: V(r)ψ(r)
O(Ngrid)
Switching between representations costs O(NlogN) via FFT. The density cutoff grid satisfies ecutrho≥4×ecutwfc for norm-conserving PPs, ensuring that the product V(r)ψ(r) is alias-free.
KRONOS generates Monkhorst-Pack k-point grids. The k-point formula is:
ki=2Ni2ni−Ni−1+2Nisi
where ni=1,…,Ni, and si∈{0,1} is the grid shift. Time-reversal symmetry (k↔−k) and, when spglib is available, full space-group symmetry reduce the grid to the irreducible Brillouin zone.
Core electrons create rapid wavefunction oscillations near nuclei that demand enormous plane-wave cutoffs. Pseudopotentials replace the true ionic potential plus core electrons with a smooth effective potential that reproduces the correct valence physics outside a cutoff radius rc.
The semilocal pseudopotential VPS=Vloc(r)+∑l∣l⟩δVl⟨l∣ is separated into local and nonlocal parts. The nonlocal part is written in the efficient Kleinman-Bylander separable form:
V^NL=∑a,i,j∣βia⟩Dija⟨βja∣
where βia are projector functions centered on atom a, and Dija is the coupling matrix (block-diagonal in angular momentum quantum numbers l,m). Each UPF beta projector with angular momentum l generates 2l+1 expanded projectors indexed by m=−l,…,+l.
Note: UPF files store rβ(r), so the integrand is r⋅βUPF, not r2⋅β. The radial integrals are evaluated by Simpson's rule on the UPF radial mesh, and spherical Bessel functions jl are computed analytically for l≤3 with upward recurrence for l≥4.
The short-range part Vshort(r)→0 rapidly and its Fourier transform converges with a modest radial mesh. The analytic Fourier transform of the long-range part is:
Vlong(q)=−q28πZve−q2σ2/4
At q=0 the 1/q2 divergence cancels with the Hartree G=0 term (both set to zero) and the Ewald charged-cell correction. The finite remainder kept is +2πZvσ2. KRONOS uses σ=1 bohr. The full form factor is:
In LDA the XC energy depends only on the local density:
ExcLDA[n]=∫n(r)εxc(n(r))dr
The XC potential entering the Kohn-Sham equations is the functional derivative:
Vxc(r)=δnδExc=εxc(n)+ndndεxc
Exchange (Slater). In Rydberg units, the exchange energy density per electron is:
εx(n)=−2(4π3)1/3n1/3=−23(π3)1/3n1/3
with potential Vx=(4/3)εx. The factor of 2 relative to Hartree units comes from the Ry conversion.
Correlation (Perdew-Zunger 1981). The Ceperley-Alder quantum Monte Carlo correlation energy for the homogeneous electron gas is parametrized in terms of rs=(3/4πn)1/3:
For rs≥1: εc=γ/(1+β1rs+β2rs), with Rydberg parameters γ=−0.2846, β1=1.0529, β2=0.3334.
For rs<1: εc=Alnrs+B+Crslnrs+Drs, with Rydberg parameters A=0.0622, B=−0.096, C=0.004, D=−0.0232.
The correlation potential is Vc=εc−(rs/3)dεc/drs.
When libxc is available, KRONOS delegates to it (with a factor of 2 for Ry conversion); otherwise it uses the built-in implementation above.
GGA functionals also depend on the density gradient:
ExcGGA[n]=∫n(r)εxc(n,∣∇n∣2)dr
The GGA potential has an additional correction beyond the LDA-like ∂εxc/∂n term:
VxcGGA=∂n∂(nεxc)−2∇⋅[∂(∇n)∂(nεxc)]
In KRONOS, the gradient ∇n is computed in G-space (iGn(G)) for each Cartesian direction, inverse-FFTed to real space, and the scalar σ=∣∇n∣2 is formed pointwise. The divergence correction −2∇⋅(vσ∇n) is computed by forming hd(r)=vσ(r)⋅(∂n/∂xd)(r), FFTing to G-space, multiplying by iGd, and summing the three Cartesian components.
The Hartree (electron-electron Coulomb) potential in Rydberg units is diagonal in reciprocal space:
VH(G)=∣G∣28πn(G)
The prefactor 8π=2×4π accounts for the Rydberg unit convention. The G=0 component is set to zero; this arbitrary constant cancels with the ionic G=0 terms and the Ewald correction.
The Hartree energy is:
EH=2Ω∑GVH∗(G)n(G)
In the KRONOS FFT convention, both VH and n carry a factor of Ngrid relative to the physics convention, so the energy formula includes a normalization by Ngrid2.
For a complete (converged) plane-wave basis, Pulay forces vanish exactly because the basis does not depend on atomic positions. This is a major advantage over localized basis sets.
When spglib is available, KRONOS symmetrizes the computed forces under the full crystal point group. For each symmetry operation (R,t):
Fisym=Nops1∑opsRcartFjraw
where atom j maps to atom i under the operation. This enforces the symmetry that is broken by using IBZ k-points with different active plane-wave counts.
KRONOS uses the block Davidson iterative diagonalization to find the lowest Nbands eigenvalues of H∣ψ⟩=ε∣ψ⟩ without forming or storing H explicitly.
Algorithm outline for each k-point:
Start with Nbands trial vectors {∣vi⟩}
Apply H to all trial vectors: ∣Hvi⟩
Build the projected (Rayleigh-Ritz) matrix Hijsub=⟨vi∣H∣vj⟩ and diagonalize
Compute residuals ∣ri⟩=(H−θi)∣ui⟩ where θi,∣ui⟩ are Ritz values/vectors
Precondition: ∣δi⟩=(TG−θi)−1∣ri⟩ using the kinetic-energy diagonal
Expand the subspace: add {∣δi⟩} to the trial set (Gram-Schmidt orthogonalize)
Repeat from step 2 until ∥ri∥<tol for all wanted states
The subspace dimension is capped at 3×Nbands; when exceeded, the basis is collapsed back to the current Ritz vectors. If the Davidson solver diverges (residual >103), KRONOS auto-switches to LOBPCG for that k-point.
The SCF loop mixes input and output densities to damp charge sloshing. KRONOS uses Pulay (DIIS) mixing with a history of M=8 steps and a linear mixing parameter α=0.2.
Given input densities {niin} and residuals Ri=niout−niin, DIIS finds coefficients {ci} that minimize ∥∑iciRi∥2 subject to ∑ici=1. This involves solving the linear system:
For metals, a Kerker preconditioner suppresses long-wavelength charge sloshing by filtering the residual in G-space:
Rprecond(G)=R(G)⋅∣G∣2+q02∣G∣2
This damps the G→0 components that cause the metallic screening instability. KRONOS uses q0=1.5 bohr−1 and activates Kerker preconditioning automatically when Gaussian or Fermi-Dirac smearing is enabled.
Energy convergence: ∣E(i)−E(i−1)∣<εE (primary criterion, default 10−6 Ry)
Density convergence: ∥Δn∥G/Ne<εn (secondary criterion, G-space L2 norm)
Energy convergence is the more physically meaningful measure: it is variational and directly determines the accuracy of total energies and forces. The density residual is computed in G-space (PW components only) to avoid aliasing artifacts from the real-space grid.
The SCF loop aborts with a diagnostic if energy oscillates by more than 1 Ry between consecutive steps after step 15 (indicating a fundamental problem such as incorrect pseudopotential or basis).
The initial electron density is constructed from the superposition of atomic charge densities read from UPF files:
n0(G)=Ω1∑sρsatom(∣G∣)Ss(G)
where ρsatom(q)=∫ρsUPF(r)sinc(qr)dr is the radial Fourier transform of the UPF atomic density (which stores 4πr2ρ(r)). If no atomic densities are available, a uniform density n0=Ne/Ω is used.