CounterTerm
This module provides the functions to manipulate counterterms.
ElectronLiquid.CounterTerm.chemicalpotential_renormalization — Methodfunction chemicalpotential_renormalization(order, data, δμ)merge different diagrammatic orders with proper chemical potential renormalization
By definition, the chemical potential renormalization is defined as Σ1 = Σ11 Σ2 = Σ20+Σ11δμ1 Σ3 = Σ30+Σ11δμ2+Σ12δμ1^2+Σ21δμ1 Σ4 = Σ40+Σ11δμ3+Σ12(2δμ1δμ2)+Σ13δμ1^3+Σ21δμ2+Σ22δμ1^2+Σ31δμ1
Arguments
order: total orderdata: Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}δμ: chemical potential renormalization for each orderoffset(Int, optional): the first order (=normal+W_order) offset (defaults to 0).
ElectronLiquid.CounterTerm.densityCT — Methodfunction densityCT(order, nw; isfock=false)Derive the chemicalpotential shift from the density.
Arguments
order: total ordernw: ∫G(k,0⁻)dk, Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}, or three integer Tuple{NormalOrder, WOrder, G_Order}isfock: if true (false) Fock renormalization is turned on (off)verbose: verbosity level (0 (default): no output to stdout, 1: print to stdout)
Return δμ
The convention is the following:
δμ: chemicalpotentialshiftwithrenormalizationcondition = δμ1+δμ_2+...
ElectronLiquid.CounterTerm.fromFile — Functionfunction fromFile(parafile=parafileName; root_dir=@__DIR__)Loads self-energy counterterm data from a CSV file parafile and returns a DataFrame.
Arguments
parafile: name of the CSV file to load fromroot_dir: the root directory ofparafile(default:<ElectronLiquid_Root>/common/)verbose: verbosity level (0: no output to stdout, 1 (default): print to stdout)
ElectronLiquid.CounterTerm.getSigma — Methodfunction getSigma(para::ParaMC; order=para.order, parafile=parafileName)Derives the counterterms mu and sw from self-energy data stored in the CSV file parafile.
Arguments
para: the physical parameter set to load data fororder: the maximum simulation orderparafile: name of the CSV file to load fromroot_dir: the root directory ofparafile(default:<ElectronLiquid_Root>/common/)
ElectronLiquid.CounterTerm.mergeInteraction — MethodMerge interaction order and the main order (normalorder, Gorder, Worder) –> (normal+Worder, G_order)
ElectronLiquid.CounterTerm.partition — MethodHard-coded counterterm partitions for the self-energy in the form (nloop, nμ, n_λ).
ElectronLiquid.CounterTerm.renormalization — Functionfunction renormalization(order, data, δμ, δz=nothing; nbody=1, zrenorm=true)First perform the chemical potential renormalization, then perform the z-factor renormalization
Arguments
order: total orderdata: Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}δμ: chemical potential countertermδz: z-factor counterterm
zrenorm : turn on or off the z-factor renormalization nbody : nbody=1 for the one-body vertex function (self-energy, or Γ3) and nbody=2 for the two-body vertex function
ElectronLiquid.CounterTerm.sigmaCT — Functionfunction sigmaCT(order, μ, sw=Dict(key => 0.0 for key in keys(μ)); isfock=false)Derive the chemicalpotential and z-factor counterterm for each order from the self-energy.
Arguments
order: total orderμ: ReΣ(kF, w=0), Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}, or three integer Tuple{NormalOrder, WOrder, G_Order}sw: dImΣ(kF, w=0)/dw, Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}, or three integer Tuple{NormalOrder, WOrder, G_Order}isfock: if true (false) Fock renormalization is turned on (off)verbose: verbosity level (0 (default): no output to stdout, 1: print to stdout)
Return (δzi, δμ, δz)
The convention is the following:
δzi: 1/z = 1+δzi1+δzi2+...δμ: chemicalpotentialshiftwithoutzrenormalization = δμ1+δμ_2+...δz: z = 1+δz1+δz2+...
Remark:
The chemical potential shift is the chemical potential shift without z-renormalization.
ElectronLiquid.CounterTerm.toFile — Functionfunction fromFile(parafile=parafileName; root_dir=@__DIR__)Saves self-energy counterterm data specified by a DataFrame df to a CSV file parafile.
Arguments
df: DataFrame containing the self-energy counterterm dataparafile: name of the CSV file to save toroot_dir: the root directory ofparafile(default:<ElectronLiquid_Root>/common/)verbose: verbosity level (0: no output to stdout, 1 (default): print to stdout)
ElectronLiquid.CounterTerm.z_renormalization — Methodfunction z_renormalization(order, data, δz, nbody::Int)By defintion, z=1+δz1+δz2+...
Then the z-factor renormalization resuffles the power series in the following way:
- For the one-body vertex function DR = zD ==> (D1+D2+D3+D4+...)(1+δz1+δz2+δz3+...) = D1 + (D2+D1δz1) + (D3+D2δz1+D1δz2) + (D4+D3δz1+D2δz2+D1δz3) + ...
- For the two-body vertex function DR = z^2D ==> (D1+D2+D3+D4+...)(1+δz1+δz2+δz3+...)^2 = D1 + (D2+2D1δz1) + (D3+2D2δz1+D1(δz1^2+2δz2) + (D4+2D3δz1+D2(δz1^2+δz2)+2D1(δz1δz2+δz3)) + ...
Note that the z-factor renormalization doesn't alter the W-order and the G-order, therefore, D{m,n,k} renormalizes just as D{m}.
Arguments
order: total orderdata: Vector of data, or Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder} or three integer Tuple{NormalOrder, GOrder, W_Order}δz: z-factor renormalization for each ordernbody: nbody=1 for the one-body vertex function (self-energy, or Γ3) and nbody=2 for the two-body vertex function