From 15b39ca8f5ae49f5c08bd35621ac13c14ea05367 Mon Sep 17 00:00:00 2001 From: Nuwan Yapa Date: Thu, 4 Jun 2026 17:52:17 -0400 Subject: [PATCH] Temp commit --- calculations/He_cluster.jl | 38 ++++++++++++++++++++++++++++++++++++++ ho_space_3body_V3b.jl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 calculations/He_cluster.jl create mode 100644 ho_space_3body_V3b.jl diff --git a/calculations/He_cluster.jl b/calculations/He_cluster.jl new file mode 100644 index 0000000..aa55b88 --- /dev/null +++ b/calculations/He_cluster.jl @@ -0,0 +1,38 @@ +using Arpack +include("../ho_basis.jl") + +coord_system = jacobi +atol = 10 ^ -5 +maxevals = 10 ^ 5 + +Λ = 0 +m = 1.0 / 43.281307 +V_of_r(r) = -1.2343566 * exp(-r^2 / 100) + +# three-body potential V3b = V3b_of_r(r12) * V3b_of_r(r23) * V3b_of_r(r31) +V3b_of_r(r) = 0.43 * exp(-(2/3) * r^2 / 100) + +E_max = 30 +μω_global = 0.1 + +μ1ω1 = μω_global * 1/2 +basis = ho_basis_2B(E_max, Λ) + +V1_elem(l, n1, n2) = V_numerical(V3b_of_r, l, n1, n2; μω_gen=μ1ω1, atol=atol, maxevals=maxevals) +@time "V1" V1 = get_sp_V_matrix(V1_elem, basis.n1s, basis.l1s, [basis.n2s, basis.l2s]; dtype=ComplexF64, E_max=basis.E_max) + +V_relative_elem(l, n1, n2) = V_numerical(V3b_of_r, l, n1, n2; μω_gen=μω_global, atol=atol, maxevals=maxevals) +V_relative_cache = prealloc_V_cache(basis.E_max, ComplexF64) + +V_relative_1 = get_sp_V_matrix(V_relative_elem, basis.n1s, basis.l1s, [basis.n2s, basis.l2s]; dtype=ComplexF64, cache=V_relative_cache) +V_relative_2 = get_sp_V_matrix(V_relative_elem, basis.n2s, basis.l2s, [basis.n1s, basis.l1s]; dtype=ComplexF64, cache=V_relative_cache) +@time "V_relative" V_relative = V_relative_1 * V_relative_2 # commutative? +U = Moshinsky_transform(basis) +@time "V2" V2 = transpose(U) * V_relative * U + +@time "V3b" V3b = V2 * V1 # commutative? + +H = get_3b_H_matrix(coord_system, V_of_r, μω_global, E_max, Λ, m) + V3b + +@time "Eigenvalues" evals, _ = eigs(H, nev=3, ncv=30, which=:SR, maxiter=5000, tol=1e-5, ritzvec=false, check=1) +display(evals) diff --git a/ho_space_3body_V3b.jl b/ho_space_3body_V3b.jl new file mode 100644 index 0000000..2e29e44 --- /dev/null +++ b/ho_space_3body_V3b.jl @@ -0,0 +1,31 @@ +using Arpack +include("ho_basis.jl") + +coord_system = src +atol = 10 ^ -5 +maxevals = 10 ^ 5 + +Λ = 0 +m = 1.0 +V_of_r(r) = -2 * exp(-r^2 / 4) + +# three-body potential V3b = V3b_of_r(r12) * V3b_of_r(r23) * V3b_of_r(r31) +V3b_of_r(r) = -1 * exp(-r^2 / 4) + +E_max = 40 +μω_global = 0.3 + +# compute three-body potential matrix elements +μω = μω_global * 2 +basis = ho_basis_2B(E_max, Λ) +V3b_elem(l, n1, n2) = V_numerical(V3b_of_r, l, n1, n2; μω_gen=μω, atol=atol, maxevals=maxevals) +V_cache = prealloc_V_cache(basis.E_max, ComplexF64) +@time "V1" V1 = get_sp_V_matrix(V3b_elem, basis.n1s, basis.l1s, [basis.n2s, basis.l2s]; dtype=ComplexF64, cache=V_cache) +@time "V2" V2 = get_sp_V_matrix(V3b_elem, basis.n2s, basis.l2s, [basis.n1s, basis.l1s]; dtype=ComplexF64, cache=V_cache) +@time "V12" V12 = get_src_V12_matrix(V3b_of_r, basis, μω_global; atol=atol, maxevals=maxevals) +@time "V3b" V3b = (V1 * V2) * V12 # commutative? + +H = get_3b_H_matrix(coord_system, V_of_r, μω_global, E_max, Λ, m) + V3b + +@time "Eigenvalues" evals, _ = eigs(H, nev=3, ncv=30, which=:SR, maxiter=5000, tol=1e-5, ritzvec=false, check=1) +display(evals)