Hello everyone,
I have just started doing my first DMRG simulations and have some basic questions on how the algorithm works with MPS. As the documentation explains one should enable the mixer option of the algorithm to avoid getting stuck in local minima. Now let's say that I am looking for the ground state of a 1D spin Hamiltonian that preserves the total magnetization. If I perform standard DMRG without the mixer option, then the initial MPS sets the charge subspace I am looking into, as all the steps in the algorithm preserve the total charge of the MPS. As far as I understood, the mixer option brakes this property. Then, how can I look for the ground state in a given charge sector, making sure it is the real ground state? Is there an option that allows to use the mixer, but forcing the final state to be in a given charge sector?
Thank you in advance!
Ground state search in subspace with definite charge
Re: Ground state search in subspace with definite charge
Welcome ![Smile :)](./images/smilies/icon_e_smile.gif)
The Mixer is designed in such a way that it preserves the symmetries of the Hamiltonian.
Basically, it takes the state, calculates the reduced density matrix and applies H to it, and adds this to the original state with a small amplitude.
In particular, if you turn on charge conservation (say total magnetization in a Spin chain), you will never leave the sector of the given total charge, whether you turn on the mixer or not. In that way you can still look for the state with smallest energy within each sector separately.
(The important thing that the mixer does it to allow a redistribution of the given charge)
If you don't preserve a charge explicitly using np_conserved (i.e. set
![Smile :)](./images/smilies/icon_e_smile.gif)
The Mixer is designed in such a way that it preserves the symmetries of the Hamiltonian.
Basically, it takes the state, calculates the reduced density matrix and applies H to it, and adds this to the original state with a small amplitude.
In particular, if you turn on charge conservation (say total magnetization in a Spin chain), you will never leave the sector of the given total charge, whether you turn on the mixer or not. In that way you can still look for the state with smallest energy within each sector separately.
(The important thing that the mixer does it to allow a redistribution of the given charge)
If you don't preserve a charge explicitly using np_conserved (i.e. set
conserve='Sz'
in the model/SpinSite), small round off errors and truncation can make DMRG leave the sector you started in, if this is preferable for the energy. (You shouldn't rely on it, though - it's always better to start in the correct sector right away.)