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