% splattice Lattice Hamiltonian for a 2D spin model with nn interaction with aperiodic
% boundary condition; sparse version.
% splattice(op1,op2,Nx,Ny) gives the lattice Hamiltonian as a sparse matrix for
% a 2D spin for Nx*Ny qubits. op1 and op2 define the nearest-neighbor interaction.
% For the Hamiltonian aperiodic boundary condition is used.
function Hzz=splattice(op1,op2,Nx,Ny)
N=Nx*Ny;
Hzz=sparse(2^N,2^N);
for iy=0:Ny-1
for ix=1:Nx-1
index=ix+Nx*iy;
Hzz=Hzz+spinteract(op1,op2,index,index+1,N);
disp(['x ' num2str(index) ',' num2str(index+1)])
end %for
%%% Periodic BC
%%if Nx>2,
%% Hzz=Hzz+spinteract(op2,op1,Nx*iy+1,Nx*iy+Nx,N);
%% disp(['px ' num2str(Nx*iy+Nx) ',' num2str(Nx*iy+1) ])
%%end %if
end %for
for ix=1:Nx
for iy=0:Ny-2
index=ix+Nx*iy;
Hzz=Hzz+spinteract(op1,op2,index,index+Nx,N);
disp(['y ' num2str(index) ',' num2str(index+Nx)])
end %for
%%% Periodic BC
%%if Ny>2,
%% Hzz=Hzz+spinteract(op2,op1,ix,ix+(Ny-1)*Nx,N);
%% disp(['py ' num2str(ix+(Ny-1)*Nx) ',' num2str(ix)])
%%end %if
end %for