Skip to content

Commit

Permalink
update dSigmadk
Browse files Browse the repository at this point in the history
  • Loading branch information
houpc committed Mar 30, 2024
1 parent 66090ee commit 7658f21
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 50 deletions.
3 changes: 3 additions & 0 deletions example/input.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ basenames = [
"para_wn_1minus0",
"data$(dim)d_Z",
"data$(dim)d_K",
"data$(dim)d_dk",
"meff_$(dim)d",
"inverse_meff_$(dim)d",
"zfactor_$(dim)d",
Expand All @@ -49,6 +50,7 @@ end
para_basename,
sigma_z_basename,
sigma_k_basename,
sigmadk_basename,
meff_basename,
inverse_meff_basename,
zfactor_basename,
Expand All @@ -66,6 +68,7 @@ para_directory = "" # src directory
const parafilename = joinpath(para_directory, para_basename * ".csv")
const sigma_z_filename = joinpath(data_directory, sigma_z_basename * ".jld2")
const sigma_k_filename = joinpath(data_directory, sigma_k_basename * ".jld2")
const sigmadk_filename = joinpath(data_directory, sigmadk_basename * ".jld2")
const meff_filename = joinpath(res_directory, meff_basename * ".dat")
const inverse_meff_filename = joinpath(res_directory, inverse_meff_basename * ".dat")
const zfactor_filename = joinpath(res_directory, zfactor_basename * ".dat")
Expand Down
2 changes: 1 addition & 1 deletion example/sigma/derive_sigmadk.jl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ if abspath(PROGRAM_FILE) == @__FILE__
if UEG.paraid(loadpara) == UEG.paraid(para)
println(UEG.paraid(para))

ngrid, kgrid, rSw_k, iSw_k = UniElectronGas.getSigma(para, filename; parafile=parafilename)
ngrid, kgrid, rSw_k, iSw_k = UniElectronGas.get_dSigmadk(para, filename; parafile=parafilename)
meff = UniElectronGas.getMeff(para, [rSw_k[i][1] for i in eachindex(rSw_k)]; parafile=parafilename)

# println(rSw_k .* para.me / kF)
Expand Down
4 changes: 2 additions & 2 deletions example/sigma/sigma_dkMC.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ for (_rs, _mass2, _F, _beta, _order) in Iterators.product(rs, mass2, Fs, beta, o
end
push!(reweight_goal, 4.0)

filename = mission == "Z" ? sigma_z_filename : sigma_k_filename
filename = sigmadk_filename

# sigma, result = Sigma.MC_dk(para; kgrid=kgrid, ngrid=ngrid,
sigma, result = Sigma.MC_dk_Clib(para; kgrid=kgrid, ngrid=ngrid,
neval=neval, filename=filename, partition=partition, reweight_goal=reweight_goal,
diagtype=diagGenerate, isLayered2D=isLayered2D)
isLayered2D=isLayered2D)
end
114 changes: 67 additions & 47 deletions src/selfenergy.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ function sigma(para; neval=1e6, ngrid=[-1, 0, 1], kgrid=[para.kF], filename=noth
return sigma, result
end

function loaddata(para, FileName)
function loaddata(para, FileName, isdk=false)
key = UEG.short(para)
f = jldopen(FileName, "r")

Expand All @@ -13,8 +13,13 @@ function loaddata(para, FileName)
rdata, idata = Dict(), Dict()
for p in _partition
# for p in sort([k for k in keys(data)])
rdata[p] = real(sigma[p][:, :])
idata[p] = imag(sigma[p][:, :])
if isdk
rdata[p] = real(sigma[(p..., 1)][:, :])
idata[p] = imag(sigma[(p..., 1)][:, :])
else
rdata[p] = real(sigma[p][:, :])
idata[p] = imag(sigma[p][:, :])
end
println(p, " ", rdata[p])
end
return ngrid, kgrid, rdata, idata
Expand Down Expand Up @@ -110,50 +115,50 @@ function getSigma(para, filename=filename; parafile="para_wn_1minus0.csv", root_
dzinv, dmu, dz = CounterTerm.sigmaCT(para.order, _mu, _zinv)
println("dmu: ", dmu)

for (p, val) in rdata
p == (6, 0, 0) && println("(6,0,0): ", val)
p == (5, 0, 1) && println("(5,0,1): ", val)
p == (5, 1, 0) && println("(5,1,0): ", val * dmu[1])
p == (4, 1, 1) && println("(4,1,1): ", val * dmu[1])
p == (4, 2, 0) && println("(4,2,0): ", val * dmu[1]^2)
p == (3, 3, 0) && println("(3,3,0): ", val * dmu[1]^3)
p == (2, 4, 0) && println("(2,4,0): ", val * dmu[1]^4)
p == (1, 5, 0) && println("(1,5,0): ", val * dmu[1]^5)
p == (4, 1, 0) && println("(4,1,0): ", val * dmu[2])
p == (3, 2, 0) && println("(3,2,0): ", val * 2 * dmu[1] * dmu[2])
p == (2, 3, 0) && println("(2,3,0): ", val * 3 * dmu[1]^2 * dmu[2])
p == (2, 2, 0) && println("(2,2,0): ", val * (2 * dmu[1] * dmu[3] + dmu[2]^2))
p == (3, 1, 0) && println("(3,1,0): ", val * dmu[3])
p == (1, 1, 0) && println("(1,1,0): ", val * dmu[5])
end
println()
for (p, val) in rdata
p == (5, 0, 0) && println("(5,0,0): ", val)
p == (4, 0, 1) && println("(4,0,1): ", val)
p == (4, 1, 0) && println("(4,1,0): ", val * dmu[1])
p == (3, 1, 1) && println("(3,1,1): ", val * dmu[1])
p == (3, 2, 0) && println("(3,2,0): ", val * dmu[1]^2)
p == (2, 3, 0) && println("(2,3,0): ", val * dmu[1]^3)
p == (1, 4, 0) && println("(1,4,0): ", val * dmu[1]^4)
p == (3, 1, 0) && println("(3,1,0): ", val * dmu[2])
p == (2, 2, 0) && println("(2,2,0): ", val * 2 * dmu[1] * dmu[2])
p == (1, 3, 0) && println("(1,3,0): ", val * 3 * dmu[1]^2 * dmu[2])
p == (1, 2, 0) && println("(1,2,0): ", val * (2 * dmu[1] * dmu[3] + dmu[2]^2))
p == (2, 1, 0) && println("(2,1,0): ", val * dmu[3])
p == (1, 1, 0) && println("(1,1,0): ", val * dmu[4])
end
println()
for (p, val) in rdata
p == (4, 0, 0) && println("(4,0,0): ", val)
p == (3, 0, 1) && println("(3,0,1): ", val)
p == (3, 1, 0) && println("(3,1,0): ", val * dmu[1])
p == (2, 1, 1) && println("(2,1,1): ", val * dmu[1])
p == (2, 2, 0) && println("(2,2,0): ", val * dmu[1]^2)
p == (1, 3, 0) && println("(1,3,0): ", val * dmu[1]^3)
p == (2, 1, 0) && println("(2,1,0): ", val * dmu[2])
p == (1, 2, 0) && println("(1,2,0): ", val * 2 * dmu[1] * dmu[2])
p == (1, 1, 0) && println("(1,1,0): ", val * dmu[3])
end
# for (p, val) in rdata
# p == (6, 0, 0) && println("(6,0,0): ", val)
# p == (5, 0, 1) && println("(5,0,1): ", val)
# p == (5, 1, 0) && println("(5,1,0): ", val * dmu[1])
# p == (4, 1, 1) && println("(4,1,1): ", val * dmu[1])
# p == (4, 2, 0) && println("(4,2,0): ", val * dmu[1]^2)
# p == (3, 3, 0) && println("(3,3,0): ", val * dmu[1]^3)
# p == (2, 4, 0) && println("(2,4,0): ", val * dmu[1]^4)
# p == (1, 5, 0) && println("(1,5,0): ", val * dmu[1]^5)
# p == (4, 1, 0) && println("(4,1,0): ", val * dmu[2])
# p == (3, 2, 0) && println("(3,2,0): ", val * 2 * dmu[1] * dmu[2])
# p == (2, 3, 0) && println("(2,3,0): ", val * 3 * dmu[1]^2 * dmu[2])
# p == (2, 2, 0) && println("(2,2,0): ", val * (2 * dmu[1] * dmu[3] + dmu[2]^2))
# p == (3, 1, 0) && println("(3,1,0): ", val * dmu[3])
# p == (1, 1, 0) && println("(1,1,0): ", val * dmu[5])
# end
# println()
# for (p, val) in rdata
# p == (5, 0, 0) && println("(5,0,0): ", val)
# p == (4, 0, 1) && println("(4,0,1): ", val)
# p == (4, 1, 0) && println("(4,1,0): ", val * dmu[1])
# p == (3, 1, 1) && println("(3,1,1): ", val * dmu[1])
# p == (3, 2, 0) && println("(3,2,0): ", val * dmu[1]^2)
# p == (2, 3, 0) && println("(2,3,0): ", val * dmu[1]^3)
# p == (1, 4, 0) && println("(1,4,0): ", val * dmu[1]^4)
# p == (3, 1, 0) && println("(3,1,0): ", val * dmu[2])
# p == (2, 2, 0) && println("(2,2,0): ", val * 2 * dmu[1] * dmu[2])
# p == (1, 3, 0) && println("(1,3,0): ", val * 3 * dmu[1]^2 * dmu[2])
# p == (1, 2, 0) && println("(1,2,0): ", val * (2 * dmu[1] * dmu[3] + dmu[2]^2))
# p == (2, 1, 0) && println("(2,1,0): ", val * dmu[3])
# p == (1, 1, 0) && println("(1,1,0): ", val * dmu[4])
# end
# println()
# for (p, val) in rdata
# p == (4, 0, 0) && println("(4,0,0): ", val)
# p == (3, 0, 1) && println("(3,0,1): ", val)
# p == (3, 1, 0) && println("(3,1,0): ", val * dmu[1])
# p == (2, 1, 1) && println("(2,1,1): ", val * dmu[1])
# p == (2, 2, 0) && println("(2,2,0): ", val * dmu[1]^2)
# p == (1, 3, 0) && println("(1,3,0): ", val * dmu[1]^3)
# p == (2, 1, 0) && println("(2,1,0): ", val * dmu[2])
# p == (1, 2, 0) && println("(1,2,0): ", val * 2 * dmu[1] * dmu[2])
# p == (1, 1, 0) && println("(1,1,0): ", val * dmu[3])
# end

rSw_k = CounterTerm.chemicalpotential_renormalization(para.order, rdata, dmu)
# rSw_k = CounterTerm.chemicalpotential_renormalization(para.order, rdata, dmu, verbose=1)
Expand All @@ -162,6 +167,20 @@ function getSigma(para, filename=filename; parafile="para_wn_1minus0.csv", root_
return ngrid, kgrid, rSw_k, iSw_k
end

function get_dSigmadk(para, filename=filename; parafile="para_wn_1minus0.csv", root_dir=@__DIR__)
ngrid, kgrid, rdata, idata = loaddata(para, filename, true)
# para1 = ParaMC(rs=para.rs, beta=40.0, Fs=para.Fs, order=5, mass2=para.mass2, isDynamic=para.isDynamic, dim=para.dim, spin=para.spin)
# _mu, _zinv = CounterTerm.getSigma(para1, parafile=parafile, root_dir=root_dir)
_mu, _zinv = CounterTerm.getSigma(para, parafile=parafile, root_dir=root_dir)

dzinv, dmu, dz = CounterTerm.sigmaCT(para.order, _mu, _zinv)
println("dmu: ", dmu)

rSw_k = CounterTerm.chemicalpotential_renormalization(para.order, rdata, dmu)
iSw_k = CounterTerm.chemicalpotential_renormalization(para.order, idata, dmu)
return ngrid, kgrid, rSw_k, iSw_k
end

function getZfactor(para; parafile="para_wn_1minus0.csv", root_dir=@__DIR__, isRenorm=false)
_mu, _zinv = CounterTerm.getSigma(para, parafile=parafile, root_dir=root_dir)
dzinv, dmu, dz = CounterTerm.sigmaCT(para.order, _mu, _zinv)
Expand Down Expand Up @@ -398,6 +417,7 @@ function getMeffInv(para, rSigma, kgrid::Vector{Float64}; parafile="para_wn_1min
return @. 1.0 + sumMeffInv, fit_parameters
end

# Extract the effective mass from dΣ/dk
function getMeff(para, rSigmadk; parafile="para_wn_1minus0.csv", root_dir=@__DIR__)
order, kF = para.order, para.kF

Expand Down

0 comments on commit 7658f21

Please sign in to comment.