コード例 #1
0
ファイル: test_lattice.py プロジェクト: hua2001/PyStrucTrans
    def test_2D(self):
        # square
        E = np.array([[2, 0], [0, 2]])
        L = Lattice(E)
        PG1 = L.point_group()

        # centered rectangle
        E = np.array([[1., -1.], [1.5, 1.5]])
        L = Lattice(E)
        self.assertEqual(L.dimension(), 2)
        PG_expected = [
            [[1, 0], [0, 1]],
            [[-1, 0], [0, -1]],
            [[1, 0], [0, -1]],
            [[-1, 0], [0, 1]]
        ]
        PG2 = L.point_group()
        for Q in PG2.matrices():
            self.assertTrue(Q.tolist() in PG_expected)

        self.assertTrue(PG1.hassubgroup(PG2))

        # hexagonal
        E = [[2., 1.], [0., 1.73205081]]
        L = Lattice(E)
        self.assertEqual(L.Laue_group().order(), 6)
        self.assertEqual(L.point_group().order(), 12)

        # a random lattice
        E = 10 * np.random.rand(2, 2)
        while la.det(E) <= 0:
            E = 10 * np.random.rand(2, 2)
        L = Lattice(E)
        # lattice_group, point_group relationship
        PG = L.point_group().matrices()
        LG = L.lattice_group().matrices()

        LaueG = [m.tolist() for m in L.Laue_group().matrices()]
        SLG = [m.tolist() for m in L.special_lattice_group().matrices()]
        for Q in PG:
            self.assertTrue(L.inpointgroup(Q))
            if Q.tolist() in LaueG:
                self.assertTrue(la.det(Q) == 1)
            else:
                self.assertTrue(la.det(Q) == -1)
            # QE = EM
            M = np.rint(la.inv(E).dot(Q.dot(E)))
            self.assertTrue(L.inlatticegroup(M))

        for M in LG:
            self.assertEqual(L, Lattice(L.base().dot(M)))
            if M.tolist() in SLG:
                self.assertTrue(la.det(M) == 1)
            else:
                self.assertTrue(la.det(M) == -1)
            # QE = EM
            Q = E.dot(M).dot(la.inv(E))
            self.assertTrue(L.inpointgroup(Q))
コード例 #2
0
ファイル: test_lattice.py プロジェクト: hua2001/PyStrucTrans
    def test_2D(self):
        # square
        E = np.array([[2, 0], [0, 2]])
        L = Lattice(E)
        PG1 = L.point_group()

        # centered rectangle
        E = np.array([[1., -1.], [1.5, 1.5]])
        L = Lattice(E)
        self.assertEqual(L.dimension(), 2)
        PG_expected = [[[1, 0], [0, 1]], [[-1, 0], [0, -1]], [[1, 0], [0, -1]],
                       [[-1, 0], [0, 1]]]
        PG2 = L.point_group()
        for Q in PG2.matrices():
            self.assertTrue(Q.tolist() in PG_expected)

        self.assertTrue(PG1.hassubgroup(PG2))

        # hexagonal
        E = [[2., 1.], [0., 1.73205081]]
        L = Lattice(E)
        self.assertEqual(L.Laue_group().order(), 6)
        self.assertEqual(L.point_group().order(), 12)

        # a random lattice
        E = 10 * np.random.rand(2, 2)
        while la.det(E) <= 0:
            E = 10 * np.random.rand(2, 2)
        L = Lattice(E)
        # lattice_group, point_group relationship
        PG = L.point_group().matrices()
        LG = L.lattice_group().matrices()

        LaueG = [m.tolist() for m in L.Laue_group().matrices()]
        SLG = [m.tolist() for m in L.special_lattice_group().matrices()]
        for Q in PG:
            self.assertTrue(L.inpointgroup(Q))
            if Q.tolist() in LaueG:
                self.assertTrue(la.det(Q) == 1)
            else:
                self.assertTrue(la.det(Q) == -1)
            # QE = EM
            M = np.rint(la.inv(E).dot(Q.dot(E)))
            self.assertTrue(L.inlatticegroup(M))

        for M in LG:
            self.assertEqual(L, Lattice(L.base().dot(M)))
            if M.tolist() in SLG:
                self.assertTrue(la.det(M) == 1)
            else:
                self.assertTrue(la.det(M) == -1)
            # QE = EM
            Q = E.dot(M).dot(la.inv(E))
            self.assertTrue(L.inpointgroup(Q))
コード例 #3
0
ファイル: test_lattice.py プロジェクト: hua2001/PyStrucTrans
    def test_construction(self):
        E = np.eye(4).tolist()
        L = Lattice(E)
        self.assertEqual(L.dimension(), 4)
        self.assertListEqual(L.base()[:, 0].tolist(), [1, 0, 0, 0])

        # not matrix
        E = "adfda"
        self.assertRaises(ValueError, Lattice, E)

        # det E = 0
        E = [[1, 0, 0], [0, 0, 0], [0, 0, 1]]
        self.assertRaises(ValueError, Lattice, E)

        # 0 dimension
        E = []
        self.assertRaises(ValueError, Lattice, E)
コード例 #4
0
ファイル: test_lattice.py プロジェクト: hua2001/PyStrucTrans
    def test_construction(self):
        E = np.eye(4).tolist()
        L = Lattice(E)
        self.assertEqual(L.dimension(), 4)
        self.assertListEqual(L.base()[:, 0].tolist(), [1, 0, 0, 0])

        # not matrix
        E = "adfda"
        self.assertRaises(ValueError, Lattice, E)

        # det E = 0
        E = [[1, 0, 0], [0, 0, 0], [0, 0, 1]]
        self.assertRaises(ValueError, Lattice, E)

        # 0 dimension
        E = []
        self.assertRaises(ValueError, Lattice, E)