Exemple #1
0
    def test_primitive_cell_for_cubic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_cubic_lattice(-1)

        pc = PrimitiveCell.for_cubic_lattice(self.a)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.CUBIC)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.a, 0))
        assert_array_equal(pc.p3, (0, 0, self.a))
Exemple #2
0
    def test_primitive_cell_for_tetragonal_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_tetragonal_lattice(-1, -2)

        pc = PrimitiveCell.for_tetragonal_lattice(self.a, self.c)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.TETRAGONAL)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.a, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
Exemple #3
0
    def test_primitive_cell_for_orthorhombic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_orthorhombic_lattice(-1, -2, -3)

        pc = PrimitiveCell.for_orthorhombic_lattice(self.a, self.b, self.c)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.ORTHORHOMBIC)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.b, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
    def test_primitive_cell_for_cubic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_cubic_lattice(-1)

        pc = PrimitiveCell.for_cubic_lattice(self.a)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.CUBIC)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.a, 0))
        assert_array_equal(pc.p3, (0, 0, self.a))
    def test_primitive_cell_for_triclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(-1, -2, -3, 0.5, 0.6, 0.7)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 0, np.pi, np.pi)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 0.1, 0.2, 0.8)

        with self.assertRaises(ValueError):
            # angles too big
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 2.1, 2.1, 2.1)

        cosa = np.cos(self.alpha)
        cosb = np.cos(self.beta)
        sinb = np.sin(self.beta)
        cosg = np.cos(self.gamma)
        sing = np.sin(self.gamma)

        p1 = (self.a, 0, 0)
        p2 = (self.b*cosg, self.b*sing, 0)
        p3 = (self.c*cosb, self.c*(cosa-cosb*cosg) / sing,
              self.c*np.sqrt(sinb**2 - ((cosa-cosb*cosg) / sing)**2))

        pc = PrimitiveCell.for_triclinic_lattice(
            self.a, self.b, self.c, self.alpha, self.beta, self.gamma)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.TRICLINIC)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, p3)
