DVR-jl/mat_eig.jl

43 lines
778 B
Julia

include("CPU.jl")
T=Float32
function V_test(r2)
return -4 * exp(-r2 / 4)
end
d = 1
n = 3
N = 8
L::T = 16
n_imag = 0
μ::T = 0.5
H = HOperator{T}(V_test, d, n, N, L, μ, n_imag)
dim = N ^ (d * (n - 1))
H_mat = zeros(Complex{T}, dim, dim)
iter = CartesianIndices(vectorDims(H))
open("temp/mat_dump.csv", "w") do f
# this can be heavily optimized by getting rid of 'bi' vector
for i in 1 : dim
bi = zeros(Complex{T}, vectorDims(H)...)
bi[iter[i]] = 1
for j in 1 : dim
bj = zeros(Complex{T}, vectorDims(H)...)
bj[iter[j]] = 1
Hbj = similar(bj)
Hbj = mul!(Hbj, H, bj)
H_mat[i, j] = dot(bi, Hbj)
end
end
end
evals, _ = eigen(H_mat)
evals = real.(evals)
print(evals)