In this section, we will show what modifications have to be carried out for computing the physics of the one dimensional t-V model of spinless fermions.
The above form is readily included in the ALF since the interaction is written in terms of a perfect square. Expanding the square yields (up to a constant) the desired model:
Note that the t-V model is already implemented in ALF in the module Hamiltonian_tV_smod.F90 found in $ALF_DIR/Prog/Hamiltonians/. While it can be used for checking your own results[1], you are not supposed to reproduce that implementation — which is more general and makes use of predefined structures — but instead to write a simpler one, based on the module Hamiltonian_Hubbard_Plain_Vanilla_smod.F90 as detailed below.
8.4.1Define new model¶
In solution we have duplicated the ALF and commented the changes that have to be carried out to the file Hamiltonian_Hubbard_Plain_Vanilla_smod.F90. The following are the essential steps to be carried out:
Add the
VAR_t_Vname space in the fileparametersand set the necessary variables — or simply rename theVAR_Hubbard_Plain_Vanillaname space toVAR_t_Vand, within it,Ham_UtoHam_Vint. (Ignore the name spaceVAR_tV, which is used by the general implementation mentioned above.)Declare a new variable,
Ham_Vint, inVanilla’s specification.Add the
VAR_t_Vname space (namelist) declaration at theHam_Setsubroutine ofVanilla, containing the same variables the name space contains inparameters, and read it in.Still in the
Ham_setsubroutine ofVanilla: setNF=1, since we are working with spinless fermions; change the output to the info file.In the
Ham_Vsubroutine you have to add the new interaction. For a given bond at a given time slice, we need to decouple the interaction:
Here is how this translates in the code (the new integer variable, i2, should be declared):
Allocate(Op_V(Ndim,N_FL))
do nf = 1,N_FL
do i = 1, Ndim
call Op_make(Op_V(i,nf),2)
enddo
enddo
Do i = 1, Ndim ! Runs over bonds = # of lattice sites in one-dimension.
i2 = Latt%nnlist(i,1,0)
Op_V(i,nf)%P(1) = i
Op_V(i,nf)%P(2) = i2
Op_V(i,nf)%O(1,2) = cmplx(1.d0 ,0.d0, kind(0.d0))
Op_V(i,nf)%O(2,1) = cmplx(1.d0 ,0.d0, kind(0.d0))
Op_V(i,nf)%g = sqrt(cmplx(Dtau*Ham_Vint/2.d0, 0.d0, kind(0.d0)))
Op_V(i,nf)%alpha = cmplx(0d0 ,0.d0, kind(0.d0))
Op_V(i,nf)%type = 2
Call Op_set( Op_V(i,nf) )
enddoFinally, you have to update the
ObserandObserTroutines for the calculation of equal- and time-displaced correlations. For thet_Vmodel you can essentially use the same observables as for theHubbard_SU(2)model in 1D — a step which requires a number of changes with respect to theVanillabase, such as:
!!!!! Modifications for Exercise 3
!Zpot = Zpot*ham_U ! Vanilla
Zpot = Zpot*Ham_Vint ! t-V
!!!!!and
!Zrho = Zrho + Grc(i,i,1) + Grc(i,i,2) ! Vanilla
Zrho = Zrho + Grc(i,i,1) ! t-Vwith the observables being coded in the routine Obser as
Z = cmplx(dble(N_SUN), 0.d0, kind(0.D0))
Do I1 = 1,Ndim
I = I1
no_I = 1
Do J1 = 1,Ndim
J = J1
no_J = 1
imj = latt%imj(I,J)
Obs_eq(1)%Obs_Latt(imj,1,no_I,no_J) = Obs_eq(1)%Obs_Latt(imj,1,no_I,no_J) + &
& Z * GRC(I1,J1,1) * ZP*ZS ! Green
Obs_eq(2)%Obs_Latt(imj,1,no_I,no_J) = Obs_eq(2)%Obs_Latt(imj,1,no_I,no_J) + &
& Z * GRC(I1,J1,1) * GR(I1,J1,1) * ZP*ZS ! SpinZ
Obs_eq(3)%Obs_Latt(imj,1,no_I,no_J) = Obs_eq(3)%Obs_Latt(imj,1,no_I,no_J) + &
& ( GRC(I1,I1,1) * GRC(J1,J1,1) * Z + &
& GRC(I1,J1,1) * GR(I1,J1,1 ) ) * Z * ZP*ZS ! Den
enddo
Obs_eq(3)%Obs_Latt0(no_I) = Obs_eq(3)%Obs_Latt0(no_I) + Z * GRC(I1,I1,1) * ZP * ZS
enddoamong other changes — with similar ones in the ObserT routine.
Here the modified parameter file can be downloaded.
8.4.2Phase transition¶
You can now run the code for various values of . A Jordan-Wigner transformation will map the t_V model onto the XXZ chain:
with and . Hence, when we reproduce the Heisenberg model. For the model is in the Ising regime with long-range charge density wave order and is an insulator. In the regime the model is metallic and corresponds to a Luttinger liquid. Finally, at phase separation between hole rich and electron rich phases occur. Figure 1 shows typical results for the density-density correlation function (file Den_eqJR).

Figure 1:Density-Density correlation functions of the t-V model. In the Luttinger liquid phase, , it is known that the density-density correlations decay as with (A. Luther and I. Peschel, Calculation of critical exponents in two dimensions from quantum field theory in one dimension, Phys. Rev. B 12 (1975), pp. 3908–3917.) The interested reader can try to reproduce this result.
A short simulation of the t-V model can be conveniently run using its Jupyter notebook available in pyALF.