Exemple #6
0
    def test_primitive_cell_for_triclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(-1, -2, -3, 0.5, 0.6, 0.7)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 0, np.pi, np.pi)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 0.1, 0.2, 0.8)

        with self.assertRaises(ValueError):
            # angles too big
            PrimitiveCell.for_triclinic_lattice(1, 2, 3, 2.1, 2.1, 2.1)

        cosa = np.cos(self.alpha)
        cosb = np.cos(self.beta)
        sinb = np.sin(self.beta)
        cosg = np.cos(self.gamma)
        sing = np.sin(self.gamma)

        p1 = (self.a, 0, 0)
        p2 = (self.b * cosg, self.b * sing, 0)
        p3 = (self.c * cosb, self.c * (cosa - cosb * cosg) / sing,
              self.c * np.sqrt(sinb**2 - ((cosa - cosb * cosg) / sing)**2))

        pc = PrimitiveCell.for_triclinic_lattice(self.a, self.b, self.c,
                                                 self.alpha, self.beta,
                                                 self.gamma)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.TRICLINIC)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, p3)
    def test_primitive_cell_for_orthorhombic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_orthorhombic_lattice(-1, -2, -3)

        pc = PrimitiveCell.for_orthorhombic_lattice(self.a, self.b, self.c)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.ORTHORHOMBIC)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.b, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
    def test_primitive_cell_for_tetragonal_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_tetragonal_lattice(-1, -2)

        pc = PrimitiveCell.for_tetragonal_lattice(self.a, self.c)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.TETRAGONAL)
        assert_array_equal(pc.p1, (self.a, 0, 0))
        assert_array_equal(pc.p2, (0, self.a, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
Exemple #9
0
    def test_primitive_cell_for_monoclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_monoclinic_lattice(-1, -2, -3, np.pi / 4)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_monoclinic_lattice(1, 2, 3, np.pi)

        pc = PrimitiveCell.for_monoclinic_lattice(self.a, self.b, self.c,
                                                  self.beta)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.MONOCLINIC)
        assert_array_equal(
            pc.p1, (self.a * np.sin(self.beta), 0, self.a * np.cos(self.beta)))
        assert_array_equal(pc.p2, (0, self.b, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
    def test_primitive_cell_for_monoclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_monoclinic_lattice(-1, -2, -3, np.pi/4)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_monoclinic_lattice(1, 2, 3, np.pi)

        pc = PrimitiveCell.for_monoclinic_lattice(
            self.a, self.b, self.c, self.beta)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.MONOCLINIC)
        assert_array_equal(pc.p1,
                           (self.a*np.sin(self.beta), 0,
                            self.a*np.cos(self.beta)))
        assert_array_equal(pc.p2, (0, self.b, 0))
        assert_array_equal(pc.p3, (0, 0, self.c))
Exemple #11
0
    def test_primitive_cell_for_rhombohedral_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_rhombohedral_lattice(-1, np.pi / 4)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_rhombohedral_lattice(1, np.pi)

        with self.assertRaises(ValueError):
            # angle too big
            PrimitiveCell.for_rhombohedral_lattice(1, np.pi * 2. / 3. + 0.1)

        cosa = np.cos(self.alpha)
        sina = np.sin(self.alpha)

        p1 = (self.a, 0, 0)
        p2 = (self.a * cosa, self.a * sina, 0)
        p3 = (self.a * cosa, self.a * (cosa - cosa**2) / sina,
              self.a * np.sqrt(sina**2 - ((cosa - cosa**2) / sina)**2))

        pc = PrimitiveCell.for_rhombohedral_lattice(self.a, self.alpha)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice, BravaisLattice.RHOMBOHEDRAL)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, p3)
    def test_primitive_cell_for_rhombohedral_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_rhombohedral_lattice(-1, np.pi/4)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_rhombohedral_lattice(1, np.pi)

        with self.assertRaises(ValueError):
            # angle too big
            PrimitiveCell.for_rhombohedral_lattice(1, np.pi*2./3.+0.1)

        cosa = np.cos(self.alpha)
        sina = np.sin(self.alpha)

        p1 = (self.a, 0, 0)
        p2 = (self.a*cosa, self.a*sina, 0)
        p3 = (self.a*cosa, self.a*(cosa-cosa**2) / sina,
              self.a*np.sqrt(sina**2 - ((cosa-cosa**2) / sina)**2))

        pc = PrimitiveCell.for_rhombohedral_lattice(self.a, self.alpha)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.RHOMBOHEDRAL)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, p3)
