In [1]:
import slater
In [2]:
print(slater.__doc__)
The class AOType
store the type of the atomic orbitals : s, p, d ...
In [3]:
print(slater.AOType.all_shells)
In [4]:
print(slater.AOType.s)
In [5]:
p_type = slater.AOType.from_string("p")
print(p_type)
In [6]:
f_type = slater.AOType.from_int(3)
print(f_type, " l = ", f_type.l)
Using the AO
class of the slater module.
In [7]:
AO_2s = slater.AO(n=2, aoType=slater.AOType.s, occ=1)
In [8]:
print(AO_2s)
In [9]:
print("n = ", AO_2s.n, "\nl = ", AO_2s.l)
In [10]:
print(AO_2s.name)
In [11]:
print("degeneracy (2l + 1) = ", AO_2s.degeneracy)
An occupency can be set to the shell.
In [12]:
print(AO_2s.occ)
You can define the AO from a usual string.
In [13]:
OA_3d = slater.AO.from_string("3d")
In [14]:
print("OA : ", OA_3d.name, "\nn = ", OA_3d.n, "\nl = ", OA_3d.l, "\ndeg = ", OA_3d.degeneracy)
Other ways to define the AO :
In [15]:
OA_4p = slater.AO(4, "p")
print(OA_4p)
In [16]:
OA_3s = slater.AO(3, 0)
print(OA_3s)
This class simply implements the Klechlowski rule. You should not need to use it directly.
In [17]:
k = slater.Klechkowski()
In [18]:
print(k)
This is the main part of the module.
In [19]:
Na = slater.ElectronicConf(nelec=11)
In [20]:
print(Na)
In [21]:
Ca = slater.ElectronicConf.from_string("1s^2 2s^2 2p^6 3s^2 3p^6 4s^2")
print(Ca)
You can export the configuration in as a latex formula.
In [22]:
print(Na.toTex())
You can print valence electrons :
In [23]:
print(Na.valence)
In [24]:
data = Na.computeEnergy()
In [25]:
print(data[slater.AO.from_string("2p")])
In [26]:
sigma, e = data[slater.AO.from_string("3s")]
print("sigma = ", sigma, "\ne = ", e, "eV")
Energy of the configuration
In [27]:
print("E = ", Na.energy)
Simplest cases :
In [28]:
print("Na :", Na)
print("q :", Na.q, " Z = ", Na.Z)
Na_p = Na.ionize(1)
print("Na + :", Na_p)
print("q :", Na_p.q, " Z = ", Na_p.Z)
In [29]:
Cl = slater.ElectronicConf(nelec=17)
print("Cl :", Cl)
Cl_m = Cl.ionize(-1)
print("Cl- :", Cl_m)
More complicated (4s / 3d inversion) : vanadium
In [30]:
V = slater.ElectronicConf(nelec=23)
print("V :", V)
for i in [1, 2, 3]:
ion = V.ionize(i)
print("V{}+ :".format(ion.q), ion)
Electronic configuration of chromium presents an exception. Here we compute the energy difference between the electronic configuration following the Klechkowski rule and the one with the exception.
In [31]:
Cr = slater.ElectronicConf(nelec=24)
print(Cr)
In [32]:
Cr_exc = slater.ElectronicConf.from_string("1s^2 2s^2 2p^6 3s^2 3p^6 4s^1 3d^5")
print(Cr_exc)
In [33]:
d = Cr.computeEnergy()
In [34]:
d_exc = Cr_exc.computeEnergy()
In [35]:
Cr.energy < Cr_exc.energy
Out[35]:
Conclusion : Slater's rule is not accurate enough to describe the chromium exception.