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.
[Unreleased]
Changed
merge_negative_weight!throws anArgumentErrorfor a total weight within rounding noise of zero instead of returning an emptyPolesSum(#286) (f226887)init_systemrequiresH_int::Operator{Float64}andϵ_imp::Float64, which the ground-state calculation needed already (#292) (d123a1e)anderson_matrix, and with itinverseandself_energy_schur, no longer set the BLAS thread count to the Julia thread count (#293) (ecfdf8f)find_chemical_potentialandhybridization_function_localwarn when an integral stops aboven_tolortol(#294) (54e66b2)find_chemical_potentialstarts the bisection from the band range ofH_k + Σ_statinstead of the pole range ofΣ_dynby default (#299) (95b3356)
Removed
tolargument ofPolesSumBlock(locs, amps)andtol_locationkeyword ofgreens_function_local, which threw for two clusters on either side of zero; merge nearby locations withmerge_degenerate_poles!instead (#290) (85f79a3)
Fixed
ndet2counts two holes in the valence sites or two electrons in the conduction sites correctly, which was wrong whenevernfilled ≠ nempty(#280) (866b33a)PolesContinuedFractionBlock(::PolesSumBlock)keeps negative and complex entries of the scale instead of setting them to zero or throwing (#282) (210516c)merge_negative_weight!conserves the first moment whenever the mean lies within the locations, which was lost when an interior split pushed an outermost pole negative (#286) (f226887)self_energy_schurno longer returns a zero self-energy for energies in large units, such as meV (#287) (64e0cd2)block_lanczos_full_ortho, and with itPolesContinuedFraction(::PolesSum)andPolesContinuedFractionBlock(::PolesSumBlock), no longer collapses poles at small energy scales (#288) (66f766d)merge_small_weight!keeps the last pole instead of throwing aBoundsErrorwhen all poles have weight<= tol(#289) (8002e51)grid_interpolate,greens_function_bethe_grid, andgreens_function_bethe_grid_hubbard3accept integer grids instead of throwing anInexactError(#291) (c475393)grid_interpolatethrows anArgumentErrorfor fewer than 2 points instead of aBoundsError(#291) (c475393)PolesContinuedFractionBlock(locs, amps)accepts matrices that are Hermitian up to rounding and copies its input, as the form with a scale does (#295) (2f3be5c)
[0.12.0] - 2026-09-25
Added
quasiparticle_weight_optimum_regularizationto 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)NaturalImpurityOrbitaldescribing the natural impurity orbital basis by its impurity-mirror block and its valence and conduction chains, together with the accessorsn_valenceandn_conduction(#242) (addb83a)hybridization_function_localto 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, andAbstractPolesContinuedFractionare now parameterized by(A, B)(#232) (ec0b81a)- amplitude constructor of
PolesSumBlockaccepts zero amplitudes, consistent with the weight-list constructor (#236) (8385d55) - rename to natural impurity orbitals (#242) (591fbf3)
to_natural_orbitals→natural_impurity_orbitalnatural_orbital_operator→natural_impurity_orbital_operatornatural_orbital_ras_operator→natural_impurity_orbital_ras_operator
natural_impurity_orbitaltakes the hybridization functionΔ::PolesSuminstead of an arrowhead matrix, and returns aNaturalImpurityOrbitalinstead of(H_nat, n_occ). Both operator builders drop theirn_occargument accordingly (#242) (addb83a)- chain hoppings are positive, fixing the gauge LAPACK leaves free (#242) (addb83a)
natural_impurity_orbitalandinit_systemtake the mean-field impurity levelϵ_mfthat defines the reference basis, next to the bare levelϵ_impentering the Hamiltonian (#242) (0fbc17c)natural_impurity_orbitalrequires every pole ofΔto carry weight and throws anArgumentErrorotherwise. (#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_potentialevaluates 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
Debugfrom the public API (#228) (8c953db) - custom LAPACK wrappers
sytrd!andorgtr!(#242) (27f4c30) get_RAS_parametersas parameters can be inferred directly (#242) (79cec2a)greens_function_bethe_equal_weightandhybridization_function_bethe_equal_weight, (#248) (b1278c8)
Fixed
- loss of particle-hole symmetry in
natural_impurity_orbitalfor 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_orbitalthrows 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
ArgumentErrorfromsizeon empty blocks of poles (#236) (105f69b) natural_impurity_orbital_ras_operatorallows zero valence or conduction vector sites, but not both (#245) (e0336a0)spectral_function_loggaussianbroadens a pole at zero with a Gaussian instead of dropping its weight (#249) (4bd2786)find_chemical_potentialandgreens_function_localaccept a real self-energy together with a complex dispersion (#250) (19edfbd)init_systemstops 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_operatoraccepts an empty valence or conduction chain (#255) (2335f63)find_chemical_potentialcounts a level at the Fermi level half (#256) (4bd5028)- Löwdin orthonormalization in
anderson_matrix,PolesContinuedFractionBlock, andblock_lanczos_full_orthostays orthonormal for ill-conditioned, rank-deficient, and zero blocks (#270) (60a9db0) anderson_matrixthrows anArgumentErrorfor rank-deficient amplitudes, such asself_energy_schurat $U = 0$, instead of adding a spurious site or throwingDimensionMismatch(#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)
PolesSumandPolesSumBlockare 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, ortridiagonal_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)
imagKKrealKKgreens_function_partialquasiparticle_weight_gaussianself_energy_IFG_gaussianself_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
rename starting wave function (#133) (709e917)
starting_Wavefunction→Wavefunction_singletstarting_CIWavefunction→CIWavefunction_singlet
logarithmic broadening keeps pole at zero frequency unchanged (#156) (1b72fba)
Removed
Fixed
- addition of
PolesSumBlockdid not create true copies (#129) (85827bc) discretize_similar_weightdid not return sorted poles (#148) (f1ba260)
[0.8.0] - 2025-07-24
Added
weightforPoles(#108) (dd5a5da)- DMFT with poles on a fixed grid (#112) (ecf0680)
Core.ArrayforPoleswith complex amplitudes (#113) (1ba6b19)- moment of function defined on a grid (#114) (44c6495)
PolesSum,PolesSumBlockwhich will replacePoles(#116) (0570d85) (#117) (4445404)PolesContinuedFraction(#118) (7dea995)PolesContinuedFractionBlock(#119) (edd8060)- conversion between different pole representations (#123) (f15b907)
Changed
- rename
η_gaussiantoδ_gaussian(#110) (c8911ae) grid_logneeds positive initial value (#111) (ebef3fc)δ_gaussianworks on scalar (#115) (eed69b5)- old
Polesis split intoPolesSum,PolesSumBlock(#126) (87b2fb5)
Fixed
- type-stability when taking square root of matrix (#120) (969d322)
- type-stability for reading in Number (#121) (1831991)
Removed
[0.7.0] - 2025-06-04
Added
- merge equal poles (#54) (66b6dc2)
- logarithmic grid and log-gaussian broadening (#55) (f3a09b0)
- Hubbard-III approximation (#64) (e5dbed7)
- warn if wrong spectral weight exists (#66) (25da3b0)
- merge poles with small weight to neighbors (#72) (7ab44a7)
- getters for
Poles(#81) (add4ec6) - weight(s) of each pole (#82) (b1f1780)
- moments of
Poles(#83) (1917ce2) - similar weight discretization of
Poles(#86) (0987324) Base.issortedforPoles(#89) (58cd09a)Base.alluniqueforPoles(#90) (b3d8e52)- moving poles with negative location to zero (#91) (5dd9f13)
- flip locations of
Poles(#95) (5717654) (#97) (b560d33) - shift locations of
Poles(#96) (5b85142) (#97) (0b0ec8f) correlator_plus(),correlator_minus()(#98) (3a78427)- general block correlator (#99) (4f20faa)
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
Polesdoes not enforce original grid (#84) (b976fcd) - calculation of new hybridization function does not enforce original grid (#85) (bba8809)
- merge poles that are
tolapart (#88) (ad832db) - merging negative weight function private (#93) (5491f81)
- remove
update_hybridization_functionfor grid (#102) (dc23810) - stabilize Lanczos algorithm (#103) (607426d)
Removed
- DMFT step with Lanczos (#69) (34633dd)
- DMFT step with block Lanczos (#105) (2b7710d)
solve_impurity(#106) (c6c210f)
Fixed
- errors in DMFT self-consistency loop (#57) (b10573a)
- loss of particle-hole symmetry in natural impurity orbitals (#58) (#59) (37ad203)
lengthon 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
Polerepresentation (#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_IFGself_energy_gauss→self_energy_IFG_gaussupdate_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)