Page 1 of 1

### Loschmidt Echo

Posted: 15 Sep 2020, 08:51
Hi Johannes/everyone,
I am trying to perform some sudden quench simulations in the transverse field 1D Ising model and compute the Loschmidt echo. I am doing everything based on the nice example code "c_tebd.py" that is already provided. The procedure that I pursue is the following:
I first set the initial state of the system to the ground state of TFI chain with no coupling (J=0) by MPS:

Code: Select all

``````model_params = dict(L=L, bc_MPS='finite', conserve=None, verbose=verbose)
M_0 = TFIChain(model_params)
p_state = ["up"] * M_0.lat.N_sites
psi_0 = MPS.from_product_state(M_0.lat.mps_sites(), p_state, bc=M_0.lat.bc_MPS)
``````
Now, I want to see how the initial state psi_0 evolves under the dynamics of the 1D Ising Hamiltonian with J=1. To generate the model I use

Code: Select all

``````model_params = dict(L=L, J=1., g=g, bc_MPS='finite', conserve=None, verbose=verbose)
M_1 = TFIChain(model_params)
``````
Then, without changing the 'tebd_params' I set

Code: Select all

``````eng = tebd.Engine(psi_0, M_1, tebd_params)
l_echo = [abs(eng.psi.overlap(psi_0))/psi_0.norm/eng.psi.norm]
Nstep = int(tmax / dt_measure + 0.5)
for n in range(Nstep):
eng.run()
l_echo.append(abs(eng.psi.overlap(psi_0))/psi_0.norm/eng.psi.norm)``````
But I only get a flat line at 1, which is not what one would expect. So, am I doing anything wrong?
Best,
Mike

### Re: Loschmidt Echo

Posted: 21 Sep 2020, 10:14
Welcome!

The MPS which you pass to the TEBDEngine gets modified in place (because we want to avoid unnecessary copies of MPS in case they are large).
In other words, `psi_0` and `eng.epsi` are the same MPS (namely the time evolved one).

The solution is to make a copy of the MPS at some point, e.g.

Code: Select all

``````psi_0 = MPS.from_product_state(M_0.lat.mps_sites(), p_state, bc=M_0.lat.bc_MPS)
psi_t = psi_0.copy()
...
eng = tebd.Engine(psi_t, M_1, tebd_params)
``````

### Re: Loschmidt Echo

Posted: 21 Sep 2020, 13:21
Thanks Johannes!
It indeed worked.