Exemple #1
0
 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])
Exemple #2
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)
Exemple #3
0
 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))