High quality renders of electron orbitals around Hydrogen, the software to generate them, and a site to browse them.
Cross Section of a 5f Orbital | Probability Distribution of 5f Complex Orbital | Probability Distribution of a 5f Real Orbital |
Try it out live at https://liam-ilan.github.io/electron-orbitals
This repository contains all 3d and cross-sectional renders for the probability density functions (
Note: the following is just a summary. I highly recommend reading this Wikipedia article, and this LibreTexts article. A large amount of the following explanation uses both of these articles as a source. Additionally, this explanation on stack exchange on the difference between real and complex orbitals was extremely useful.
Classical models of the atom, such as Bohr's model, model electrons as particles with definitive positions and momenta. This model does not account for various observed wave phenomena (see Double-slit Experiment). In reality, it is observed that particles, such as electrons, exhibit both particle and wave behavior.
In the quantum model of an atom, electrons do not exist in definite positions, rather, they are described by their wave functions (denoted
The wave function for an electron around a hydrogen nucleus (single proton), is defined in spherical coordinates as follows:
Where
-
$n =$ The principal quantum number, refers to the energy level of the electron,$0 < n$ -
$l =$ The azimuthal quantum number, refers to the subshell of the electron,$0 \le l \le n - 1$ -
$m =$ The magnetic quantum number, refers to the specific orbital within the subshell,$-l \le m \le l$ -
$Y_{l,m}(\theta,\phi) =$ spherical harmonics of l, order m (provided by Scipy'sscipy.special.sph_harm
) -
$R_{n,l}(r) =$ the radial function (provided by Prof. Davit Potoyan and Mr. Zachery Crandall)
Note: in chemistry class, you may have learned that subshells are labeled s, p, d, f, g, h, and i. These refer to the azimuthal quantum numbers (
$l$ ) 0, 1, 2, 3, 4, 5, and 6 respectively.
The diagrams generated from this project are titled with the three numbers characterizing electrons, (n, l, m).
This wave function is most often used in physics, and is always rotationally symmetrical around the z-axis. With that being said, the most common visual of an electron orbital is its real orbital. This is likely the orbital you've seen in a highschool textbook. Real orbital wave functions are superpositions of the two complex orbital wave functions,
Complex 2p Orbital for |
Real 2p Orbital for |
Rendering the probability distribution function, is done by sampling and even distribution of points in cartesian space, converting the cartesian coordinates to spherical coordinates, and computing
For easier depth perception, each point in the 3d graphs gets its color from its cartesian coordinates. The red channel corresponds to the x-axis, the blue channel to the y-axis, and the green channel to the z-axis.
Cross sections are provided only for complex orbitals.
Visit https://liam-ilan.github.io/electron-orbitals
The /img
directory contains all rendered images. They are split into the self-explanatory subdirectories 3d-complex
, 3d-real
, and cross
. Under each directory, images are titled n_l_m.png
.
All rendering software is under /generator
directory.
generator/render_3d.py
andgenerator/render_cross_section.py
contain methods to render their respective orbitals.generator/hydrogen.py
contains methods for computing the probability density functions of real and complex orbitals, in both cartesian and spherical coordinates. Credit to Prof. Davit Potoyan and Mr. Zachery Crandall for the radial function.generator/get_render_radius.py
contains an algorithm for finding what bounding radius should be rendered.
First, clone this repo,
git clone https://github.com/liam-ilan/electron-orbitals.git
The software used to generate these renders was built with Python, Scipy, Numpy, and Matplotlib. To install all necessary packages through pip,
pip install -r requirements.txt
From there, run python3 generator/main.py
to generate renders for all 140 orbitals.
As mentioned earlier, this repo also includes a Periodic Table of Orbitals. To run this site locally with php localhost on port 8000,
php -S localhost:8000
All code for the site is included under index.html
, scripts/index.js
, and styles/style.css
. Equation rendering done with MathJax.
- Built by Liam Ilan
- Credit to Prof. Davit Potoyan and Mr. Zachery Crandall for the radial function