{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#3: Elementary Crystallography"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.2, Page number 3.50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "spacing between (100) plane is 5.64 angstrom\n",
      "spacing between (110) plane is 3.99 angstrom\n",
      "spacing between (111) plane is 3.26 angstrom\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "a=5.64;      #lattice constant(angstrom)\n",
    "h1=1;\n",
    "k1=0;\n",
    "l1=0;\n",
    "h2=1;\n",
    "k2=1;\n",
    "l2=0;\n",
    "h3=1;\n",
    "k3=1;\n",
    "l3=1;\n",
    "\n",
    "#Calculation\n",
    "d100=a/math.sqrt(h1**2+k1**2+l1**2);     #spacing between (100) plane\n",
    "d110=a/math.sqrt(h2**2+k2**2+l2**2);     #spacing between (110) plane\n",
    "d111=a/math.sqrt(h3**2+k3**2+l3**2);     #spacing between (111) plane\n",
    "\n",
    "#Result\n",
    "print \"spacing between (100) plane is\",d100,\"angstrom\"\n",
    "print \"spacing between (110) plane is\",round(d110,2),\"angstrom\"\n",
    "print \"spacing between (111) plane is\",round(d111,2),\"angstrom\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.3, Page number 3.51"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of atoms in (100) is 1.535 *10**13 atoms/mm**2\n",
      "number of atoms in (110) is 1.085 *10**13 atoms/mm**2\n",
      "number of atoms in (111) is 1.772 *10**13 atoms/mm**2\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",
    "a=3.61*10**-7;        #lattice constant(mm)\n",
    "\n",
    "#Calculation\n",
    "A100=a**2;     #surface area(mm**2)\n",
    "n=1+(4*(1/4));\n",
    "N1=n/A100;      #number of atoms in (100)(per mm**2)\n",
    "A110=math.sqrt(2)*a**2;      #surface area(mm**2)\n",
    "N2=n/A110;      #number of atoms in (110)(per mm**2)\n",
    "A111=math.sqrt(3)*a**2/2;    #surface area(mm**2)\n",
    "N3=n/A111;     #number of atoms in (110)(per mm**2)\n",
    "\n",
    "#Result\n",
    "print \"number of atoms in (100) is\",round(N1/10**13,3),\"*10**13 atoms/mm**2\"\n",
    "print \"number of atoms in (110) is\",round(N2/10**13,3),\"*10**13 atoms/mm**2\"\n",
    "print \"number of atoms in (111) is\",round(N3/10**13,3),\"*10**13 atoms/mm**2\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "##Example number 3.4, Page number 3.52"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelength of x rays is 1.552 angstrom\n",
      "answer varies due to rounding off errors\n",
      "energy of x rays is 8 *10**3 eV\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "n=4;      \n",
    "A=107.87;    #atomic weight\n",
    "rho=10500;     #density(kg/m**3)\n",
    "N=6.02*10**26;    #number of molecules\n",
    "theta=19+(12/60);   #angle(degrees)\n",
    "h=1;\n",
    "k=1;\n",
    "l=1;\n",
    "h0=6.625*10**-34;     #planck constant\n",
    "c=3*10**8;     #velocity of light(m/s)\n",
    "e=1.6*10**-19;   #charge(coulomb)\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;     #angle(radian)\n",
    "a=(n*A/(N*rho))**(1/3);\n",
    "d=a*10**10/math.sqrt(h**2+k**2+l**2);      \n",
    "lamda=2*d*math.sin(theta);     #wavelength of x rays(angstrom)\n",
    "E=h0*c/(lamda*10**-10*e);      #energy of x rays(eV)\n",
    "\n",
    "#Result\n",
    "print \"wavelength of x rays is\",round(lamda,3),\"angstrom\"\n",
    "print \"answer varies due to rounding off errors\"\n",
    "print \"energy of x rays is\",int(E/10**3),\"*10**3 eV\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.5, Page number 3.52"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "density is 2332 kg/m**3\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",
    "n=8;    #number of atoms\n",
    "r=2.351*10**-10;     #bond length(angstrom)\n",
    "A=28.09;                #Atomic wt. of NaCl\n",
    "N=6.02*10**26           #Avagadro number\n",
    "\n",
    "#Calculation\n",
    "a=4*r/math.sqrt(3);     \n",
    "rho=n*A/(N*a**3);     #density(kg/m**3)\n",
    "\n",
    "#Result\n",
    "print \"density is\",int(rho),\"kg/m**3\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "##Example number 3.6, Page number 3.53"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "radius of largest sphere is 0.1547 r\n",
      "maximum radius of sphere is 0.414 r\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "from sympy import *\n",
    "\n",
    "#Variable declaration\n",
    "r=Symbol('r')\n",
    "\n",
    "#Calculation\n",
    "a1=4*r/math.sqrt(3);\n",
    "R1=(a1/2)-r;           #radius of largest sphere\n",
    "a2=4*r/math.sqrt(2);\n",
    "R2=(a2/2)-r;       #maximum radius of sphere\n",
    "\n",
    "#Result\n",
    "print \"radius of largest sphere is\",round(R1/r,4),\"r\"\n",
    "print \"maximum radius of sphere is\",round(R2/r,3),\"r\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.7, Page number 3.54"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "percent volume change is 0.5 %\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "r1=1.258*10**-10;     #radius(m)\n",
    "r2=1.292*10**-10;     #radius(m)\n",
    "\n",
    "#Calculation\n",
    "a_bcc=4*r1/math.sqrt(3);\n",
    "v=a_bcc**3;\n",
    "V1=v/2;\n",
    "a_fcc=2*math.sqrt(2)*r2;\n",
    "V2=a_fcc**3/4;\n",
    "V=(V1-V2)*100/V1;           #percent volume change is\",V,\"%\"\n",
    "\n",
    "#Result\n",
    "print \"percent volume change is\",round(V,1),\"%\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.8, Page number 3.55"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of vacancies at 0K is 0 per mol\n",
      "number of vacancies at 300K is 768.0 per mol\n",
      "number of vacancies at 900K is 6.53 *10**16 per mol\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "delta_Hf=120*10**3;      \n",
    "T1=0;    #temperature(K)\n",
    "T2=300;    #temperature(K)\n",
    "n1=0;\n",
    "N=6.022*10**23;\n",
    "R=8.314;\n",
    "T3=900;    #temperature(K)\n",
    "\n",
    "#Calculation\n",
    "n2=N*math.exp(-delta_Hf/(R*T2));     #number of vacancies at 300K(per mol)\n",
    "n3=N*math.exp(-delta_Hf/(R*T3));     #number of vacancies at 900K(per mol)\n",
    "\n",
    "#Result\n",
    "print \"number of vacancies at 0K is\",n1,\"per mol\"\n",
    "print \"number of vacancies at 300K is\",round(n2),\"per mol\"\n",
    "print \"number of vacancies at 900K is\",round(n3/10**16,2),\"*10**16 per mol\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.9, Page number 3.56"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "interplanar spacing of crystal is  1.824 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",
    "theta1=6.45;      #angle(degrees)\n",
    "theta2=9.15;      #angle(degrees)\n",
    "theta3=13;      #angle(degrees)\n",
    "lamda=0.58;     #wavelength(angstrom)\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",
    "d=lamda/(2*math.sin(theta2));    #interplanar spacing of crystal(angstrom)\n",
    "\n",
    "#Result\n",
    "print \"interplanar spacing of crystal is \",round(d,3),\"angstrom\"\n",
    "print \"answer varies due to rounding off errors\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.10, Page number 3.56"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lattice parameter of lead is 4.1 *10**-10 m\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "n=1;     #order of diffraction\n",
    "lamda=1.54*10**-10;     #wavelength(m)\n",
    "theta=32;      #angle(degrees)\n",
    "h=2;\n",
    "k=2;\n",
    "l=0;\n",
    "\n",
    "#Calculation\n",
    "theta=theta*math.pi/180;     #angle(radian)\n",
    "d=n*lamda/(2*math.sin(theta));\n",
    "a=d*math.sqrt(h**2+k**2+l**2);    #lattice parameter of lead(m)\n",
    "\n",
    "#Result\n",
    "print \"lattice parameter of lead is\",round(a*10**10,1),\"*10**-10 m\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Example number 3.11, Page number 3.57"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "amount of climb down is 0.36915 *10**-8 cm\n"
     ]
    }
   ],
   "source": [
    "#importing modules\n",
    "import math\n",
    "from __future__ import division\n",
    "\n",
    "#Variable declaration\n",
    "delta_Hf=1.6*10**-19;      \n",
    "T=500;    #temperature(K)\n",
    "N=6.026*10**23;\n",
    "k=1.38*10**-23;    #boltzmann constant\n",
    "mv=5.55;    #molar volume(cm**3)\n",
    "ne=10**6;    #number of edge dislocations(per cm**3)\n",
    "v=5*10**7;    #number of vacancies\n",
    "a=2*10**-8;   #lattice parameter(cm)\n",
    "\n",
    "#Calculation\n",
    "n=(N/mv)*math.exp(-delta_Hf/(k*T));     #number of vacancies at 300K(per mol)\n",
    "ac=n*a/(v*ne);      #amount of climb down(cm)\n",
    "\n",
    "#Result\n",
    "print \"amount of climb down is\",round(ac*10**8,5),\"*10**-8 cm\""
   ]
  }
 ],
 "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.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}