Polfed.jl Overview
Polfed.jl implements Polynomial Filtering Exact Diagonalization (POLFED): polynomial spectral transformation + Lanczos-type factorization to extract eigenpairs around user-chosen spectral regions.
The documentation section is the canonical reference for solver entry points. POLFED solves
\[H |\psi\rangle = E |\psi\rangle\]
using polynomial filtering and Krylov factorization.
Features and Capabilities
- Use both factorization modes through
x0shape:x0::AbstractVector-> Lanczos Factorizationx0::AbstractMatrix-> Block Lanczos Factorization
- Run real and complex workflows (
Float32,Float64,ComplexF32,ComplexF64) with the samepolfedinterface, including CUDA-array workflows. - Target arbitrary spectral regions with flexible target conditions:
:maxdos,:middle,(:offset, frac),(:unrescaled, E),(:rescaled, e), or plain numeric target. See Choosing Target. - Use built-in mapping parallelization with
MulColsParallel,TwoLevelParallel, orNoParallelviaMappingConfig(parallel_strategy=...). - Enable automatic mapping optimization with
MappingConfig(optimize_mapping=true). For Hamiltonians with only a few different offdiagonal values,polfedcan separate diagonal/offdiagonal parts and significantly reduce memory traffic. See Optimized Mapping and Reducing Memory Access. - Provide your own optimized mapping
f!(Y, X)for model-specific speedups. - Hamiltonian builders live under
Polfed.Models; see Quantum Sun (QSun), XXZ, and J1-J2. - Inspect performance/convergence diagnostics with
produce_report,display_report, and Reports, Logging, and Defaults.
Simplest Usage Example
using Polfed
using Polfed.Models: qsun_hamiltonian
using LinearAlgebra
L_loc = 12
L_grain = 2
g0 = 1.0
α = 0.5
mat = qsun_hamiltonian(L_loc, L_grain, g0, α; use_sparse=true)
x0 = rand(size(mat, 1)); x0 ./= norm(x0)
howmany = 100
target = 0.0
vals, vecs = polfed(mat, x0, howmany, target)Citation
If you use Polfed.jl in your work, please cite:
@misc{Pintar26polfed,
title = {Computing eigenpairs of quantum many-body systems with Polfed.jl},
author = {Rok Pintar and Konrad Pawlik and Rafał Świętek and Miroslav Hopjan and Jan Šuntajs and Jakub Zakrzewski and Piotr Sierant and Lev Vidmar},
year = {2026},
eprint = {2605.10191},
archivePrefix = {arXiv},
primaryClass = {cond-mat.stat-mech},
url = {https://arxiv.org/abs/2605.10191},
}This page was generated using Literate.jl.