Esempio n. 1
0
 def test_canonical_rotate(self):
     mpiprint(
         0, '\n' + '=' * 50 + '\nCanonical Peps Rotation test\n' + '-' * 50)
     from cyclopeps.tools.peps_tools import PEPS
     Nx = 6
     Ny = 4
     d = 2
     D = 3
     chi = 10
     peps = PEPS(Nx=Nx,
                 Ny=Ny,
                 d=d,
                 D=D,
                 chi=chi,
                 normalize=False,
                 canonical=True)
     norm0 = peps.calc_norm()
     peps.rotate()
     norm1 = peps.calc_norm()
     peps.rotate(clockwise=False)
     norm2 = peps.calc_norm()
     mpiprint(0, 'Norms = {},{},{}'.format(norm0, norm1, norm2))
     self.assertTrue(abs((norm0 - norm1) / norm0) < 1e-3)
     self.assertTrue(abs((norm0 - norm2) / norm0) < 1e-10)
     mpiprint(0, 'Passed\n' + '=' * 50)
Esempio n. 2
0
 def test_rotate_ctf(self):
     mpiprint(0,
              '\n' + '=' * 50 + '\nPeps Rotation test (ctf)\n' + '-' * 50)
     from cyclopeps.tools.peps_tools import PEPS
     Nx = 3
     Ny = 3
     d = 2
     D = 3
     chi = 100
     peps = PEPS(Nx=Nx,
                 Ny=Ny,
                 d=d,
                 D=D,
                 chi=chi,
                 normalize=False,
                 backend='ctf')
     norm0 = peps.calc_norm()
     peps.rotate()
     norm1 = peps.calc_norm()
     peps.rotate(clockwise=False)
     norm2 = peps.calc_norm()
     mpiprint(0, 'Norms = {},{},{}'.format(norm0, norm1, norm2))
     self.assertTrue(abs((norm0 - norm1) / norm0) < 1e-5)
     self.assertTrue(abs((norm0 - norm2) / norm0) < 1e-10)
     mpiprint(0, 'Passed\n' + '=' * 50)
Esempio n. 3
0
 def test_rotate_Z2_ctf(self):
     mpiprint(
         0, '\n' + '=' * 50 + '\nPeps Z2 Rotation tes (ctf)t\n' + '-' * 50)
     from cyclopeps.tools.peps_tools import PEPS
     Nx = 5
     Ny = 5
     d = 2
     D = 6
     Zn = 2
     chi = 10
     backend = 'ctf'
     # Generate random PEPS
     peps = PEPS(Nx=Nx,
                 Ny=Ny,
                 d=d,
                 D=D,
                 chi=chi,
                 Zn=Zn,
                 backend=backend,
                 normalize=False)
     # Compute the norm (2 ways for comparison)
     norm0 = peps.calc_norm(chi=chi)
     peps_sparse = peps.make_sparse()
     norm1 = peps_sparse.calc_norm(chi=chi)
     mpiprint(0, 'Symmetric Dense Norm = {}'.format(norm0))
     mpiprint(0, 'Symmetric Sparse Norm = {}'.format(norm1))
     # Rotate the PEPS
     peps.rotate(clockwise=False)
     norm2 = peps.calc_norm(chi=chi)
     peps_sparse = peps.make_sparse()
     norm3 = peps_sparse.calc_norm(chi=chi)
     mpiprint(0, 'Rotated Symmetric Dense Norm = {}'.format(norm2))
     mpiprint(0, 'Rotated Symmetric Sparse Norm = {}'.format(norm3))
     self.assertTrue(abs((norm0 - norm1) / norm1) < 1e-3)
     self.assertTrue(abs((norm0 - norm2) / norm2) < 1e-3)
     self.assertTrue(abs((norm0 - norm3) / norm3) < 1e-3)
     mpiprint(0, 'Passed\n' + '=' * 50)