Hello everyone!
Here I have a one-dimensional system with two sublattices in each unit cell which posses chiral symmetry. That is
H is the hamiltonian of the one-dimensional system, and \Gamma is a local, unitary and Hermitian operator.
One can construct chiral operators by projectors to sublattice A and B.
I construct a 2N-long one-dimensional sites, in which N is the number of unit cells and odd sites represent sublattice A and even sites represent sublattice B.
My question is how to construct an MPO
by local state of MPS psi[i]
in purpose to do measurements like mean chiral displacement.
I have tried the following way.
julia> function Gamma(psi,N)
GammaOp=ITensor()
for i=1:N
GammaOp+=psi[2*i-1]*psi[2*i-1]'
GammaOp-=psi[2*i]*psi[2*i]'
end
return GammaOp
end
Gamma (generic function with 1 method)
julia> Gamma(psi,3)
ERROR: DimensionMismatch: cannot subtract ITensors with different numbers of indices
Stacktrace:
[1] -(A::ITensor, B::ITensor)
@ ITensors C:\Users\Wang\.julia\packages\ITensors\4aoLl\src\itensor.jl:1840
[2] Gamma(psi::MPS, N::Int64)
@ Main .\REPL[54]:5
[3] top-level scope
@ REPL[55]:1
Also, I want to ask how to convert a local wavefunction of MPS to a matrix.
Function matrix()
indeed works for the first and last site of MPS, but not other sites.
julia> matrix(psi[1])
5×1 Matrix{Float64}:
0.0
1.0
0.0
0.0
0.0
julia> matrix(psi[2])
ERROR: DimensionMismatch:
Stacktrace:
[1] matrix(T::ITensor)
@ ITensors C:\Users\Wang\.julia\packages\ITensors\4aoLl\src\tensor_operations\permutations.jl:182
[2] top-level scope
@ REPL[57]:1
Thank you so much !