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
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
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
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()