コード例 #1
0
def test_boson_site():
    for Nmax in [1, 2, 5, 10]:
        for conserve in ['N', 'parity', None]:
            S = site.BosonSite(Nmax, conserve=conserve)
            S.test_sanity()
        npt.assert_array_almost_equal_nulp(np.dot(S.Bd.to_ndarray(), S.B.to_ndarray()),
                                           S.N.to_ndarray(), 2)
コード例 #2
0
ファイル: test_site.py プロジェクト: Chrisradaza/HomeTeNPy2
def test_boson_site():
    hcs = dict(Id='Id',
               JW='JW',
               B='Bd',
               Bd='B',
               N='N',
               NN='NN',
               dN='dN',
               dNdN='dNdN',
               P='P')
    for Nmax in [1, 2, 5, 10]:
        sites = []
        for conserve in ['N', 'parity', None]:
            S = site.BosonSite(Nmax, conserve=conserve)
            S.test_sanity()
            for op in S.onsite_ops:
                assert S.hc_ops[op] == hcs[op]
            npt.assert_array_almost_equal_nulp(
                np.dot(S.Bd.to_ndarray(), S.B.to_ndarray()), S.N.to_ndarray(),
                2)
            sites.append(S)
        check_same_operators(sites)
コード例 #3
0
def test_boson_site_ops():
    for Nmax in [1, 2, 5, 10]:
        sites = []
        for conserve in ['N', 'parity', None]:
            S = site.BosonSite(Nmax, conserve=conserve)
        check_same_operators(sites)
コード例 #4
0
ファイル: test_site.py プロジェクト: Chrisradaza/HomeTeNPy2
def test_set_common_charges():
    spin = site.SpinSite(0.5, 'Sz')
    spin1 = site.SpinSite(1, 'Sz')
    ferm = site.SpinHalfFermionSite(cons_N='N', cons_Sz='Sz')
    boson = site.BosonSite(2, 'N')
    spin_ops = {
        op_name: get_site_op_flat(spin, op_name)
        for op_name in spin.opnames
    }
    spin1_ops = {
        op_name: get_site_op_flat(spin1, op_name)
        for op_name in spin1.opnames
    }
    ferm_ops = {
        op_name: get_site_op_flat(ferm, op_name)
        for op_name in ferm.opnames
    }
    boson_ops = {
        op_name: get_site_op_flat(boson, op_name)
        for op_name in boson.opnames
    }
    site.set_common_charges([spin, ferm])
    assert tuple(spin.leg.chinfo.names) == ('2*Sz', 'N')
    spin.test_sanity()
    ferm.test_sanity()
    for op_name, op_flat in spin_ops.items():
        op_flat2 = get_site_op_flat(spin, op_name)
        npt.assert_equal(op_flat, op_flat2)
    for op_name, op_flat in ferm_ops.items():
        op_flat2 = get_site_op_flat(ferm, op_name)
        npt.assert_equal(op_flat, op_flat2)

    spin = site.SpinSite(0.5, 'Sz')
    ferm = site.SpinHalfFermionSite(cons_N='N', cons_Sz='Sz')
    site.set_common_charges([ferm, spin],
                            new_charges=[[(1, 0, '2*Sz'), (1, 1, '2*Sz')]])
    assert tuple(ferm.leg.chinfo.names) == ('2*Sz', )
    spin.test_sanity()
    ferm.test_sanity()
    for op_name, op_flat in spin_ops.items():
        op_flat2 = get_site_op_flat(spin, op_name)
        npt.assert_equal(op_flat, op_flat2)
    for op_name, op_flat in ferm_ops.items():
        op_flat2 = get_site_op_flat(ferm, op_name)
        npt.assert_equal(op_flat, op_flat2)

    # and finally a few more, changing orders as well
    ferm = site.SpinHalfFermionSite(cons_N='N', cons_Sz='Sz')
    spin = site.SpinSite(0.5, 'Sz')
    spin1 = site.SpinSite(1, 'Sz')
    boson = site.BosonSite(2, 'N')

    site.set_common_charges(
        [ferm, spin1, spin, boson],
        new_charges=[[(1, 0, '2*Sz'), (1, 2, '2*Sz')],
                     [(2, 0, 'N'), (1, 3, 'N')], [(0.5, 1, '2*Sz')]],
        new_names=['2*(Sz_f + Sz_spin-half)', '2*N_f+N_b', 'Sz_spin-1'])
    assert tuple(ferm.leg.chinfo.names) == ('2*(Sz_f + Sz_spin-half)',
                                            '2*N_f+N_b', 'Sz_spin-1')
    spin.test_sanity()
    ferm.test_sanity()
    spin1.test_sanity()
    boson.test_sanity()
    for op_name, op_flat in spin_ops.items():
        op_flat2 = get_site_op_flat(spin, op_name)
        npt.assert_equal(op_flat, op_flat2)
    for op_name, op_flat in ferm_ops.items():
        op_flat2 = get_site_op_flat(ferm, op_name)
        npt.assert_equal(op_flat, op_flat2)
    for op_name, op_flat in spin1_ops.items():
        op_flat2 = get_site_op_flat(spin1, op_name)
        npt.assert_equal(op_flat, op_flat2)
    for op_name, op_flat in boson_ops.items():
        op_flat2 = get_site_op_flat(boson, op_name)
        npt.assert_equal(op_flat, op_flat2)