Exemple #1
0
    def test_eps_r_op_2s_AA12_C34(self):
        r0 = tc.eps_r_op_2s_AA12_C34(self.r2, self.AA12, self.C_conj_B12)

        r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2,
                               self.op2s)

        self.assertTrue(sp.allclose(r0, r0_))
Exemple #2
0
    def test_eps_r_op_2s_C12(self):
        r0 = tc.eps_r_op_2s_C12(self.r2, self.C_A12, self.B1, self.B2)

        r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2,
                               self.op2s)

        self.assertTrue(sp.allclose(r0, r0_))
Exemple #3
0
    def test_eps_r_op_2s_A(self):
        r0 = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2,
                              self.op2s)

        r0_ = self.E12_op.dot(self.r2.ravel()).reshape(self.D[0], self.D[0])

        self.assertTrue(sp.allclose(r0, r0_))
Exemple #4
0
    def test_eps_r_op_2s_AA_func_op(self):
        r0 = tc.eps_r_op_2s_AA_func_op(
            self.r2, self.AA12, self.BB12,
            lambda s, t, u, v: self.op2s[s, t, u, v])

        r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2,
                               self.op2s)

        self.assertTrue(sp.allclose(r0, r0_))
Exemple #5
0
 def test_eps_r_op_2s_AA12_C34(self):
     r0 = tc.eps_r_op_2s_AA12_C34(self.r2, self.AA12, self.C_conj_B12)
     
     r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2, self.op2s)
     
     self.assertTrue(sp.allclose(r0, r0_))
Exemple #6
0
 def test_eps_r_op_2s_C12(self):
     r0 = tc.eps_r_op_2s_C12(self.r2, self.C_A12, self.B1, self.B2)
     
     r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2, self.op2s)
     
     self.assertTrue(sp.allclose(r0, r0_))
Exemple #7
0
 def test_eps_r_op_2s_AA_func_op(self):
     r0 = tc.eps_r_op_2s_AA_func_op(self.r2, self.AA12, self.BB12, lambda s,t,u,v: self.op2s[s,t,u,v])
     
     r0_ = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2, self.op2s)
     
     self.assertTrue(sp.allclose(r0, r0_))
Exemple #8
0
 def test_eps_r_op_2s_A(self):
     r0 = tc.eps_r_op_2s_A(self.r2, self.A1, self.A2, self.B1, self.B2, self.op2s)
     
     r0_ = self.E12_op.dot(self.r2.ravel()).reshape(self.D[0], self.D[0])
     
     self.assertTrue(sp.allclose(r0, r0_))
Exemple #9
0
def hamiltonian_elements(B1, B2, AL, AR, lL, rR, KL, KR, h_nn, d_max):
    B1_viol = rgf_violation(B1, AR, rR)
    B2_viol = rgf_violation(B2, AR, rR)
    if B1_viol > 1e-12:
        raise ValueError(
            "Gauge-fixing condition not satisfied for B1! Violation: {}".
            format(B1_viol))
    if B2_viol > 1e-12:
        raise ValueError(
            "Gauge-fixing condition not satisfied for B2! Violation: {}".
            format(B2_viol))

    print(mm.adot(lL, tm.eps_r_noop(rR, B1, B2)))

    matels = []
    if d_max >= 0:
        # <lL|(B1;B2)|KR>
        x = tm.eps_l_noop(lL, B1, B2)
        res1 = mm.adot(x, KR)

        # <KL|(B1;B2)|rR>
        x = tm.eps_l_noop(KL, B1, B2)
        res2 = mm.adot_noconj(x, rR)  # Do not conjugate KL contribution

        # <lL|h(AL,B1;AL,B2)|rR>
        x = tm.eps_r_op_2s_A(rR, AL, B1, AL, B2, h_nn)
        res3 = mm.adot(lL, x)

        # <lL|h(B1,AR;B2,AR)|rR>
        x = tm.eps_r_op_2s_A(rR, B1, AR, B2, AR, h_nn)
        res4 = mm.adot(lL, x)

        matels.append(res1 + res2 + res3 + res4)

    B1L = tm.eps_l_noop(lL, B1, AL)  # <lL|(B1;AL)
    B2_KR = tm.eps_r_noop(KR, AR, B2)  # (AR;B2)|KR>
    B2_KR += tm.eps_r_op_2s_A(rR, AR, AR, B2, AR,
                              h_nn)  # (AR;B2)|KR> + h(AR,AR;B2,AR)|rR>

    if d_max >= 1:
        res = mm.adot(
            B1L,
            B2_KR)  # <lL|(B1;AL) (AR;B2)|KR> + <lL|(B1;AL) h(AR,AR;B2,AR)|rR>

        x = tm.eps_r_op_2s_A(rR, B1, AR, AL, B2,
                             h_nn)  # <lL|h(B1,AR;AL,B2)|rR>
        res += mm.adot(lL, x)

        matels.append(res)

    B2_KR = tm.eps_r_noop(B2_KR, AR, AL)  # advance one site (d == 2)
    # (AR;AL)(AR;B2)|KR> + (AR;AL) h(AR,AR;B2,AR)|rR> + h(AR,AR;AL,B2)|rR>
    B2_KR += tm.eps_r_op_2s_A(rR, AR, AR, AL, B2, h_nn)

    for d in range(2, d_max + 1):
        x = B1L
        for _ in range(2, d):
            x = tm.eps_l_noop(x, AR, AL)  # (AR;AL)^(d-2)
        res = mm.adot(x, B2_KR)
        matels.append(res)

    return matels