diff options
Diffstat (limited to 'Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb')
-rw-r--r-- | Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb | 196 |
1 files changed, 1 insertions, 195 deletions
diff --git a/Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb b/Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb index 1f171743..dece46d0 100644 --- a/Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb +++ b/Physical_And_Chemical_Equilibrium_For_Chemical_Engineers/ch12.ipynb @@ -27,37 +27,22 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find The chemical equilibrium composition of the gaseous mixture contains\n", "\n", "import math \n", "\n", - "# Variables\n", "T = 298.15 #[K] temperature\n", "P = 1. #[atm] pressure \n", "R = 8.314*10**(-3) #[kJ/(mol*K)]\n", "\n", - "# Calculations\n", - "# For an ideal binary solution the Gi# Calculationss free energy is given by\n", - "# g_mix = summation(x_i*g_i_0) + R*T*summation(x_i*math.log(x_i))\n", - "# Differentiating the above equation with respect to x_a , remembering that for a binary mixture dx_b = dx_a, finding\n", "\n", - "# dg_mix/dx_a = g_a_0-g_b_0+R*T*[math.log(x_a)+1-(math.log(x_b)+1)]\n", - "# and x_a+x_b = 1\n", - "# so\n", - "# dg_mix/dx_a = g_a_0-g_b_0+R*T*[math.log(x_a/(1-x_a))]\n", "\n", - "# setting up this equal to zero ( to find the minimum on the g-x curve ) and solving gives\n", - "# x_a/(1-x_a) = exp((g_b_0-g_a_0)/(R*T))\n", "\n", - "# From the table A.8 (page 427) reported in the book, pure component Gibbs free energies for isobumath.tane,a,and n-bumath.tane,b, we find\n", "g_a_0 = -20.9 #[kJ/mol]\n", "g_b_0 = -17.2 #[kJ/mol]\n", "\n", - "# Now solving the above equation for x_a, we have\n", "x_a = math.exp((g_b_0-g_a_0)/(R*T))/(1+math.exp((g_b_0-g_a_0)/(R*T)))\n", "x_b = 1-x_a\n", "\n", - "# Results\n", "print \" The chemical equilibrium composition of the gaseous mixture contains %f mol fraction isobutane \\t\\t\\t\\t\\t\\t\\t\\tan %f mol fraction n-bumath.tane\"%(x_a,x_b)\n" ], "language": "python", @@ -94,57 +79,36 @@ "'''\n", "import math \n", "\n", - "# Variables\n", "T = 298.15 #[K] temperature\n", "P = 0.987 #[atm] pressure\n", "g_0_NO = 86.6 #[kJ/mol] Free energy of formation the NO from elements\n", "R = 8.314 #[J/(mol*K)]\n", "\n", - "# And the corresponding values for the elements N2 and O2 are\n", "g_0_O2 = 0.00\n", "g_0_N2 = 0.00\n", "\n", - "# The reaction of the nitrogen and oxygen to form nitric oxide at 298.15 K is\n", - "# N2 + O2 = NO\n", "\n", - "# Calculations\n", - "# Here \n", "delta_g_0 = 2*g_0_NO - g_0_O2 - g_0_N2 #[kJ/mol]\n", - "# Changing in the J/mol \n", "delta_g_01 = delta_g_0*1000 #[J/mol]\n", "\n", - "# hence \n", "K_298 = math.exp((-delta_g_01)/(R*T))\n", "\n", - "# The activities are all \n", - "# a_i = f_i/f_i_0\n", - "# f_i_0 correspond to the smath.radians(numpy.arcmath.tan(ard state, which for gas at idael gas state are \n", "f_0_N2 = 1. #[bar]\n", "f_0_O2 = 1. #[bar]\n", "f_0_NO = 1. #[bar]\n", "\n", - "# If we make the most general statement of the activities (for gases ) we would have\n", - "# a_i = y_i*v_i*Y_i*P/f_i_0 = y_i*phi*P/f_i_0\n", "\n", - "# At this low pressure we may safely asssume that the NO,O2 and N2 behave as ideal gases for which v_i*Y_i = phi = 1.00 and substituting these we find\n", - "# K_298 = [a_NO]**(2)/([a_N2]*[a_O2]) = [y_NO]**(2)/([y_N2]*[y_O2])\n", "\n", - "# Now umath.sing this equilibrium consmath.tant we can calculare he equilibrium concentratin of NO in the air sample in which \n", - "#oxygen = 21%, nitrogen = 78% and argon = 1% ,so\n", "y_N2 = 0.78\n", "y_O2 = 0.21\n", "\n", - "# Hence From above expression, we have\n", "y_NO_298 = math.sqrt(K_298*y_N2*y_O2)\n", "\n", - "# Making the similar calculations for the temperature 2000 K, we have\n", "T_1 = 2000 #[K]\n", "K_2000 = 4.0*10**-4\n", "\n", - "# So,\n", "y_NO_2000 = math.sqrt(K_2000*y_N2*y_O2)*10**(6) #[ppm]\n", "\n", - "# Results\n", "print \" The equilibrium constant for the reaction at 298.15 K is \\t\\t\\t %.1e\"%(K_298)\n", "print \" The concentration of NO at equilibrium at temperature 298.15 K is \\t\\t %.1e\"%(y_NO_298)\n", "print \" The equilibrium consmath.tant for the reaction at 2000 K is \\t\\t\\t %.1e\"%(K_2000)\n", @@ -178,39 +142,23 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find The calculated NO cocentration\n", "\n", "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", "Temp = 2000. #[K]\n", "n_air = 1. #[mol] no of moles of the air\n", "\n", - "# Let the moless of the NO formed be 2*x\n", - "# Then at equilibrium the unreacted moles of the N2 and O2 will be (0.78-x) and (0.21-x) respectively\n", "\n", - "# Calculations\n", - "# from the previous example, we have \n", - "# [y_NO]**(2) = K_298*[y_N2]*[y_O2]\n", - "# here \n", "K_2000 = 4*10**(-4)\n", - "# Substituting all the values, we have \n", - "# (2*x)**(2) = K_2000*(0.78-x)*(0.21-x)\n", "\n", - "#Now \n", "def f(x): \n", "\t return (2*x)**(2) - K_2000*(0.78-x)*(0.21-x)\n", - "#def f(x): \n", "\t #return (K_2000-2)*x**(2)-K_2000*(0.78+0.21)*x+K_2000*0.78*0.21\n", "x = fsolve(f,0)\n", - "# Here negative root is meaningless,so\n", - "# concentration of NO\n", "c_NO = 2*x*10**(6) #[ppm]\n", - "# now\n", "p = c_NO/8100.*100\n", "\n", - "# Results\n", "print \" The calculated NO cocentration is %f ppm, which %f%% of the value computed in example 12.1\"%(c_NO,p)\n" ], "language": "python", @@ -248,7 +196,6 @@ "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", "Temp = 298. #[K]\n", "K = 29.6 # equilibrium consmath.tant at 298 K \n", "P = 1. #[bar]\n", @@ -256,23 +203,17 @@ "n_ethylene_0 = 1. #[mol]\n", "n_ethanol_0 = 0. #[mol]\n", "\n", - "# Calculations\n", "n_T_0 = (n_water_0+n_ethylene_0+n_ethanol_0) #[mol]\n", "\n", - "# From the previous example, we have \n", - "# [(0+e)/(1.833-e)]/([(1-e)/(1.833-e)]*[(0.833-e)/(1.833-e)]) = K*P/(1 bar)\n", - "# let y = [(0+e)/(1.833-e)]/([(1-e)/(1.833-e)]*[(0.833-e)/(1.833-e)])- K*P/(1 bar)\n", "def f(e): \n", "\t return ((0+e)/(1.833-e))/(((1-e)/(1.833-e))*((0.833-e)/(1.833-e)))-K*P/(1)\n", "e_1 = fsolve(f,0)\n", "e_2 = fsolve(f,0.5)\n", "\n", - "# Here the root 'e_2' is meaningless, Then \n", "y_ethanol = ((0+e_2)/(1.833-e_2))\n", "y_ethylene = ((1-e_2)/(1.833-e_2))\n", "y_water = ((0.833-e_2)/(1.833-e_2))\n", "\n", - "# Results\n", "print \"Concentration of the ethylene at the equilibrium is %f\"%(y_ethylene)\n", "print \" Concentration of the water at the equilibrium is %f\"%(y_water)\n", "print \" Concentration of the ethanol at the equilibrium is %f\"%(y_ethanol)\n" @@ -313,55 +254,28 @@ "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", "Temp = 273.15+25 #[C]\n", "P = 1. #[bar]\n", "R = 8.314 #[J/(mol*K)]\n", "\n", - "# We have the reaction as \n", - "# H2 + 0.5O2 = H2O\n", - "# Using values of the Gibbs free energies of formation in the Table A.8(page 427) we have\n", "g_H2O_0 = -237.1 #[kJ/mol]\n", "g_O2_0 = 0 #[kJ/mol]\n", "g_H2_0 = 0 #[kJ/mol]\n", "\n", - "# Calculations\n", - "# now\n", "delta_g_0 = g_H2O_0 - 0.5*g_O2_0-g_H2_0 #[kJ/mol]\n", - "# expresmath.sing delta_g_0 in [J/mol] \n", "delta_g_1 = delta_g_0*1000 #[J/mol]\n", "\n", - "# and \n", "K = math.exp((-delta_g_1)/(R*Temp))\n", - "# And we have \n", - "# K = [a_H2O]/([a_H2]*[a_O2]**(0.5))\n", - "# Here we will again assume as in the previous example that we have an ideal solution of the ideal gases for which in equation 12.18 (page 320),we have \n", - "# v_i*Y_i = phi = 1.00 , and that for each reacmath.tant or product f_i_0 = 1 bar, putting all the values and simplifying \n", - "\n", - "# K = [y_H2O]/([y_H2]*[y_O2]**(0.5))*((1 bar)/P)**(0.5)\n", - "# Choomath.sing oxygen as the selected reacmath.tant, and assuming that we begin with 0.5 mol of oxygen and 1 mol of hydrogen,\n", - "# we have the stoichiometric coefficients of -1, -0.5 and +1 \n", - "# and \n", + "\n", "n_T_0 = 1.5#[mol]\n", - "# Also summation(v_i) = -0.5\n", "\n", - "# Thus \n", - "# K = [e/(1.5-0.5*e)]/([(1-e)/(1.5-0.5*e)]*[(0.5-0.5*e)/(1.5-0.5*e)]**(0.5))\n", "\n", - "# Now \n", "def f(e): \n", "\t return (e/(1.5-0.5*e))/(((1-e)/(1.5-0.5*e))*((0.5-0.5*e)/(1.5-0.5*e))**(0.5))\n", - "# e = fsolve(f,.99999)\n", - "# e = (1-2.4e-28)\n", "\n", - "# So the equilibrium concentration of the hydrogen and oxygen are as\n", - "# y_H2 = [(1-e)/(1.5-0.5*e)]\n", - "# y_O2 = [(0.5-0.5*e)/(1.5-0.5*e)]\n", - "# These values are so less that scilab consol is print laying them zero, however we get\n", "y_H2 = 2.4e-28\n", "y_O2 = 0.5*y_H2\n", "\n", - "# Results\n", "print \" The equilibrium mol fraction of the hydrogen is %0.3e\"%(y_H2)\n", "print \" And the equilibrium mol fraction of the oxygen is %e \"%(y_O2)\n" ], @@ -399,20 +313,14 @@ "import math \n", "from scipy.integrate import quad \n", "\n", - "# Variables\n", "Temp = 298.15 #[K]\n", "Press = 1*10**(5) #[Pa]\n", "R = 8.314 #[J/(mol*K)]\n", "\n", - "# Calculations\n", - "# We will calculate the free energy change from liquid to hypothetical gas in three steps\n", - "# 1) The liquid is reduced in pressure from the smath.radians(numpy.arcmath.tan(ard pressure of 1 bar to its vapour pressure at 298.15K and for this cange in the state we have \n", "v_liquid = 1.805*10**(-5) #[m**(3)/mol] this liquid specific volume and we will treat is as a consmath.tant\n", "\n", - "# The vapour preesure of the water 25C is given as\n", "P_vapour_25 = 0.0317*10**(5) #[Pa]\n", "\n", - "# thus change in the Gibbs free energy is \n", "\n", "def f0(P): \n", "\t return v_liquid*P**(0)\n", @@ -420,12 +328,8 @@ "delta_g_0_1 = quad(f0,Press,P_vapour_25)[0]\n", "\n", "\n", - "# 2) In the second step the liquid is vaporized at that pressure, for which\n", "delta_g_0_2 = 0 #[J/mol]\n", - "# because this is an equilibrium vaporization.\n", "\n", - "# 3) And in this last step the vapour is replaced by an ideal gas, which will not condence, and compressed from the vapour pressure at 298.15K to 1 bar\n", - "# In this case the specific volume v_ideal of the ideal gas is replaced by the ideal gas law viz. (R*T)/P\n", "\n", "def f1(P): \n", "\t return 1./P\n", @@ -433,18 +337,13 @@ "delta_g_0_3 = (R*Temp)* quad(f1,P_vapour_25,Press)[0]\n", "\n", "\n", - "# Thus total change in free energy is \n", "delta_g_0 = delta_g_0_1+delta_g_0_2+delta_g_0_3 #[J/mol]\n", - "#expresmath.sing the result in kJ/mol\n", "delta_g_1 = delta_g_0/1000 #[kJ/mol]\n", "\n", - "# Results\n", "print \" Total change in the free energy of water going under given conditions is %0.2f kJ/mol\"%(delta_g_1)\n", "\n", - "# From Table A.8 we find \n", "delta_g_0_ideal_gas = -228.6 #[kJ/mol]\n", "delta_g_0_liquid = -237.1 #[kJ/mol]\n", - "# So \n", "delta_g_o = delta_g_0_ideal_gas-delta_g_0_liquid #[kJ/mol]\n", "\n", "print \" From the values of Table A.8 given in the book the free energy change is %0.2f kJ/mol\"%(delta_g_o)\n" @@ -475,40 +374,28 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find Equilibrium constants for the formation of ammonia from hydrogen and nitrogen are\n", "import math \n", "from scipy.integrate import quad \n", "\n", - "# Variables\n", "T1 = 273.15+25 #[K]\n", "T2 = 273.15+400 #[K]\n", "R = 8.314 #[J/(mol*K)]\n", "\n", - "# Umath.sing the table A.8, we have\n", - "# Gibb's free energy of the various species at 298.15 K are\n", "g0_NH3 = -16.5 #[kJ/mol]\n", "g0_N2 = 0 #[kJ/mol]\n", "g0_H2 = 0 #[kJ/mol]\n", "\n", - "# We have the reaction as \n", - "# 0.5N2 + 1.5H2 = NH3\n", "\n", - "# Calculations\n", - "# So, Gibb's free energy change in the reaction is given as \n", "delta_g_0 = g0_NH3 - 0.5*g0_N2 - 1.5*g0_H2 #[kJ/mol]\n", "\n", - "# and\n", "K_1 = math.exp(-delta_g_0*1000/(R*T1)) # Equilibrium consmath.tant of the reaction at temperature 298.15 K\n", "\n", - "# Similarly enthalpy of the various species are \n", "h0_NH3 = -46.1 #[kJ/mol]\n", "h0_N2 = 0 #[kJ/mol]\n", "h0_H2 = 0 #[kJ/mol]\n", "\n", - "# So, enthalpy change of the reaction is given as \n", "del_h_1 = h0_NH3 - 0.5*h0_N2 - 1.5*h0_H2 #[kJ/mol]\n", "\n", - "# Now, from Table 12.3( page 332 )\n", "a_NH3 = 3.578\n", "a_H2 = 3.249\n", "a_N2 = 3.280\n", @@ -522,20 +409,13 @@ "d_H2 = 0.083*10**(5) #[K**(2)]\n", "d_N2 = 0.040*10**(5) #[K**(2)]\n", "\n", - "# So,\n", "del_a = a_NH3 - 0.5*a_N2 - 1.5*a_H2\n", "del_b = b_NH3 - 0.5*b_N2 - 1.5*b_H2\n", "del_c = c_NH3 - 0.5*c_N2 - 1.5*c_H2\n", "del_d = d_NH3 - 0.5*d_N2 - 1.5*d_H2\n", "\n", - "# Now, enthalpy change of the reaction at any other temparature is given by\n", - "# Integrating and putting the limits, we have\n", - "# del_h = del_h_1 + R*( del_a*T + del_b*T**(2)/2 + del_c*T**(3)/3 - del_d/T) - R*( del_a*T_1 + del_b*T_1**(2)/2 + del_c*T_1**(3)/3 - del_d/T_1)\n", - "# let\n", "I = R*( del_a*T1 + del_b*T1**(2)/2 + del_c*T1**(3)/3 - del_d/T1) #[J/mol]\n", "\n", - "# From equation 12.28 and above relations we have\n", - "# Let math.log(K_2/K_1) = X, So,\n", "\n", "def f5(T): \n", "\t return (del_h_1*1000 - I + R*(del_a*T + del_b*T**(2)/2 + del_c*T**(3)/3 - del_d/T))/T**(2)\n", @@ -543,10 +423,8 @@ "X = (1/R)* quad(f5,T1,T2)[0]\n", "\n", "\n", - "# So, \n", "K_2 = K_1*math.exp(X)\n", "\n", - "# Results\n", "print \" Equilibrium consmath.tants for the formation of ammonia from hydrogen and nitrogen are \"\n", "print \" K = %0.0f at temperature 25 deg C\"%(K_1)\n", "print \" K = %f at temperature 400 deg C\"%(K_2)\n" @@ -587,8 +465,6 @@ "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", - "# Initial moles of the gases are \n", "n_H2_0 = 1.5 #[mol]\n", "n_N2_0 = 0.5 #[mol]\n", "n_NH3_0 = 0 #[mol]\n", @@ -596,38 +472,24 @@ "T_2 = 673.15 #[K]\n", "P = 1. #[bar]\n", "\n", - "# We start with the equation as \n", - "# [f_NH3/f_0_NH3]/([f_N2/f_0_N2]**(0.5)*[f_H2/f_0_H2]**(1.5)) = K\n", "\n", - "# For a pressure of 1 bar with the assumption of ideal solution of ideal gases and smath.radians(numpy.arcmath.tan(ard state fugacities of 1 bar,\n", - "# a_i = [f_i/f_0_i] = [P*y_i/(1 bar)] = y_i \n", - "# The equilibrium relation is given by \n", - "# K = [y_NH3]/([y_N2]**(0.5)*[y_H2]**(1.5))\n", "\n", - "# We have the stoichiometric coefficient of N2, H2 and NH3 as -0.5, -1.5 and +1 respectively, so summation(v_i) = -1\n", - "# Now umath.sing the equilibrium relations which are Equations 12.W, 12.X and 12.Y ( page 322 ), we have \n", "\n", - "# K = ((0+e)/(2-e))/(((0.5-0.5*e)/(2-e))**(0.5)*((1.5-1.5*e)/(2-e))**(1.5))\n", - "# Form the example 12.8 of this book we know that \n", "K_298 = 778. # at temperature 298.15K\n", "K_673 = 0.013 # at temperature 673.15K\n", "\n", - "# Calculations\n", - "# Solving for temperature 298.15\n", "def g(e_1): \n", "\t return ((0+e_1)/(2-e_1))/(((0.5-0.5*e_1)/(2-e_1))**(0.5)*((1.5-1.5*e_1)/(2-e_1))**(1.5))-K_298\n", " \n", "e_1 = fsolve(g,0.97)\n", "y_NH3_298 = e_1/(2-e_1)\n", "\n", - "# Similarily solving for temperature 673.15K\n", "def h(e_2): \n", "\t return ((0+e_2)/(2-e_2))/(((0.5-0.5*e_2)/(2-e_2))**(0.5)*((1.5-1.5*e_2)/(2-e_2))**(1.5))-K_673\n", "\n", "e_2 = fsolve(h,0)\n", "y_NH3_673 = e_2/(2-e_2)\n", "\n", - "# Results\n", "print \" The mole fraction of NH3 in the equilibrium at the temperature 298.15K and 1 bar is %f\"%(y_NH3_298)\n", "print \" The mole fraction of NH3 in the equilibrium at the temperature 673.15K and 1 bar is %f\"%(y_NH3_673)\n" ], @@ -657,32 +519,23 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find The mole fraction of the ammonia in the equilibrium\n", "\n", "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", "Temp = 273.15+400 #[K]\n", "P = 150*1.01325 #[bar]\n", "\n", - "# Comparing this with the example 12.9, we see that we can use the same equation , but K_673 is replaced by K_673*(P/(1bar))**(1.5+0.5-1)\n", "K_673 = 0.013\n", "\n", - "# So \n", "K = K_673*(P/1)**(1.5+0.5-1)\n", "\n", - "# Calculations\n", - "# We have \n", - "# K = ((0+e)/(2-e))/(((0.5-0.5*e)/(2-e))**(0.5)*((1.5-1.5*e)/(2-e))**(1.5))\n", "def f(e): \n", "\t return ((0+e)/(2-e))/(((0.5-0.5*e)/(2-e))**(0.5)*((1.5-1.5*e)/(2-e))**(1.5))-K\n", "e=fsolve(f,0.5)\n", "\n", - "# Thus mole fraction of the ammonia in the gas is given by \n", "y_NH3 = (0+e)/(2-e)\n", "\n", - "# Results\n", "print \"The mole fraction of the ammonia in the equilibrium is %0.2f\"%(y_NH3)\n" ], "language": "python", @@ -710,39 +563,26 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find The mole fraction of the ammonia in the equilibrium\n", "\n", "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", - "# The data used in this example will e same as in the example 12.10\n", "T = 273.15+400 #[K] given temperature\n", "P = 150*1.01325 #[bar] given pressure\n", "\n", - "# Here again the equation will be same as in the example 12.9 like we used in the example 12.10 only K_673 is replaced by (K/K_v)*[P/(1 bar)]**(1.5+0.5-1)\n", "K_673 = 0.013\n", - "# The value of 'K_v' is calculated by the equation 12.BN, which is \n", - "# log10(1/K_v) = (0.1191849/T + 91.87212/T**(2) + 25122730/T**(4))*P\n", "\n", - "# Calculations\n", - "# So \n", "K_v = (10**((0.1191849/T + 91.87212/T**(2) + 25122730/T**(4))*P))**(-1)\n", "\n", - "# Thus \n", "K = (K_673/K_v)*(P/1)**(1.5+0.5-1)\n", "\n", - "# Now from the previous example we have\n", - "# K = ((0+e)/(2-e))/(((0.5-0.5*e)/(2-e))**(0.5)*((1.5-1.5*e)/(2-e))**(1.5))\n", "\n", "def f(e): \n", "\t return ((0+e)/(2-e))/(((0.5-0.5*e)/(2-e))**(0.5)*((1.5-1.5*e)/(2-e))**(1.5))-K\n", "e = fsolve(f,0.2)\n", "\n", - "# Mol fraction of the ammonia in the gas phase in the equilibrium is given by\n", "y_NH3 = (0+e)/(2-e)\n", "\n", - "# Results\n", "print \" The mole fraction of the ammonia in the equilibrium is %0.2f\"%(y_NH3)\n" ], "language": "python", @@ -779,64 +619,37 @@ "from scipy.optimize import fsolve \n", "import math \n", "\n", - "# Variables\n", "p_i = 1. #[atm] initial pressure \n", "P = 150. #[atm] final pressure\n", "T = 273+25. #[K] Given temperature\n", "R = 8.314 #[J/(mol*K)]\n", "\n", - "# Now ignoring the difference between 25C and 20C, we use the values given in the table A.8 (page 427) to get \n", "delta_g_0 = 10.54*1000 #[J/mol]\n", - "# And thus \n", "\n", - "# Calculations\n", "K = math.exp((-delta_g_0)/(R*T))\n", "\n", - "# Now the chemical reaction is given by\n", - "# C2H5OH + CH3COOH = C2H5OOC2H5 + H2O\n", "\n", - "# Let we start with 1 mol each of ethanol and acetic acid, and at equilibrium 'e' moles each of the reacmath.tants reacted, then\n", - "# remaining amount of each of the two reacmath.tants will be (1-e) and that products formation will be 'e' mol each\n", "\n", - "# We have \n", - "# K = (a_C2H5OOC2H5*a_H2O)/(a_C2H5OH*a_CH3COOH) = (x_C2H5OOC2H5*x_H2O)/(x_C2H5OH*x_CH3COOH) = (e*e)/((1-e)*(1-e))\n", - "# Now solving for 'e'\n", "def f(e): \n", "\t return (e*e)/((1-e)*(1-e))-K\n", "e = fsolve(f,0)\n", "\n", - "# To see the effect of changing the pressure we first compute the volume increase of the reaction \n", - "# delta_v = v_C2H5OOC2H5 + v_H2O - v_C2H5OH - v_CH3COOH, where v_i is the molar volume of the ith component\n", - "# From the Table 12.4(page 340), we have\n", "v_C2H5OOC2H5 = 97.67 #[ml/mol]\n", "v_H2O = 18.03 #[ml/mol]\n", "v_C2H5OH = 58.30 #[ml/mol]\n", "v_CH3COOH = 57.20 #[ml/mol]\n", "\n", - "# Thus volume increase of the reaction is\n", "delta_v = v_C2H5OOC2H5 + v_H2O - v_C2H5OH - v_CH3COOH #[ml/mol]\n", "\n", - "# So, from Le Chatelier's principal, on increamath.sing the pressure , the reaction is forced in the direction of the reacmath.tant or away from the product \n", - "# To calculate the extent of shifting we will take the help of the activity of each of the four component \n", - "# a_i = (f_i/f_i_0) = (x_i*Y_i*p_i)/p_i*exp(v/(R*T)*(P-p_i))\n", - "# we will assume that this is an ideal solution so that Y_i = 1.00, for every component\n", "\n", - "# Now substituting the activity of each component in the expression of the equilibrium consmath.tant given above, we have\n", - "# K = (x_C2H5OOC2H5*x_H2O)/(x_C2H5OH*x_CH3COOH)*exp[(delta_v)/(R*T)*(P-p_i)]\n", - "# or\n", - "# K = (e_1*e_1)/((1-e_1)*(1-e_1))*exp[(delta_v)/(R*T)*(P-p_i)]\n", "\n", - "# Solving for 'e_1'\n", "def g(e_1): \n", "\t return (e_1*e_1)/((1-e_1)*(1-e_1))*math.exp((delta_v)/(R*T)*(P-p_i))-K\n", "e_1 = fsolve(g,0.2)\n", "\n", - "# Now if we carry out the calculation to enough significant figures then\n", "a = e_1/e\n", "\n", - "# It indicates that e_1 is 'a' times of that of the e\n", "\n", - "# Results\n", "print \"On increamath.sing the pressure from 1 atm to 150 atm the reacted amount of the equimolar \\\n", "reacmath.tants at equilibrium becomes %f times of initial\"%(a)\n" ], @@ -865,25 +678,18 @@ "cell_type": "code", "collapsed": false, "input": [ - "# find Value of the K_p at the given condition\n", "\n", "import math \n", "\n", - "# Variables\n", "P = 150. #[atm] given pressure\n", "T = 400. #[C] temperature\n", - "# Umath.sing the values from the example 12.11, we know that\n", "K = 0.013\n", "K_v = 0.84\n", "delta_v = 1.5+0.5-1\n", "\n", - "# Calculations\n", - "# so \n", - "# K_p = (K/K_v)*[1/bar]**(-summation(v_i)) = (K/K_v)*[1/bar]**(delta_v)\n", "\n", "K_p = (K/K_v)*(1/1)**(delta_v) #[1/bar]\n", "\n", - "# Results\n", "print \" Value of the K_p at the given condition is %f 1/bar)\"%(K_p)\n", "print \" The basic K is dimensionless%( but K_p has the dimensions of pressure to the power.\"\n" ], |