IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 4: Crystals Binding
This example calculates the electrostatic potential energy between two ions using Coulomb’s law.
In ionic crystals, the energy between two ions can be calculated using Coulomb’s law. This example calculates the electrostatic potential energy between two oppositely charged ions, like Na+ and Cl- in NaCl, based on their charges and distance.
def coulomb_energy(q1, q2, r):
k = 8.99e9 # Coulomb constant in N·m²/C²
return k * q1 * q2 / r
# Example: Na+ and Cl- ions, q1 = 1.6e-19 C, q2 = -1.6e-19 C, distance r = 0.28 nm
q1 = 1.6e-19 # Charge of Na+ ion in Coulombs
q2 = -1.6e-19 # Charge of Cl- ion in Coulombs
r = 0.28e-9 # Distance between ions in meters
energy = coulomb_energy(q1, q2, r)
print(f"Ionic Bond Energy: {energy:.2e} Joules")
This example uses the Lennard-Jones potential to calculate the energy of interaction between two atoms in a covalent bond.
The Lennard-Jones potential models the interaction between two neutral atoms or molecules in a covalent bond. It accounts for the balance between repulsion at short distances and attraction at longer distances. This example calculates the energy of interaction between two argon atoms.
def lennard_jones_potential(r, epsilon, sigma):
return 4 * epsilon * ((sigma / r)**12 - (sigma / r)**6)
# Example: Argon atoms, epsilon = 0.01 eV, sigma = 3.4 Å, distance r = 4 Å
epsilon = 0.01 * 1.6e-19 # eV to Joules
sigma = 3.4e-10 # meters
r = 4e-10 # meters
energy = lennard_jones_potential(r, epsilon, sigma)
print(f"Covalent Bond Energy: {energy:.2e} Joules")
This example calculates the cohesive energy of an ionic crystal using the Madelung constant and Coulomb's law.
The cohesive energy is the energy required to separate all ions in a crystal to infinity. This example calculates the cohesive energy for an ionic crystal such as NaCl, using the Madelung constant, which accounts for the geometry of the ionic lattice.
def cohesive_energy(q, r, z, A):
k = 8.99e9 # Coulomb constant in N·m²/C²
return -k * (z**2 * q**2 * A) / r
# Example: NaCl with Madelung constant A = 1.747, charge q = 1.6e-19 C, ionic distance r = 0.28 nm
q = 1.6e-19 # Charge of ion in Coulombs
r = 0.28e-9 # Distance between ions in meters
z = 1 # Charge number
A = 1.747 # Madelung constant for NaCl
energy = cohesive_energy(q, r, z, A)
print(f"Cohesive Energy: {energy:.2e} Joules")
This example calculates the metallic bond energy per atom using the free electron model and electron density.
In metallic bonding, free electrons move throughout the lattice, forming a "sea" of electrons that holds the metal atoms together. This example calculates the bond energy per atom in a metal using the free electron model and Fermi energy.
def metallic_bond_energy(n, V, E_F):
return (3/5) * E_F * (n / V)
# Example: Electron density n = 8.5e28 electrons/m³, volume V = 1e-29 m³, Fermi energy E_F = 5.5 eV
n = 8.5e28 # Electrons per cubic meter
V = 1e-29 # Volume in cubic meters
E_F = 5.5 * 1.6e-19 # Fermi energy in Joules
energy = metallic_bond_energy(n, V, E_F)
print(f"Metallic Bond Energy per Atom: {energy:.2e} Joules")
This example calculates the van der Waals bond energy between two atoms using the London dispersion formula.
Van der Waals forces are weak interactions between neutral molecules or atoms, which arise due to temporary dipoles. This example calculates the van der Waals bond energy using a typical London dispersion constant for molecules.
def van_der_waals_energy(C6, r):
return -C6 / r**6
# Example: C6 = 1e-77 J·m⁶ (typical value), distance r = 3.4 Å
C6 = 1e-77 # J·m⁶
r = 3.4e-10 # meters
energy = van_der_waals_energy(C6, r)
print(f"Van der Waals Bond Energy: {energy:.2e} Joules")
This example estimates the binding energy of a diatomic molecule using the bond dissociation energy.
The bond dissociation energy is the energy required to break a bond between two atoms. This example calculates the binding energy for a diatomic molecule like H2, based on its dissociation energy.
def binding_energy(dissociation_energy):
return dissociation_energy
# Example: Dissociation energy of H2 molecule = 4.52 eV
dissociation_energy = 4.52 * 1.6e-19 # eV to Joules
energy = binding_energy(dissociation_energy)
print(f"Binding Energy of H2: {energy:.2e} Joules")
This example calculates the lattice energy of an ionic crystal using the Born-Landé equation.
The lattice energy is the energy released when ions form a crystal lattice from gaseous ions. This example calculates the lattice energy for NaCl using the Born-Landé equation, which takes into account both Coulomb attraction and repulsion between ions.
def born_lande_lattice_energy(z, q, r, n, A):
k = 8.99e9 # Coulomb constant (N·m²/C²)
return -(A * z**2 * q**2 * k) / (r * (1 - 1/n))
# Example: NaCl, z = 1, q = 1.6e-19 C, r = 0.28 nm, A = 1.747, n = 8
z = 1 # Charge number
q = 1.6e-19 # Coulombs
r = 0.28e-9 # meters
A = 1.747 # Madelung constant
n = 8 # Born exponent
lattice_energy = born_lande_lattice_energy(z, q, r, n, A)
print(f"Lattice Energy: {lattice_energy:.2e} Joules")
This example estimates the total energy per atom in a metal using the free electron model and the density of states.
In metals, the total energy per atom can be estimated using the free electron model. This example shows how to calculate the total energy of a metal by considering the Fermi energy and the number of free electrons.
def total_metal_energy(E_F, N):
return (3/5) * E_F * N
# Example: Fermi energy E_F = 5.5 eV, number of atoms N = 1e23
E_F = 5.5 * 1.6e-19 # Joules
N = 1e23 # number of atoms
total_energy = total_metal_energy(E_F, N)
print(f"Total Energy of Metal: {total_energy:.2e} Joules")
This example calculates the van der Waals force between two neutral molecules based on the distance between them.
The van der Waals force between two molecules is an attractive force due to induced dipoles. This example calculates the van der Waals force between two neutral molecules based on their separation distance and the London dispersion constant.
def van_der_waals_force(C6, r):
return -6 * C6 / r**7
# Example: C6 = 1e-77 J·m⁶, distance r = 3.4 Å
C6 = 1e-77 # J·m⁶
r = 3.4e-10 # meters
force = van_der_waals_force(C6, r)
print(f"Van der Waals Force: {force:.2e} Newtons")
This example calculates the binding energy for a covalent solid based on bond strength and coordination number.
Covalent binding energy refers to the energy required to break all the bonds in a covalent solid like diamond. This example calculates the binding energy per atom for a covalent solid based on its bond energy and coordination number.
def covalent_binding_energy(bond_energy, coordination_number):
return bond_energy * coordination_number / 2 # Bond energy per atom
# Example: Bond energy = 3.5 eV, coordination number = 4 (for diamond)
bond_energy = 3.5 * 1.6e-19 # eV to Joules
coordination_number = 4
energy = covalent_binding_energy(bond_energy, coordination_number)
print(f"Covalent Binding Energy: {energy:.2e} Joules")
These Python examples cover key concepts related to Week 4: Crystal Binding, such as ionic, covalent, metallic, and van der Waals bonds. The examples include calculations of bond energies, cohesive energies, lattice energies, and total energies, providing students with hands-on practice for understanding crystal bonding in various materials.