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)
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)