dgamore.lambda_correction#
Moriya \(\lambda\)-correction of the physical susceptibility. The non-local susceptibility is shifted by a single constant \(\lambda\) (per channel) so that its momentum sum matches the corresponding local sum-rule. Single-band only, since a multi-orbital correction would be non-unique.
Functions
|
Applies the \(\lambda\)-correction \(\chi_r \to (1/\chi_r + \lambda)^{-1}\) to the susceptibility. |
|
Finds \(\lambda\) such that the momentum-summed corrected susceptibility matches the local sum |
|
Returns the lower bound for \(\lambda\), i.e. the value at which the corrected susceptibility at \(\omega = 0\) would first diverge (\(-\min_q 1/\chi_r^{q,\omega=0}\)). |
|
Performs the \(\lambda\)-correction on the physical susceptibility for a single spin channel. |
- dgamore.lambda_correction.apply_lambda(chi_r: ndarray, lambda_: float) ndarray[source]#
Applies the \(\lambda\)-correction \(\chi_r \to (1/\chi_r + \lambda)^{-1}\) to the susceptibility.
- dgamore.lambda_correction.find_lambda(chi_r_mat: ndarray, chi_r_loc_sum: complex, delta: float = 0.1, eps: float = 1e-07, maxiter: int = 1000) float[source]#
Finds \(\lambda\) such that the momentum-summed corrected susceptibility matches the local sum
chi_r_loc_sumvia a Newton-like iteration. The momentum sum is evaluated over the irreducible BZ using the per-point multiplicities. When a Newton step would lower \(\lambda\) below the current value the step sizedeltais halved and the search is reset just above the divergence bound.- Parameters:
chi_r_mat (ndarray) – Physical susceptibility in the irreducible BZ, shape
[q, w].chi_r_loc_sum (complex) – Target value: the local susceptibility sum (already divided by \(\beta\)).
delta (float) – Initial offset above the divergence bound and step size for the bisection-style reset.
eps (float) – Convergence tolerance on the real part of the sum-rule residual.
maxiter (int) – Maximum number of iterations before giving up (logs a warning and returns the last value).
- Returns:
The converged \(\lambda\) (or the last value reached if not converged).
- Return type:
- dgamore.lambda_correction.get_lambda_start(chi_r: ndarray) float[source]#
Returns the lower bound for \(\lambda\), i.e. the value at which the corrected susceptibility at \(\omega = 0\) would first diverge (\(-\min_q 1/\chi_r^{q,\omega=0}\)). The search starts just above it.
- dgamore.lambda_correction.perform_single_lambda_correction(chi_r: FourPoint, chi_r_loc_sum: complex) tuple[FourPoint, float][source]#
Performs the \(\lambda\)-correction on the physical susceptibility for a single spin channel. Only works for single-band systems, since a multi-orbital correction would be a non-unique multidimensional problem.
- Parameters:
- Returns:
A tuple of (i) the corrected susceptibility in the irreducible BZ and half bosonic frequency range, and (ii) the determined \(\lambda\).
- Return type: