def test_mp_asgrid_fail(self, setup): class Test(SuperCellChild): def __init__(self, sc): self.set_supercell(sc) def eigh(self, k, *args, **kwargs): return np.arange(3) bz = MonkhorstPack(Test(setup.s1), [2] * 3, displacement=[0.1] * 3).asgrid() bz.eigh(wrap=lambda eig: eig[0])
def test_mp_asgrid(self, setup, N, centered): class Test(SuperCellChild): def __init__(self, sc): self.set_supercell(sc) def eigh(self, k, *args, **kwargs): return np.arange(3) bz = MonkhorstPack(Test(setup.s1), [2] * 3).asgrid() # Check the shape grid = bz.eigh(wrap=lambda eig: eig[0]) assert np.allclose(grid.shape, [2] * 3) # Check the grids are different grid2 = bz.eigh(grid_unit='Bohr', wrap=lambda eig: eig[0]) assert not np.allclose(grid.cell, grid2.cell) assert np.allclose(grid.grid, grid2.grid) for i in range(3): grid = bz.eigh(data_axis=i) shape = [2] * 3 shape[i] = 3 assert np.allclose(grid.shape, shape)
def test_class3(self, setup): class Test(SuperCellChild): def __init__(self, sc): self.set_supercell(sc) def eigh(self, k, *args, **kwargs): return np.arange(3) def eig(self, k, *args, **kwargs): return np.arange(3) - 1 bz = MonkhorstPack(Test(setup.s1), [2] * 3) # Try the yield method bz.asyield() for val in bz.eigh(): assert np.allclose(val, np.arange(3)) for val in bz.eig(): assert np.allclose(val, np.arange(3) - 1) # Average assert np.allclose(bz.asaverage().eigh(), np.arange(3))