Пример #1
0
    def runTest(self):

        piezo_struc = self.get_structure('BaNiO3')
        tensor = np.asarray([[0., 0., 0., 0., 0.03839, 0.],
                             [0., 0., 0., 0.03839, 0., 0.],
                             [6.89822, 6.89822, 27.46280, 0., 0., 0.]]).reshape(3, 6)
        pt = PiezoTensor(tensor)
        full_tensor = [[[0., 0., 0.03839],
                        [0., 0., 0.],
                        [0.03839, 0., 0.]],
                       [[0., 0., 0.],
                        [0., 0., 0.03839],
                        [0.,  0.03839,  0.]],
                       [[6.89822, 0., 0.],
                        [0.,  6.89822, 0.],
                        [0.,  0.,  27.4628]]]
        bad_pt = PiezoTensor([[0., 0., 1., 0., 0.03839, 2.],
                              [0., 0., 0., 0.03839, 0., 0.],
                              [6.89822, 6.89822, 27.4628, 0., 0., 0.]])

        sym_pt = bad_pt.symmeterize(piezo_struc)
        alt_tensor = pt.from_full_tensor(full_tensor)

        self.assertArrayAlmostEqual(pt.full_tensor, full_tensor)
        self.assertArrayEqual(pt, alt_tensor)
        self.assertTrue(pt.is_valid(piezo_struc))

        self.assertTrue(sym_pt.is_valid(piezo_struc))
        self.assertArrayAlmostEqual(sym_pt, pt)