예제 #1
0
def get_energy(a, returnmz=False):
    global env
    a = get_symm_tensor(a)
    A = peps.make_double_layer(a)
    
    tester = ctm.CTMRGGenericTester(test_fct(a, A), 1e-9)
    env = ctm.ctmrg_1x1_hermitian(A, chi, env, tester)
    
    E = tester.get_value()
    
    if returnmz:
        e = env.get_site_environment()
        Z = peps.make_double_layer(a, o=gates.sigmaz)
        mz = e.contract(Z) / e.contract(A)
        return E, mz
    
    return E
예제 #2
0
def get_energy(a, returnmz=False):
    global env
    a = get_symm_tensor(a)
    A = peps.make_double_layer(a)
    
    f = test_fct(a, A)
    tester = ctm.CTMRGGenericTester(f, 1e-12)
    #env = ctm.ctmrg([A], lut, chi, env, tester)
    #env = ctm.ctmrg_1x1_rotsymm(A, chi, env, tester)
    env = ctm.ctmrg_1x1_hermitian(A, chi, env, tester)
    
    #env2 = ctm.CTMEnvironment(lut, env.c, env.c, env.c, env.c, env.t1, env.t2, env.t1, env.t2)
    #tester = ctm.CTMRGGenericTester(f, 1e-8)
    #env2 = ctm.ctmrg([A], lut, chi, env2, tester)
    
    E = tester.get_value()
    
    if returnmz:
        e = env.get_site_environment()
        Z = peps.make_double_layer(a, o=gates.sigmaz)
        mz = e.contract(Z) / e.contract(A)
        return E, mz
    
    return E