block-hczhai / block2-preview

Efficient parallel quantum chemistry DMRG in MPO formalism
GNU General Public License v3.0
67 stars 23 forks source link

Custom Hamiltonian with SU(2) symmetry #110

Closed Shovan-Physics closed 3 months ago

Shovan-Physics commented 3 months ago

Thanks for the very efficient package!

In the documentation you give examples of how to set up custom site basis and site operators for Abelian symmetries such as SZ. Is there a way to do this for SU(2) symmetry?

We want to study the t-J model, in which the maximum occupation of each site is 1, in different total spin sectors. One way to do this is to set the interaction U much larger than the hopping t in the SU(2) Hubbard model, but this gives very slow convergence. It would be more efficient to use the SU(2) operators "(C+D)0" but within the site basis {0, up, down}.

Many thanks, Shovan

hczhai commented 3 months ago

Hi, thanks for your interest in the block2 package. I have updated the documentation with an example of the t-J model, implemented using custom non-Abelian symmetry group syntax: https://block2.readthedocs.io/en/latest/tutorial/custom-hamiltonians.html#SU(2)-t-J-Model .

Note that in target=Q(N_ELEC, TWO_S, TWO_S) the target spin quantum number must be repeated, which is related to a technical detail for treating SU(2) symmetry. The two TWO_S values has to be the same.

The minimal block2 version to support this feature is 0.5.3rc16.

Shovan-Physics commented 3 months ago

Excellent, thanks! Just so I understand, why does the annihilation operator "D" have a factor of \sqrt{2}?

hczhai commented 3 months ago

The CG factor for creation and annihilation operators can be computed as:

from block2 import SU2CG
print('C operator CG: <S[ket]=0,Sz[ket]=0; S[op]=1/2,Sz[op]=1/2 | S[bra]=1/2,Sz[bra]=1/2> = ', SU2CG().cg(0, 1, 1, 0, 1, 1))
print('D operator CG: <S[ket]=1/2,Sz[ket]=1/2; S[op]=1/2,Sz[op]=-1/2 | S[bra]=0,Sz[bra]=0> = ', SU2CG().cg(1, 1, 0, 1, -1, 0))

which will print $1$ and $1/\sqrt{2}$, for C and D operators respectively. So $\sqrt{2}$ is needed to compensate for this factor.

Shovan-Physics commented 3 months ago

I see, thanks.