Skip to content

FixTaylorCluster for non-square (finite) Hamiltonians - #511

Open
VictorVanthilt wants to merge 5 commits into
mainfrom
vv-rectangular-finite-tempos
Open

FixTaylorCluster for non-square (finite) Hamiltonians#511
VictorVanthilt wants to merge 5 commits into
mainfrom
vv-rectangular-finite-tempos

Conversation

@VictorVanthilt

@VictorVanthilt VictorVanthilt commented Aug 12, 2026

Copy link
Copy Markdown
Member

Description

The TaylorCluster algorithm's "loopback" algorithm involves removing the rows and columns that are labled by level-labels only containing 1's and "3"'s. Currently the rows and columns were removed using the right-virtualsize of the Hamiltonian as the "3" level.

To be correct for non-square Hamiltonians, we need to remove the columns with a "3" level based on the right-virtualsize and the rows based on the left-virtual size. This PR implements this.

Checklist

  • Tests pass locally (julia --project=test test/runtests.jl, or the relevant subset)
  • Documentation updated, if this PR changes public API (docstrings, docs/src/)
  • Runic formatter is run
  • Changelog entry added under [Unreleased] in docs/src/changelog.md, if this PR is user-facing (new feature, behavior change, bug fix, deprecation, or removal)

end

function _get_threelevel_linds(virtual_sz, linds)
row_threelevels_linds = Int[]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have to allocate this before running over it? Is it not easier to just inline this function into the loop?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[edit] I see you need this below

Comment on lines +166 to +167
(I[1] in row_threelevel_linds || I[4] in col_threelevel_linds) && delete!(slice, I)
end

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we check the properties that define the threelevel_linds instead, mapping it to a cartesian index first?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not quite sure I fully understood your comment but I changed the code to first make the set of CartesianIndices that fall in a to-be-deleted row/column. I then loop over the intersection of this set and the nonzero_keys. This avoids a lot of misses in the "for key in nonzero_keys" loop.

lmk if this is not what you meant

@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
src/algorithms/timestep/taylorcluster.jl 98.33% <100.00%> (+0.24%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@VictorVanthilt

Copy link
Copy Markdown
Member Author

I don't understand this test failure, I can't see what failed from the logs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants