def __init__(self,symbol,oxidation,coordination=4): Element.__init__(self,symbol) self.oxidation = oxidation self.coordination = coordination # Get shannon radius for the oxidation state and coordination. self.shannon_radius = None; shannon_data = data_loader.lookup_element_shannon_radius_data(symbol); for dataset in shannon_data: if dataset['charge'] == oxidation and dataset['coordination'] == coordination: self.shannon_radius = dataset['crystal_radius']; # Get SSE_2015 (revised) for the oxidation state. self.SSE_2015 = None sse_2015_data = data_loader.lookup_element_sse2015_data(symbol); if sse_2015_data: for dataset in sse_2015_data: if dataset['OxidationState'] == oxidation: self.SSE_2015 = dataset['SolidStateEnergy2015'] else: self.SSE_2015 = None
def __init__(self,symbol,oxidation,coordination): Element.__init__(self,symbol) self.oxidation = oxidation self.coordination = coordination # Get shannon radius for the oxidation state and coordination. self.shannon_radius = None; shannon_data = data_loader.lookup_element_shannon_radius_data(symbol); for dataset in shannon_data: if dataset['charge'] == oxidation and dataset['coordination'] == coordination: self.shannon_radius = dataset['crystal_radius']; # Get SSE_2015 (revised) for the oxidation state. self.SSE_2015 = None sse_2015_data = data_loader.lookup_element_sse2015_data(symbol); for dataset in sse_2015_data: if dataset['OxidationState'] == oxidation: self.SSE_2015 = dataset['SolidStateEnergy2015']
def __init__(self,symbol,oxidation,coordination=4, radii_source="shannon"): Element.__init__(self,symbol) self.oxidation = oxidation self.coordination = coordination # Get shannon radius for the oxidation state and coordination. self.shannon_radius = None; if radii_source=="shannon": shannon_data = data_loader.lookup_element_shannon_radius_data(symbol); elif radii_source == "extended": shannon_data = data_loader.lookup_element_shannon_radius_data_extendedML(symbol) else: print("Data source not recognised. Please select 'shannon' or 'extended'. ") if shannon_data: for dataset in shannon_data: if dataset['charge'] == oxidation and str(coordination) == dataset['coordination'].split('_')[0]: self.shannon_radius = dataset['crystal_radius']; # Get ionic radius self.ionic_radius = None; if shannon_data: for dataset in shannon_data: if dataset['charge'] == oxidation and str(coordination) == dataset['coordination'].split('_')[0]: self.ionic_radius = dataset['ionic_radius']; # Get SSE_2015 (revised) for the oxidation state. self.SSE_2015 = None sse_2015_data = data_loader.lookup_element_sse2015_data(symbol); if sse_2015_data: for dataset in sse_2015_data: if dataset['OxidationState'] == oxidation: self.SSE_2015 = dataset['SolidStateEnergy2015'] else: self.SSE_2015 = None
def __init__(self, symbol): """Initialise Element class Args: symbol (str): Chemical element symbol (e.g. 'Fe') """ dataset = data_loader.lookup_element_data(symbol, copy=False) if dataset == None: raise NameError("Elemental data for {0} not found.".format(symbol)) # Set coordination-environment data from the Shannon-radius data. # As above, it is safe to use copy = False with this Get* function. shannon_data = data_loader.lookup_element_shannon_radius_data(symbol, copy=False) if shannon_data != None: coord_envs = [row['coordination'] for row in shannon_data] else: coord_envs = None HHI_scores = data_loader.lookup_element_hhis(symbol) if HHI_scores == None: HHI_scores = (None, None) sse_data = data_loader.lookup_element_sse_data(symbol) if sse_data: sse = sse_data['SolidStateEnergy'] else: sse = None sse_Pauling_data = data_loader.lookup_element_sse_pauling_data(symbol) if sse_Pauling_data: sse_Pauling = sse_Pauling_data['SolidStateEnergyPauling'] else: sse_Pauling = None for attribute, value in ( ('coord_envs', coord_envs), ('covalent_radius', dataset['r_cov']), ('crustal_abundance', dataset['Abundance']), ('e_affinity', dataset['e_affinity']), ('eig', dataset['p_eig']), ('eig_s', dataset['s_eig']), ('HHI_p', HHI_scores[0]), ('HHI_r', HHI_scores[1]), ('ionpot', dataset['ion_pot']), ('mass', dataset['Mass']), ('name', dataset['Name']), ('number', dataset['Z']), ('oxidation_states', data_loader.lookup_element_oxidation_states(symbol)), ('oxidation_states_icsd', data_loader.lookup_element_oxidation_states_icsd(symbol)), ('oxidation_states_sp', data_loader.lookup_element_oxidation_states_sp(symbol)), ('dipol', dataset['dipol']), ('pauling_eneg', dataset['el_neg']), ('SSE', sse), ('SSEPauling', sse_Pauling), ('symbol', symbol), #('vdw_radius', dataset['RVdW']), ): setattr(self, attribute, value)