Total E calculation (meson part wrong)
This commit is contained in:
parent
a93056d173
commit
e1378be8db
14
mesons.jl
14
mesons.jl
|
|
@ -62,3 +62,17 @@ function solveMesonFields!(s::system, iterations=10)
|
||||||
|
|
||||||
return (Φ0, W0, B0, A0)
|
return (Φ0, W0, B0, A0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
"Calculate the total energy associated with meson fields"
|
||||||
|
function meson_E(s::system)
|
||||||
|
int = 0.0
|
||||||
|
for (r, Φ0, W0, B0, A0, ρ_sp, ρ_vp, ρ_sn, ρ_vn) in zip(rs(s), s.Φ0, s.W0, s.B0, s.A0, s.ρ_sp, s.ρ_vp, s.ρ_sn, s.ρ_vn)
|
||||||
|
E_σ = (1/2) * Φ0 * (ρ_sp + ρ_sn) - ((κ_ss/ħc)/12 * (Φ0/ħc)^3 + (λ/24) * (Φ0/ħc)^4)
|
||||||
|
E_ω = -(1/2) * W0 * (ρ_vp + ρ_vn) + (ζ/24) * (W0/ħc)^4
|
||||||
|
E_ρ = -(1/4) * (2B0/ħc) * (ρ_vp - ρ_vn)
|
||||||
|
E_γ = -(1/2) * g2_γ * A0 * ρ_vp
|
||||||
|
E_ωρ = Λv * (W0/ħc)^2 * (2B0/ħc)^2
|
||||||
|
int += (E_σ + E_ω + E_ρ + E_γ + E_ωρ) * r^2
|
||||||
|
end
|
||||||
|
return 4π * int * Δr(s) * ħc
|
||||||
|
end
|
||||||
|
|
|
||||||
16
system.jl
16
system.jl
|
|
@ -69,11 +69,11 @@ function solve_system(s::system; reinitialize_densities=true, monitor_print=true
|
||||||
p = plot(legends=false, size=(1024, 768), layout=(2, 4), title=["ρₛₚ" "ρᵥₚ" "ρₛₙ" "ρᵥₙ" "Φ₀" "W₀" "B₀" "A₀"])
|
p = plot(legends=false, size=(1024, 768), layout=(2, 4), title=["ρₛₚ" "ρᵥₚ" "ρₛₙ" "ρᵥₙ" "Φ₀" "W₀" "B₀" "A₀"])
|
||||||
end
|
end
|
||||||
|
|
||||||
E_total_previous = NaN
|
previous_E_per_A = NaN
|
||||||
|
|
||||||
while true
|
while true
|
||||||
# mesons
|
# mesons
|
||||||
@time "Meson fields" solveMesonFields!(s, isnan(E_total_previous) ? 50 : 5)
|
@time "Meson fields" solveMesonFields!(s, isnan(previous_E_per_A) ? 50 : 5)
|
||||||
|
|
||||||
# protons
|
# protons
|
||||||
@time "Proton spectrum" (κs_p, Es_p) = findAllOrbitals(true, s)
|
@time "Proton spectrum" (κs_p, Es_p) = findAllOrbitals(true, s)
|
||||||
|
|
@ -93,12 +93,14 @@ function solve_system(s::system; reinitialize_densities=true, monitor_print=true
|
||||||
display(p)
|
display(p)
|
||||||
end
|
end
|
||||||
|
|
||||||
# total binding energy of nucleons
|
E_per_A = total_E(s, Es_p, occs_p, Es_n, occs_n) / A(s)
|
||||||
E_total = sum(M_p .- Es_p) + sum(M_n .- Es_n)
|
monitor_print && println("Total binding E per nucleon = $E_per_A")
|
||||||
monitor_print && println("Total binding E per nucleon = $(E_total/A(s))")
|
|
||||||
|
|
||||||
# check convergence
|
# check convergence
|
||||||
abs(E_total_previous - E_total) < 0.1 && break
|
abs(previous_E_per_A - E_per_A) < 0.1 && break
|
||||||
E_total_previous = E_total
|
previous_E_per_A = E_per_A
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
"Total binding energy of the system"
|
||||||
|
total_E(s::system, Es_p, occs_p, Es_n, occs_n) = sum(occs_p .* (M_p .- Es_p)) + sum(occs_n .* (M_n .- Es_n)) - meson_E(s)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue