def test_getAtoms_aniso_u_orthogonal(self): uElements = { '11': [u'0.01', u'0.02'], '12': [u'0.0', u'0.0'], '13': [u'0.0', u'0.0'], '22': [u'0.01', u'0.02'], '23': [u'0.0', u'0.0'], '33': [u'0.04', u'0.05'] } uDict = dict([(u'_atom_site_aniso_u_{0}'.format(key), value) for key, value in iteritems(uElements)]) uDict.update( dict([(u'_atom_site_label', [u'Si', u'Al']), (u'_atom_site_aniso_label', [u'Si', u'Al'])])) data = self._getData(uDict) cell = UnitCell(5.4, 4.3, 3.2) # u_equiv should be (0.01 + 0.01 + 0.04)/3 = 0.02 and (0.2 + 0.2 + 0.5)/3 = 0.03 self.assertEqual(self.builder._getAtoms(data, cell), 'Si 1/8 1/8 1/8 1.0 0.02;Al 0.34 0.56 0.23 1.0 0.03')
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_indexing_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) indices = indexing.index_q_vectors(qs) expected_indexing = np.array([ [0, 0, 1], [0, 1, 0], [2, 0, 0], [1, 0, 0] ]) npt.assert_equal(indices, expected_indexing, err_msg="Indexing does not match expected.")
def test_getAtoms_iso_preferred(self): uElements = { '11': [u'0.01', u'0.02'], '12': [u'0.0', u'0.0'], '13': [u'0.0', u'0.0'], '22': [u'0.01', u'0.02'], '23': [u'0.0', u'0.0'], '33': [u'0.04', u'0.05'] } uDict = dict([(u'_atom_site_aniso_u_{0}'.format(key), value) for key, value in uElements.items()]) uDict.update( dict([(u'_atom_site_label', [u'Si', u'Al']), (u'_atom_site_aniso_label', [u'Si', u'Al']), (u'_atom_site_u_iso_or_equiv', [u'0.01', u'0.02'])])) data = self._getData(uDict) cell = UnitCell(5.4, 4.3, 3.2) self.assertEqual(self.builder._getAtoms(data, cell), 'Si 1/8 1/8 1/8 1.0 0.01;Al 0.34 0.56 0.23 1.0 0.02')
def test_getAtoms_aniso_b_orthogonal(self): bElements = { '11': [u'1.0', u'2.0'], '12': [u'0.0', u'0.0'], '13': [u'0.0', u'0.0'], '22': [u'1.0', u'2.0'], '23': [u'0.0', u'0.0'], '33': [u'4.0', u'5.0'] } bDict = dict([(u'_atom_site_aniso_b_{0}'.format(key), value) for key, value in bElements.items()]) bDict.update( dict([(u'_atom_site_label', [u'Si', u'Al']), (u'_atom_site_aniso_label', [u'Si', u'Al'])])) data = self._getData(bDict) cell = UnitCell(5.4, 4.3, 3.2) self.assertEqual( self.builder._getAtoms(data, cell), 'Si 1/8 1/8 1/8 1.0 0.02533;Al 0.34 0.56 0.23 1.0 0.038')
def test_setMaxOrder_accepts_int(self): unit = UnitCell(3, 3, 3) unit.setMaxOrder(2) self.assertEquals(2, unit.getMaxOrder())
def test_getMaxOrder_returns_int(self): unit = UnitCell(3, 3, 3) self.assertTrue(isinstance(unit.getMaxOrder(), int))
def test_getModVec_returns_v3d(self): unit = UnitCell(3, 3, 3) self.assertTrue(isinstance(unit.getModVec(0), V3D)) self.assertTrue(isinstance(unit.getModVec(1), V3D)) self.assertTrue(isinstance(unit.getModVec(2), V3D))