def test_find_bases_with_1d_modulation(self): qs = np.array([ [0, 0, .13], ]) ndim, bases = indexing.find_bases(qs, tolerance=.02) self.assertEqual(ndim, 1) npt.assert_array_equal(bases[0], qs[0])
def test_find_bases_with_4d_modulation(self): qs = np.array([ [0, 0, .1], [0, .1, 0], [.1, 0, 0], [.15, 0, 0], ]) ndim, bases = indexing.find_bases(qs, tolerance=.02) self.assertEqual(ndim, 4) npt.assert_array_equal(bases[0], qs[0]) npt.assert_array_equal(bases[1], qs[1]) npt.assert_array_equal(bases[2], qs[2])
def test_find_bases_with_2d_modulation_with_linear_combination(self): qs = np.array([ [0, .1, .1], [0, 0, .1], [0, .1, 0], [0, 0, .15], [0, .1, .2], ]) ndim, bases = indexing.find_bases(qs, tolerance=.02) self.assertEqual(ndim, 3) npt.assert_array_equal(bases[0], np.array([0, 0, .1])) npt.assert_array_equal(bases[1], np.array([0, .1, 0])) npt.assert_array_equal(bases[2], np.array([0, 0, .15]))
def test_find_bases_with_non_orthogonal_cell(self): cell = UnitCell(1, 1, 1, 90, 95, 103) cart_cell = cell.getB() qs = np.array([ [.5, 0, 0], [0, .5, 0], [0, 0, .5], [0, 0, .25], ]) qs = np.dot(qs, cart_cell) ndim, bases = indexing.find_bases(qs, 1e-5) self.assertEqual(ndim, 3, "Number of dimensions must be 3") expected_bases = np.array([[0., 0., 0.25], [0., .5, 0.], [0.51521732, 0.11589868, 0.04490415]]) npt.assert_almost_equal(bases, expected_bases, err_msg="Basis vectors do not match")
def test_find_bases_with_non_orthogonal_cell(self): cell = UnitCell(1, 1, 1, 90, 95, 103) cart_cell = cell.getB() qs = np.array([ [.5, 0, 0], [0, .5, 0], [0, 0, .5], [0, 0, .25], ]) qs = np.dot(qs, cart_cell) ndim, bases = indexing.find_bases(qs, 1e-5) self.assertEqual(ndim, 3, "Number of dimensions must be 3") expected_bases = np.array([ [0., 0., 0.25], [0., .5, 0.], [0.51521732, 0.11589868, 0.04490415] ]) npt.assert_almost_equal(bases, expected_bases, err_msg="Basis vectors do not match")