Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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.")
Ejemplo n.º 4
0
    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')
Ejemplo n.º 5
0
    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')
Ejemplo n.º 6
0
    def test_setMaxOrder_accepts_int(self):
        unit = UnitCell(3, 3, 3)

        unit.setMaxOrder(2)

        self.assertEquals(2, unit.getMaxOrder())
Ejemplo n.º 7
0
    def test_getMaxOrder_returns_int(self):
        unit = UnitCell(3, 3, 3)

        self.assertTrue(isinstance(unit.getMaxOrder(), int))
Ejemplo n.º 8
0
    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))