def perfect_character():
    return EdgeCharacter(hob_bottom_e=-0.1,
                         lub_top_e=1.1,
                         vbm=0.0,
                         cbm=1.0,
                         vbm_orbitals={"Mn": [0.5, 0.6]},
                         cbm_orbitals={"O": [0.7, 0.8]})
def acceptor_phs_character():
    return EdgeCharacter(vbm_participation_ratio=0.1,
                         cbm_participation_ratio=0.2,
                         hob_bottom_e=-0.2,
                         lub_top_e=0.1,
                         vbm=None,
                         cbm=None,
                         vbm_orbitals={"Mn": [0.5, 0.6]},
                         cbm_orbitals={"Mn": [0.7, 0.8]})
def no_in_gap_character():
    return EdgeCharacter(vbm_participation_ratio=0.1,
                         cbm_participation_ratio=0.2,
                         hob_bottom_e=-0.1,
                         lub_top_e=1.1,
                         vbm=0.0,
                         cbm=1.0,
                         vbm_orbitals={"Mn": [0.5, 0.6]},
                         cbm_orbitals={"O": [0.7, 0.8]})
Beispiel #4
0
def edge_characters():
    edge_character = EdgeCharacter(vbm_participation_ratio=0.1,
                                   cbm_participation_ratio=0.2,
                                   hob_bottom_e=0.3,
                                   lub_top_e=0.4,
                                   vbm=0.5,
                                   cbm=0.6,
                                   vbm_orbitals={"Mn": [0.5, 0.6]},
                                   cbm_orbitals={"Mn": [0.7, 0.8]})
    return EdgeCharacters([edge_character])
def in_gap_state_character():
    return EdgeCharacter(vbm_participation_ratio=0.5,
                         cbm_participation_ratio=0.5,
                         hob_bottom_e=0.4,
                         lub_top_e=0.6,
                         vbm=0.45,
                         cbm=0.55,
                         vbm_orbitals={
                             "Mn": [0.3, 0.2],
                             "O": [0.3, 0.1]
                         },
                         cbm_orbitals={
                             "Mn": [0.3, 0.2],
                             "O": [0.4, 0.2]
                         })
Beispiel #6
0
    def edge_characters(self):
        chars = []
        for spin, eigenvalues in self.eigenvalues.items():
            if spin == Spin.up:
                vbm_band_idx = int(round((self.nelect + self.mag) / 2)) - 1
            else:
                vbm_band_idx = int(round((self.nelect - self.mag) / 2)) - 1
            cbm_band_idx = vbm_band_idx + 1

            vbm = np.amax(eigenvalues[:, vbm_band_idx], axis=0)
            vbm_kpt_idx = np.argwhere(eigenvalues[:,
                                                  vbm_band_idx] == vbm)[0][0]
            hob_bottom_e = np.amin(eigenvalues[:, vbm_band_idx], axis=0)

            cbm = np.amin(eigenvalues[:, cbm_band_idx], axis=0)
            cbm_kpt_idx = np.argwhere(eigenvalues[:,
                                                  cbm_band_idx] == cbm)[0][0]
            lub_top_e = np.amax(eigenvalues[:, cbm_band_idx], axis=0)

            vbm_character = calc_orbital_character(self.orbs, self.structure,
                                                   spin, vbm_kpt_idx,
                                                   vbm_band_idx)
            cbm_character = calc_orbital_character(self.orbs, self.structure,
                                                   spin, cbm_kpt_idx,
                                                   cbm_band_idx)

            if self.neighboring_atom_indices:
                vbm_participation_ratio = calc_participation_ratio(
                    self.orbs, spin, vbm_kpt_idx, vbm_band_idx,
                    self.neighboring_atom_indices)
                cbm_participation_ratio = calc_participation_ratio(
                    self.orbs, spin, cbm_kpt_idx, cbm_band_idx,
                    self.neighboring_atom_indices)
            else:
                vbm_participation_ratio = None
                cbm_participation_ratio = None

            chars.append(
                EdgeCharacter(hob_bottom_e, lub_top_e, vbm, cbm, vbm_character,
                              cbm_character, vbm_participation_ratio,
                              cbm_participation_ratio))

        return EdgeCharacters(chars)