0 votes
asked by (270 points)


I was wondering if it is possible to prepare as initial state for the real time evolution a state with one (or more) free particles (let's say fermions) with specific momenta (k1, k2, etc). For instance, I would like to study the evolution of a state with two particles initially at large distance with opposite momenta.

Thanks a lot,

commented by (70.1k points)
Hi Giuseppe, good question but could you provide us with a bit more information? The basic answer I'm planning to give (which I can give in more detail soon) is that you can construct a creation operator as an MPO and use that.

But could you be more specific about the initial state? As you know, states with well-defined momentum have an ill-defined position, so it's not exactly possible to put them at a large distance apart and have precisely specified momenta. So perhaps you are wanted to make wave packets such as Gaussians which are peaked in both momentum and position space?

commented by (14.1k points)
An initial suggestion I would have is that you can think about the creation operator of a momentum state, for example:

a_k^{\dagger} = \sum_x e^{-ikx} a_x^{\dagger}

This operator can be written as an MPO in ITensor of small bond dimension (I think just bond dimension 2). Then you can apply that operator to a product state MPS (for example, a product state of zero occupation). You can also make operators of different momenta and apply them to the same state to make multiple particles.

This would make entirely delocalized particles, so you may need to think about using other momentum states for a particle in a box or mixtures of momentum states to make localized wavepackets.

Let me know if that makes sense and if you have any questions about the procedure.
commented by (270 points)
Hi Miles, thank you very much. Sorry, you are completely right. Actually I meant wave packets (such as Gaussians). For instance, two wave packets at large distance with opposite momenta.
commented by (270 points)
Hi MattFishman, thank you very much for your useful answer. As I wrote to Miles in the previous comment, I actually meant localised wave packets (e.g. Gaussian). Do you think the method you suggested can be used also in this case? Thank you.
commented by (14.1k points)
I believe you could just create a wavepacket with a creation operator:

a^{\dagger} = \sum_x e^{-(x-x_0)^2/\sigma} a_x^{\dagger}

(centered about @@x_0@@ with a width set by @@\sigma@@). Again, you could represent it as a small bond dimension MPO and would apply it to a product state MPS.

Please log in or register to answer this question.

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.