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]})
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] })
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)