The van der Waals interaction

Previously, you were given the opportunity to observe particles that interact only through the van der Waals interaction. In order to achieve this it is necessary to have a potential model, a mathematical function, that is capable of modeling this interaction. It is known that the van der Waals interaction encompasses two forces; the first is the long-range attractive London dispersion and the second is the short-range Pauli exclusion principle. Therefore, the potential model must be able to model both of these aspects.

One mathematical function that is commonly applied to model the van der Waals interaction is the Lennard-Jones potential model [1]. This considers the attractive London dispersion forces as follows,

where $\sigma$ is the distance at which the potential energy between the two particles is zero, $-\varepsilon$ is the potential energy at the equilibrium separation, and $r$ is the distance between the two atoms. The Pauli exclusion principle is repulsive and only substantial over very short distances. It is commonly modelled with the following function,

The Python code below defines each of the components of the Lennard-Jones potential and the total energy of the interaction. These are then all plotted on a single graph. The values of $\sigma$ and $\varepsilon$ are those associated with an argon-argon interaction, as defined by Rahman [2].

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

def attractive_energy(r, epsilon, sigma):
    """
    Attractive component of the Lennard-Jones 
    interactionenergy.
    
    Parameters
    ----------
    r: float
        Distance between two particles (Å)
    epsilon: float 
        Negative of the potential energy at the 
        equilibrium bond length (eV)
    sigma: float 
        Distance at which the potential energy is 
        zero (Å)
    
    Returns
    -------
    float
        Energy of attractive component of 
        Lennard-Jones interaction (eV)
    """
    return -4 * epsilon * np.power(sigma / r, 6)

def repulsive_energy(r, epsilon, sigma):
    """
    Repulsive component of the Lennard-Jones 
    interactionenergy.
    
    Parameters
    ----------
    r: float
        Distance between two particles (Å)
    epsilon: float 
        Negative of the potential energy at the 
        equilibrium bond length (eV)
    sigma: float 
        Distance at which the potential energy is 
        zero (Å)
    
    Returns
    -------
    float
        Energy of repulsive component of 
        Lennard-Jones interaction (eV)
    """
    return 4 * epsilon * np.power(sigma / r, 12)

def lj_energy(r, epsilon, sigma):
    """
    Implementation of the Lennard-Jones potential 
    to calculate the energy of the interaction.
    
    Parameters
    ----------
    r: float
        Distance between two particles (Å)
    epsilon: float 
        Negative of the potential energy at the 
        equilibrium bond length (eV)
    sigma: float 
        Distance at which the potential energy is 
        zero (Å)
    
    Returns
    -------
    float
        Energy of the Lennard-Jones potential 
        model (eV)
    """
    return repulsive_energy(
        r, epsilon, sigma) + attractive_energy(
        r, epsilon, sigma)

r = np.linspace(3, 5, 100)
plt.plot(r, attractive_energy(r, 0.0103, 3.4),
         label='Attractive')
plt.plot(r, repulsive_energy(r, 0.0103, 3.4), 
         label='Repulsive')
plt.plot(r, lj_energy(r, 0.0103, 3.4), 
         label='Lennard-Jones')
plt.xlabel(r'$r$/Å')
plt.ylabel(r'$E$/eV')
plt.legend(frameon=False)
plt.show()

png

The Lennard-Jones potential is not the only way to model the van der Waals interaction. Another commonly applied potential model is the Buckingham potential [3]. Similar to the Lennard-Jones potential, the Buckingham potential will model the attractive term with a sixth-power dependency on the distance between the two bonded particles. However, instead of a twelfth-power repulsion term an exponential function is utilised. The total Buckingham potential has the following form,

where $A$, $B$, and $C$ are interaction specific parameters that must be determined.

The Python code below allows the comparison between these two van der Waals potentials, using defined parameters for an argon-argon interaction [2,3].

def buckingham_energy(rij, a, b, c):
    """
    Implementation of the Buckingham potential 
    to calculate the energy of the interaction.
    
    Parameters
    ----------
    r: float
        Distance between two particles (Å)
    a: float 
        A parameter for the interaction (eV)
    b: float 
        B parameter for the interaction (eV)
    c: float 
        C parameter for the interaction (eV)
        
    Returns
    -------
    float
        Energy of the van der Waals interaction
    """
    return a * np.exp(-b * r) - c / np.power(r, 6)

r = np.linspace(3, 5, 100)
plt.plot(r, buckingham_energy(
    r, 10549.313, 3.66, 63.670), 
         label='Buckingham')
plt.plot(r, lj_energy(r, 0.0103, 3.4), 
         label='Lennard-Jones')
plt.xlabel(r'$r$/Å')
plt.ylabel(r'$E$/eV')
plt.legend(frameon=False)
plt.show()

png

There is a small but clear difference between the two potential energy functions; this is due to the different potential model and the parameterisation of that model.

Important

These are just two of many potentials that can be used to model the van der Waals interaction. Furthermore, the parameters used in the model are just one example of the many possible parameterisations of the argon-argon interaction.

References

  1. Lennard-Jones, J. E. Proc. Royal Soc. Lond. A. 1924, 106 (738), 463–477. 10.1098/rspa.1924.0082.
  2. Rahman, A. Phys. Rev. 1964, 136 (2A), A405–A411. 10.1103/PhysRev.136.A405.
  3. Buckingham, R. A. Proc. Royal Soc. Lond. A. 1938, 168 (933), 264–283. 10.1098/rspa.1938.0173.