Added parameters for tolerance and maximum evaluations in V_numerical

This commit is contained in:
Nuwan Yapa 2024-04-24 14:19:03 -04:00
parent af1391197c
commit aac1a2e431
2 changed files with 7 additions and 5 deletions

View File

@ -6,7 +6,7 @@ include("p_space.jl")
m = 1.0 m = 1.0
V_of_r(r) = 2 * exp(-(r-3)^2 / (1.5)^2) V_of_r(r) = 2 * exp(-(r-3)^2 / (1.5)^2)
E_max = 24 E_max = 30
μω_global = 0.5 * exp(-2im * pi / 9) μω_global = 0.5 * exp(-2im * pi / 9)
# due to Jacobi coordinates # due to Jacobi coordinates
@ -34,8 +34,10 @@ println("Constructing KE matrices")
println("Constructing PE matrices") println("Constructing PE matrices")
V1_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μ1ω1) atol = 10^-6
V_relative_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μω_global) maxevals = 10^5
V1_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μ1ω1, atol=atol, maxevals=maxevals)
V_relative_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μω_global, atol=atol, maxevals=maxevals)
V1_cache = fill(Complex(NaN), 1+l_max, 1+n_max, 1+n_max) V1_cache = fill(Complex(NaN), 1+l_max, 1+n_max, 1+n_max)
V_relative_cache = fill(Complex(NaN), 1+l_max, 1+n_max, 1+n_max) V_relative_cache = fill(Complex(NaN), 1+l_max, 1+n_max, 1+n_max)

View File

@ -134,8 +134,8 @@ sqrt_sqrt_pi = sqrt(sqrt(pi))
laguerre(l, n, x) = gamma(n + l + 3/2) * better_sum([(-x * x)^k / gamma(k + l + 3/2) * inv_factorial(n - k) * inv_factorial(k) for k in 0:n]) laguerre(l, n, x) = gamma(n + l + 3/2) * better_sum([(-x * x)^k / gamma(k + l + 3/2) * inv_factorial(n - k) * inv_factorial(k) for k in 0:n])
ho_basis(l, n, x) = (-1)^n / sqrt_sqrt_pi * 2^((n + l + 2) / 2) * sqrt_factorial(n) / sqrt_double_factorial(2*n + 2*l + 1) * x^(l + 1) * exp(-x^2 / 2) * laguerre(l, n, x) ho_basis(l, n, x) = (-1)^n / sqrt_sqrt_pi * 2^((n + l + 2) / 2) * sqrt_factorial(n) / sqrt_double_factorial(2*n + 2*l + 1) * x^(l + 1) * exp(-x^2 / 2) * laguerre(l, n, x)
function V_numerical(V_of_r, l, n1, n2; μω_gen=1.0) function V_numerical(V_of_r, l, n1, n2; μω_gen=1.0, atol=0, maxevals=10^7)
integrand(r) = sqrt(μω_gen) * ho_basis(l, n1, sqrt(μω_gen) * r) * ho_basis(l, n2, sqrt(μω_gen) * r) * V_of_r(r) integrand(r) = sqrt(μω_gen) * ho_basis(l, n1, sqrt(μω_gen) * r) * ho_basis(l, n2, sqrt(μω_gen) * r) * V_of_r(r)
(integral, _) = quadgk(integrand, 0, Inf) (integral, _) = quadgk(integrand, 0, Inf; atol=atol, maxevals=maxevals)
return integral return integral
end end