# 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
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
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=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)
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