def test_get_cell(self): c = Specie("Cu") t = Specie("Ti") m = [[-0.5, -0.5, -0.5], [-0.5, 0.5, 0.5], [0.5, -0.5, 0.5]] sites01 = [[[c]]] sites02 = [[[t, c, t], [t, t, c]]] sg01 = SitesGrid(sites01) sg02 = SitesGrid(sites02) cstru01 = CStru(m, sg01) cstru02 = CStru(m, sg02) lat01, pos01, num01 = cstru01.get_cell() lat02, pos02, num02 = cstru02.get_cell() self.assertTrue( np.allclose( lat01, np.array([[-0.5, -0.5, -0.5], [-0.5, 0.5, 0.5], [0.5, -0.5, 0.5]]))) self.assertTrue(np.allclose(pos01, np.array([[0, 0, 0]]))) self.assertTrue(np.allclose(num01, np.array([29]))) self.assertTrue( np.allclose( lat02, np.array([[-0.5, -0.5, -0.5], [-1, 1, 1], [1.5, -1.5, 1.5]]))) self.assertTrue( np.allclose( pos02, np.array([[0, 0, 0], [0, 0, 1 / 3], [0, 0, 2 / 3], [0, 1 / 2, 0], [0, 1 / 2, 1 / 3], [0, 1 / 2, 2 / 3]]))) self.assertTrue(np.allclose(num02, np.array([22, 29, 22, 22, 22, 29])))
def test_update_isoset(self): c = Specie("Cu") t = Specie("Ti") m = [[-0.5, -0.5, -0.5], [-0.5, 0.5, 0.5], [ 0.5, -0.5, 0.5]] ele_sea = SitesGrid.sea(2, 2, 2, c) cell_mother_stru = CStru(m, ele_sea).get_cell() sym = get_symmetry(cell_mother_stru, symprec=1e-5) ops = [(r, t) for r, t in zip(sym['rotations'], sym['translations'])] sym_perm = sogen.get_permutation_cell(cell_mother_stru) sites_0 = [[[c, c], [c, c]], [[c, c], [t, c]]] sg_0 = SitesGrid(sites_0) cstru01 = CStru(m, sg_0) number01 = cstru01.get_cell()[2] isoset_init = set() isoset_init_copy = isoset_init.copy() isoset_a01 = sogen._update_isoset(isoset_init, number01, sym_perm) self.assertNotEqual(isoset_a01, isoset_init_copy) self.assertIsInstance(isoset_a01, set) isoset_a01_copy = isoset_a01.copy() isoset_a02 = sogen._update_isoset(isoset_a01, number01, sym_perm) self.assertEqual(isoset_a02, isoset_a01_copy) self.assertLessEqual(len(isoset_a01), len(ops))