# Question about convergence of DMRG algorithm for 1d spin chain

**URL:** <https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380>\
**Category:** ITensor Julia Questions\
**Created:** [May 8, 2025, 6:17pm UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380 "2025-05-08T18:17:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![souhang](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@souhang](https://itensor.discourse.group/u/souhang)\
**Post date:** [May 8, 2025, 6:17pm UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/1 "2025-05-08T18:17:49Z")

</div>

I want to write a DMRG code for Majumdar-Ghosh model but defined on a spin chain with odd site, and PBC.

The Hamiltonian is defined as:

> os = OpSum()  
> for j = 1:N-1  
> os += 0.5, “S+”, j, “S-”, j + 1  
> os += 0.5, “S-”, j, “S+”, j + 1  
> os += 1.0, “Sz”, j, “Sz”, j + 1  
> end  
> for j = 1:N-2  
> os += 0.25, “S+”, j, “S-”, j + 2  
> os += 0.25, “S-”, j, “S+”, j + 2  
> os += 0.5, “Sz”, j, “Sz”, j + 2  
> end  
> os += 0.5, “S+”, 1, “S-”, N  
> os += 0.5, “S-”, 1, “S+”, N  
> os += 1.0, “Sz”, 1, “Sz”, N  
> os += 0.25, “S+”, 1, “S-”, N-1  
> os += 0.25, “S-”, 1, “S+”, N-1  
> os += 0.5, “Sz”, 1, “Sz”, N-1  
> os += 0.25, “S+”, 2, “S-”, N  
> os += 0.25, “S-”, 2, “S+”, N  
> os += 0.5, “Sz”, 2, “Sz”, N

where N is defined as 2M-1 (like 127, 111, 95, 79, 63…)

When I run the code, I found the output like

> After sweep 1 energy=-44.481929186344885 maxlinkdim=300 maxerr=8.69E-04 time=86.664  
> After sweep 2 energy=-44.491945171337946 maxlinkdim=294 maxerr=1.82E-11 time=56.699  
> After sweep 3 energy=-44.49596888252315 maxlinkdim=300 maxerr=2.79E-11 time=28.780  
> After sweep 4 energy=-44.49831553410645 maxlinkdim=284 maxerr=1.00E-12 time=14.488  
> After sweep 5 energy=-44.499941228459406 maxlinkdim=241 maxerr=9.99E-13 time=9.099  
> After sweep 6 energy=-44.50115479519257 maxlinkdim=236 maxerr=9.98E-13 time=7.928  
> After sweep 7 energy=-44.5020439307327 maxlinkdim=230 maxerr=9.98E-13 time=7.746  
> After sweep 8 energy=-44.50274876800401 maxlinkdim=209 maxerr=9.98E-13 time=6.959  
> After sweep 9 energy=-44.50339952131439 maxlinkdim=185 maxerr=9.99E-13 time=5.806  
> After sweep 10 energy=-44.503907791478824 maxlinkdim=162 maxerr=9.98E-13 time=3.995  
> After sweep 11 energy=-44.50434542303579 maxlinkdim=141 maxerr=9.98E-13 time=3.305  
> After sweep 12 energy=-44.50467922723091 maxlinkdim=123 maxerr=9.99E-13 time=2.544  
> After sweep 13 energy=-44.50494644606336 maxlinkdim=107 maxerr=9.99E-13 time=2.186  
> After sweep 14 energy=-44.50515744754459 maxlinkdim=88 maxerr=9.95E-13 time=1.659  
> After sweep 15 energy=-44.50533817095654 maxlinkdim=80 maxerr=9.96E-13 time=1.653  
> After sweep 16 energy=-44.50552529916788 maxlinkdim=78 maxerr=9.99E-13 time=1.350  
> After sweep 17 energy=-44.50571174377446 maxlinkdim=78 maxerr=1.00E-12 time=1.562  
> After sweep 18 energy=-44.505886707568344 maxlinkdim=73 maxerr=1.00E-12 time=1.279  
> After sweep 19 energy=-44.506031127699295 maxlinkdim=72 maxerr=9.99E-13 time=1.573  
> After sweep 20 energy=-44.50614257554192 maxlinkdim=63 maxerr=9.96E-13 time=1.247  
> After sweep 21 energy=-44.50622600499852 maxlinkdim=55 maxerr=9.99E-13 time=1.146  
> After sweep 22 energy=-44.506308740273 maxlinkdim=51 maxerr=9.96E-13 time=1.310  
> After sweep 23 energy=-44.50639583445144 maxlinkdim=49 maxerr=1.00E-12 time=0.968  
> After sweep 24 energy=-44.50649899547017 maxlinkdim=66 maxerr=9.98E-13 time=1.274  
> After sweep 25 energy=-44.50658135710624 maxlinkdim=53 maxerr=1.00E-12 time=1.377  
> After sweep 26 energy=-44.50663860455781 maxlinkdim=50 maxerr=1.00E-12 time=1.112  
> After sweep 27 energy=-44.50669707260257 maxlinkdim=63 maxerr=9.99E-13 time=1.397  
> After sweep 28 energy=-44.50674986889638 maxlinkdim=56 maxerr=9.98E-13 time=1.157  
> After sweep 29 energy=-44.506795094424106 maxlinkdim=49 maxerr=9.94E-13 time=1.054  
> After sweep 30 energy=-44.506842287314576 maxlinkdim=47 maxerr=9.99E-13 time=1.403  
> After sweep 31 energy=-44.5069124670681 maxlinkdim=59 maxerr=9.99E-13 time=1.094  
> After sweep 32 energy=-44.506966178281175 maxlinkdim=53 maxerr=1.00E-12 time=1.264  
> After sweep 33 energy=-44.50701140060947 maxlinkdim=48 maxerr=9.97E-13 time=1.459  
> After sweep 34 energy=-44.50705438963784 maxlinkdim=49 maxerr=9.96E-13 time=1.450  
> After sweep 35 energy=-44.50709172757356 maxlinkdim=44 maxerr=9.99E-13 time=1.481  
> After sweep 36 energy=-44.50712029911698 maxlinkdim=44 maxerr=9.99E-13 time=1.250  
> After sweep 37 energy=-44.50714873624605 maxlinkdim=45 maxerr=1.00E-12 time=1.281  
> After sweep 38 energy=-44.50717753916703 maxlinkdim=50 maxerr=9.95E-13 time=1.443  
> After sweep 39 energy=-44.50720567342386 maxlinkdim=51 maxerr=9.98E-13 time=1.254  
> After sweep 40 energy=-44.50723066557673 maxlinkdim=46 maxerr=9.97E-13 time=1.275  
> After sweep 41 energy=-44.507255748411374 maxlinkdim=46 maxerr=9.99E-13 time=1.523  
> After sweep 42 energy=-44.50727752728447 maxlinkdim=46 maxerr=9.99E-13 time=1.301  
> After sweep 43 energy=-44.50729802345977 maxlinkdim=51 maxerr=9.99E-13 time=1.601  
> After sweep 44 energy=-44.50731794456762 maxlinkdim=51 maxerr=9.99E-13 time=1.299  
> After sweep 45 energy=-44.50733591769872 maxlinkdim=57 maxerr=1.00E-12 time=1.603  
> After sweep 46 energy=-44.50735128040145 maxlinkdim=51 maxerr=9.98E-13 time=1.212  
> After sweep 47 energy=-44.50736700247448 maxlinkdim=57 maxerr=1.00E-12 time=1.401  
> After sweep 48 energy=-44.50737990968225 maxlinkdim=45 maxerr=1.00E-12 time=1.612  
> After sweep 49 energy=-44.50739000230962 maxlinkdim=46 maxerr=9.97E-13 time=1.343  
> After sweep 50 energy=-44.507399622370265 maxlinkdim=43 maxerr=9.98E-13 time=1.553  
> After sweep 51 energy=-44.50740816650574 maxlinkdim=45 maxerr=9.99E-13 time=1.210  
> After sweep 52 energy=-44.50741592984533 maxlinkdim=47 maxerr=1.00E-12 time=1.373  
> After sweep 53 energy=-44.507423293004976 maxlinkdim=48 maxerr=9.99E-13 time=1.529  
> After sweep 54 energy=-44.50742982522328 maxlinkdim=51 maxerr=1.00E-12 time=1.234  
> After sweep 55 energy=-44.50743583743276 maxlinkdim=50 maxerr=9.98E-13 time=1.556  
> After sweep 56 energy=-44.50744143999142 maxlinkdim=53 maxerr=9.96E-13 time=1.299  
> After sweep 57 energy=-44.5074461689624 maxlinkdim=56 maxerr=9.99E-13 time=1.610  
> After sweep 58 energy=-44.507450464650695 maxlinkdim=51 maxerr=9.97E-13 time=1.348  
> After sweep 59 energy=-44.507454019576734 maxlinkdim=45 maxerr=1.00E-12 time=1.273  
> After sweep 60 energy=-44.50745718651609 maxlinkdim=49 maxerr=9.96E-13 time=1.540  
> After sweep 61 energy=-44.50746002541054 maxlinkdim=48 maxerr=9.99E-13 time=1.302  
> After sweep 62 energy=-44.50746268734314 maxlinkdim=50 maxerr=9.99E-13 time=1.617  
> After sweep 63 energy=-44.50746485884627 maxlinkdim=48 maxerr=9.96E-13 time=1.328  
> After sweep 64 energy=-44.50746670663664 maxlinkdim=48 maxerr=9.99E-13 time=1.276  
> After sweep 65 energy=-44.507468421502004 maxlinkdim=53 maxerr=1.00E-12 time=1.558  
> After sweep 66 energy=-44.50746989879488 maxlinkdim=50 maxerr=1.00E-12 time=1.309  
> After sweep 67 energy=-44.50747118044341 maxlinkdim=52 maxerr=1.00E-12 time=1.586  
> After sweep 68 energy=-44.50747232598204 maxlinkdim=55 maxerr=1.00E-12 time=1.390  
> After sweep 69 energy=-44.507473324056576 maxlinkdim=55 maxerr=1.00E-12 time=1.367  
> After sweep 70 energy=-44.50747413739557 maxlinkdim=56 maxerr=1.00E-12 time=1.557  
> After sweep 71 energy=-44.50747482576718 maxlinkdim=49 maxerr=9.95E-13 time=1.274  
> After sweep 72 energy=-44.50747540547035 maxlinkdim=46 maxerr=9.99E-13 time=1.571  
> After sweep 73 energy=-44.50747588201757 maxlinkdim=48 maxerr=1.00E-12 time=1.374  
> After sweep 74 energy=-44.50747630807204 maxlinkdim=48 maxerr=9.98E-13 time=1.575  
> After sweep 75 energy=-44.50747666458328 maxlinkdim=47 maxerr=9.98E-13 time=1.277  
> After sweep 76 energy=-44.50747698781786 maxlinkdim=49 maxerr=9.98E-13 time=1.284  
> After sweep 77 energy=-44.507477280049905 maxlinkdim=51 maxerr=9.99E-13 time=1.574  
> After sweep 78 energy=-44.50747753506067 maxlinkdim=47 maxerr=1.00E-12 time=1.359  
> After sweep 79 energy=-44.50747774828389 maxlinkdim=48 maxerr=9.99E-13 time=1.564  
> After sweep 80 energy=-44.507477937831155 maxlinkdim=48 maxerr=1.00E-12 time=1.323  
> After sweep 81 energy=-44.507478095157616 maxlinkdim=46 maxerr=9.99E-13 time=1.336  
> After sweep 82 energy=-44.5074782382683 maxlinkdim=49 maxerr=9.98E-13 time=1.618  
> After sweep 83 energy=-44.50747836658586 maxlinkdim=47 maxerr=9.99E-13 time=1.283  
> After sweep 84 energy=-44.50747848408119 maxlinkdim=48 maxerr=1.00E-12 time=1.554  
> After sweep 85 energy=-44.50747858622078 maxlinkdim=48 maxerr=9.97E-13 time=1.318  
> After sweep 86 energy=-44.50747867474391 maxlinkdim=53 maxerr=9.99E-13 time=1.614  
> After sweep 87 energy=-44.507478752107005 maxlinkdim=52 maxerr=1.00E-12 time=1.325  
> After sweep 88 energy=-44.507478821271526 maxlinkdim=50 maxerr=1.00E-12 time=1.358  
> After sweep 89 energy=-44.50747888444592 maxlinkdim=50 maxerr=9.98E-13 time=1.426  
> After sweep 90 energy=-44.50747893956039 maxlinkdim=52 maxerr=9.98E-13 time=1.298  
> After sweep 91 energy=-44.50747898836787 maxlinkdim=56 maxerr=9.98E-13 time=1.590  
> After sweep 92 energy=-44.507479031383994 maxlinkdim=54 maxerr=9.99E-13 time=1.339  
> After sweep 93 energy=-44.50747907004947 maxlinkdim=50 maxerr=9.98E-13 time=1.314  
> After sweep 94 energy=-44.50747910655964 maxlinkdim=51 maxerr=1.00E-12 time=1.508  
> After sweep 95 energy=-44.50747913518592 maxlinkdim=52 maxerr=1.00E-12 time=1.247  
> After sweep 96 energy=-44.507479161232645 maxlinkdim=48 maxerr=1.00E-12 time=1.656  
> After sweep 97 energy=-44.50747918253786 maxlinkdim=52 maxerr=1.00E-12 time=1.369  
> After sweep 98 energy=-44.507479198563665 maxlinkdim=46 maxerr=9.98E-13 time=1.331  
> After sweep 99 energy=-44.50747921066809 maxlinkdim=44 maxerr=9.98E-13 time=1.542  
> After sweep 100 energy=-44.50747921997647 maxlinkdim=43 maxerr=9.92E-13 time=1.246

It seems so weird… Could I believe that it is converged? Here, I guess the system is gapless, so are there any other possible way to improve this?

Thanks

---

<div class="post-metadata">

**Author:** ![miles](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/miles/32/6_2.png) [@miles](https://itensor.discourse.group/u/miles)\
**Post date:** [May 9, 2025, 2:14am UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/2 "2025-05-09T02:14:27Z")

</div>

Glad to hear you are trying ITensor. Could you please clarify what your question is?

---

<div class="post-metadata">

**Author:** ![VinceNeede](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/vinceneede/32/731_2.png) [@VinceNeede](https://itensor.discourse.group/u/VinceNeede)\
**Post date:** [May 9, 2025, 7:49am UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/3 "2025-05-09T07:49:44Z")

</div>

As a general rule, always test your code for small systems with exact diagonalization. For the rest, as Miles said, the question is not really clear. If you think the dmrg is having an hard time converging because of degeneracy, you could add an additive term that explicitly breaks it.

If you want to know in general whether a dmrg converged, I’d suggest you to take a look (if you haven’t already) at this beautiful FAQs [DMRG FAQs · ITensorMPS.jl](https://docs.itensor.org/ITensorMPS/stable/faq/DMRG.html).

If this still does not answer your question, if you could please be more specific.

---

<div class="post-metadata">

**Author:** ![souhang](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@souhang](https://itensor.discourse.group/u/souhang)\
**Post date:** [May 13, 2025, 11:02am UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/5 "2025-05-13T11:02:50Z")

</div>

> [@VinceNeede](#):
>
> As a general rule, always test your code for small systems with exact diagonalization. For the rest, as Miles said, the question is not really clear. If you think the dmrg is having an hard time converging because of degeneracy, you could add an additive term that explicitly breaks it.

It can be converged with the results from ED for small size (like L=9, 11, 13)

Now I find the bond dim is much less than which I set, and it seems that the ground state has short-range entangled properties. But I’m not sure if the state is the true ground state because I’m afraid about some localized min-energy states.

Therefore, if I try to do simulation again, are there any suggestions about the code, or the parameters I set.

---

<div class="post-metadata">

**Author:** ![miles](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/miles/32/6_2.png) [@miles](https://itensor.discourse.group/u/miles)\
**Post date:** [May 13, 2025, 6:55pm UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/6 "2025-05-13T18:55:13Z")

</div>

I guess I still don’t understand your precise question? Are you asking something like “what are good parameters to choose for DMRG”? And “how can one be sure DMRG has converged”?

A few rough answers to those questions are:

1. a good practice is to raise the maximum bond dimension each sweep, starting from a small value. So like `maxdim = [10,20,40, 80, 160]`
2. another good practice is to just use a medium-small cutoff throughout, so like `cutoff=1E-8`
3. as far as checking the right answer and avoiding local minima, this is a hard question in general, and the main thing you can do is test against exact results on small systems or exactly solvable points etc. or reason about physical properties, like plotting the expected value of operators as a function of site number. Are the properties smooth? Are they left-right symmetric? Etc.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/itensor/original/1X/d3072b13e047cd06df7f3981547c0917d940dfa4.png) [@system](https://itensor.discourse.group/u/system)\
**Post date:** [July 20, 2025, 8:53am UTC](https://itensor.discourse.group/t/question-about-convergence-of-dmrg-algorithm-for-1d-spin-chain/2380/7 "2025-07-20T08:53:43Z")

</div>

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.
