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}"
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)
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)
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")
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')
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