Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.12.0] - 2026-09-25

Added

  • quasiparticle_weight_optimum_regularization to find the regularization parameter λ at the first plateau of $Z(\lambda)$ on a logarithmic axis, with a prominence filter to discard shallow wiggles (#240) (05c4c0d)
  • NaturalImpurityOrbital describing the natural impurity orbital basis by its impurity-mirror block and its valence and conduction chains, together with the accessors n_valence and n_conduction (#242) (addb83a)
  • hybridization_function_local to obtain the mean-field impurity level and the hybridization function of the correlated orbitals on a grid from the lattice Hamiltonian and self-energy, evaluating the correlated block in the upper half-plane instead of diagonalizing the block arrowhead matrix at every k-point (#266) (277c1db)

Changed

  • AbstractPoles, AbstractPolesSum, and AbstractPolesContinuedFraction are now parameterized by (A, B) (#232) (ec0b81a)
  • amplitude constructor of PolesSumBlock accepts zero amplitudes, consistent with the weight-list constructor (#236) (8385d55)
  • rename to natural impurity orbitals (#242) (591fbf3)
    • to_natural_orbitals → natural_impurity_orbital
    • natural_orbital_operator → natural_impurity_orbital_operator
    • natural_orbital_ras_operator → natural_impurity_orbital_ras_operator
  • natural_impurity_orbital takes the hybridization function Δ::PolesSum instead of an arrowhead matrix, and returns a NaturalImpurityOrbital instead of (H_nat, n_occ). Both operator builders drop their n_occ argument accordingly (#242) (addb83a)
  • chain hoppings are positive, fixing the gauge LAPACK leaves free (#242) (addb83a)
  • natural_impurity_orbital and init_system take the mean-field impurity level ϵ_mf that defines the reference basis, next to the bare level ϵ_imp entering the Hamiltonian (#242) (0fbc17c)
  • natural_impurity_orbital requires every pole of Δ to carry weight and throws an ArgumentError otherwise. (#242) (675e34f)
  • ground_state! on an already-shifted Hamiltonian returns the remaining correction, not the running total (#247) (1c6a88a)
  • self_energy_IFG → self_energy_schur (#259) (61d7bad)
  • find_chemical_potential evaluates the filling as a contour integral along the imaginary axis and updates the resolvent with the Woodbury identity (#265) (17ac045)

Removed

  • discretize_similar_weight, discretize_to_grid (#225) (e043ebb)
  • submodule Debug from the public API (#228) (8c953db)
  • custom LAPACK wrappers sytrd! and orgtr! (#242) (27f4c30)
  • get_RAS_parameters as parameters can be inferred directly (#242) (79cec2a)
  • greens_function_bethe_equal_weight and hybridization_function_bethe_equal_weight, (#248) (b1278c8)

Fixed

  • loss of particle-hole symmetry in natural_impurity_orbital for a symmetric bath with an odd number of sites, where the level at the Fermi energy used to be assigned to the conduction chain as a whole. Its weight is now shared evenly between both chains (#242) (addb83a)
  • natural_impurity_orbital throws on an empty valence or conduction sector instead of fabricating a site (#242) (addb83a)
  • correct eigenvectors and their adjoint in the self-energy from Schur complement (#235) (c2ea559)
  • clear ArgumentError from size on empty blocks of poles (#236) (105f69b)
  • natural_impurity_orbital_ras_operator allows zero valence or conduction vector sites, but not both (#245) (e0336a0)
  • spectral_function_loggaussian broadens a pole at zero with a Gaussian instead of dropping its weight (#249) (4bd2786)
  • find_chemical_potential and greens_function_local accept a real self-energy together with a complex dispersion (#250) (19edfbd)
  • init_system stops after 100 restarts instead of looping forever when the requested variance is unreachable (#253) (a9149aa)
  • greens_function_bethe_analytic(-0.0) returns the retarded branch (#254) (022c2f1)
  • natural_impurity_orbital_ras_operator accepts an empty valence or conduction chain (#255) (2335f63)
  • find_chemical_potential counts a level at the Fermi level half (#256) (4bd5028)
  • Löwdin orthonormalization in anderson_matrix, PolesContinuedFractionBlock, and block_lanczos_full_ortho stays orthonormal for ill-conditioned, rank-deficient, and zero blocks (#270) (60a9db0)
  • anderson_matrix throws an ArgumentError for rank-deficient amplitudes, such as self_energy_schur at $U = 0$, instead of adding a spurious site or throwing DimensionMismatch (#270) (ba91343)

[0.11.0] - 2026-08-14

Added

  • moments of complex function (#164) (da721d2)
  • transformation from sum of poles to Anderson form (#166) (1729012)
  • generalize self-energy to any 2n×2n block sum of poles (#167) (22f40e7)
  • get location of poles directly (#181) (78be1d5)
  • iterate through AbstractPolesSum (#182) (12f5719)
  • calculate filling for AbstractPolesSum (#183) (68c6489)
  • shift spectrum of AbstractPolesSum (#186) (d191feb)
  • calculate trace of AbstractPolesSum (#187) (5cf51be)
  • calculate thin rectangular amplitude (#195) (bfc7348)
  • local lattice Greens function in resolvent formalism (#201) (5b8c250)
  • enforce canonical representation for AbstractPolesSum (strictly increasing with no duplicates) (#203) (3ea3db4)
  • evaluate a pole representation at an arbitrary complex frequency z (#209) (273a6b0)

Changed

  • add regularization parameter for quasiparticle weight (#169) (8c3a40b)
  • PolesSum and PolesSumBlock are always sorted by increasing pole locations. Degenerate poles are automatically merged. (#175) (4f876e1)
  • explicitly specify matrix representation for given pole representation (#196) (80d9ae7) New methods are anderson_matrix, arrowhead_matrix, or tridiagonal_matrix.
  • Base.inv(::PolesSum) → inverse (#215) (7dbfc91)
  • natural_orbital_ci_operator → natural_orbital_ras_operator (#216) (d515549)

Removed

  • module ED (#198) (86ed14b)
  • finite broadening methods (#207) (f4b5a8d)
    • imagKK
    • realKK
    • greens_function_partial
    • quasiparticle_weight_gaussian
    • self_energy_IFG_gaussian
    • self_energy_IFG_lorentzian
    • δ_gaussian
  • equal_weight_discretization (#217) (0d6582e)

Fixed

  • lognormal broadening on a grid of type AbstractVector (#163) (2cb92dd)
  • allow zero length for AbstractPoles (#174) (7167664)

[0.10.0] - 2025-12-11

Changed

[0.9.0] - 2025-12-04

Added

  • calculate self-energy using Schur complement (#131) (caeee45)
  • calculate quasiparticle weight using quasiparticle_weight (#132) (80f7666)
  • add pole at location 0 with weight 0 (#137) (c7b6cd8)
  • calculate quasiparticle weight with Gaussian broadening using quasiparticle_weight_gaussian (#145) (ef631cd)
  • calculate quasiparticle weight on a grid using quasiparticle_weight (#149) (ba2a2eb)
  • merge negative locations for block pole sum (#150) (133e0ae)
  • put block sum of poles on given grid (#151) (49db03f)
  • flip spectrum for block sum of poles (#152) (13be8e3)

Changed

  • merge_small_poles! → merge_small_weight! (#130) (35dd38d)

  • rename starting wave function (#133) (709e917)

    • starting_Wavefunction → Wavefunction_singlet
    • starting_CIWavefunction → CIWavefunction_singlet
  • ground_state → ground_state! (#134) (a34264e)

  • require Julia >=1.12 (#153) (494ffac)

  • logarithmic broadening keeps pole at zero frequency unchanged (#156) (1b72fba)

Removed

Fixed

  • addition of PolesSumBlock did not create true copies (#129) (85827bc)
  • discretize_similar_weight did not return sorted poles (#148) (f1ba260)

[0.8.0] - 2025-07-24

Added

Changed

Fixed

  • type-stability when taking square root of matrix (#120) (969d322)
  • type-stability for reading in Number (#121) (1831991)

Removed

  • struct Poles is split into PolesSum, PolesSumBlock (#127) (04189d7)

[0.7.0] - 2025-06-04

Added

Changed

  • rename Pole → Poles, self_energy_pole → self_energy_poles (#76) (ee98b96)
  • rename move_negative_weight_to_neighbors! → merge_negative_weight! (#77) (5d88c89)
  • rename merge_equal_poles! → merge_degenerate_poles! (#79) (c5d2b27)
  • remove to_grid_sqr! (#80) (cc71c12)
  • calculation of self-energy using Poles does not enforce original grid (#84) (b976fcd)
  • calculation of new hybridization function does not enforce original grid (#85) (bba8809)
  • merge poles that are tol apart (#88) (ad832db)
  • merging negative weight function private (#93) (5491f81)
  • remove update_hybridization_function for grid (#102) (dc23810)
  • stabilize Lanczos algorithm (#103) (607426d)

Removed

Fixed

  • errors in DMFT self-consistency loop (#57) (b10573a)
  • loss of particle-hole symmetry in natural impurity orbitals (#58) (#59) (37ad203)
  • length on Pole containing vector and matrix (#67) (9a6dc41)

[0.6.0] - 2025-04-16

Added

  • Green's function and hybridization function on a given grid (#46) (c30556d)
  • subtraction of Pole (#47) (8ba021b)
  • inversion of Pole (#48) (c34ff69)
  • update hybridization function in pole representation (#50) (c0725f5)
  • calculate DMFT self-consistency in pure Pole representation (#52) (18c783b)

Changed

  • unify function names of Green's function and hybridization function (#41) (d095219) (#45) (d4a4bf6)
  • rename functions (#49) (6fcefff )
    • self_energy → self_energy_IFG
    • self_energy_gauss → self_energy_IFG_gauss
    • update_weiss_field → update_hybridization_function

Fixed

  • block Lanczos must return Hermitian matrices (#42) (d0b066a)
  • correlator FR in improved self-energy (#51) (f374b44)

[0.5.1] - 2025-04-02

Fixed

[0.5.0] - 2025-04-01

Added

  • calculate Kondo temperature (#35) (b1fe8ff)
  • local Green's function from dispersion relation and optional self-energy (#36) (925c512)
  • partial Green's function (#37) (1d05c37)
  • find chemical potential for desired filling (#38) (4547335)
  • non-interacting spectral function with Gaussian broadening (#39) (527b4ab)

Changed

  • rename Greensfunction to Pole to reflect that it is more generic (#27) (5631a33)
  • unify IO under read_hdf5, write_hdf5 (#29)
  • update Fermions dependency to v0.12.0 (#30)
  • enforce Pole pole locations to be on the real axis (#34) (d094356)
  • create module Debug and clean up namespace (#34) (c92e6a8)