CounterTerm

This module provides the functions to manipulate counterterms.

ElectronLiquid.CounterTerm.chemicalpotential_renormalizationMethod
function 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 order
  • data : Dict{OrderTuple, ActualData}, where OrderTuple is a tuple of two integer Tuple{NormalOrder+WOrder, GOrder}
  • δμ : chemical potential renormalization for each order
  • offset (Int, optional): the first order (=normal+W_order) offset (defaults to 0).
source
ElectronLiquid.CounterTerm.densityCTMethod
function densityCT(order, nw; isfock=false)

Derive the chemicalpotential shift from the density.

Arguments

  • order : total order
  • nw : ∫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+...
source
ElectronLiquid.CounterTerm.fromFileFunction
function 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 from
  • root_dir : the root directory of parafile (default: <ElectronLiquid_Root>/common/)
  • verbose : verbosity level (0: no output to stdout, 1 (default): print to stdout)
source
ElectronLiquid.CounterTerm.getSigmaMethod
function 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 for
  • order : the maximum simulation order
  • parafile : name of the CSV file to load from
  • root_dir : the root directory of parafile (default: <ElectronLiquid_Root>/common/)
source
ElectronLiquid.CounterTerm.renormalizationFunction
function renormalization(order, data, δμ, δz=nothing; nbody=1, zrenorm=true)

First perform the chemical potential renormalization, then perform the z-factor renormalization

Arguments

  • order : total order
  • data : 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

source
ElectronLiquid.CounterTerm.sigmaCTFunction
function 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.

source
ElectronLiquid.CounterTerm.toFileFunction
function 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 data
  • parafile : name of the CSV file to save to
  • root_dir : the root directory of parafile (default: <ElectronLiquid_Root>/common/)
  • verbose : verbosity level (0: no output to stdout, 1 (default): print to stdout)
source
ElectronLiquid.CounterTerm.z_renormalizationMethod
function 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:

  1. 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) + ...
  2. 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 order
  • data : 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 order
  • nbody : nbody=1 for the one-body vertex function (self-energy, or Γ3) and nbody=2 for the two-body vertex function
source