shuaigroup / Renormalizer

Quantum dynamics package based on tensor network states
https://shuaigroup.github.io/Renormalizer/
Apache License 2.0
52 stars 16 forks source link

How to construct time-dependent MPOs with the general optimal method directly? #164

Open zhoulq2333 opened 11 months ago

zhoulq2333 commented 11 months ago

Sometimes we need to deal with time-dependent Hamiltonian(eg. the effective Hamiltonian in Hierarchy of Matrix Product States). I have tried two methods, but each of them has some drawbacks.

  1. Devide the operators into two groups, the time-independent group and the time-dependent group. The MPO of the former group is generated when the model is initiated, and the MPO of the latter group is generated each time during the evolution. The two MPOs are added directly. Since the time-dependent MPO is much simpler, the construction may be not time-consuming. But the direct adding makes the bond dimension of the total MPO much larger, so the result is not the optimal MPO.
  2. Generate the MPO of the total Hamiltonian from the operator list each time during the evolution. The resulting MPO is optimal, but it is time-consuming to generate the MPO from the total Hamiltonian frequently. MPO construction

So can we construct time-dependent numerical MPOs from optimal symbolic MPOs with parameters(time)?

liwt31 commented 9 months ago

Thanks for the feedback. I assume the time-dependent part only alters the coefficients and not the operators? I don't think currently we have a better solution for this scenario, e.g., reusing existing MPOs with different coefficients. Maybe in the future we can use sympy to construct the symbolic MPO.

jiangtong1000 commented 9 months ago

@zhoulq2333 I am curious about the timing difference between re-constructing a new mpo and single-step propagation, usually how slow can it be?

hams = []
for p, q in ...:
    hams.append(ops[p,q] * new_coeff[p, q])
new_mpo.append(Mpo(model, terms=hams))

where ops is pre-stored. Also, sounds like that the model can be reused?