コード例 #1
0
    def test_wrap_kwargs(arg):
        from sisl import geom, Hamiltonian
        g = geom.graphene()
        H = Hamiltonian(g)
        H.construct([[0.1, 1.44], [0, -2.7]])

        bz = MonkhorstPack(H, [2, 2, 2], trs=False)
        assert len(bz) == 2 ** 3

        def wrap_none(arg):
            return arg
        def wrap_kwargs(arg, parent, k, weight):
            return arg * weight

        E = np.linspace(-2, 2, 100)
        asarray1 = (bz.asarray().DOS(E, wrap=wrap_none) * bz.weight.reshape(-1, 1)).sum(0)
        asarray2 = bz.asarray().DOS(E, wrap=wrap_kwargs).sum(0)
        aslist1 = (np.array(bz.aslist().DOS(E, wrap=wrap_none)) * bz.weight.reshape(-1, 1)).sum(0)
        aslist2 = np.array(bz.aslist().DOS(E, wrap=wrap_kwargs)).sum(0)
        asyield1 = (np.array([a for a in bz.asyield().DOS(E, wrap=wrap_none)]) * bz.weight.reshape(-1, 1)).sum(0)
        asyield2 = np.array([a for a in bz.asyield().DOS(E, wrap=wrap_kwargs)]).sum(0)
        asaverage = bz.asaverage().DOS(E, wrap=wrap_none)
        assum = bz.assum().DOS(E, wrap=wrap_kwargs)

        assert np.allclose(asarray1, asaverage)
        assert np.allclose(asarray2, asaverage)
        assert np.allclose(aslist1, asaverage)
        assert np.allclose(aslist2, asaverage)
        assert np.allclose(asyield1, asaverage)
        assert np.allclose(asyield2, asaverage)
        assert np.allclose(assum, asaverage)
コード例 #2
0
    def test_as_wrap_default_oplist(self):
        from sisl import geom, Hamiltonian
        g = geom.graphene()
        H = Hamiltonian(g)
        H.construct([[0.1, 1.44], [0, -2.7]])

        bz = MonkhorstPack(H, [2, 2, 2], trs=False).asaverage()
        assert len(bz) == 2 ** 3

        # Check with a wrap function
        E = np.linspace(-2, 2, 100)
        def wrap_sum(es, weight):
            PDOS = es.PDOS(E) * weight
            return PDOS.sum(0), PDOS

        DOS, PDOS = bz.assum().eigenstate(wrap=wrap_sum)
        assert np.allclose(bz.DOS(E), DOS)
        assert np.allclose(bz.PDOS(E), PDOS)