I've set up a model
mm
. I'm using 'bc':'periodic'
boundary conditions for my lattice. For the mps I'm using 'bc_MPS':'finite'
.Prior to dmrg, and for checks I've used
ExactDiag.from_H_mpo
, build_full_H_from_mpo
, full_H.to_ndarray
to extract the full Hamiltonian on some small system, to independently compare it with the Hamiltonian 'on a piece of paper'. At this level, things seem all ok.Then I set up a
psi = MPS.from_product_state
and run dmrg with out = dmrg.run(psi,mm,dmrg_params)
, where Code: Select all
dmrg_params={
'mixer': True,
'max_E_err': 1.e-10,
'trunc_params': {
'chi_max': 200, # I've used various values here up to 300
'svd_min': 1.e-10
}
}
Code: Select all
final DMRG state not in canonical form up to norm_tol=1.00e-10: norm_err=xyz
norm_err
will 'easily' go up to \(O(1)\).- My first problem is, that I have no idea, if this issue is devastating, just a warning, or totally irrelevant for a user's perspective? If I do
psi.test_sanity()
after the dmrg run, it raises no error. Moreover some of the anticipated dmrg output, including some 1st operator's expectation values seem ok. ... hopefully.
- My second problem is, that I have no idea how to get rid of this issue - if indeed one should? Playing with the value of
chi_max
does not really help and it is unclear to me anyway if that is direction into which to look. Adding things like'norm_tol_iter': 500
and'norm_tol': 1.e-10
todmrg_params
does not 'do' anything. (Additionally, something happens, which I don't understand at all , namely, when I use the in-place-solution forpsi
from a dmrg run as a starting state for a run with identical parameters, I still get the same norm_err issue.)
Xaver
PS.: Certainly I have tried to understand SciPost Phys. Lect. Notes 5, tenpy.readthedocs.io, and the discussion in this post ... but obviously in vain.