{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Electronic configuration\n", "\n", "`ec` attribute is an object from the `ElectronicConfiguration` class that has additional method for manipulating the configuration. Internally the configuration is represented as a `OrderedDict` from the `collections` module where tuples `(n, s)` (`n` is the principal quantum number and `s` is the subshell label) are used as keys and shell occupations are the values" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from mendeleev import Si" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "Si.ec.conf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "the occupation of different subshells can be access supplying a proper key" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "Si.ec.conf[(1, \"s\")]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "to calculate the number of electrons per shell type" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "Si.ec.electrons_per_shell()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "get the largest value of the pricipal quantum number" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "Si.ec.max_n()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the largest value of azimutal quantum number for a given value of principal quantum number" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.max_l(n=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Find the large noble gas-like core configuration" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.get_largest_core()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the total number of electrons" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.ne()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Last subshell" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.last_subshell()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get unpaired electrons" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.unpaired_electrons()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove electrons by ionizing returns a new configuration with an electron removed" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ionized = Si.ec.ionize()\n", "print(ionized)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can check that it actually has less electrons: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ionized.ne()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Spin occupations by subshell" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.spin_occupations()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the spin only magnetic moment" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.spin_only_magnetic_moment()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the screening constant using Slater's rules for `2s` orbital" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Si.ec.slater_screening(n=2, o=\"s\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Standalone use\n", "\n", "You can use the `ElectronicConfiguration` as a standalone class and use all of the methods shown above." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from mendeleev.econf import ElectronicConfiguration" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ec = ElectronicConfiguration(\"1s2 2s2 2p6 3s1\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the valence only configuration" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ec.get_valence()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.1" } }, "nbformat": 4, "nbformat_minor": 4 }