Exemplo n.º 1
0
def test_create_f():
    i, j, n, m = symbols("i,j,n,m")
    o = Fd(i)
    assert isinstance(o, CreateFermion)
    o = o.subs(i, j)
    assert o.atoms(Symbol) == {j}
    o = Fd(1)
    assert o.apply_operator(FKet([n])) == FKet([1, n])
    assert o.apply_operator(FKet([n])) == -FKet([n, 1])
    o = Fd(n)
    assert o.apply_operator(FKet([])) == FKet([n])

    vacuum = FKet([], fermi_level=4)
    assert vacuum == FKet([], fermi_level=4)

    i, j, k, l = symbols("i,j,k,l", below_fermi=True)
    a, b, c, d = symbols("a,b,c,d", above_fermi=True)
    p, q, r, s = symbols("p,q,r,s")

    assert Fd(i).apply_operator(FKet([i, j, k], 4)) == FKet([j, k], 4)
    assert Fd(a).apply_operator(FKet([i, b, k], 4)) == FKet([a, i, b, k], 4)

    assert Dagger(B(p)).apply_operator(q) == q * CreateBoson(p)
    assert repr(Fd(p)) == "CreateFermion(p)"
    assert srepr(Fd(p)) == "CreateFermion(Symbol('p'))"
    assert latex(Fd(p)) == r"a^\dagger_{p}"
Exemplo n.º 2
0
def test_inner_product():
    i, j, k, l = symbols("i,j,k,l")
    s1 = BBra([0])
    s2 = BKet([1])
    assert InnerProduct(s1, Dagger(s1)) == 1
    assert InnerProduct(s1, s2) == 0
    s1 = BBra([i, j])
    s2 = BKet([k, l])
    r = InnerProduct(s1, s2)
    assert r == KroneckerDelta(i, k) * KroneckerDelta(j, l)
Exemplo n.º 3
0
def test_inner_product():
    i, j, k, l = var('i j k l')
    s1 = Bra([0])
    s2 = Ket([1])
    assert InnerProduct(s1, Dagger(s1)) == 1
    assert InnerProduct(s1, s2) == 0
    s1 = Bra([i, j])
    s2 = Ket([k, l])
    r = InnerProduct(s1, s2)
    assert r == KroneckerDelta(i, k) * KroneckerDelta(j, l)
Exemplo n.º 4
0
def test_dagger():
    i, j, n, m = symbols("i,j,n,m")
    assert Dagger(1) == 1
    assert Dagger(1.0) == 1.0
    assert Dagger(2 * I) == -2 * I
    assert Dagger(S.Half * I / 3.0) == I * Rational(-1, 2) / 3.0
    assert Dagger(BKet([n])) == BBra([n])
    assert Dagger(B(0)) == Bd(0)
    assert Dagger(Bd(0)) == B(0)
    assert Dagger(B(n)) == Bd(n)
    assert Dagger(Bd(n)) == B(n)
    assert Dagger(B(0) + B(1)) == Bd(0) + Bd(1)
    assert Dagger(n * m) == Dagger(n) * Dagger(m)  # n, m commute
    assert Dagger(B(n) * B(m)) == Bd(m) * Bd(n)
    assert Dagger(B(n) ** 10) == Dagger(B(n)) ** 10
    assert Dagger("a") == Dagger(Symbol("a"))
    assert Dagger(Dagger("a")) == Symbol("a")
Exemplo n.º 5
0
def test_dagger():
    i, j, n, m = symbols('i,j,n,m')
    assert Dagger(1) == 1
    assert Dagger(1.0) == 1.0
    assert Dagger(2*I) == -2*I
    assert Dagger(Rational(1, 2)*I/3.0) == -Rational(1, 2)*I/3.0
    assert Dagger(BKet([n])) == BBra([n])
    assert Dagger(B(0)) == Bd(0)
    assert Dagger(Bd(0)) == B(0)
    assert Dagger(B(n)) == Bd(n)
    assert Dagger(Bd(n)) == B(n)
    assert Dagger(B(0) + B(1)) == Bd(0) + Bd(1)
    assert Dagger(n*m) == Dagger(n)*Dagger(m)  # n, m commute
    assert Dagger(B(n)*B(m)) == Bd(m)*Bd(n)
    assert Dagger(B(n)**10) == Dagger(B(n))**10
    assert Dagger('a') == Dagger(Symbol('a'))
    assert Dagger(Dagger('a')) == Symbol('a')
Exemplo n.º 6
0
def test_dagger():
    i, j, n, m = var('i j n m')
    assert Dagger(1) == 1
    assert Dagger(1.0) == 1.0
    assert Dagger(2 * I) == -2 * I
    assert Dagger(Rational(1, 2) * I / 3.0) == -Rational(1, 2) * I / 3.0
    assert Dagger(Ket([n])) == Bra([n])
    assert Dagger(B(0)) == Bd(0)
    assert Dagger(Bd(0)) == B(0)
    assert Dagger(B(n)) == Bd(n)
    assert Dagger(Bd(n)) == B(n)
    assert Dagger(B(0) + B(1)) == Bd(0) + Bd(1)
    assert Dagger(n * m) == Dagger(n) * Dagger(m)  # n, m commute
    assert Dagger(B(n) * B(m)) == Bd(m) * Bd(n)
    assert Dagger(B(n)**10) == Dagger(B(n))**10