Vibrations¶
Exercises¶
Preliminary provocations¶
- What is the motion of adjacent masses when the chain is oscillating at the its maximum frequency?
Exercise 1: Lennard-Jones potential¶
A simple model approximating the interaction between a pair of noble gas atoms such as Argon is the Lennard-Jones potential, in which the potential energy as a function of interatomic distance is
U(r)=4ϵ[(σr)12−(σr)6]
where r is the distance between two atoms, ϵ is the depth of the potential well, and σ is the distance at which the inter-particle potential is zero.
-
Sketch U(r) as a function of interatomic distance and mark the regions of repulsive and attractive forces acting between the atoms.
The force is F=−∇U, so points opposite to the gradient of the potential.
-
Find the distance, r0 (bond length), at which the potential energy is minimal and find the value of the potential energy at this distance (binding energy of the molecule).
The equilibrium position is r0=21/6σ. The energy at the inter atomic distance r0 is given by:
U(r0)=−ϵ
-
Expand U(r) in a Taylor series around r0 up to second order. By considering a second-order (=harmonic) potential approximation around the minimum (r0), find an expression for the spring constant, κ, in terms of ϵ and σ.
U(r)=−ϵ+κ2(r−r0)2
where κ=72ϵ21/3σ2.
-
Using the spring constant κ you found earlier, find the ground state energy of the molecule by comparing the molecule to a quantum harmonic oscillator. What is the energy required to break the molecule apart?
E0=−ϵ+12ℏω0
The breaking energy is the energy difference between the ground state and the 'escape level' at 0 energy.
Ebreak=ϵ−12ℏω0
-
What is the approximate number of phonons that can occupy this mode before the potential becomes anharmonic?
Hint
Because the diatomic molecule is modelled as a one-body problem (in the center of mass rest frame of the molecule), the mass should be replaced by the reduced mass.
If we take ranharmonic=r0+σ, the potential energy is U(ranharmonic). The number of phonons that fit in the potential before it becomes anharmonic is therefore n≈(U(ranharmonic)−(U(r0)+ℏω0/2)/ℏω0)
Exercise 2: Vibrational heat capacity of a 1D monatomic chain¶
- Give an integral expression for the heat capacity C.
- Compute the heat capacity numerically, using e.g. Python.
- Do the same for C in the Debye model and compare the two. What differences do you see?
Exercise 3: A finite chain¶
Consider a chain of only 3 atoms. We can then write the equations of motion
m¨δx1=−κ(δx1−δx2)m¨δx2=−κ(δx2−δx1)−κ(δx2−δx3)m¨δx3=−κ(δx3−δx2),
and write this system of equations in matrix form
m¨u=−κ(1−10−12−10−11)u
Hint
In Python use the function numpy.diag
- Define a matrix that relates forces to displacements in a linear 1D chain containing N=5 atoms. Repeat for N=200. You may assume that the masses and spring constants are equivalent throughout the chain.
- Using numerical diagonalization (
numpy.linalg.eigvalsh
), compute the eigenfrequencies of this atomic chain. Plot a histogram of these eigenfrequencies. - Make the masses of every even atom different from the masses of every odd atom. Compute the eigenfrequencies of this atomic chain and plot a histogram.
-
Now make the masses of even and odd atoms equivalent again. Furthermore, make the spring constants of every even spring different from the odd spring. Compute the eigenfrequencies of this atomic chain and plot a histogram.
import numpy as np from numpy import linalg as LA import matplotlib.pyplot as plt # Creating mass matrix def mass_matrix(N, m1, m2): M = np.zeros((N,N), dtype = int) j = np.linspace(0, N-1, N) for j in range(N): if j%2 ==0: M[j, j] = m1 else: M[j, j] = m2 return M # Creating function that initializes the spring matrix def initial_mat(N,M): K = np.zeros((N,N), dtype = int) b = np.ones(N-1) np.fill_diagonal(K, 2); np.fill_diagonal(K[1:], -b); np.fill_diagonal(K[:, 1:], -b) K[0,0] = K[-1,-1] = 1 MK = np.dot(LA.inv(M), K) omega = np.sqrt(np.abs(LA.eigvalsh(MK))) # outputting a histogram of the data plt.figure() plt.hist(omega, bins = 30) plt.xlabel("$\omega$") plt.ylabel("Number of levels per eigenfrequency") # Defining variables N = 200 m1 = 1; m2 = 4 # Running the code M = mass_matrix(N, m1, m2) initial_mat(N, M)