Course-wide Conventions & Notation
Overview and Learning Objectives¶
Molecular statistical mechanics often builds the total molecular partition function as a product of translational, rotational, vibrational, and electronic factors. This section collects high-temperature rigid-rotor formulas for different molecular shapes, reviews vibrational and electronic partition functions, and summarizes standard textbook approximations used to connect molecular constants to thermodynamic properties. We use rotational temperatures and vibrational temperatures , which package molecular constants into energy scales expressed in Kelvin (i.e., divided by Boltzmann’s constant ).
Learning objectives:
Identify how molecular shape (linear, spherical top, symmetric top, asymmetric top) affects the rotational partition function.
Use the rotational symmetry number and rotational temperatures to write high- expressions for .
Write the harmonic-oscillator vibrational partition function for diatomic and polyatomic molecules in terms of .
Interpret the electronic partition function and justify the ground-state approximation when excited states are high in energy.
Core Ideas and Derivations¶
Rotational Symmetry¶
The rotational partition function depends on:
The rotational constants (encoded as rotational temperatures , , , etc.).
The rotational symmetry number .
The temperature .
Below is a summary table of approximate expressions for rigid rotors in the high-temperature limit . Here, and are both expressed in Kelvin, so ratios like are dimensionless. In the symmetric-top expressions below, we take .
Table 1:Rotational Partition Functions of Rigid Rotors
Molecular Class | Symmetry Number () | Rotational Partition Function () | Examples () |
|---|---|---|---|
Heteronuclear Diatomic (Linear) | 1 | CO, NO, HF, HCl, etc. | |
Asymmetric Polyatomic (Linear) | 1 | HCN, N₂O, FCN, etc. | |
Homonuclear Diatomic (Linear) | 2 | H₂, O₂, N₂, etc. | |
Symmetric Polyatomic (Linear) | 2 | CO₂, CS₂, XeF₂ | |
Spherical Top | 12 () or 24 () | CH₄, SiH₄, SF₆, etc. | |
Symmetric Top | Varies with symmetry | C₆H₆ (), NH₃ (), XeF₄ (), etc. | |
Asymmetric Top | Varies with symmetry | H₂O (), NO₂ (), SO₂ (), most large molecules |
Nonlinear Rigid Rotors¶
Below is a visualization comparing spherical top, symmetric top, and asymmetric top molecules. The ellipsoid semi-axes are scaled by the three principal rotational temperatures , highlighting how anisotropy in the rotational constants maps onto the 3D “rotational profile.”
Source
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from myst_nb import glue
u = np.linspace(0, 2*np.pi, 100)
v = np.linspace(0, np.pi, 100)
u, v = np.meshgrid(u, v)
def surface_points(a, b, c):
"""Return x, y, z for an ellipsoid with semi-axes a, b, c."""
x = a * np.cos(u) * np.sin(v)
y = b * np.sin(u) * np.sin(v)
z = c * np.cos(v)
return x, y, z
# Rotational temperatures (sample values)
theta_ch4 = (7.54, 7.54, 7.54) # Spherical top
theta_nh3 = (19.9, 19.9, 9.6) # Symmetric top
theta_h2o = (40.1, 20.9, 13.4) # Asymmetric top
fig = plt.figure(figsize=(18, 6))
# 1) CH4: Spherical top
ax1 = fig.add_subplot(1, 3, 1, projection='3d')
x1, y1, z1 = surface_points(*theta_ch4)
surf1 = ax1.plot_surface(x1, y1, z1, color='skyblue', alpha=0.4, edgecolor='none')
ax1.set_title("Spherical Top")
ax1.set_box_aspect((1,1,1))
ax1.set_xlim(-7.54, 7.54)
ax1.set_ylim(-7.54, 7.54)
ax1.set_zlim(-7.54, 7.54)
ax1.view_init(elev=20, azim=35)
ax1.set_xlabel('$x$')
ax1.set_ylabel('$y$')
ax1.set_zlabel('$z$')
ax1.set_xticks([])
ax1.set_yticks([])
ax1.set_zticks([])
# Add a CH4 molecule to the plot (schematic coordinates)
positions = np.array([
[ 0.0000, 0.0000, 0.0000],
[ 0.6276, 0.6276, 0.6276],
[ 0.6276, -0.6276, -0.6276],
[-0.6276, 0.6276, -0.6276],
[-0.6276, -0.6276, 0.6276]
]) * 7.54/2
for i, pos in enumerate(positions):
if i == 0:
ax1.plot(*pos, 'o', markersize=10, markeredgecolor='black', markerfacecolor='black')
else:
ax1.plot(*pos, 'o', markersize=5, markeredgecolor='black', markerfacecolor='white')
if i > 0:
ax1.plot([positions[0][0], pos[0]],
[positions[0][1], pos[1]],
[positions[0][2], pos[2]], color='black')
ax1.text(7.54/4, -7.54/4, 7.54/16, 'CH$_4$', color='black', fontsize=12)
# 2) NH3: Symmetric top
ax2 = fig.add_subplot(1, 3, 2, projection='3d')
x2, y2, z2 = surface_points(*theta_nh3)
surf2 = ax2.plot_surface(x2, y2, z2, color='salmon', alpha=0.4, edgecolor='none')
ax2.set_title("Symmetric Top")
ax2.set_box_aspect((1,1,1))
ax2.set_xlim(-19.9, 19.9)
ax2.set_ylim(-19.9, 19.9)
ax2.set_zlim(-19.9, 19.9)
ax2.view_init(elev=20, azim=35)
ax2.set_xlabel('$x$')
ax2.set_ylabel('$y$')
ax2.set_zlabel('$z$')
ax2.set_xticks([])
ax2.set_yticks([])
ax2.set_zticks([])
positions = np.array([
[ 0.0000, 0.0000, 0.0000],
[ 0.0000, -0.9377, -0.3816],
[ 0.8121, 0.4689, -0.3816],
[-0.8121, 0.4689, -0.3816]
]) * 19.9/2
for i, pos in enumerate(positions):
if i == 0:
ax2.plot(*pos, 'o', markersize=10, markeredgecolor='black', markerfacecolor='skyblue')
else:
ax2.plot(*pos, 'o', markersize=5, markeredgecolor='black', markerfacecolor='white')
if i > 0:
ax2.plot([positions[0][0], pos[0]],
[positions[0][1], pos[1]],
[positions[0][2], pos[2]], color='black')
ax2.text(19.9/4, -19.9/4, 19.9/16, 'NH$_3$', color='black', fontsize=12)
# 3) H2O: Asymmetric top
ax3 = fig.add_subplot(1, 3, 3, projection='3d')
x3, y3, z3 = surface_points(*theta_h2o)
surf3 = ax3.plot_surface(x3, y3, z3, color='plum', alpha=0.4, edgecolor='none')
ax3.set_title("Asymmetric Top")
ax3.set_box_aspect((1,1,1))
ax3.set_xlim(-40.1, 40.1)
ax3.set_ylim(-40.1, 40.1)
ax3.set_zlim(-40.1, 40.1)
ax3.view_init(elev=20, azim=35)
ax3.set_xlabel('$x$')
ax3.set_ylabel('$y$')
ax3.set_zlabel('$z$')
ax3.set_xticks([])
ax3.set_yticks([])
ax3.set_zticks([])
positions = np.array([
[ 0.0000, 0.0000, 0.1173],
[ 0.7572, 0.0000, -0.4692],
[-0.7572, 0.0000, -0.4692]
]) * 40.1/2
for i, pos in enumerate(positions):
if i == 0:
ax3.plot(*pos, 'o', markersize=10, markeredgecolor='black', markerfacecolor='red')
else:
ax3.plot(*pos, 'o', markersize=5, markeredgecolor='black', markerfacecolor='white')
if i > 0:
ax3.plot([positions[0][0], pos[0]],
[positions[0][1], pos[1]],
[positions[0][2], pos[2]], color='black')
ax3.text(40.1/4, -40.1/4, 40.1/16, 'H$_2$O', color='black', fontsize=12)
plt.tight_layout()
plt.show()
plt.close(fig)Approximate visualization of rotational shapes: (left) a spherical top (CH₄), (middle) a symmetric top (NH₃), and (right) an asymmetric top (H₂O). The ellipsoid semi-axes are scaled by the chosen values along each principal axis.
Vibrations of Polyatomic Molecules¶
For a diatomic molecule approximated as a harmonic oscillator with characteristic vibrational temperature , the vibrational partition function is
For a polyatomic molecule with normal modes (where for a nonlinear molecule and for a linear molecule), the vibrational partition function factors into a product of each mode’s contribution:
Here, is the vibrational temperature of the -th normal mode.
Electronic Partition Function¶
The electronic partition function is
where is the degeneracy of the -th electronic state, is that state’s electronic energy, and . Taking as the reference, most ground-state-dominated situations satisfy , so the higher-lying states contribute negligibly and .
Summary¶
The table below collects the main partition function formulas for atoms and molecules under typical textbook approximations (high- rotation, harmonic vibration, and negligible population of excited electronic states):
Table 2:Partition functions for various systems
System | ||||
|---|---|---|---|---|
Atom | — | — | ||
Diatomic | ↓ | ↓ | ||
Polyatomic | — | — | — | — |
Linear | ↓ | same as diatomic (with adjusted ) | ↓ | |
Nonlinear | — | — | — | — |
Spherical | ↓ | ↓ | ↓ | |
Symmetric | ↓ | ↓ | ↓ | |
Asymmetric | ↓ | ↓ | ↓ |
The translational partition function (with the thermal de Broglie wavelength) applies to all gas-phase systems. For many molecules, the total partition function is well approximated as the product
with each factor evaluated using the formulas above, assuming the relevant excited states are not significantly populated beyond the ground state.
Worked Example¶
High- rotational partition function for a spherical top (CH)¶
For a spherical top,
Using the sample rotational temperature in the section visualization for CH, , and the tetrahedral symmetry number :
Compute at
Evaluate
Result. At room temperature, the rotational partition function of CH is large, indicating many thermally accessible rotational states.
Concept Checks¶
Why do nonlinear molecules typically have in the high- limit rather than ?
What is the physical meaning of the symmetry number , and why does it reduce ?
When is it reasonable to approximate ?
For a polyatomic molecule, why is a product over normal modes?
Key Takeaways¶
Total molecular partition functions are built as products of translational, rotational, vibrational, and electronic factors.
Rigid-rotor high- formulas depend on molecular symmetry and rotational temperatures.
Harmonic-oscillator vibration introduces and freezes out at .
Electronic contributions are often dominated by the ground state unless excited states lie within .