Skip to content

Commit

Permalink
added degeneracy checker in iterative diag
Browse files Browse the repository at this point in the history
  • Loading branch information
abhirup-m committed Nov 4, 2024
1 parent 3789af3 commit d4bd0ee
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/iterDiag.jl
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,9 @@ function TruncateSpectrum(
)
if isnothing(corrQuantumNoReq)
# ensure we aren't truncating in the middle of degenerate states
if eigVals[maxSize + 1] / eigVals[maxSize] > 1 + degenTol
maxSize = minimum((findlast((eigVals[maxSize] * (1 + degenTol)), eigVals), 2 * maxSize))
end
rotation = rotation[:, 1:maxSize]
if !isnothing(quantumNos)
quantumNos = quantumNos[1:maxSize]
Expand All @@ -207,8 +210,17 @@ function TruncateSpectrum(
retainBasisVectors = findall(q -> corrQuantumNoReq(q, maximum(currentSites)), quantumNos)
otherBasisVectors = findall(q -> !corrQuantumNoReq(q, maximum(currentSites)), quantumNos)
if length(retainBasisVectors) < maxSize
remnantSize = maxSize - length(retainBasisVectors)
if eigVals[otherBasisVectors[remnantSize] + 1] / eigVals[otherBasisVectors[remnantSize]] > 1 + degenTol
remnantSize = minimum((findlast((eigVals[otherBasisVectors[remnantSize]] * (1 + degenTol)), eigVals),
2 * maxSize - length(retainBasisVectors))
)
end
append!(retainBasisVectors, otherBasisVectors[1:(maxSize - length(retainBasisVectors))])
else
if eigVals[retainBasisVectors[maxSize] + 1] / eigVals[retainBasisVectors[maxSize]] > 1 + degenTol
maxSize = minimum((findlast((eigVals[retainBasisVectors[maxSize]] * (1 + degenTol)), eigVals), 2 * maxSize))
end
retainBasisVectors = retainBasisVectors[1:maxSize]
end

Expand Down

0 comments on commit d4bd0ee

Please sign in to comment.