コード例 #1
0
 def test_pbs_fail(self, setup):
     with pytest.raises(ValueError):
         BandStructure(setup.s1, [[0] * 3, [.5] * 3, [.25] * 3], 1)
     with pytest.raises(ValueError):
         BandStructure(setup.s1, [[0] * 3, [.5] * 3, [.25] * 3],
                       [1, 1, 1, 1])
     with pytest.raises(ValueError):
         BandStructure(setup.s1, [[0] * 3, [.5] * 3, [.25] * 3], [1, 1, 1])
コード例 #2
0
 def test_bs_insert_jump_fail(self):
     g = geom.graphene()
     nk = 10
     bs = BandStructure(g,
                        [[0] * 3, [0.5, 0, 0], None, [0] * 3, [0., 0.5, 0]],
                        nk, ['A', 'B', 'C', 'D'])
     d = np.empty([nk + 1])
     with pytest.raises(ValueError):
         bs.insert_jump(d)
コード例 #3
0
ファイル: test_hamiltonian.py プロジェクト: BlueRorqual/sisl
 def test_eig3(self, setup):
     setup.HS.construct([(0.1, 1.5), ((1., 1.), (0.1, 0.1))])
     BS = BandStructure(setup.HS, [[0, 0, 0], [0.5, 0.5, 0]], 10)
     eigs = BS.asarray().eigh()
     assert len(BS) == eigs.shape[0]
     assert len(setup.HS) == eigs.shape[1]
     eig2 = np.array([eig for eig in BS.asyield().eigh()])
     assert np.allclose(eigs, eig2)
     setup.HS.empty()
コード例 #4
0
ファイル: test_hamiltonian.py プロジェクト: BlueRorqual/sisl
 def test_berry_phase_loop(self, setup):
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     bz1 = BandStructure.param_circle(H, 20, 0.01, [0, 0, 1], [1 / 3] * 3)
     bz2 = BandStructure.param_circle(H,
                                      20,
                                      0.01, [0, 0, 1], [1 / 3] * 3,
                                      loop=True)
     assert np.allclose(berry_phase(bz1), berry_phase(bz2))
コード例 #5
0
 def test_bs_jump_skipping_none(self):
     g = geom.graphene()
     bs1 = BandStructure(
         g, [[0] * 3, [0.5, 0, 0], None, [0] * 3, [0., 0.5, 0]], 30,
         ['A', 'B', 'C', 'D'])
     bs2 = BandStructure(
         g, [[0] * 3, [0.5, 0, 0], None, [0] * 3, [0., 0.5, 0], None], 30,
         ['A', 'B', 'C', 'D'])
     assert np.allclose(bs1.k, bs2.k)
コード例 #6
0
    def test_pbz1(self, setup):
        bz = BandStructure(setup.s1, [[0] * 3, [.5] * 3], 300)
        assert len(bz) == 300

        bz2 = BandStructure(setup.s1, [[0] * 2, [.5] * 2], 300, ['A', 'C'])
        assert len(bz) == 300

        bz3 = BandStructure(setup.s1, [[0] * 2, [.5] * 2], [150] * 2)
        assert len(bz) == 300
        bz.lineartick()
        bz.lineark()
        bz.lineark(True)
コード例 #7
0
ファイル: test_hamiltonian.py プロジェクト: freude/sisl
 def test_berry_phase_fail_loop(self, setup):
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     bz = BandStructure.param_circle(H,
                                     20,
                                     0.01, [0, 0, 1], [1 / 3] * 3,
                                     loop=True)
     elec.berry_phase(bz)
コード例 #8
0
    def test_bs_insert_jump(self):
        g = geom.graphene()
        nk = 10
        bs = BandStructure(
            g, [[0] * 3, [0.5, 0, 0], None, [0] * 3, None, [0., 0.5, 0]], nk,
            ['A', 'B', 'C', 'D'])
        d = np.empty([nk])
        d_jump = bs.insert_jump(d)
        assert d_jump.shape == (nk + 2, )

        d = np.empty([nk, 5])
        d_jump = bs.insert_jump(d)
        assert d_jump.shape == (nk + 2, 5)
        assert np.isnan(d_jump).sum() == 10

        d_jump = bs.insert_jump(d.T, value=np.inf)
        assert d_jump.shape == (5, nk + 2)
        assert np.isinf(d_jump).sum() == 10
