Superposed states with IQTensor

+1 vote
edited

Hi Miles,

Is it possible to have superposed states like ("up" + "down")/sqrt(2.0) for spin-1/2 systems using IQTensor?

I have tried to manually set the elements, but since the divergence of different sectors are different, I am not allowed to do so. Is there any workaround for that?

I have a N-site Hamiltonian, which conserves the spin-z quantum number, and I just want to evolve the system (using Trotter decomposition) with initial product state which has superposed states (like the above) at every site.

with regards,
Titas

Hi Titas,
Thanks for the question. My initial reaction is that this just isn't what the IQTensor system is intended for. What you are asking for is to create a state which doesn't have well-defined quantum numbers but still use tensors which keep track of the (non-existent) quantum numbers. Such tensors would not be block-sparse in your case so all of the extra IQTensor bookkeeping, even if it was allowed, would just slow down the code for no advantage.

I hope that answer is helpful. Are you ok with just using ITensors and MPS for your case rather than IQTensors and IQMPS?

Best regards,
Miles

commented by (190 points)
Hi Miles,

For this initial superposed state, Sz = 0. If I want to conserve spin-z quantum number, how should I do? My understanding is to set "ConservseSz", ture. In v3, IQMPS is removed but I think setting "ConservseSz",true is something equal to using IQTensor, because I want it to evolve in Sz=0 sector. Do I get the correct understanding?
commented by (70k points)
Hi Eric, thanks for the questions (feel free to make a new post too if you want).

Let me address a few of them one-by-one:

1. it is true that for this state (up+dn) the *expected value* of Sz is zero. But it is not an eigenstate of Sz, so it doesn't have a well-defined total Sz quantum number (Sz is not a "good" quantum number of the state). QN conserving ITensors are only for working with tensors that have well-defined quantum numbers of various types.

2. regarding how to turn on quantum number conservation, it actually happens in a few stages. The "under the hood" view is that you first make, or obtain Index objects which have QN subspace information. Then you make ITensors which carry such indices. Then if you do operations like summations or contractions of these ITensors, the code will guarantee that QNs are properly conserved and give you the associated speed benefits etc. You can print out Index and ITensor objects to see if they carry QN information, and also call the function hasQNs on them to test this.

3. "ConserveSz" and related named arguments like "ConserveQNs" are arguments that can be passed to site set constructors, such as SpinHalf, SpinOne, Electron. These objects are basically just arrays of Index objects (in our Julia version that is literally what they are), and all setting "ConserveQNs" or "ConserveSz" to true does is to say "please include QN subspace information in the Index objects when making them."

Ok hope that helps, since it could be explained better on our website and documentation. Feel free to ask some more questions about it.

Best,
Miles
commented by (680 points)
Hi Miles,

I have a similar question as this one. Say I need to calculate O|psi> where O preserves some symmetry G but |psi> does not. That being said, |psi> can (as always) be decomposed into G eigenvectors such that each has a block structure.

My understanding is that the quantum number is taken care by the "boundary tensor". (correct me if I'm wrong.) So a block-structured of |psi> is possible by a proper definition of the boundary one and it would still be efficient if I make use of the symmetry throughout. Is that correct?

Best,
Chengshu
commented by (70k points)
Hi Chengshu,
Thanks for the question but I'm afraid I don't fully understand what you are asking. Are you asking whether you can  do O|psi> while also keeping the symmetry or block structure? Or are you asking whether you can do it at all? Also I'm not sure about the boundary tensor part of the question. Finally, could you please post this as a new question? It helps us to keep track of what has been answered or not - thanks!

Miles
commented by (680 points)
Hi Miles,