Exemple #13
0
    def test_primitive_cell_for_base_centered_monoclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_base_centered_monoclinic_lattice(-1, -2, -3, 0.5)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_base_centered_monoclinic_lattice(1, 2, 3, np.pi)

        p1 = (self.a * np.sin(self.beta), 0, self.a * np.cos(self.beta))
        p2 = (self.a * np.sin(self.beta) / 2, self.b / 2,
              self.a * np.cos(self.beta) / 2)

        pc = PrimitiveCell.for_base_centered_monoclinic_lattice(
            self.a, self.b, self.c, self.beta)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.BASE_CENTERED_MONOCLINIC)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, (0, 0, self.c))
 def setUp(self):
     self.addTypeEqualityFunc(
         DataContainer, partial(compare_data_containers, testcase=self))
     self.addTypeEqualityFunc(
         LatticeNode, partial(compare_lattice_nodes, testcase=self))
     self.primitive_cell = PrimitiveCell.for_cubic_lattice(0.2)
     self.size = (5, 10, 15)
     self.origin = (-2.0, 0.0, 1.0)
     self.container = self.container_factory(
         'my_name', self.primitive_cell, self.size, self.origin)
    def test_lattice_source_name(self):
        # given
        primitive_cell = PrimitiveCell.for_cubic_lattice(0.1)
        lattice = VTKLattice.empty('my_lattice', primitive_cell,
                                   (5, 10, 12), (0, 0, 0))

        # when
        source = self.tested_class(cuds=lattice)

        # then
        self.assertEqual(source.name, 'my_lattice (CUDS Lattice)')
    def test_exception_guess_vectors_with_unsorted_points(self):
        # given
        primitive_cell = PrimitiveCell.for_rhombohedral_lattice(0.1, 0.7)

        # when
        p1, p2, p3 = self._get_primitive_vectors(primitive_cell)
        points = create_points_from_pc(p1, p2, p3, (4, 5, 3))
        numpy.random.shuffle(points)

        # then
        with self.assertRaises(ValueError):
            lattice_tools.guess_primitive_vectors(points)
    def test_exception_guess_vectors_with_unsorted_points(self):
        # given
        primitive_cell = PrimitiveCell.for_rhombohedral_lattice(0.1, 0.7)

        # when
        p1, p2, p3 = self._get_primitive_vectors(primitive_cell)
        points = create_points_from_pc(p1, p2, p3, (4, 5, 3))
        numpy.random.shuffle(points)

        # then
        with self.assertRaises(ValueError):
            lattice_tools.guess_primitive_vectors(points)
    def test_source_from_a_vtk_lattice(self):
        # given
        primitive_cell = PrimitiveCell.for_cubic_lattice(0.1)
        lattice = VTKLattice.empty(
            'test', primitive_cell, (5, 10, 12), (0, 0, 0))

        # when
        source = self.tested_class(cuds=lattice)

        # then
        self.assertIs(source._vtk_cuds, lattice)
        self.assertIs(source.data, lattice.data_set)
    def test_primitive_cell_for_base_centered_monoclinic_lattice(self):
        with self.assertRaises(ValueError):
            PrimitiveCell.for_base_centered_monoclinic_lattice(
                -1, -2, -3, 0.5)

        with self.assertRaises(ValueError):
            PrimitiveCell.for_base_centered_monoclinic_lattice(
                1, 2, 3, np.pi)

        p1 = (self.a*np.sin(self.beta), 0, self.a*np.cos(self.beta))
        p2 = (self.a*np.sin(self.beta)/2, self.b/2,
              self.a*np.cos(self.beta)/2)

        pc = PrimitiveCell.for_base_centered_monoclinic_lattice(
            self.a, self.b, self.c, self.beta)
        self.assertIsInstance(pc, PrimitiveCell)
        self.assertEqual(pc.bravais_lattice,
                         BravaisLattice.BASE_CENTERED_MONOCLINIC)
        assert_array_equal(pc.p1, p1)
        assert_array_equal(pc.p2, p2)
        assert_array_equal(pc.p3, (0, 0, self.c))
Exemple #20
0
def make_face_centered_cubic_lattice(name, h, size, origin=(0, 0, 0)):
    """Create and return a 3D face-centered cubic lattice.

    Parameters
    ----------
    name : str
    h : float
        lattice spacing
    size : int[3]
        Number of lattice nodes in each axis direction.
    origin : float[3], default value = (0, 0, 0)
        lattice origin

    Returns
    -------
    lattice : Lattice
        A reference to a Lattice object.
    """
    pc = PrimitiveCell.for_face_centered_cubic_lattice(h)
    return Lattice(name, pc, size, origin)
    def test_version(self):
        filename = os.path.join(self.temp_dir, "test_file.cuds")
        group_name = "dummy_component_name"
        with tables.open_file(filename, "w") as handle:
            group = handle.create_group(handle.root, group_name)

            # given/when
            H5Lattice.create_new(group, PrimitiveCell.for_cubic_lattice(0.2), size=(5, 10, 15), origin=(-2, 0, 1))

            # then
            self.assertTrue(isinstance(group._v_attrs.cuds_version, int))

        # when
        with tables.open_file(filename, "a") as handle:
            handle.get_node("/{}".format(group_name))._v_attrs.cuds_version = -1

        # then
        with tables.open_file(filename, "a") as handle:
            with self.assertRaises(ValueError):
                H5Lattice(handle.get_node("/" + group_name))
Exemple #22
0
def make_orthorhombic_lattice(name, hs, size, origin=(0, 0, 0)):
    """Create and return a 3D orthorhombic lattice.

    Parameters
    ----------
    name : str
    hs : float[3]
        lattice spacings in each axis direction
    size : int[3]
        Number of lattice nodes in each axis direction.
    origin : float[3], default value = (0, 0, 0)
        lattice origin

    Returns
    -------
    lattice : Lattice
        A reference to a Lattice object.

    """
    pc = PrimitiveCell.for_orthorhombic_lattice(hs[0], hs[1], hs[2])
    return Lattice(name, pc, size, origin)
