Polarization
ElectronGas.Polarization.Ladder0_FiniteTemp — Methodfunction Ladder0_FiniteTemp(q::Float64, n::AbstractVector, param, scaleN=20, minterval=1e-6, gaussN=10)Finite temperature ladder function for matsubara frequency and momentum. Analytically sum over total incoming frequency and angular dependence of momentum, and numerically calculate integration of magnitude of momentum. Assume G0^{-1} = iωn - (k^2/(2m) - mu)
The ladder function is defined as
\[\int \frac{d^3 \vec{p}}{\left(2π^3\right)} T \sum_{i ω_n} \frac{1}{iω_n+iΩ_n-\frac{(\vec{k}+\vec{p})^2}{2 m}+μ} \frac{1}{-iω_n-\frac{p^2}{2 m}+μ} - \frac{m}{2π^2}Λ\]
where we subtract the UV divergent term that is a constant proportional to the UV cutoff Λ.
#Arguments:
- q: momentum
- n: matsubara frequency given in integer s.t. Ωn=2πTn
- param: other system parameters
- scaleN: optional, N of Log grid in LogDensedGrid, check CompositeGrids for more detail
- minterval: optional, actual minterval of grid is this value times min(q,kF)
- gaussN: optional, N of GaussLegendre grid in LogDensedGrid.
ElectronGas.Polarization.Ladder0_FiniteTemp — Methodfunction Ladder0_FiniteTemp(q::Float64, n::Int, param, scaleN=20, minterval=1e-6, gaussN=10)Finite temperature ladder function for matsubara frequency and momentum. Analytically sum over total incoming frequency and angular dependence of momentum, and numerically calculate integration of magnitude of momentum. Assume G0^{-1} = iωn - (k^2/(2m) - mu)
The ladder function is defined as
\[\int \frac{d^3 \vec{p}}{\left(2π^3\right)} T \sum_{i ω_n} \frac{1}{iω_n+iΩ_n-\frac{(\vec{k}+\vec{p})^2}{2 m}+μ} \frac{1}{-iω_n-\frac{p^2}{2 m}+μ} - \frac{m}{2π^2}Λ\]
where we subtract the UV divergent term that is a constant proportional to the UV cutoff Λ.
#Arguments:
- q: momentum
- n: matsubara frequency given in integer s.t. Ωn=2πTn
- param: other system parameters
- scaleN: optional, N of Log grid in LogDensedGrid, check CompositeGrids for more detail
- minterval: optional, actual minterval of grid is this value times min(q,kF)
- gaussN: optional, N of GaussLegendre grid in LogDensedGrid.
ElectronGas.Polarization.Polarization0_3dZeroTemp_LinearDispersion — Method@inline function Polarization0_3dZeroTemp_LinearDispersion(q, n, param)Polarization for electrons with dispersion linearized near the Fermi surface. See "Condensed Matter Field Theory" by Altland, Eq. (5.30).
\[Π_{q, ω_n}=-\frac{1}{2} N_F \left[1-\frac{i ω_n}{2 v_F q} \operatorname{ln} \left(\frac{i ω_n+v_F q}{i ω_n-v_F q}\right)\right]\]
The log function can be replaced with arctan,
\[\operatorname{arctan}(x) = \frac{i}{2} \ln \frac{i+x}{i-x}\]
ElectronGas.Polarization.Polarization0_3dZeroTemp_Plasma — Method@inline function Polarization0_3dZeroTemp_Plasma(q, n, param; factor = 3.0)This polarization ansatz preserves the plasma frequency and the static limit.
\[Π(q, iω_n) = -\frac{1}{2} \frac{q^2}{4πe^2} \frac{ω_p^2}{ω_n^2 + ω_p^2\cdot (q/q_{TF})^2} = -\frac{N_F}{2}\left(1-\frac{3}{3+(q \cdot vF/ω_n)^2}\right)\]
where ω_p is the plasma frequency, and
\[ω_p = v_F q_{TF}/\sqrt{3}\]
User may change the parameter factor to modify the plasma frequency in this ansatz.
ElectronGas.Polarization.Polarization0_3dZeroTemp_Q — Method@inline function Polarization0_3dZeroTemp_Q(q, n, param)Polarization for electrons ansatz inspired by "Condensed Matter Field Theory" by Altland, Problem 6.7.
\[Π(q, iω_n) = -\frac{1}{2} N_F \left(1-\frac{π}\sqrt{\left(\frac{2v_F q}{ω_n} \right)^2+π^2}\right)\]
This ansatz is asymtotically exact in the large q limit, and is only qualitatively correct in the small q limit.
Remark:
For the exact free-electron polarization, we expect In the limit q ≫ ω_n,
\[Π(q, iω_n) → -\frac{1}{2} N_F \left(1-\frac{π}{2}\frac{|ω_n|}{v_F q}\right)\]
and in the limit q ≪ ω_n,
\[Π(q, iω_n) → -\frac{1}{2} N_F \frac{1}{3}\left(\frac{v_F q}{ω_n}\right)^2\]
The above ansatz has the right large-q behavior, while its small-q is slightly different (prefactor 1/3 is modified to 2/π^2≈0.2026)
ElectronGas.Polarization.Polarization0_FiniteTemp! — Methodfunction Polarization0_FiniteTemp!(obj::MeshArray{T,N,MT}, param; massratio=1.0, maxk=20, scaleN=20, minterval=1e-6, gaussN=10) where {T,N,MT}Store the finite-temperature one-spin Π0 function for Matsubara frequencies and momenta from obj.mesh within obj.data as specified by given parameters param. Analytically sum over transfer frequency and angular dependence of momentum, and numerically calculate integration of magnitude of momentum. Assume G0^{-1} = iωn - (k^2/(2m) - mu)
#Arguments:
obj: MeshArray with ImFreq TemporalGrid and transfer-momentum grid (two-dimensional mesh) for polarization function.param: other system parameters.param.βmust be equal toβfromobj.mesh.massratio: optional, effective mass ratio. By default,massratio=1.0.maxk: optional, upper limit of integral -> maxk*kFscaleN: optional, N of Log grid in LogDensedGrid, check CompositeGrids for more detailminterval: optional, actual minterval of grid is this value times min(q,kF)gaussN: optional, N of GaussLegendre grid in LogDensedGrid.
ElectronGas.Polarization.Polarization0_FiniteTemp — Methodfunction Polarization0_FiniteTemp(q::Float64, n::AbstractVector, param, maxk=20, scaleN=20, minterval=1e-6, gaussN=10)Finite temperature one-spin Π0 function for matsubara frequency and momentum. Analytically sum over transfer frequency and angular dependence of momentum, and numerically calculate integration of magnitude of momentum. Slower(~200μs) than Polarization0ZeroTemp. Assume G0^{-1} = iω_n - (k^2/(2m) - mu)
#Arguments:
- q: momentum
- n: Matsubara frequencies given in an AbstractVector s.t. ωn=2πTn
- param: other system parameters
- maxk: optional, upper limit of integral -> maxk*kF
- scaleN: optional, N of Log grid in LogDensedGrid, check CompositeGrids for more detail
- minterval: optional, actual minterval of grid is this value times min(q,kF)
- gaussN: optional, N of GaussLegendre grid in LogDensedGrid.
ElectronGas.Polarization.Polarization0_FiniteTemp — Methodfunction Polarization0_FiniteTemp(q::Float64, n::Int, param, maxk=20, scaleN=20, minterval=1e-6, gaussN=10)Finite temperature one-spin Π0 function for matsubara frequency and momentum. Analytically sum over transfer frequency and angular dependence of momentum, and numerically calculate integration of magnitude of momentum. Slower(~200μs) than Polarization0ZeroTemp. Assume G0^{-1} = iω_n - (k^2/(2m) - mu)
#Arguments:
- q: momentum
- n: matsubara frequency given in integer s.t. ωn=2πTn
- param: other system parameters
- maxk: optional, upper limit of integral -> maxk*kF
- scaleN: optional, N of Log grid in LogDensedGrid, check CompositeGrids for more detail
- minterval: optional, actual minterval of grid is this value times min(q,kF)
- gaussN: optional, N of GaussLegendre grid in LogDensedGrid.
ElectronGas.Polarization.Polarization0_ZeroTemp! — Methodfunction Polarization0_ZeroTemp!(obj::MeshArray{T,N,MT}, param; massratio=1.0, kwargs...) where {T,N,MT}Store the zero-temperature one-spin Π0 function for Matsubara frequencies and momenta from obj.mesh within obj.data as specified by given parameters param. Assume G0^{-1} = iωn - (k^2/(2m) - mu)
#Arguments:
obj: MeshArray with ImFreq TemporalGrid and transfer-momentum grid (two-dimensional mesh) for polarization function.param: other system parameters.param.βmust be equal toβfromobj.mesh.massratio: optional, effective mass ratio. By default,massratio=1.0.
ElectronGas.Polarization.Polarization0_ZeroTemp — Methodfunction Polarization0_ZeroTemp(q::Float64, n::AbstractVector, param)Zero temperature one-spin Π0 function for Matsubara-frequency grid n and momentum q. For low temperature the finite temperature polarization could be approximated with this function to run faster(~200ns). Assume G0^{-1} = iωn - (k^2/(2m) - E_F).
#Arguments:
q: momentumn: Matsubara frequencies given in a AbstractVector s.t. ωn=2πTnparam: other system parameters
ElectronGas.Polarization.Polarization0_ZeroTemp — Methodfunction Polarization0_ZeroTemp(q::Float64, n::Int, param)Zero temperature one-spin Π0 function for matsubara frequency and momentum. For low temperature the finite temperature polarization could be approximated with this function to run faster(~200ns). Assume G0^{-1} = iωn - (k^2/(2m) - E_F).
#Arguments:
- q: momentum
- n: matsubara frequency given in integer s.t. ωn=2πTn
- param: other system parameters
ElectronGas.Polarization.Polarization0wrapped — Methodfunction Polarization0wrapped(Euv, rtol, sgrid::SGT, param, pifunc = Polarization0_ZeroTemp) where{TGT, SGT}Π0 function for matsubara frequency and momentum. Use Polarization0ZeroTemp by default, `Polarization0ZeroTemp!` when pifunc is specified. Assume G0^{-1} = iωn - (k^2/(2m) - E_F). Return full polarization0 function stored in GreenFunc.MeshArray.
#Arguments:
- Euv: Euv of DLRGrid
- rtol: rtol of DLRGrid
- sgrid: momentum grid
- param: other system parameters
- pifunc: single point Π0 function used. Require form with pifunc(::MeshArray, param).