- When \(J_z\) is very large in two site iDMRG, the energy jumps within a small range, and sometimes it breaks the lowest value which I got in DMRG. When \(J_z\) is not large, the energy seems right when sweeping, and it can converge to the right value after some sweeps.
- When \(J_z\) is very large in single site iDMRG, the energy jumps randomly from `-inf` to `inf` at first, and the jumping range becomes smaller but the energy may also becomes strange. When \(J_z\) is not large, the energy also jumps randomly from `-inf` to `inf` at first, but it can converge to the right value after 50~100 sweeps.
I tried to change many params to solve this problem:
- `svd_min`: seems no big impact (smaller than 1e-6)
- `chi_list`: seems no big impact if I make it increase progressively
- `chi_max`: If it is very small (smaller than 100), it can converge but the energy is not correct.
- `lanczos_params`: They won't cause too much impact.
- `mixer_params`: They won't cause too much impact.
- `update_env`: If it is 0, the single site iDMRG's energies will not jump outside a proper range, but it cannot converge as usual.
I don't know what to do now. Forgive me for my poor English. Thank you!
One example logs (Jz=5, max_chi=800, single site iDMRG):
Code: Select all
SpinChainNNN2: reading 'lattice'=<tenpy.models.lattice.Triangular object at 0x00000294909C8440>
SpinChainNNN2: reading 'Jx'=1
SpinChainNNN2: reading 'Jy'=1
SpinChainNNN2: reading 'Jz'=5
SpinChainNNN2: reading 'Jxp'=0.0
SpinChainNNN2: reading 'Jyp'=0.0
SpinChainNNN2: reading 'Jzp'=0.0
DMRG: reading 'active_sites'=1
DMRG: subconfig 'trunc_params'=Config(<2 options>, 'trunc_params')
DMRG: subconfig 'lanczos_params'=Config(<2 options>, 'lanczos_params')
start environment_sweep
trunc_params: reading 'chi_max'=800
trunc_params: reading 'svd_min'=1e-08
DMRG: subconfig 'mixer_params'=Config(<3 options>, 'mixer_params')
DMRG: reading 'mixer'=True
activate SubspaceExpansion with initial amplitude 1e-05
DMRG: reading 'max_sweeps'=100
Running sweep with optimization
lanczos_params: reading 'N_min'=3
lanczos_params: reading 'N_max'=25
DMRG: reading 'update_env'=5
start environment_sweep
checkpoint after sweep 10
energy=-7.6435875256521770, max S=2.8920505842715052, age=192, norm_err=2.2e-01
Current memory usage 442.3MB, wall time: 257.9s
Delta E = nan, Delta S = 2.8568e-01 (per sweep)
max trunc_err = 7.6073e-08, max E_trunc = 1.9885e+01
chi: [800, 800, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
Disable mixer after 20 sweeps, final amplitude 3.007286598217175e-09.
deactivate SubspaceExpansion with final amplitude 3.007286598217175e-09
start environment_sweep
checkpoint after sweep 20
energy=-97.2426592249051538, max S=2.7749297397426744, age=372, norm_err=1.0e+00
Current memory usage 430.0MB, wall time: 276.7s
Delta E = -8.9599e+00, Delta S = -1.1710e-02 (per sweep)
max trunc_err = 9.0359e-10, max E_trunc = 3.0058e+02
chi: [800, 800, 800, 800, 800, 800]
================================================================================
DMRG: reading 'max_E_err'=1e-06
DMRG: reading 'max_S_err'=1e-05
Running sweep with optimization
start environment_sweep
checkpoint after sweep 30
energy=3.5692212646085011, max S=4.6352541295778744, age=552, norm_err=5.6e-02
Current memory usage 445.6MB, wall time: 226.7s
Delta E = 1.0081e+01, Delta S = 1.7867e-01 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 5.9142e+02
chi: [800, 800, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 40
energy=-17.3509894224101267, max S=2.5147900845873150, age=732, norm_err=4.0e-01
Current memory usage 447.8MB, wall time: 227.4s
Delta E = -2.0920e+00, Delta S = -2.1215e-01 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 7.0998e+02
chi: [800, 800, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 50
energy=45.5935904524861613, max S=2.9418626359266327, age=912, norm_err=2.5e-01
Current memory usage 445.9MB, wall time: 216.1s
Delta E = 6.2945e+00, Delta S = 4.0762e-02 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 6.5946e+02
chi: [800, 800, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 60
energy=0.1348247614063590, max S=0.8182981661141295, age=1092, norm_err=3.1e-03
Current memory usage 448.9MB, wall time: 217.3s
Delta E = -4.5459e+00, Delta S = -2.1669e-01 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 1.3581e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 70
energy=-38.0829854046577552, max S=2.8421286953295963, age=1272, norm_err=2.9e-01
Current memory usage 461.2MB, wall time: 207.0s
Delta E = -3.8218e+00, Delta S = 2.0890e-01 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 1.5733e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 80
energy=-37.4088134836109703, max S=2.9261377830986590, age=1452, norm_err=2.4e-01
Current memory usage 461.5MB, wall time: 213.6s
Delta E = 6.7417e-02, Delta S = 1.0702e-02 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 1.8669e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 90
energy=-151.2827424978262627, max S=2.8910270153109847, age=1632, norm_err=3.9e-01
Current memory usage 461.0MB, wall time: 204.4s
Delta E = -1.1387e+01, Delta S = -4.3418e-03 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 2.1695e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 100
energy=39.6155690394394568, max S=3.0881235012911272, age=1812, norm_err=1.6e-01
Current memory usage 454.0MB, wall time: 212.0s
Delta E = 1.9090e+01, Delta S = 1.9064e-02 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 1.4379e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
Running sweep with optimization
start environment_sweep
checkpoint after sweep 110
energy=-0.3297417855636316, max S=2.5992539376370676, age=1992, norm_err=6.5e-03
Current memory usage 425.5MB, wall time: 220.0s
Delta E = -3.9945e+00, Delta S = -4.8341e-02 (per sweep)
max trunc_err = 0.0000e+00, max E_trunc = 2.4119e+03
chi: [800, 796, 800, 800, 800, 800]
================================================================================
SingleSiteDMRGEngine: Maximum number of sweeps reached
final DMRG state not in canonical form up to norm_tol=1.00e-05: norm_err=6.46e-03
start environment_sweep
start environment_sweep
final DMRG state not in canonical form up to norm_tol_final=1.00e-10: norm_err=8.06e-08, calling psi.canonical_form()
SingleSiteDMRGEngine finished after 110 sweeps, max chi=800
DMRG: reading 'max_trunc_err'=None
DMRG is_converged: False
E = -0.3297417855636
final bond dimensions: [800, 796, 800, 800, 800, 800]