def relax(self): """ Optimize interstitial structures """ no_inter = self._inter.defectsite_count() inter_gulp_kw = ('optimise', 'conp', 'qok') val_dict = self._inter.struct_valences scd = self._scd scale_mat = [[scd, 0, 0], [0, scd, 0], [0, 0, scd]] sc = self._inter.make_supercells_with_defects(scale_mat, self._el) blk_energy, rlx_struct = get_energy_relax_structure_buckingham(sc[0]) self._relax_structs.append(rlx_struct) self._relax_energies.append(blk_energy) val_dict[self._el] = self._oxi_state # If element not in structure for i in range(1, no_inter + 1): try: energy, rlx_struct = get_energy_relax_structure_buckingham( sc[i], keywords=inter_gulp_kw, valence_dict=val_dict) self._relax_energies.append(energy) self._relax_structs.append(rlx_struct) except: self._relax_energies.append(None) self._relax_structs.append(None) def is_empty(lst): for value in lst: if value: return False return True if is_empty(self._relax_energies): raise IOError('Relaxation failed')
def relax(self): """ Optimize interstitial structures """ no_inter = self._inter.defectsite_count() inter_gulp_kw = ('optimise', 'conp', 'qok') val_dict = self._inter.struct_valences scd = self._scd scale_mat = [[scd, 0, 0], [0, scd, 0], [0, 0, scd]] sc = self._inter.make_supercells_with_defects(scale_mat, self._el) blk_energy, rlx_struct = get_energy_relax_structure_buckingham(sc[0]) self._relax_structs.append(rlx_struct) self._relax_energies.append(blk_energy) val_dict[self._el] = self._oxi_state # If element not in structure for i in range(1, no_inter + 1): try: energy, rlx_struct = get_energy_relax_structure_buckingham( sc[i], keywords=inter_gulp_kw, valence_dict=val_dict ) self._relax_energies.append(energy) self._relax_structs.append(rlx_struct) except: self._relax_energies.append(None) self._relax_structs.append(None) def is_empty(lst): for value in lst: if value: return False return True if is_empty(self._relax_energies): raise IOError('Relaxation failed')
def _relax_analysis(self): """ Optimize interstitial structures """ no_inter = self._inter.defectsite_count() inter_gulp_kw = ('optimise', 'conp', 'qok') val_dict = self._inter.struct_valences scd = self._scd scale_mat = [[scd, 0, 0], [0, scd, 0], [0, 0, scd]] sc = self._inter.make_supercells_with_defects(scale_mat, self._el) blk_energy, rlx_struct = get_energy_relax_structure_buckingham(sc[0]) self._relax_struct.append(rlx_struct) val_dict[self._el] = self._oxi_state # If element not in structure for i in range(1, no_inter + 1): energy, rlx_struct = get_energy_relax_structure_buckingham( sc[i], keywords=inter_gulp_kw, valence_dict=val_dict) form_energy = energy - blk_energy self._relax_energies.append(form_energy) self._relax_struct.append(rlx_struct)
def _relax_analysis(self): """ Optimize interstitial structures """ no_inter = self._inter.defectsite_count() inter_gulp_kw = ('optimise', 'conp', 'qok') val_dict = self._inter.struct_valences scd = self._scd scale_mat = [[scd, 0, 0], [0, scd, 0], [0, 0, scd]] sc = self._inter.make_supercells_with_defects(scale_mat, self._el) blk_energy, rlx_struct = get_energy_relax_structure_buckingham(sc[0]) self._relax_struct.append(rlx_struct) val_dict[self._el] = self._oxi_state # If element not in structure for i in range(1, no_inter + 1): energy, rlx_struct = get_energy_relax_structure_buckingham( sc[i], keywords=inter_gulp_kw, valence_dict=val_dict ) form_energy = energy - blk_energy self._relax_energies.append(form_energy) self._relax_struct.append(rlx_struct)
def relax(self): energy, rlx_struct = get_energy_relax_structure_buckingham( self._unrelax_struct) self._relax_struct = rlx_struct
def test_get_energy_relax_structure_buckingham(self): enrgy, struct = get_energy_relax_structure_buckingham(self.mgo_uc) self.assertIsInstance(enrgy, float) self.assertIsInstance(struct, Structure) site_len = len(struct.sites) self.assertEqual(site_len, len(self.mgo_uc.sites))