0 votes
asked by (130 points)

What do you propose as the fastest method to create a LocalMPO (2 sites are non-traced) where the MPO is sandwiched between different states? Is there some automatic method? I can always create left and right boundary tensors and then call the LocalMPO class.

Thanks, Alex

1 Answer

+1 vote
answered by (70.1k points)

Hi Alex,
Thanks for the question. I think for what you are asking it would be best to just reimplement the LocalMPO type and specialize it for you case. It was written assuming that the states on both sides would be the conjugate of each other. So you can just copy that code and have it take two different MPS as input then generalize the code appropriately. You should also rename the type to something besides LocalMPO to avoid any redefinition issues.

Also, you are probably well aware of this, but the "effective Hamiltonian" or effective operator that will result from using two different states may not be Hermitian. This may be what you want for your algorithm, but just in case you were planning to use it in our DMRG code for some reason, it will assume a Hermitian operator and will give wrong results, hang, or crash if you give it a non-Hermitian operator.


commented by (130 points)
Thanks for the answer. I decided to not use the LocalMPO class. It makes the code a little messier  but it becomes easier to experiment with. I was not planning to use DMRG. The code is meant to shift-invert operators.

By the way if I recall correct you were interested at some point on understanding what preconditioners are possible in operations regarding effective Hamiltonians. I happen to be in a similar situation at the moment. I can only efficiently use a diagonal preconditioner. Everything else seem to require the creation of the effective Hamiltonian matrix, which is what I want to avoid.

Thanks for your fast response.
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.