10: Crystal structure and bonding

Example number 10.5, Page number 213

In [2]:
#importing modules
import math
from __future__ import division

#Variable declaration
h1=1;
k1=0;
l1=0;    #for (100) plane
h2=1;
k2=1;
l2=1;    #for (111) plane
a=1;   #assume

#Calculation
d100=a/math.sqrt(h1**2+k1**2+l1**2);   #spacing between (100) plane
d111=a/math.sqrt(h2**2+k2**2+l2**2);   #spacing between (111) plane

#Result
print "spacing between (100) plane is",d100,"a"
print "spacing between (111) plane is",round(d111,3),"a"
spacing between (100) plane is 1.0 a
spacing between (111) plane is 0.577 a

Example number 10.6, Page number 213

In [4]:
#importing modules
import math
from __future__ import division

#Variable declaration
r=0.152;    #atomic radius(nm)
h1=2;
k1=3;
l1=1;   #for plane (231)
h2=1;
k2=1;
l2=0;    #for plane (110)

#Calculation
a=4*r/math.sqrt(2);
d231=a/math.sqrt(h1**2+k1**2+l1**2);   #spacing between (231) plane(nm) 
d110=a/math.sqrt(h2**2+k2**2+l2**2);   #spacing between (110) plane(nm)

#Result
print "spacing between (231) plane is",round(d231,4),"nm"
print "spacing between (110) plane is",d110,"nm"
spacing between (231) plane is 0.1149 nm
spacing between (110) plane is 0.304 nm

Example number 10.7, Page number 213

In [6]:
#importing modules
import math
from __future__ import division

#Variable declaration
h=1;
k=0;
l=2;    #for plane (102)
a=0.424;   #edge(nm)

#Calculation
d102=a/math.sqrt(h**2+k**2+l**2);   #interplanar spacing(nm)

#Result
print "interplanar spacing is",round(d102,4),"nm"
interplanar spacing is 0.1896 nm

Example number 10.8, Page number 214

In [7]:
#importing modules
import math
from __future__ import division

#Variable declaration
a=3.2*10**-10;   #edge(m)
rho=11.36*10**3;   #density(kg/m**3)
N=6.023*10**26;    #avagadro number(per k mol)
M=207.2;   #atomic weight

#Calculation
n=a**3*rho*N/M;    #number of atoms per unit cell

#Result
print "number of atoms per unit cell is",int(n)
number of atoms per unit cell is 1

Example number 10.9, Page number 220

In [28]:
#importing modules
import math
from __future__ import division

#Variable declaration
d=2.51*10**-10;    #spacing between planes(m)
theta=9;   #glancing angle(degrees)

#Calculation
theta=theta*math.pi/180;   #glancing angle(radian)
lamda=2*d*math.sin(theta);  #wavelength(m)
a=lamda/2.51;
theta2=math.asin(a);   #glancing angle for 2nd order diffraction(radian)
theta2=2*theta*180/math.pi;   #glancing angle for 2nd order diffraction(degrees)

#Result
print "wavelength of X ray is",round(lamda*10**10,4),"angstrom"
print "glancing angle for 2nd order diffraction is",theta2,"degrees"
wavelength of X ray is 0.7853 angstrom
glancing angle for 2nd order diffraction is 18.0 degrees

Example number 10.10, Page number 220

In [30]:
#importing modules
import math
from __future__ import division

#Variable declaration
a=5*10**-10;   #lattice parameter(m)
n=1;
lamda=1.4*10**-10;   #wavelength(m)
h=1;
k=1;
l=1;      #for plane (111)

#Calculation
d111=a/math.sqrt(h**2+k**2+l**2);
b=n*lamda/(2*d111);
theta111=math.asin(b);   #incident angle(radian)
theta111=theta111*180/math.pi;    #incident angle(degrees)

#Result
print "incident angle is",int(theta111),"degrees"
incident angle is 14 degrees

Example number 10.11, Page number 221

In [49]:
#importing modules
import math
from __future__ import division

#Variable declaration
H=6.626*10**-34;    #planck's constant(Js)
m=9.1*10**-31;    #mass of electron(kg)
e=1.6*10**-19;   #conversion factor from J to eV
V=120;   #potential(V)
theta=22;   #angle(degrees)
theta=theta*math.pi/180;   #angle(radian)
h=1;
k=1;
l=1;      #for plane (111)

#Calculation
x=(2*m*e*V)**(1/2);    
lamda=H/x;      #wavelength(m)
d111=lamda*10**10/(2*math.sin(theta));
a=math.sqrt(h**2+k**2+l**2)*d111;   #lattice parameter(angstrom)

#Result
print "lattice parameter is",round(a,2),"angstrom"
lattice parameter is 2.59 angstrom

Example number 10.12, Page number 224

In [52]:
#importing modules
import math
from __future__ import division

#Variable declaration
e=1.6*10**-19;   #conversion factor from J to eV
epsilon0=8.85*10**-12;
r0=0.32*10**-9;   #distance(m)

#Calculation
V=-e/(4*math.pi*epsilon0*r0);   #potential energy(eV)

#Result
print "potential energy is",round(V,3),"eV"
print "answer varies due to rounding off errors"
potential energy is -4.496 eV
answer varies due to rounding off errors

Example number 10.13, Page number 224

In [58]:
#importing modules
import math
from __future__ import division

#Variable declaration
e=1.6*10**-19;   #conversion factor from J to eV
epsilon0=8.85*10**-12;
r0=0.31*10**-9;   #distance(m)
n=9;
alpha=1.748;  
Ie=5;   #ionisation energy(eV)
ea=-3.61;   #electron affinity(eV)

#Calculation
a=1-(1/n);
Vr0=-alpha*e**2*a/(4*math.pi*epsilon0*r0);   #energy(J)
Vr0=Vr0/e;     #cohesive energy(eV)
Vr0i=Vr0/2;    #contribution per ion to cohesive energy(eV)
Ee=Ie+ea;   #electron transfer energy(eV)
Vr0i2=Ee/2;    #contribution per ion to cohesive energy(eV)
CE=Vr0i+Vr0i2;   #cohesive energy per atom(eV)

#Result
print "cohesive energy per atom is",round(CE,4),"eV"
print "answer varies due to rounding off errors"
cohesive energy per atom is -2.9105 eV
answer varies due to rounding off errors