Implement Gram-Schmidt for all 3-body calculations
This commit is contained in:
parent
9b7eee03f0
commit
98d802b295
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue