# The difference between dmrg\_x and TDVP.dmrg

**URL:** https://itensor.discourse.group/t/the-difference-between-dmrg-x-and-tdvp-dmrg/1372
**Category:** DMRG and Numerical Methods
**Created:** [December 20, 2023, 2:23am UTC](https://itensor.discourse.group/t/the-difference-between-dmrg-x-and-tdvp-dmrg/1372 "2023-12-20T02:23:34Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![jzHan](https://avatars.discourse-cdn.com/v4/letter/j/45deac/32.png) [@jzHan](https://itensor.discourse.group/u/jzHan)
#### Post date: [December 20, 2023, 2:23am UTC](https://itensor.discourse.group/t/the-difference-between-dmrg-x-and-tdvp-dmrg/1372/1 "2023-12-20T02:23:34Z")

</div>

Hello all,  
I am learning the example program in [ITensorTDVP.jl](https://github.com/ITensor/ITensorTDVP.jl/blob/main/examples/01_tdvp.jl).I successfully ran the program in the example and concluded that the ground state energy obtained using the “TDVP”, “dmrg”, and “ITensorTDVP.dmrg” functions is almost consistent.

```julia
ϕ = tdvp(
  H,
  -1.0,
  ψ;
  nsweeps=20,
  reverse_step=false,
  normalize=true,
  maxdim=30,
  cutoff=1e-10,
  outputlevel=1,
)

e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)

ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)

```

out:

```julia
inner(ϕ', H, ϕ) / inner(ϕ, ϕ) = -3.8557706724019356
inner(ϕ2', H, ϕ2) / inner(ϕ2, ϕ2) = -3.8557718806577608
inner(ϕ3', H, ϕ3) / inner(ϕ3, ϕ3) = -3.85577188065776

```

But when I use “dmrg\_x” in the second example program, i obtained some different results.

```julia
ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)

```

out:

```julia
inner(ϕ4', H, ϕ4) / inner(ϕ4, ϕ4) = -2.0108634600077835

```

It is obvious that the energy obtained by “dmrg\_x” is significantly different from the previous three. I don’t understand if it’s because of my incorrect parameter settings or my incorrect usage of these functions.  
And the running time of “dmrg\_x” is significantly longer than those

```julia
e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)
After sweep 1 energy=-3.855675239456714 maxlinkdim=20 maxerr=2.02E-06 time=0.027
After sweep 2 energy=-3.85577157471479 maxlinkdim=20 maxerr=3.00E-07 time=0.021
After sweep 3 energy=-3.8557716229615386 maxlinkdim=20 maxerr=2.89E-07 time=0.028
After sweep 4 energy=-3.8557716700495535 maxlinkdim=20 maxerr=2.74E-07 time=0.025
After sweep 5 energy=-3.8557717129654874 maxlinkdim=20 maxerr=2.59E-07 time=0.028
After sweep 6 energy=-3.8557717540676437 maxlinkdim=20 maxerr=2.44E-07 time=0.038
After sweep 7 energy=-3.855771793233654 maxlinkdim=20 maxerr=2.31E-07 time=0.023
After sweep 8 energy=-3.85577183038367 maxlinkdim=20 maxerr=2.19E-07 time=0.022
After sweep 9 energy=-3.855771865602356 maxlinkdim=20 maxerr=2.08E-07 time=0.024
After sweep 10 energy=-3.8557718989883014 maxlinkdim=20 maxerr=1.97E-07 time=0.026

ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=2.02E-06 current_time=Inf time=0.035
After sweep 2: maxlinkdim=20 maxerr=3.00E-07 current_time=Inf time=0.019
After sweep 3: maxlinkdim=20 maxerr=2.82E-07 current_time=Inf time=0.024
After sweep 4: maxlinkdim=20 maxerr=2.67E-07 current_time=Inf time=0.027
After sweep 5: maxlinkdim=20 maxerr=2.51E-07 current_time=Inf time=0.027
After sweep 6: maxlinkdim=20 maxerr=2.37E-07 current_time=Inf time=0.059
After sweep 7: maxlinkdim=20 maxerr=2.25E-07 current_time=Inf time=0.03
After sweep 8: maxlinkdim=20 maxerr=2.13E-07 current_time=Inf time=0.021
After sweep 9: maxlinkdim=20 maxerr=2.02E-07 current_time=Inf time=0.026
After sweep 10: maxlinkdim=20 maxerr=1.92E-07 current_time=Inf time=0.028

ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=6.52E-03 current_time=Inf time=1.132
After sweep 2: maxlinkdim=20 maxerr=8.37E-03 current_time=Inf time=1.615
After sweep 3: maxlinkdim=20 maxerr=6.05E-03 current_time=Inf time=1.553
After sweep 4: maxlinkdim=20 maxerr=2.37E-03 current_time=Inf time=1.912
After sweep 5: maxlinkdim=20 maxerr=2.41E-03 current_time=Inf time=1.623
After sweep 6: maxlinkdim=20 maxerr=4.68E-03 current_time=Inf time=1.723
After sweep 7: maxlinkdim=20 maxerr=5.73E-03 current_time=Inf time=1.675
After sweep 8: maxlinkdim=20 maxerr=9.67E-03 current_time=Inf time=1.731
After sweep 9: maxlinkdim=20 maxerr=3.57E-03 current_time=Inf time=1.69
After sweep 10: maxlinkdim=20 maxerr=4.14E-03 current_time=Inf time=1.79

```

If there could be a detailed tutorial document on TDVP, I believe it would reduce a lot of unnecessary inquiries.  
Thank you for your time.
