Test against Buck et al instead of Brody et al

This commit is contained in:
Nuwan Yapa 2024-04-18 15:03:42 -04:00
parent 643dc4dd8b
commit c302ad51fa
1 changed files with 28 additions and 24 deletions

View File

@ -2,27 +2,35 @@
# gfortran -shared -fPIC osbrac.f90 -o osbrac.so # gfortran -shared -fPIC osbrac.f90 -o osbrac.so
# gfortran -shared -fPIC allosbrac.f90 -o allosbrac.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 n1 = [0,0,0,0,0,0,2,2,2,2];
Λ = 1 l1 = [0,1,1,2,2,2,2,2,2,2];
l1 = 1 n2 = [0,0,0,0,0,0,1,1,1,1];
l2 = 2 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 function calculate_single_bracket(n1, l1, n2, l2, n1, l1, n2, l2, Λ) # Efros notation -- DON'T CONFUSE
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 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)
Nq = l1 + l2 + 2 * (n1 + n2) Nq = l1 + l2 + 2 * (n1 + n2)
if Nq Nq; return 0; end if Nq Nq; return 0; end
@ -31,13 +39,9 @@ function get_bracket(n1, l1, n2, l2, n1, n2)
M = (l1 + l2 - Λ - ϵ) ÷ 2 M = (l1 + l2 - Λ - ϵ) ÷ 2
N1 = n1 N1 = n1
N2 = n2 N2 = n2
return BRAC[N + 1, N1 + 1, M + 1, N1 + 1, N2 + 1] return BRAC[N + 1, N1 + 1, M + 1, N1 + 1, N2 + 1]
end end
test_n = [0 0 0 0 1 1] bracs = calculate_single_bracket.(n1, l1, n2, l2, N, L, n, l, Λ)
test_l = [0 1 1 2 0 1] display(bracs)
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)