+1 vote
asked by (280 points)

Dear all:

I would like to understand more about iqdmrg. I hope you can help me. Thanks in advance. The questions are listed as below.

  1. Is it correct that iqdmrg is a U(1) symmetric dmrg program?

  2. Take heisenberg chain as an example, the quantum number of the tensor index in the center of the chain is truncated. I would like to know how you do this. For example, one tensor at site 49 shown below. I suppose that for this tensor there also quantum numbers like QN(49), QN(48),... but here they are definitely truncated.

/--------------IQTensor--------------
r=3 div=QN(0) log(scale)=0
IQIndex(d,8,Link,7) < Out >
(d1,1,Link,822) QN(3)
(d2,3,Link,201) QN(1)
(d3,3,Link,631) QN(-1)
(d4,1,Link,125) QN(-3)
IQIndex(S=1/2 49,2,Site,338) < Out >
(Up 49,1,Site,810) QN(1)
(Dn 49,1,Site,550) QN(-1)
IQIndex(d,8,Link,551) < In >
(d0,1,Link,410) QN(4)
(d1,3,Link,691) QN(2)
(d2,3,Link,705) QN(0)
(d3,1,Link,921) QN(-2)
\ ------------------------------------

  1. I also tested with pure external magnetic form H= \sum h*S^z. The ground state shows that the total quantum number of the wave function is QN(0), which concerned me a lot since I expect the quantum number of the chain should be QN(N). Is that correct?

Sorry for the massive contents, and probably trivial questions listed above. But I do want to know more on this. Any comments are welcomed. Thanks very much.

Best Regards
Wangwei Lan

1 Answer

+1 vote
answered by (70.1k points)

Hi Wangwei,
These are all reasonable questions based on the small amount of documentation we have on the "IQTensor" system so far. Hopefully in the near future the ITensor book section will be expanded even more to cover all of these questions.

(1) iqdmrg (and the IQTensor / IQMPS / IQMPO system more generally) can handle U(1) symmetries associated with conserving quantum numbers following an integer addition rule as well as quantum numbers following a Z_N addition rule (addition modulo N). So for example you can also conserve just fermion parity instead of fermion number, or more exotic kinds of quantum numbers. The documentation page on the QN class gives a variety of examples: http://itensor.org/docs.cgi?page=classes/qn

(2) The way IQTensors are truncated is that all of their non-zero blocks are SVD'd separately (for more on IQTensor blocks, see http://itensor.org/docs.cgi?page=book/block_sparse). All of the resulting singular values are collected, and sorted, and then used to determine a threshold or cutoff for the entire spectrum of the IQTensor. This threshold is then applied to each block to truncate it. Some blocks may get truncated entirely in this process in which case they are removed. The result is really very similar to how truncation is defined for SVD'ing a dense tensor but is much more efficient due to the sparsity.

(3) The way that iqdmrg determines the quantum number (QN) sector to work in is from the initial state (IQMPS wavefunction) that you provide it. The main feature of iqdmrg is that it will not change the global QNs of the IQMPS. So if you give it an IQMPS with a total Sz of zero, nothing the code does can change this, even if you include a magnetic field. If you want to get the ground state in a different QN sector, you must change the initial state you provide. The InitState object is a convenient way to specify an initial state by giving a product-state spin pattern.

Hope that helps. Please post a comment back if you have additional questions.

Miles

commented by (280 points)
Hello, Miles,

Thanks very much for the detailed explanation. These are very helpful to me. I think now all these things are clear to me.
Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.

Categories

...