diff --git a/helper.jl b/helper.jl index ce9f7e6..9342cf4 100644 --- a/helper.jl +++ b/helper.jl @@ -10,3 +10,6 @@ function better_sum(arr::Array{Float64}) end better_sum(arr::Array{ComplexF64}) = better_sum(real.(arr)) + 1im * better_sum(imag.(arr)) + +"The triangle inequality for angular momenta" +triangle_ineq(l1, l2, L) = abs(l1 - l2) ≤ L && L ≤ (l1 + l2) diff --git a/ho_basis.jl b/ho_basis.jl index c1f8292..e51ebd0 100644 --- a/ho_basis.jl +++ b/ho_basis.jl @@ -36,7 +36,7 @@ function get_2p_basis(E_max) l2s = Int[] # E = 2*n1 + l1 + 2*n2 + l2 - for E in 0 : 2*E_max + for E in 2*E_max : -2 : 0 for n1 in 0 : E ÷ 2 for n2 in 0 : (E - 2*n1) ÷ 2 for l1 in 0 : (E - 2*n1 - 2*n2) @@ -99,7 +99,7 @@ function Moshinsky_transform(Es, n1s, l1s, n2s, l2s, Λ) (i, j) = Tuple(idx) (Elhs, N, L, n, l) = s[i, :] (Erhs, n1, l1, n2, l2) = s[j, :] - if Elhs == Erhs + if Elhs == Erhs && triangle_ineq(L, l, Λ) && triangle_ineq(l1, l2, Λ) mat[i, j] = NuclearToolkit.HObracket_d6j(N, L, n, l, n1, l1, n2, l2, Λ, 1.0, dtri, dcgm0, d6j) end end