+1 vote
asked by (300 points)

I am coding in C++.

I am interested in performing the time evolution of an open quantum system. In doing so, I want to adopt the stochastic unravelling of the quantum master equation.
I would like to adopt the TEBD algorithm and I need apply a two-site gate given by the exponential of a non-hermitian operator.

I have a couple of questions:

1) Can the procedure in http://itensor.org/docs.cgi?vers=cppv3&page=formulas/tevol_trotter be applied for non-hermitian Hamiltonian?

2) Is there a built-in function to perform the exponential (as you would do for a hermitian operator)? Should I simply rely in the expansion exp(-i t H) \approx 1 - itH + ...?

Thank you in advance for your help!

1 Answer

0 votes
answered by (70.1k points)

Thanks for the question. Yes the example code you linked to (involving the BondGate class) ought to work well for non-Hermitian operators. I think the Trotter expansion itself would still be justified in this case and the part of the code which does the exponentiation, which is inside the BondGate class itself, uses a general enough algorithm that it should handle exponentiating any type of operator. (Internally, BondGate sums a very high order Taylor series to exponentiate the local operator.)

Regarding part (2) of your question, there is a built-in function to exponentiate local Hermitian operators, which is called expHermitian, but only for that case. However, as mentioned above the code you linked to uses the BondGate class which does the exponentiation internally using a different (high-order Taylor) algorithm. So that may be all you need for your use case.

But we have not written tests for the non-Hermitian case, so I'd say please proceed with some case. Please test some exactly solvable or known limits of your problem such as small system sizes where you could do everything exactly with matrix methods. This is a good practice anyway even when using fully supported and tested cases such as Hermitian time evolution, because every new physical system presents its own challenges.

Please let us know if you don't get the results you expect when doing those initial checks.

Best regards,

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.