Companion code for:
Kohn–Sham Hamiltonian from Effective Field Theory: Quasiparticle Band Narrowing from Frozen Core Dynamics Xiansheng Cai, Han Wang, Kun Chen arXiv:2604.25199
This repository contains the computational pipeline for computing the
frozen-core quasiparticle renormalization factor
The pipeline has two stages:
- Stage 1 (
run_ks.jl): Kohn–Sham DFT calculation (SCF + bands) using DFTK.jl - Stage 2 (
freq_correction.jl): Post-SCF quasiparticle correction using the EFT form factors and excitation energies
- Julia ≥ 1.10
- Packages: DFTK, Interpolations, SpecialFunctions, Unitful, UnitfulAtomic, JLD2, Plots, PseudoPotentialData, PyPlot
- Python with
matplotlibinstalled (used by PyPlot for figure generation)
Install dependencies:
using Pkg
Pkg.activate(".")
Pkg.instantiate() # resolves from Project.tomlIf CUDA artifact download fails (no GPU needed), create LocalPreferences.toml:
[CUDA_Runtime_jll]
local = "true"
version = "none"From the repository root:
# Run KS-DFT for sodium
julia --project=. sodium/run_ks.jl
# Compute QP correction for sodium
julia --project=. sodium/freq_correction.jl
# Generate all figures
bash generate_figures.sh├── Project.toml Julia project (run Pkg.instantiate())
├── generate_figures.sh Reproduce all figures
├── lithium/ Li (Z=3, 1s² core, analytic)
│ ├── run_ks.jl Stage 1: GTH LDA
│ ├── run_ks_eft.jl Stage 1: EFT nonlocal PSP
│ ├── freq_correction_new.jl Stage 2: coherent QP
│ ├── psp_eft_li.jl EFT potential functions
│ └── psp_eft_nonlocal.jl Nonlocal KB PSP
├── sodium/ Na (Z=11, [Ne] core)
│ ├── atomic_hf.jl Radial atomic DFT-LDA solver (shared)
│ ├── run_ks.jl Stage 1
│ └── freq_correction.jl Stage 2
├── potassium/ K (Z=19, [Ar] core)
├── calcium/ Ca (Z=20, [Ar] core)
├── magnesium/ Mg (Z=12, [Ne] core)
├── aluminum/ Al (Z=13, [Ne] core)
├── silicon/ Si (Z=14, [Ne] core)
├── lih/ LiH (multi-site test)
└── plotting/ Figure generation scripts
The quasiparticle energy is:
where the frozen-core factor is:
with
MIT