0 votes
asked by (420 points)

Dear ITensor comminuty

I am interested to probe the minimum energy of a general many-body Hamiltonian, let's say spin models, in different subspaces. For example, plotting the E{min} versos S^z{total} }.

any comments and help would be appreciated


1 Answer

0 votes
answered by (70.1k points)
selected by
Best answer

Hi Javad,
For this goal the QN conserving DMRG feature of ITensor should be exactly what you need. I believe you are using the C++ version of ITensor, correct? Either way the basic approach for conserving total Sz is to make an initial wavefunction which has a well-defined total Sz value and is the one you want to study. Then, if your site indices carry QN information (this is the default behavior in the C++ version; for Julia you have to put conserve_qns=true when making the sites), then the DMRG code will automatically keep your wavefunction in the same total Sz sector throughout the optimization.

So if you use the above approach and just change the total Sz value of your initial states to the values you want to study, and obtain the resulting energies, you should get the information you are looking for.

Of course please ask in a comment below if you have any questions about that.

Best regards,

commented by (420 points)
Dear Miles

 I am using c++  and many thanks for your clear explanation.

Best regards
commented by (70.1k points)
Glad it was helpful. For calculations like this, even though the conservation of total Sz is guaranteed by the code (the tensors have a block structure that ensures this), I still like to verify that the total Sz is the same at the end of the calculation as what I put in. For this you can measure the magnetization of each site and then compute the total, or you can use the function `totalQN(psi)` in ITensor to evaluate the total quantum number of an MPS and check that way.

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.