Ejemplo n.º 1
0
cd = 0.
dr = 2. / 3.
dl = 0.
du = 0.
dd = 0.
sx = -0.1
sy = 0.

# Calculate Settings
left = False

# Set up MPO
periodicy = False
periodicx = False
hamParams = array([jr, jl, ju, jd, cr, cl, cu, cd, dr, dl, du, dd, sx, sy])
mpo = return_mpo((Nx, Ny), hamParams, periodicy=periodicy, periodicx=periodicx)

# Run diagonalization
E0, vl, vr = ed(mpo, left=True)
print(E0[0], E0[-1])

# Run dmrg
E, mps = dmrg(mpo, mbd=20, nStates=1, return_state=True)

# Evaluate Local Energies
# vertical interactions
print('\nVertical Energies')
for y in ['bottom'] + [i for i in range(Ny - 1)] + ['top']:
    for x in range(Nx):
        mpo_tmp = single_bond_energy((Nx, Ny), hamParams, x, y, 'vert')
        Etmp = contract(mps=mps, mpo=mpo_tmp)
Ejemplo n.º 2
0
cr = 0.5
cl = 0.5
cu = 0.
cd = 0.
dr = 0.5
dl = 0.5
du = 0.
dd = 0.
sx = 0.5
sy = 0.

# Set up MPO -------------------------------
periodicy = False
periodicx = False
hamParams = array([jr, jl, ju, jd, cr, cl, cu, cd, dr, dl, du, dd, sx, sy])
mpo = return_mpo((Nx, Ny), hamParams, periodicy=False, periodicx=False)

# Run diagonalization -----------------------
H = mpo2mat(mpo)
E0, vl, vr = ed(mpo, left=True)
vr0 = vr[:, 0]
vl0 = vl[:, 0]
print('E0 = {}'.format(E0[0].real))

# Evaluate random parameters ---------------
# Local Density
density = zeros((Nx, Ny))
for x in range(Nx):
    for y in range(Ny):
        rho_mpo = [array([[I]])] * (Nx * Ny)
        rho_mpo[x * Nx + y] = array([[n]])