Source code for mendeleev.utils
from typing import Union, Tuple
import math
[docs]
def coeffs(a: int, b: int = 2) -> Tuple[int, int]:
"""
Return stoichometric coefficients from oxidation states
Args:
a: oxidation state of the first element
b: oxidation state of the second element
"""
lcm = abs(a * b) // math.gcd(a, b)
return lcm // a, lcm // b
[docs]
def n_effective(n: int, source: str = "slater") -> Union[float, None]:
"""
Effective principal quantum number
Args:
n: Principal quantum number
source: either `slater` or `zhang`, for more information see note below.
.. note::
Slater's values are taken from J. A. Pople, D. L. Beveridge,
"Approximate Molecular Orbital Theory", McGraw-Hill, 1970
Zhang's values are taken from Zhang, Y. (1982). Electronegativities
of elements in valence states and their applications.
1. Electronegativities of elements in valence states.
Inorganic Chemistry, 21(11), 3886–3889. https://doi.org/10.1021/ic00141a005
"""
numbers = {
"slater": {1: 1.0, 2: 2.0, 3: 3.0, 4: 3.7, 5: 4.0, 6: 4.2},
"zhang": {1: 0.85, 2: 1.99, 3: 2.89, 4: 3.45, 5: 3.85, 6: 4.36, 7: 4.99},
}
if source in numbers:
return numbers.get(source).get(n)
else:
raise ValueError(
f"source '{source}' not found, available sources are: {', '.join(numbers.keys())}"
)