class RelaxationAnalyzerTest(unittest.TestCase): def setUp(self): p = Poscar.from_file(os.path.join(test_dir, 'POSCAR.Li2O'), check_for_POTCAR=False) s1 = p.structure p = Poscar.from_file(os.path.join(test_dir, 'CONTCAR.Li2O'), check_for_POTCAR=False) s2 = p.structure self.analyzer = RelaxationAnalyzer(s1, s2) def test_vol_and_para_changes(self): for k, v in self.analyzer.get_percentage_lattice_parameter_changes().items(): self.assertAlmostEqual(-0.0092040921155279731, v) latt_change = v vol_change = self.analyzer.get_percentage_volume_change() self.assertAlmostEqual(-0.0273589101391, vol_change) # This is a simple cubic cell, so the latt and vol change are simply # Related. So let's test that. self.assertAlmostEqual((1 + latt_change) ** 3 - 1, vol_change) def test_get_percentage_bond_dist_changes(self): for k, v in self.analyzer.get_percentage_bond_dist_changes().items(): for k2, v2 in v.items(): self.assertAlmostEqual(-0.009204092115527862, v2)
def get_percentage_bond_distance_change(self, n): """ Bond distance change after the introduction of interstitial. Args: n: index of interstitials """ def_struct = self._structs[n:n + 1][0] # copy def_struct.remove(-1) rv = RelaxationAnalyzer(self._blk_struct, def_struct) return rv.get_percentage_bond_dist_changes()
def get_percentage_bond_distance_change(self, n): """ Bond distance change after the introduction of interstitial Args: n: Symmetrically distinct interstitial index """ if not self._relax_struct: self._relax_analysis() blk_struct = self._relax_struct[0] def_struct = self._relax_struct[n + 1:n + 2][0] def_struct.remove(-1) #print def_struct rv = RelaxationAnalyzer(blk_struct, def_struct) return rv.get_percentage_bond_dist_changes()
coordinate = Voronoi.get_coordination_number(1) coordinate_sites = Voronoi.get_coordinated_sites(1) Voronoi_Analyzer = VoronoiAnalyzer() anay = Voronoi_Analyzer.analyze(s1, n=0) strucs = [s1, s2] anays = Voronoi_Analyzer.analyze_structures(strucs) print("Voronoi_Analyzer.analyze(s1,n=0):", anay) #plt = Voronoi_Analyzer.plot_vor_analysis(anays) relax = RelaxationAnalyzer(s1, s2) volume_change = relax.get_percentage_volume_change() lattice_parameter_changes = relax.get_percentage_lattice_parameter_changes() print('initial volume:', s1.volume) print('final volume:', s2.volume) print("percent_volume_change:", volume_change) print("percent_lattice_change:", lattice_parameter_changes) bond_dist = relax.get_percentage_bond_dist_changes(max_radius=6) print("percent_bond_distance_change:", bond_dist) connec = VoronoiConnectivity(s2) #print("connec.get_connections():",connec.get_connections()) #A_222_dopant = [0] A_222_dopant_neighbour = [[69, 73], [68, 72], [63, 65], [62, 64], [64, 65], [62, 63], [72, 73], [68, 69]] A_222_dopant_neighbour_MA_I_a = [[69, 73], [68, 72], [59, 61], [58, 60], [60, 61], [58, 59], [68, 69], [72, 73]] A_222_dopant_neighbour_MA_I_b = [[67, 71], [66, 70], [63, 65], [62, 64], [70, 71], [66, 67], [62, 63], [64, 65]] A_222_dopant_neighbour_MA_I_c = [[69, 73], [68, 72], [62, 64], [63, 65], [72, 73], [68, 69], [64, 65], [62, 63]] ###Calculate dopant bond length
coordinate = Voronoi.get_coordination_number(1) coordinate_sites = Voronoi.get_coordinated_sites(1) Voronoi_Analyzer = VoronoiAnalyzer() anay = Voronoi_Analyzer.analyze(s1,n=0) strucs = [s1,s2] anays = Voronoi_Analyzer.analyze_structures(strucs) print("Voronoi_Analyzer.analyze(s1,n=0):",anay) #plt = Voronoi_Analyzer.plot_vor_analysis(anays) relax = RelaxationAnalyzer(s1,s2) volume_change = relax.get_percentage_volume_change() lattice_parameter_changes = relax.get_percentage_lattice_parameter_changes() print('initial volume:',s1.volume) print('final volume:',s2.volume) print("percent_volume_change:",volume_change) print("percent_lattice_change:",lattice_parameter_changes) bond_dist = relax.get_percentage_bond_dist_changes() connec = VoronoiConnectivity(s2) B_233_dopant = [0] B_233_dopant_neighbour = [144,153,162,165,180,181] B_233_dopant_neighbour_Pb = [117,111,114,109,110] B_233_dopant_neighbour_Pb_I =[[144,153,171,174,189,190],[147,156,165,168,183,184],[150,159,162,168,186,187],[145,154,163,166,181,182],[146,155,164,167,180,182]] B_233 = zip(B_233_dopant_neighbour_Pb,B_233_dopant_neighbour_Pb_I) ### To determine the dopant and its neighbour I pair and bond distance comb1 = [] for i in B_233_dopant: for j in B_233_dopant_neighbour: pair = [] pair.append(i)