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)])
|
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
weights = repeat(kron(ws, ws), jmax + 1)
|
||||||
|
weights_mat = spdiagm(weights)
|
||||||
|
|
||||||
training_vecs = vcat(training_vecs, conj(training_vecs)) # CA-EC
|
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...)
|
EC_basis = hcat(training_vecs...)
|
||||||
weights_mat = spdiagm(repeat(kron(ws, ws), jmax + 1))
|
|
||||||
N_EC = transpose(EC_basis) * weights_mat * EC_basis
|
N_EC = transpose(EC_basis) * weights_mat * EC_basis
|
||||||
H0_EC = transpose(EC_basis) * weights_mat * H0 * EC_basis
|
H0_EC = transpose(EC_basis) * weights_mat * H0 * EC_basis
|
||||||
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
|
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
|
||||||
|
|
@ -70,7 +75,7 @@ for c in extrapolating_c
|
||||||
|
|
||||||
# extrapolation
|
# extrapolation
|
||||||
H_EC = H0_EC + c .* Vp_EC
|
H_EC = H0_EC + c .* Vp_EC
|
||||||
evals = eigvals(H_EC, N_EC)
|
evals = eigvals(H_EC)
|
||||||
push!(extrapolated, nearest(evals, current_E))
|
push!(extrapolated, nearest(evals, current_E))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,13 @@ for c in training_c
|
||||||
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
||||||
end
|
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...)
|
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
|
H0_EC = transpose(EC_basis) * weights_mat * H0 * EC_basis
|
||||||
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
|
Vp_EC = transpose(EC_basis) * weights_mat * Vp * EC_basis
|
||||||
|
|
||||||
|
|
@ -71,7 +75,7 @@ for c in extrapolating_c
|
||||||
|
|
||||||
# extrapolation
|
# extrapolation
|
||||||
H_EC = H0_EC + c .* Vp_EC
|
H_EC = H0_EC + c .* Vp_EC
|
||||||
evals = eigvals(H_EC, N_EC)
|
evals = eigvals(H_EC)
|
||||||
push!(extrapolated, nearest(evals, current_E))
|
push!(extrapolated, nearest(evals, current_E))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,10 @@ end
|
||||||
# CA-EC
|
# CA-EC
|
||||||
training_vecs = vcat(training_vecs, conj(training_vecs))
|
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...)
|
EC_basis = hcat(training_vecs...)
|
||||||
N_EC = transpose(EC_basis) * EC_basis
|
|
||||||
H0_EC = transpose(EC_basis) * H0 * EC_basis
|
H0_EC = transpose(EC_basis) * H0 * EC_basis
|
||||||
Vp_EC = transpose(EC_basis) * Vp * EC_basis
|
Vp_EC = transpose(EC_basis) * Vp * EC_basis
|
||||||
|
|
||||||
|
|
@ -50,7 +52,7 @@ for c in extrapolating_c
|
||||||
|
|
||||||
# extrapolation
|
# extrapolation
|
||||||
H_EC = H0_EC + c .* Vp_EC
|
H_EC = H0_EC + c .* Vp_EC
|
||||||
evals = eigvals(H_EC, N_EC)
|
evals = eigvals(H_EC)
|
||||||
push!(extrapolated, nearest(evals, current_E))
|
push!(extrapolated, nearest(evals, current_E))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,10 @@ for c in training_c
|
||||||
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
||||||
end
|
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...)
|
EC_basis = hcat(training_vecs...)
|
||||||
N_EC = transpose(EC_basis) * EC_basis
|
|
||||||
H0_EC = transpose(EC_basis) * H0 * EC_basis
|
H0_EC = transpose(EC_basis) * H0 * EC_basis
|
||||||
V_EC = transpose(EC_basis) * V * EC_basis
|
V_EC = transpose(EC_basis) * V * EC_basis
|
||||||
|
|
||||||
|
|
@ -42,7 +44,7 @@ for c in extrapolating_c
|
||||||
|
|
||||||
# extrapolation
|
# extrapolation
|
||||||
H_EC = H0_EC + c .* V_EC
|
H_EC = H0_EC + c .* V_EC
|
||||||
evals = eigvals(H_EC, N_EC)
|
evals = eigvals(H_EC)
|
||||||
push!(extrapolated, nearest(evals, current_E))
|
push!(extrapolated, nearest(evals, current_E))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,11 @@ for c in training_c
|
||||||
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
push!(training_vecs, evecs[:, nearestIndex(evals, current_E)])
|
||||||
end
|
end
|
||||||
|
|
||||||
# CA-EC
|
training_vecs = vcat(training_vecs, conj(training_vecs)) # 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...)
|
EC_basis = hcat(training_vecs...)
|
||||||
N_EC = transpose(EC_basis) * EC_basis
|
|
||||||
Ha_EC = transpose(EC_basis) * Ha * EC_basis
|
Ha_EC = transpose(EC_basis) * Ha * EC_basis
|
||||||
Vb_EC = transpose(EC_basis) * Vb * EC_basis
|
Vb_EC = transpose(EC_basis) * Vb * EC_basis
|
||||||
|
|
||||||
|
|
@ -80,7 +80,7 @@ for c in extrapolating_c
|
||||||
|
|
||||||
# extrapolation
|
# extrapolation
|
||||||
H_EC = Ha_EC + c .* Vb_EC
|
H_EC = Ha_EC + c .* Vb_EC
|
||||||
evals = eigvals(H_EC, N_EC)
|
evals = eigvals(H_EC)
|
||||||
push!(extrapolated, nearest(evals, current_E))
|
push!(extrapolated, nearest(evals, current_E))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue