smact.properties module#

A collection of tools for estimating physical properties based on chemical composition.

The “electronegativity of a compound” computed with compound_electroneg() is the rescaled geometric mean of electronegativity used in Nethercot’s recipe for estimating the photoelectric threshold: [1]

\[\Phi^{AB} = 2.86(\chi_{A}\chi_{B})^{1/2} + E_{g} / 2.\]

In other words, the computed group \(2.86(\chi_{A}\chi_{B})^{1/2}\) is the mid-gap energy. The valence band maximum/conduction band minimum positions can be estimated by subtracting/adding half of the band gap \(E_g\). This is an extension Mulliken’s electronegativity scale in which \(\chi_{A} = (I_{A} + E_{A})/2\) (where \(I\) and \(E\) are respectively the ionisation potential and electron affinity.) [2]

A collection of tools for estimating physical properties based on chemical composition.

smact.properties.band_gap_Harrison(anion: str, cation: str, distance: float | str = 2.0) float[source]#

Estimates the band gap from elemental data.

The band gap is estimated using the principles outlined in Harrison’s 1980 work “Electronic Structure and the Properties of Solids: The Physics of the Chemical Bond”.

Args:#

anion (str): Element symbol of the dominant anion in the system cation (str): Element symbol of the the dominant cation in the system distance (float or str): Nuclear separation between anion and cation,

i.e. sum of ionic radii (in Angstroms). Default: 2.0.

Returns:#

Band_gap (float): Band gap in eV

smact.properties.compound_electroneg(elements: list[str | Element] | None = None, stoichs: list[int | float] | None = None, source: str = 'Mulliken') float[source]#

Estimate electronegativity of compound from elemental data.

Uses Mulliken electronegativity by default, which uses elemental ionisation potentials and electron affinities. Alternatively, can use Pauling electronegativity, re-scaled by factor 2.86 to achieve same scale as Mulliken method (Nethercot, 1974) DOI:10.1103/PhysRevLett.33.1088 .

Geometric mean is used (n-th root of product of components), e.g.:

X_Cu2S = (X_Cu * X_Cu * C_S)^(1/3)

Args:#

elements (list) : Elements given as standard elemental symbols. stoichs (list) : Stoichiometries, given as integers or floats. source: String ‘Mulliken’ or ‘Pauling’; type of Electronegativity to

use. Note that in SMACT, Pauling electronegativities are rescaled to a Mulliken-like scale.

Returns:#

Electronegativity (float) : Estimated electronegativity (no units).

smact.properties.eneg_mulliken(element: Element | str) float[source]#

Get Mulliken electronegativity from the IE and EA.

Arguments:#

element (smact.Element or str): Element object or symbol

Returns:#

mulliken (float): Mulliken electronegativity

smact.properties.valence_electron_count(compound: str) float[source]#

Calculate the Valence Electron Count (VEC) for a given chemical compound.

This function parses the input compound, extracts the elements and their stoichiometries, and calculates the VEC using the valence electron data from SMACT’s Element class.

Parameters:

compound (str) – Chemical formula of the compound (e.g., “Fe2O3”).

Returns:

Valence Electron Count (VEC) for the compound.

Return type:

float

Raises:

ValueError – If an element in the compound is not found in the valence data.