diff options
Diffstat (limited to 'Fluid_Mechanics_by_Irfan_A._Khan')
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter1.ipynb | 609 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter10.ipynb | 451 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter11.ipynb | 333 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter12.ipynb | 365 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter2.ipynb | 970 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter3.ipynb | 541 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter4.ipynb | 558 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter5.ipynb | 578 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter6.ipynb | 144 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter7.ipynb | 428 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter8.ipynb | 396 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/Chapter9.ipynb | 847 | ||||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot1.png | bin | 0 -> 27945 bytes | |||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot2.png | bin | 0 -> 14805 bytes | |||
-rwxr-xr-x | Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot3.png | bin | 0 -> 38369 bytes |
15 files changed, 6220 insertions, 0 deletions
diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter1.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter1.ipynb new file mode 100755 index 00000000..561385dd --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter1.ipynb @@ -0,0 +1,609 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 1 : Fluid Properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.1 Page no 8" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Desnity of air at 20 deg C and 50 psia = 4.1 kg/m**3" + ] + } + ], + "source": [ + "# Density of air\n", + "\n", + "#Given \n", + "\n", + "Mw = 29.0 # Molecular weight of air\n", + "\n", + "R = 8323/Mw # Universal gas constant\n", + "\n", + "T = 273 + 20 # temperature in K\n", + "\n", + "p = 50*144*47.88 # Pressure in N/m**2\n", + "\n", + "# Solution\n", + "\n", + "rho = p/(R*T) # from the state law\n", + "\n", + "print \"Desnity of air at 20 deg C and 50 psia = \",round(rho,2),\"kg/m**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.2 Page no 12" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reduction in volume = 0.045 %\n" + ] + } + ], + "source": [ + "# Reduction in volume\n", + "\n", + "# Given\n", + "\n", + "dP = 10**6 # Pressure drop in N/m**2\n", + "\n", + "V = 1 # Volume in m**3\n", + "\n", + "bta = 2.2*10**9 # Bulk modulus of elasticity in N/m**2\n", + "\n", + "# Solution\n", + "\n", + "dV = -dP*V/bta # Change in volume in m**3\n", + "\n", + "v = -dV*100\n", + "\n", + "print \"Reduction in volume = \",round(v,3),\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.3 Page no 13" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Volume reduction = -3.57e-06 m**3\n", + "Negative sign indicates the volume has reduced" + ] + } + ], + "source": [ + "# Volume reduction\n", + "\n", + "# Given\n", + "\n", + "bta1 = 2.28*10**9 # Bulk modulus of elasticity at 20 deg C and 103.4 N/m**2\n", + "\n", + "bta2 = 2.94*10**9 # Bulk modulus of elasticity at 20 deg C and 1034 N/m**2\n", + "\n", + "p1 = 103.4 # Pressure in N/m**2\n", + "\n", + "p2 = 1034 # Pressure in N/m**2\n", + "\n", + "# Solution \n", + "\n", + "bavg = (bta1+bta2)/2 # bulk modulus average in N/m**2\n", + "\n", + "dP = p2-p1 # pressure drop in N/m**2\n", + "\n", + "V = 10 # Volume in m**3\n", + "\n", + "dV = dP*V/bavg # Change in volume in m**3\n", + "\n", + "v = -dV\n", + "\n", + "print \"Volume reduction = \",round(v,8),\"m**3\"\n", + "\n", + "print \"Negative sign indicates the volume has reduced\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.4 Page no 14" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An increase in pressure by 2 psia will result in a volume reduction of -0.0173 ft**3\n" + ] + } + ], + "source": [ + "# Volume reduction \n", + "\n", + "# Given\n", + "\n", + "patm = 14.6 # Atmospheric pressure in psia\n", + "\n", + "p1 = 100 # gauge pressure at point 1 in psia\n", + "\n", + "p2 = 102 # gauge pressure at point 2 in psia\n", + "\n", + "V = 1 # volume in m**3\n", + "# solution\n", + "\n", + "p = p1+patm # absolute pressure in psia\n", + "\n", + "b = p # for isothermal air\n", + "\n", + "p1 = p2+patm # absolute pressure in psia\n", + "\n", + "b1 = p1 # for isothermal air\n", + "\n", + "dP = p1 - p # change in pressure\n", + "\n", + "bavg = (b1+b)/2 # average bulk modulus of elasticity in N/m**2\n", + "\n", + "dV = dP*V/bavg\n", + "\n", + "v = -dV\n", + "\n", + "print \"An increase in pressure by 2 psia will result in a volume reduction of\",round(v,4),\"ft**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.5 Page no 14" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sonic velocity in air at 68 deg F = 1126.0 ft/s\n" + ] + } + ], + "source": [ + "# Sonic velocity of air\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "k = 1.4 # gas constant\n", + "\n", + "R = 1716 # Universal gas constant in ft.lb/slug^oR\n", + "\n", + "T = 68+460 # temperature in *oR\n", + "\n", + "# solution\n", + "\n", + "c = sqrt(k*R*T)\n", + "\n", + "print \"Sonic velocity in air at 68 deg F = \",round(c,0),\"ft/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.6 Page no 19" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Force required to move the piston by 1 m/s = 2.83 N\n" + ] + } + ], + "source": [ + "# Force required to move the piston\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "d = 0.05 # diameter of cylinder 1 in m\n", + "\n", + "l = 0.2 # length of the cylinder in meters\n", + "\n", + "d1 = 0.052 # diameter of cylinder in m\n", + "\n", + "mu = 0.09 # Viscosity of oil in Ns/m**2\n", + "\n", + "U = 1 # velocity in m/s\n", + "\n", + "Y = (d1-d)/2 # clearance between the two cylinders in m\n", + "\n", + "A = pi*l*d # area in m**2\n", + "\n", + "# Solution \n", + "\n", + "tau = mu*U/Y # Shear stress in N/m**2\n", + "\n", + "F = tau*A # Shear foce in N\n", + "\n", + "print \"Force required to move the piston by 1 m/s = \",round(F,2),\"N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.7 Page no 20" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " (a) Distance between the walls = 1.0 cm\n", + " (b) Shear stress = 0.0001005 N/m**2\n", + " (c) Shear Stress at 20 um from the plate = 0.000100098 N/m**2\n", + " (d) Location of maximum velocity = 0.005 m\n", + "Above calculation indicates that the zero shear stress and the maximum velocity occurs at the same location which is half way between the plate \n", + "This also is in conformity with the fact that , in a flowing fluid, the velocity is maximum where shear stress is zero\n" + ] + } + ], + "source": [ + "# Distance between the walls; Shear Stress; Location of maximum velocity\n", + "\n", + "from math import *\n", + "\n", + "from sympy import *\n", + "\n", + "# Given\n", + "\n", + "mu = 1.005*10**-3 # Viscosity of water in Ns/m**2\n", + "\n", + "# Solution \n", + "\n", + "# Part a\n", + "\n", + "# Velocity is given by the formula u = 10*(0.01*y-y**2)\n", + "\n", + "# two boundary conditions must be satisfied\n", + "\n", + "# at y=0;u=0 at the bottom of the plate\n", + "\n", + "# at y=Y ; u = 0 at top of the plate\n", + "\n", + "Y = 0.01 # Distance between the walls\n", + "\n", + "Y1 = Y*100\n", + "\n", + "print \" (a) Distance between the walls = \",round(Y1,1),\"cm\"\n", + "\n", + "# Part b\n", + "\n", + "# tau = mu*du/dy # Newtons law of viscosity\n", + "\n", + "# differentiate u wrt y\n", + "\n", + "y = Symbol('y')\n", + "\n", + "u = 10*(0.01*y-y**2)\n", + "\n", + "uprime = u.diff(y)\n", + "\n", + "y = 0\n", + "\n", + "U = uprime\n", + "\n", + "#print U\n", + "# for y =0 at the bottom plate we get \n", + "\n", + "U1 = 0.01 # from U\n", + "\n", + "tau = mu*10*U1 # shear stress in N/m**2\n", + "\n", + "print \" (b) Shear stress = \",round(tau,9),\"N/m**2\"\n", + "\n", + "# Part c\n", + "\n", + "# Shaer stress at 20um from the wall\n", + "\n", + "tau1 = mu*10*(0.01-2*20*10**-6) # using the equation of U and y = 20*10**-6 calc shear stress in N/m**2\n", + "\n", + "print \" (c) Shear Stress at 20 um from the plate = \",round(tau1,9),\"N/m**2\"\n", + "\n", + "# Part D\n", + "\n", + "# Distance at which shaer stress is zero can be found from the location of maximum velocity \n", + "\n", + "# equating uprime = 0\n", + "\n", + "y1 = 0.01/2 # shear stress location\n", + "\n", + "print \" (d) Location of maximum velocity = \",round(y1,3),\"m\"\n", + "\n", + "print \"Above calculation indicates that the zero shear stress and the maximum velocity occurs at the same location which is half way between the plate\",\"\\n\",\"This also is in conformity with the fact that , in a flowing fluid, the velocity is maximum where shear stress is zero\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.8 Page 24" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " (a) For linear distribution of velocity , shaft torque = 10.86 m.N\n", + " (b) For non-linear distribution of velocity , shaft torque = 10.86 m.N\n" + ] + } + ], + "source": [ + "# Shaft torque for linear and non linear distribution of velocity \n", + "from math import *\n", + "# Given\n", + "\n", + "d = 0.1 # diameter of shaft in m\n", + "\n", + "l = 0.2 # length of the shaft in m\n", + "\n", + "t = 0.00002 # thickness in m\n", + "\n", + "N = 30 # RPM of shaft\n", + "\n", + "U = pi*d*30/60 # velocity in m/s\n", + "\n", + "r1 = d/2\n", + "\n", + "r2 = r1 + t # radius of bearing in m\n", + "\n", + "mu = 0.44 # Viscosity of SAE-30 oil in Ns/m**2\n", + "\n", + "# Solution\n", + "\n", + "# part a\n", + "\n", + "F = 2*pi*r1*l*mu*U/t\n", + "\n", + "T =F*r1\n", + "\n", + "print \" (a) For linear distribution of velocity , shaft torque = \",round(T,2),\"m.N\"\n", + "\n", + "# part b\n", + "\n", + "F1 = 2*pi*l*mu*U/log(r2/r1)\n", + "\n", + "\n", + "T1 =F1*r1\n", + "\n", + "print \" (b) For non-linear distribution of velocity , shaft torque = \",round(T1,2),\"m.N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.9 Page 26" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Watts of energy lost in overcoming friction at 300 RPM = 1108.0 Watts\n" + ] + } + ], + "source": [ + "# Watts of energy lost to overcome friction\n", + "from math import *\n", + "# Given\n", + "\n", + "mu = 0.44 # viscosity of the oil in Ns/m**2\n", + "\n", + "N = 300 # RPM of the shaft\n", + "\n", + "t = 0.00025 # thickness of the film oil in m\n", + "\n", + "r1 = 0.15 # radius in m\n", + "\n", + "r2 = 0.1 # radius in m\n", + "\n", + "T = pi**2*mu*N*(r1**4-r2**4)/(60*t)\n", + "\n", + "P = T*2*pi*N/60\n", + "\n", + "print \"Watts of energy lost in overcoming friction at 300 RPM = \",round(P,0),\"Watts\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.10 Page no 28" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Excessive pressure inside the droplet = 29.2 N" + ] + } + ], + "source": [ + "# Excessive pressure inside droplet\n", + "\n", + "# Given\n", + "\n", + "d = 0.01 # diameter in m\n", + "\n", + "sigma = 0.073 # surface tension in N/m\n", + "\n", + "# Solution \n", + "\n", + "dP = 4*sigma/d # pressure excessive\n", + "\n", + "print \"Excessive pressure inside the droplet = \",round(dP,2),\"N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1.11 Page no 31" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The alcohol will rise to a height of 5.7 mm in the glass tube" + ] + } + ], + "source": [ + "# Height to which alcohol will rise\n", + "\n", + "# Given\n", + "\n", + "sigma = 0.022 # surface tension in N/m\n", + "\n", + "gma = 9789 # specific weight\n", + "\n", + "S = 0.79 # specific gravity\n", + "\n", + "d = 0.002 # diameter in m\n", + "\n", + "# Solution \n", + "\n", + "\n", + "h =4*sigma*1000/(gma*S*d) # capillary height in m\n", + "\n", + "print \"The alcohol will rise to a height of\",round(h,1),\"mm in the glass tube\"" + ] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter10.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter10.ipynb new file mode 100755 index 00000000..d207e652 --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter10.ipynb @@ -0,0 +1,451 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 10 : Open Channel Flow " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.1 Page no 363" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Top width = 5.0 m\n", + "Area of flow = 8.0 m**2\n", + "Wetted perimeter = 7.472 m\n", + "Hydraulic radius = 1.07 m\n", + "Hydraulic depth = 1.6 m\n", + "Secton Factor = 10.12 m**2\n" + ] + } + ], + "source": [ + "# Top width, area of lfow, hydraulic radius\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "b = 3 # base of the channel\n", + "\n", + "z = 0.5 # slope of the channel\n", + "\n", + "y = 2 # depth of the channel\n", + "\n", + "# Solution\n", + "\n", + "T = b + 2*z*y\n", + "\n", + "print \"Top width =\",round(T,0),\"m\"\n", + "\n", + "A = (b+z*y)*y\n", + "\n", + "print \"Area of flow =\",round(A,0),\"m**2\"\n", + "\n", + "P = b + 2*y*sqrt(1+z**2)\n", + "\n", + "print \"Wetted perimeter =\",round(P,3),\"m\"\n", + "\n", + "R = A/P\n", + "\n", + "print \"Hydraulic radius =\",round(R,2),\"m\"\n", + "\n", + "D = A/T\n", + "\n", + "print \"Hydraulic depth =\",round(D,2),\"m\"\n", + "\n", + "Z = A*sqrt(D)\n", + "\n", + "print \"Secton Factor =\",round(Z,2),\"m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.2 Page no 366" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge for the channel = 16.1 m**3/s\n" + ] + } + ], + "source": [ + "# Discharge for the trapezoidal channel\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "z = 1.0 # slide slope\n", + "\n", + "b = 3.0 # base width\n", + "\n", + "y = 1.5 # depth\n", + "\n", + "S = 0.0009\n", + "\n", + "n = 0.012 # for concrete\n", + "\n", + "# Solution\n", + "\n", + "A = (b+z*y)*y\n", + "\n", + "P = P = b + 2*y*sqrt(1+z**2)\n", + "\n", + "R = A/P\n", + "\n", + "# from mannings eqquation\n", + "\n", + "Q = A*(1/n)*(R**(2/3)*S**(1/2))\n", + "\n", + "print \"Discharge for the channel =\",round(Q,2),\"m**3/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.4 Page no 373" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "depth(y) = 5.05 ft\n", + "base width(b) = 4.18 ft\n" + ] + } + ], + "source": [ + "# Determine cross sectional area\n", + "\n", + "from __future__ import division\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "z = 1\n", + "\n", + "Q = 10000/60 # discharge of water in ft**#/s\n", + "\n", + "# Solution\n", + "\n", + "y = (Q/(1.828*2.25*sqrt(0.5)))**(2/5)\n", + "\n", + "print \"depth(y) =\",round(y,2),\"ft\"\n", + "\n", + "b = 0.828*y\n", + "\n", + "print \"base width(b) =\",round(b,2),\"ft\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.5 Page no 378" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Critical depth = 3.44 m\n" + ] + } + ], + "source": [ + "# Calculate criticcal depth\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "y = 2.5 # depth\n", + "\n", + "V = 8 # velocity in m/s\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "Yc = (20**2/g)**(1/3)\n", + "\n", + "print \"Critical depth =\",round(Yc,2),\"m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.6 Page no 380" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a )Normal Depth = 2.22 m\n", + "b )F = 0.31 Since the Froude number is less than 1, the flow is subcritical\n", + "c )Critical depth is = 1.08 m\n" + ] + } + ], + "source": [ + "# determine normal depth, flow regine, critical depth\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "Q = 15 # flow rate in m**3/s\n", + "\n", + "w = 4.0 # bottom width\n", + "\n", + "S = 0.0008 # bed slope\n", + "\n", + "n = 0.025 # manning constant\n", + "\n", + "z = 0.5 # slope\n", + "\n", + "# Solution\n", + "\n", + "# We use a trial and error method here to find the value of y i.e. normal depth\n", + "\n", + "y = 2.22 # we take the value of y as 2.2 m\n", + "\n", + "Q = ((4+0.5*y)*(y/(n))*(((4+0.5*y)*y)/(4+2.236*y))**(0.667)*(S)**(0.5))\n", + "\n", + "print \"a )Normal Depth =\",round(y,2),\"m\"\n", + "\n", + "A = (4+0.5*y)*y\n", + "\n", + "T = (w+2*z*y)\n", + "\n", + "D = A/T\n", + "\n", + "V = (Q/A)\n", + "\n", + "F =V/(sqrt(9.81*D)) \n", + "\n", + "print \"b )F = \",round(F,2),\" Since the Froude number is less than 1, the flow is subcritical\"\n", + "\n", + "# we use trail and error to find the value of yc for critical depth\n", + "\n", + "yc = 1.08\n", + "\n", + "Q1 = (4+z*yc)*yc*sqrt((9.81*(4+0.5*yc)*yc)/(4+2*z*yc)) \n", + "\n", + "print \"c )Critical depth is = \",round(yc,2),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.8 Page no 390" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Since F1 = 1.86 It is a weak jump\n", + "Length of the jump = 23.0 ft\n", + "Total energy loss = 133.7 HP\n" + ] + } + ], + "source": [ + "# Height, type and length of jump and loss of energy\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "b = 60 # base width in ft\n", + "\n", + "y1 = 2.5 # base depth in ft\n", + "\n", + "Q = 2500 # discharge in ft**3/s\n", + "\n", + "g = 32.2\n", + "\n", + "# Solution\n", + "\n", + "V1 = Q/(b*y1)\n", + "\n", + "F1 = V1/sqrt(g*y1)\n", + "\n", + "y2 = y1*0.5*(sqrt(1+8*F1**2)-1)\n", + "\n", + "V2 = Q/(b*y2)\n", + "\n", + "print \"Since F1 =\",round(F1,2),\" It is a weak jump\"\n", + "\n", + "L = y2*4.25\n", + "\n", + "print \"Length of the jump =\",round(L,0),\"ft\"\n", + "\n", + "E1 = y1+(V1**2/(2*g))\n", + "\n", + "E2 = y2+(V2**2/(2*g))\n", + "\n", + "El = E1-E2\n", + "\n", + "Te = El*62.4*Q/543\n", + "\n", + "print \"Total energy loss =\",round(Te,2),\"HP\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 10.12 Page no 409" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge = 503.0 cfs\n" + ] + } + ], + "source": [ + "# Determine flow rate\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 6 # depth of the channel\n", + "\n", + "w= 12 # width of the channel\n", + "\n", + "h = 1.0 # height of the channel\n", + "\n", + "p = 9 # pressure drop in m\n", + "\n", + "g = 32.2\n", + "\n", + "# Solution\n", + "\n", + "y2 = y1 - h - 0.75\n", + "\n", + "V1 = sqrt(2*g*0.75/((1.41)**2-1))\n", + "\n", + "Q = w*b*V1/10\n", + "\n", + "print \"Discharge =\",round(Q,0),\"cfs\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter11.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter11.ipynb new file mode 100755 index 00000000..3d434d74 --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter11.ipynb @@ -0,0 +1,333 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##Chapter 11: Compressible Flow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.1 Page no 420" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total change in enthalpy for 10 kg air = 180.0 kcal\n" + ] + } + ], + "source": [ + "# Example 11.1\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "T1 = 273 + 15 # temperature in K\n", + "\n", + "T2 = 273 + 90 # temperature in K\n", + "\n", + "Cp = 0.24 # cp for air in kcal/kgK\n", + "\n", + "# Solution\n", + "\n", + "dh = Cp*(T2-T1) # enthalpy per kg of air\n", + "\n", + "H = 10*dh # total enthallpy of 10 kg air\n", + "\n", + "print \"Total change in enthalpy for 10 kg air = \",round(H,0),\"kcal\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.2 Page no 420" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total change in enthalpy of 10 Kg of air = -0.255 kcal/K\n" + ] + } + ], + "source": [ + "# Example 11.2\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "T1 = 273 + 15 # temperature in K\n", + "\n", + "T2 = 273 + 90 # temperature in K\n", + "\n", + "P1 = 40 + 101.3 # pressure in abs\n", + "\n", + "P2 = 360 + 101.3 # presure in abs\n", + "\n", + "Cv = 0.171 # Specific volume Coefficient of air\n", + "\n", + "k = 1.4 # gas constant\n", + "\n", + "# solution\n", + "\n", + "dS = Cv*log((T2/T1)**k*(P2/P1)**(1-k))\n", + "\n", + "S = 10*dS\n", + "\n", + "print \"Total change in enthalpy of 10 Kg of air =\",round(S,3),\"kcal/K\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.3 Page no 421" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final temperature if air = 320.2 F\n", + "Total work done on 10 slugs = 330.0 Btu\n" + ] + } + ], + "source": [ + "# Example 11.3\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "\n", + "P1 = 10 # pressure in psia\n", + "\n", + "P2 = 30 # pressure in psia\n", + "\n", + "T1 = 460+110 # temperature in R\n", + "\n", + "k =1.4 # gas constant\n", + "\n", + "T2 = T1*(P2/P1)**((k-1)/k)\n", + "\n", + "t2 = T2-460 # final temperature of air\n", + "\n", + "print \"Final temperature if air = \",round(t2,1),\"F\"\n", + "\n", + "Cv = 0.157 # coefficient of air \n", + "\n", + "W = Cv*(T2-T1) # work done per unit mass of oxygen\n", + "\n", + "Tw = 10*W # total work done on 10 slugs\n", + "\n", + "print \"Total work done on 10 slugs = \",round(Tw,0),\"Btu\" \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.4 Page no 426" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Speed of sound in water = 1483.0 m/s\n", + "Speed of sound in ethly alcohol = 1238.0 m/s\n", + "Speed of sound in Air = 343.0 m/s\n" + ] + } + ], + "source": [ + "# Example 11.4\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "# for water\n", + "\n", + "S =1 # specific gravity\n", + "\n", + "rho = S*1000 # density in kg/m**3\n", + "\n", + "bta = 2.2*10**9 # Bulk modulus of elasticity\n", + "\n", + "# ethly alcohol\n", + "\n", + "S1 =0.79 # specific gravity\n", + "\n", + "rho2 = S1*1000 # density in kg/m**3\n", + "\n", + "bta2 = 1.21*10**9 # Bulk modulus of elasticity\n", + "\n", + "# for air\n", + "\n", + "k = 1.4 # gas constant for air\n", + "\n", + "R = 287 # universal gas constant\n", + "\n", + "T = 273+20 # temperature in K\n", + "\n", + "# Solution\n", + "\n", + "C1 = sqrt(bta/rho)\n", + "\n", + "C2 = sqrt(bta2/rho2)\n", + "\n", + "print \"Speed of sound in water =\",round(C1,0),\"m/s\"\n", + "\n", + "print \"Speed of sound in ethly alcohol =\",round(C2,0),\"m/s\"\n", + "\n", + "C3 = sqrt(k*R*T)\n", + "\n", + "print \"Speed of sound in Air =\",round(C3,0),\"m/s\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 11.5 Page no 431" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.753305702898\n", + "Pressure at downstream = 3.03 psia\n", + "Temperature at downstream = 157.3 F\n", + "Velocity downstream = 463.02 ft/s\n" + ] + } + ], + "source": [ + "# Example 11.5\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "P1 = 1.5 # pressure in psia\n", + "\n", + "T1 = 40 + 460 # temperature in R\n", + "\n", + "k = 1.4 # gas constant\n", + "\n", + "R = 1716 # universal gas constant in ft.lb/slug R\n", + "\n", + "V1 = 1500 # velocity in ft/s\n", + "\n", + "# Solution\n", + "\n", + "c1 = sqrt(k*R*T1)\n", + "\n", + "M1 = V1/c1\n", + "\n", + "M2 = sqrt((2+(k-1)*M1**2)/(2*k*M1**2-(k-1)))\n", + "print M2\n", + "\n", + "P2 = P1*((1+k*M1**2)/(1+k*M2**2))\n", + "\n", + "print \"Pressure at downstream = \",round(P2,2),\"psia\"\n", + "\n", + "T2 = T1*((1+0.5*(k-1)*M1**2)/(1+0.5*(k-1)*M2**2))\n", + "\n", + "t2 = T2-460\n", + "\n", + "print \"Temperature at downstream = \",round(t2,1),\"F\"\n", + "V2 = M2*sqrt(k*R*t2)\n", + "\n", + "print \"Velocity downstream = \",round(V2,2),\"ft/s\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter12.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter12.ipynb new file mode 100755 index 00000000..009a616c --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter12.ipynb @@ -0,0 +1,365 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 12: Turbomachines" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.1 Page no 443" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Efficiency of th pump = 74.0 %\n" + ] + } + ], + "source": [ + "# Example 12.1\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "Q = 0.25 # discharge from the pump in m**3/s\n", + "\n", + "gma= 0.8*9810 # specific weight in kg/m**3\n", + "\n", + "H=25 # elevation head in m\n", + "\n", + "T = 350 # Torque to drive the shaft in Nm\n", + "\n", + "N = 1800 # Speed in RPM\n", + "\n", + "w = 2*pi*N/60 # angular velocity\n", + "\n", + "# Solution\n", + "\n", + "Eff = gma*Q*H*100/(T*w) # efficiency\n", + "\n", + "print \"Efficiency of th pump =\",round(Eff,0),\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.2 Page no 447" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " (a)\n", + "Radial velocity at exit = 10.6 m/s\n", + "Whirl velocity = 25.3 m/s\n", + "Relative velocity = 12.25 m/s\n", + "Actual velocity = 27.43 m/s\n", + "(b)\n", + "Head added for no inlet whirl = 81.0 m\n", + "(c)\n", + "Power required = 317.8 kW\n" + ] + } + ], + "source": [ + "# Example 12.2\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 0.4 # diameter of the pump in m\n", + "\n", + "b = 0.03 # width in m\n", + "\n", + "theta = pi/3 # blade angle\n", + "\n", + "N = 1500 # speed in RPM\n", + "\n", + "Q = 0.4 # flow rate in m**3/s\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "w = 2*pi*N/60 # anggular velocity in rad/s\n", + "\n", + "u2 = (d/2)*w # blade velocity in m/s\n", + "\n", + "V2r = Q/(2*pi*(d/2)*b) # relative velocity in m/s\n", + "\n", + "print \"(a)\"\n", + "\n", + "print \"Radial velocity at exit =\",round(V2r,1),\"m/s\"\n", + "\n", + "V2t = u2 - V2r*(cos(theta)/sin(theta))\n", + "\n", + "print \"Whirl velocity = \",round(V2t,1),\"m/s\"\n", + "\n", + "v2 = V2r/sin(theta)\n", + "\n", + "print \"Relative velocity = \",round(v2,2),\"m/s\"\n", + "\n", + "V2 = sqrt(V2t**2+V2r**2)\n", + "\n", + "print \"Actual velocity =\",round(V2,2),\"m/s\"\n", + "\n", + "print \"(b)\"\n", + "\n", + "H = u2*V2t/g\n", + "\n", + "print\"Head added for no inlet whirl =\",round(H,0),\"m\"\n", + "\n", + "print \"(c)\"\n", + "\n", + "P = g*Q*H\n", + "\n", + "print \"Power required =\",round(P,1),\"kW\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.3 Page no 450" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Impeller size = 38.45 cm\n", + "Speed of the pump = 1500.0 RPM\n" + ] + } + ], + "source": [ + "# Example 12.3\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 0.36 # diameter of the impeller of pump\n", + "\n", + "N = 1500 # Speed of impeller in RPM\n", + "\n", + "# Solution\n", + "\n", + "# For best efficiency\n", + "\n", + "Q1 = 82 # discharge in l/s\n", + "\n", + "H1 = 17.5 # Head in m\n", + "\n", + "Eta = 0.8 # efficiency \n", + "\n", + "Q2 = 100 # discharge in l/s\n", + "\n", + "H2 = 20 # head in m\n", + "\n", + "# Solving the simulataneous equation we get\n", + "\n", + "D2 = 38.45\n", + "\n", + "print \"Impeller size =\",round(D2,2),\"cm\"\n", + "\n", + "N2 = 1500 \n", + "\n", + "print \"Speed of the pump =\",round(N2,0),\"RPM\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.4 Page no 454 " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge, Q = 1.11 ft**3/s\n", + "Dynamic head of the pump, H = 122.1 m\n", + "Specific speed of the pump, Ns = 1096.0 RPM\n" + ] + } + ], + "source": [ + "# Example 12.4\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "q = 500 # discharge in cgm\n", + "\n", + "Q = 500/449 # discharge in ft**3/s\n", + "\n", + "D = 0.667 # diameter in ft\n", + "\n", + "A = pi*D**2/4\n", + "\n", + "V = Q/A # velocity in ft/s\n", + "\n", + "g = 32.2 # acceleration due to gravity in ft/s**2\n", + "\n", + "N = 1800 # speed in RPM\n", + "\n", + "# Solution\n", + "\n", + "# for water at 65 deg C\n", + "\n", + "nu = 1.134*10**-5 # viscosity in ft**2/s\n", + "\n", + "e = 0.00085 # epssilon in ft\n", + "\n", + "r = 0.001275 \n", + "\n", + "R = V*D/nu # reynolds no\n", + "\n", + "f = 0.022 # from moody's diagram\n", + "\n", + "Hl = V**2*(12.1+(f*224.9))/64.4\n", + "\n", + "hs = 119.4 + Hl\n", + "\n", + "print \"Discharge, Q = \",round(Q,2),\"ft**3/s\"\n", + "print \"Dynamic head of the pump, H =\",round(hs,1),\"m\"\n", + "\n", + "Ns = N*sqrt(q)/(hs)**(3/4)\n", + "\n", + "print \"Specific speed of the pump, Ns =\",round(Ns,0),\"RPM\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 12.5 Page no 457" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Minimum value of static suction lift = 4.02 m\n" + ] + } + ], + "source": [ + "# Example 12.5 \n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "H = 60 # height in m\n", + "\n", + "Pb = 98*10**3 # barometric pressure in N/m**2\n", + "\n", + "Hl = 1 # head in m\n", + "\n", + "Pv = 1707 # vapour pressure \n", + "\n", + "sigma = 0.08\n", + "\n", + "w = 9810 # specific weight\n", + "\n", + "# Solution\n", + "\n", + "Npsh_m = sigma*60 # minimum NPSH\n", + "\n", + "Hsm = (Pb/w)-(Pv/w)-Npsh_m-Hl\n", + "\n", + "print \"Minimum value of static suction lift = \",round(Hsm,2),\"m\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter2.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter2.ipynb new file mode 100755 index 00000000..e25d6ea0 --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter2.ipynb @@ -0,0 +1,970 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 : Fluid Statics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 Page no 44" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the pascal's law a weight of 1000N can be lifted by applying a force only of 10.0 N\n" + ] + } + ], + "source": [ + "# Force applied on the piston\n", + "\n", + "from math import *\n", + "\n", + "# Given \n", + "\n", + "d = 10 # diameter of hydraulic press in meters\n", + "\n", + "d1 = 1 # diameter of piston in meters\n", + "\n", + "W = 1000 # weight in Newtons\n", + "\n", + "Ap = math.pi*d1**2/4 # Area of piston in m**2\n", + "\n", + "Ar = math.pi*d**2/4 # Area of rram in m**2\n", + "\n", + "# Solution \n", + "\n", + "p = W/Ar # pressure to be supplied by the oil in N/cm**2\n", + "\n", + "F = p*Ap # Force applied on the piston\n", + "\n", + "print \"Using the pascal's law a weight of 1000N can be lifted by applying a force only of \",round(F,1),\"N\"\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.2 Page no 53" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pressure = 10070.0 kN/m**2\n" + ] + } + ], + "source": [ + "# Pressure in kN/m**2\n", + "\n", + "# Given\n", + "\n", + "h = 1 # ocean depth below the surface in km\n", + "\n", + "gma = 10070 # Specific weight of sea water\n", + "\n", + "# Solution\n", + "\n", + "P =gma*h # Pressure in kN/m**2\n", + "\n", + "print \"Pressure = \",round(P),\"kN/m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.3 Page no 53" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pressure at the bottom of the tank is 176.3 kN/m**3" + ] + } + ], + "source": [ + "# Pressure at the bottom of the tank\n", + "\n", + "# Given\n", + "\n", + "p1 = 150*10**3 # Pressure at point 1 in kN/m**2\n", + "\n", + "Sg = 0.85 # Specific gravity of oil\n", + "\n", + "h = 0.8 # height of oil 2 i tank in meters \n", + "\n", + "g = 9810 # specific gravity \n", + "\n", + "h1 = 2.0 # height of oil 3 in tank\n", + "\n", + "# Solution \n", + "\n", + "p2 = (p1 + Sg*h*g)\n", + "\n", + "p3 = (p2 + g*h1)/1000\n", + "\n", + "print \"Pressure at the bottom of the tank is\",round(p3,1),\"kN/m**3\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.4 Page no 54" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Height of the mountain is 2208.0 m\n" + ] + } + ], + "source": [ + "# Height of the mountain\n", + "\n", + "# Given\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "Po = 570 # mercury barometer reading in mm\n", + "\n", + "T = 273 -5 # temperature in K\n", + "\n", + "p = 750 # mercury barometer reading in mm\n", + "\n", + "n = 1.2345 # for polytropic atmosphere\n", + "\n", + "R =287 # univerasl gas constant in J/Kg-K\n", + "\n", + "g = 9.81 \n", + "\n", + "r = p/Po\n", + "\n", + "# Solution\n", + "\n", + "y = -(R*T/(g*0.19))*(1 - (r)**((n-1)/n))\n", + "\n", + "print \"Height of the mountain is\",round(y,0),\"m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.5 Page no 57" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pressure in the pipe = 9.074 kPa\n" + ] + } + ], + "source": [ + "# Pressure in the pipe\n", + "\n", + "# Given\n", + "\n", + "h1 = 500 # height in mm\n", + "\n", + "h2 = 950 # height in mm\n", + "\n", + "S1 = 1 # specific gravity fo water\n", + "\n", + "S2 = 1.5 # specific gravity of liquid 2\n", + "\n", + "w = 9810 # specific weight of water\n", + "\n", + "# Solution\n", + "\n", + "ha = ((h2*S2)-(h1*S1))/1000\n", + "\n", + "Pa = w*ha/1000 # Pressure in kPa\n", + "\n", + "print \"Pressure in the pipe = \",round(Pa,3),\"kPa\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.6 Page no 66" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Magnitude of the force required to open the gate = 21659.0 N\n" + ] + } + ], + "source": [ + "# Force required to open the gate\n", + "\n", + "# Given\n", + "\n", + "from __future__ import division\n", + "\n", + "from math import *\n", + "\n", + "d = 1 # diameter of the gate in m\n", + "\n", + "w = 9810 # specific weight in N/m**3\n", + "\n", + "A = pi*d**2/4 # area of the gate\n", + "\n", + "Ig = pi*d**4/64 # mamm moment of inertia\n", + "\n", + "theta = pi/2\n", + "\n", + "y1= 5+0.5\n", + "\n", + "# Solution\n", + "\n", + "F = w*round(A,3)*(y1) # the answer will come out to be different as they have used the value of Area as 0.78 \n", + "\n", + "# depth of the COP\n", + "\n", + "h1 = y1 + (Ig*math.sin(theta)*math.sin(theta)/(A*y1))\n", + "\n", + "# moment about hinge A\n", + "\n", + "F1 = (F*(h1 - 5))/d\n", + "\n", + "print \"Magnitude of the force required to open the gate = \",round(F1,0),\"N\" \n", + "#The area calculated in the book is 0.785 and that calculated from code is 0.78. \n", + "#This difference of 0.005 is causing the answer to change from the original\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.7 Page no 67" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Total force = 31.71 kN\n", + "(b) Position of center of pressure = 1.616 m\n" + ] + } + ], + "source": [ + "# total force ; position of the center of pressure \n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "l =2 # length of the plate in m\n", + "\n", + "b =1 # width of the plate\n", + "\n", + "theta = pi/3\n", + "\n", + "h = 0.75 # depth of the plate\n", + "\n", + "w = 9810 # specific weight of water\n", + "\n", + "# Solution\n", + "\n", + "A = 1*2\n", + "\n", + "y1 = h + 1*sin(theta)\n", + "\n", + "F = w*A*y1/1000\n", + "\n", + "print \"(a) Total force = \",round(F,2),\"kN\"\n", + "\n", + "Ig = (b*l**3)/12\n", + "\n", + "h1 = y1 + (Ig*sin(theta)*sin(theta)/(2*y1))\n", + "\n", + "print \"(b) Position of center of pressure = \",round(h1,3),\"m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.8 Page no 68" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total hydrostatic force = 40783.0 lbs\n", + "point of location on the center plate = 13.52 ft\n", + " OR point of location on the center plate from method 2 = 13.5 ft\n" + ] + } + ], + "source": [ + "# Hydrostatic force and point of location \n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "d = 6 # diameter of the gate in ft\n", + "\n", + "A =pi*d**2/4 # area of the gate\n", + "\n", + "p1 = 600 # pressure on top in psia\n", + "\n", + "y1 = 10 +2 + 3*sin(pi/6)\n", + "\n", + "F = 62.4*A*y1\n", + "\n", + "F1 = p1*A\n", + "\n", + "# Solution\n", + "\n", + "Tf = F+F1\n", + "\n", + "print \"Total hydrostatic force =\",round(Tf,0),\"lbs\"\n", + "\n", + "Ig = pi*d**4/64\n", + "\n", + "h1 = y1 + ((Ig*sin(pi/6)*sin(pi/6))/(A*y1))\n", + "\n", + "H = ((F*h1)+(F1*y1))/Tf\n", + "\n", + "print \"point of location on the center plate = \",round(H,2),\"ft\"\n", + "\n", + "# method 2\n", + "\n", + "Hf = p1/62.4 # equivalent fluid height\n", + "\n", + "y2 = Hf+y1\n", + "\n", + "Tf1 = 62.4*A*y2\n", + "\n", + "h2 = y2 + ((Ig*sin(pi/6)*sin(pi/6))/(A*y2))\n", + "\n", + "H1 = y2-Hf\n", + "\n", + "print \" OR point of location on the center plate from method 2 = \",round(H1,2),\"ft\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.10 Page no 74" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Horizontal component acting on the plate = 998.4 lbs\n", + "Vertical component acting on the plate = 1283.34 lbs\n", + "location of Xv = 1.82 ft\n" + ] + } + ], + "source": [ + "# Horizontal and Vertical components\n", + "\n", + "import math\n", + "\n", + "# Given\n", + "\n", + "R = 4 # radius of the gate in ft\n", + "\n", + "w = 1 # width of the gate in ft\n", + "\n", + "gma =62.4 # specific weight of water\n", + "\n", + "y1 = 4 # distance of center of the gate\n", + "\n", + "xv1 = 2 # distance in ft\n", + "\n", + "xv2 = 1.7 # distance in ft\n", + "\n", + "# Solution \n", + "\n", + "Fh = R*y1*gma\n", + "\n", + "Ig = w*R**3/12\n", + "\n", + "yh = y1 + (Ig/(R*y1))\n", + "\n", + "Fv1 = R*2*gma\n", + "\n", + "Fv2 = pi*R**2*gma/4\n", + "\n", + "Fv = Fv1 + Fv2\n", + "\n", + "Xv = (Fv1*xv1+Fv2*xv2)/(Fv)\n", + "\n", + "print \"Horizontal component acting on the plate = \",round(Fh,2),\"lbs\"\n", + "\n", + "print \"Vertical component acting on the plate = \",round(Fv,2),\"lbs\"\n", + "\n", + "print \"location of Xv =\",round(Xv,2),\"ft\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.11 Page no 77" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Horizontal component acting on the plate = 29923.0 lbs\n", + "(b) Vertical component acting on the plate = 30208.14 lbs\n", + "location of vertical component Xv = 1.99 ft from the left wall\n" + ] + } + ], + "source": [ + "# Vertical and Horizontal components\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "p = 50 # pressure in psia\n", + "\n", + "gma = 62.4 # specific weight in ft\n", + "\n", + "h1 = p*144/gma # equivalent height of water surface in ft\n", + "\n", + "R = 4 # radius of gate in ft\n", + "\n", + "w = 1 # width of the gate in ft\n", + "\n", + "A = R*w\n", + "\n", + "y1 = h1 + 2.5 + 2 # center of pressure\n", + "\n", + "xv1 = 2 # center of pressure1 for x direction force\n", + "\n", + "xv2 = 1.7 # center of pressure2 for x direction force\n", + "\n", + "# Solution\n", + "\n", + "Fh = gma*A*y1 # hiorizontal force\n", + "\n", + "Ig = 5.33 # moment of inertia\n", + "\n", + "yh = y1 + (Ig/(A*y1)) # location of horizontal component\n", + "\n", + "y2 = h1+2.5\n", + "\n", + "Fv1 = gma*(R*y2) # vertical force component 1\n", + "\n", + "Fv2 = gma*(pi*R**2/4) # vrtical force component 2\n", + "\n", + "Fv = Fv1 + Fv2 # vertical force component\n", + "\n", + "Xv = (Fv1*xv1+Fv2*xv2)/(Fv)\n", + "\n", + "print \"(a) Horizontal component acting on the plate = \",round(Fh,0),\"lbs\" # The answer for horizontal force in the book is wrong\n", + "\n", + "print \"(b) Vertical component acting on the plate = \",round(Fv,2),\"lbs\"\n", + "\n", + "print \"location of vertical component Xv =\",round(Xv,2),\"ft from the left wall\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.13 Page no 84" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Depth to which water would rise = 0.25 m\n" + ] + } + ], + "source": [ + "# Depth to which water would rise\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "l = 3 # length in m\n", + "\n", + "b = 4 # breadth in m\n", + "\n", + "h = 15 # height in m\n", + "\n", + "S = 0.9 # specific gravity of barge\n", + "\n", + "Sw = 1.09 # specific gravity of water\n", + "\n", + "Wd = 150*10**3 # addditional weight in kN\n", + "\n", + "V = l*b*h # volume in m**3\n", + "\n", + "Wb = gma*S*V # weight of barge\n", + "\n", + "Tw = Wb + Wd # total weight in kN\n", + "\n", + "gma = 9810 # specific density \n", + "\n", + "# Solution\n", + "\n", + "Fb = Tw # since barge is floating\n", + "\n", + "V1 = Fb/((gma/1000)*Sw) # volume in m**3\n", + "\n", + "\n", + "d = (V1/(h*b))/1000\n", + "\n", + "print \"Depth to which water would rise = \",round(d,2),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.14 Page no 85 " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X = 3.12 cm\n", + "Y = 3.25 cm\n", + "The bottom of the solid cylinder will be 4.88 cm above the bottom\n" + ] + } + ], + "source": [ + "# Level at which cylinder will float\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "import numpy as np\n", + "\n", + "# Given\n", + "\n", + "W = 0.4 * 9.81 # weight of the solid cylinder in N\n", + "\n", + "# Solution\n", + "\n", + "A = np.array([(1,-0.96),(1,1)])\n", + "\n", + "b = np.array([0,6.37])\n", + "\n", + "x = np.linalg.solve(A,b)\n", + "\n", + "X = x[0]\n", + "\n", + "Y = x[1]\n", + "\n", + "print \"X = \",round(X,2),\"cm\"\n", + "\n", + "print \"Y = \",round(Y,2),\"cm\"\n", + "\n", + "b = 8 -x[0]\n", + "\n", + "print \"The bottom of the solid cylinder will be \",round(b,2),\"cm above the bottom\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.15 Page no 86" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weight of the pan = 37.7 N\n", + "Magnitude of right momentum = 123.4 N.cm\n" + ] + } + ], + "source": [ + "# Weight of the pan and the magnitude of righting moment\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "l =100 # length of the pan in cm\n", + "\n", + "w = 20 # width of the pan in cm\n", + "\n", + "d = 4 # depth of the pan in cm\n", + "\n", + "L = 1.5 # load in N/m\n", + "\n", + "gma = 9810 # sepcific weight\n", + "\n", + "# Solution\n", + "\n", + "Fb = gma*(d*w*l/(2*l**3)) # weight on the pan\n", + "\n", + "W = Fb-L # weight of the pan\n", + "\n", + "X1 = w/3\n", + "\n", + "X2 = w/2\n", + "\n", + "theta = math.atan(d/w)*180/pi\n", + "\n", + "x = ((X2-X1)*cos(theta*pi/180))\n", + "\n", + "# momentum equation \n", + "\n", + "M = W*x\n", + "\n", + "print \"Weight of the pan =\",round(W,1),\"N\"\n", + "print \"Magnitude of right momentum = \",round(M,1),\"N.cm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example no 2.16 Page no 90" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Metacentric height = 0.347 m\n", + "(b) Righting moment = 63.1 kN.m\n" + ] + } + ], + "source": [ + "# Metacentric height and rightning moment \n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Continued from example 2.15\n", + "\n", + "# Given\n", + "\n", + "Io = 15*4**3/12 # moment of inertia in m**4\n", + "\n", + "V = 15*4*2.71 # Volume in m**3\n", + "\n", + "Gb = ((3/2)-(2.71/2)) \n", + "\n", + "W = 1739.2 # weight of the barge from the previous example in kN\n", + "# Solution\n", + "\n", + "Mg = (Io/V)-Gb # metacentric height in m\n", + "\n", + "print \"(a) Metacentric height = \", round(Mg,3),\"m\"\n", + "\n", + "M = W*Mg*sin(pi*6/180)\n", + "\n", + "print \"(b) Righting moment =\",round(M,1),\"kN.m\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example no 2.17 Page no 92" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amximum pressure occurs at the bottom of the tank = 24768.9 N\n" + ] + } + ], + "source": [ + "# Maximum pressure in the tank\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "l=6 # length of the tank\n", + "\n", + "w =2 # width of the tank\n", + "\n", + "d = 3 # depth of the tank\n", + "\n", + "a = 3 # acceleration in m/s**2\n", + "\n", + "theta = pi/6\n", + "\n", + "W = 9810 # specific weight\n", + "\n", + "X = 0\n", + "\n", + "po=0 # pressure at the origin\n", + "\n", + "# Solution\n", + "\n", + "A = np.array([(1,-1),(1,1)])\n", + "\n", + "b = np.array([-1.38,3.0])\n", + "\n", + "x = np.linalg.solve(A,b)\n", + "\n", + "Y1 = x[0]\n", + "\n", + "Y2 = x[1]\n", + "\n", + "# AMximum pressure at the bottom of the tank\n", + "\n", + "P = po - W*(2.61*X/9.81) - W*(1+(1.5/9.81))*(-Y2)\n", + "\n", + "print\"Amximum pressure occurs at the bottom of the tank =\",round(P,3),\"N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2.18 Page no 98" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Height of paraboliod revolution of base = 1.48 ft\n", + "(b) Maximum pressure corresponding to maximum height = 92.3 lbs/ft**2\n", + "(c) Pressure = 26.4 lbs/ft**2\n" + ] + } + ], + "source": [ + "# Height of the paraboloid revolution; maxm=imum pressure and location ; pressure at the point 0.2 from the center\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 1 # diamter of the jar in ft\n", + "\n", + "h =2 # height of the jar in ft\n", + "\n", + "H = 1 # height of water in the jar in ft\n", + "\n", + "N = 150 # RPM\n", + "\n", + "g = 32.2 # acceleration due to gravity in ft/s**2\n", + "\n", + "# Solution\n", + "\n", + "w = 2*pi*N/60\n", + "\n", + "ho = H+((w**2*(d/2)**2)/(4*g))\n", + "print \"(a) Height of paraboliod revolution of base = \", round(ho,2),\"ft\"\n", + "\n", + "Pmax = 62.4*ho\n", + "\n", + "print \"(b) Maximum pressure corresponding to maximum height = \",round(Pmax,1),\"lbs/ft**2\"\n", + "\n", + "z = H - ((w**2*(d/2)**2)/(4*g))\n", + "\n", + "r = 0.2 # distance from center\n", + "\n", + "y = -(0.52-0.25)\n", + "\n", + "P = po + (62.4*w**2*r**2/(2*g))-(62.4*y)\n", + "\n", + "print \"(c) Pressure =\",round(P,1),\"lbs/ft**2\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter3.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter3.ipynb new file mode 100755 index 00000000..fa74673c --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter3.ipynb @@ -0,0 +1,541 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 3: Fluid Kinematics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.1 Page no 117" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) u = 4*X; v = -4*Y \n", + "(b) u= 4.0 m/s and v= -8.0 m/s\n", + "(c) Magnitude of velocity = 8.94 m/s and angle of resultant velocity = -63.4 deg\n" + ] + } + ], + "source": [ + "# Dimension of flow field ; velocity components at (1,2) ; magnitude and direction of velocity \n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "# V = 4*Xi-4Yj\n", + "\n", + "x=1 # x co-ordinate\n", + "\n", + "y=2 # y co-ordinate\n", + "\n", + "# Solution\n", + "\n", + "print \"(a) u = 4*X; v = -4*Y \"\n", + "\n", + "u = 4*x\n", + "\n", + "v=- 4*y\n", + "\n", + "print \"(b) u=\",round(u,0),\"m/s and v=\",round(v,0),\"m/s\"\n", + "\n", + "R =sqrt(u**2+v**2)\n", + "\n", + "ang = atan(v/u)*180/pi\n", + "\n", + "print \"(c) Magnitude of velocity =\",round(R,2),\"m/s and angle of resultant velocity = \",round(ang,1),\"deg\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.2 Page no 119" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Discharge = 1.06 m**3/s\n", + "(b) Mass flow rate = 1057.21 kg/s\n" + ] + } + ], + "source": [ + "# Discharge and mass flow rate\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 0.3 # diameter of pipe in m\n", + "\n", + "v = 15 # velocity in m/s\n", + "\n", + "rho = 997.1 # density in kg/m**3\n", + "\n", + "A = pi*d**2/4\n", + "\n", + "# Solution\n", + "\n", + "Q=A*v\n", + "\n", + "print \"(a) Discharge =\",round(Q,2),\"m**3/s\"\n", + "\n", + "mdot = rho*Q\n", + "\n", + "print \"(b) Mass flow rate = \",round(mdot,2),\"kg/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.3 Page no 120 " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean velocity of the flow = 5.0 m/s\n" + ] + } + ], + "source": [ + "# Mean Velocity\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "from scipy import integrate\n", + "\n", + "# Given\n", + "\n", + "Vo = 10 # velocity in m/s\n", + "\n", + "r1 = 0\n", + "\n", + "ro = 0.1 # radius in m\n", + "\n", + "N = 1\n", + "\n", + "# Solution\n", + "\n", + "R = lambda r: (10*r-1000*r**3)\n", + "\n", + "R1,err=integrate.quad(R,r1,ro)\n", + "\n", + "Q = R1*2*pi\n", + "\n", + "A = pi*(0.1)**2\n", + "\n", + "V = Q/A\n", + "\n", + "print \"Mean velocity of the flow =\",round(V,0),\"m/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.4 Page no 126" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2*x - 2*y**2\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x2e9ee90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Sketch the stream lines in the first quadrant\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from math import *\n", + "\n", + "from scipy import integrate\n", + "\n", + "import numpy as np\n", + "\n", + "from sympy import *\n", + "\n", + "#init_printing(use_unicode=False, warp_line=False, no_global=True)\n", + "\n", + "# Given\n", + "\n", + "# V = 4*y(m)i+2(m)j\n", + "\n", + "x = Symbol('x')\n", + "U = integrate(2,x)\n", + "\n", + "#print u\n", + "\n", + "y = Symbol('y')\n", + "\n", + "V = integrate(-4*y,y)\n", + "\n", + "#print V\n", + "\n", + "Zhi = U + V\n", + "\n", + "print Zhi # for x and y =0 we get C = 0\n", + "\n", + "X = [5,6,7,8,9,10,11,12,13,14,15,16,17]\n", + "Y = [0,1.414,2,2.449,2.828,3.16,3.46,3.741,4,4.242,4.472,4.69,4.898]\n", + "\n", + "b1=plt.plot(X,Y)\n", + "\n", + "\n", + "X1 = [2.5,3,4,5,6,7,8,9,10,11,12,13,14,15]\n", + "Y1 = [0,1,1.732,2.23,2.645,3,3.31,3.60,3.87,4.123,4.35889,4.5825,4.795,5]\n", + "\n", + "b2=plt.plot(X1,Y1)\n", + "\n", + "\n", + "X2 = [0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5]\n", + "Y2 = [0,1.414,2,2.449,2.828,3.162,3.462,3.741,4,4.242,4.472,4.69,4.898,5.099,5.29,5.4772]\n", + "\n", + "b3=plt.plot(X2,Y2)\n", + "\n", + "plt.xlabel(\"x\")\n", + "\n", + "plt.ylabel(\"y\")\n", + "\n", + "plt.title(\"Streamline plot\")\n", + "\n", + "plt.legend([\"zhi=10\",\"zhi=5\",\"zhi=1\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.5 PAge no 127" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resutant velocity magnitude = 17.89 m/s\n", + "Angle = 63.4 deg with the X-axis in the 4th quadrant\n" + ] + } + ], + "source": [ + "# magnitude and direction of flow field\n", + "\n", + "from math import *\n", + "\n", + "from sympy import *\n", + "\n", + "import numpy as np\n", + "\n", + "# Given\n", + "\n", + "x = 2 # X co-ordinate\n", + "\n", + "Y = 4 # Y co-ordiante\n", + "\n", + "# Solution\n", + "y = Symbol('y')\n", + "\n", + "zhi = 4*x*y\n", + "\n", + "zhiprime = zhi.diff(y)\n", + "\n", + "u = zhiprime\n", + "\n", + "x = Symbol('x')\n", + "\n", + "zhi = 4*x*Y\n", + "\n", + "zhiprime = zhi.diff(x)\n", + "\n", + "v = zhiprime\n", + "\n", + "R=sqrt(u**2+v**2)\n", + "\n", + "theta = atan(v/u)*180/pi\n", + "\n", + "print \"Resutant velocity magnitude = \",round(R,2),\"m/s\"\n", + "\n", + "print \"Angle =\",round(theta,1),\"deg with the X-axis in the 4th quadrant\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.6 Page no 130" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Velocity = 5.1 m/s\n", + "(b) Convective acceleration = 0.46 m**2/s\n" + ] + } + ], + "source": [ + "# Determine velocity ; convective accleration\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "from sympy import *\n", + "\n", + "import numpy as np\n", + "\n", + "from scipy import integrate\n", + "\n", + "# Given\n", + "\n", + "d1 = 0.09 # diameter in cm\n", + "\n", + "d2 = 0.025 # diameter in cm\n", + "\n", + "rho = 1000 # density in kg/m**3\n", + "\n", + "mdot = 25 # mass flow rate in kg/s\n", + "\n", + "# Solution\n", + "\n", + "x = Symbol('x')\n", + "\n", + "A1 = pi*d1**2/4\n", + "\n", + "A2 = pi*d2**2/4\n", + "\n", + "AA = A1 - ((A1-A2)/40)*10 # from figure\n", + "\n", + "V = mdot/(rho*AA)\n", + "\n", + "print \"(a) Velocity =\",round(V,1),\"m/s\"\n", + "\n", + "AX = (A1 - ((A1-AA)/40)*x)\n", + "\n", + "v = 25*10**4/(rho*AX)\n", + "\n", + "vprime = v.diff(x)\n", + "\n", + "V1 = vprime\n", + "\n", + "# at x = 0.1 m we get dv/dx = 0..09\n", + "\n", + "VPrime = 0.09\n", + "\n", + "Acx = V*VPrime\n", + "\n", + "print \"(b) Convective acceleration =\",round(Acx,3),\"m**2/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.8 Page no 143 " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "z = -25.0\n", + "Hence the flow is rotational\n" + ] + } + ], + "source": [ + "# Is the flow irrotational\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "# w = (16y-12x)i +(12y-9x)j\n", + "\n", + "# Solution\n", + "\n", + "y = Symbol('y')\n", + "\n", + "U = 16*y-12*x\n", + "\n", + "zhiprime = U.diff(y)\n", + "\n", + "u = zhiprime\n", + "\n", + "\n", + "x = Symbol('x')\n", + "\n", + "V = 12*y-9*x\n", + "\n", + "zhiprime1 = V.diff(x)\n", + "\n", + "v = zhiprime1\n", + "\n", + "#Vx = -9 # differentiate V wrt x\n", + "\n", + "#Vx = -9 # differentiate V wrt x\n", + "#Uy = 16 # differentiate U wrt y\n", + "\n", + "z = v-u\n", + "\n", + "print \"z = \",round(z,0)\n", + "\n", + "print \"Hence the flow is rotational\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3.10 Page no 148" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Velocity at the larger cross section = 3.33 m/s\n" + ] + } + ], + "source": [ + "# Velocity in larger section\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "d1 = 0.1 # diameter in m\n", + "\n", + "d2 = 0.3 # diameter in m\n", + "\n", + "V1 = 30 # velocity in m/s\n", + "\n", + "# Solution\n", + "\n", + "V2 = (d1**2/d2**2)*V1\n", + "\n", + "print \"Velocity at the larger cross section = \",round(V2,2),\"m/s\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter4.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter4.ipynb new file mode 100755 index 00000000..5a1c879b --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter4.ipynb @@ -0,0 +1,558 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 4 : Fluid Dynamics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.1 Page no 159" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in pressure in section 1 and 2 = 1157.0 kN/m**2\n" + ] + } + ], + "source": [ + "# Difference in pressure at top and bottom\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d1 = 0.1 # diameter in m\n", + "\n", + "d2 = 0.05 # diameter in m\n", + "\n", + "Q = 0.1 # discharge in m**3/s\n", + "\n", + "A1 = pi*d1**2/4\n", + "\n", + "A2 = pi*d2**2/4\n", + "\n", + "gma =9810 # specific weight\n", + "\n", + "z= 6 # difference in the height\n", + "\n", + "g = 9.81\n", + "\n", + "# Solution\n", + "\n", + "V1 = Q/A1 # velocity at section 1\n", + "\n", + "V2 = Q/A2 # velocity at section 2\n", + "\n", + "dP = gma*((V2**2/(2*g))-(V1**2/(2*g))-z)/1000\n", + "\n", + "print \"Difference in pressure in section 1 and 2 = \",round(dP,1),\"kN/m**2\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.2 Page no 160" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Actual discharge = 2.0 l/s\n" + ] + } + ], + "source": [ + "# Actual discharge\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 2.5 # diameter in cm\n", + "\n", + "h =200 # head in cm\n", + "\n", + "Cd = 0.65 # coefficient of discharge\n", + "\n", + "A =pi*d**2/4\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2 \n", + "\n", + "# Solution\n", + "\n", + "Q = Cd*A*sqrt(2*g*h)/100\n", + "\n", + "print \"Actual discharge =\",round(Q,2),\"l/s\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.3 Page no 162" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge through the orifice = 2.69 m**3/s\n" + ] + } + ], + "source": [ + "# Discharge through the orifice\n", + "\n", + "from __future__ import division\n", + "\n", + "from math import *\n", + "\n", + "from scipy import integrate\n", + "\n", + "import numpy as np\n", + "\n", + "# Given\n", + "\n", + "H1 = 3 # height in m\n", + "\n", + "H2 = 4 # height in m\n", + "\n", + "b = 0.5 # width in m\n", + "\n", + "Cd = 0.65 # co-efficient of discharge \n", + "\n", + "g = 9.81 # acceleration due to grvity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "q = lambda h: h**(1/2)\n", + " \n", + "Q,err = integrate.quad(q, H1, H2)\n", + "\n", + "Qt = Cd*b*sqrt(2*g)*Q\n", + "\n", + "print \"Discharge through the orifice =\",round(Qt,2),\"m**3/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.4 Page no 163" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Discharge = 1.95 m**3/s\n" + ] + } + ], + "source": [ + "# discharge through orifice\n", + " \n", + "from math import *\n", + "\n", + "from scipy import integrate\n", + "\n", + "from __future__ import division\n", + "\n", + "import numpy as np\n", + "\n", + "# Given\n", + "\n", + "b = 1 # bredth of the tank\n", + "\n", + "d = 0.5 # depth of the tank\n", + "\n", + "h1 = 0.2 # height of the orifice in m\n", + "\n", + "Cd = 0.6 # coefficient of discharge\n", + "\n", + "H1 = 2 # height in m\n", + "\n", + "H2 = 2+h1 # height in m\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "A = 1*0.3 # area of submerged section in m**2\n", + "\n", + "# Solution\n", + "\n", + "q = lambda h: h**(1/2)\n", + " \n", + "Q,err = integrate.quad(q, H1, H2)\n", + "\n", + "Q1 = Cd*b*sqrt(2*g)*(Q) # Flow through area 1\n", + "\n", + "Q2 = Cd*sqrt(2*g*H2)*A\n", + "\n", + "Td = Q1+Q2\n", + "\n", + "print \"Total Discharge =\",round(Td,2),\"m**3/s\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.5 Page no 165" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Actual discharge = 0.000454 m**3/s\n" + ] + } + ], + "source": [ + "# Determine flow rate of water\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d1 = 2 # radius of pipe\n", + "\n", + "d2 = 1 # radius of throat\n", + "\n", + "D1 = 40\n", + "\n", + "D2 = 20\n", + "\n", + "A1 = pi*D1**2/4\n", + "\n", + "A2 = pi*D2**2/4\n", + "\n", + "Cd = 0.95\n", + "\n", + "# Solution\n", + "\n", + "V2 = sqrt(21582/0.9375)\n", + "\n", + "Q = 1.52*pi*(d1/100)**2/4\n", + "\n", + "Qa = Q*Cd\n", + "\n", + "print \"Actual discharge =\",round(Qa,6),\"m**3/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.6 Page no 166" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "velocity at the dept of 1 ft = 5.67 ft/s\n" + ] + } + ], + "source": [ + "# Velocity of stream point at the point of insertion\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "dx = 0.5 # in ft\n", + "\n", + "K = 1 # constant\n", + "\n", + "g = 32.2 # acceleration due to gravity in ft/s**2\n", + "\n", + "# solution\n", + "\n", + "V = sqrt(2*g*dx)\n", + "\n", + "print \"velocity at the dept of 1 ft =\",round(V,2),\"ft/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example no 4.7 Page no 172" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge throught the system = 190.0 l/s\n" + ] + } + ], + "source": [ + "# Discharge throught the system\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "gma= 0.8 # specific weight\n", + "\n", + "V2 = 40 # velocity in m/s\n", + "\n", + "z1 =25 # height at point 1\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "d = 15 # diameter of the nozzle in cm\n", + "\n", + "# Solution\n", + "\n", + "V2 = sqrt(2*g*z1/4.25)\n", + "\n", + "A = pi*(d/100)**2/4\n", + "\n", + "Q = A*V2*1000\n", + "\n", + "print \"Discharge throught the system =\",round(Q,0),\"l/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.8 Page no 174" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Power input = 32.5 kW\n" + ] + } + ], + "source": [ + "# Power input to the pump\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "\n", + "# Given\n", + "\n", + "Eff = 0.8 # pump efficiency\n", + "\n", + "Hl = 30 # head loss in m\n", + "\n", + "D1 =6 # diameter in cm\n", + "\n", + "D2 = 2 # diameter in cm\n", + "\n", + "gma = 9810 # specific weight in N/m**3\n", + "\n", + "V2 = 40 # velocity in m/s\n", + "\n", + "P1 = -50 # pressure at point 1 in N/m**2\n", + "\n", + "z2 = 100 # height at point 2\n", + "\n", + "g = 9.8 # acceleration due to gravity in m/s**2\n", + "\n", + "z1 = 30 # height in m\n", + "\n", + "# Solution\n", + "\n", + "V1=(2/6)**2*V2\n", + "\n", + "Q = (pi*6**2/4)*V1*10**-4\n", + "\n", + "Hs = z2 + (V2**2/(2*g)) + z1 + (50/gma) -(V1**2/(2*g))\n", + "\n", + "P = gma*Q*Hs\n", + "\n", + "Pi = (P/Eff)/1000\n", + "\n", + "print \"Power input = \",round(Pi,1),\"kW\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4.9 Page no 176" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Elevation at height A = 492.39 m\n", + "Elevation at height B = 576.23 m\n" + ] + } + ], + "source": [ + "# Pressure head at A and B\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "Q = 0.2 # discharge in m**3/s\n", + "\n", + "d1 = 0.25 # diameter of the pipe in m\n", + "\n", + "A = pi*d1**2/4 # area of the pipe\n", + "\n", + "za = 480 # height in m\n", + "\n", + "z1 = 500 # height in m\n", + "\n", + "z3 = 550 # elevation in m\n", + "\n", + "gma =9810 # specific weight in N/m**2\n", + "\n", + "g =9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "V=Q/A # Velocity of in m/s\n", + "\n", + "Hl1 = (0.02*100*V**2/(0.25*2*9.81))\n", + "\n", + "# pressure head at A\n", + "\n", + "Pa =(z1-za-(V**2/(2*g))-Hl1)\n", + "\n", + "El = za+Pa\n", + "\n", + "print \"Elevation at height A =\",round(El,2),\"m\"\n", + "\n", + "# pressure head at B\n", + "\n", + "hs = z3 - z1 + (0.02*(500/0.25)*(V**2/(2*g))) \n", + "\n", + "El2 = El+hs\n", + "\n", + "print \"Elevation at height B =\",round(El2,2),\"m\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter5.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter5.ipynb new file mode 100755 index 00000000..f7f93457 --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter5.ipynb @@ -0,0 +1,578 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 5 : Fluid Momentum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.1 Page no 192" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultant force on the elbow = 9800.58 N\n", + "Angle of resultant force = 34.8516 deg\n" + ] + } + ], + "source": [ + "# Resultant force on the elbow\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "Q = 0.3 # Water flow rate in m**3/s\n", + "\n", + "d1 = 0.3 # diameter at inlet in meters\n", + "\n", + "A1 = pi*d1**2/4 # inlet area in m**2\n", + "\n", + "d2 = 0.15 # diameter at outlet in m\n", + "\n", + "A2 = pi*d2**2/4 # area at outlet in m**2\n", + "\n", + "P1 = 175*10**3 # inlet pressure in kN/m**2\n", + "\n", + "P2 = 160*10**3 # Pressure at outlet in kN/m**2\n", + "\n", + "F1 = P1*A1 # Force at inlet\n", + "\n", + "F2 = P2*A2 # Force at outlet\n", + "\n", + "rho = 1000 # density of water in kg/m**3\n", + "\n", + "V1 = Q/A1 # inlet velocity in m/s\n", + "\n", + "V2 = Q/A2 # Velocity at outlet in m/s\n", + "\n", + "theta = 45*pi/180 # angle in deg\n", + "\n", + "# Soultion\n", + "\n", + "# Applying the X momentum equation we get\n", + "\n", + "Rx = F1 - F2*cos(theta)-rho*Q*(V2*cos(theta)-V1)\n", + "\n", + "# Applying the Y momentum equation\n", + "\n", + "Ry = F2*sin(theta)+rho*Q*(V2*sin(theta)-0)\n", + "\n", + "R = sqrt(Rx**2+Ry**2)\n", + "\n", + "print \"Resultant force on the elbow = \",round(R,2),\"N\"\n", + "\n", + "a = atan(Ry/Rx)*180/pi\n", + "\n", + "print \"Angle of resultant force = \",round(a,4),\"deg\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.2 Page no 194" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultant force = 1232.0 lbs\n", + "Angle of resultant force = 59.2396 deg\n" + ] + } + ], + "source": [ + "# Force exerted by the jet on the vane\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "V1 = 80 # Velocity in ft/s\n", + "\n", + "A1 = 0.1 # area in ft**2\n", + "\n", + "g = 32.2 # Acceleration due to gravity in ft/s**2\n", + "\n", + "rho = 1.94 # density in lb/ft**3\n", + "\n", + "a = pi/3 # angle of pipe bend\n", + "\n", + "# Solution\n", + "\n", + "Q = A1*V1 # Total discharge in m**3\n", + "\n", + "# Applying bernoullis at point 1 and 2\n", + "\n", + "V2 = sqrt((2*g*V1**2/(2*32.2))-3*2*g)\n", + "\n", + "# Pressure at the end of the section are atmospheric and hence 0\n", + "\n", + "# momentum equation in X direction\n", + "\n", + "Rx = -(rho*Q*(V2*cos(a)-80))\n", + "\n", + "# momentum equation in Y direction\n", + "\n", + "Ry = (rho*Q*(V2*sin(a)-0))\n", + "\n", + "R = sqrt(Rx**2+Ry**2)\n", + "\n", + "print \"Resultant force = \",round(R,0),\"lbs\"\n", + "\n", + "ang = atan(Ry/Rx)*180/pi\n", + "\n", + "print \"Angle of resultant force = \",round(ang,4),\"deg\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example no 5.3 Page no 195 " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultant Force = 12489.0 N\n", + "Angle with horizontal = 69.2 deg with horizontal\n" + ] + } + ], + "source": [ + "# Force needed to hold the Y position \n", + "\n", + "# Given\n", + "\n", + "from __future__ import division\n", + "\n", + "from math import *\n", + "\n", + "Q1 = 0.5 # discharge from pipe 1 in m**3/s\n", + "\n", + "Q2 = 0.3 # discharge from pipe 2 in m**3/s\n", + "\n", + "Q3 = 0.2 # discharge from pipe 3 in m**3/s\n", + "\n", + "d1 = 0.45 # diameter of pipe 1 in m\n", + "\n", + "d2 = 0.3 # diameter of pipe 2 in m\n", + "\n", + "d3 = 0.15 # diameter of pipe 3 in m\n", + "\n", + "A1 = pi*d1**2/4 # area in m**2\n", + "\n", + "A2 = pi*d2**2/4 # area in m**2\n", + "\n", + "A3 = pi*d3**2/4 # area in m**2\n", + "\n", + "P1 = 60*10**3 # Pressure at point 1 in kPa\n", + "\n", + "gma = 9810\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "rho = 1000 # density in kg/m**3\n", + "\n", + "# Solution\n", + "\n", + "V1 = Q1/A1\n", + "\n", + "V2 = Q2/A2\n", + "\n", + "V3 = Q3/A3\n", + "\n", + "P2 = gma*((P1/gma) + V1**2/(2*g) - V2**2/(2*g))\n", + "\n", + "P3 = gma*((P1/gma) + V1**2/(2*g) - V3**2/(2*g))\n", + "\n", + "F1 = P1*A1\n", + "\n", + "F2 = P2*A2\n", + "\n", + "F3 = P3*A3\n", + "\n", + "Rx = rho*(Q2*V2*cos(pi/6)-Q3*V3*cos(pi/9)-0)+F3*cos(pi/9)-F2*cos(pi/6)\n", + "\n", + "Ry = rho*((Q2*V2*sin(pi/6)+Q3*V3*sin(pi/9)-Q1*V1))+F3*sin(pi/9)-F2*sin(pi/6)-F1\n", + "\n", + "R = sqrt(Rx**2+Ry**2)\n", + "\n", + "a = atan(Ry/Rx)*180/pi\n", + "\n", + "print \"Resultant Force = \",round(R,0),\"N\"\n", + "\n", + "print \"Angle with horizontal = \",round(a,1),\"deg with horizontal\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.4 Page no 199" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normal force on the plate = 423.0 lbs\n" + ] + } + ], + "source": [ + "# Normal force on the plate\n", + "\n", + "# Given\n", + "from math import *\n", + "\n", + "d = 2 # diameter in inches\n", + "\n", + "A = pi*d**2/(4*144) # Area of jet\n", + "\n", + "V = 100 # velocity of jet in ft/s\n", + "\n", + "Q = A*V # dischargge in ft**3/s\n", + "\n", + "gma = 62.4 # mass\n", + "\n", + "g = 32.2 # acceleration due to gravity in ft/s**2\n", + "\n", + "# Solution\n", + "\n", + "Rx = (gma*Q*V)/g # horizontal force required to keep plate in position\n", + "\n", + "print \"Normal force on the plate = \",round(Rx,0),\"lbs\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.5 Page no 202" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Force on the plate = 331.34 N\n", + "Work done per second = 3313.4 N.m/s\n", + "Efficiency = 44.4 %\n" + ] + } + ], + "source": [ + "# Force on the plate ; work doen per second; efficiency\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "D = 0.075 # diameter in m\n", + "\n", + "A =pi*D**2/4 # area of jet\n", + "\n", + "V =15 # velocity of jet in m/s\n", + "\n", + "w = 9810 # specific weight\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s^2\n", + "\n", + "# Solution\n", + "\n", + "Q =A*V # Discharge in m**3/s\n", + "\n", + "Vp = 10 # velocity of plate in m/s\n", + "\n", + "Rx = w*Q*(V-Vp)/g # force in X direction\n", + "\n", + "print \"Force on the plate = \",round(Rx,2),\"N\"\n", + "\n", + "W = Rx*Vp\n", + "\n", + "print \"Work done per second = \",round(W,1),\"N.m/s\"\n", + "\n", + "Eff = 2*(V-Vp)*Vp/V**2\n", + "\n", + "E = 100*Eff\n", + "\n", + "print \"Efficiency = \",round(E,1),\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.6 Page no 204" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Force exerted in X direction = 273.8 lbs\n", + "Force exerted in Y direction = 0.0 lbs\n" + ] + } + ], + "source": [ + "# Force exerted on the plate\n", + "\n", + "# Given\n", + "from math import *\n", + "\n", + "d = 3 # diameter in inches\n", + "\n", + "A = pi*d**2/(4*144) # Area of jet\n", + "\n", + "Q = 2 # discharge in ft**3/s\n", + "\n", + "rho = 1.94 # density in lbs/ft**3\n", + "\n", + "# Solution\n", + "\n", + "V = Q/A # velocity in ft/s\n", + "\n", + "alpha = pi/6 # inlet vane angle\n", + "\n", + "bta = pi/6 # outlet vane angle\n", + "\n", + "Rx = rho*Q*(V*cos(bta)+V*cos(alpha)) # force in X direction\n", + "\n", + "Ry = rho*Q*(V*sin(bta)-V*sin(alpha)) # force in Y direction\n", + "\n", + "print \"Force exerted in X direction = \",round(Rx,1),\"lbs\"\n", + "\n", + "print \"Force exerted in Y direction = \",round(Ry,1),\"lbs\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.7 Page no 207" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a ) Angle of blade top at inlet and Outlet, Phi = 4 deg\n", + "b ) Work done per N of fluid per second = 80.31 N.m\n", + "c ) Efficiency = 98.4 %\n" + ] + } + ], + "source": [ + "# Angle of blade tips at inlet and exit ; work done on the vane; efficiency of the vane\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "V1 =40 # velocity in m/s\n", + "\n", + "Vp = 20 # velocity of the plate in m/s\n", + "\n", + "alpha = pi/6 # inlet vane angle\n", + "\n", + "bta = pi/9 # outlet vane angle\n", + "\n", + "g = 9.81\n", + "\n", + "# Solution\n", + "\n", + "V1x = V1*cos(alpha)\n", + "\n", + "Vw1 = V1x;\n", + "\n", + "V1y = V1*sin(alpha)\n", + "\n", + "dV = V1x - Vp\n", + "\n", + "theta = atan(V1y/dV)*180/pi\n", + "\n", + "Vr1 = V1y/sin(theta*pi/180)\n", + "\n", + "Vr2 = Vr1\n", + "\n", + "# from trial and error we get the blade tip angle at inlet and outlet\n", + "\n", + "print \"a ) Angle of blade top at inlet and Outlet, Phi = 4 deg\"\n", + "\n", + "phi = 4*pi/180 \n", + "\n", + "V2 = Vr2*sin(phi)/sin(bta)\n", + "\n", + "V2w = V2*cos(bta)\n", + "\n", + "W = (V2w+V1x)*Vp/g\n", + "\n", + "print \"b ) Work done per N of fluid per second = \",round(W,2),\"N.m\"\n", + "\n", + "Eff = (1 - (V2/V1)**2)*100\n", + "\n", + "print \"c ) Efficiency = \",round(Eff,2),\"%\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5.8 Page no 211" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a - Thrust on the plane = 5372.2 lbs\n", + "b - Theoretical efficiency = 76.0 %\n", + "c - Theoretical horsepower required = 4560.0 hp\n", + "d - Pressure difference across blades = 190.0 lbs/ft**3\n" + ] + } + ], + "source": [ + "# Thrust on the plane; propeller efficiency ; theoretical horsepower ; pressure difference acros the blades\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "v = 220 # velocity in ft/s\n", + "\n", + "d = 6 # diameter of the propeller\n", + "\n", + "Q = 12000 # discharge in ft**3/s\n", + "\n", + "mf = 0.0022 # mass flow rate in slugs/ft**3\n", + "\n", + "# Solution\n", + "\n", + "V1 = v*5280/3600 # velocity in ft/s\n", + "\n", + "V = Q/(pi*d**2/4) # velocity in ft/s\n", + "\n", + "V4 = 2*V-V1\n", + "\n", + "F = mf*Q*(V4-V1) # thrust on the plane\n", + "\n", + "print \"a - Thrust on the plane = \",round(F,1),\"lbs\"\n", + "\n", + "Eff = V1/V # efficiency \n", + "\n", + "E = Eff*100\n", + "\n", + "print \"b - Theoretical efficiency = \",round(E,0),\"%\"\n", + "\n", + "Thp = F*V1/(500*Eff)\n", + "\n", + "print \"c - Theoretical horsepower required = \",round(Thp,0),\"hp\"\n", + "\n", + "dP = mf*(V4**2-V1**2)/2\n", + "\n", + "print \"d - Pressure difference across blades = \",round(dP,2),\"lbs/ft**3\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter6.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter6.ipynb new file mode 100755 index 00000000..3cff1efa --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter6.ipynb @@ -0,0 +1,144 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 6 : Dimensional Analysis and Dynamic Similitude" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 6.2 Page no 233" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hence the model should be tested at a velocity of 2.7 m/s. This velocity in the model is called corresponding velocity\n" + ] + } + ], + "source": [ + "# Velocity of the flow\n", + "\n", + "# Given\n", + "\n", + "L = 10 # length scale lp/l\n", + "\n", + "# crue oil at 20 deg C\n", + "\n", + "rhop = 0.86*998.2 # density inn kg/m**3\n", + "\n", + "mup = 8*10**-3 # viscosity in Ns/m**2\n", + "\n", + "Vp = 2.5 # Velocity in m/s\n", + "\n", + "# water at 20 deg C\n", + "\n", + "rhom = 998.2 # density in kg/m**3\n", + "\n", + "mum = 1.005*10**-3 # viscosity in Ns/m**2\n", + "\n", + "# Solution\n", + "\n", + "Vm = Vp*L*(rhop/rhom)*(mum/mup) # velocity in m/s\n", + "\n", + "print \"Hence the model should be tested at a velocity of \",round(Vm,2),\"m/s. This velocity in the model is called corresponding velocity\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 6.3 Page no 233" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum discharge, Qm = 5.65685425 cfs\n", + "Maximum head over crest = 4.74 ft\n" + ] + } + ], + "source": [ + "# Mximum head on the crest and corresponding discharge for dynamically similar conditions\n", + "\n", + "# Given\n", + "\n", + "from __future__ import division\n", + "\n", + "from math import *\n", + "\n", + "l = 300 # length in ft\n", + "\n", + "Q = 100000 # discharge in cfs\n", + "\n", + "Cd = 3.8 # coefficient of discharge\n", + "\n", + "L = (1/50) # length scale\n", + "\n", + "# Solution\n", + "\n", + "Qm = 100000*(L)**(5/2) # model discharge in cfs\n", + "\n", + "print \"Maximum discharge, Qm = \",round(Qm,8),\"cfs\"\n", + "\n", + "H = (Q/(Cd*l))**(2/3) # height over spill way\n", + "\n", + "h = H*L*12 # head over spill model\n", + "\n", + "print \"Maximum head over crest = \",round(h,2),\"ft\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter7.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter7.ipynb new file mode 100755 index 00000000..a8fa6c1f --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter7.ipynb @@ -0,0 +1,428 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 7 : Fluid Resistance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.1 Page no 245" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reynolds number for water = 7463.0\n", + "R > 2000 the flow is turbulent for water\n", + "\n", + "\n", + "Reynolds number for glycerine = 8.7\n", + "R < 2000 the flow is laminar for glycerine\n" + ] + } + ], + "source": [ + "# Is the flow laminar or turbulent\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "nu1 = 0.804*10**-6 # viscosity in m**2/s\n", + "\n", + "V = 0.3 # velocity in m/s\n", + "\n", + "D = 0.02 # diameter in m/s\n", + "\n", + "# for water \n", + "\n", + "rho = 995.7 # density in kg/m**3\n", + "\n", + "# for gylcerine\n", + "\n", + "mu = 8620*10**-4 # viscosity in Ns/m**2\n", + "\n", + "S = 1.26 # specific gravity\n", + "\n", + "nu2 = mu/(S*rho) # viscosity of glycerine in Ns/m**2\n", + "\n", + "# Solution\n", + "\n", + "R1 = V*D/nu1\n", + "\n", + "print \"Reynolds number for water =\",round(R1,0)\n", + "\n", + "print \"R > 2000 the flow is turbulent for water\"\n", + "\n", + "print \"\\n\"\n", + "R2 = V*D/nu2\n", + "\n", + "print \"Reynolds number for glycerine =\",round(R2,1)\n", + "\n", + "print \"R < 2000 the flow is laminar for glycerine\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.2 Page no 248" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7/y\n", + "Turbulence constant = 0.46\n", + "Mixing length = 13.8 cm\n", + "Eddy viscosity = 44.1 Nm/s**2\n" + ] + } + ], + "source": [ + "# Eddy Viscosity; mixing length ; turbulence constant\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "from scipy import *\n", + "\n", + "import numpy as np\n", + "\n", + "from sympy import *\n", + "\n", + "y = Symbol('y')\n", + "\n", + "d = 0.0175 # diameter in m\n", + "\n", + "s = 0.3 # shear stress at a distance in m\n", + "\n", + "tau = 103 # shear stress in Pa\n", + "\n", + "rho = 1000 # density in kg/m**3\n", + "\n", + "#y = 0.3\n", + "\n", + "# solution\n", + "\n", + "Up = diff(8.5+0.7*log(y),y)\n", + "\n", + "print Up\n", + "\n", + "Up = (0.7/0.3) # for y = 0.3\n", + "\n", + "k = sqrt(tau/(rho*s**2*Up**2))\n", + "\n", + "print \"Turbulence constant = \",round(k,2)\n", + "\n", + "Ml = k*s*100 # mixing length\n", + "\n", + "print \"Mixing length = \",round(Ml,1),\"cm\"\n", + "\n", + "Eta = rho*(Ml/100)**2*Up\n", + "\n", + "print \"Eddy viscosity =\",round(Eta,1),\"Nm/s**2\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.3 Page no 256" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nOCYCIiIH9/84dLhcBD/ZrQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x446d2d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# PLot boundary layer distribution and total drag on the plate\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "from pylab import plt\n", + "\n", + "from numpy import *\n", + "\n", + "from scipy import *\n", + "\n", + "from sympy import *\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Given\n", + "\n", + "# for glycerine\n", + "\n", + "S = 1.26 # specific gravity \n", + "\n", + "mu = 0.862 # dynamic viscosity in Ns/m**2\n", + "\n", + "rho = S *1000 # density in kg/m**3\n", + "\n", + "K2 = 0.332\n", + "\n", + "V=1 # velocity in m/s\n", + "\n", + "# Solution\n", + "\n", + "# from blasius equation\n", + "\n", + "x = [0,0.1,0.5,1.0,2.0];\n", + "\n", + "d = 0.1307*np.sqrt(x)*100\n", + "\n", + "tauo = K2*rho*V**2/(sqrt(1462)*np.sqrt(x))\n", + "\n", + "#plt.figure()\n", + "plt.plot(x, d, 'r')\n", + "plt.xlabel('x(m)')\n", + "plt.ylabel('delta(cm),tauo(N/m**2)')\n", + "#plt.title('delta v/s x')\n", + "#plt.legend('d')\n", + "\n", + "plt.plot(x, tauo, 'b')\n", + "plt.xlabel('x')\n", + "#plt.ylabel('tauo(N/m**2)')\n", + "#plt.title('tauo v/s x(m)')\n", + "plt.legend('d''t')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.4 page no 260" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEXCAYAAACpuuMDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVVX+x/E3ApV4xUuNAkUJAd5RsLA0HFMTlSzK0MnU\nMYeanElrsotNYaOmpU5jNqX9SjNH1OkipoKFxWRewNRRR0vxgiFpimJeSLm4f3/sPIqoHJDNOZzz\neT0Pz8PmbPb5nv3o/rDW3mstD8MwDERERH5Vy9EFiIiIc1EwiIhIKQoGEREpRcEgIiKlKBhERKQU\nBYOIiJSiYBCXNHToUP7617/atW9gYCArV660uCKRmkPBIC7Jw8MDDw+PCu+bmJjI4MGDrSyNV199\nlbFjx1r6HiJXQ8EgLstZx24uX76cPn36OLoMkctSMIhL2LRpEx06dKB+/frEx8dz+vTpUq8vXbqU\n9u3b4+vryx133MHWrVvLHCM1NZVXX32VhQsXUq9ePcLDwwGYPXs2LVu2pH79+rRo0YJZs2ZdsoYz\nZ87QsGFDtm3bZvvZ4cOH8fHxIS8vD4D8/Hx27txJVFQUeXl59O3bF19fXxo3bkzXrl0vGWZr1qyh\nadOm7N+/H4DNmzfTqFEjdu7cWbmTJVIOBYPUeIWFhfTv358hQ4aQn5/Pgw8+yMcff2zrHtq0aRPD\nhw/n3Xff5ejRoyQkJBAbG0tRUVGp49xzzz288MILxMfHc+LECTZt2gTADTfcwLJlyzh+/DizZ89m\n9OjRttcudO211xIXF0dSUpLtZ4sWLSI6OpomTZoAsGLFCu6++248PDyYOnUqAQEB5OXlcejQIV59\n9dVLdn917tyZhIQEhgwZwi+//MLDDz/M+PHjufXWW6vsHIpcSMEgNd66desoLi7mySefxNPTk7i4\nOCIjI22vz5o1i4SEBCIjI/Hw8OCRRx7h2muvZd26dWWOZRhGmb/aY2JiuPnmmwHo2rUrPXv2ZNWq\nVZesZdCgQSxYsMC2PX/+fAYNGmTbXrZsGTExMQBcc801HDhwgOzsbDw9Pbnjjjsu+xkTExP5+eef\n6dSpEwEBAfzxj3+048yIVI6CQWq8H3/8ET8/v1I/u+mmm2zf79u3j6lTp+Lr62v72r9/Pz/++KNd\nx09JSeH222+ncePG+Pr6snz5co4cOXLJfaOjoykoKCAzM5Ps7Gw2b97MfffdB8DZs2dJS0vjnnvu\nAeCZZ54hKCiInj170qJFCyZPnnzZGry8vBgyZAjbtm3j6aeftqtukcpSMEiN16xZM3Jzc0v9bN++\nfbbvb7zxRsaOHUt+fr7t6+TJkzz00ENljnVxV86ZM2eIi4tjzJgxHDp0iPz8fGJiYi57Y9vT05MB\nAwaQlJREUlIS/fr1o06dOgCsX7+em266icaNGwNQt25dpkyZwu7du1myZAnTpk3jyy+/vORxc3Nz\neeWVV/j973/PU089RWFhof0nSKSCFAxS43Xu3BkvLy+mT59OUVERn3zyCevXr7e9PmLECN555x0y\nMzMxDINTp06xbNkyTp48WeZYv/nNb8jOzrZd+AsLCyksLKRJkybUqlWLlJQUPv/88yvWc6476eJu\npOXLl9O3b1/b9rJly9i1axeGYVC/fn08PT3x9PQsczzDMBg6dCiPPvoo//d//0ezZs3sHqMhUhkK\nBqnxvL29+eSTT5gzZw6NGzdm0aJFxMXF2V7v2LEj7777LiNHjqRRo0YEBwczd+7cS97offDBBwFo\n3LgxERER1KtXj+nTpzNgwAAaNWpEUlIS99577xXr6dSpE3Xr1uXAgQP07t3b9vPly5fb7i8AZGVl\n0aNHD+rVq0fnzp154oknuOuuu8ocb/r06eTl5fG3v/0NMJ+Smj17NqtXr67YiRKxk4cW6hGx3k8/\n/USHDh3KdHmJOCNLWwypqamEhoYSHBx8yRtrU6ZMITw8nPDwcNq0aYOXlxfHjh2zsiQRhzh+/DjT\npk1zdBkidrGsxVBSUkJISAhpaWn4+fkRGRlJUlISYWFhl9x/6dKlvPHGG6SlpVlRjoiI2MmyFkNm\nZiZBQUEEBgbi7e1NfHw8ycnJl91//vz5DBw40KpyRETETl5WHTg3N5eAgADbtr+/PxkZGZfct6Cg\ngBUrVvDPf/6zzGv2ToQmIiKlVbZDyLIWQ0Uu6J999hl33nknDRs2vOTr50ajuvvXyy+/7PAanOVL\n50LnQufiyl9Xw7Jg8PPzIycnx7adk5ODv7//JfddsGCBupFERJyEZcEQERFBVlYW2dnZFBYWsnDh\nQmJjY8vs9/PPP/P111+X+2y4iIhUD8vuMXh5eTFjxgx69epFSUkJw4cPJywsjJkzZwKQkJAAwOLF\ni+nVqxe1a9e2qhSXER0d7egSnIbOxXk6F+fpXFQNpx/g5uHhcdX9ZSIi7uZqrp2WtRhERJxdo0aN\nyM/Pd3QZV8XX15ejR49W6THVYhARt+UK15fLfYar+WyaRE9EREpRMIiISCkKBhERKUXBICIipSgY\nRESkFAWDiIgTCgwMZOXKlQ55bwWDiIgT8vDwcNjs0goGEREpRSOfRUSupCr+aq9hg+gUDCIiV1LD\nLupVQV1JIiJSioJBRERKUVeSiIiTKiws5PTp07Ztb29vPD09LX9ftRhERJxUTEwMPj4+tq9x48ZV\ny/tq2m0RcVuucH2xYtptdSWJiPs5cwY++8zRVTgtBYOIuAfDgA0bYM4cWLAA2rZ1dEVOS8EgIq7t\n4EH417/MQDh1CoYOhW+/hcBAfBs1cti0E1XF19e3yo+pewwi4nrOnIGlS80wWLUK7rvPDIQuXaCW\nezxzo3sMIiKGAZs2wezZZldR69ZmGCQlQd26jq6uRlEwiEjN9tNP57uKTpyAIUMgMxNuvtnRldVY\nlrapUlNTCQ0NJTg4mMmTJ19yn/T0dMLDw2ndujXR0dFWliMirqKwED75BGJjISQEtmyB6dNh925I\nTFQoXCXL7jGUlJQQEhJCWloafn5+REZGkpSURFhYmG2fY8eOcccdd7BixQr8/f3Jy8ujSZMmpQvU\nPQYRAbOr6L//NVsG8+dDq1ZmV1FcHNSr5+jqnI5T3mPIzMwkKCiIwMBAAOLj40lOTi4VDPPnzycu\nLg5/f3+AMqFwTmJiou376OhotSxE3MmhQ+e7in7+2ewqWrcOWrRwdGVOJT09nfT09Co5lmXBkJub\nS0BAgG3b39+fjIyMUvtkZWVRVFREt27dOHHiBE8++SSDBw8uc6wLg0FE3EBhISxbZobBf/4D994L\nb7wBd93lNk8VVdTFfzRfzfQZlgWDPc8GFxUVsXHjRlauXElBQQFRUVHcfvvtBAcHW1WWiDizC7uK\nQkPNrqJ589RVVM0sCwY/Pz9ycnJs2zk5ObYuo3MCAgJo0qQJtWvXpnbt2nTt2pXNmzcrGETcyaFD\nZhDMmQP5+WZX0Zo1EBTk6MrclmVtsoiICLKyssjOzqawsJCFCxcSGxtbap97772Xb775hpKSEgoK\nCsjIyKBly5ZWlSQizqKoCBYvhv794dZbYeNGmDYN9u6FV15RKDiYZS0GLy8vZsyYQa9evSgpKWH4\n8OGEhYUxc+ZMABISEggNDeWee+6hbdu21KpVixEjRigYRFzZ5s1my+Bf/zIfMx06FObOhfr1HV2Z\nXEBTYoiItQ4fPt9VdOSI2VU0ZIhaBRa7mmungkFEql5REaSkmNNTfPkl9OsHw4ZBt256qqiaKBhE\nxDls2XK+qyg42OwqevBBaNDA0ZW5Hacc4CYibiIv73xX0eHDZjfRN9+YwSA1kloMIlJxRUWQmmp2\nFa1cCX37mq2D3/4WqmGxeimfupJEpHps3Xq+q6hFCzMMBgxQV5ETUleSiFgnL89c02DOHHOK6yFD\n4OuvzfEH4pLUYhCRsoqLza6iOXPgiy+gTx+zddC9u7qKagh1JYlI1fjf/8wwmDcPbrnlfFdRw4aO\nrkwqSF1JIlJ5R46c7yo6cAAeecSc0TQkxNGViYOoxSDijoqLYcUKMww+/xxiYszWwd13q6vIRagr\nSUTss23b+a6im24yRyM/9JC6ilyQupJE5PKOHoUFC8xAyM2FwYPNaSouWE1R5EJqMYi4ouJis4to\nzhyzy6h37/NdRV76e9AdqCtJREzbt5/vKgoION9V5Ovr6MqkmqkrScSdHTt2/qminByzqygtDbS2\niVSSWgwiNdWRI+aqZ++8Yw48GzYMevRQV5EAajGIuJe8PJg6FWbNggcegA0bIDDQ0VWJC9GKGSI1\nxeHD8Nxz5sCz/HxzneSZMxUKUuUUDCLO7tAhGDPGDITjx2HTJrP76KabHF2ZuCgFg4izOnQInnnG\nHG9w6hRs3gz//CfceKOjKxMXp2AQcTYHD8LTT0NoKJw+bQbCW2+Zj5+KVAMFg4izOHAARo82HzMt\nKjIXxXnzTfD3d3Rl4mYsDYbU1FRCQ0MJDg5m8uTJZV5PT0+nQYMGhIeHEx4ezvjx460sR8Q5HTgA\no0ZBq1ZgGObU19Ong5+foysTN2XZ46olJSWMHDmStLQ0/Pz8iIyMJDY2lrCL5me56667WLJkiVVl\niDiv3FyYPNkcpTxkiDnBXbNmjq5KxLoWQ2ZmJkFBQQQGBuLt7U18fDzJycll9tPgNXE7ubnwpz9B\nmzbg7W1OY/H3vysUxGlY1mLIzc0l4IKbZf7+/mRkZJTax8PDgzVr1tCuXTv8/PyYMmUKLS8xjD8x\nMdH2fXR0NNHR0VaVLWKdnByYNMmcvuL3v4fvvoMbbnB0VeIi0tPTSU9Pr5JjWRYMHh4e5e7ToUMH\ncnJy8PHxISUlhf79+7Nz584y+10YDCI1Tk4OvPoqLFwIw4fD99/D9dc7uipxMRf/0Txu3LhKH8uy\nriQ/Pz9ycnJs2zk5Ofhf9HRFvXr18PHxAaB3794UFRVx9OhRq0oSqV779sFjj0H79lC/vhkIr72m\nUBCnZ1kwREREkJWVRXZ2NoWFhSxcuJDY2NhS+/z000+2ewyZmZkYhkGjRo2sKkmkemRnQ0ICdOhg\nTne9Y4fZhdS0qaMrE7GLZV1JXl5ezJgxg169elFSUsLw4cMJCwtj5syZACQkJPDRRx/x9ttv4+Xl\nhY+PDwsWLLCqHBHr7d0LEyfCJ5+YLYWdO6FxY0dXJVJhmnZb5Grt2WMGwqefwuOPm4PUFAjiYFdz\n7dTIZ5HK2r3bfLqoUydo3hyysmD8eIWC1Hhaj0GkonbtggkT4LPP4IknzEDQ0pniQhQMIvY61yJY\ntswcoLZrFzRs6OiqRKqcgkGkPDt2mIGQmqpAELegewwil/P99/Dww3DnneYiObt2wUsvKRTE5SkY\nRC723XcwaBB07WpOgb17N7z4IjRo4OjKRKqFgkHknO3bYeBAuOsuc4K73bvhhRfMUcsibkTBIPK/\n/8FDD0G3bub0Fbt3w/PPQ716jq5MxCEUDOK+tm6FAQOge3fo2NEMhGefVSCI21MwiPvZsgUeeAB6\n9DAHp+3ZA2PGQN26jq5MxCkoGMR9/Pe/cP/90KsXREWZLYS//AXq1HF0ZSJORcEgrm/TJrjvPoiJ\ngS5dzEB4+mkFgshlKBjEdW3cCPfeC336mE8a7dplTnD36xogInJpCgZxPRs2QGws9Otn3ljevRtG\njVIgiNhJwSCuY/166NvXbCX07GkGwp//DLVrO7oykRpFwSA1X2am2V10//3Qu7fZZTRyJFx3naMr\nE6mRNIme1Fzr1sG4cbBtmzkg7ZNP4NprHV2VSI2nYJCaZ80aMxC+/94MhMWLFQgiVUhdSVJzrF5t\n3jsYOBDi4sz1ER57TKEgUsXUYhDnt2qV2UI4N6ndkCFwzTWOrkrEZSkYxHl9/bUZCHv3wtix8Mgj\n4O3t6KpEXF65wXDs2DHWrl1LdnY2Hh4eBAYGEhUVRQPNTS9WSU83A+GHH8x1EB5+WIEgUo08DMMw\nLvXCqlWreP3118nOziY8PJzmzZtjGAYHDhxg06ZNBAYGMmbMGO68805rC/Tw4DIliisxjPOBsH+/\nGQi/+50CQaSSruraaVzG6NGjjZ07d17uZWPHjh3G6NGjL/u6YRhGSkqKERISYgQFBRmTJk267H6Z\nmZmGp6en8fHHH5d57Qoliis4e9Yw0tIMo0sXwwgKMowPPjCMoiJHVyVS413NtfOyLYarVVJSQkhI\nCGlpafj5+REZGUlSUhJhYWFl9uvRowc+Pj4MGzaMuLi4Uq+rxeCiDANWroTERDh82GwhDBwIXrrt\nJVIVrubaWe7/wvz8fObOnUt2djbFxcW2N5w+ffoVfy8zM5OgoCACAwMBiI+PJzk5uUwwvPnmmzzw\nwAOsX7++Uh9AahjDgC++MLuMjhyBv/4V4uPB09PRlYnIr8oNhpiYGKKiomjbti21atXCMAw8PDzK\nPXBubi4BAQG2bX9/fzIyMsrsk5yczJdffsn69esve9zExETb99HR0URHR5f7/uJkDAM+/9xsIRw7\nZgbCQw8pEESqSHp6Ounp6VVyrHKD4cyZM0ybNq3CB7YnPEaNGsWkSZNsTZ7LNXsuDAapYQwDUlPN\nFsLx4/DSS/DggwoEkSp28R/N48aNq/Sxyg2GQYMGMWvWLPr168e1F4wwbdSo0RV/z8/Pj5ycHNt2\nTk4O/v7+pfbZsGED8fHxAOTl5ZGSkoK3tzexsbEV+hDihAwDUlLMQDh1ymwhPPCAAkGkBij35vOM\nGTMYO3YsDRs2pFYtcwYNDw8P9uzZc8UDFxcXExISwsqVK2nevDmdOnW65M3nc4YNG0a/fv24//77\nSxeom881i2HAsmVmIJw+bbYQ4uKglmZfEalOlt58njp1Krt376ZJkyYVO7CXFzNmzKBXr16UlJQw\nfPhwwsLCmDlzJgAJCQmVKliclGHAZ5/BK69AYSG8/LK5nKYCQaTGKbfF0LNnTz799FPqOGh9XLUY\nnJxhwJIlZgvh7FmzhdC/vwJBxMEsbTH4+PjQvn17unXrZrvHYM/jquLizp6F5GSzhQBmCyE2VoEg\n4gLKDYb+/fvTv39/21NG9j6uKi7KMODTT80Wgqen+fhpbCzo34SIyyi3K+nkyZPUrl0bz1+fJikp\nKeH06dPV1rWkriQncuIEPPoobN8OEyea6ysrEESc0tVcO8tt999999388ssvtu2CggJ69OhRqTeT\nGmzLFoiIgAYNzDWW+/VTKIi4qHKD4fTp09StW9e2Xa9ePQoKCiwtSpzM7NnQvbs5n9GsWVC7tqMr\nEhELlXuPoU6dOmzYsIGOHTsC8O2331JbFwb3UFAAI0fCunXmlNitWjm6IhGpBuUGwxtvvMGAAQNo\n1qwZAAcOHGDhwoWWFyYOtnOnOVK5TRuz6+iCVqOIuDa7pt0uLCxkx44dAISEhHBNNa63q5vPDrBo\nETzxBIwfD3/4g+4liNRAV3PtvGwwpKenlzuL6VdffUW3bt0q9cb2UjBUozNn4C9/geXL4d//hg4d\nHF2RiFSSJQPcli5dypgxY7j77ruJiIigWbNmnD17loMHD/Ltt9+SlpZGt27dLA8GqSbZ2TBgAPj5\nwYYN0LChoysSEQe5YlfSiRMnSE5OZvXq1ezbtw+Am266iTvvvJN777231NNKlhWoFoP1li6F4cPh\n2Wdh9Gh1HYm4AEu6kpyFgsFCxcUwdiwkJcGCBdC5s6MrEpEqYulcSWB2K23fvp3Tp0/bfvbSSy9V\n6g3FSfz4o7mkpo+P2XXUtKmjKxIRJ1HuALeEhAQWLVrE9OnTMQyDRYsW2bqVpIZaudIcxdyjh3mj\nWaEgIhcotyupTZs2bN26lbZt27JlyxZOnjzJPffcwzfffFM9BaorqeqcPQsTJsDbb8OHH5qjmUXE\nJVnalXRulLOPjw+5ubk0btyYgwcPVurNxIEOH4aHH4ZffoFvv4XmzR1dkYg4qXK7kvr27Ut+fj7P\nPPMMHTt2JDAwkIEDB1ZHbVJVVq82xySEh8OXXyoUROSKyu1KOn36NNddd53t+3Pb535meYHqSqo8\nw4Bp0+C11+C998xpskXELVg67XbnCx5hvO6662jYsGGpn4mTOnYM7r8fFi6EjAyFgojY7bL3GA4c\nOMCPP/5IQUEBGzdutK3cdvz4cU277ew2bDBHMffpY45P+HVJVhERe1w2GFasWMGcOXPIzc3l6aef\ntv28Xr16TJw4sVqKkwoyDJg5E/76V3jrLTMcREQqqNx7DB9//DFxcXHVVU8Zusdgp5MnISEBtm6F\njz6CW291dEUi4kCWTIkxdepU24E9Lpg759z2U089VblqK1qggqF827ebaydERcGbb5qjmUXErVly\n8/nEiROcOHGCkydP2r6/cNseqamphIaGEhwczOTJk8u8npycTLt27QgPD6djx458+eWXlfoQbu3D\nD+Guu2DMGPPJI4WCiFwlyybRKykpISQkhLS0NPz8/IiMjCQpKYmwsDDbPqdOnaJOnToAbN26lfvu\nu49du3aVLlAthkv75Rd48kn4z3/MrqM2bRxdkYg4EUsfV92xYwfdu3en1a/r/W7ZsoXx48eXe+DM\nzEyCgoIIDAzE29ub+Ph4kpOTS+1zLhQATp48SZMmTSpav3vatcucCfX4cXMUs0JBRKpQuVNijBgx\ngtdff53HHnsMMOdOGjhwIC+++OIVfy83N5eAgADbtr+/PxkZGWX2W7x4Mc8//zwHDhzg888/v+Sx\nEhMTbd9HR0eXu7KcS/v4Y3j8cXj5ZfjjH7V2gogA5qqb6enpVXKscoOhoKCA2267zbbt4eGBt7d3\nuQf2sPOC1b9/f/r378+qVasYPHiwbW3pC10YDG6rsNBcSGfxYli2DCIjHV2RiDiRi/9oHjduXKWP\nVW5XUtOmTUv1+3/00Uc0a9as3AP7+fmRk5Nj287JycHf3/+y+3fp0oXi4mKOHDlS7rHdzg8/mDeY\nd+0yB68pFETEQuUGw4wZM3jsscfYsWMHzZs35+9//ztvv/12uQeOiIggKyuL7OxsCgsLWbhwIbGx\nsaX22b17t+3myMaNGwFo3LhxZT6H60pJgU6dzOktkpOhUSNHVyQiLu6K4xgudPr0ac6ePYuPj4/d\n4xhSUlIYNWoUJSUlDB8+nOeff56ZM2cC5gJAr732GnPnzsXb25u6desybdo0Ii/6a9htn0oqLobE\nRJgzx1x6s0sXR1ckIjWIJQPcEhMT8fDwYMeOHaxfv9721/5nn31Gp06dmDdvXuUrrkiB7hgMBw/C\nwIHg6Qnz58P11zu6IhGpYSwJhnO6dOnC8uXLqVevHmAOfIuJiWHVqlWVesMKF+huwZCeDr/7HTz6\nKLz0khkOIiIVZOkKbocOHSr1FJK3tzeHDh2q1JvJFZw9C5MmmVNafPAB9Ozp6IpExE2VGwyPPPII\nnTp14v7778cwDBYvXsyQIUOqozb3ceQIPPII/PwzrF8PV3h6S0TEanZNibFhwwZWrVqFh4cHXbt2\nJTw8vDpqA9ygKykjAx56CB58ECZOBDvGiIiIlMfSewyO5rLBYBgwfTpMmADvvgv33uvoikTEhVh6\nj0Es8PPP5s3lPXtg3Tq45RZHVyQiYlPuADepYps3Q0QENG0Kq1crFETE6SgYqothmOsl3H03jBsH\n//wnXHedo6sSESlDXUnV4dQpcybUDRtg1SoIDXV0RSIil6UWg9W+/x7OzU6bkaFQEBGnp2Cw0rk5\njkaNMuc8umBhIhERZ6WuJCucOQOjR8MXX5hf7ds7uiIREbupxVDV9uyBO+6AQ4fMZTcVCiJSwygY\nqlJyMtx+OwweDP/+NzRo4OiKREQqTF1JVaGoCF54ARYtgiVLzHAQEamhFAxXa/9+iI+H+vVh40bQ\nCnQiUsOpK+lqfPGFuf5ynz6wdKlCQURcgloMlVFSAn/7mzn5XVISREc7uiIRkSqjYKioQ4fMFdaK\ni82RzL/5jaMrEhGpUupKqohVq6BjR3Mk8xdfKBRExCWpxWAPw4CpU2HKFJg9G3r3dnRFIiKWUTDY\n48sv4e23ITMTbrzR0dWIiFhKK7jZ47e/hSFDzC8RkRrgaq6dlt5jSE1NJTQ0lODgYCZPnlzm9X/9\n61+0a9eOtm3bcscdd7BlyxYry6mctWth714YNMjRlYiIVAvLWgwlJSWEhISQlpaGn58fkZGRJCUl\nERYWZttn7dq1tGzZkgYNGpCamkpiYiLr1q0rXaCjWwx9+5rjFB5/3HE1iIhUkFO2GDIzMwkKCiIw\nMBBvb2/i4+NJTk4utU9UVBQNfp1P6LbbbmP//v1WlVM5//0vbNoEw4Y5uhIRkWpj2c3n3NxcAgIC\nbNv+/v5kZGRcdv/33nuPmJiYS76WmJho+z46Opro6hpQNnEiPP20luAUEaeXnp5Oenp6lRzLsmDw\n8PCwe9+vvvqK999/n9WrV1/y9QuDodp89x2kp5uPp4qIOLmL/2geN25cpY9lWTD4+fmRk5Nj287J\nycHf37/Mflu2bGHEiBGkpqbi6+trVTkVN2kS/PnPWnVNRNyOZcEQERFBVlYW2dnZNG/enIULF5KU\nlFRqnx9++IH777+fefPmERQUZFUpFbd3rzkp3u7djq5ERKTaWRYMXl5ezJgxg169elFSUsLw4cMJ\nCwtj5syZACQkJPDKK6+Qn5/P478+8ePt7U1mZqZVJdnvtdfgscegYUNHVyIiUu00wO1iP/4IrVvD\njh3QtGn1va+ISBVyysdVa6wpU8wRzgoFEXFTajFcKC8Pbr0Vtm4FP7/qeU8REQuoxVBV3ngDHnxQ\noSAibk0thnN+/hlatDBnUL3lFuvfT0TEQmoxVIW33oKYGIWCiLg9tRgATp0yAyE9HS6Y5E9EpKZS\ni+FqzZoFXbooFEREUIsBzpwxWwtLl0J4uHXvIyJSjdRiuBpz5kC7dgoFEZFfuXeLobjYHLcwbx50\n7mzNe4iIOIBaDJWVlAQ33aRQEBG5gPu2GM6ehVat4M034e67q/74IiIOpBZDZXzyCdSvD927O7oS\nERGn4p7BYBjmsp1jx0IFVpoTEXEH7hkMKSnmjee+fR1diYiI03G/YDAMGD/ebC3Ucr+PLyJSHve7\nMqanw5EQLuh9AAALZElEQVQj8MADjq5ERMQpuV8wTJgAzz0Hnp6OrkRExCm5VzBkZEBWFjz8sKMr\nERFxWu4VDBMmwJgx4O3t6EpERJyW+wxw27wZeveG3buhdu2rP56IiBPTADd7TJwITz2lUBARKYd7\ntBh27DDXW9izB+rWrZrCREScmNO2GFJTUwkNDSU4OJjJkyeXef37778nKiqK6667jqlTp1pXyKRJ\nMHKkQkFExA6WtRhKSkoICQkhLS0NPz8/IiMjSUpKIuyCVdIOHz7Mvn37WLx4Mb6+vjz99NNlC7za\nFsO+fdChA+zaBb6+lT+OiEgN4pQthszMTIKCgggMDMTb25v4+HiSk5NL7dO0aVMiIiLwtvIpodde\ngz/8QaEgImInL6sOnJubS0BAgG3b39+fjIyMSh0rMTHR9n10dDTR0dH2/eKBA+aaC99/X6n3FRGp\nKdLT00lPT6+SY1kWDB5VOGvphcFQIVOnwuDBcP31VVaLiIgzuviP5nHjxlX6WJYFg5+fHzk5Obbt\nnJwc/P39rXq7so4cgfffhy1bqu89RURcgGX3GCIiIsjKyiI7O5vCwkIWLlxIbGzsJfe15P73P/4B\ncXFQnWEkIuICLB3HkJKSwqhRoygpKWH48OE8//zzzJw5E4CEhAQOHjxIZGQkx48fp1atWtSrV4/t\n27dT94LHSit1Z/34cbjlFli3DoKCqvIjiYjUCFfzVJJrDnCbNAn+9z+YN8+aokREnJyC4UIFBWZr\nYeVKaNXKusJERJyYU45jcJh334XOnRUKIiKV5FothjNnzHsKixdDx47WFiYi4sTUYjhn7lyzpaBQ\nEBGpNNdpMRQXQ0gIfPAB3Hmn9YWJiDgxtRgAFiwwxywoFEREroplI5+r1dmz8Oqr8Pe/O7oSEZEa\nzzVaDIsXg48P9Ojh6EpERGq8mh8MhgETJsDYsVCFE/eJiLirmh8MK1ZAYSFcZh4mERGpmJodDIYB\n48fDCy9ArZr9UUREnEXNvpp+/TX89BMMGODoSkREXEbNDoYJE+C558DT09GViIi4jJo7wG39enO9\nhV274Jprqr8wEREn5p4D3CZMgGeeUSiIiFSxmtli2LoVevaEPXugdm3HFCYi4sTcr8UwcSKMHq1Q\nEBGxQM1rMWRlmest7NkD9eo5rjARESfmXi2GSZPgiScUCiIiFqlZLYYffoDwcLPV0KiRYwsTEXFi\n7tNieP11ePRRhYKIiIVqTovh4EFo2RK++w5uuMHRZYmIODX3aDFMmwa/+51bh0J6erqjS3AaOhfn\n6Vycp3NRNSwNhtTUVEJDQwkODmby5MmX3OfPf/4zwcHBtGvXjk2bNl36QEePwnvvmQPa3Jj+0Z+n\nc3GezsV5OhdVw7JgKCkpYeTIkaSmprJ9+3aSkpL47rvvSu2zfPlydu3aRVZWFrNmzeLxxx+/9MGm\nT4f+/eHGG60qV0REfmVZMGRmZhIUFERgYCDe3t7Ex8eTnJxcap8lS5YwZMgQAG677TaOHTvGTz/9\nVPZgb71lTpYnIiLWMyzy73//23j00Udt2x9++KExcuTIUvv07dvXWL16tW27e/fuxrfffltqH0Bf\n+tKXvvRVia/K8sIiHnYus2lcdNf84t+7+HUREbGWZV1Jfn5+5OTk2LZzcnLw9/e/4j779+/Hz8/P\nqpJERMQOlgVDREQEWVlZZGdnU1hYyMKFC4m9aF3m2NhY5s6dC8C6deto2LAhN7jx46giIs7Asq4k\nLy8vZsyYQa9evSgpKWH48OGEhYUxc+ZMABISEoiJiWH58uUEBQVRp04dZs+ebVU5IiJir0rfnahi\nKSkpRkhIiBEUFGRMmjTpkvv86U9/MoKCgoy2bdsaGzdurOYKq09552LevHlG27ZtjTZt2hidO3c2\nNm/e7IAqq4c9/y4MwzAyMzMNT09P4+OPP67G6qqXPefiq6++Mtq3b2+0atXKuOuuu6q3wGpU3rk4\nfPiw0atXL6Ndu3ZGq1atjNmzZ1d/kdVg2LBhxvXXX2+0bt36svtU5rrpFMFQXFxstGjRwti7d69R\nWFhotGvXzti+fXupfZYtW2b07t3bMAzDWLdunXHbbbc5olTL2XMu1qxZYxw7dswwDPM/iDufi3P7\ndevWzejTp4/x0UcfOaBS69lzLvLz842WLVsaOTk5hmGYF0dXZM+5ePnll43nnnvOMAzzPDRq1Mgo\nKipyRLmW+vrrr42NGzdeNhgqe910iikxqnTMQw1nz7mIioqiQYMGgHku9u/f74hSLWfPuQB48803\neeCBB2jatKkDqqwe9pyL+fPnExcXZ3vIo0mTJo4o1XL2nItmzZpx/PhxAI4fP07jxo3x8rKs59xh\nunTpgq+v72Vfr+x10ymCITc3l4CAANu2v78/ubm55e7jihdEe87Fhd577z1iYmKqo7RqZ++/i+Tk\nZNuoeXsfk65p7DkXWVlZHD16lG7duhEREcGHH35Y3WVWC3vOxYgRI9i2bRvNmzenXbt2/OMf/6ju\nMp1CZa+bThGhVTXmwRVU5DN99dVXvP/++6xevdrCihzHnnMxatQoJk2aZJtJ8uJ/I67CnnNRVFTE\nxo0bWblyJQUFBURFRXH77bcTHBxcDRVWH3vOxcSJE2nfvj3p6ens3r2bHj16sHnzZuq54QJflblu\nOkUwaMzDefacC4AtW7YwYsQIUlNTr9iUrMnsORcbNmwgPj4egLy8PFJSUvD29i7zaHRNZ8+5CAgI\noEmTJtSuXZvatWvTtWtXNm/e7HLBYM+5WLNmDWPHjgWgRYsW3HzzzezYsYOIiIhqrdXRKn3drJI7\nIFepqKjIuOWWW4y9e/caZ86cKffm89q1a132hqs952Lfvn1GixYtjLVr1zqoyuphz7m40NChQ132\nqSR7zsV3331ndO/e3SguLjZOnTpltG7d2ti2bZuDKraOPedi9OjRRmJiomEYhnHw4EHDz8/POHLk\niCPKtdzevXvtuvlckeumU7QYNObhPHvOxSuvvEJ+fr6tX93b25vMzExHlm0Je86Fu7DnXISGhnLP\nPffQtm1batWqxYgRI2jZsqWDK6969pyLF154gWHDhtGuXTvOnj3La6+9RiMXXPlx4MCB/Oc//yEv\nL4+AgADGjRtHUVERcHXXTadfwU1ERKqXUzyVJCIizkPBICIipSgYRESkFAWDiIiUomAQsdOhQ4fo\n06dPhX7nqaeeYtWqVRZVJGINBYOInWbMmMHQoUMr9DuPP/44r7/+ujUFiVhEwSBykfXr19OuXTvO\nnDnDqVOnaN26Ndu2beOjjz6ytRjmzJlD//796dmzJzfffDMzZsxgypQpdOjQgaioKPLz8wEIDg4m\nOzubY8eOOfIjiVSIgkHkIpGRkcTGxvLiiy/y7LPPMnjwYJo0aYKnpyc+Pj62/bZt28ann37K+vXr\nGTt2LPXr12fjxo1ERUXZViYECA8PZ+3atY74KCKV4hQjn0WczUsvvURERAS1a9fmzTffJDMzk2bN\nmtle9/DwoFu3btSpU4c6derQsGFD+vXrB0CbNm3YsmWLbd/mzZuTnZ1d3R9BpNIUDCKXkJeXx6lT\npygpKeGXX34Bys5See2119q+r1Wrlm27Vq1aFBcX214zDMMlZwIW16WuJJFLSEhIYPz48QwaNIhn\nn32WwMBADh48aHv9SjPJXPzagQMHCAwMtKpUkSqnFoPIRebOncu1115LfHw8Z8+epXPnzmzfvp3i\n4mIKCgrw8fHBw8OjVCvg4u8v3N60aRPTp0+v1s8gcjU0iZ6InRITEwkLC+Ohhx6y+3d27tzJX/7y\nF5YsWWJhZSJVS11JInZ64okn+OCDDyr0O++88w5jxoyxqCIRa6jFICIipajFICIipSgYRESkFAWD\niIiUomAQEZFSFAwiIlKKgkFEREr5f1iGZ/dHpXkqAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x4b3b910>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x4e36b10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Drag = 0.595 N\n" + ] + } + ], + "source": [ + "# Sketch the boundary layer and drag on the plate\n", + "\n", + "import numpy as np\n", + "\n", + "from math import *\n", + "\n", + "from __future__ import division\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from numpy import sqrt\n", + "\n", + "# Given\n", + "\n", + "rho = 1.197 # air density in kg/m**3\n", + "\n", + "mu = 18.22*10**-6 # viscosity in Ns/m**2\n", + "\n", + "l = 5 # length of the plate\n", + "\n", + "V = 8 # velocity in m/s\n", + "\n", + "Rec = 5*10**5 # crictical reynolds number\n", + "\n", + "l1 = 0.951 # length from 0 to 0.951\n", + "\n", + "l2 = 5.0 # length from 0 to 5\n", + "\n", + "l3 = 0.951 # length from 0 to 0.951\n", + "\n", + "# Solution\n", + "\n", + "X = Rec/525576\n", + "\n", + "x = [0,0.1,0.3,0.6,0.951];\n", + "\n", + "d = 0.0069*np.sqrt(x)*100\n", + "\n", + "plt.figure()\n", + "plt.plot(x, d, 'r')\n", + "plt.xlabel('x(m)')\n", + "plt.ylabel('delta(cm)')\n", + "plt.title('delta v/s x')\n", + "plt.legend('L')\n", + "plt.show()\n", + "\n", + "X1 = [0.951,1.5,2.0,2.5,3.0,4.0,5.0]\n", + "\n", + "Dt = 0.0265*np.power(X1,(4/5))*100\n", + "\n", + "plt.figure()\n", + "plt.plot(X1, Dt, 'g')\n", + "plt.xlabel('x(m)')\n", + "plt.ylabel('delta(cm)')\n", + "plt.title('delta v/s x')\n", + "plt.legend('T')\n", + "plt.show()\n", + "\n", + "Td = 0.664*sqrt(mu*rho*V**3*l1)+0.036*rho*V**2*l2*(mu/(rho*V*l2))**0.2-0.036*rho*V**2*l3*(mu/(rho*V*l3))**0.2\n", + "\n", + "print \"Total Drag = \",round(Td,3),\"N\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 7.5 Page no 270" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Drag on the sphere = 0.0043 N\n" + ] + } + ], + "source": [ + "# Determine drag on the sphere\n", + "\n", + "from math import *\n", + "\n", + "from pylab import plt\n", + "\n", + "from __future__ import division\n", + "\n", + "# Given\n", + "\n", + "d = 0.01 # doameter of sphere in m\n", + "\n", + "v = 0.05 # velocity in m/s\n", + "\n", + "S = 1.26 # specific gravity\n", + "\n", + "mu = 0.826 # kinematic viscosity in Ns/m**2\n", + "\n", + "rho = S*1000 # density\n", + "\n", + "# Solution\n", + "\n", + "R = rho*v*d/mu\n", + "\n", + "# for the above rho\n", + "\n", + "Cd = 35\n", + "\n", + "Fd = 0.5*Cd*rho*v**2*pi*d**2/4\n", + "\n", + "print \"Drag on the sphere = \",round(Fd,4),\"N\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter8.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter8.ipynb new file mode 100755 index 00000000..f81b0b54 --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter8.ipynb @@ -0,0 +1,396 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 8 : Laminar Flow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.1 Page no 286" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(a) Maximum shear stress = 1.232 N/m**2\n", + "(b) Maximum velocity = 0.645 m/s\n", + "(c) Discharge = 4.1e-06 m**3/s\n", + "Reynolds number = 547.0 is less than 2000, the flow is laminar and the calculations are valid\n" + ] + } + ], + "source": [ + "# Determine maximum velocity and shear stress\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "P1 = 200 # Pressure at inlet in kPa\n", + "\n", + "P2 = 260 # Pressure at outlet in kPa\n", + "\n", + "d = 0.004 # diameter in m\n", + "\n", + "L = 8 # length of pipe in meters\n", + "\n", + "z = 6 # height of the pipe from the ground\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# properties of kerosene\n", + "\n", + "mu = 19.1*10**-4 # viscosity of kerosene at 20 deg C\n", + "\n", + "S = 0.81 # specific gravity of kerosene\n", + "\n", + "rho = 1000 # density in kg/m**3\n", + "\n", + "# Solution\n", + "\n", + "# calculating direction of flow\n", + "\n", + "p1 = (P1+g*z*S)*1000 # point 1\n", + "\n", + "p2 = (P2)*1000 # point 2\n", + "\n", + "# direction of flow is from point 1-2\n", + "\n", + "# shear stress\n", + "\n", + "Sp = -((p1-p2)/sqrt(L**2+z**2))\n", + "\n", + "r = d/2\n", + "\n", + "Tau_max = r*Sp/2\n", + "\n", + "print \"(a) Maximum shear stress =\",round(Tau_max,3),\"N/m**2\"\n", + "\n", + "# maximum velocity\n", + "\n", + "Vmax = r**2*Sp/(4*mu)\n", + "\n", + "print \"(b) Maximum velocity =\",round(Vmax,3),\"m/s\"\n", + "\n", + "# discharge\n", + "\n", + "Q = pi*r**4*Sp/(8*mu)\n", + "\n", + "print \"(c) Discharge = \",round(Q,7),\"m**3/s\"\n", + "\n", + "# calculate reynolds number\n", + "\n", + "V = Vmax/2\n", + "\n", + "R = rho*V*d*S/mu\n", + "\n", + "print \"Reynolds number =\",round(R,0),\"is less than 2000, the flow is laminar and the calculations are valid\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example no 8.2 Page no 289" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R = 1299.0 is lesss than 2000 , the flow is laminar\n", + "Head loss = 3.77 cm of water\n" + ] + } + ], + "source": [ + "# Determine the head loss\n", + "\n", + "# Given\n", + "\n", + "d = 0.02 # diameter of the pipe in m\n", + "\n", + "l = 30 # length of the pipe in m\n", + "\n", + "v = 0.1 # velocity in m/s\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# for water at 5 deg C\n", + "\n", + "nu = 1.54*10**-6 # kinematic viscosity of water in m**2/s\n", + "\n", + "# Solution\n", + "\n", + "R = v*d/nu\n", + "\n", + "print \"R = \",round(R,0),\"is lesss than 2000 , the flow is laminar\"\n", + "\n", + "f = 64/R # friction factor\n", + "\n", + "Hf = f*l*v**2/(2*g*d) # head loss due to friction\n", + "\n", + "H=Hf*100\n", + "\n", + "print \"Head loss = \",round(H,2),\"cm of water\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.3 Page no 290" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R = 40.07 is less than 2000 and hence flow is laminar\n", + "Horse power required to pump the oil = 10.6\n" + ] + } + ], + "source": [ + "# Horsepower required to pump 50 tons of oil\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "# oil properties\n", + "\n", + "S = 0.92 # specific gravity\n", + "\n", + "gma = S*62.4 # density in lbs/ft**3\n", + "\n", + "nu=0.0205 # viscosity in ft**2/s\n", + "\n", + "W = 50 # weight of oil\n", + "\n", + "d = 9 # diameter of the pipe in inches\n", + "\n", + "g = 32.2 # acceleration due to gravity in ft/s**2\n", + "\n", + "# Solution\n", + "\n", + "Q = W*2000/(gma*3600) # discharge in ft**3/s\n", + "\n", + "A = pi*d**2/(4*144) # area of pipe\n", + "\n", + "V = Q*1000/(A) # velocity in ft/s\n", + "\n", + "R = V*0.75/(nu*1000) # Reynolds number\n", + "\n", + "print \"R =\",round(R,2),\"is less than 2000 and hence flow is laminar\"\n", + "\n", + "f = 64/R # friction factor\n", + "\n", + "Hf = (f*5280*(V/1000)**2)/(2*g*0.75)\n", + "\n", + "Hp = gma*Q*Hf/(550)\n", + "\n", + "print \"Horse power required to pump the oil = \",round(Hp,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.4 Page no 291" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Viscosity of the liquid = 0.0182 poise\n" + ] + } + ], + "source": [ + "# Viscosity of the liquid in poise\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "V = 50 # Volume in m**3\n", + "\n", + "d = 5 # diameter in m\n", + "\n", + "d1 = 0.1 # diameter of bore\n", + "\n", + "l = 10 # length of the tube\n", + "\n", + "t = 20*60 # time in seconds\n", + "\n", + "rho = 0.88 # density in g/cm**3\n", + "\n", + "H1 = 5 # height from the base in m\n", + "\n", + "A = pi*d**2/4\n", + "\n", + "a = pi*d1**2/4\n", + "\n", + "# Solution\n", + "\n", + "# From derivation we obtain a equation for T\n", + "\n", + "H2 = H1-(V/A)\n", + "\n", + "mu = t*rho*a*(0.1)*98.1/(32*A*10*log(H1/H2))\n", + "\n", + "print \"Viscosity of the liquid =\",round(mu,4),\"poise\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 8.5 Page no 297" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge q = 0.013 per unit ft of the plate\n", + "Shear stress on the plate = 0.086 lbs/ft**2 and resisting the motion of the plate\n" + ] + } + ], + "source": [ + "# Velocity distribution; Discharge ; shear on the upper plate\n", + "\n", + "# Given\n", + "\n", + "from math import *\n", + "\n", + "# properties of kerosene oil at 20 deg C\n", + "\n", + "S = 0.81 # specific gravity of oil\n", + "\n", + "mu = 4*10**-5 # viscosity of oil in lb.s/ft**2\n", + "\n", + "gma = 62.4*S # density in lbs/ft**3\n", + "\n", + "p1 = 6.51 # pressure at point 1 in psia\n", + "\n", + "p2 = 8 # pressure at point 2 in psia\n", + "\n", + "h = 0.006 # distance between the plate in ft\n", + "\n", + "l = 4 # length of the plate in ft\n", + "\n", + "theta = pi/6 # angle of inclination\n", + "\n", + "# Solution\n", + "\n", + "# point 1\n", + "\n", + "P1 = p1*144 + gma*l*sin(theta)\n", + "\n", + "# point 2\n", + "\n", + "P2 = p2*144\n", + "\n", + "# flow is taking from poont 2-1\n", + "\n", + "Sp = (P2-P1)/4\n", + "\n", + "# equation for u = 2154.75*y-359125*y**2\n", + "\n", + "y = h\n", + "\n", + "# discharge per ft width\n", + "\n", + "q = (2154.75*y**2/2) - (359125*y**3/3)\n", + "\n", + "print \"Discharge q = \",round(q,3),\"per unit ft of the plate\"\n", + "\n", + "# to find shear at the top of the plate take du/dy = 0\n", + "\n", + "dV = 2154.75 - 718250*h\n", + "\n", + "# shear stress\n", + "\n", + "T = -mu*dV\n", + "\n", + "print \"Shear stress on the plate = \",round(T,3),\"lbs/ft**2 and resisting the motion of the plate\"\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/Chapter9.ipynb b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter9.ipynb new file mode 100755 index 00000000..279e480a --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/Chapter9.ipynb @@ -0,0 +1,847 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chapter 9 : Turbulent flow in Pipes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.1 Page no 308" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "It is a laminar flow\n", + "(a) Head loss due to flow for glycerine = 17.1 m \n", + "The flow is turbulent\n", + "(a) Head loss due to flow for water = 5.42 m \n" + ] + } + ], + "source": [ + "# Determine Head loss\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "S = 1.26 # specific gravity\n", + "\n", + "mu = 0.826 # kinematic viscosity in Ns/m**2\n", + "\n", + "# for water\n", + "\n", + "rho = 998 # density of water in kg/m**3\n", + "\n", + "mu1 = 1.005*10**-3 # viscosity in Ns/m**2\n", + "\n", + "# for glycerine\n", + "\n", + "rho1 = S*rho # density of glycerine in kg/m**3\n", + "\n", + "Q = 0.1 # discharge in m**3/s\n", + "\n", + "d1 = 0.2 # diameter in m\n", + "\n", + "A = pi*d1**2/4 # area in m**2\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "l =100 # length of the pipe\n", + "\n", + "# Solution\n", + "\n", + "V = Q/A\n", + "\n", + "R = rho1*V*d1/mu\n", + "\n", + "print \"It is a laminar flow\"\n", + "\n", + "f = 64/R # friction factor\n", + "\n", + "Hf = f*l*V**2/(2*g*d1) # head loss due to friction\n", + "\n", + "print \"(a) Head loss due to flow for glycerine =\",round(Hf,1),\"m \"\n", + "\n", + "R1 = rho*V*d1/mu1\n", + "\n", + "print \"The flow is turbulent\"\n", + "\n", + "e = 0.025\n", + "\n", + "r = e/(d1*100)\n", + "\n", + "f = 0.021\n", + "\n", + "hf = f*l*V**2/(2*g*d1)\n", + "\n", + "print \"(a) Head loss due to flow for water =\",round(hf,2),\"m \"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.2 Page no 311" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.1853324563\n", + "Discharge = 0.1 m**3/s\n" + ] + } + ], + "source": [ + "# Discharge of water\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "# for water\n", + "\n", + "nu = 1.007*10**-6 # viscosity in m**2/s\n", + "\n", + "e = 0.025 # for cast iron in cm\n", + "\n", + "L = 100 # length of the pipe in m\n", + "\n", + "D = 0.2 # diameter in m\n", + "\n", + "hf = 5.43 # head loss due to friction\n", + "\n", + "r = e/(D*100)\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "A = sqrt(2*g*D*hf/L)\n", + "\n", + "B = D/nu\n", + "\n", + "f = 0.021 # from moodys diagram\n", + "\n", + "V = A/sqrt(f)\n", + "\n", + "print V\n", + "\n", + "R = B*f\n", + "\n", + "A = pi*D**2/4\n", + "\n", + "Q = A*V\n", + "\n", + "print \"Discharge =\",round(Q,2),\"m**3/s\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.3 Page no 314" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hence the convergence is attained, D= 0.2 m\n" + ] + } + ], + "source": [ + "# Size of the case iron\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "Q =0.1 # discharge in m**3/s\n", + "\n", + "hf = 5.43 # friction loss head in m\n", + "\n", + "L = 100 # length of pipe\n", + "\n", + "nu = 1.00*10**-6 # viscosity in m**2/s\n", + "\n", + "e = 0.025 # for cast iron in cm\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "A = 8*L*Q**2/(hf*g*pi**2)\n", + "\n", + "B = 4*Q/(pi*nu)\n", + "\n", + "# for D = 0.172 ; f=0.01\n", + "D = 0.172\n", + "\n", + "r = e/D\n", + "\n", + "Re = B/D\n", + "\n", + "f = 0.022 # for Re and r\n", + "\n", + "# for D1=0.199 ; f=0.021\n", + "\n", + "D1 = 0.199\n", + "\n", + "r1 = e/D1\n", + "\n", + "R = B/D1\n", + "\n", + "f = 0.021 # for R and r\n", + "\n", + "print \"Hence the convergence is attained, D=\",round(D1,1),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.4 Page no 318" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Head loss = 2.0 ft\n" + ] + } + ], + "source": [ + "# Head loss \n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "L = 500 # length of the pipe in ft\n", + "\n", + "D= 9*2.54/100 # diameter in cm\n", + "\n", + "C = 100 # constant\n", + "\n", + "S = 0.004\n", + "\n", + "# Solution\n", + "\n", + "Hf = S*L\n", + "\n", + "print \"Head loss =\",round(Hf,0),\"ft\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.5 Page no 319" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Head loss of water = 3.2 m\n" + ] + } + ], + "source": [ + "# Head loss of water\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "Q = 0.1 # water flow rate in m**3/s\n", + "\n", + "d = 30 # diameter in m\n", + "\n", + "l = 500 # length in m\n", + "\n", + "e = 0.025 # for cast iron\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# Solution\n", + "\n", + "r = log(d/e,10)\n", + "\n", + "K = (pi/4)*sqrt(2*g)*(2*r+1.14)*(0.3)**(2.5)\n", + " \n", + "S = (Q/K)**2\n", + "\n", + "hf = S*l\n", + "\n", + "print \"Head loss of water =\",round(hf,1),\"m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.6 Page no 319" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Head loss of water = 0.1 m**3/s\n" + ] + } + ], + "source": [ + "# Head loss by conveyance method\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "Q = 0.1 # water flow rate in m**3/s\n", + "\n", + "d = 20 # diameter in cm\n", + "\n", + "l = 500 # length in m\n", + "\n", + "e = 0.025 # for cast iron\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "S = 5.43 \n", + "\n", + "# Solution\n", + "\n", + "r = log(d/e,10)\n", + "\n", + "K = (pi/4)*sqrt(2*g)*(2*r+1.14)*(0.2)**2.5\n", + "\n", + "Q=K*sqrt(S/100)\n", + "\n", + "print \"Head loss of water =\",round(Q,2),\"m**3/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.7 Page no 320" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K = 0.432 from trial and error\n" + ] + } + ], + "source": [ + "# Solve using the conveyence method\n", + "\n", + "from math import *\n", + "\n", + "# given\n", + "\n", + "eps = 0.025*10**-2 # for cast iron epsilon = 0.0025 cm\n", + "\n", + "# we get the value of K = 0.432 m**2/s\n", + "# we need to do trial and error to find the value of D\n", + "\n", + "# we use the value of D = 0.2 m\n", + "\n", + "D = 0.2 # value in m\n", + "\n", + "g = 9.81\n", + "\n", + "# Solution\n", + "\n", + "K = (pi/4)*sqrt(2*g)*(2*log10(D/(eps))+1.14)*D**(2.5)\n", + "\n", + "print \"K = \",round(K,3),\" from trial and error\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.8 Page no 326" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total head loss = 83.7 m\n" + ] + } + ], + "source": [ + "# Determine head loss\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "d = 0.1 # diameter of the pipe\n", + "\n", + "Q= 0.075 # discharge in m**3/s\n", + "\n", + "L = 30 # length in m\n", + "\n", + "A = pi*d**2/4\n", + "\n", + "g = 9.81 # acceleration due to gravity in m/s**2\n", + "\n", + "# for water\n", + "\n", + "nu = 1.007*10**-6 # viscosity in m**2/s\n", + "\n", + "e = 0.025\n", + "\n", + "r = e/(10*d)\n", + "\n", + "# Solution\n", + "\n", + "V = Q/A\n", + "\n", + "Re = V*d/nu\n", + "\n", + "f = 0.025 # firction factor from moodys diagram\n", + "\n", + "hf = f*L*V**2/(2*g*d) \n", + "\n", + "K= 0.5 # contraction constant\n", + "\n", + "hc = K*V**2/(2*g) \n", + "\n", + "K1 =10 # loss of the globe valve\n", + "\n", + "hg = K1*V**2/(2*g)\n", + "\n", + "Th = hf+hc+hg\n", + "\n", + "print \"Total head loss =\",round(Th,1),\"m\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.9 Page no 328" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge through the pipe = 0.067 m**3/s\n" + ] + } + ], + "source": [ + "# discharge through the pipe\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "# for water\n", + "\n", + "nu = 1.007*10**-6 # viscosity in m**2/s\n", + "\n", + "d1 = 0.3 # diameter of pipe 1 in m\n", + "\n", + "d2 = 0.15 # diameter of pipe 2 in m\n", + "\n", + "d3 = 0.08 # diameter of pipe 3 in m\n", + "\n", + "g = 9.81 # acclelration due to gravity in m/s**2\n", + "\n", + "e = 0.025 # for cast iron\n", + "\n", + "f1 = 0.019 # foe e/d1\n", + "\n", + "f2 = 0.022 # foe e/d2\n", + "\n", + "# Solution\n", + "\n", + "V3 = sqrt(2*g*100/((8.4*(f1)+268.85*(f2)+4.85)))\n", + "\n", + "V1 = (d3/d1)**2*V3\n", + "\n", + "V2 = (d3/d2)**2*V3\n", + "\n", + "# reynolds number for pipe BC\n", + "\n", + "R1 = V1*d1/nu\n", + "\n", + "R2 = V2*d2/nu\n", + "\n", + "Q = V3*pi*d3**2/4\n", + "\n", + "print \"Discharge through the pipe =\",round(Q,3),\"m**3/s\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.10 Page no 332" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Replacement of the flow system = 94.3 m\n" + ] + } + ], + "source": [ + "# Replace the flow system\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "D = 0.2 # diameter of pipe 1\n", + "\n", + "D1 = 0.15 # diameter of pipe 2\n", + "\n", + "Q = 0.1 # discharge in m**3/s\n", + "\n", + "nu = 1.007*10**-6 # viscosity in m**2/s\n", + "\n", + "e = 0.025 # e for cast iron\n", + "\n", + "r = e/(100*D) \n", + "\n", + "# Solution\n", + "\n", + "V = Q/(pi*(0.2)**2/4)\n", + "\n", + "R = V*D/nu\n", + "\n", + "f = 0.021 # from moodys law\n", + "\n", + "r2 = e/D1\n", + "\n", + "V1 = Q/(pi*D1**2/4)\n", + "\n", + "R1 = V*D1/nu\n", + "\n", + "f2 = 0.023 # from moodys law\n", + "\n", + "L2 = 28562*D1**5/f2\n", + "\n", + "print \"Replacement of the flow system =\",round(L2,2),\"m\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.11 Page no 335" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Discharge through branch 1 = 1.35 m**3/s\n", + "Discharge through branch 2 = 0.566 m**3/s\n", + "Discharge through branch 3 = 0.082 m**3/s\n", + "It is found that hf1=hf2=hf3 = 43.5 The distribution od discharge is correct\n" + ] + } + ], + "source": [ + "# Discharge through each branch\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "e = 0.025 # in cm\n", + "\n", + "nu = 1.007*10**-6 # viscosity in m**2/s\n", + "\n", + "Q1 = 0.5 # discharge in m**3/s\n", + "\n", + "D1 = 50\n", + "\n", + "L1 = 500 # length in m\n", + "\n", + "g = 9.81\n", + "\n", + "# Pipe 1\n", + "\n", + "r1 = e/D # r1 for pipe 1\n", + "\n", + "V1 = Q1/(pi*(0.5)**2/4)\n", + "\n", + "R = V*(0.5)/nu\n", + "\n", + "f1 = 0.018 # for the reynolds no\n", + "\n", + "hf1 = f*L1*V1**2/(2*g*D1)\n", + "\n", + "# pipe 2\n", + "\n", + "hf2 = hf1\n", + "\n", + "L2 =200 # length in m\n", + "\n", + "D2 = 0.3 # diameter in m\n", + "\n", + "r2 = e/D2\n", + "\n", + "f2 = 0.02 \n", + "\n", + "V2 = 0.419/sqrt(f2) \n", + "\n", + "R2 = V2*D2/nu\n", + "\n", + "Q2 = V2*(pi*D2**2/4)\n", + "\n", + "#pipe 3\n", + "\n", + "hf3=hf1\n", + "\n", + "L3 = 300 # length of pipe 3 in m\n", + "\n", + "D3 =0.15 # diameter of pipe 3 in m\n", + "\n", + "r3 = e/D3 \n", + "\n", + "f = 0.022 # from moody's law\n", + "\n", + "V3 = 0.242/sqrt(f2)\n", + "\n", + "R3 = V3*D3/nu\n", + "\n", + "Q3 = V3*(pi*D3**2/4)\n", + "\n", + "Td = Q1+Q2+Q3\n", + "\n", + "q1 = Q1*(2.0/Td)\n", + "\n", + "q2 = Q2*(2.0/Td)\n", + "\n", + "q3 = Q3*(2.0/Td)\n", + "\n", + "print \"Discharge through branch 1 =\",round(q1,2),\"m**3/s\"\n", + "\n", + "print \"Discharge through branch 2 =\",round(q2,3),\"m**3/s\"\n", + "\n", + "print \"Discharge through branch 3 =\",round(q3,3),\"m**3/s\"\n", + "\n", + "# Actual head loss\n", + "\n", + "d = 0.5\n", + "\n", + "v1 = q1/(pi*(d)**2/4)\n", + "\n", + "R4 = v1*d/nu\n", + "\n", + "r4 = 0.0005 # ratio of e/D\n", + "\n", + "f = 0.018\n", + "\n", + "Hf1 = f*L1*v1**2/(2*g*d)\n", + "\n", + "print \"It is found that hf1=hf2=hf3 =\",round(Hf1,1),\"The distribution od discharge is correct\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 9.14 Page no 349" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Minimum depth = 17.6 ft\n" + ] + } + ], + "source": [ + "# Find minimum depth below the ridge\n", + "\n", + "from math import *\n", + "\n", + "# Given\n", + "\n", + "e = 0.00015 # from moody's chart\n", + "\n", + "D = 2 # depth in ft\n", + "\n", + "r = e/D\n", + "\n", + "z1 = 100 # elevation in ft\n", + "\n", + "mu = 1.084*10**-5 # viscosity in Ns/ft**2\n", + "\n", + "p1 = 34 # pressure head in ft\n", + "\n", + "p2 = 10 # pressure head in ft\n", + "\n", + "g = 32.2 # acclelration due to gravity in ft/s**2\n", + "\n", + "L = 1000 # length in ft\n", + "\n", + "# Solution\n", + "\n", + "f = 0.011 # assume\n", + "\n", + "V = sqrt(100/(10000/(2*2*g)))/sqrt(f)\n", + "\n", + "R = V*D/mu\n", + "\n", + "V1 = 10.15\n", + "\n", + "f1 = 0.0125\n", + "\n", + "Q = V1*pi*D**2/4\n", + "\n", + "x = p1-p2-(V1**2/(2*g))-(f1*L*V1**2/(2*g*D))\n", + "\n", + "Dp = 30 - x\n", + "\n", + "print \"Minimum depth =\",round(Dp,2),\"ft\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot1.png b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot1.png Binary files differnew file mode 100755 index 00000000..caf0a78f --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot1.png diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot2.png b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot2.png Binary files differnew file mode 100755 index 00000000..35633e7f --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot2.png diff --git a/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot3.png b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot3.png Binary files differnew file mode 100755 index 00000000..03ac1d9d --- /dev/null +++ b/Fluid_Mechanics_by_Irfan_A._Khan/screenshots/plot3.png |