Three-body Gaussian model with a many-body regulator

A heavy centre binds two identical light particles through pairwise Gaussian attractions. A repulsive many-body Gaussian exp(-rᵀWr) acts as a regulator that lifts the energy — a physically useful interaction that stays compatible with the rank-0 stochastic solver.

using FewBodyECG
using Plots

masses = [1.0e15, 1.0, 1.0]

build() = begin
    o = Operators(masses)
    o += "Kinetic"
    o += ("Gaussian", 1, 2, -4.0, 0.5)   # centre–particle-2 attraction
    o += ("Gaussian", 1, 3, -4.0, 0.5)   # centre–particle-3 attraction
    o
end

# Without the regulator (λ = 0)
ops₀ = build()
sol₀ = solve(ops₀, SVM(basis = 30, candidates = 20, scale = 1.0))

# With a repulsive many-body Gaussian regulator (λ > 0, W positive-definite)
W = [0.6 0.1; 0.1 0.6]
λ = 3.0
ops₁ = build()
ops₁ += ManyBodyGaussianOperator(λ, W)
sol₁ = solve(ops₁, SVM(basis = 30, candidates = 20, scale = 1.0))

ΔE = sol₁.E₀ - sol₀.E₀
println("E₀ (λ = 0)  = ", sol₀.E₀, " Ha")
println("E₀ (λ = ", λ, ") = ", sol₁.E₀, " Ha")
println("regulator-induced shift ΔE = ", ΔE, " Ha")

# Convergence and radial profile through the utilities
steps, history = convergence(sol₁)
pc = plot(steps, history; xlabel = "step", ylabel = "E (Ha)", label = "with regulator")
plot!(pc, convergence(sol₀)...; label = "no regulator")
pc

plot(wavefunction(sol₁); coord = 1, rmax = 6.0)
Example block output

This page was generated using Literate.jl.