From aac1a2e431d9a110adc4261a64f09489226dc081 Mon Sep 17 00:00:00 2001 From: Nuwan Yapa Date: Wed, 24 Apr 2024 14:19:03 -0400 Subject: [PATCH] Added parameters for tolerance and maximum evaluations in V_numerical --- 3body_resonance.jl | 8 +++++--- ho_basis.jl | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/3body_resonance.jl b/3body_resonance.jl index e1d67c5..851d677 100644 --- a/3body_resonance.jl +++ b/3body_resonance.jl @@ -6,7 +6,7 @@ include("p_space.jl") m = 1.0 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) # due to Jacobi coordinates @@ -34,8 +34,10 @@ println("Constructing KE matrices") println("Constructing PE matrices") -V1_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μ1ω1) -V_relative_elem(l, n1, n2) = V_numerical(V_of_r, l, n1, n2; μω_gen=μω_global) +atol = 10^-6 +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) V_relative_cache = fill(Complex(NaN), 1+l_max, 1+n_max, 1+n_max) diff --git a/ho_basis.jl b/ho_basis.jl index 84c56f8..c22431c 100644 --- a/ho_basis.jl +++ b/ho_basis.jl @@ -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]) 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) - (integral, _) = quadgk(integrand, 0, Inf) + (integral, _) = quadgk(integrand, 0, Inf; atol=atol, maxevals=maxevals) return integral end