def setUp(self): charge = 1.0 energy = 0.1234 degeneracy = 2 self.defect_charge_state = DefectChargeState(charge=charge, energy=energy, degeneracy=degeneracy)
def test_get_transition_level_and_energy(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = DefectChargeState(2, -1, 1) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert defect.get_transition_level_and_energy(0, 2) == (1.5, 2)
def test_update_frozen_chgstates(self): string = "V_Ga -1 0.19E+19\nGa_i 1 0.5E+20" string = string.splitlines() defects = [ DefectSpecies('V_Ga', 1, [DefectChargeState(-1, 1, 1)]), DefectSpecies('Ga_i', 1, [DefectChargeState(1, 1, 1)]) ] update_frozen_chgstates(string, defects, 1, 2) assert_almost_equal(defects[0].get_concentration(0.1, 300), 1.9e-06) assert_almost_equal(defects[1].get_concentration(0.1, 300), 5e-05)
def test_fixed_concentration_charge_states(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = DefectChargeState(2, -1, 1) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert defect.fixed_conc_charge_states() == {} defect.charge_states[2] = FrozenDefectChargeState(2, 0.1234) assert defect.fixed_conc_charge_states() == { 2: defect.charge_states[2] }
def test_get_concentrations(self): charge_state_1 = DefectChargeState(-1, 1.1, 1) charge_state_2 = DefectChargeState(-2, 1.2, 1) defect = DefectSpecies('O_i', 1, [charge_state_1, charge_state_2]) assert_almost_equal(defect.get_concentration(0.2, 300), 3.7117030892903665e-14) defect.fix_concentration(0.1234) assert_almost_equal(defect.get_concentration(0.2, 300), 0.1234)
def test_min_energy_charge_state(self): charge_state_1 = DefectChargeState(-1, 0.1, 1) charge_state_2 = DefectChargeState(-2, 0.2, 1) defect = DefectSpecies('O_i', 1, [charge_state_1, charge_state_2]) self.assertEqual(defect.min_energy_charge_state(0), defect.charge_states[-1]) self.assertEqual(defect.min_energy_charge_state(2), defect.charge_states[-2])
def test_variable_concentration_charge_states(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = DefectChargeState(2, -1, 1) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert defect.variable_conc_charge_states() == { 0: charge_state_1, 2: charge_state_2 } defect.charge_states[2] = FrozenDefectChargeState(2, 0.1234) assert defect.variable_conc_charge_states() == {0: charge_state_1}
def test_charge_state_concentrations(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = FrozenDefectChargeState(2, 0.1234) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert defect.charge_state_concentrations(0.2, 300) == { 0: 2.520453931443997e-34, 2: 0.1234 }
def test_defect_charge_state_is_initialised(self): charge = 1.0 energy = 123.4 degeneracy = 2 defect_charge_state = DefectChargeState(charge=charge, energy=energy, degeneracy=degeneracy) self.assertEqual(defect_charge_state._charge, charge) self.assertEqual(defect_charge_state._energy, energy) self.assertEqual(defect_charge_state._degeneracy, degeneracy) self.assertEqual(defect_charge_state._fixed_concentration, False)
class TestDefectChargeState(unittest.TestCase): def setUp(self): charge = 1.0 energy = 0.1234 degeneracy = 2 self.defect_charge_state = DefectChargeState(charge=charge, energy=energy, degeneracy=degeneracy) def test_charge_property(self): self.assertEqual(self.defect_charge_state.charge, self.defect_charge_state._charge) def test_energy_property(self): self.assertEqual(self.defect_charge_state.energy, self.defect_charge_state._energy) def test_degeneracy_property(self): self.assertEqual(self.defect_charge_state.degeneracy, self.defect_charge_state._degeneracy) def test_concentration_is_fixed_property(self): self.assertEqual( self.defect_charge_state.concentration_is_fixed, self.defect_charge_state._fixed_concentration, ) def test_get_formation_energy(self): e_fermi = 1.2 formation_energy = self.defect_charge_state.get_formation_energy( e_fermi) self.assertEqual(formation_energy, 0.1234 + (1.0 * 1.2)) def test_get_concentration(self): e_fermi = 1.2 temperature = 298.0 conc = self.defect_charge_state.get_concentration( e_fermi=e_fermi, temperature=temperature) self.assertEqual(conc, 8.311501552630706e-23)
def test_tl_profile(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = DefectChargeState(2, -1, 1) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert_equal(defect.tl_profile(0, 5), [[0, -1], [1.5, 2], [5, 2]])
def test_defect_charge_contributions(self): charge_state_1 = DefectChargeState(0, 2, 1) charge_state_2 = FrozenDefectChargeState(2, 0.1234) defect = DefectSpecies('V_O', 1, [charge_state_1, charge_state_2]) assert defect.defect_charge_contributions(0.2, 300) == (0.2468, 0.0)