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 x0 shape:
    • x0::AbstractVector -> Lanczos Factorization
    • x0::AbstractMatrix -> Block Lanczos Factorization
  • Run real and complex workflows (Float32, Float64, ComplexF32, ComplexF64) with the same polfed interface, 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, or NoParallel via MappingConfig (parallel_strategy=...).
  • Enable automatic mapping optimization with MappingConfig (optimize_mapping=true). For Hamiltonians with only a few different offdiagonal values, polfed can 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.