ITensor / ITensor/ITensorNetworks.jl
Improvements in `OpSum` to `TTN` conversion
Open
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 128
- Forks
- 23
- Avg merge
- 4d 7h
- Merged PRs (30d)
- 7
Description
Followup to #116:
- Replace
MatElemandQNArrElemwith FillArrays.OneElement. - Rename
determine_val_typetocoefficient_type. - Default
OpSumcoefficient type toFloat64, require users to specifyOpSum{ComplexF64}if they want that. - Check / Improve compatibility with feature set of
OpSumtoMPOconversion in ITensors: support multi-site operators, ensure sorting comparisons work and are implemented consistently with ITensors implementation, implement all relevant sorting w.r.t to traversal order of tree instead of site-labels to ensure compatibility with arbitraryvertextype. - Copy
ITensorsfunctions being used inttn_svdlikeITensors.determineValType,ITensors.posInLink!,ITensors.MatElem, etc. toITensorNetworks.jland update their style. Functions likeITensors.which_op,ITensors.params,ITensors.site,ITensors.argument, etc. that come from theOpsmodule related toOpSumshouldn't be copied over. - Split off logic for building symbolic representation of TTNO into a separate function.
- Move
calc_qnoutside ofttn_svd. - Use sparse matrix/array data structures or metagraphs for symbolic representation of TTNO (for example NDTensors.SparseArrayDOKs may be useful for that).
- Split off logic of grouping terms by QNs.
- Factor out logic for building link indices, make use of
IndsNetwork. - Refactor code logic to first work without merged blocks/QNs and then optionally merge and compress as needed.
- Support other compression schemes, like rank-revealing sparse QR.
- Implement sequential compression as opposed to the current method which uses parallel compression (i.e. right now it compresses each link index effectively independently) to improve performance.
- Allow compression to take into account operator information (perhaps by preprocessing by expanding in an orthonormal operator basis), not just coefficients.
- Handle starting and ending blocks in a more elegant way, for example as part of a sparse matrix.
- Handle vertices without any site indices (internal vertices, such as for hierarchical TTN).
- Make sure the fermion signs of the tensors being constructed are correct and work with with automatic fermion sign system.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with ttn_svd and the OpSum-to-TTN conversion described as a follow-up to #116, then compare the OpSum-to-MPO conversion in ITensors. The checklist spans type changes, symbolic TTNO construction, QN grouping, compression, traversal ordering, and fermion signs, so the relevant entry points and tests must be identified before work begins. Done is not defined as a single acceptance criterion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend, performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100