Exemple #23
0
def make_monoclinic_lattice(name, hs, beta, size, origin=(0, 0, 0)):
    """Create and return a 3D monoclinic lattice.

    Parameters
    ----------
    name : str
    hs : float[3]
        lattice spacings in each axis direction
    beta: float
        angle between the (conventional) unit cell edges (in radians),
    size : int[3]
        Number of lattice nodes in each axis direction.
    origin : float[3], default value = (0, 0, 0)
        lattice origin

    Returns
    -------
    lattice : Lattice
        A reference to a Lattice object.
    """
    pc = PrimitiveCell.for_monoclinic_lattice(hs[0], hs[1], hs[2], beta)
    return Lattice(name, pc, size, origin)
Exemple #24
0
def make_hexagonal_lattice(name, hxy, hz, size, origin=(0, 0, 0)):
    """Create and return a 3D hexagonal lattice.

    Parameters
    ----------
    name : str
    hxy : float
        lattice spacing in the xy-plane
    hz : float
        lattice spacing in the z-direction
    size : int[3]
        Number of lattice nodes in each axis direction.
    origin : float[3], default value = (0, 0, 0)
        lattice origin

    Returns
    -------
    lattice : Lattice
        A reference to a Lattice object.
    """
    pc = PrimitiveCell.for_hexagonal_lattice(hxy, hz)
    return Lattice(name, pc, size, origin)
Exemple #25
0
def make_rhombohedral_lattice(name, h, angle, size, origin=(0, 0, 0)):
    """Create and return a 3D rhombohedral lattice.

    Parameters
    ----------
    name : str
    h : float
        lattice spacing
    angle : float
        angle between the (conventional) unit cell edges (in radians)
    size : int[3]
        Number of lattice nodes in each axis direction.
    origin : float[3], default value = (0, 0, 0)
        lattice origin

    Returns
    -------
    lattice : Lattice
        A reference to a Lattice object.
    """
    pc = PrimitiveCell.for_rhombohedral_lattice(h, angle)
    return Lattice(name, pc, size, origin)
Exemple #26
0
    def test_version(self):
        filename = os.path.join(self.temp_dir, 'test_file.cuds')
        group_name = "dummy_component_name"
        with tables.open_file(filename, 'w') as handle:
            group = handle.create_group(handle.root, group_name)

            # given/when
            H5Lattice.create_new(group,
                                 PrimitiveCell.for_cubic_lattice(0.2),
                                 size=(5, 10, 15),
                                 origin=(-2, 0, 1))

            # then
            self.assertTrue(isinstance(group._v_attrs.cuds_version, int))

        # when
        with tables.open_file(filename, 'a') as handle:
            handle.get_node(
                "/{}".format(group_name))._v_attrs.cuds_version = -1

        # then
        with tables.open_file(filename, 'a') as handle:
            with self.assertRaises(ValueError):
                H5Lattice(handle.get_node("/" + group_name))
    def from_dataset(cls, name, data_set, data=None):
        """ Create a new Lattice and try to guess the ``primitive_cell``

        Parameters
        ----------
        name : str

        data_set : tvtk.ImageData or tvtk.PolyData
            The dataset to wrap in the CUDS api.  If it is a PolyData,
            the points are assumed to be arranged in C-contiguous order

        data : DataContainer
            The data attribute to attach to the container. Default is None.

        Returns
        -------
        lattice : VTKLattice

        Raises
        ------
        TypeError :
            If data_set is not either tvtk.ImageData or tvtk.PolyData

        IndexError:
            If the lattice nodes are not arranged in C-contiguous order
        """
        if isinstance(data_set, tvtk.ImageData):
            spacing = data_set.spacing
            unique_spacing = numpy.unique(spacing)
            if len(unique_spacing) == 1:
                primitive_cell = PrimitiveCell.for_cubic_lattice(spacing[0])
            elif len(unique_spacing) == 2:
                a, c = unique_spacing
                if sum(spacing == a) == 2:
                    primitive_cell = PrimitiveCell.for_tetragonal_lattice(a, c)
                else:
                    primitive_cell = PrimitiveCell.for_tetragonal_lattice(c, a)
            else:
                factory = PrimitiveCell.for_orthorhombic_lattice
                primitive_cell = factory(*spacing)

            return cls(name=name, primitive_cell=primitive_cell,
                       data=data, data_set=data_set)

        if not isinstance(data_set, tvtk.PolyData):
            # Not ImageData nor PolyData
            message = 'Cannot convert {} to a cuds Lattice'
            raise TypeError(message.format(type(data_set)))

        # data_set is an instance of tvtk.PolyData
        points = data_set.points.to_array()

        # Assumed C-contiguous order of points
        p1, p2, p3 = guess_primitive_vectors(points)

        # This will raise a TypeError if no bravais lattice type matches
        bravais_lattice = find_lattice_type(p1, p2, p3)

        primitive_cell = PrimitiveCell(p1, p2, p3, bravais_lattice)

        return cls(name=name, primitive_cell=primitive_cell,
                   data=data, data_set=data_set)
