Repository navigation
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Julpe
force-pushed
the
JacobianStabilization
branch
15 times, most recently
from
September 15, 2026 09:26
12448db to
3a29941
Compare
Julpe
marked this pull request as ready for review
September 15, 2026 10:21
Julpe
force-pushed
the
JacobianStabilization
branch
4 times, most recently
from
September 16, 2026 09:26
9f166a7 to
66d076d
Compare
Julpe
marked this pull request as draft
September 17, 2026 18:21
Julpe
force-pushed
the
JacobianStabilization
branch
6 times, most recently
from
September 25, 2026 15:31
4f0c5ad to
cb29f04
Compare
Julpe
force-pushed
the
JacobianStabilization
branch
2 times, most recently
from
September 29, 2026 07:07
50c1f0f to
8e50f5d
Compare
Julpe
force-pushed
the
JacobianStabilization
branch
6 times, most recently
from
October 6, 2026 07:11
81be437 to
92ad029
Compare
Julpe
force-pushed
the
JacobianStabilization
branch
from
October 7, 2026 06:54
0651d37 to
385544d
Compare
Julpe
force-pushed
the
JacobianStabilization
branch
from
October 7, 2026 10:15
385544d to
1da1c2d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Jacobian stabilization of the self-consistency loop
Adds a Jacobian-based stabilization of the ladder-DGA self-consistency cycle [1-3], behind the flag
stabilization.use_jacobian_stabilization. The leading part of the spectrum of the Sigma map is estimated from the (iterate, proposal) pairs the mixing records anyway, which costs no extra evaluations of the map. The opt-instabilization.use_exact_jacobianadds the exact Jacobian of the map: it certifies inside the loop the modes the estimate cannot, and replaces the estimate at the converged point.What's new
dgamore/jacobian_stabilization.py):lambda_Pi = 1 - lambda_Jof the Sigma map, from the last pairs, refreshed every iteration. Only estimates whose residual passes a gate count as certified, and only certified ones drive decisions. Past the gate every value carries an error bound, the residual times the eigenvalue's condition number, so a non-normal map is not flipped on a backward error alone.Re lambda_Pi < 0, the proposal residual is reflected before the mixing acts, from the iteration that certifies it on, which makes the physical fixed point attractive there [1, 2]. The projector onto the certified span is built in Schur form [3]. A reflection is released when a certified stable mode lies inside it or when the residual keeps growing, so a correct flip whose mode has contracted out of the estimate stays in place.max_iter: 1as well as for the one-shot lambda correction, since a single iteration has no history.dgamore/sigma_jacobian.py, flagstabilization.use_exact_jacobian): analytic Jacobian-vector products of the loop's map, with the pipeline's own functions run on linearized objects, chemical-potential and occupation feedback included (exact forV = 0; theV^qHartree-Fock offset of the shell is held, and the loop warns about it). They act on the self-energies the loop can reach (the little-group average of every irreducible momentum and the populated orbital pairs, so multi-orbital and auto-symmetry lattices are covered) in the tracker's own coordinates:Re lambda_Pi = 0.1without certifying it, and the near-unstable modes a carried exact spectrum hands over, are certified by a short block Arnoldi (at most ten products) before the iteration's step. Certified pairs act at once, and a negative real part is flipped. A run makes at most five such checks besides the one at its start; a check that certifies its lead and finds every certified pair stable gives its slot back, at most five times, so the budget is kept for a mode that turns out unstable.jacobian.npzfor the next rung [3]. Both searches start from the tracker's least-stable and stiffest directions and share the products of their first Arnoldi factorization (41 products fewer per solve). A warning flags an unstable exact mode the reflection does not hold, and a search whose leading pairs are all unstable.invert_and_sum_over_last_vn_v2takes a list of right-hand sides). The checks run their products in blocks whose width the memory detection sizes, at most four.R: a pole ring of the density ladder atw_1lies inside the Brillouin zone onceR >= 1w_1compound checks ofchi_phys|S(Sigma) - Sigma| / |Sigma|beside the step residual, with a stalled-step warning when the loop converges on the step while the map residual stays above 10x epsilon without fallinguse_chi_phys_restriction: a floor on the static inverse, and finite-frequency values clipped to the static maximumchi_lambdapositive at every frequencySigma_Iterates/; the tracker's spectrum, certified modes and eigenvalue traces injacobian.npz(uncompressed, written through a temporary file so a killed run leaves the previous version), which holds the exact spectrum (keyexact) when the exact Jacobian ran.deferred_collectionis re-entrant per thread, so the products of the exact Jacobian, which wrap the pipeline's own deferred loops, no longer sweep the heap on every release.References
[1] H. Eßl, M. Reitner, E. Kozik, A. Toschi, Phys. Rev. Lett. 137, 016502 (2026).
[2] H. Eßl, S. Rohshap, M. Gievers, M. Wallerberger, A. Toschi, A. Kauch, Stabilizing the parquet problem, arXiv:2606.04936.
[3] M. Gievers, H. Eßl, S. Rohshap, A. Kauch, A. Toschi, Instabilities in self-consistent diagrammatic approaches and how to cure them, arXiv:2609.11405.