Implement Gram-Schmidt for all 3-body calculations

This commit is contained in:
Nuwan Yapa 2025-01-08 14:03:15 -05:00
parent 9b7eee03f0
commit 98d802b295
5 changed files with 26 additions and 13 deletions

View File

@ -51,9 +51,14 @@ for c in training_c
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
end
weights = repeat(kron(ws, ws), jmax + 1)
weights_mat = spdiagm(weights)
training_vecs = vcat(training_vecs, conj(training_vecs)) # CA-EC
println("Original EC dimensionality = $(length(training_vecs))")
@time "Gram-Schmidt" training_vecs = gram_schmidt!(training_vecs, weights; verbose=true) # orthonormalization
EC_basis = hcat(training_vecs...)
weights_mat = spdiagm(repeat(kron(ws, ws), jmax + 1))
N_EC = transpose(EC_basis) * weights_mat * EC_basis
H0_EC = transpose(EC_basis) * weights_mat * H0 * EC_basis
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
@ -70,7 +75,7 @@ for c in extrapolating_c
# extrapolation
H_EC = H0_EC + c .* Vp_EC
evals = eigvals(H_EC, N_EC)
evals = eigvals(H_EC)
push!(extrapolated, nearest(evals, current_E))
end

View File

@ -53,9 +53,13 @@ for c in training_c
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
end
weights = repeat(kron(ws, ws), jmax + 1)
weights_mat = spdiagm(weights)
println("Original EC dimensionality = $(length(training_vecs))")
@time "Gram-Schmidt" training_vecs = gram_schmidt!(training_vecs, weights; verbose=true) # orthonormalization
EC_basis = hcat(training_vecs...)
weights_mat = spdiagm(repeat(kron(ws, ws), jmax + 1))
N_EC = transpose(EC_basis) * weights_mat * EC_basis
H0_EC = transpose(EC_basis) * weights_mat * H0 * EC_basis
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
@ -71,7 +75,7 @@ for c in extrapolating_c
# extrapolation
H_EC = H0_EC + c .* Vp_EC
evals = eigvals(H_EC, N_EC)
evals = eigvals(H_EC)
push!(extrapolated, nearest(evals, current_E))
end

View File

@ -33,8 +33,10 @@ end
# CA-EC
training_vecs = vcat(training_vecs, conj(training_vecs))
println("Original EC dimensionality = $(length(training_vecs))")
@time "Gram-Schmidt" training_vecs = gram_schmidt!(training_vecs; verbose=true) # orthonormalization
EC_basis = hcat(training_vecs...)
N_EC = transpose(EC_basis) * EC_basis
H0_EC = transpose(EC_basis) * H0 * EC_basis
Vp_EC = transpose(EC_basis) * Vp * EC_basis
@ -50,7 +52,7 @@ for c in extrapolating_c
# extrapolation
H_EC = H0_EC + c .* Vp_EC
evals = eigvals(H_EC, N_EC)
evals = eigvals(H_EC)
push!(extrapolated, nearest(evals, current_E))
end

View File

@ -27,8 +27,10 @@ for c in training_c
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
end
println("Original EC dimensionality = $(length(training_vecs))")
@time "Gram-Schmidt" training_vecs = gram_schmidt!(training_vecs; verbose=true) # orthonormalization
EC_basis = hcat(training_vecs...)
N_EC = transpose(EC_basis) * EC_basis
H0_EC = transpose(EC_basis) * H0 * EC_basis
V_EC = transpose(EC_basis) * V * EC_basis
@ -42,7 +44,7 @@ for c in extrapolating_c
# extrapolation
H_EC = H0_EC + c .* V_EC
evals = eigvals(H_EC, N_EC)
evals = eigvals(H_EC)
push!(extrapolated, nearest(evals, current_E))
end

View File

@ -59,11 +59,11 @@ for c in training_c
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
end
# CA-EC
training_vecs = vcat(training_vecs, conj(training_vecs))
training_vecs = vcat(training_vecs, conj(training_vecs)) # CA-EC
println("Original EC dimensionality = $(length(training_vecs))")
@time "Gram-Schmidt" training_vecs = gram_schmidt!(training_vecs; verbose=true) # orthonormalization
EC_basis = hcat(training_vecs...)
N_EC = transpose(EC_basis) * EC_basis
Ha_EC = transpose(EC_basis) * Ha * EC_basis
Vb_EC = transpose(EC_basis) * Vb * EC_basis
@ -80,7 +80,7 @@ for c in extrapolating_c
# extrapolation
H_EC = Ha_EC + c .* Vb_EC
evals = eigvals(H_EC, N_EC)
evals = eigvals(H_EC)
push!(extrapolated, nearest(evals, current_E))
end