import numpy

from simphony.core.cuba import CUBA
from simphony.cuds.primitive_cell import PrimitiveCell
from simphony.visualisation import mayavi_tools

cubic = mayavi_tools.VTKLattice.empty(
    "test", PrimitiveCell.for_cubic_lattice(0.1),
    (5, 10, 12), (0, 0, 0))

lattice = cubic

new_nodes = []
for node in lattice.iter(item_type=CUBA.NODE):
    index = numpy.array(node.index) + 1.0
    node.data[CUBA.TEMPERATURE] = numpy.prod(index)
    new_nodes.append(node)

lattice.update(new_nodes)


if __name__ == '__main__':

    # Visualise the Lattice object
    mayavi_tools.show(lattice)
 def test_cell_volume(self):
     pc = PrimitiveCell.for_triclinic_lattice(1, 1, 1, np.pi/2,
                                              np.pi/2, np.pi/2)
     self.assertAlmostEqual(pc.volume, 1)
Exemple #30
0
 def test_cell_volume(self):
     pc = PrimitiveCell.for_triclinic_lattice(1, 1, 1, np.pi / 2, np.pi / 2,
                                              np.pi / 2)
     self.assertAlmostEqual(pc.volume, 1)
    '''
    # rotate x-y for angle1 about z
    xy_rot = numpy.array([[numpy.cos(angle1), numpy.sin(angle1), 0],
                          [numpy.sin(-angle1), numpy.cos(angle1), 0],
                          [0, 0, 1]])
    # rotate y-z for angle2 about x
    yz_rot = numpy.array([[1, 0, 0],
                          [0, numpy.cos(angle2), numpy.sin(angle2)],
                          [0, numpy.sin(-angle2), numpy.cos(angle2)]])
    # rotate x-y, then y-z
    xyz_rot = numpy.inner(xy_rot, yz_rot)
    return tuple(numpy.inner(xyz_rot, p) for p in (pc.p1, pc.p2, pc.p3))


# a cubic lattice on a rotated coordinates represented using PolyData
pcs = rotate_primitive_cell(PrimitiveCell.for_cubic_lattice(1.))
datasets.append(create_polydata_from_pc(*pcs))

# BCC lattice in a rotated coor. sys.
pcs = rotate_primitive_cell(PrimitiveCell.for_body_centered_cubic_lattice(1.))
datasets.append(create_polydata_from_pc(*pcs))

# FCC lattice in a rotated coor. sys.
pcs = rotate_primitive_cell(PrimitiveCell.for_face_centered_cubic_lattice(1.))
datasets.append(create_polydata_from_pc(*pcs))

# rhombohedral lattice in a rotated coor. sys.
pcs = rotate_primitive_cell(PrimitiveCell.for_rhombohedral_lattice(1., 1.))
datasets.append(create_polydata_from_pc(*pcs))

# tetragonal lattice in a rotated coor. sys.
Exemple #32
0
 def test_no_parallel_edges(self):
     with self.assertRaises(ValueError):
         PrimitiveCell((1, 0, 0), (1, 0, 0), (0, 0, 1),
                       BravaisLattice.CUBIC)
Exemple #33
0
 def test_edge_lengths_positive(self):
     with self.assertRaises(ValueError):
         PrimitiveCell((0, 0, 0), (0, 0, 0), (0, 0, 0),
                       BravaisLattice.CUBIC)