From c302ad51fa6e34bf9f7b9f5d758d80e839864a77 Mon Sep 17 00:00:00 2001 From: Nuwan Yapa Date: Thu, 18 Apr 2024 15:03:42 -0400 Subject: [PATCH] Test against Buck et al instead of Brody et al --- test/OSBRACKETS.jl | 52 +++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/test/OSBRACKETS.jl b/test/OSBRACKETS.jl index f18a7ec..748b673 100644 --- a/test/OSBRACKETS.jl +++ b/test/OSBRACKETS.jl @@ -2,27 +2,35 @@ # gfortran -shared -fPIC osbrac.f90 -o osbrac.so # gfortran -shared -fPIC allosbrac.f90 -o allosbrac.so -println("OSBRACKETS test against Brody et al.") +println("OSBRACKETS test against Buck et al.") -Emax = 3 -Λ = 1 -l1 = 1 -l2 = 2 +n1 = [0,0,0,0,0,0,2,2,2,2]; +l1 = [0,1,1,2,2,2,2,2,2,2]; +n2 = [0,0,0,0,0,0,1,1,1,1]; +l2 = [0,3,5,2,4,5,3,3,4,4]; +N = [0,0,0,0,1,0,0,1,0,3]; +L = [0,2,1,1,3,5,3,0,2,2]; +n = [0,1,0,0,0,0,1,2,4,0]; +l = [0,0,5,3,1,2,6,5,2,4]; +Λ = [0,2,6,4,3,4,4,5,2,4]; -ϵ = (Emax - Λ) % 2 -N = (l1 - l2 + Λ - ϵ) ÷ 2 -M = (l1 + l2 - Λ - ϵ) ÷ 2 -L = Λ -NQMAX = Emax -CO = 1/sqrt(2) -SI = 1/sqrt(2) -FIRSTCALL = true -# from source: BRAC(NP,N1P,MP,N1,N2) with dimensions BRAC(0:L,0:(NQMAX-L)/2,0:(NQMAX-L)/2,0:(NQMAX-L)/2,0:(NQMAX-L)/2) -BRAC = zeros(Float64, L + 1, (NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1) +function calculate_single_bracket(n1′, l1′, n2′, l2′, n1, l1, n2, l2, Λ) # Efros notation -- DON'T CONFUSE -@ccall "../OSBRACKETS/osbrac.so".osbrac_(N::Ref{Int32},M::Ref{Int32},L::Ref{Int32},NQMAX::Ref{Int32},CO::Ref{Float64},SI::Ref{Float64},FIRSTCALL::Ref{UInt8},BRAC::Ptr{Array{Float64}})::Cvoid + Emax = max(l1′ + l2′ + 2 * (n1′ + n2′), l1 + l2 + 2 * (n1 + n2)) + + ϵ = (Emax - Λ) % 2 + N = (l1 - l2 + Λ - ϵ) ÷ 2 + M = (l1 + l2 - Λ - ϵ) ÷ 2 + L = Λ + NQMAX = Emax + CO = 1/sqrt(2) + SI = 1/sqrt(2) + FIRSTCALL = true + # from source: BRAC(NP,N1P,MP,N1,N2) with dimensions BRAC(0:L,0:(NQMAX-L)/2,0:(NQMAX-L)/2,0:(NQMAX-L)/2,0:(NQMAX-L)/2) + BRAC = zeros(Float64, L + 1, (NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1,(NQMAX - L) ÷ 2 + 1) + + @ccall "../OSBRACKETS/osbrac.so".osbrac_(N::Ref{Int32},M::Ref{Int32},L::Ref{Int32},NQMAX::Ref{Int32},CO::Ref{Float64},SI::Ref{Float64},FIRSTCALL::Ref{UInt8},BRAC::Ptr{Array{Float64}})::Cvoid -function get_bracket(n1′, l1′, n2′, l2′, n1, n2) Nq = l1 + l2 + 2 * (n1 + n2) Nq′ = l1′ + l2′ + 2 * (n1′ + n2′) if Nq ≠ Nq′; return 0; end @@ -31,13 +39,9 @@ function get_bracket(n1′, l1′, n2′, l2′, n1, n2) M′ = (l1′ + l2′ - Λ - ϵ) ÷ 2 N1 = n1 N2 = n2 + return BRAC[N′ + 1, N1′ + 1, M′ + 1, N1 + 1, N2 + 1] end -test_n = [0 0 0 0 1 1] -test_l = [0 1 1 2 0 1] -test_N = [1 0 1 0 0 0] -test_L = [1 2 0 1 1 0] - -bracs = get_bracket.(test_n, test_l, test_N, test_L, 0, 0) -display(bracs) \ No newline at end of file +bracs = calculate_single_bracket.(n1, l1, n2, l2, N, L, n, l, Λ) +display(bracs)