I need to create edge quasiparticles at both ends of the (infinite) cylinder geometry, to access topological sectors (with a little higher energy) unreachable via usual random initial states.
I am not quite sure as of the standard way to do pinning in DMRG. Do I have to initialize an Engine and perform several sweeps with perturbed model to keep pinning fields at both ends, and then use Engine.init_env(original_model) to converge to the GS? Or I can just initialize MPS using perturbed model and then start an new engine with original model, as is done in tenpy/examples/xxz_groundstate.py?
How to implement boundary pinning field in iDMRG appropriately?
-
lww
- Posts: 10
- Joined: 09 Jan 2019, 13:27
- Johannes
- Site Admin
- Posts: 474
- Joined: 21 Jul 2018, 12:52
- Location: TU Munich
Re: How to implement boundary pinning field in iDMRG appropriately?
In iDMRG, the iMPS unit cell is the central part of a growing environment on the left and right. The idea of the
You can use that as well to "pin" the state for (infinite) DMRG with the dmrg parameter
Engine.init_env() is to re-use the environment (and state) from a previous run. If the state has a sufficiently large correlation length, the environmnet "pins" DMRG to find the same state during the update step e.g. when you have spontaneous symmetry breaking or topological order. Hence, the init_env allows to "smoothly" follow the change of the (bulk) groundstate with modified model parameters, by keeping the environment from previous runs.I'm not 100% sure what you understand under the "boundary pinnning", but I think, this is what you want.lww wrote: 22 Mar 2019, 06:51 Do I have to initialize an Engine and perform several sweeps with perturbed model to keep pinning fields at both ends, and then use Engine.init_env(original_model) to converge to the GS?
If you start a new engine, the only "bias" you have for e.g. spontaneous symmetry breaking is the initial state.lww wrote: 22 Mar 2019, 06:51 Or I can just initialize MPS using perturbed model and then start an new engine with original model, as is done in tenpy/examples/xxz_groundstate.py?
You can use that as well to "pin" the state for (infinite) DMRG with the dmrg parameter
"start_env", as this also initializes the environment with the given state. However, for an initial state with large correlation length, re-using the environments (with init_env() is a little bit more effective - you would need to do a lot of "start_env" sweeps to converge the environments.-
lww
- Posts: 10
- Joined: 09 Jan 2019, 13:27
Re: How to implement boundary pinning field in iDMRG appropriately?
Thank you for your instant reply!
Specifically, I want to obtain the complete set of ground states in 2D following the route in this paper: https://arxiv.org/abs/1309.5669. The authors obtained \(\psi_0\) with conventional DMRG and found \(\psi_\nu\) with an anyon line threaded in by pinning one site at both ends. I'm not sure if I understood it correctly, and I'm also not so familiar as how to implement it in iDMRG to obtain GS like \(\psi_\nu\).
Specifically, I want to obtain the complete set of ground states in 2D following the route in this paper: https://arxiv.org/abs/1309.5669. The authors obtained \(\psi_0\) with conventional DMRG and found \(\psi_\nu\) with an anyon line threaded in by pinning one site at both ends. I'm not sure if I understood it correctly, and I'm also not so familiar as how to implement it in iDMRG to obtain GS like \(\psi_\nu\).