def setUp(self):
     charge = 1.0
     energy = 0.1234
     degeneracy = 2
     self.defect_charge_state = DefectChargeState(charge=charge,
                                                  energy=energy,
                                                  degeneracy=degeneracy)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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]
        }
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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])
Exemplo n.º 7
0
    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}
Exemplo n.º 8
0
    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)
Exemplo n.º 11
0
    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]])
Exemplo n.º 12
0
    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)