{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3: Crystal Planes,X-ray Diffraction and Defects in Solids" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 1, Page number 3-19" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glancing angle is 21 degrees\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=0.28; #lattice spacing(nm)\n", "lamda=0.071; #wavelength of X-rays(nm)\n", "h=1;\n", "k=1;\n", "l=0;\n", "n=2;\n", "\n", "#Calculation\n", "d=a/math.sqrt(h**2+k**2+l**2); \n", "sintheta=n*lamda/(2*d);\n", "theta=math.asin(sintheta)*180/math.pi; #glancing angle(degrees)\n", "\n", "#Result\n", "print \"glancing angle is\",int(theta),\"degrees\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 2, Page number 3-19" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "wavelength of X-rays is 0.0842 nm\n", "maximum order of diffraction is 7\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=0.282; #lattice spacing(nm)\n", "theta=(8+(35/60))*math.pi/180; #glancing angle(radian)\n", "n=1; #order\n", "\n", "#Calculation\n", "lamda=2*d*math.sin(theta)/n; #wavelength of X-rays(nm)\n", "n=2*d/lamda; #maximum order of diffraction\n", "\n", "#Result\n", "print \"wavelength of X-rays is\",round(lamda,4),\"nm\"\n", "print \"maximum order of diffraction is\",int(round(n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 3, Page number 3-20" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fraction of vacancy sites is 8.466 *10**-7\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "T1=773; #temperature(K)\n", "T2=1273; #temperature(K)\n", "f=10**-10; #fraction of vacant sites\n", "\n", "#Calculation\n", "x=round(T1*math.log(f)/T2,3);\n", "N=math.exp(x); #fraction of vacancy sites\n", "\n", "#Result\n", "print \"fraction of vacancy sites is\",round(N*10**7,3),\"*10**-7\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 4, Page number 3-21" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "h1=1;\n", "k1=0;\n", "l1=0; #miller indices of (100)\n", "h2=1;\n", "k2=1;\n", "l2=0; #miller indices of (110)\n", "h3=1;\n", "k3=1;\n", "l3=1; #miller indices of (111)\n", "a=1; #assume\n", "\n", "#Calculation\n", "d100=a/math.sqrt(h1**2+k1**2+l1**2); #spacing(nm)\n", "d110=a/math.sqrt(h2**2+k2**2+l2**2); #spacing(nm)\n", "d111=a/math.sqrt(h3**2+k3**2+l3**2); #spacing(nm)\n", "\n", "def lcm(x, y):\n", " if x > y:\n", " greater = x\n", " else:\n", " greater = y\n", " while(True):\n", " if((greater % x == 0) and (greater % y == 0)):\n", " lcm = greater\n", " break\n", " greater += 1\n", " \n", " return lcm\n", "\n", "lcm=lcm(1/d110,1/d111);\n", "d100=d100*lcm;\n", "d110=d110*lcm;\n", "d111=d111*lcm; #ratio d100:d110:d111\n", "\n", "#Result\n", "print \"ratio d100:d110:d111 is\",d100/math.sqrt(6),\"*math.sqrt(6)\",d110/math.sqrt(3),\"*math.sqrt(3)\",d111/math.sqrt(2),\"*math.sqrt(2)\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 5, Page number 3-21" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n=1; #order\n", "theta=38.2*math.pi/180; #glancing angle(radian)\n", "lamda=1.54; #wavelength(angstrom)\n", "h=2;\n", "k=2;\n", "l=0;\n", "\n", "#Calculation\n", "a=math.sqrt(h**2+k**2+l**2);\n", "d=n*lamda*a/(2*math.sin(theta)); #lattice parameter(angstrom)\n", "\n", "#Result\n", "print \"lattice parameter is\",round(d,3),\"angstrom\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 6, Page number 3-22" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "maximum order of diffraction is 2\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=1.6; #lattice spacing(angstrom)\n", "theta=90*math.pi/180; #glancing angle(radian)\n", "lamda=1.5; #wavelength of X-rays(angstrom)\n", "\n", "#Calculation\n", "n=2*d*math.sin(theta)/lamda; #maximum order of diffraction \n", "\n", "#Result\n", "print \"maximum order of diffraction is\",int(n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 7, Page number 3-22" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "length is 0.287 *10**-9 m\n", "volume of unit cell is 0.02366 *10**-27 m**3\n", "answer for volume given in the book varies due to rounding off errors\n", "radius of atom is 0.1243 *10**-9 m\n" ] } ], "source": [ "#importing modules \n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=0.203*10**-9; #lattice spacing(m)\n", "h=1;\n", "k=1;\n", "l=0; #miller indices of (110)\n", "lamda=1.5; #wavelength of X-rays(angstrom)\n", "\n", "#Calculation\n", "a=d*math.sqrt(h**2+k**2+l**2); #length(m)\n", "V=a**3; #volume of unit cell(m**3)\n", "r=math.sqrt(3)*a/4; #radius of atom(m)\n", "\n", "#Result\n", "print \"length is\",round(a*10**9,3),\"*10**-9 m\"\n", "print \"volume of unit cell is\",round(V*10**27,5),\"*10**-27 m**3\"\n", "print \"answer for volume given in the book varies due to rounding off errors\"\n", "print \"radius of atom is\",round(r*10**9,4),\"*10**-9 m\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 8, Page number 3-22" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "maximum order of diffraction is 2\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=1.6; #lattice spacing(angstrom)\n", "theta=90*math.pi/180; #glancing angle(radian)\n", "lamda=1.5; #wavelength of X-rays(angstrom)\n", "\n", "#Calculation\n", "n=2*d*math.sin(theta)/lamda; #maximum order of diffraction \n", "\n", "#Result\n", "print \"maximum order of diffraction is\",int(n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 9, Page number 3-23" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glancing angle is 20 degrees 42 minutes 17 seconds\n", "answer in the book is wrong\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=0.26; #lattice spacing(nm)\n", "lamda=0.065; #wavelength of X-rays(nm)\n", "h=1;\n", "k=1;\n", "l=0;\n", "n=2;\n", "\n", "#Calculation\n", "d=a/math.sqrt(h**2+k**2+l**2); \n", "sintheta=n*lamda/(2*d);\n", "theta=math.asin(sintheta)*180/math.pi; #glancing angle(degrees)\n", "thetad=int(theta); #glancing angle(degrees) \n", "thetam=(theta-thetad)*60; #glancing angle(minutes)\n", "thetas=60*(thetam-int(thetam)); #glancing angle(seconds)\n", "\n", "#Result\n", "print \"glancing angle is\",thetad,\"degrees\",int(thetam),\"minutes\",int(thetas),\"seconds\"\n", "print \"answer in the book is wrong\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 10, Page number 3-23" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cube edge of unit cell is 4.055 angstrom\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n=1; #order\n", "theta=19.2*math.pi/180; #glancing angle(radian)\n", "lamda=1.54; #wavelength(angstrom)\n", "h=1;\n", "k=1;\n", "l=1;\n", "\n", "#Calculation\n", "d=n*lamda/(2*math.sin(theta)); #lattice parameter(angstrom)\n", "a=d*math.sqrt(h**2+k**2+l**2); #cube edge of unit cell(angstrom)\n", "\n", "#Result\n", "print \"cube edge of unit cell is\",round(a,3),\"angstrom\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 11, Page number 3-24" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lattice parameter is 3.522 angstrom\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n=1; #order\n", "theta=38.2*math.pi/180; #glancing angle(radian)\n", "lamda=1.54; #wavelength(angstrom)\n", "h=2;\n", "k=2;\n", "l=0;\n", "\n", "#Calculation\n", "d=n*lamda/(2*math.sin(theta)); #lattice parameter(angstrom)\n", "a=d*math.sqrt(h**2+k**2+l**2); #lattice parameter(angstrom)\n", "\n", "#Result\n", "print \"lattice parameter is\",round(a,3),\"angstrom\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 12, Page number 3-24" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "interplanar spacing for (111) is 0.208 nm\n", "interplanar spacing for (321) is 0.096 nm\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=0.36; #cube edge of unit cell(nm)\n", "h1=1;\n", "k1=1;\n", "l1=1;\n", "h2=3;\n", "k2=2;\n", "l2=1;\n", "\n", "#Calculation\n", "d1=a/math.sqrt(h1**2+k1**2+l1**2); #interplanar spacing for (111)(nm)\n", "d2=a/math.sqrt(h2**2+k2**2+l2**2); #interplanar spacing for (321)(nm)\n", "\n", "#Result\n", "print \"interplanar spacing for (111) is\",round(d1,3),\"nm\"\n", "print \"interplanar spacing for (321) is\",round(d2,3),\"nm\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 13, Page number 3-25" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lattice spacing is 3.575 angstrom\n", "glancing angle for 3rd order is 16 degrees 27.1 minutes\n", "answer for minutes given in the book varies due to rounding off errors\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "theta=(5+(25/60))*math.pi/180; #glancing angle(radian)\n", "lamda=0.675; #wavelength of X-rays(angstrom)\n", "n1=1; #order\n", "n3=3; #order \n", "\n", "#Calculation\n", "d=n1*lamda/(2*math.sin(theta)); #lattice spacing(angstrom)\n", "d=round(d,3);\n", "theta3=math.asin(n3*lamda/(2*d))*180/math.pi; #glancing angle for 3rd order(degrees)\n", "theta3d=int(theta3); #glancing angle for 3rd order(degrees) \n", "theta3m=(theta3-theta3d)*60; #glancing angle for 3rd order(minutes)\n", "\n", "#Result\n", "print \"lattice spacing is\",d,\"angstrom\"\n", "print \"glancing angle for 3rd order is\",theta3d,\"degrees\",round(theta3m,1),\"minutes\"\n", "print \"answer for minutes given in the book varies due to rounding off errors\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 14, Page number 3-25" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glancing angle is 23 degrees 56 minutes 31 seconds\n", "answer given in the book is wrong\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=3.04; #interplanar spacing(angstrom) \n", "lamda=0.79; #wavelength of X-rays(angstrom)\n", "n=3;\n", "\n", "#Calculation\n", "sintheta=n*lamda/(2*d);\n", "thetad=math.asin(sintheta)*180/math.pi; #glancing angle(degrees)\n", "thetam=(theta-int(theta))*60; #glancing angle(minutes)\n", "thetas=60*(thetam-int(thetam)); #glancing angle(seconds)\n", "\n", "#Result\n", "print \"glancing angle is\",int(round(thetad)),\"degrees\",int(thetam),\"minutes\",int(thetas),\"seconds\"\n", "print \"answer given in the book is wrong\"" ] } ], "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 }