Hi everyone,
I’ve been trying to get a set of a states for a complex phi^4 field theory. I want to check the validity of the states acquired by the DMRG calculation by ensuring that they’re also eigenstates of the momentum operator of the theory. However, the ground state I acquire for the Hamiltonian is not an Eigenstate of the momentum operator. The variance of the Hamiltonian on this state is ~3 E-5, but the variance of the momentum on this state is ~15, completely unacceptable. I fear that the problem may be the way I’m defining my Hamiltonian and Momentum MPO’s, which I will include below. I define my operators on a bosonic local Hilbert space.
The Hamiltonian is
H = \int dx \; \left(\pi^* \; \pi + \nabla \phi^* \cdot \nabla \phi + m^2 |\phi|^2 + \lambda |\phi|^4 \right)
Which we put on the lattice by doubling the Hilbert space and putting the real part of the field on odd sites and the imaginary part on even sites, which gives us the following Hamiltonian on the doubled lattice,
H = \sum_{n=1}^{2N} \left( \frac{1}{2}\pi_{n}^2+\frac{1}{2}(\phi_{n+2} - \phi_{n})^2 +\frac{m^2}{2}\phi_{n}^2+ \frac{\lambda}{4} \phi_{n}^4 \right) + \sum_{n=1}^{N} \left( 2 \frac{\lambda}{4} \phi_{2n-1}^2 \phi_{2n}^2 \right)
The momentum operator is, using the same doubling prescription:
P = -\frac{1}{4} \sum_{n=1}^{2N} \pi_n (\phi_{n+2}-\phi_n) + h.c.
I write these MPO’s as
H:
#Define Hamiltonian: first field lives on odd sites, field 2 on even sites, interact on both
#"phi2" is the field operator squared, not to be confused with field 2. Similarly for "cpi2"
op1= OpSum()
#free terms
#bulk terms
for l in 1:2(N-1)
op1 += (-1),"phi",l,"phi",(l+2)
op1 += (1/2)*(1+m2), "phi2",l
op1 += (1/2), "phi2",(l+2)
op1 += (1/2), "cpi2",l
op1 += (ld/4), "phi4",l
end
#Boundary terms
op1 += (-1),"phi",2N-1,"phi",1
op1 += (1/2)*(1+ m2), "phi2",2N-1
op1 += (1/2), "phi2",1
op1 += (1/2), "cpi2",2N-1
op1 += (ld/4), "phi4",2N-1
op1 += (-1),"phi",N,"phi",2
op1 += (1/2)*(1+ m2), "phi2",2N
op1 += (1/2), "phi2",2
op1 += (1/2), "cpi2",2N
op1 += (ld/4), "phi4",2N
#field coupling terms
for l in 1:N
op1 += ((ld/2), "phi2",2l-1 , "phi2",(2l))
op1 += ((ld/2), "phi2",2l , "phi2",(2l-1))
end
print(op1)
H = MPO(op1,sites)
and the momentum operator as
#Writing out the momentum operator as an MPO
opM= OpSum()
#well do the first term then add its h.c.
#bulk terms
for l in 1:2(N-1)
opM += (-1/4),"cpi",l,"phi",l+2
opM +=-(-1/4),"cpi",l,"phi",l
#need h.c. terms
opM += (-1/4),"phi",l+2,"cpi",l
opM +=-(-1/4),"phi",l,"cpi",l
end
#boundary terms
opM += (-1/4),"cpi",N,"phi",2
opM +=-(-1/4),"cpi",N,"phi",N
opM += (-1/4),"cpi",N-1,"phi",1
opM +=-(-1/4),"cpi",N-1,"phi",N-1
#need h.c. terms
opM += (-1/4),"phi",2,"cpi",N
opM +=-(-1/4),"phi",N,"cpi",N
opM += (-1/4),"phi",1,"cpi",N-1
opM +=-(-1/4),"phi",N-1,"cpi",N-1
P= MPO(opM,sites)
where “phi” is constructed to have matrix elements \propto (a+a^\dagger), and “cpi” is the conjugate momenta \pi \propto i(a^\dagger -a). I’m certain my matrix elements of my custom operators are correct. I am working on a 10 physical site lattice (N=10), and want periodic boundary conditions, and local bosonic Hilbert space dimension of d=60.
I don’t know how to directly show the matrix elements for an MPO and multiplying the MPOs directly to get the commutator gives me a memory overflow error, so I calculated the states that are a result of the action of the operators onto a state and then calculate the imaginary part of the inner product: < \psi | [H,P] |\psi> = 2 i Im (<\psi|H)(P|\psi>). I did this with the DMRG acquired ground state and a random MPS. Should they commute this inner product should be zero. Both calculations demonstrated that these MPOs don’t commute.
Is there a glaringly obvious issue that I’m overlooking with my MPO definitions?
I know this is a long post but I’m pretty lost at this point so I thank you for your time reading this and for any input on the matter.
Best,
JM