def heis_pbc(): L = 10 chi = 8 dtype = 'float32' psi0 = qtn.MPS_rand_state(L, chi, cyclic=True, seed=42).astype(dtype) H = qtn.MPO_ham_heis(L, cyclic=True).astype(dtype) def norm_fn(psi): factor = (psi & psi).contract(all, optimize='random-greedy') return psi / factor**0.5 def loss_fn(psi, H): k, H, b = qtn.align_TN_1D(psi, H, psi) energy = (k & H & b).contract(all, optimize='random-greedy') return energy en_ex = qu.groundenergy(qu.ham_heis(L, cyclic=True, sparse=True)) return psi0, H, norm_fn, loss_fn, en_ex
def ham_mbl_pbc_complex(): L = 10 chi = 8 dtype = 'complex64' psi0 = qtn.MPS_rand_state(L, chi, cyclic=True, seed=42).astype(dtype) ham_opts = {'cyclic': True, 'dh': 0.7, 'dh_dim': 3, 'seed': 42} H = qtn.MPO_ham_mbl(L, **ham_opts).astype(dtype) def norm_fn(psi): factor = (psi.H & psi).contract(all, optimize='random-greedy') return psi * factor**-0.5 def loss_fn(psi, H): k, H, b = qtn.align_TN_1D(psi, H, psi.H) energy = (k & H & b).contract(all, optimize='random-greedy') return real(energy) en_ex = qu.groundenergy(qu.ham_mbl(L, sparse=True, **ham_opts)) return psi0, H, norm_fn, loss_fn, en_ex
def test_groundenergy(self, mat_herm_dense, backend): _, a = mat_herm_dense ge = qu.groundenergy(a, backend=backend) assert_allclose(ge, -3)