Beispiel #1
0
def test_add_interstitial_not_primitive_error(cubic_supercell_info_wo_int):
    conventional_cell = Structure(Lattice.cubic(10),
                                  species=["H"] * 4 + ["He"] * 4,
                                  coords=[[0.0, 0.0, 0.0],
                                          [0.5, 0.5, 0.0],
                                          [0.5, 0.0, 0.5],
                                          [0.0, 0.5, 0.5],

                                          [0.0, 0.0, 0.5],
                                          [0.0, 0.5, 0.0],
                                          [0.5, 0.0, 0.0],
                                          [0.5, 0.5, 0.5],
                                        ])
    with pytest.raises(NotPrimitiveError):
        append_interstitial(cubic_supercell_info_wo_int, conventional_cell,
                            [[1/4, 1/4, 1/4]], ["test1"])
    def append_sites_to_supercell_info(self, supercell_info, indices):
        frac_coords, infos = [], []
        for idx, ep in enumerate(self.extrema_points, 1):
            if idx in indices:
                frac_coords.append(ep.frac_coords[0])
                infos.append(f"{self.info} #{idx}")

        result = append_interstitial(supercell_info,
                                     self.unit_cell,
                                     frac_coords=frac_coords,
                                     infos=infos)
        return result
Beispiel #3
0
def test_add_interstitial(cubic_supercell_info_wo_int):
    primitive = Structure(Lattice.rhombohedral(7.071068, 60),
                          species=["H", "He"],
                          coords=[[0.0]*3, [0.5]*3])
    new_supercell_info = append_interstitial(cubic_supercell_info_wo_int,
                                             primitive,
                                             [[1/4, 1/4, 1/4]],
                                             infos=["test1"])
    expected = Interstitial(frac_coords=[1/8, 1/8, 1/8],
                            site_symmetry="-43m",
                            info="test1")
    assert new_supercell_info.interstitials[0] == expected
Beispiel #4
0
def test_add_interstitial2(mocker, simple_cubic):
    mock_supercell_info = mocker.Mock()
    mock_supercell_info.unitcell_structure = simple_cubic
    mock_supercell_info.transformation_matrix = [[2, 0, 0], [0, 2, 0], [0, 0, 2]]
    mock_supercell_info.interstitials = []

    unitcell = Structure.from_dict(simple_cubic.as_dict())
    new_supercell_info = append_interstitial(mock_supercell_info,
                                             unitcell,
                                             [(0.0, 0.0, 0.1)],
                                             infos=["test1"])
    expected = Interstitial(frac_coords=[0.0, 0.0, 0.05],
                            site_symmetry="4mm",
                            info="test1")
    assert new_supercell_info.interstitials[0] == expected
Beispiel #5
0
def append_interstitial_to_supercell_info(args):
    supercell_info = append_interstitial(args.supercell_info,
                                         args.base_structure,
                                         [args.frac_coords], args.info)
    supercell_info.to_json_file()