コード例 #9
0
ファイル: test_hamiltonian.py プロジェクト: BlueRorqual/sisl
 def test_berry_phase(self, setup):
     R, param = [0.1, 1.5], [1., 0.1]
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     H.construct((R, param))
     bz = BandStructure.param_circle(H, 20, 0.01, [0, 0, 1], [1 / 3] * 3)
     berry_phase(bz)
     berry_phase(bz, sub=0)
     berry_phase(bz, eigvals=True, sub=0)
コード例 #10
0
 def test_bandstructure_pickle(self, setup):
     import pickle as p
     bz1 = BandStructure(setup.s1, [[0] * 2, [.5] * 2], 300, ['A', 'C'])
     n = p.dumps(bz1)
     bz2 = p.loads(n)
     assert np.allclose(bz1.k, bz2.k)
     assert np.allclose(bz1.weight, bz2.weight)
     assert bz1.parent == bz2.parent
     assert np.allclose(bz1.point, bz2.point)
     assert np.allclose(bz1.division, bz2.division)
     assert bz1.name == bz2.name
コード例 #11
0
def finite_bands(dev, pot, SF):
    H = Hamiltonian(dev)

    R = np.array([1.4, 1.44, 3.33, 3.37]) * SF
    t = (0, 3.16, 0, 0.39)

    H.construct([R, t])

    energies = pot.pot_func(dev.xyz)

    for i in dev.iter():

        H[i, i] = energies[i]

    #band = BandStructure(H, [[-np.pi / 2.46, 0, 0], [np.pi / 2.46, 0, 0]],
    #    400, [r'$-\pi$',r'$\pi$'])

    band = BandStructure(
        H, [[0, 0, 0], [0, 0.5, 0], [1 / 3, 2 / 3, 0], [0, 0, 0]], 400,
        [r'$\Gamma$', r'$M$', r'$K$', r'$\Gamma$'])

    bnds = band.asarray().eigh()

    lk, kt, kl = band.lineark(True)

    fig = plt.figure()
    ax = fig.add_subplot(111)

    for bnd in bnds.T:

        ax.plot(lk, bnd)

    plt.xticks(kt, kl)
    plt.xlim(0, lk[-1])
    #plt.ylim([0, 0.055])
    plt.ylim([-3, 3])
    #ax.set_ylim(-.1,.1)

    plt.show()
コード例 #12
0
 def test_pbz2(self, setup):
     bz = BandStructure(setup.s1, [[0] * 3, [.25] * 3, [.5] * 3], 300)
     assert len(bz) == 300
コード例 #13
0
 def test_pbs_divisions(self, setup):
     bz = BandStructure(setup.s1, [[0] * 3, [.25] * 3, [.5] * 3], [10, 10])
     assert len(bz) == 21
コード例 #14
0
 def test_pbs_missing_arguments(self, setup):
     with pytest.raises(ValueError):
         bz = BandStructure(setup.s1, divisions=[10, 10])
コード例 #15
0
ファイル: test_hamiltonian.py プロジェクト: BlueRorqual/sisl
 def test_berry_phase_fail_sc(self, setup):
     g = setup.g.tile(2, 0).tile(2, 1).tile(2, 2)
     H = Hamiltonian(g)
     bz = BandStructure.param_circle(H.geometry.sc, 20, 0.01, [0, 0, 1],
                                     [1 / 3] * 3)
     berry_phase(bz)
コード例 #16
0
 def test_pbs_deprecate_arguments(self, setup):
     with pytest.deprecated_call():
         bz = BandStructure(setup.s1, [[0] * 3, [.25] * 3, [.5] * 3],
                            division=[10, 10])
コード例 #17
0
 def test_bs_jump(self):
     g = geom.graphene()
     bs = BandStructure(g,
                        [[0] * 3, [0.5, 0, 0], None, [0] * 3, [0., 0.5, 0]],
                        30, ['A', 'B', 'C', 'D'])
     assert len(bs) == 30