{
 "metadata": {
  "name": "",
  "signature": "sha256:11ca0d89ced68d0cbbe63c7f792aae8768450c19ca2bb47ac7ca1a7c91117b32"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Chapter 13 :  Chemical Reaction Equilibria"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.1 page no : 216"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "# Variables\n",
      "#CH4 + H2O --> CO + 3H2\n",
      "n_CH4 = 2;\t\t\t#Moles of CH4\n",
      "n_H2O = 1;\t\t\t#Moles of H20\n",
      "n_CO = 1;\t\t\t#Moles of CO\n",
      "n_H2 = 4;\t\t\t#Moles of H2\n",
      "\n",
      "v_CH4 = -1;\n",
      "v_H2O = -1\n",
      "v_CO = 1;\n",
      "v_H2 = 3;\n",
      "\n",
      "# Calculations and Results\n",
      "v = v_CH4+v_H2O+v_CO+v_H2;\n",
      "n = n_CH4+n_H2O+n_CO+n_H2;\n",
      "\n",
      "#y_CH4 = (n_CH4+(v_CH4e)/n+(v*e))\n",
      "#y_H2O = (n_H2O+(v_H2Oe)/n+(v*e))\n",
      "#y_CO = (n_CO+(v_CO*e)/n+(v*e))\n",
      "#y_H2 = (n_H2+(v_H2*e)/n+(v*e))\n",
      "\n",
      "y_CH4 = '(n_CH4+(v_CH4e)/n+(v*e))';\n",
      "y_H2O = '(n_H2O+(v_H2Oe)/n+(v*e))';\n",
      "y_CO = '(n_CO+(v_CO*e)/n+(v*e))';\n",
      "y_H2 = '(n_H2+(v_H2*e)/n+(v*e))';\n",
      "\n",
      "#Hence\n",
      "\n",
      "y_CH4 = '(2-e/8+2e)';\n",
      "y_H2O = '(1-e/8+2e)';\n",
      "y_CO = '(1+e/8+2e)';\n",
      "y_H2 = '(4+3e/8+2e)';\n",
      "\n",
      "print 'y_CH4  =  ',y_CH4\n",
      "print 'y_H2O  =  ',y_H2O\n",
      "print 'y_CO  =  ',y_CO\n",
      "print 'y_H2  =  ',y_H2\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y_CH4  =   (2-e/8+2e)\n",
        "y_H2O  =   (1-e/8+2e)\n",
        "y_CO  =   (1+e/8+2e)\n",
        "y_H2  =   (4+3e/8+2e)\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.3 page no : 218"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Program to Determine the Expression for yi for two reactions\n",
      "\n",
      "#CH4 + H2O  --> CO + 3H2    (A)\n",
      "\n",
      "#CH4 + 2H2O --> CO2 + 4H2   (B)\n",
      "\n",
      "# Variables\n",
      "Species = ['CH4','H2O','CO','CO2','H2','sum'];\n",
      "v_A = ['-1','-1','1','0','3','2'];\n",
      "v_B = ['-1','-2','0','1','4','2'];\n",
      "m_CH4 = 2;\n",
      "m_H2O = 3;\n",
      "\n",
      "# Calculations\n",
      "mt = m_CH4+m_H2O;\n",
      "y = ['(m_CH4+vie1+vje2)/(mt+vie1+vje2)','(m_H2O+vie1+vje2)/(mt+vie1+vje2)','(vie1)/(mt+vie1+vje2)','(vje2)/(mt+vie1+vje2)','(vie1+vje2)/(mt+vie1+vje2)',' '];\n",
      "\n",
      "#Hence\n",
      "yf = ['(2-e1-e2)/(5+2e1+2e2)','(3-e1-2e2)/(5+2e1+3e2)','e1/(5+2e1+2e2)','e2/(5+2e1+2e2)','(3e1+4e2)/(5+2e1+2e2)',' '];\n",
      "Ans = [Species,v_A,v_B,y,yf];\n",
      "\n",
      "# Results\n",
      "print ' i   v_A  v_B      y(Before substitution)         y_species'\n",
      "print Ans\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " i   v_A  v_B      y(Before substitution)         y_species\n",
        "[['CH4', 'H2O', 'CO', 'CO2', 'H2', 'sum'], ['-1', '-1', '1', '0', '3', '2'], ['-1', '-2', '0', '1', '4', '2'], ['(m_CH4+vie1+vje2)/(mt+vie1+vje2)', '(m_H2O+vie1+vje2)/(mt+vie1+vje2)', '(vie1)/(mt+vie1+vje2)', '(vje2)/(mt+vie1+vje2)', '(vie1+vje2)/(mt+vie1+vje2)', ' '], ['(2-e1-e2)/(5+2e1+2e2)', '(3-e1-2e2)/(5+2e1+3e2)', 'e1/(5+2e1+2e2)', 'e2/(5+2e1+2e2)', '(3e1+4e2)/(5+2e1+2e2)', ' ']]\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.4 page no : 219"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import math \n",
      "\n",
      "\n",
      "def IDCPH(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return (dA+((dB/2)*T0*(t+1))+((dC/3)*T0*T0*((t**2)+t+1))+(dD/(t*T0*T0)))*(T-T0)\n",
      "\n",
      "def IDCPS(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return ((dA)*math.log(t))+(((dB*T0)+(((dC*T0*T0)+(dD/(t*t*T0*T0)))*(t+1)/2))*(t-1))\n",
      "\n",
      "# Variables\n",
      "T0 = 298.16;\t\t\t#[K]\n",
      "T1 = 418.15;\t\t\t#[K]\n",
      "T2 = 593.15;\t\t\t#[K]\n",
      "R = 8.314;\n",
      "\n",
      "#C2H4(g) + H2O(g) -->  C2H5OH(g)\n",
      "#Values From Table C.1 At T = 298.15K\n",
      "\n",
      "A_ethanol = 3.518;\n",
      "A_ethene = 1.424;\n",
      "A_water = 3.470;\n",
      "\n",
      "# Calculations\n",
      "B_ethanol = 20.001*10**-3;\n",
      "B_ethene = 14.394*10**-3;\n",
      "B_water = 1.450*10**-3;\n",
      "\n",
      "C_ethanol = -6.002*10**-6;\n",
      "C_ethene = -4.392*10**-6;\n",
      "C_water = 0;\n",
      "\n",
      "D_ethanol = 0;\n",
      "D_ethene = 0;\n",
      "D_water = 0.121*10**5;\n",
      "\n",
      "dA = A_ethanol-A_ethene-A_water\n",
      "dB = B_ethanol-B_ethene-B_water\n",
      "dC = C_ethanol-C_ethene-C_water\n",
      "dD = D_ethanol-D_ethene-D_water\n",
      "\n",
      "# Values from Table C.4 at T = 298.15K\n",
      "H_ethanol = -235100;\t\t\t#[J/mol]\n",
      "H_ethene = 52510;\t\t\t#[J/mol]\n",
      "H_water = -241572;\t\t\t#[J/mol]\n",
      "\n",
      "G_ethanol = -168490;\t\t\t#[J/mol]\n",
      "G_ethene = 68460;\t\t\t#[J/mol]\n",
      "G_water = -228572;\t\t\t#[J/mol]\n",
      "\n",
      "dHo = H_ethanol-H_ethene-H_water\n",
      "dGo = G_ethanol-G_ethene-G_water\n",
      "\n",
      "I1 = round(IDCPH(T0,T1,dA,dB,dC,dD),3)\n",
      "I2 = round(IDCPS(T0,T1,dA,dB,dC,dD),5)\n",
      "\n",
      "#Using Eqn 13.18\n",
      "#dG_418/RT = ((dGo - dHo)/RTo)+(dHo/RT)+((1/T)*I1)-I2  c1 = dG_418/RT\n",
      "\n",
      "c1 = round(((dGo-dHo)/(R*T0))+(dHo/(R*T1))+((1/T1)*I1)-I2,4)\n",
      "I3 = round(IDCPH(T0,T2,dA,dB,dC,dD),3)\n",
      "I4 = round(IDCPS(T0,T2,dA,dB,dC,dD),5)\n",
      "\n",
      "#Using Eqn 13.18\n",
      "#dG_593/RT = ((dGo - dHo)/RTo)+(dHo/RT)+((1/T)*I1)-I2  c2 = dG_593/RT\n",
      "\n",
      "c2 = round(((dGo-dHo)/(R*T0))+(dHo/(R*T2))+((1/T2)*I3)-I4,4)\n",
      "\n",
      "K_413 = round(math.exp(-c1),4);\n",
      "K_593 = math.exp(-c2);\n",
      "\n",
      "# Results\n",
      "print 'Equilibrium Consmath.tant at T  =  413.15K is ',K_413*10,'X 10**-1'\n",
      "print 'Equilibrium Constant at T  =  593.15K is ',round(K_593*1000,3),'X 10**-3'\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Equilibrium Consmath.tant at T  =  413.15K is  1.404 X 10**-1\n",
        "Equilibrium Constant at T  =  593.15K is  2.802 X 10**-3\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.4 page no : 220"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from numpy import array,round,ones,exp,log\n",
      "import math \n",
      "\n",
      "#Example 13.4  Alternate\n",
      "# Alternate Program to 13.4\n",
      "\n",
      "# Variables\n",
      "T = array([298.15,418.15,593.15]);\n",
      "t = round(T/T[0],4);\n",
      "R = 8.314;\n",
      "\n",
      "\n",
      "#C2H4(g) + H2O(g) -->  C2H5OH(g)\n",
      "#Values From Table C.1 At T = 298.15K\n",
      "\n",
      "A_ethanol = 3.518;\n",
      "A_ethene = 1.424;\n",
      "A_water = 3.470;\n",
      "\n",
      "# Calculations\n",
      "B_ethanol = 20.001*10**-3;\n",
      "B_ethene = 14.394*10**-3;\n",
      "B_water = 1.450*10**-3;\n",
      "\n",
      "C_ethanol = -6.002*10**-6;\n",
      "C_ethene = -4.392*10**-6;\n",
      "C_water = 0;\n",
      "\n",
      "D_ethanol = 0;\n",
      "D_ethene = 0;\n",
      "D_water = 0.121*10**5;\n",
      "\n",
      "dA = A_ethanol-A_ethene-A_water\n",
      "dB = B_ethanol-B_ethene-B_water\n",
      "dC = C_ethanol-C_ethene-C_water\n",
      "dD = D_ethanol-D_ethene-D_water\n",
      "\n",
      "# Values from Table C.4 at T = 298.15K\n",
      "H_ethanol = -235100;\t\t\t#[J/mol]\n",
      "H_ethene = 52510;\t\t\t#[J/mol]\n",
      "H_water = -241572;\t\t\t#[J/mol]\n",
      "\n",
      "G_ethanol = -168490;\t\t\t#[J/mol]\n",
      "G_ethene = 68460;\t\t\t#[J/mol]\n",
      "G_water = -228572;\t\t\t#[J/mol]\n",
      "\n",
      "dHo = H_ethanol-H_ethene-H_water\n",
      "dGo = G_ethanol-G_ethene-G_water\n",
      "\n",
      "#Umath.sing Eqn(13.21)\n",
      "Ko = round(exp(-dGo/(R*T[0])),3)\n",
      "K0 = Ko*ones((1,3));\n",
      "#Umath.sing Eqn(13.22)\n",
      "K1 = exp((dHo/(R*T0))*(1-(T[0]/T)));\n",
      "#Umath.sing Eqn(13.24)\n",
      "K2 = round(exp((dA*(log(t)-((t-1)/t)))+(0.5*dB*T[0]*((t-1)**2)/t)+((1/6.)*dC*T[0]*T[0]*((t-1)**2)*(t+2)/t)+(0.5*dD*((t-1)**2)/((T[0]**2)*(t)**2))),4);\n",
      "\n",
      "K = K0*K1*K2;\n",
      "\n",
      "Ans = [T,t,K0,K1,K2,K];\n",
      "\n",
      "# Results\n",
      "print '    T/K       t          K0          K1         K2         K',Ans\n",
      "\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "    T/K       t          K0          K1         K2         K [array([ 298.15,  418.15,  593.15]), array([ 1.    ,  1.4025,  1.9894]), array([[ 29.366,  29.366,  29.366]]), array([  1.00000000e+00,   4.84531951e-03,   9.74032575e-05]), array([ 1.    ,  0.9862,  0.9794]), array([[  2.93660000e+01,   1.40324083e-01,   2.80142097e-03]])]\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.5 page no : 222"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import math \n",
      "from numpy import array,round,ones,exp,log,poly1d,roots\n",
      "\n",
      "# Variables\n",
      "#CO(g) + H2O(g) --> CO2(g) + H2(g)\n",
      "v_CO = -1;\n",
      "v_H2O = -1;\n",
      "v_CO2 = 1;\n",
      "v_H2 = 1;\n",
      "v = v_CO+v_H2O+v_CO2+v_H2;\n",
      "\n",
      "#Calculate e(Fraction of Stream) in each case\n",
      "#(a) \n",
      "n_H2O_a = 1;\t\t\t#mol\n",
      "n_CO_a = 1;\t\t\t#mol\n",
      "T_a = 1100;\t\t\t#[K]\n",
      "P_a = 1;\t\t\t#[bar]\n",
      "\n",
      "x = 10**4/T_a;\n",
      "#at this x the value of ln K = 0 form Graph\n",
      "y = 0;\n",
      "nt = n_H2O_a+n_CO_a;\n",
      "K = exp(y);\n",
      "\n",
      "#y_H2O = (n_H2O+(v_H2O*e))/nt\n",
      "#y_CO = (n_CO+(v_CO*e))/nt\n",
      "#y_H2 = (v_H2*e)/nt\n",
      "#y_CO2 = (v_CO2*e)/nt\n",
      "\n",
      "\n",
      "y_H2O = '(1-e)/2'\n",
      "y_CO = '(1-e)/2'\n",
      "y_H2 = 'e/2'\n",
      "y_CO2 = 'e/2'\n",
      "\n",
      "\n",
      "#K = (y_H2*y_CO2)/(y_CO*y_H2O)\n",
      "\n",
      "K = 'e**2/((1-e)**2) = 1';\n",
      "\n",
      "\n",
      "#Solving \n",
      "e_a = 0.5;\n",
      "\n",
      "#(b) same as in (a) P_b = 10bar\n",
      "\n",
      "#Pressure has no effect on fraction of stream\n",
      "e_b = e_a;\n",
      "\n",
      "#(c) same as in (a) N2 = 2mols included\n",
      "\n",
      "#Since N2 just act as diluent\n",
      "#It only changes the total moles fraction remains the same\n",
      "e_c = e_a;\n",
      "\n",
      "#(d)\n",
      "n_H2O_d = 2;\t\t\t#mol\n",
      "n_CO_d = 1;\t\t\t#mol\n",
      "T_d = 1100;\t\t\t#[K]\n",
      "P_d = 1;\t\t\t#[bar]\n",
      "\n",
      "x = 10**4/T_d;\n",
      "#at this x the value of ln K = 0 form Graph\n",
      "y = 0;\n",
      "nt = n_H2O_d+n_CO_d;\n",
      "K = math.exp(y);\n",
      "\n",
      "#y_H2O = (n_H2O+(v_H2O*e))/nt\n",
      "#y_CO = (n_CO+(v_CO*e))/nt\n",
      "#y_H2 = (v_H2*e)/nt\n",
      "#y_CO2 = (v_CO2*e)/nt\n",
      "\n",
      "y_H2O = '(1-e)/3'\n",
      "y_CO = '(2-e)/3'\n",
      "y_H2 = 'e/3'\n",
      "y_CO2 = 'e/3'\n",
      "\n",
      "#K = (y_H2*y_CO2)/(y_CO*y_H2O)\n",
      "\n",
      "K = 'e**2/((1-e)(2-e)) = 1';\n",
      "\n",
      "#Solving \n",
      "e = round(2./3,3);\n",
      "e_d = round(e/2.,3);\n",
      "\n",
      "#(e) \n",
      "#Here the y_CO and y_H2O are interchanged\n",
      "\n",
      "#No change in Fraction of stream\n",
      "e_e = e_d;\n",
      "\n",
      "#(f)  \n",
      "n_H2O_f = 1;\t\t\t#mol\n",
      "n_CO_f = 1;\t\t\t#mol\n",
      "n_CO2_f = 1;\t\t\t#[mol]\n",
      "T_f = 1100;\t\t\t#[K]\n",
      "P_f = 1;\t\t\t#[bar]\n",
      "\n",
      "x = 10**4/T_f;\n",
      "#at this x the value of ln K = 0 form Graph\n",
      "y = 0;\n",
      "nt = n_H2O_f+n_CO_f+n_CO2_f;\n",
      "K = math.exp(y);\n",
      "\n",
      "#y_H2O = (n_H2O+(v_H2O*e))/nt\n",
      "#y_CO = (n_CO+(v_CO*e))/nt\n",
      "#y_CO2 = (n_CO2+(v_CO2*e))/nt\n",
      "#y_H2 = (v_H2*e)/nt\n",
      "\n",
      "\n",
      "y_H2O = '(1-e)/3'\n",
      "y_CO = '(1-e)/3'\n",
      "y_H2 = '(1+e)/3'\n",
      "y_CO2 = 'e/2'\n",
      "\n",
      "\n",
      "#K = (y_H2*y_CO2)/(y_CO*y_H2O)\n",
      "\n",
      "K = '(e*(e+1))/((1-e)**2) = 1';\n",
      "\n",
      "#Solving \n",
      "e_f = round(1./3,3);\n",
      "\n",
      "#(g)\n",
      "n_H2O_g = 1;\t\t\t#mol\n",
      "n_CO_g = 1;\t\t\t#mol\n",
      "T_g = 1650;\t\t\t#[K]\n",
      "P_g = 1;\t\t\t#[bar]\n",
      "\n",
      "x = 10**4/T_g;\n",
      "#at this x the value of ln K = 0 form Graph\n",
      "y = -1.15;\n",
      "nt = n_H2O_g+n_CO_g;\n",
      "K = math.exp(y);\n",
      "\n",
      "#y_H2O = (n_H2O+(v_H2O*e))/nt\n",
      "#y_CO = (n_CO+(v_CO*e))/nt\n",
      "#y_H2 = (v_H2*e)/nt\n",
      "#y_CO2 = (v_CO2*e)/nt\n",
      "\n",
      "\n",
      "y_H2O = '(1-e)/2'\n",
      "y_CO = '(1-e)/2'\n",
      "y_H2 = 'e/2'\n",
      "y_CO2 = 'e/2'\n",
      "\n",
      "\n",
      "#K = (y_H2*y_CO2)/(y_CO*y_H2O)\n",
      "\n",
      "Exp = 'e**2/((1-e)**2) = 0.316';\n",
      "\n",
      "#Solving \n",
      "p = poly1d([K, -2*K, K-1],'e','c');\n",
      "\n",
      "root = roots(p);\n",
      "e_g = round(root[0],2);\n",
      "\n",
      "#Other Root is negative and the Fraction of steam cannot be negative\n",
      "\n",
      "\n",
      "# Results\n",
      "print ('(a)1mol H20 and 1 mol CO T = 1100K  P = 1bar')\n",
      "print ('(b)1mol H20 and 1 mol CO T = 1100K  P = 10bar')\n",
      "print ('(c)1mol H20 and 1 mol CO 2mol N2 T = 1100K  P = 1bar')\n",
      "print ('(d)2mol H20 and 1 mol CO T = 1100K  P = 1bar')\n",
      "print ('(e)1mol H20 and 2 mol CO T = 1100K  P = 1bar')\n",
      "print ('(f)1mol H20 and 1 mol CO 1mol CO2 T = 1100K  P = 1bar')\n",
      "print ('(g)1mol H20 and 1 mol CO T = 1650K  P = 1bar')\n",
      "e = [e_a, e_b, e_c, e_d, e_e, e_f, e_g];\n",
      "print 'Fraction Of Steam Reacted in each case',e\n",
      "\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(a)1mol H20 and 1 mol CO T = 1100K  P = 1bar\n",
        "(b)1mol H20 and 1 mol CO T = 1100K  P = 10bar\n",
        "(c)1mol H20 and 1 mol CO 2mol N2 T = 1100K  P = 1bar\n",
        "(d)2mol H20 and 1 mol CO T = 1100K  P = 1bar\n",
        "(e)1mol H20 and 2 mol CO T = 1100K  P = 1bar\n",
        "(f)1mol H20 and 1 mol CO 1mol CO2 T = 1100K  P = 1bar\n",
        "(g)1mol H20 and 1 mol CO T = 1650K  P = 1bar\n",
        "Fraction Of Steam Reacted in each case [0.5, 0.5, 0.5, 0.33400000000000002, 0.33400000000000002, 0.33300000000000002, -0.68000000000000005]\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.6 page no : 224"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "import math \n",
      "from numpy import array,round,ones,exp,log\n",
      "\n",
      "def IDCPH(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return (dA+((dB/2)*T0*(t+1))+((dC/3)*T0*T0*((t**2)+t+1))+(dD/(t*T0*T0)))*(T-T0)\n",
      "\n",
      "def IDCPS(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return  ((dA)*math.log(t))+(((dB*T0)+(((dC*T0*T0)+(dD/(t*t*T0*T0)))*(t+1)/2))*(t-1))\n",
      "\n",
      "def PHIB(Tr,Pr,omega):\n",
      "    B0 = 0.083-(0.422/(Tr**1.6));\n",
      "    B1 = 0.139-(0.172/(Tr**4.2));\n",
      "    return exp((Pr/Tr)*(B0+(omega*B1)));\n",
      "\n",
      "\n",
      "# Variables\n",
      "T0 = 298.16;\t\t\t#[K]\n",
      "T1 = 523.15;\t\t\t#[K]\n",
      "P = 35.;    \t\t\t#[bar]\n",
      "R = 8.314;\n",
      "\n",
      "#C2H4(g) + H2O(g) -->  C2H5OH(g)\n",
      "#Values From Table C.1 At T = 298.15K\n",
      "\n",
      "A_ethanol = 3.518;\n",
      "A_ethene = 1.424;\n",
      "A_water = 3.470;\n",
      "\n",
      "B_ethanol = 20.001*10**-3;\n",
      "B_ethene = 14.394*10**-3;\n",
      "B_water = 1.450*10**-3;\n",
      "\n",
      "C_ethanol = -6.002*10**-6;\n",
      "C_ethene = -4.392*10**-6;\n",
      "C_water = 0;\n",
      "\n",
      "D_ethanol = 0;\n",
      "D_ethene = 0;\n",
      "D_water = 0.121*10**5;\n",
      "\n",
      "# Calculations and Results\n",
      "dA = A_ethanol-A_ethene-A_water\n",
      "dB = B_ethanol-B_ethene-B_water\n",
      "dC = C_ethanol-C_ethene-C_water\n",
      "dD = D_ethanol-D_ethene-D_water\n",
      "\n",
      "# Values from Table C.4 at T = 298.15K\n",
      "H_ethanol = -235100;\t\t\t#[J/mol]\n",
      "H_ethene = 52510;\t\t\t#[J/mol]\n",
      "H_water = -241572;\t\t\t#[J/mol]\n",
      "\n",
      "G_ethanol = -168490;\t\t\t#[J/mol]\n",
      "G_ethene = 68460;\t\t\t#[J/mol]\n",
      "G_water = -228572;\t\t\t#[J/mol]\n",
      "\n",
      "dHo = H_ethanol-H_ethene-H_water\n",
      "dGo = G_ethanol-G_ethene-G_water\n",
      "\n",
      "I1 = round(IDCPH(T0,T1,dA,dB,dC,dD),3)\n",
      "I2 = round(IDCPS(T0,T1,dA,dB,dC,dD),5)\n",
      "\n",
      "#Umath.sing Eqn 13.18\n",
      "#dG_418/RT = ((dGo - dHo)/RTo)+(dHo/RT)+((1/T)*I1)-I2  c1 = dG_418/RT\n",
      "\n",
      "c1 = round(((dGo-dHo)/(R*T0))+(dHo/(R*T1))+((1/T1)*I1)-I2,4)\n",
      "K_523 = round(exp(-c1),4);\n",
      "print 'Equilibrium Consmath.tant at T  =  523.15K is ',round(K_523*1000,3),'X 10**-3'\n",
      "\n",
      "#Values Frm App B\n",
      "Tc = array([282.3,647.1,513.9]);\n",
      "Pc = array([50.4,220.55,61.48]);\n",
      "omega = array([0.087,0.345,0.645]);\n",
      "\n",
      "Tr = round(T1/Tc,3);\n",
      "Pr = round(P/Pc,3);\n",
      "si = round(PHIB(Tr,Pr,omega),3);\n",
      "\n",
      "#Umath.sing eqn\n",
      "#(y_ETOH*si_ETOH)/(y_C2H4*si_C2H4*y_H20*si_H2O) = (P/Po)K\n",
      "#y_ETOH/(y_C2H4*y_H20) = c = ((si_C2H4*si_H2O)/si_ETOH)(P/Po)K\n",
      "c = round(((si[0]*si[1])/si[2])*(P*K_523),3)\n",
      "\n",
      "#y_C2H4  =  (1-e)/(6-e) \n",
      "#y_ETOH  =  (5-e)/(6-e)\n",
      "#y_H2O  =  (e)/(6-e)\n",
      "\n",
      "#Solving we get a Eqn   \n",
      "#poly([1.342 -6 1],'e','c')\n",
      "root = round(roots(poly1d([1.342, -6, 1],'e','c')),3)\n",
      "\n",
      "r = root[0]*100;\n",
      "#Since e > 1 not possible so e = 0.233\n",
      "\n",
      "print 'The Maximum Conversion of ethylene to ethanol by Vapor-Phase Hydration is ',r,'%'\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Equilibrium Consmath.tant at T  =  523.15K is  9.8 X 10**-3\n",
        "The Maximum Conversion of ethylene to ethanol by Vapor-Phase Hydration is  -600.0 %\n"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.7  page no : 226"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from numpy import roots, poly1d\n",
      "import math \n",
      "\n",
      "# Variables\n",
      "T = 1393.15;\t\t\t#K\n",
      "P = 1.;\t\t\t#[bar]\n",
      "x = 10.**4/T;\n",
      "#C2H2 --> 2C + H2  (I)\n",
      "#2C + 2H2 --> C2H4 (II)\n",
      "\n",
      "# Calculations\n",
      "#Values Of ln K (at  1000/T )for Reactions I and II from Graph\n",
      "K_I = math.exp(12.9);\n",
      "K_II = math.exp(-12.9);\n",
      "K = K_I*K_II;\n",
      "\n",
      "#Application in Eqn (13.5)\n",
      "\n",
      "#y_C2H4/(y_C2H2*y_H2) = c = (P/Po)K\n",
      "c = P*K;\n",
      "#y_H2 = y_C2H2 = (1-e)/(2-e)\n",
      "#y_C2H4 = e/(2-e)\n",
      "\n",
      "\n",
      "#The Eqn comes out to be\n",
      "#poly([1 -4 2],'e','c')\n",
      "\n",
      "root = round(roots(poly1d([1, -4, 2],'e','c')),3)\n",
      "e = root[0];\n",
      "#Since e > 1 not possible so e = 0.293\n",
      "y_C2H2 = round((1-e)/(2-e),3);\n",
      "y_H2 = y_C2H2;\n",
      "y_C2H4 = round(e/(2-e),3);\n",
      "\n",
      "print 'Equilibrium Composition of H2 C2H2 and C2H4 Respectively ',y_C2H4,y_C2H2,y_H2\n",
      "\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Equilibrium Composition of H2 C2H2 and C2H4 Respectively  -0.667 0.833 0.833\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.8 page no : 227"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from numpy import roots,poly1d\n",
      "import math \n",
      "\n",
      "# Variables\n",
      "T0 = 298.15;\n",
      "T = 373.15;\t\t\t#[K]\n",
      "R = 8.314;\n",
      "#CH3COOH(l)+C2H5OH(l) --> CH3COOC2H5(l) + H2O(l)\n",
      "\n",
      "#From Table C.4\n",
      "dHo_EtAc = -480000.;\t\t\t#[J]\n",
      "dHo_H2O = -285830.;\t\t\t#[J]\n",
      "dHo_EtOH = -277690.;\t\t\t#[J]\n",
      "dHo_AcH = -484500.;\t\t\t#[J]\n",
      "\n",
      "dGo_EtAc = -332200.;\t\t\t#[J]\n",
      "dGo_H2O = -237130.;\t\t\t#[J]\n",
      "dGo_EtOH = -174780.;\t\t\t#[J]\n",
      "dGo_AcH = -389900.;\t\t\t#[J]\n",
      "\n",
      "# Calculations\n",
      "dHo_298 = dHo_EtAc+dHo_H2O-dHo_EtOH-dHo_AcH;\n",
      "dGo_298 = dGo_EtAc+dGo_H2O-dGo_EtOH-dGo_AcH;\n",
      "\n",
      "K_298 = round(math.exp(-dGo_298/(R*T0)),4);\n",
      "\n",
      "#Umath.sing Eqn(13.15)\n",
      "#ln(K_373/K_298) = c = -(dHo_298/R)*((1/373.15)-(1/298.15))\n",
      "c = round(-(dHo_298/R)*((1/373.15)-(1/298.15)),4);\n",
      "K_373 = round(K_298*math.exp(c),4);\n",
      "\n",
      "#x_AcH = x_EtOH = (1-e)/2  and x_EtAc = x_H2O = e/2\n",
      "#K = (x_EtAc*x_H2O)/(x_AcH*x_EtOH)\n",
      "\n",
      "#Hence The Eqn is\n",
      "q = poly1d([K_373, -2*K_373, K_373-1],'e','c')\n",
      "root = round(roots(q),4)\n",
      "e = root[0];\n",
      "#Since Other Root is > 1 hence e = 0.6879\n",
      "x_EtAc = round(e/2,3);\n",
      "\n",
      "# Results\n",
      "print 'Composition of Ethyl Acetate in the Reacting Mixture',x_EtAc\n",
      "\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Composition of Ethyl Acetate in the Reacting Mixture -4.859\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.9 page no : 228"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import math \n",
      "from numpy import isreal\n",
      "\n",
      "def MCPH(T0,T,A,B,C,D):\n",
      "    t = T/T0;\n",
      "    return (A+((B/2)*T0*(t+1))+((C/3)*T0*T0*((t**2)+t+1))+(D/(t*T0*T0)))\n",
      "\n",
      "def IDCPH(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return (dA+((dB/2)*T0*(t+1))+((dC/3)*T0*T0*((t**2)+t+1))+(dD/(t*T0*T0)))*(T-T0)\n",
      "\n",
      "def IDCPS(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return ((dA)*math.log(t))+(((dB*T0)+(((dC*T0*T0)+(dD/(t*t*T0*T0)))*(t+1)/2))*(t-1))\n",
      "\n",
      "# Variables\n",
      "P = 1.;\t\t\t#[bar]\n",
      "T0 = 298.15;\t\t\t#[K]\n",
      "R = 8.314;\n",
      "\n",
      "#SO2 + 0.5O2 --> SO3\n",
      "dHo_298 = -98890.;\t\t\t#[J/mol]\n",
      "dGo_298 = -70866.;\t\t\t#[J/mol]\n",
      "\n",
      "# Calculations\n",
      "n_O2_i = 0.5*1.2;\t\t\t#  Moles O2 Entering\n",
      "n_N2_i = n_O2_i*(79./21);\t\t\t#Moles N2 Entering\n",
      "\n",
      "#n_SO2 = 1-e\n",
      "#n_O2 = 0.6-(0.5*e)\n",
      "#n_SO3 = e\n",
      "#n_N2 = 2.257\n",
      "\n",
      "#By Energy Balance\n",
      "#(dHo_298*e)+dHo_P  =  dH  =  0                                   (A)\n",
      "\n",
      "#dHo_P = Cp*(T-298.15)  Cp = E nCp                                (B)\n",
      "\n",
      "#Cp_SO2 = R*MCPH(T0,T,5.699,0.801E-3,0,-1.015E+5) \n",
      "#Cp_O2 = R*MCPH(T0,T,3.639,0.506E-3,0,-0.227E+5)\n",
      "#Cp_SO3 = R*MCPH(T0,T,8.06,1.056E-3,0,-2.028E+5)\n",
      "#Cp_N2 = R*MCPH(T0,T,3.28,0.593E-3,0,0.04E+5)\n",
      "\n",
      "#T = (-(dHo_298*e)/Cp)+T0                                       (C)\n",
      "\n",
      "#K = (e/(1-e))*((3.857-(0.5*e))/(0.6-(0.5*e)))**0.5              (D)\n",
      "\n",
      "#ln K  =  ((dHo_298-dGo_298)/(R*T0))-(dHo_298/(R*T))+I1-(I2/T)  (E)\n",
      "\n",
      "#I1 = IDCPS(T0,T,0.5415,0.002E-3,0,-0.8995E+5)\n",
      "#I2 = IDCPH(T0,T,0.5415,0.002E-3,0,-0.8995E+5)\n",
      "\n",
      "#Iteration\n",
      "A1 = 300.;\t\t\t#Initial\n",
      "i = -1.;\n",
      "\n",
      "while(i == -1):\n",
      "    I1 = IDCPS(T0,A1,0.5415,0.002E-3,0,-0.8995E+5);\n",
      "    I2 = IDCPH(T0,A1,0.5415,0.002E-3,0,-0.8995E+5);\n",
      "    #Applying in Eqn (E)\n",
      "    K  =  math.exp(((dHo_298-dGo_298)/(R*T0))-(dHo_298/(R*A1))+I1-(I2/A1));\n",
      "    #Applying in Eqn (D)\n",
      "    if(isreal(K)):\n",
      "        x = 0;\n",
      "        # p = poly([-0.6*(K**2) 1.7*(K**2) 3.857-(1.6*(K**2)) 0.5*((K**2)-1)],'e','c')\n",
      "        # (0.5*((K**2)-1)*(x**3))+((3.857-(1.6*(K**2)))*(x**2))+(1.7*(K**2)*x)+(-0.6*(K**2))\n",
      "        F_x = (0.5*((K**2)-1)*(x**3))+((3.857-(1.6*(K**2)))*(x**2))+(1.7*(K**2)*x)+(-0.6*(K**2));\n",
      "        F_a = F_x;\n",
      "\n",
      "        x = 1;\n",
      "        F_x = (0.5*((K**2)-1)*(x**3))+((3.857-(1.6*(K**2)))*(x**2))+(1.7*(K**2)*x)+(-0.6*(K**2));\n",
      "        #F_x = (x**3)-(4*x)+1;\n",
      "        F_b = F_x;\n",
      "        root = -100;\n",
      "        A = 0;\n",
      "        B = 1;\n",
      "        i = 1;\n",
      "        while(i == 1):\n",
      "            a = A;\n",
      "            F_a = (0.5*((K**2)-1)*(a**3))+((3.857-(1.6*(K**2)))*(a**2))+(1.7*(K**2)*a)+(-0.6*(K**2));\n",
      "            #F_a = (a**3)-(4*a)+1;\n",
      "            b = B;\n",
      "            F_b = (0.5*((K**2)-1)*(b**3))+((3.857-(1.6*(K**2)))*(b**2))+(1.7*(K**2)*b)+(-0.6*(K**2));\n",
      "            #F_b = (b**3)-(4*b)+1;\n",
      "            x1 = ((a*F_b)-(b*F_a))/(F_b-F_a);\n",
      "            F_x1 = (0.5*((K**2)-1)*(x1**3))+((3.857-(1.6*(K**2)))*(x1**2))+(1.7*(K**2)*x1)+(-0.6*(K**2));\n",
      "            #F_x1 = (x1**3)-(4*x1)+1;\n",
      "\n",
      "            if((F_a*F_x1)<0):\n",
      "                flag = 1;\n",
      "                A = a;\n",
      "                B = x1;\n",
      "            elif ((F_x1*F_b)<0):\n",
      "                flag = 2;\n",
      "                A = x1;\n",
      "                B = b;  \n",
      "            x1_a = round(x1,4);\n",
      "            b_a = round(b,4);\n",
      "            a_a = round(a,4);\n",
      "            if(x1_a == b_a):\n",
      "                root = round(x1,5);\n",
      "                i = 0;\n",
      "                break;\n",
      "            elif(x1_a == a_a):\n",
      "                root = round(x1,5);\n",
      "                i = 0;\n",
      "                break;  \n",
      "        e = root;\n",
      "        Cp_SO2 = R*MCPH(T0,A1,5.699,0.801E-3,0,-1.015E+5); \n",
      "        Cp_O2 = R*MCPH(T0,A1,3.639,0.506E-3,0,-0.227E+5);\n",
      "        Cp_SO3 = R*MCPH(T0,A1,8.06,1.056E-3,0,-2.028E+5);\n",
      "        Cp_N2 = R*MCPH(T0,A1,3.28,0.593E-3,0,0.04E+5);\n",
      "\n",
      "        n_SO2 = 1-e;\n",
      "        n_O2 = 0.6-(0.5*e);\n",
      "        n_SO3 = e;\n",
      "        n_N2 = 2.257;\n",
      "        if(n_SO2<0 or n_O2<0 or n_SO3<0):\n",
      "            e = 0;\n",
      "\n",
      "        Cp = (n_SO2*Cp_SO2)+(n_O2*Cp_O2)+(n_SO3*Cp_SO3)+(n_N2*Cp_N2);\n",
      "        #Applying in Eqn (C)\n",
      "        B = (-(dHo_298*e)/Cp)+T0;\n",
      "        m = (A1+B)/2;\n",
      "        dT = round(abs(m-A1),2);\n",
      "        if(dT<0.1):\n",
      "            i = 0;\n",
      "            T = round(A1,1);\n",
      "            e = round(e,2);\n",
      "            break;\n",
      "        A1 = m;\n",
      "        i = -1;\n",
      "    else:\n",
      "        i = -1;\n",
      "        A1 = A1+1; \n",
      "\n",
      "print 'Fraction',e\n",
      "\n",
      "n_SO2 = 1-e\n",
      "n_O2 = 0.6-(0.5*e)\n",
      "n_SO3 = e\n",
      "n_N2 = 2.257\n",
      "\n",
      "nt = n_SO2+n_O2+n_SO3+n_N2;\n",
      "\n",
      "y_SO2 = round(n_SO2/nt,4);\n",
      "y_O2 = round(n_O2/nt,4);\n",
      "y_SO3 = round(n_SO3/nt,4);\n",
      "y_N2 = round(n_N2/nt,4);\n",
      "\n",
      "# Results\n",
      "print 'Final Temperature',T\n",
      "print 'Composition of SO2',y_SO2\n",
      "print 'Composition of O2',y_O2\n",
      "print 'Composition of SO3',y_SO3\n",
      "print 'Composition of N2',y_N2\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Fraction 0.77\n",
        "Final Temperature 855.8\n",
        "Composition of SO2 0.0662\n",
        "Composition of O2 0.0619\n",
        "Composition of SO3 0.2218\n",
        "Composition of N2 0.6501\n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.12 page no : 229"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import math \n",
      "\n",
      "def IDCPH(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return (dA+((dB/2)*T0*(t+1))+((dC/3)*T0*T0*((t**2)+t+1))+(dD/(t*T0*T0)))*(T-T0)\n",
      "\n",
      "def IDCPS(T0,T,dA,dB,dC,dD):\n",
      "    t = T/T0;\n",
      "    return ((dA)*math.log(t))+(((dB*T0)+(((dC*T0*T0)+(dD/(t*t*T0*T0)))*(t+1)/2))*(t-1))\n",
      "\n",
      "# Variables\n",
      "T0 = 298.16;\t\t\t#[K]\n",
      "T1 = 750;\t\t\t#[K]\n",
      "R = 8.314;\n",
      "P = 1.2;\t\t\t#[bar]\n",
      "\n",
      "#C4H10 --> C2H4 + C2H6  (I)\n",
      "#C4H10 --> C3H6 + CH4   (II)\n",
      "\n",
      "#Values From Table C.1 At T = 298.15K\n",
      "\n",
      "A_butane = 1.935;\n",
      "A_ethene = 1.424;\n",
      "A_ethane = 1.131;\n",
      "A_propene = 1.637;\n",
      "A_methane = 1.702;\n",
      "\n",
      "B_butane = 36.915*10**-3;\n",
      "B_ethene = 14.394*10**-3;\n",
      "B_ethane = 19.225*10**-3;\n",
      "B_propene = 22.706*10**-3;\n",
      "B_methane = 9.081*10**-3;\n",
      "\n",
      "C_butane = -11.402*10**-6;\n",
      "C_ethene = -4.392*10**-6;\n",
      "C_ethane = -5.561*10**-6;\n",
      "C_propene = -6.915*10**-6;\n",
      "C_methane = -2.164*10**-6;\n",
      "\n",
      "D_butane = 0;\n",
      "D_ethene = 0;\n",
      "D_ethane = 0;\n",
      "D_propene = 0;\n",
      "D_methane = 0;\n",
      "\n",
      "dA_I = A_ethene+A_ethane-A_butane;\n",
      "dA_II = A_methane+A_propene-A_butane;\n",
      "\n",
      "dB_I = B_ethene+B_ethane-B_butane;\n",
      "dB_II = B_methane+B_propene-B_butane;\n",
      "\n",
      "dC_I = C_ethene+C_ethane-C_butane;\n",
      "dC_II = C_methane+C_propene-C_butane;\n",
      "\n",
      "dD_I = D_ethene+D_ethane-D_butane;\n",
      "dD_II = D_methane+D_propene-D_butane;\n",
      "\n",
      "# Values from Table C.4 at T = 298.15K\n",
      "H_butane = -125790.;\t\t\t#[J/mol]\n",
      "H_ethene = 52510.;\t\t\t#[J/mol]\n",
      "H_ethane = -83820.;\t\t\t#[J/mol]\n",
      "H_propene = 19710.;\t\t\t#[J/mol]\n",
      "H_methane = -74520.;\t\t\t#[J/mol]\n",
      "\n",
      "G_butane = -16570;\t\t\t#[J/mol]\n",
      "G_ethene = 68460.;\t\t\t#[J/mol]\n",
      "G_ethane = -31855.;\t\t\t#[J/mol]\n",
      "G_propene = 62205.;\t\t\t#[J/mol]\n",
      "G_methane = -50460.;\t\t\t#[J/mol]\n",
      "\n",
      "# Calculations\n",
      "dHo_I = H_ethene+H_ethane-H_butane\n",
      "dHo_II = H_methane+H_propene-H_butane\n",
      "\n",
      "dGo_I = G_ethene+G_ethane-G_butane\n",
      "dGo_II = G_methane+G_propene-G_butane\n",
      "\n",
      "I1_I = round(IDCPH(T0,T1,dA_I,dB_I,dC_I,dD_I),3)\n",
      "I1_II = round(IDCPH(T0,T1,dA_II,dB_II,dC_II,dD_II),3)\n",
      "I2_I = round(IDCPS(T0,T1,dA_I,dB_I,dC_I,dD_I),5)\n",
      "I2_II = round(IDCPS(T0,T1,dA_II,dB_II,dC_II,dD_II),5)\n",
      "\n",
      "#Using Eqn 13.18\n",
      "#dG_418/RT = ((dGo - dHo)/RTo)+(dHo/RT)+((1/T)*I1)-I2  c1 = dG_418/RT\n",
      "\n",
      "c1_I = round(((dGo_I-dHo_I)/(R*T0))+(dHo_I/(R*T1))+((1/T1)*I1_I)-I2_I,4)\n",
      "c1_II = round(((dGo_II-dHo_II)/(R*T0))+(dHo_II/(R*T1))+((1/T1)*I1_II)-I2_II,4)\n",
      "\n",
      "K_I = round(math.exp(-c1_I),4)\n",
      "K_II = round(math.exp(-c1_II),4)\n",
      "\n",
      "k = (K_II/K_I)**0.5;\n",
      "e_I = round(((K_I/P)/(1+(K_I*(1/P)*(1+k)*(1+k))))**0.5,4);\n",
      "\n",
      "e_II = round(k*e_I,4);\n",
      "\n",
      "n_C4H10 = 1-e_I-e_II;\n",
      "n_C2H4 = e_I;\n",
      "n_C2H6 = e_I;\n",
      "n_C3H6 = e_II;\n",
      "n_CH4 = e_II;\n",
      "nt = n_C4H10+n_C2H4+n_C2H6+n_C3H6+n_CH4;\n",
      "\n",
      "y_C4H10 = round(n_C4H10/nt,4);\n",
      "y_C2H4 = round(n_C2H4/nt,4);\n",
      "y_C2H6 = round(n_C2H6/nt,4);\n",
      "y_C3H6 = round(n_C3H6/nt,4);\n",
      "y_CH4 = round(n_CH4/nt,4);\n",
      "\n",
      "y = [y_C4H10, y_C2H4, y_C2H6, y_C3H6, y_CH4];\n",
      "\n",
      "# Results\n",
      "print '  Y_C4H10   Y_C2H4    Y_C2H6    Y_C3H6   Y_CH4'\n",
      "print y\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "  Y_C4H10   Y_C2H4    Y_C2H6    Y_C3H6   Y_CH4\n",
        "[0.0014, 0.049399999999999999, 0.049399999999999999, 0.45000000000000001, 0.45000000000000001]\n"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13.13 page no : 231"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%matplotlib inline\n",
      "import math \n",
      "from matplotlib.pyplot import plot,suptitle,xlabel,ylabel,legend\n",
      "from numpy import array,linspace,exp,linalg,zeros\n",
      "\n",
      "\n",
      "# Variables\n",
      "n_air = 2.381\t\t\t#[mol]\n",
      "n_O2 = 0.21*n_air;\n",
      "n_N2 = 0.79*n_air;\n",
      "R = 8.314;\n",
      "\n",
      "P = 20.;    \t\t\t#[bar]\n",
      "T = array([1000, 1100, 1200, 1300, 1400, 1500]);\n",
      "dG_H2O = array([-192420, -187000, -181380, -175720, -170020, -164310]);\n",
      "dG_CO = array([-200240, -209110, -217830, -226530, -235130, -243740]);\n",
      "dG_CO2 = array([-395790, -395960, -396020, -396080, -396130, -396160]);\n",
      "\n",
      "KI = 'y_H2O/((y_O2)**0.5*y_H2)(P/Po)**-0.5'\n",
      "KII = 'y_CO/((y_O2)**0.5)(P/Po)**0.5'\n",
      "KIII = 'y_CO2/y_O2'\n",
      "\n",
      "n = '3.38+((e2-e1)/2)'\n",
      "y_H2 = '-e1/n'\n",
      "y_CO = 'e2/n'\n",
      "y_O2 = '((0.5(1-e1-e2))-e3)/n'\n",
      "y_H2O = '(1+e1)/n'\n",
      "y_CO2 = 'e3/n'\n",
      "y_N2 = '1.88/n'\n",
      "\n",
      "KI = '(1+e1)(2n)**0.5*(P/Po)**-0.5'\n",
      "KII = '(e3*(P/Po)**0.5)/(1-e1-e2-2e3)**0.5*(n/2)**0.5'\n",
      "KIII = '2e3/(1-e1-e2-2e3)'\n",
      "\n",
      "# Calculations\n",
      "K_I = round(exp(-dG_H2O/(R*T)),1)\n",
      "K_II = round(exp(-dG_CO/(R*T)),1)\n",
      "K_III = round(exp(-dG_CO2/(R*T)),1)\n",
      "\n",
      "#Now math.since the values of KI KII KIII valyes are so High the mole fraction of O2 must be very small\n",
      "#Hence We eleminate O2,Hence 2 Eqns are,\n",
      "\n",
      "#C + CO2 --> 2CO      (a)\n",
      "#H2O + C --> H2 + CO  (b)\n",
      "\n",
      "Ka = '(y_CO**2/y_CO2)*(P/Po)'\n",
      "Kb = '((y_H2*y_CO)/y_H2O)*(P/Po)'\n",
      "\n",
      "n = '3.38+(e_a+e_b)'\n",
      "y_H2 = 'e_b/n'\n",
      "y_CO = '(2e_a+e_b)/n'\n",
      "y_H2O = '(1-e_b)/n'\n",
      "y_CO2 = '(0.5-e_a)/n'\n",
      "y_N2 = '1.88/n'\n",
      "\n",
      "Ka = '(2e_a+e_b)**2/((0.5-e_a)*n)*(P/Po)'\n",
      "Kb = 'e_b(2e_a+e_b)/((1-e_b)*n)*(P/Po)'\n",
      "\n",
      "dG_new_a = (2*dG_CO)-dG_CO2;\n",
      "dG_new_b = dG_CO-dG_H2O;\n",
      "\n",
      "Ka = round(exp((-dG_new_a/(R*T))),3);\n",
      "Kb = round(exp((-dG_new_b/(R*T))),3);\n",
      "\n",
      "#Calculation of e_a and e_b\n",
      "\n",
      "a = 0.1;\t\t\t#Initial Value\n",
      "\n",
      "b = 0.7;\t\t\t#Initial Value\n",
      "\n",
      "C1 = Ka/20;\n",
      "C2 = Kb/20;\n",
      "e_a = zeros(6)\n",
      "e_b = zeros(6)\n",
      "for i in range(6):\n",
      "    c = -1;\n",
      "    while(c == -1):\n",
      "        fa = round((((a**2)*(4+C1[i]))+(b**2)+((4+C1[i])*(a*b))+(2.88*C1[i]*a)-(0.5*C1[i]*b)-(1.69*C1[i])),4);\n",
      "        dfax = round(((2*a*(4+C1[i]))+((4+C1[i])*b)+(2.88*C1[i])),4);\n",
      "        dfay = round((2*b)+((4+C1[i])*a)-(0.5*C1[i]),4);\n",
      "\n",
      "        fb = round(((b**2*(1+C2[i]))+((2+C2[i])*a*b)-(C2[i]*a)+(2.38*C2[i]*b)-(3.38*C2[i])),4);\n",
      "        dfbx = round((((2+C2[i])*b)-C2[i]),4);\n",
      "        dfby = round(((2*b*(1+C2[i]))+((2+C2[i])*a)+(2.38*C2[i])),4);\n",
      "\n",
      "        A = [[dfax ,dfay],[dfbx ,dfby]];\n",
      "        B = [-fa,-fb];\n",
      "        Ans = round(linalg.solve(A,B),4); \n",
      "        da = Ans[0];\n",
      "        db = Ans[1];\n",
      "\n",
      "        if(da == 0 and db == 0):\n",
      "            c = 0;\n",
      "            e_a[i] = a;\n",
      "            e_b[i] = b;\n",
      "            break;\n",
      "\n",
      "        a = a+da;\n",
      "        b = b+db;\n",
      "\n",
      "\n",
      "n = 3.38+(e_a+e_b);\n",
      "y_H2 = round(e_b/n,3);\n",
      "y_CO = round(((2*e_a)+e_b)/n,3);\n",
      "y_H2O = round((1-e_b)/n,3);\n",
      "y_CO2 = round((0.5-e_a)/n,3);\n",
      "y_N2 = round(1.88/n,3);\n",
      "\n",
      "Ans = [T,Ka,Kb,e_a,e_b];\n",
      "Ans1 = [T,y_H2,y_CO,y_H2O,y_CO2,y_N2];\n",
      "\n",
      "# Results\n",
      "plot(T,y_H2,'r-')\n",
      "plot(T,y_CO,'b-')\n",
      "plot(T,y_H2O,'g-')\n",
      "plot(T,y_CO2,'m-')\n",
      "plot(T,y_N2,'y-')\n",
      "\n",
      "suptitle('Equllibrium Compositions')\n",
      "xlabel('T/K')\n",
      "ylabel('yi')\n",
      "\n",
      "\n",
      "print '    T/K       Ka         Kb         e_a       e_b'\n",
      "print Ans\n",
      "print '    T/K      y_H2     y_CO    y_H2O    y_CO2    y_N2'\n",
      "print Ans1\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "    T/K       Ka         Kb         e_a       e_b\n",
        "[array([1000, 1100, 1200, 1300, 1400, 1500]), array([    1.758,    11.405,    53.155,   194.79 ,   583.343,  1514.118]), array([   2.561,   11.219,   38.609,  110.064,  268.764,  583.577]), array([-0.0506,  0.121 ,  0.3168,  0.4302,  0.4738,  0.4895]), array([ 0.5336,  0.7124,  0.8551,  0.9357,  0.9713,  0.9863])]\n",
        "    T/K      y_H2     y_CO    y_H2O    y_CO2    y_N2\n",
        "[array([1000, 1100, 1200, 1300, 1400, 1500]), array([ 0.138,  0.169,  0.188,  0.197,  0.201,  0.203]), array([ 0.112,  0.227,  0.327,  0.378,  0.398,  0.405]), array([ 0.121,  0.068,  0.032,  0.014,  0.006,  0.003]), array([ 0.143,  0.09 ,  0.04 ,  0.015,  0.005,  0.002]), array([ 0.487,  0.446,  0.413,  0.396,  0.39 ,  0.387])]\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nfv4/lalQ8znmPGUAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x111d65e50>"
       ]
      }
     ],
     "prompt_number": 37
    }
   ],
   "metadata": {}
  }
 ]
}