Beispiel #1
0
def test_matrix_from_x_y():
    actual = TetragonalSupercells.matrix_from_x_y(2, 0)
    expected = np.array([[2, 0], [0, 2]])
    np.testing.assert_array_equal(actual, expected)

    actual = TetragonalSupercells.matrix_from_x_y(2, 1)
    expected = np.array([[2, 2], [-2, 2]])
    np.testing.assert_array_equal(actual, expected)

    actual = TetragonalSupercells.matrix_from_x_y(1, 2)
    expected = np.array([[0, 2], [-2, 0]])  # rotate the axis
    np.testing.assert_array_equal(actual, expected)
Beispiel #2
0
def test_tetragonal_supercells(elongated_tetragonal):
    supercells = TetragonalSupercells(input_structure=elongated_tetragonal,
                                      min_num_atoms=2,
                                      max_num_atoms=300)
    actual = supercells.most_isotropic_supercell.lattice.lengths
    expected = (4.242640687119285, 4.242640687119285, 4.242640687119286)
    np.testing.assert_array_almost_equal(actual, expected)

    actual = supercells.most_isotropic_supercell.matrix
    expected = np.array([[3, 3, 0], [-3, 3, 0], [0, 0, 1]])
    np.testing.assert_array_equal(actual, expected)
Beispiel #3
0
    def _generate_supercell(self, crystal_system):
        if self._matrix:
            self.supercell = Supercell(self.conv_structure, self._matrix)
        else:
            if crystal_system == "t":
                supercells = TetragonalSupercells(self.conv_structure,
                                                  **self._supercell_kwargs)
            else:
                supercells = Supercells(self.conv_structure,
                                        **self._supercell_kwargs)

            self.supercell = supercells.most_isotropic_supercell
Beispiel #4
0
def test_next_x_y_combination():
    assert TetragonalSupercells.next_x_y_combination(24) == (5, 0)
    assert TetragonalSupercells.next_x_y_combination(25) in [(2, 3), (1, 5)]