Menu

Estimating the bond dimension

Technical
2018-04-23
2018-04-26
  • Rafael Barfknecht

    Hello,

    I am running simulations for the Bose Hubbard model with large systems (such as N=10, L=200) and I would like to know a good way to estimate the necessary size of bond dimension in the convergence parameters. Should I calculate that from the actual size of the Hilbert space for that problem?

    Best regards,

    Rafael Barfknecht

     
  • Matthew Jones

    Matthew Jones - 2018-04-24

    Hey Rafael,

    Something modestly crude you could do is look at the singular values in the decomposition phase of your system's construction.

    If the values are large, you'll lose valuable information by truncating at that level.

    Some of this will be a question of tractible computation. Higher maximum bond dimension will result in factorially longer computational times. This is obvious from the size of the Hilbert space. See here: https://en.wikipedia.org/wiki/Bose–Hubbard_model

     
  • Daniel Jaschke

    Daniel Jaschke - 2018-04-24

    Hello Rafael,

    I might add that you have two ways of controlling the bond dimension. 1) You set the maximal bond dimension, which limits the amount of entanglement in your system. 2) You set a tolerance how much norm of your state can be truncated. This way is better to control and you openMPS is smart enough not to use your full bond dimension if not necessary.

    Two extreme example: (a) Tolerance to 0.01 and bond dimension to 10000. You will never use the criterion of the maximal bond dimension as you truncate your bond dimension based on the tolerance. (b) Tolerance is 0.0 and bond dimension 50. You will always keep all singular values and never truncate anything based on the norm. Very soon you will reach your maximal bond dimension and keep only the 50 biggest singular values.

    Suggested strategy: Use the tolerance to tune the precision of simulation, while the maximal bond dimension helps you to avoid to have simulations hit the walltime of your cluster. The error is stored in the results telling you how much was truncated. Look at the convergence parameters, where you have all classes defined: https://openmps.sourceforge.io/pyautodoc/convergence.html

    The estimation of the maximal bond dimension in a number conserving model is not straightforward. If you need to, I would count the number of states on the smaller subsystem of your splitting, i.e., 1 state with zero particles (|0000>), X states with 1 particles (|1000>, |0100>, |0010>, ...), Y states with 2 particles, ..., Z states with 10 particles and sum the number of these possible Fock states up. Based on your local dimension some states might be impossible etc.

    I hope both answers together help you. If not, let us know.

    Best regards,

    Daniel

     
  • Rafael Barfknecht

    Hello,

    Thank you for the reply. I think adjusting the bond dimension according to the desired tolerance is a good strategy. I'll work if that and I'll write back if any other issues come up.

    Best regards,

    Rafael

     

Log in to post a comment.