{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3: X-ray Diffraction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Example number 3.1, Page number 80"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelength is 0.97938 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=2.82*10**-10;    #lattice spacing(m)\n",
    "theta=10;   #glancing angle(degree)\n",
    "n=1;   #order\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "lamda=2*d*math.sin(theta)/n;    #wavelength(m)\n",
    "\n",
    "#Result\n",
    "print \"wavelength is\",round(lamda*10**10,5),\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.2, Page number 80"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelength is 1.262 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=3.035*10**-10;    #lattice spacing(m)\n",
    "theta=12;   #glancing angle(degree)\n",
    "n=1;   #order\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "lamda=2*d*math.sin(theta)/n;    #wavelength(m)\n",
    "\n",
    "#Result\n",
    "print \"wavelength is\",round(lamda*10**10,3),\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.3, Page number 81"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelengths are 1.464 angstrom and 1.6525 angstrom\n",
      "answer varies due to rounding off errors\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=2.81;    #lattice spacing(angstrom)\n",
    "theta1=15.1;   #glancing angle(degree)\n",
    "theta2=17.1;   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "lamda1=2*d*math.sin(theta1);    #wavelength(angstrom)\n",
    "theta2=theta2*math.pi/180;    #angle(radian)\n",
    "lamda2=2*d*math.sin(theta2);    #wavelength(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"wavelengths are\",round(lamda1,3),\"angstrom and\",round(lamda2,4),\"angstrom\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.4, Page number 81"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "separation between lattice planes is 4.035 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "lamda=1.54;      #wavelength(angstrom)\n",
    "theta=11;   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "d=lamda/(2*math.sin(theta));   #separation between lattice planes(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"separation between lattice planes is\",round(d,3),\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.5, Page number 81"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelength is 1.84 angstrom\n",
      "answer in the book is wrong\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "lamdaB=0.92;    #wavelength(angstrom)\n",
    "theta1=30;   #glancing angle(degree)\n",
    "theta2=60;   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "theta2=theta2*math.pi/180;    #angle(radian)\n",
    "lamdaA=2*lamdaB*math.sin(theta1)/math.sin(theta1);    #wavelength of line A(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"wavelength is\",lamdaA,\"angstrom\"\n",
    "print \"answer in the book is wrong\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.6, Page number 81"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "debroglie wavelength is 0.7406 *10**-10 metre\n",
      "velocity is 9.793 *10**6 m/sec\n",
      "answer in the book is wrong\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=0.4086*10**-10;    #lattice spacing(m)\n",
    "theta=65;   #glancing angle(degree)\n",
    "h=6.6*10**-34;    #plank's constant(Js)\n",
    "m=9.1*10**-31;    #mass(kg)\n",
    "n=1;\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "lamda=2*d*math.sin(theta)/n;    #debroglie wavelength(m)\n",
    "v=h/(m*lamda);        #velocity(m/sec)\n",
    "\n",
    "#Result\n",
    "print \"debroglie wavelength is\",round(lamda*10**10,4),\"*10**-10 metre\"\n",
    "print \"velocity is\",round(v/10**6,3),\"*10**6 m/sec\"\n",
    "print \"answer in the book is wrong\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.7, Page number 82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "longest wavelength is 5.64 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=2.82*10**-10;    #lattice spacing(m)\n",
    "sintheta=1;   \n",
    "n=1;\n",
    "\n",
    "#Calculation\n",
    "lamda_max=2*d*sintheta/n;    #longest wavelength(m)\n",
    "\n",
    "#Result\n",
    "print \"longest wavelength is\",lamda_max*10**10,\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.8, Page number 82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "glancing angle is 26.599 degree\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "d=0.842*10**-10;    #lattice spacing(m)\n",
    "theta1=8+(35/60);   #glancing angle(degree)\n",
    "n1=1;   #order\n",
    "n2=3;   #order\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "theta3=math.asin(n2*math.sin(theta1));      #glancing angle(radian)\n",
    "theta3=theta3*180/math.pi;       #glancing angle(degree)\n",
    "\n",
    "#Result\n",
    "print \"glancing angle is\",round(theta3,3),\"degree\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.9, Page number 82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "interplanar spacing is 1.804 angstrom\n",
      "answer varies due to rounding off errors\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "lamda=0.58;      #wavelength(angstrom)\n",
    "theta1=6+(45/60);   #glancing angle(degree)\n",
    "theta2=9+(15/60);   #glancing angle(degree)\n",
    "theta3=13;   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "theta2=theta2*math.pi/180;    #angle(radian)\n",
    "theta3=theta3*math.pi/180;    #angle(radian)\n",
    "x1=lamda/(2*math.sin(theta1));\n",
    "x2=lamda/(2*math.sin(theta2));\n",
    "\n",
    "#Result\n",
    "print \"interplanar spacing is\",round(x2,3),\"angstrom\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.10, Page number 83"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lattice spacing is 2.7882 angstrom\n",
      "avagadro number is 6.2337 *10**26 mol/k-mole\n",
      "answer varies due to rounding off errors\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "lamda=1.3922;      #wavelength(angstrom)\n",
    "n=1;\n",
    "theta=14+(27/60)+(26/(60*60));   #glancing angle(degree)\n",
    "M=58.454;          #molecular weight\n",
    "rho=2163;          #density(kg/m**3)\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "d=n*lamda/(2*math.sin(theta));   #lattice spacing(angstrom)\n",
    "d_m=d*10**-10;        #lattice spacing(m)\n",
    "N=M/(2*rho*d_m**3);     #avagadro number(mol/k-mole)\n",
    "\n",
    "#Result\n",
    "print \"lattice spacing is\",round(d,4),\"angstrom\"\n",
    "print \"avagadro number is\",round(N/10**26,4),\"*10**26 mol/k-mole\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.11, Page number 84"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ratio of angles of incidence are 0.104 : 0.2108 : 0.3123 which is nothing but 1.0 : 2.0 : 3.0\n",
      "angles of incidence should be 1st, 2nd and 3rd orders\n",
      "spacing is 2.804 *10**-10 m\n",
      "answer varies due to rounding off errors\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "lamda=0.586*10**-10;      #wavelength(m)\n",
    "theta1=5+(58/60);   #glancing angle(degree)\n",
    "theta2=12+(10/60);   #glancing angle(degree)\n",
    "theta3=18+(12/60);   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "theta2=theta2*math.pi/180;    #angle(radian)\n",
    "theta3=theta3*math.pi/180;    #angle(radian)\n",
    "x1=math.sin(theta1);\n",
    "x2=math.sin(theta2);\n",
    "x3=math.sin(theta3);\n",
    "d1=lamda/(2*math.sin(theta1));     #spacing for 1st order(m)\n",
    "d2=2*lamda/(2*math.sin(theta2));     #spacing for 2nd order(m)\n",
    "d3=3*lamda/(2*math.sin(theta3));     #spacing for 3rd order(m)\n",
    "d=(d1+d2+d3)/3;      #spacing(m)\n",
    "\n",
    "#Result\n",
    "print \"ratio of angles of incidence are\",round(x1,3),\":\",round(x2,4),\":\",round(x3,4),\"which is nothing but\",round(x1,1)*10,\":\",round(x2,1)*10,\":\",round(x3,1)*10\n",
    "print \"angles of incidence should be 1st, 2nd and 3rd orders\"\n",
    "print \"spacing is\",round(d*10**10,3),\"*10**-10 m\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.12, Page number 84"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ratio of angles of incidence are 0 : 1.413 : 1.744\n",
      "the crystal is a simple cubic crystal\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "theta1=5+(23/60);   #glancing angle(degree)\n",
    "theta2=7+(37/60);   #glancing angle(degree)\n",
    "theta3=9+(25/60);   #glancing angle(degree)\n",
    "\n",
    "#Calculation\n",
    "theta1=theta1*math.pi/180;    #angle(radian)\n",
    "theta2=theta2*math.pi/180;    #angle(radian)\n",
    "theta3=theta3*math.pi/180;    #angle(radian)\n",
    "x1=math.sin(theta1);\n",
    "X1=1/(10*x1);\n",
    "x2=math.sin(theta2)/x1;\n",
    "x3=math.sin(theta3)/x1;\n",
    "\n",
    "#Result\n",
    "print \"ratio of angles of incidence are\",int(x1),\":\",round(x2,3),\":\",round(x3,3)\n",
    "print \"the crystal is a simple cubic crystal\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.13, Page number 85"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "spacing of crystal is 0.38 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "h=6.62*10**-34;      #planck's constant(J sec)\n",
    "e=1.6*10**-19;       #charge(coulomb)\n",
    "m=9*10**-31;        #mass(kg) \n",
    "E=344;     #energy(volts)\n",
    "n=1;\n",
    "theta=60;   #angle(degrees)\n",
    "\n",
    "#Calculation\n",
    "lamda=h/math.sqrt(2*m*e*E);       #wavelength(m)\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "d=n*lamda*10**10/(2*math.sin(theta));           #spacing of crystal(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"spacing of crystal is\",round(d,2),\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example number 3.14, Page number 85"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lattice parameter is 4.1 angstrom\n",
      "radius of atom is 1.45 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "h=2;\n",
    "k=2;\n",
    "l=0;\n",
    "n=1;\n",
    "theta=32;   #angle(degrees)\n",
    "lamda=1.54*10**-10;      #wavelength(m)\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;    #angle(radian)\n",
    "d=n*lamda*10**10/(2*math.sin(theta));           #spacing of crystal(angstrom)\n",
    "a=d*math.sqrt(h**2+k**2+l**2);     #lattice parameter(angstrom)\n",
    "r=a/(2*math.sqrt(2));          #radius of atom(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"lattice parameter is\",round(a,1),\"angstrom\"\n",
    "print \"radius of atom is\",round(r,2),\"angstrom\""
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}