Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question : Contraction of Brock sparse tensors in which they bave different definition of charges. #977

Open
Watayo opened this issue Sep 11, 2024 · 0 comments

Comments

@Watayo
Copy link

Watayo commented Sep 11, 2024

@mganahl

Hello, I am a beginner in Block Sparse (BS) tensors, so I don’t fully understand the entire concept of their codes.
Currently, I need to contract BS tensors belonging to some edge that have different charges.
For example, in the case of DMRG algorithms for spin-1/2 systems, we need to have spin operators such as Sz, S+ (S-) renormalized by MPS tensors at each bond. When initializing MPS tensors with physical bonds having U1Charge([0, 1]), they can be contracted with Sz operators without any issues. However, S+ operators cannot be contracted at the same time.

Sz = BlockSparseTensor.fromdense([Index(U1Charge[0, 1], flow=False), Index(U1Charge[0, 1], flow=True)], np.array([[1, 0], [0, -1]]))  
Sp = BlockSparseTensor.fromdense([Index(U1Charge[0, 1], flow=False), Index(U1Charge[1, 2], flow=True)], np.array([[0, 2], [0, 0]]))  

I agree with that an operator like (Sz + Sp) is not a well-defined BS tensor. However, contractions between these edges could still be performed based on the charge numbers themselves. To avoid this issue, we could split the MPS tensors into two parts for each operator, but I wonder if this is not efficient in terms of memory resources.

Best regards

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

No branches or pull requests

1 participant