summaryrefslogtreecommitdiff
path: root/Fluid_Mechanics_by_John_F._Douglas
diff options
context:
space:
mode:
authorkinitrupti2017-05-12 18:53:46 +0530
committerkinitrupti2017-05-12 18:53:46 +0530
commitf270f72badd9c61d48f290c3396004802841b9df (patch)
treebc8ba99d85644c62716ce397fe60177095b303db /Fluid_Mechanics_by_John_F._Douglas
parent64d949698432e05f2a372d9edc859c5b9df1f438 (diff)
downloadPython-Textbook-Companions-f270f72badd9c61d48f290c3396004802841b9df.tar.gz
Python-Textbook-Companions-f270f72badd9c61d48f290c3396004802841b9df.tar.bz2
Python-Textbook-Companions-f270f72badd9c61d48f290c3396004802841b9df.zip
Removed duplicates
Diffstat (limited to 'Fluid_Mechanics_by_John_F._Douglas')
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_1.ipynb61
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_10.ipynb341
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_11.ipynb120
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_12.ipynb319
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_13.ipynb142
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_14.ipynb365
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_15.ipynb114
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_16.ipynb144
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_17.ipynb274
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_2.ipynb493
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_20.ipynb115
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_22.ipynb191
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_23.ipynb302
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_24.ipynb183
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_25.ipynb328
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_3.ipynb372
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_4.ipynb185
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_5.ipynb517
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_6.ipynb504
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_7.ipynb221
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_8.ipynb73
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/Chapter_9.ipynb337
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/README.txt10
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/Screenshot_from_2014-04-24_10_11_42.pngbin0 -> 38369 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/ch11.pngbin0 -> 70706 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/ch3.pngbin0 -> 67888 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/ch5.pngbin0 -> 69757 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/incresepressure.pngbin0 -> 48265 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/plot1.pngbin0 -> 27945 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/plot2.pngbin0 -> 14805 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn.pngbin0 -> 45080 bytes
-rwxr-xr-xFluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn_1.pngbin0 -> 41027 bytes
32 files changed, 5711 insertions, 0 deletions
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_1.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_1.ipynb
new file mode 100755
index 00000000..a2dd3e26
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_1.ipynb
@@ -0,0 +1,61 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4a6f98ae985b8e1b6e034e8590a04939cfd519f9354fb6a0851df17e977d9e9f"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 1: Fluid and their Properties"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 1.1, Page 14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ " #Initialization of Variable\n",
+ "sigma = 72.7*10**-3; #Surface Tension\n",
+ "r = 1 *10**-3; #Radius of Bubble\n",
+ "\n",
+ " #Calculations\n",
+ "P = 2*sigma/r;\n",
+ "print \"Excess Pressure(N/m2) :\",P\n",
+ "\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Excess Pressure(N/m2) : 145.4\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_10.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_10.ipynb
new file mode 100755
index 00000000..510f6bab
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_10.ipynb
@@ -0,0 +1,341 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:03b40b6d5c44ff714aac13480905f296c46afa917e2740a687e8aa66bb21b428"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10: Laminar and Turbulent Flows in Bounded System"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.1, Page 329"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import symbols,diff,solve\n",
+ "\n",
+ " #Initializing the variables\n",
+ "mu = 0.9;\n",
+ "rho = 1260;\n",
+ "g = 9.81;\n",
+ "x = 45; #theta in degrees\n",
+ "P1 = 250 * 10**3;\n",
+ "P2 = 80* 10**3;\n",
+ "Z1 = 1;\n",
+ "Z2 = 0; # datum\n",
+ "U = -1.5;\n",
+ "Y = 0.01;\n",
+ "\n",
+ " #Calculations\n",
+ "gradP1 = P1+ rho*g*Z1;\n",
+ "gradP2 = P2+ rho*g*Z2;\n",
+ "DPstar = (gradP1-gradP2)*math.sin(math.radians(x))/(Z1-Z2);\n",
+ "A = U/Y; # Coefficient U/Y for equation 10.6\n",
+ "B = DPstar/(2*mu) # Coefficient dp*/dx X(1/2mu) for equation 10.6\n",
+ "y = symbols('y')\n",
+ "v = round((A + B*Y),1)*y -round(B)*y**2\n",
+ "duBYdy = diff(v,y);\n",
+ "tau = 0.9*duBYdy;\n",
+ "stagPnts = solve(duBYdy,y)\n",
+ "ymax=stagPnts[0] #value of y where derivative vanishes.;\n",
+ "umax = (A + B*Y)*ymax + B*ymax**2; # Check the value there is slight mistake in books answer\n",
+ "def u(y):\n",
+ " z = (A + B*Y)*y -B*y**2;\n",
+ " return diff(z,y)\n",
+ "def dif(y):\n",
+ " return round((A + B*Y)) -2*round(B)*y\n",
+ "\n",
+ "taumax=abs(mu*dif(Y))\n",
+ "\n",
+ "print \"velocity distribution :\",v\n",
+ "print \"shear stress distribution :\",mu*dif(y)\n",
+ "print \"maximum flow velocity (m/s) :\",round(umax,2)\n",
+ "print \"Maximum Shear Stress (kN/m^2):\",(round(taumax)/1000)\n",
+ " \n",
+ "\n",
+ "print "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "velocity distribution : -71638.0*y**2 + 566.4*y\n",
+ "shear stress distribution : -128948.4*y + 509.4\n",
+ "maximum flow velocity (m/s) : 3.36\n",
+ "Maximum Shear Stress (kN/m^2): 0.78\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.2, Page 335"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "mu = 0.9;\n",
+ "rho = 1260;\n",
+ "d = 0.01;\n",
+ "Q = 1.8/60*10**-3; #Flow in m**3 per second\n",
+ "l = 6.5;\n",
+ "ReCrit = 2000;\n",
+ " #Calculations\n",
+ "A = (math.pi*d**2)/4;\n",
+ "MeanVel = Q/A;\n",
+ "Re = rho*MeanVel*d/mu/10; # Check properly the answer in book there is something wrong\n",
+ "Dp = 128*mu*l*Q/(math.pi*d**4)\n",
+ "Qcrit = Q*ReCrit/Re*10**3;\n",
+ "\n",
+ "print \"Pressure Loss (kN/m2) :\",round(Dp/1000,0)\n",
+ "print \"Maximum Flow rate (litres/s) :\",round(Qcrit,0)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure Loss (kN/m2) : 715.0\n",
+ "Maximum Flow rate (litres/s) : 112.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3, Page 341"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "mu = 1.14*10**-3;\n",
+ "rho = 1000;\n",
+ "d = 0.04;\n",
+ "Q = 4*10**-3/60; #Flow in m**3 per second\n",
+ "l = 750;\n",
+ "ReCrit = 2000;\n",
+ "g = 9.81;\n",
+ "k = 0.00008; # Absolute Roughness\n",
+ "\n",
+ " #Calculations\n",
+ "A = (math.pi*d**2)/4;\n",
+ "MeanVel = Q/A;\n",
+ "Re = rho*MeanVel*d/mu;\n",
+ "Dp = 128*mu*l*Q/(math.pi*d**4);\n",
+ "hL = Dp/(rho*g);\n",
+ "f = 16/Re;\n",
+ "hlDa = 4*f*l*MeanVel**2/(2*d*g); # By Darcy Equation\n",
+ "Pa = rho*g*hlDa*Q;\n",
+ "\n",
+ " #Part(b)\n",
+ "Q = 30*10**-3/60; #Flow in m**3 per second\n",
+ "MeanVel = Q/A;\n",
+ "Re = rho*MeanVel*d/mu;\n",
+ "RR = k/d; # relative roughness\n",
+ "f = 0.008 #by Moody diagram for Re = 1.4 x 10**4 and relative roughness = 0.002\n",
+ "hlDb = 4*f*l*MeanVel**2/(2*d*g); # By Darcy Equation\n",
+ "Pb = rho*g*hlDb*Q;\n",
+ "\n",
+ "\n",
+ "print \"!---- Case (a) ----!\\n\",\"Head Loss(mm) :\",round(hlDa*1000,1)\n",
+ "print \"Power Required (W) :\",round(Pa,4)\n",
+ "print \"\\n!---- Case (b) ----!\\n\",\"Head Loss(m) :\",round(hlDb,2)\n",
+ "print \"Power Required (W) :\",round(Pb,0)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "!---- Case (a) ----!\n",
+ "Head Loss(mm) : 92.5\n",
+ "Power Required (W) : 0.0605\n",
+ "\n",
+ "!---- Case (b) ----!\n",
+ "Head Loss(m) : 4.84\n",
+ "Power Required (W) : 24.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.4, Page 343"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "w = 4.5;\n",
+ "d = 1.2 ;\n",
+ "C = 49;\n",
+ "i = 1/800;\n",
+ "\n",
+ " #Calculations\n",
+ "A = d*w;\n",
+ "P = 2*d + w;\n",
+ "m = A/P;\n",
+ "v = C*(m*i)**0.5;\n",
+ "Q = v*A;\n",
+ "\n",
+ "print \"Mean Velocity (m/s):\",round(v,2)\n",
+ "print \"Discharge (m3/s) :\",round(Q,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean Velocity (m/s): 1.53\n",
+ "Discharge (m3/s) : 8.28\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.5, Page 348"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import sympy\n",
+ "from sympy import symbols\n",
+ "\n",
+ " #Initializing the variables\n",
+ "r,R = symbols('r R')\n",
+ "\n",
+ "#Calculations\n",
+ "rbyR=round((1-(49/60)**7),3)\n",
+ "r = (rbyR)*R \n",
+ "\n",
+ "#Result\n",
+ "print \"radius at which actual velocity is equal to mean velocity is\",r"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "radius at which actual velocity is equal to mean velocity is 0.758*R\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.7, Page 355"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "d1 = 0.140;\n",
+ "d2 = 0.250;\n",
+ "DpF_DpR = 0.6; #Difference in head loss when in forward and in reverse direction\n",
+ "K = 0.33 #From table\n",
+ "g = 9.81;\n",
+ " #Calculations\n",
+ "ratA = (d1/d2)**2;\n",
+ "v =(DpF_DpR*2*g/((1-ratA)**2-K))**0.5;\n",
+ "\n",
+ "print \"Velocity (m/s):\",round(v,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity (m/s): 9.13\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_11.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_11.ipynb
new file mode 100755
index 00000000..ac453318
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_11.ipynb
@@ -0,0 +1,120 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:8adfc21cf4552e14b563ca7c0f2e56ece56cd7f1691cf9486f2cfbd789df7be1"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11: Boundary Layer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.1, Page 383"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 860;\n",
+ "v = 10**-5;\n",
+ "Us = 3;\n",
+ "b = 1.25;\n",
+ "l = 2;\n",
+ "\n",
+ " #Calculations\n",
+ "x = 1; # At x =1 \n",
+ "Rex = Us*x/v;\n",
+ "ReL = Us*l/v ;\n",
+ "mu = rho*v;\n",
+ "T0 = 0.332*mu*Us/x*Rex**0.5;\n",
+ "Cf = 1.33*ReL**-0.5;\n",
+ "F = rho*Us**2*l*b*Cf ;\n",
+ "print \"shear stress (N/m^2) :\" ,round(T0,1)\n",
+ "print \"Total, double-sided resistance of the plate (N) :\",round(F,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "shear stress (N/m^2) : 4.7\n",
+ "Total, double-sided resistance of the plate (N) : 33.224\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.2, Page 387"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Us = 6;\n",
+ "b = 3;\n",
+ "l = 30;\n",
+ "rho = 1000;\n",
+ "mu = 10**-3;\n",
+ "T = 20+273; # Temperature in Kelvin\n",
+ "\n",
+ " #Calculations\n",
+ " \n",
+ "ReL = rho*Us*l/mu; \n",
+ "Cf = 0.455*math.log10(ReL)**-2.58 ;\n",
+ "\n",
+ "F = rho*Us**2*l*b*Cf ;\n",
+ "Lt = 10**5*mu/(rho*Us); # Assuming transition at Rel = 10**5\n",
+ "\n",
+ "print \"Drag Force (kN) :\", round(F/1000,2)\n",
+ "print \"Transition length (m) :\",round(Lt,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Drag Force (kN) : 6.36\n",
+ "Transition length (m) : 0.0167\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_12.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_12.ipynb
new file mode 100755
index 00000000..745a2241
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_12.ipynb
@@ -0,0 +1,319 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:24438326f2aac267ced1e2e3aa21e094819eefb50d5f8862608b62208400992d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12: Incompressible Flow around a Body"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.1, Page 399"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "x =35;\n",
+ "T = 50;\n",
+ "m = 1;\n",
+ "g =9.81;\n",
+ "rho = 1.2;\n",
+ "A = 1.2;\n",
+ "U0 = 40*1000/3600; # Velocity in m/s\n",
+ "\n",
+ " #Calculations\n",
+ "L = T*math.sin(math.radians(x))+m*g;\n",
+ "D =T*math.cos(math.radians(x));\n",
+ "Cl = 2*L/(rho*U0**2*A);\n",
+ "Cd = 2*D/(rho*U0**2*A); \n",
+ "\n",
+ "print \"Lift Coefficient :\",round(Cl,3)\n",
+ "print \"Drag Coefficient :\",round(Cd,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Lift Coefficient : 0.433\n",
+ "Drag Coefficient : 0.461\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.2, Page 406"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Vp =12;\n",
+ "lp = 40;\n",
+ "lm = 1;\n",
+ "As = 2500;\n",
+ "Dm = 32;\n",
+ "rhoP = 1025;\n",
+ "rhoM = 1000;\n",
+ "Ap = As;\n",
+ "\n",
+ " #Calculations\n",
+ "Am = As/40**2;\n",
+ "Vm = round(Vp*(lm/lp)**0.5,2);\n",
+ "Dfm = round(3.7*Vm**1.95*Am,1);\n",
+ "Rm = Dm - Dfm;\n",
+ "Rp = Rm *(rhoP/rhoM)*(lp/lm)**2*(Vp/Vm)**2;\n",
+ "Dfp = 2.9*Vp**1.8*Ap;\n",
+ "Dp = Rp + Dfp;\n",
+ "\n",
+ "print \"Expected total resistance (kN) :\",round(Dp/1000,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Expected total resistance (kN) : 1407.07\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.3, Page 410"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "U0 = 80*1000/3600;\n",
+ "d = 0.02;\n",
+ "rho =1.2;\n",
+ "mu = 1.7*10**-5;\n",
+ "A = 0.02*500; # Projected area of wire\n",
+ "N = 20; # No of cables\n",
+ "\n",
+ " #Calculations\n",
+ "Re = rho*U0*d/mu;\n",
+ "Cd = 1.2 # From figure 12.10 for given Re; \n",
+ "D = 0.5*rho*Cd*A*U0**2\n",
+ "F = N*D; \n",
+ "f = 0.198*(U0/d)*(1-19.7/Re);\n",
+ "\n",
+ "print \"Total force on tower (kN) :\",round(F/1000,2)\n",
+ "print \"Frequency (Hz) :\",round(f,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total force on tower (kN) : 71.11\n",
+ "Frequency (Hz) : 219.9\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.4, Page 415"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "mu = 0.03;\n",
+ "d = 10**-3;\n",
+ "rhoP = 1.1*10**3;\n",
+ "g = 9.81;\n",
+ "rho0 = 0.9*10**3;\n",
+ " #Calculations\n",
+ "B = 18*mu/(d**2*rhoP);\n",
+ "t = round(4.60/B,4);\n",
+ "Vt = round(d**2*(rhoP - rho0)*g/(18*mu),5);\n",
+ "Re = rho0*Vt*d/mu;\n",
+ "\n",
+ "print \"Time taken by the particle take to reach 99 per cent of its terminal velocity (s):\",t\n",
+ "print \"\\nReynolds No corrosponding to the velocity :\",Re"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time taken by the particle take to reach 99 per cent of its terminal velocity (s): 0.0094\n",
+ "\n",
+ "Reynolds No corrosponding to the velocity : 0.1089\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.5, Page 417"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "muO = 0.0027;\n",
+ "Vt = 3*10**-3;\n",
+ "rhoW = 1000;\n",
+ "rhoP = 2.4*rhoW;\n",
+ "rhoO = 0.9*rhoW;\n",
+ "g = 9.81;\n",
+ "muA = 1.7*10**-5;\n",
+ "rhoA = 1.3;\n",
+ "\n",
+ " #Calculations\n",
+ "d = (18*muO*Vt/(rhoP-rhoO)/g)**0.5;\n",
+ "Re = Vt*d*rhoO/muO;\n",
+ "\n",
+ " #Movement of particle in upward direction\n",
+ "if(Re < 1):\n",
+ " v = 0.5;\n",
+ " \n",
+ " Re=5; # from fig 12.15\n",
+ " vt = muA*Re/(rhoA*d);\n",
+ " u = vt+v;\n",
+ " print \"Velocity of air stream blowing vertically up (m/s) :\",round(u,3) \n",
+ "else:\n",
+ " print \"strokes law is not valid\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity of air stream blowing vertically up (m/s) : 1.157\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.6, Page 429"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "c = 2;\n",
+ "s = 10;\n",
+ "rho = 5.33;\n",
+ "rho_ellip = 1.2;\n",
+ "D = 400;\n",
+ "L = 45000;\n",
+ "scale = 20;\n",
+ "U_windTunnel = 500;\n",
+ "U_proto = 400*1000/3600;\n",
+ "\n",
+ " #Calculations\n",
+ "A = c*s;\n",
+ "U_model = U_windTunnel/scale;\n",
+ "Cd = D/(0.5*rho*U_model**2*A);\n",
+ "Cl = L/(0.5*rho_ellip*U_proto**2*A); # Considering elliptical Lift model\n",
+ "Cdi = Cl**2/(math.pi*s/c); # Aspect Ratio = s/c \n",
+ "Cdt = Cd + Cdi;\n",
+ "Dw = 0.5*Cdt*rho_ellip*U_proto**2*A;\n",
+ "print \"Total drag on full sized wing (kN) :\",round(Dw/1000,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total drag on full sized wing (kN) : 2.65\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_13.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_13.ipynb
new file mode 100755
index 00000000..664b4abf
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_13.ipynb
@@ -0,0 +1,142 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:1f446f61d8838d40d2e31fd72ef3a0bc1e1a7f291c54a48c1366aef232ac3797"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13: Compressible Flow around a Body"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.1, Page 444"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho0 = 1.8;\n",
+ "R = 287;\n",
+ "T = 75+273; # Temperature in kelvin \n",
+ "gma = 1.4; \n",
+ "Ma = 0.7;\n",
+ "\n",
+ " #Calculations\n",
+ "P0 = rho0*R*T;\n",
+ "c = (gma*R*T)**0.5;\n",
+ "V0 = Ma*c;\n",
+ "Pt = (P0**((gma-1)/gma) + rho0*((gma-1)/gma)*(V0**2/(2*P0**(1/gma))))**(gma/(gma-1));\n",
+ "rhoT = rho0*(Pt/P0)**(1/gma);\n",
+ "Tt = Pt/(R*rhoT)-273;\n",
+ "\n",
+ "print \"Staganation Pressure (kN/m2 ) :\",round(Pt/1000,1)\n",
+ "print \"Temperature (Degree Celcius) :\",round(Tt,1)\n",
+ "print \"Density of airstream (kg/m3) :\",round(rhoT,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Staganation Pressure (kN/m2 ) : 249.4\n",
+ "Temperature (Degree Celcius) : 109.1\n",
+ "Density of airstream (kg/m3) : 2.274\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2, Page 454"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "R = 287;\n",
+ "T = 28+273;\n",
+ "gma = 1.4;\n",
+ "P = 1.02*10**5;\n",
+ "rhoHg = 13.6*10**3;\n",
+ "g = 9.81;\n",
+ "\n",
+ " #Calculations\n",
+ " #Case(a)\n",
+ "U0 = 50;\n",
+ "c = (gma*R*T)**0.5;\n",
+ "Ma = U0/c;\n",
+ "rho = P/(R*T);\n",
+ "DelP = 0.5*rho*U0**2; #Pt-P\n",
+ "ha = DelP/(rhoHg*g);\n",
+ "\n",
+ " #Case(b)\n",
+ "U0 = 250;\n",
+ "Ma = U0/c;\n",
+ "Pt = P*(1+(gma-1)*Ma**2/2)**(gma/(gma-1)); \n",
+ "DelP = Pt-P\n",
+ "hb = DelP/(rhoHg*g);\n",
+ "\n",
+ " #Case (c)\n",
+ "U0 = 420;\n",
+ "Ma1 =U0/c;\n",
+ "P2 = P*((2*gma/(gma+1))*Ma1**2 - ((gma-1)/(gma+1)));\n",
+ "N = Ma1**2 +2/(gma-1); # Numerator\n",
+ "D = 2*gma*Ma1**2/(gma-1)-1;\n",
+ "Ma2 = (N/D)**0.5;\n",
+ "Pt2 = P2*(1+(gma-1)*Ma2**2/2)**(gma/(gma-1));\n",
+ "hc = (Pt2-P2)/(rhoHg*g) ; \n",
+ "\n",
+ "print \"Difference in height of mercury column in case (a) in mm :\",round(ha*1000,2)\n",
+ "print \"Difference in height of mercury column in case (b) in mm :\",round(hb*1000,1)\n",
+ "print \"Difference in height of mercury column in case (c) in mm :\",round(hc*1000,0)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Difference in height of mercury column in case (a) in mm : 11.06\n",
+ "Difference in height of mercury column in case (b) in mm : 314.2\n",
+ "Difference in height of mercury column in case (c) in mm : 684.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_14.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_14.ipynb
new file mode 100755
index 00000000..2e55c7c8
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_14.ipynb
@@ -0,0 +1,365 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:75785fe7e68940de5df81a115443b8d5c78793053ae837735e58f86a072c05cc"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14: Steady Incompressible Flow in Pipe and Duct System"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.1, Page 468"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "L1 = 5;\n",
+ "L2 = 10;\n",
+ "d = 0.1;\n",
+ "f = 0.08;\n",
+ "Za_Zc = 4; #difference in height between A and C \n",
+ "g = 9.81 ;\n",
+ "Pa = 0;\n",
+ "Va = 0; \n",
+ "Za_Zb = -1.5;\n",
+ "V = 1.26;\n",
+ "rho = 1000;\n",
+ "\n",
+ " #Calculations\n",
+ "D = 1.5 + 4*f*(L1+L2)/d ; # Denominator in case of v**2 \n",
+ "v = (2*g*Za_Zc/D)**0.5;\n",
+ "Pb = rho*g*Za_Zb - rho*V**2/2*(1.5+4*f*L1/d);\n",
+ "print \"Pressure in the pipe at B (kN/m2):\",round(Pb/1000,2)\n",
+ "print \"Mean Velocity at C (m/s) :\",round(v,2)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure in the pipe at B (kN/m2): -28.61\n",
+ "Mean Velocity at C (m/s) : 1.26\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.3, Page 473"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from sympy import symbols,solve\n",
+ "import sympy\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Za_Zb = 10;\n",
+ "f = 0.008;\n",
+ "L = 100;\n",
+ "d1 = 0.05;\n",
+ "g = 9.81;\n",
+ "d2 = 0.1;\n",
+ "\n",
+ " #Calculations\n",
+ "\n",
+ "def flowRate(d):\n",
+ " D = 1.5 + 4*f*L/d ; # Denominator in case of v1**2\n",
+ " A = math.pi*d**2/4;\n",
+ " v = (2*g*Za_Zb/D)**0.5;\n",
+ " z = A*v;\n",
+ " return z \n",
+ "Q1 = flowRate(d1);\n",
+ "Q2 = flowRate(d2);\n",
+ "Q=round(Q1+Q2,4)\n",
+ "\n",
+ "\n",
+ "D=symbols('D')\n",
+ "roots=solve(241212*D**5 -3.2, D)\n",
+ "dia=roots[0]\n",
+ "\n",
+ "print \"Rate flow for pipe 1 (m^3/s) :\",round(Q1,4)\n",
+ "print \"Rate flow for pipe 2 (m^3/s) :\",round(Q2,4)\n",
+ "print \"Combined Rate flow (m^3/s) :\",round(Q,4)\n",
+ "print \"Diameter of single equivalent pipe (mm) :\",round(dia,3)*1000\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rate flow for pipe 1 (m^3/s) : 0.0034\n",
+ "Rate flow for pipe 2 (m^3/s) : 0.019\n",
+ "Combined Rate flow (m^3/s) : 0.0224\n",
+ "Diameter of single equivalent pipe (mm) : 106.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.4, Page 476"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import solve,symbols\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Za_Zb = 16;\n",
+ "Za_Zc = 24;\n",
+ "f = 0.01;\n",
+ "l1 = 120;\n",
+ "l2 = 60;\n",
+ "l3 = 40;\n",
+ "d1 = 0.12;\n",
+ "d2 = 0.075;\n",
+ "d3 = 0.060;\n",
+ "g = 9.81;\n",
+ " #Calculations\n",
+ "\n",
+ "v1=symbols('v1')\n",
+ "ash=solve(v1-0.3906*(g-1.25*v1**2)**0.5-0.25*(17.657-1.5*v1**2)**0.5,v1)\n",
+ "v1=round(abs(ash[0]),2)\n",
+ "Q1=math.pi/4*d1**2*v1\n",
+ "\n",
+ "v2=(g-1.25*v1**2)**0.5\n",
+ "Q2=math.pi/4*d2**2*v2\n",
+ "\n",
+ "v3=(17.657-1.5*v1**2)**0.5\n",
+ "Q3=math.pi/4*d3**2*v3\n",
+ "\n",
+ "print \"Flow rate in pipe 1 (m^3/s):\",round(Q1,4)\n",
+ "print \"Flow rate in pipe 2 (m^3/s):\",round(Q2,4)\n",
+ "print \"Flow rate in pipe 3 (m^3/s):\",round(Q3,4)\n",
+ "print \"continuity condition satisfied as Q1=Q2+Q3\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Flow rate in pipe 1 (m^3/s): 0.0206\n",
+ "Flow rate in pipe 2 (m^3/s): 0.0105\n",
+ "Flow rate in pipe 3 (m^3/s): 0.0101\n",
+ "continuity condition satisfied as Q1=Q2+Q3\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.5, Page 480"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "D = 0.3;\n",
+ "Q = 0.8;\n",
+ "rho = 1.2;\n",
+ "f = 0.008;\n",
+ "L_entry = 10;\n",
+ "L_exit = 30;\n",
+ "Lt = 20*D #Transition may be represented by a separation loss equivalent length of 20 * the approach duct diameter\n",
+ "K_entry = 4;\n",
+ "K_exit = 10\n",
+ "l = 0.4; # length of cross section\n",
+ "b = 0.2; # width of cross section\n",
+ "\n",
+ " #Calculations\n",
+ "A = math.pi*D**2/4;\n",
+ "Dp1 = 0.5*rho*Q**2/A**2*(K_entry + 4*f*(L_entry+Lt)/D);\n",
+ "area = l*b;\n",
+ "perimeter =2*(l+b);\n",
+ "m = area/perimeter;\n",
+ "Dp2 = 0.5*rho*Q**2/area**2*(K_exit + f*L_exit/m);\n",
+ "Dfan = Dp1+Dp2;\n",
+ "\n",
+ "print \"fan Pressure input (N/m2) :\",round(Dfan,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "fan Pressure input (N/m2) : 1254.6\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.6, Page 482"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "D = [0.15 , 0.3];\n",
+ "rho = 1.2;\n",
+ "f = 0.008;\n",
+ "L_entry = 10;\n",
+ "L_exit = 20;\n",
+ "Lt = 20*D[1] \n",
+ "K = 4;\n",
+ "Q1 = 0.2;\n",
+ "\n",
+ " #Calculations\n",
+ "Q2 = 4*Q1;\n",
+ "A=[0.0,0.0]\n",
+ "A[0] = math.pi*D[0]**2/4;\n",
+ "A[1] = math.pi*D[1]**2/4;\n",
+ "Dp1 = 0.5*rho*Q1**2/A[0]**2*(K + 4*f*L_entry/D[0]);\n",
+ "Dp2 = 0.5*rho*Q2**2/A[1]**2*(4*f*(L_exit + Lt)/D[1]);\n",
+ "Dfan = Dp1+Dp2;\n",
+ "\n",
+ "print \"fan Pressure input (N/m2) :\",round(Dfan,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "fan Pressure input (N/m2) : 684.51\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.7, Page 487"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from scipy.optimize import fsolve\n",
+ " \n",
+ " \n",
+ " \n",
+ " #Initializing the variables\n",
+ "d = [0.1 , 0.125, 0.15, 0.1, 0.1 ]; # Corrosponding to AA1B AA2B BC CD CF\n",
+ "l = [30 , 30 , 60, 15, 30]; # Corrosponding to AA1B AA2B BC CD CF\n",
+ "rho = 1.2;\n",
+ "f = 0.006;\n",
+ "Ha = 100;\n",
+ "Hf = 60;\n",
+ "He = 40;\n",
+ "K = [0.0, 0.0, 0.0, 0.0, 0.0]\n",
+ " #Calculations\n",
+ "for i in range(0,len(l)):\n",
+ " K[i] = f*l[i]/(3*d[i]**5);\n",
+ "\n",
+ "\n",
+ "K_ab = K[0]*K[1]/((K[0])**0.5+(K[1])**0.5)**2;\n",
+ "K_ac = K_ab + K[2];\n",
+ "Hc = (K_ac*Hf +K[4]*Ha/4)/(K_ac+K[4]/4);\n",
+ "Q = ((Ha - Hc)/K_ac)**0.5;\n",
+ "\n",
+ "def f(n):\n",
+ " z = He - Hc + (0.5*Q)**2 *(K[3]+(4000/n)**2);\n",
+ " return z\n",
+ "\n",
+ "n = fsolve(f,1);\n",
+ "\n",
+ "print \"total Volume flow rate (m3/s):\",round(Q, 4)\n",
+ "print \"Head at C (m) :\",round(Hc,2) \n",
+ "print \"Percentage valve opening (%) :\",round(n,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "total Volume flow rate (m3/s): 0.1016\n",
+ "Head at C (m) : 75.48\n",
+ "Percentage valve opening (%) : 38.58\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_15.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_15.ipynb
new file mode 100755
index 00000000..95bd78ec
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_15.ipynb
@@ -0,0 +1,114 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4f421cc7413696fe7c281427d95aff4b53c3ab081abe9cd6d31d1e2df1133e5a"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ " Chapter 15: Uniform Flows in Open Channels"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.1, Page 516"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "B =4;\n",
+ "D = 1.2;\n",
+ "C = 7.6;\n",
+ "n = 0.025;\n",
+ "s = 1/1800;\n",
+ "\n",
+ " #Calculations\n",
+ "W = B + 2*1.5*D;\n",
+ "A = D*(B+C)/2; # Area of parallelogram formed\n",
+ "P = B +2*1.2*(D**2+(1.5)**2)**0.5;\n",
+ "m =A/P;\n",
+ "i=s;\n",
+ "C = (23+0.00155/i+1/n)/(1+(23+0.00155/i)*n/(m)**0.5); # By Kutter formula\n",
+ "Q1 = C*A*(m*i)**0.5;\n",
+ "Q2 = A*(1/n)*m**(2/3)*(i)**0.5;\n",
+ "\n",
+ "print \"Q using Chezy formula with C determined from the Kutter formula (m^3/s) :\",round(Q1,2)\n",
+ "print \"Q using the Manning formula (m^3/s) :\",round(Q2,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q using Chezy formula with C determined from the Kutter formula (m^3/s) : 5.65\n",
+ "Q using the Manning formula (m^3/s) : 5.69\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 15.2, Page 518"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Q = 0.5;\n",
+ "C = 80;\n",
+ "i = 1/2000;\n",
+ "\n",
+ " #Calculations\n",
+ "\n",
+ "# A = D**2+(3/4)*D**2 = (7/4)*D**2\n",
+ "D = ((4/7)*(Q/C)*(2/i)**0.5)**(2/5)\n",
+ "\n",
+ "#Result\n",
+ "print \"Optimum depth = Optimum Width (in metres):\",round(D,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Optimum depth = Optimum Width (in metres): 0.552\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_16.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_16.ipynb
new file mode 100755
index 00000000..73f04778
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_16.ipynb
@@ -0,0 +1,144 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:130e6e124bfc557e016f12e2356b74f1d97ea210c47b1944be1ebda3297e63a8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16: Non-Uniform Flow in Open Channels"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.2, Page 541"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "B = [1.4 ,0.9];\n",
+ "D = [0.6 ,0.32];\n",
+ "g = 9.81;\n",
+ "h = 0.03;\n",
+ "Z = 0.25; \n",
+ "\n",
+ " #Calculations\n",
+ "Q1 = B[1]*D[1]*(2*g*h/(1-(B[1]*D[1]/B[0]*D[0])**2))**0.5\n",
+ "E = D[0]-Z;\n",
+ "Q2 = 1.705*B[1]*E**1.5;\n",
+ "\n",
+ "print \"Volume flow rate (m3/s) :\",round(Q2,4) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Volume flow rate (m3/s) : 0.3177\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.3, Page 546"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "a =0.5;\n",
+ "b = 0.5;\n",
+ "Dn = 1.2;\n",
+ "s = 1/1000;\n",
+ "C = 55;\n",
+ "g = 9.81;\n",
+ "\n",
+ " #Calculations\n",
+ "c = (1+a)/b; \n",
+ "QbyB = Dn*C*(Dn*s)**0.5;\n",
+ "q = QbyB;\n",
+ "Dc = (q**2/g)**(1/3);\n",
+ "\n",
+ "header = \"Mean Depth(Dm) Numenator Denominator\\t L\"\n",
+ "unit = \" (m) \\t \\t \\t \\t(m)\"\n",
+ "\n",
+ "m=[]\n",
+ "Dm=[]\n",
+ "N=[]\n",
+ "D=[]\n",
+ "Lm=[]\n",
+ "total=0\n",
+ "for c in range(7): \n",
+ " m.append(2.4-0.15*c);\n",
+ " Dm.append((m[c]+m[c]-0.15)/2); \n",
+ " N.append(1 - (Dc/Dm[c])**3) ; # Numerator\n",
+ " D.append(1 - (Dn/Dm[c])**3); # Denominator\n",
+ " Lm.append(150*(N[c]/D[c]));\n",
+ " total = total +Lm[c];\n",
+ "\n",
+ "print header\n",
+ "print unit\n",
+ "for c in range(7):\n",
+ " mm=str(Dm[c])+'\\t '+str(round(N[c],4))+' '+str(round(D[c],4))+' \\t'+str(round(Lm[c],2))\n",
+ " print mm\n",
+ " \n",
+ "print \"\\ndistance upstream covered (approx in m):\",round(total)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean Depth(Dm) Numenator Denominator\t L\n",
+ " (m) \t \t \t \t(m)\n",
+ "2.325\t 0.9576 0.8625 \t166.54\n",
+ "2.175\t 0.9482 0.8321 \t170.94\n",
+ "2.025\t 0.9358 0.7919 \t177.26\n",
+ "1.875\t 0.9192 0.7379 \t186.86\n",
+ "1.725\t 0.8962 0.6634 \t202.65\n",
+ "1.575\t 0.8636 0.5577 \t232.27\n",
+ "1.425\t 0.8159 0.4028 \t303.8\n",
+ "\n",
+ "distance upstream covered (approx in m): 1440.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_17.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_17.ipynb
new file mode 100755
index 00000000..2791e2c2
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_17.ipynb
@@ -0,0 +1,274 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:c21785277c0a99c3eb4c310a9e20c477f6ab2a0a22da1b2d3844df1699a78d21"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17: Compressible Flow in Pipes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.1, Page 566"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import solve,symbols\n",
+ "\n",
+ " #Initializing the variables\n",
+ "g = 9.81;\n",
+ "rho = 1000;\n",
+ "rhoHg = 13.6*rho;\n",
+ "d1 = 0.075;\n",
+ "d2 = 0.025;\n",
+ "Pi = 0.250;\n",
+ "Pt = 0.150;\n",
+ "P_Hg = 0.760;\n",
+ "rho1 = 1.6;\n",
+ "gma = 1.4;\n",
+ "\n",
+ " #Calculations\n",
+ "P1 = (Pi+P_Hg)*rhoHg*g;\n",
+ "P2 = (Pt+P_Hg)*rhoHg*g;\n",
+ "rho2 = rho1*(P2/P1)**(1/gma);\n",
+ "V0=symbols('V0')\n",
+ "V1=symbols('V1')\n",
+ "Velo = solve([d2**2*V1*rho2-d1**2*V0*rho1,0.5*(V1**2 - V0**2)*((gma-1)/gma)*(rho2*rho1/(rho2*P1-rho1*P2))-1],[V0,V1])\n",
+ "s=(Velo[1])[0]\n",
+ "Flow = math.pi*d1**2/4*s;\n",
+ "\n",
+ "print \"Volume of flow (m3/s):\",round(Flow,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Volume of flow (m3/s): 0.06\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.2, Page 571"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Ma = 4;\n",
+ "gma = 1.4;\n",
+ "At = 500; # in mm\n",
+ "\n",
+ " #Calculations\n",
+ "N = 1 + (gma-1)*Ma**2/2;\n",
+ "D = (gma+1)/2 ;\n",
+ "#ratio of A/At ==R\n",
+ "R = round( (N/D)**((gma+1)/(2*(gma-1)))/Ma,2);\n",
+ "A=At*R\n",
+ "print \"Area of test section (mm^2):\",A"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Area of test section (mm^2): 5360.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.3, Page 575"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Ma1 = 2;\n",
+ "gma = 1.4;\n",
+ "T1 = 15+273; # In kelvin\n",
+ "P1 = 105; \n",
+ "\n",
+ " #Calculations\n",
+ "Ma2 = (((gma-1)*Ma1**2 +2)/(2*gma*Ma1**2-gma+1))**0.5;\n",
+ "P2 = P1*(1+gma*Ma1**2)/(1+gma*Ma2**2);\n",
+ "T2 = T1*(1 +(gma-1)/2*Ma1**2)/(1 +(gma-1)/2*Ma2**2);\n",
+ "\n",
+ "\n",
+ "print \"Mach No downstream shock wave :\",round(Ma2,3)\n",
+ "print \"Pressure (bar) of downstream shock wave :\",round(P2)\n",
+ "print \"Temperature (Degree C) of downstream shock wave :\",T2 - 273"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mach No downstream shock wave : 0.577\n",
+ "Pressure (bar) of downstream shock wave : 473.0\n",
+ "Temperature (Degree C) of downstream shock wave : 213.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.4, Page 581"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "gma = 1.4;\n",
+ "f = 0.00375;\n",
+ "d = 0.05;\n",
+ "\n",
+ " #Calculations\n",
+ "m = d/4;\n",
+ "def x(Ma):\n",
+ " A =(1 -Ma**2 )/(gma*Ma**2);\n",
+ " B = (gma+1)*Ma**2/(2+(gma-1)*Ma**2); \n",
+ " y = m/f*(A+ (gma+1)*math.log(B)/(2*gma));\n",
+ " return y\n",
+ "\n",
+ "X1 = x(0.2); # At entrance Ma = 0.2;\n",
+ "X06_X1 =x(0.6); # Section(b) Ma = 0.6;\n",
+ "\n",
+ "X06 = X1-X06_X1;\n",
+ "\n",
+ "print \"The Distance X1 at which the Mach number is unity (m) :\",round(X1,2)\n",
+ "print \"Distance from the entrance (m) :\",round(X06,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Distance X1 at which the Mach number is unity (m) : 48.44\n",
+ "Distance from the entrance (m) : 46.81\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.5, Page 585"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from scipy.optimize import fsolve\n",
+ "\n",
+ " #Initializing the variables\n",
+ "gma = 1.4;\n",
+ "Q = 28/60; # m3/s\n",
+ "d = 0.1;\n",
+ "p1 = 200*10**3;\n",
+ "f = 0.004;\n",
+ "x_x1 = 60;\n",
+ "R = 287;\n",
+ "T = 15+273;\n",
+ "\n",
+ " #Calculations\n",
+ "A = math.pi*d**2/4;\n",
+ "m = d/4;\n",
+ "v1 = Q/A;\n",
+ "pa = p1*(1-f*(x_x1)*v1**2/(m*R*T))**0.5;\n",
+ "\n",
+ "def g(p):\n",
+ " A = (v1*p1)**2/(R*T)\n",
+ " B = f*A*x_x1/(2*m);\n",
+ " y = (p**2 - p1**2)/2 -A*math.log(p/p1) +B;\n",
+ " return y\n",
+ " \n",
+ "pb=fsolve(g,pa) # Guessing solution around pa\n",
+ "pb=pb[0]\n",
+ "print \"Pressure at the outlet, neglecting velocity changes (kN/m2) :\",round(pa/1000,1)\n",
+ "print \"Pressure at the outlet, allowing for velocity changes (kN/m2) :\",round(pb/1000,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure at the outlet, neglecting velocity changes (kN/m2) : 153.6\n",
+ "Pressure at the outlet, allowing for velocity changes (kN/m2) : 150.4\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_2.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_2.ipynb
new file mode 100755
index 00000000..835909e1
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_2.ipynb
@@ -0,0 +1,493 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:56204579c9dff23fd133fce17f3b8e6b8ac01dae9f7f133693b953a21d5ed34c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2: Pressure and Head"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.1, Page 30"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "z1 = 0; #Taking Ground as reference\n",
+ "z2 = -30 #Depth\n",
+ "rho = 1025 #Density\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "\n",
+ " #Calculation\n",
+ "pressureIncrease = -rho*g*(z2-z1);\n",
+ "\n",
+ "print \"Increase in Pressure (KN/m2):\",round(pressureIncrease/1000,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Increase in Pressure (KN/m2): 301.7\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2, Page 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "p1 = 22.4*10**3 #Initial Pressure\n",
+ "z1 = 11000 #Initial Height\n",
+ "z2 = 15000 #final Height\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "R = 287; #Gas Constant\n",
+ "T = 273-56.6 #Temperature \n",
+ "\n",
+ " #Calculations\n",
+ "p2 = p1*math.exp(-g*(z2-z1)/(R*T));\n",
+ "rho2=p2/(R*T);\n",
+ " \n",
+ "print \"Final Pressure (kN/m2):\",round(p2/1000,2)\n",
+ "print \"Final Density (kg/m3):\",round(rho2,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final Pressure (kN/m2): 11.91\n",
+ "Final Density (kg/m3): 0.192\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.3, Page 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "p1 = 101*10**3 #Initial Pressure\n",
+ "z1 = 0 #Initial Height\n",
+ "z2 = 1200 #Final Height\n",
+ "T1 = 15+273 #Initial Temperature\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "gamma = 1.4 #Heat capacity ratio\n",
+ "R = 287 #Gas Constant\n",
+ "\n",
+ " #Calculations\n",
+ "p2 = p1*(1-g*(z2-z1)*(gamma-1)/(gamma*R*T1))**(gamma/(gamma-1));\n",
+ "dT_dZ = -(g/R)*((gamma-1)/gamma);\n",
+ "T2 = T1 + dT_dZ*(z2-z1);\n",
+ "rho2 = p2/(R*T2);\n",
+ "\n",
+ "print \"Final Pressure (kN/m2) :\",round(p2/1000,2)\n",
+ "print \"Temprature (in degree celcius):\",round(T2-273,1)\n",
+ "print \"Density (kg/m^3) :\",round(rho2,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final Pressure (kN/m2) : 87.33\n",
+ "Temprature (in degree celcius): 3.3\n",
+ "Density (kg/m^3) : 1.101\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.4, Page 39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "p1 = 101*10**3 #Initial Pressure\n",
+ "z1 = 0 #Initial Height\n",
+ "z2 = 7000 #Final Height\n",
+ "T1 = 15+273 #Initial Temperature\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "R = 287 #Gas Constant\n",
+ "dT = 6.5/1000 #Rate of Variation of Temperature\n",
+ "\n",
+ " #Calculations\n",
+ "p2 = p1*(1-dT*(z2-z1)/T1)**(g/(R*dT));\n",
+ "T2 = T1 - dT*(z2-z1);\n",
+ "rho2 = p2/(R*T2);\n",
+ "\n",
+ "\n",
+ "print \"Final Pressure (kN/m^2) :\",round(p2/1000,2)\n",
+ "print \"Final Density (kg/m^3 ):\",round(rho2,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Final Pressure (kN/m^2) : 40.89\n",
+ "Final Density (kg/m^3 ): 0.588\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.5, Page 44"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "p = 350*10**3; #Gauge Pressure\n",
+ "pAtm = 101.3*10**3; #Atmospheric Pressure \n",
+ "rhoW = 1000; #Density of Water\n",
+ "sigma = 13.6; #Relative Density of Mercury\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "def Head(rho):\n",
+ " head = p/(rho*g);\n",
+ " return head\n",
+ "rhoM = sigma*rhoW;\n",
+ "pAbs = p + pAtm;\n",
+ "\n",
+ "print \"\\nPart(a)- Equivalent head of water (m) :\",round(Head(rhoW),2)\n",
+ "print \"\\nPart(b)- Equivalent head of water (m) :\",round(Head(rhoM),2)\n",
+ "print \"\\nAbsolute pressure (kN/m^2) :\",pAbs/1000"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "Part(a)- Equivalent head of water (m) : 35.68\n",
+ "\n",
+ "Part(b)- Equivalent head of water (m) : 2.62\n",
+ "\n",
+ "Absolute pressure (kN/m^2) : 451.3\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.6, Page 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 10**3; #Density of water\n",
+ "h = 2; #Height\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "p=rho*h*g; \n",
+ "\n",
+ "print \"Gauge pressure (k/m2) :\",p/1000"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gauge pressure (k/m2) : 19.62\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7, Page 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 0.8*10**3; #Density of fluid\n",
+ "rhoM = 13.6*10**3; #Density of manometer liquid\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "def fluidPressure(h1,h2):\n",
+ " P = rhoM*g*h2-rho*g*h1;\n",
+ " return P\n",
+ "\n",
+ "p1=fluidPressure(0.5,0.9)/1000\n",
+ "p2=fluidPressure(0.1,-0.2)/1000\n",
+ "\n",
+ "print \"!-----Part (a)-----! \\nGauge pressure (kN/m2) :\",round(p1,2)\n",
+ "print \"\\n!-----Part (b)-----! \\nGauge pressure (kN/m2) :\",round(p2,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "!-----Part (a)-----! \n",
+ "Gauge pressure (kN/m2) : 116.15\n",
+ "\n",
+ "!-----Part (b)-----! \n",
+ "Gauge pressure (kN/m2) : -27.47\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8, Page 47"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 10**3; #Density of fluid\n",
+ "rhoM = 13.6*10**3; #Density of manometer liquid\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "H = 0.3; # Differnce in height = b-a as in text\n",
+ "h = 0.7;\n",
+ "\n",
+ " #Calculations\n",
+ "result = rho*g*H + h*g*(rhoM-rho);\n",
+ "\n",
+ "print \"Pressure difference (kN/m^2):\", round(result/1000,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure difference (kN/m^2): 89.467\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.9, Page 50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 10**3; #Density of fluid\n",
+ "rhoM = 0.8*10**3; #Density of manometer liquid\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "a = 0.25;\n",
+ "b = 0.15;\n",
+ "h = 0.3;\n",
+ " #Calculations\n",
+ "def PressureDiff(a,b,h,rho,rhoM):\n",
+ " P = rho*g*(b-a) + h*g*(rho-rhoM);\n",
+ " return P\n",
+ "print \"The presure difference,if the top of the manometer is filled with\"\n",
+ "print \"(a) air :\",PressureDiff(a,b,h,rho,0)/1000, \" N/m^2\"\n",
+ "print \"(b) oil of relative density 0.8. :\",PressureDiff(a,b,h,rho,rhoM), \"N/m^2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The presure difference,if the top of the manometer is filled with\n",
+ "(a) air : 1.962 N/m^2\n",
+ "(b) oil of relative density 0.8. : -392.4 N/m^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10, Page 54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "phi = 30; #30 degree\n",
+ "h = 1.2 ; # Height of tank\n",
+ "l = 2; # Length of tank\n",
+ "\n",
+ " #Calculations\n",
+ "def SurfaceAngle(a,phi):\n",
+ " g=9.81; # m/s**2 \n",
+ " Theta = math.atan(-a*math.cos(math.radians(phi))/(g+a*math.sin(math.radians(phi)))); \n",
+ " return Theta\n",
+ "\n",
+ " #case (a) a = 4\n",
+ "\n",
+ "print \"ThetaA (degree) :\",round(180 + 180/math.pi*SurfaceAngle(4,phi),2)\n",
+ "\n",
+ " #Case (b) a = - 4.5\n",
+ "tanThetaR = math.tan((SurfaceAngle(-4.5,phi)));\n",
+ "\n",
+ "print \"\\nThetaR (degree) :\",round(SurfaceAngle(-4.5,phi)*180/math.pi,2)\n",
+ "\n",
+ "Depth = h - l*tanThetaR/2;\n",
+ "print \"\\nMaximum Depth of tank (m) :\",round(Depth,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "ThetaA (degree) : 163.65\n",
+ "\n",
+ "ThetaR (degree) : 27.27\n",
+ "\n",
+ "Maximum Depth of tank (m) : 0.6845\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_20.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_20.ipynb
new file mode 100755
index 00000000..f24f7af6
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_20.ipynb
@@ -0,0 +1,115 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:042171008edad2dcea90c81036564026ff0ecc789ee16d3a2ccb0122fde141e9"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 20: Pressure Transient Theory and Surge Control"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 20.3, Page 692"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "c = 1250;\n",
+ "Dt = 0.02;\n",
+ "Dv = 0.5;\n",
+ "rho = 1000;\n",
+ "v =0.5;\n",
+ "\n",
+ " #Calculations\n",
+ "cDt = c*Dt;\n",
+ "Dp = rho*c*Dv;\n",
+ "DOv_DOt = Dv/Dt;\n",
+ "vDOv_DOt = v*Dv/cDt;\n",
+ "DOp_DOt = Dp/Dt;\n",
+ "vDOp_DOx = v*Dp/cDt;\n",
+ "Error = [vDOv_DOt*100/DOv_DOt ,vDOp_DOx*100/DOp_DOt];\n",
+ "print \"The percentage errors are :\",Error,\"\\nThese are very small hence can be neglected\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The percentage errors are : [0.04, 0.04] \n",
+ "These are very small hence can be neglected\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 20.5, Page 705"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "f = 0;\n",
+ "Atunnel = 1.227;\n",
+ "Ashaft = 12.57;\n",
+ "Q =2;\n",
+ "L = 200;\n",
+ "g = 9.81; \n",
+ "\n",
+ " #Calculations\n",
+ "Zmax = (Q/Ashaft)*(Ashaft*L/(Atunnel*g))**0.5;\n",
+ "T = 2*math.pi*(Ashaft*L/(Atunnel*g))**0.5;\n",
+ "\n",
+ "print \"Peak water level (m) :\",round(Zmax,3)\n",
+ "print \"Mass Oscillation Period (s) :\",round(T,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Peak water level (m) : 2.299\n",
+ "Mass Oscillation Period (s) : 90.8\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_22.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_22.ipynb
new file mode 100755
index 00000000..2c113fed
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_22.ipynb
@@ -0,0 +1,191 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:783af12fd7d104e85c7e13e105c7550ca4a0a63a41968e5a9b0312d6fedb23a2"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 22: Theory of Rotodynamic Machine"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 22.1, Page 779"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Q = 5;\n",
+ "R1 = 1.5/2;\n",
+ "R2 = 2/2; \n",
+ "w = 18;\n",
+ "rho = 1000;\n",
+ "rhoA = 1.2;\n",
+ "Hth = 0.017;\n",
+ "g=9.81;\n",
+ "\n",
+ " #Calculations\n",
+ "A = math.pi*(R2**2-R1**2);\n",
+ "Vf = Q/A;\n",
+ "Ut = w*R2;\n",
+ "Uh = w*R1;\n",
+ "B1t = math.atan(Vf/Ut);\n",
+ "B1h = math.atan(Vf/Uh);\n",
+ "E = Hth*rho/rhoA;\n",
+ "def Beta(u):\n",
+ " y = math.atan(Vf/(u-E*g/u));\n",
+ " return y\n",
+ "B2t = Beta(Ut);\n",
+ "B2h = Beta(Uh);\n",
+ "\n",
+ "print \"!----Blade Inlet Angles----!\"\n",
+ "print \"At tip (in degrees) :\",round(B1t*180/math.pi,1),\"\\nAt Hub (in degrees) :\",round(B1h*180/math.pi,1)\n",
+ "print \"\\n!----Blade Outlet Angles (Degrees)----!\"\n",
+ "print \"At tip (in degrees):\",round(B2t*180/math.pi,1),\"\\nAt Hub(in degrees) :\",round(B2h*180/math.pi,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "!----Blade Inlet Angles----!\n",
+ "At tip (in degrees) : 11.4 \n",
+ "At Hub (in degrees) : 15.1\n",
+ "\n",
+ "!----Blade Outlet Angles (Degrees)----!\n",
+ "At tip (in degrees): 19.5 \n",
+ "At Hub(in degrees) : 48.6\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 22.2, Page 793"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "D = 0.1;\n",
+ "t = 15*10**-3;\n",
+ "Q = 8.5/3600;\n",
+ "N = 750/60;\n",
+ "B2 = 25*math.pi/180; # Beta 2 ind degrees\n",
+ "g = 9.81;\n",
+ "z = 16;\n",
+ "\n",
+ " #Calculations\n",
+ "A = round(math.pi*D*t,5);\n",
+ "V_f2 = round(Q/A,3);\n",
+ "U2 = round(math.pi*N*D,3);\n",
+ "V_w2 = round(U2 - V_f2/math.tan(B2),1);\n",
+ "Hth = round(U2*V_w2/g,2);\n",
+ "Sf = round(1 - math.pi*math.sin(B2)/(z*(1-(V_f2/U2)/math.tan(B2))),3);\n",
+ "H = round(Sf*Hth,2);\n",
+ "\n",
+ "print \"Part (a) - Head developed (m): \",Hth\n",
+ "print \"Part (b) - Head developed (m): \",H"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Part (a) - Head developed (m): 1.16\n",
+ "Part (b) - Head developed (m): 1.03\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 22.3, Page 797"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Ma = 0.6;\n",
+ "Cl = 0.6;\n",
+ "tByC = 0.035; # Thickness to chord ratio\n",
+ "cByC = 0.015; # Camber to chord ratio\n",
+ "x = 3; # Angle of incidence\n",
+ "\n",
+ " #Calculations\n",
+ "lamda = 1/(1-Ma**2)**0.5;\n",
+ "Cl# = lamda*Cl;\n",
+ "tByC1 = tByC*lamda;\n",
+ "cByC1 = cByC*lamda;\n",
+ "Cl1 = Cl*lamda**2;\n",
+ "Ae = x*lamda;\n",
+ "print \"____Geometric Characterstics____\\n\"\n",
+ "print \"Thickness to chord ratio :\",tByC1\n",
+ "print \"Camber to chord ratio :\",cByC1\n",
+ "print \"Lift Coefficient :\",Cl1\n",
+ "print \"angle of incidence (Degrees) :\",Ae"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "____Geometric Characterstics____\n",
+ "\n",
+ "Thickness to chord ratio : 0.04375\n",
+ "Camber to chord ratio : 0.01875\n",
+ "Lift Coefficient : 0.9375\n",
+ "angle of incidence (Degrees) : 3.75\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_23.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_23.ipynb
new file mode 100755
index 00000000..8cb510fa
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_23.ipynb
@@ -0,0 +1,302 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:ef9e21b794b8d045cd677d625f05028772e4370ff57190a11a0021b5fe3769e2"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 23: Performance of Rotodynamic Machines"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23.1, Page 814"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from pylab import *\n",
+ "%matplotlib inline\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Q = []\n",
+ "for c in range(9):\n",
+ " Q.append(7*c)\n",
+ "H = [40, 40.6, 40.4, 39.3, 38, 33.6, 25.6, 14.5, 0];\n",
+ "n = [0, 41, 60, 74, 83, 83, 74, 51, 0];\n",
+ "N1 = 750;\n",
+ "N2 = 1450;\n",
+ "D1 = 0.5;\n",
+ "D2 = 0.35;\n",
+ "\n",
+ " #Calculations\n",
+ "Q2=[]\n",
+ "H2=[]\n",
+ "for c in range(9):\n",
+ " Q2.append(Q[c]*(N2/N1)*(D2/D1)**3);\n",
+ " H2.append(H[c]*(N2/N1)**2*(D2/D1)**2);\n",
+ " \n",
+ "plot(Q,H,label='H1')\n",
+ "plot(Q,n,label='n1')\n",
+ "plot(Q2,H2,'--',label='H2')\n",
+ "plot(Q2,n,'--',label='n2')\n",
+ "legend( loc='upper right', numpoints = 1 )\n",
+ "xlabel(\"Q (m3/s)\");\n",
+ "ylabel(\"H (m of water) and n(percent)\")\n",
+ "grid(True)\n",
+ "show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nIK1PDnOiPzgAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x322b110>"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23.2, Page 831"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "n = 0.9;\n",
+ "g = 9.81;\n",
+ "D = 1.45;\n",
+ "N = 375/60;\n",
+ "H = 200; # Real height\n",
+ "x = 165; # Theta\n",
+ "P = 3750*10**3;\n",
+ "rho = 1000;\n",
+ "\n",
+ " #Calculations\n",
+ "h = n*H; #Effective Head\n",
+ "v1 = (2*g*h)**0.5;\n",
+ "u = math.pi*D*N;\n",
+ "\n",
+ "n_a = (2*u/v1**2)*(v1-u)*(1-n*math.cos(math.radians(x)));\n",
+ "\n",
+ "P_b = P/n_a;\n",
+ "ppj = P_b/2; # Power per jet\n",
+ "d = (8*ppj/(rho*math.pi*v1**3))**0.5 ;\n",
+ "print \"the efficiency of runner :\",round(n_a,3)\n",
+ "print \"Diameter of Jet (m) :\",round(d,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "the efficiency of runner : 0.933\n",
+ "Diameter of Jet (m) : 0.156\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23.3, Page 834"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " #Example 23.3 \n",
+ "\n",
+ " #Initializing the variables\n",
+ "g = 9.81;\n",
+ "H = 12;\n",
+ "n = 0.8;\n",
+ "w = 300*2*math.pi/60;\n",
+ "Q = 0.28;\n",
+ "\n",
+ " #Calculations\n",
+ "V_f1 = 0.15*(2*g*H)**0.5;\n",
+ "V_f2 =V_f1;\n",
+ "V_w1 = (n*g*H)**0.5;\n",
+ "u1 = V_w1;\n",
+ "theta = math.atan(V_f1/u1);\n",
+ "u2 =0.5*u1;\n",
+ "B2 = math.atan(V_f2/u2);\n",
+ "r1 = u1/w;\n",
+ "b1 = Q/(V_f2*0.9*2*math.pi*r1); # vanes occupy 10 per cent of the circumference hence 0.9\n",
+ "b2 = 2*b1;\n",
+ "\n",
+ "print \"Guide vane angle (degree) :\",round(theta*180/math.pi,2)\n",
+ "print \"Vane angle at exit (degree) :\",round(B2*180/math.pi,2)\n",
+ "print \"Width of runner at inlet (mm) :\",round(b1*1000,1) \n",
+ "print \"Width of runner at exit (mm) :\",round(b2*1000,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Guide vane angle (degree) : 13.34\n",
+ "Vane angle at exit (degree) : 25.38\n",
+ "Width of runner at inlet (mm) : 69.6\n",
+ "Width of runner at exit (mm) : 139.3\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23.4, Page 838"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import solve,symbols\n",
+ "\n",
+ " #Initializing the variables\n",
+ "H = 35;\n",
+ "g = 9.81;\n",
+ "D = 2;\n",
+ "N = 145/60;\n",
+ "z = 30*math.pi/180; # angle between vanes and direction of runner rotation\n",
+ "y = 28*math.pi/180; # angle between runner blades at the outlet.\n",
+ "\n",
+ " #Calculations\n",
+ "H_net = 0.93*H ; # since 7% head is lost\n",
+ "v1 = (2*g*H_net)**0.5;\n",
+ "u = math.pi*N*D;\n",
+ "\n",
+ " # from inlet velocity triangle\n",
+ "V_r1=14.3\n",
+ "## ash = cos(beta1+z)\n",
+ "ash = (V_r1**2+v1**2-u**2)/(2*V_r1*v1)\n",
+ "beta1=(z+math.acos(ash))*180/math.pi # in degrees\n",
+ "\n",
+ "V_r2=(1-8/100)*V_r1 #8 % loss due to friction\n",
+ "V_w1= u + V_r1*math.cos(math.radians(beta1))\n",
+ "V_w2= u - V_r2*math.cos(y)\n",
+ "\n",
+ "E = (u/g)*(V_w1 - V_w2);\n",
+ "n = E/H;\n",
+ "print \"Blade angle at inlet :\",round(beta1,1)\n",
+ "print \"Efficiency (%) :\",round(n*100)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Blade angle at inlet : 62.1\n",
+ "Efficiency (%) : 81.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 23.5, Page 844"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "s = 0.03;\n",
+ "P = 185*10**3;\n",
+ "rho = 0.86*10**3;\n",
+ "A = 2.8*10**-2;\n",
+ "N = 2250/60;\n",
+ "D = 0.46;\n",
+ "\n",
+ " #Calculations\n",
+ "R0 = 0.46/2;\n",
+ "Ws_Wp = 1-s;\n",
+ "n = Ws_Wp;\n",
+ "Pf = s*P;\n",
+ "Q = (2*Pf*A**2/(3.5*rho))**(1/3);\n",
+ "Wp = 2*math.pi*N; \n",
+ "Ri = ((1/Ws_Wp)*(R0**2 -P/(rho*Q*Wp**2)))**0.5;# Modified equation for power transmission.\n",
+ "Di = 2*Ri;\n",
+ "T = P/(rho*Wp**3 *D**5);\n",
+ " \n",
+ "print \"Mean diameter (mm) :\",round(Di*1000)\n",
+ "print \"Torque Coefficient :\",round(T,4)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean diameter (mm) : 326.0\n",
+ "Torque Coefficient : 0.0008\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_24.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_24.ipynb
new file mode 100755
index 00000000..ef4fb925
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_24.ipynb
@@ -0,0 +1,183 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0997b77d100b3345365d77881e9dcf23833d271e3f7741c8fb4ad6c260c5ffc6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 24: Positive Displacement Machines"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 24.1, Page 860"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "H_at = 10.3;\n",
+ "Hs = 1.5;\n",
+ "Hd = 4.5;\n",
+ "Ls = 2;\n",
+ "Ld = 15;\n",
+ "g = 9.81;\n",
+ "Ds = 0.4; # Diameter of stroke\n",
+ "Db = 0.15; # Diameter of bore\n",
+ "Dd = 0.05; # Diameter of discharge and suction pipe\n",
+ "nu = 0.2;\n",
+ "f = 0.01;\n",
+ "abs_pump_pressure = 2.4;\n",
+ "\n",
+ " #Calculations\n",
+ "A = math.pi*(Db)**2/4;\n",
+ "a = math.pi*(Dd)**2/4;\n",
+ "r = Ds/2;\n",
+ "W = 2*math.pi*nu;\n",
+ "Hsf = 0; \n",
+ "def H_suck(n):\n",
+ " y = H_at - Hs +(-1)**n*(L/g)*(A/a)*W**2*r; \n",
+ " return y\n",
+ "\n",
+ "def H(n,DischargeOrSuction):\n",
+ " if(DischargeOrSuction == 1):\n",
+ " y = H_at - Hs +(-1)**n*(Ls/g)*(A/a)*W**2*r;\n",
+ " elif(DischargeOrSuction == 2):\n",
+ " y = H_at + Hd +(-1)**n*(Ld/g)*(A/a)*W**2*r;\n",
+ " else:\n",
+ " print \"There is something wrong :\"\n",
+ " return y\n",
+ "\n",
+ "def H_mid(DischargeOrSuction,uA):\n",
+ " if(DischargeOrSuction == 1):\n",
+ " Hsf = 4*f*Ls/(2*Dd*g)*(uA/a)**2;\n",
+ " y = H_at - Hs - Hsf;\n",
+ " elif(DischargeOrSuction == 2):\n",
+ " Hsf = 4*f*Ld/(2*Dd*g)*(uA/a)**2;\n",
+ " y = H_at + Hd + Hsf;\n",
+ " else:\n",
+ " print \"There is something wrong :\"\n",
+ " return y\n",
+ "\n",
+ "Hs_start = H(1,1); # Inertia head negative hence n = 1\n",
+ "Hs_end = H(2,1); # Inertia head positive hence n = 2\n",
+ "Hd_start = H(1,2);\n",
+ "Hd_end = H(2,2);\n",
+ "u = W*r;\n",
+ "Hs_mid = H_mid(1,u*A);\n",
+ "slip = 0.04;\n",
+ "Hd_mid = H_mid(2,u*A);\n",
+ "suction = [Hs_start, Hs_end, Hs_mid];\n",
+ "discharge = [Hd_start, Hd_end, Hd_mid];\n",
+ "suction1=[0,0,0]\n",
+ "discharge1=[0,0,0]\n",
+ "for c in range(3):\n",
+ " suction1[c] =round(suction[c],2)\n",
+ " discharge1[c] =round(discharge[c],2)\n",
+ "W_max = (abs((abs_pump_pressure - H_at + Hs)*(g/Ls)*(a/A)*(1/r)))**0.5;\n",
+ "W_max_rev = W_max/(2*math.pi)*60; # maximum rotation speed in rev/min\n",
+ "\n",
+ "header = \"Start End Mid\";\n",
+ "\n",
+ "print \"\\n!----Part(a)----! Head at \\n\",header\n",
+ "print suction1\n",
+ "print \"\\n!----Part(b)----! Head at \\n\",header\n",
+ "print discharge1\n",
+ "print \"\\n!----Part(c)----1 \\nDrive speed for s eperation (rev/min) :\",round(W_max_rev)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "!----Part(a)----! Head at \n",
+ "Start End Mid\n",
+ "[8.22, 9.38, 8.38]\n",
+ "\n",
+ "!----Part(b)----! Head at \n",
+ "Start End Mid\n",
+ "[10.45, 19.15, 17.93]\n",
+ "\n",
+ "!----Part(c)----1 \n",
+ "Drive speed for s eperation (rev/min) : 40.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 24.2, Page 863"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Example 24.2 \n",
+ "\n",
+ " #Initializing the variables\n",
+ "H_friction = 2.4;\n",
+ "H_at = 10.3;\n",
+ "Hs = 1.5;\n",
+ "L =2;\n",
+ "f = 0.01;\n",
+ "d = 0.05;\n",
+ "g = 9.81; # Diameter of stroke\n",
+ "Db = 0.15; # Diameter of bore\n",
+ "r = 0.2;\n",
+ "\n",
+ " #Calculations\n",
+ "A = math.pi*(Db)**2/4;\n",
+ "a = math.pi*(d)**2/4;\n",
+ "W= (((H_at - Hs - H_friction )*(2*d*g/(4*f*L)))**0.5)*(a/A)*(math.pi/r); # in rad/s\n",
+ "W_rev = W/(2*math.pi)*60; # maximum rotation speed in rev/min\n",
+ "# IMPORTANT : In book conversion from rad/s to rev/min is wrong, so answer will be diffrent from book\n",
+ " \n",
+ "print \"speed in (rad/s) :\",round(W,2)\n",
+ "print \"Increase in speed (rev/min):\",round(W_rev-40,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "speed in (rad/s) : 15.46\n",
+ "Increase in speed (rev/min): 107.65\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_25.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_25.ipynb
new file mode 100755
index 00000000..9b08e6f3
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_25.ipynb
@@ -0,0 +1,328 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:2bebadfad4a18ede042a136ada8984e181f57290a23ad4ed8003a1f83445a447"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 25: Machine\u2013Network Interactions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 25.4, Page 893"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Pa_P1 = -200; # From previous Question\n",
+ "Q = 1.4311 ; # From previous questions.\n",
+ "\n",
+ " #Calculations\n",
+ "DpSys = Pa_P1 + 98.9*Q**2;\n",
+ "print \"System Operating point (m^3/s):\",round(DpSys,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "System Operating point (m^3/s): 2.55\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 25.7, Page 906"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import solve,symbols\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "Vo = 25.3; #Outlet velocity\n",
+ "D = 10 ; # Mean hydraulic diameter\n",
+ "f = 0.008; # friction factor\n",
+ "X = 1000; # Length of road\n",
+ "P = 12600; # Absorbing power\n",
+ "Va = 300; # Tunnel air flow\n",
+ "K1 = 0.96;\n",
+ "K2 = 0.9;\n",
+ "T = 590; #Thrust\n",
+ "rho = 1.2; # Air density \n",
+ "\n",
+ " #Calculations\n",
+ "alpha = (1/D)**2;\n",
+ "A = math.pi*D**2/4; # Area of tunnel\n",
+ "Vt = Va/A;\n",
+ "W = Vo/Vt; #Omega\n",
+ "E = (1-alpha*W);\n",
+ "C = (1-alpha*W)*(1-E)**2 + E**2 - 1;\n",
+ " # Manipulating equation 25.20;\n",
+ "LHS = f*X*(E+1)**2/D + C + 1 ;\n",
+ "\n",
+ "n1 = symbols('n1')\n",
+ "result=solve(K1*(2*((alpha*W**2 + (1-alpha)*E**2-1)+(n1-1)*(alpha*W*(W-1)-C/2)))-LHS)\n",
+ "\n",
+ "n=result[0]\n",
+ "\n",
+ "\n",
+ " # Alternative approach using equation 25.22\n",
+ "n2 = (rho*((4*f*X*Vt**2)/(2*D) + 1.5*Vt**2/2))*A/(K1*K2*T); \n",
+ "Pt = round(n2)*P;\n",
+ "\n",
+ "print \"Number of fans required :\",round(n2)\n",
+ "print \"Total power consumed (KW) :\",Pt/1000"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of fans required : 6.0\n",
+ "Total power consumed (KW) : 75.6\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 25.8, Page 907"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import solve,symbols\n",
+ " #Initializing the variables\n",
+ "f = 0.008;\n",
+ "T = 290;\n",
+ "L = 750;\n",
+ "Dt = 9; # Diameter Tunnel\n",
+ "Df = 0.63; # Diameter fan\n",
+ "K1 = 0.98;\n",
+ "K2 = 0.92;\n",
+ "Vo = 27.9;\n",
+ "n = 10;\n",
+ "A=math.pi*Dt**2/4\n",
+ "rho=1.2\n",
+ "X=750\n",
+ " #Calculations\n",
+ "alpha = (Df/Dt)**2;\n",
+ " # equation 25.20 becomes when E = 1 nad C = 0\n",
+ "W=symbols('W')\n",
+ "omega = solve(2*K1* (alpha*W**2 +(n-1)*alpha*W*(W-1)) - 4*f*L/Dt -1)\n",
+ " \n",
+ "\n",
+ "for i in range(1,len(omega)): # since omega is always positive and real\n",
+ " if omega[i]>0:\n",
+ " w = round(omega[i],1);\n",
+ "Vt = Vo/w;\n",
+ "\n",
+ "# by equation 25.22\n",
+ "VT=(n*(K1*K2*T)/(A*(rho*((4*f*X)/(2*Dt) + 1.5/2))))**0.5\n",
+ "print \"Tunnel Velocity (m/s) :\",round(VT,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Tunnel Velocity (m/s) : 4.05\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 25.9, Page 914"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Ws = 0.45;\n",
+ "Ks = 3.2;\n",
+ "H = 152;\n",
+ "h = 0;\n",
+ "Hatm = 10.3;\n",
+ "Pv = 350; #vapour pressure\n",
+ "g = 9.81;\n",
+ "rho = 1000;\n",
+ " \n",
+ " #Calculations\n",
+ "Ht1 = 152*(Ws/Ks)**(4/3); # the value of Ht1 is 11.12 and in book it is taken as 11.2 so there will be a difference in final answer\n",
+ "Hvap = round(Pv/(rho*g),3);\n",
+ "Z = Hatm -h -Hvap -Ht1;\n",
+ "print \"Elevation of pump (m):\",round(Z,3)\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Elevation of pump (m): -0.851\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 25.11, Page 927"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import symbols,solve\n",
+ "import numpy as np\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "Co = 0;\n",
+ "Qc = 0.0024;\n",
+ "V = 5400;\n",
+ "c = 10;\n",
+ " #Calculations\n",
+ "#####--------------------PART(A)-----------------#######\n",
+ "n1=symbols('n1')\n",
+ "def partA(n1):\n",
+ " Ci = 10;\n",
+ " # t = infinity so e^(-nt) = 0\n",
+ " Q=10000*Qc/(c-Co)\n",
+ " n1 = Q*3600/V; \n",
+ " return n1\n",
+ "ans=partA(n1)\n",
+ "\n",
+ "print \"Part(A) : number of air changes per hour if the garage is in continuous use and the maximum permissible concentration of carbon monoxide is 0.1 per cent. :\",ans,\"\\n\"\n",
+ "\n",
+ "#####--------------------PART(B)-----------------#######\n",
+ "n=symbols('n')\n",
+ "def partB(n):\n",
+ " Ci = 0; \n",
+ " n=[1.5,1.2,0.9,1.0] \n",
+ " t=1 # time in hours\n",
+ " error=[]\n",
+ " mini=100\n",
+ " ans=0\n",
+ " for i in range(4): \n",
+ " Q = V/3600; \n",
+ " A = 10000*Qc/Q; # as Co=0 \n",
+ " error.append(abs((A*(1-math.e**(-n[i]*t))/c)-n[i]));\n",
+ " if(error[i]<mini):\n",
+ " mini=error[i]\n",
+ " ans=n[i]\n",
+ " return ans \n",
+ "ans=partB(n)\n",
+ "print \"Part(B) : number of air changes per hour if this maximum level is reached after 1 hour and the garage is out of use :\",ans,'\\n'\n",
+ " \n",
+ "#####--------------------PART(C)-----------------#######\n",
+ "c=symbols('c')\n",
+ "def partC(c):\n",
+ " Ci = 0;\n",
+ " n = 1; \n",
+ " t = 0.333333 # 20 minutes in hours\n",
+ " Q = V*n/3600;\n",
+ " y = (Co + 10000*Qc/Q)*(1-math.e**(-n*t)) + Ci*math.e**(-n*t) ; \n",
+ " return y\n",
+ "ans=partC(c)\n",
+ "print \"Part(C) :the concentration after 20 minutes (Parts per 10000) :\",round(ans,3),'\\n'\n",
+ "#####--------------------PART(D)-----------------#######\n",
+ "t=symbols('t')\n",
+ "def partD(t):\n",
+ " Ci = 10;\n",
+ " n = 1; \n",
+ " c = 0.1;\n",
+ " t=np.log(100) \n",
+ " return round(t,2)\n",
+ "ans=partD(t) \n",
+ "print \"Part(D) : time necessary to run the ventilation system at the rate calculated in (b) to reduce the concentration to 0.001 per cent (in hours) :\",ans,\"hours\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Part(A) : number of air changes per hour if the garage is in continuous use and the maximum permissible concentration of carbon monoxide is 0.1 per cent. : 1.6 \n",
+ "\n",
+ "Part(B) : number of air changes per hour if this maximum level is reached after 1 hour and the garage is out of use : 1.0 \n",
+ "\n",
+ "Part(C) :the concentration after 20 minutes (Parts per 10000) : 4.535 \n",
+ "\n",
+ "Part(D) : time necessary to run the ventilation system at the rate calculated in (b) to reduce the concentration to 0.001 per cent (in hours) : 4.61 hours\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_3.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_3.ipynb
new file mode 100755
index 00000000..68980a40
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_3.ipynb
@@ -0,0 +1,372 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:540962ba0b5999b583f0620c9dca124d46f25fe569649c6c842d96cfa42351a3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3: Static Forces on Surfaces. Buoyancy"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1, Page 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "a = 2.7; #Upper edge\n",
+ "b = 1.2 ; #Lower edge\n",
+ "width = 1.5; #Width of trapezoidal plate\n",
+ "h = 1.1; #Height of water column above surface\n",
+ "rho = 1000;\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "phi = 90 #Angle between wall and surface\n",
+ "\n",
+ " #Calculations\n",
+ "A = 0.5*(a+b)*width; #Area of Trapezoidal Plate\n",
+ "y = (2*(0.5*width*0.75)*0.5 + (1.2*width)*0.75)/A;\n",
+ "z = y+h; #Depth of center of pressure\n",
+ "R = rho*g*A*z #Resultant force\n",
+ "\n",
+ "I0 = 1.2*1.5**3/12 +1.2*1.5*1.85**2 + 1.5*1.5**3/36 + 1.5*0.75*1.6**2 #Second moment of area\n",
+ "D = (math.sin(math.degrees(phi)))**2*I0/(A*z); #depth of center of pressure\n",
+ "M = R*(1.8533-1.1); #Moment about hinge\n",
+ "print \"Moment about the hinge line (kN/m):\",round(M/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Moment about the hinge line (kN/m): 38.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2, Page 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "w = 1.8; #Width of plate\n",
+ "h1 = 5; #Height of plate and water in upstream\n",
+ "h2 = 1.5; #Height of water in downstream\n",
+ "rho = 1000;\n",
+ "g = 9.81 ; #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "def waterForce(area,meanHeight):\n",
+ " F = rho * g * area * meanHeight;\n",
+ " return F\n",
+ "\n",
+ "P = waterForce(w*h1,h1/2)-waterForce(w*h2,h2/2);# Resultant force on gate \n",
+ "x = (waterForce(w*h1,h1/2)*(h1/3) - waterForce(w*h2,h2/2)*(h2/3))/P;# point of action of p from bottom\n",
+ "R = P/(2*math.sin(math.radians(20))); # Total Reaction force\n",
+ "Rt = 1.18*R/4.8; #Reaction on Top\n",
+ "Rb = R - Rt ; #Reaction at bottom\n",
+ "\n",
+ "print \"Reaction at top (kN):\",round(Rt/1000,1)\n",
+ "print \"Reaction at bottom (kN):\",round(Rb/1000,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reaction at top (kN): 72.2\n",
+ "Reaction at bottom (kN): 221.45\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3, Page 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "D = 1.8; #Depth of tank\n",
+ "h = 1.2; #Depth of water\n",
+ "l = 3; #Length of wall of tank\n",
+ "p = 35000; #Air pressure\n",
+ "rho = 10**3; #Density of water\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "\n",
+ "\n",
+ " #Calculations\n",
+ "Ra = p*D*l; #Force due to air\n",
+ "Rw = .5*(rho*g*h)*h*l; #Force due to water\n",
+ "R = Ra + Rw; # Resultant force\n",
+ "x = (Ra*0.9+Rw*0.4)/R; # Height of center of pressure from base\n",
+ "print \"Resultant force on the wall (kN) :\",round(R/1000,2)\n",
+ "print \"Height of the centre of pressure above the base (m) :\",round(x,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Resultant force on the wall (kN) : 210.19\n",
+ "Height of the centre of pressure above the base (m) : 0.85\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4, Page 72"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "R = 6; # Radius of arc\n",
+ "h = 2*R*math.sin(math.radians(30)); #Depth of water\n",
+ "rho = 10**3; #Density of water\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "Rh = (rho*g*h**2)/2; # Resultant horizontal force per unit length\n",
+ "Rv = rho*g*((60/360)*math.pi*R**2 -R*math.sin(math.radians(30))*R*math.cos(math.radians(30)));# Resultant vertical force per unit length\n",
+ "R = (Rh**2+Rv**2)**0.5; # Resultant force on gate\n",
+ "theta = 180/math.pi*math.atan(Rv/Rh); #Angle between resultant force and horizontal\n",
+ "\n",
+ "print \"Magnitute of resultant force (kN/m) :\",round(R/1000,2)\n",
+ "print \"Direction of resultant force to the horizontal(Degrees):\",round(theta,2)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Magnitute of resultant force (kN/m) : 179.45\n",
+ "Direction of resultant force to the horizontal(Degrees): 10.27\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5, Page 75"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "B = 6; # Width of pontoon\n",
+ "L = 12; #Length of pontoon\n",
+ "D = 1.5; #Draught of pontoon\n",
+ "Dmax = 2; #Maximum permissible draught\n",
+ "rhoW = 1000; #Density of fresh water\n",
+ "rhoS = 1025; #Density of sea water\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "def Weight(D):\n",
+ " W = rhoW*g*B*L*D;\n",
+ " return W\n",
+ "\n",
+ "W = Weight(D); # Weight of pontoon in fresh water = weight of water displaced\n",
+ "Ds = W/(rhoS*g*B*L); #Draught in sea water\n",
+ "L = Weight(Dmax) - Weight(D); # maximum load that can be supported\n",
+ "\n",
+ "print \"Weight of pontoon (kN) :\",round(W/1000,1)\n",
+ "print \"Draught in sea (m) :\",round(Ds,2)\n",
+ "print \"Load (kN) :\",round(L/1000,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Weight of pontoon (kN) : 1059.5\n",
+ "Draught in sea (m) : 1.46\n",
+ "Load (kN) : 353.16\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.6, Page 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "D = 1.8; # Diameter of buoy\n",
+ "H = 1.2; #Height of buoy\n",
+ "W = 10*10**3; #Weight of buoy\n",
+ "L = 2*10**3; #Load\n",
+ "G = 0.45; # Center of gravity\n",
+ "rho = 1025; #Density of sea water\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "Z = 4*(W+L)/(rho*g*math.pi*D**2); # Depth of Immersion\n",
+ "BG = (math.pi*D**4/64)/(math.pi*D**2*Z/4);\n",
+ "Z = 0.5*Z +BG; # Position of combined center of gravity\n",
+ "Z1 = ((W+L)*Z-0.45*W)/L; #Maximum height of load above bottom\n",
+ "\n",
+ "print \"Maximum height of center of gravity above bottom (m) :\",round(Z1,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum height of center of gravity above bottom (m) : 1.748\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.7, Page 83"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables\n",
+ "l = 20; # Length of barage\n",
+ "b = 6; #Width of barage\n",
+ "r = 3; #Radius of circular top of barage\n",
+ "W = 200*10**3; #Weight of empty barage\n",
+ "d1 = 0.8; # Depth of water in 1st half\n",
+ "d2 = 1; # Depth of water in 2nd half\n",
+ "rho = 1000; #Density of water\n",
+ "R = 0.8; #Relative density of liquid\n",
+ "g = 9.81; #Acceleration due to gravity\n",
+ "ZG = 0.45; # Center of gravity of barage\n",
+ "\n",
+ " #Calculations\n",
+ "I00 = l*b**3/12 +math.pi*b**4/128;\n",
+ "ICC = l*(.5*b)**3/12;\n",
+ "L = d1*rho*g*l*b/2*(d1+d2); # Weight of liquid load\n",
+ "W = L + W; #Total weight\n",
+ "A = l*b +math.pi*r**2/2; # Area of plane of waterline\n",
+ "V = W/(rho*g); # Volume of vessel submerged\n",
+ "D = V/A ; #Depth submerged\n",
+ "ZB = .5*D; #Height of center of buoyancy\n",
+ "NM = ZB-ZG +(1/V)*(I00-R*2*ICC); # Effective metacentric height\n",
+ "P = R*rho*g*l*b/2*(d2-d1); #overturning moment \n",
+ "theta = math.atan(P*1.5/(W*NM))*180/math.pi; #Angle of roll\n",
+ "# converting into degrees and minutes\n",
+ "thetaD=round(theta-1)\n",
+ "thetaM=(theta-thetaD)*60/100\n",
+ "print \"Angle of roll is\",thetaD,\"degrees\",round(thetaM,2),\"minutes\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Angle of roll is 2.0 degrees 0.37 minutes\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_4.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_4.ipynb
new file mode 100755
index 00000000..9429e481
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_4.ipynb
@@ -0,0 +1,185 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:029b6e47f117cbc4316b9317b5e197658ff26f93dc8874c76dd6b6c464f4fec0"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4: Motion Fluid Particles and Streams"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1, Page 103"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "from pylab import *\n",
+ "import numpy as np\n",
+ "%matplotlib inline\n",
+ "\n",
+ " #Initializing the variables\n",
+ "x = [0, 23, 28, 31, 32, 29, 22, 14, 0]\n",
+ "y = np.linspace(0,80,9)\n",
+ "xlabel('Velocity (m/s)')\n",
+ "ylabel('Distance from one side(mm)')\n",
+ "title('Velocity Distribution Curve')\n",
+ "grid(1)\n",
+ "\n",
+ " #Calculations\n",
+ "plot(x,y,'-*')\n",
+ "show()\n",
+ "mu=[17.5 , 26.0, 29.6, 31.9, 30.7, 25.4, 18.1, 7.7]\n",
+ " # mean velocity\n",
+ "print \"Mean velocity (m/s):\",round(mean(mu),2)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x31fdd50>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean velocity (m/s): 23.36\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2, Page 106"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "from pylab import *\n",
+ "import numpy as np\n",
+ "\n",
+ " #Initializing the variables all unknowns are assigned 0\n",
+ "\n",
+ "d = [0.0, 0.05, 0.075, 0, 0.030];\n",
+ "Q = [0, 0, 0, 0, 0];\n",
+ "V = [0, 0, 2, 1.5, 0];\n",
+ "A = [0, 0, 0, 0, 0]\n",
+ " #Calculations\n",
+ "A2 = math.pi*d[2]**2/4;\n",
+ "Q[2] =A2*V[2];\n",
+ "Q = [0,Q[2], Q[2], Q[2]/1.5 , 0.5*Q[2]/1.5];\n",
+ "d[3] = (Q[3]*4/(V[3]*math.pi))**0.5;\n",
+ "for i in range(0,5):\n",
+ " A[i] = math.pi*d[i]**2/4;\n",
+ "V[1] = V[2]*(A[2]/A[1]);\n",
+ "V[4]=Q[4]/A[4];\n",
+ "\n",
+ "\n",
+ "header = \"Diameter(mm) Area(m2)\\t Flow Rate(m3/s) Velocity(m/s)\"\n",
+ "print header\n",
+ "for c in range(1,5):\n",
+ " mm=str(round(d[c]*1000,1))+'\\t '+str(round(A[c],6))+' \\t '+str(round(Q[c],6))+' \\t'+str(round(V[c],2))\n",
+ " print mm"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Diameter(mm) Area(m2)\t Flow Rate(m3/s) Velocity(m/s)\n",
+ "50.0\t 0.001963 \t 0.008836 \t4.5\n",
+ "75.0\t 0.004418 \t 0.008836 \t2.0\n",
+ "70.7\t 0.003927 \t 0.00589 \t1.5\n",
+ "30.0\t 0.000707 \t 0.002945 \t4.17\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3, Page 108"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "import sympy\n",
+ "from sympy import diff, Symbol\n",
+ "\n",
+ "\n",
+ "#Initializing the variables \n",
+ "'''\n",
+ "def df(x, h=0.1e-5):\n",
+ " return ( f(x+h/2) - f(x-h/2) )/h\n",
+ " return df\n",
+ "\n",
+ "print df(2*x,h)\n",
+ "'''\n",
+ "x = Symbol('x') \n",
+ "vx = 3-x\n",
+ "vy = 4+2*x\n",
+ "vz = 2-x \n",
+ "\n",
+ " #Calculations\n",
+ "delVx = vx.diff(x); \n",
+ "delVy = vx.diff(x);\n",
+ "delVz = vx.diff(x); \n",
+ "\n",
+ "result = delVx+delVy+delVz;#requirement of continuity equation (result = 0)\n",
+ "print \"Satisfy requirement of continuity \"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Satisfy requirement of continuity \n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_5.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_5.ipynb
new file mode 100755
index 00000000..b12249f7
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_5.ipynb
@@ -0,0 +1,517 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:04c1d9ce4358772aaf36727d98b4d1c000b18de791fe80fc4e6e1ac3cabc0050"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5: The Momentum Equation and its Applications"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.1, Page 119"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables \n",
+ "\n",
+ "l = 60 ; #Length of pipeline\n",
+ "rho = 1000; # Density of liquid\n",
+ "a = 0.02; #Acceleration of fluid\n",
+ "\n",
+ " #Calculations\n",
+ "delP = rho*l*a; #Change in pressure\n",
+ "print \"Increase of pressure difference required (kN/m2):\",delP/1000"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Increase of pressure difference required (kN/m2): 1.2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.2, Page 121"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables \n",
+ "v = 5; #Velocity of jet \n",
+ "rho = 1000; #density of water\n",
+ "d = 0.025; #Diameter of fixed nozzle\n",
+ "\n",
+ " #Calculations\n",
+ " #--Part(a) Variation of force exerted normal to the plate with plate angle--//\n",
+ "header = \"Theta\\t vcos(x)\\t pAv\\t Force\"\n",
+ "unit = \"deg\\t m/s\\t kg/s\\t N\"\n",
+ "\n",
+ "A = math.pi*d**2/4;\n",
+ "x = range(0,91,15);\n",
+ "for c in range(len(x)):\n",
+ " x[c]=1.0*x[c]\n",
+ "m = round(rho*A*v,2);\n",
+ "ma = [m,m,m,m,m,m,m];\n",
+ "vcomp=[]\n",
+ "force=[]\n",
+ "for c in x:\n",
+ " vcomp.append(round(v*math.cos(math.radians(c)),2))\n",
+ " force.append(round((rho*A*v**2)*math.cos(math.radians(c)),2))\n",
+ "\n",
+ "print header\n",
+ "print unit\n",
+ "for c in range(len(x)):\n",
+ " mm=str(x[c])+' \\t '+str(vcomp[c])+' \\t'+str(ma[c])+' \\t'+str(force[c])\n",
+ " print mm\n",
+ "##value = [x,vcomp,ma,force]\n",
+ "##print value,unit, header\n",
+ "\n",
+ " #--Part(b) Variation of force exerted normal to the plate with plate velocity--// \n",
+ "header =\"Theta\\t v\\t u\\t v-u\\t pA(v-u)\\t Force\\t\"\n",
+ "unit =\"deg\\t m/s\\t m/s\\t m/s\\t kg/s\\t N\\t\"\n",
+ "x = [0,0,0,0,0]\n",
+ "v = [5,5,5,5,5]\n",
+ "u = range(2,-3,-1);\n",
+ "D=[]\n",
+ "Prod=[]\n",
+ "Force=[]\n",
+ "for c in range(5):\n",
+ " D.append(v[c]-u[c])\n",
+ " Prod.append(round((rho*A*D[c]),2))\n",
+ " Force.append(round((rho*A*D[c]**2),2))\n",
+ " \n",
+ "print '\\n',\"(b)\",\"\\n\",header\n",
+ "print unit\n",
+ "for c in range(len(x)):\n",
+ " mm=str(x[c])+' \\t '+str(v[c])+' \\t '+str(u[c])+' \\t '+str(D[c])+' \\t '+str(Prod[c])+' \\t '+str(Force[c])\n",
+ " print mm\n",
+ " \n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Theta\t vcos(x)\t pAv\t Force\n",
+ "deg\t m/s\t kg/s\t N\n",
+ "0.0 \t 5.0 \t2.45 \t12.27\n",
+ "15.0 \t 4.83 \t2.45 \t11.85\n",
+ "30.0 \t 4.33 \t2.45 \t10.63\n",
+ "45.0 \t 3.54 \t2.45 \t8.68\n",
+ "60.0 \t 2.5 \t2.45 \t6.14\n",
+ "75.0 \t 1.29 \t2.45 \t3.18\n",
+ "90.0 \t 0.0 \t2.45 \t0.0\n",
+ "\n",
+ "(b) \n",
+ "Theta\t v\t u\t v-u\t pA(v-u)\t Force\t\n",
+ "deg\t m/s\t m/s\t m/s\t kg/s\t N\t\n",
+ "0 \t 5 \t 2 \t 3 \t 1.47 \t 4.42\n",
+ "0 \t 5 \t 1 \t 4 \t 1.96 \t 7.85\n",
+ "0 \t 5 \t 0 \t 5 \t 2.45 \t 12.27\n",
+ "0 \t 5 \t -1 \t 6 \t 2.95 \t 17.67\n",
+ "0 \t 5 \t -2 \t 7 \t 3.44 \t 24.05\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3, Page 123"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " \n",
+ "\n",
+ " #Initializing the variables \n",
+ "x = 60; #Angle of deflection theta\n",
+ "rho = 1000; # Density of liquid\n",
+ "V1 = 30; #Acceleration of fluid\n",
+ "V2 = 25;\n",
+ "m = .8; #Discharge through A\n",
+ "\n",
+ " #Calculations\n",
+ "def Reaction(Vin , Vout):\n",
+ " R = m*(Vin -Vout) ;\n",
+ " return R\n",
+ "Rx = Reaction(V1,V2*math.cos(math.radians(x)));\n",
+ "Ry = -Reaction(0,V2*math.sin(math.radians(x)));\n",
+ "print \"Reaction in X-direction (N) :\",Rx\n",
+ "print \"Reaction in Y-direction (N) :\",round(Ry,2)\n",
+ "print \"Net Reaction (N) :\",round((Rx**2 +Ry**2)**0.5,2)\n",
+ "print \"Inclination of Resultant Force with x-direction (Degrees):\",round(180/math.pi*math.atan(Ry/Rx),2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reaction in X-direction (N) : 14.0\n",
+ "Reaction in Y-direction (N) : 17.32\n",
+ "Net Reaction (N) : 22.27\n",
+ "Inclination of Resultant Force with x-direction (Degrees): 51.05\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4, Page 125"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "v1 = 36 ; #Exit velocity\n",
+ "u = 15; #Velocity of vane\\\n",
+ "x = 30; # Angle between vanes and flow\n",
+ "rho = 1000; # Density of water\n",
+ "d = .1; # Diameter of jet\n",
+ "\n",
+ " #Calculations\n",
+ "alp = (180/math.pi)*math.atan((v1*math.sin(math.radians(x))/(v1*math.cos(math.radians(x))-u)));\n",
+ "v2 = 0.85*v1*math.sin(math.radians(x));\n",
+ "bta = (180/math.pi)*math.acos((u*math.sin(math.radians(alp))/v2));\n",
+ "m = (rho*math.pi*v1*d**2)/4;\n",
+ "Vin = v1*math.cos(math.radians(x));\n",
+ "Vout = v2*math.cos(math.radians(90));\n",
+ "Rx = m*(Vin-Vout);\n",
+ "\n",
+ "\n",
+ "print \"Inlet Angle (Degrees) :\", round(alp,2)\n",
+ "print \"Outlet Angle (Degrees) :\", round(bta,2)\n",
+ "print \"Force exerted by vanes (N) :\", round(Rx) \n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Inlet Angle (Degrees) : 48.05\n",
+ "Outlet Angle (Degrees) : 43.18\n",
+ "Force exerted by vanes (N) : 8815.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.5, Page 127"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "rho = 850 ; # Density of liquid\n",
+ "a = 0.02 #Acceleration of fluid\n",
+ "x = 45 ;\n",
+ "d1 = .5 ;\n",
+ "d2 = .25;\n",
+ "p1 = 40*10**3;\n",
+ "p2 = 23*10**3;\n",
+ "Q = .45;\n",
+ " \n",
+ " #Calculations\n",
+ "A1 = (math.pi*d1**2)/4;\n",
+ "A2 = (math.pi*d2**2)/4;\n",
+ "v1 = Q/A1;\n",
+ "v2 = Q/A2;\n",
+ "\n",
+ "Rx = p1*A1 - p2*A2*math.cos(math.radians(x)) - rho*Q*(v2*math.cos(math.radians(x))-v1);\n",
+ "Ry = p2*A2*math.sin(math.radians(x)) + rho*Q*v2*math.sin(math.radians(x));\n",
+ "\n",
+ "print \"Resultant force on the bend (kN) :\",round((Rx**2 +Ry**2)**0.5/1000,3)\n",
+ "print \"Inclination of Resultant Force with x-direction (Degrees):\",round(math.atan(Ry/Rx)*180/math.pi)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Resultant force on the bend (kN) : 6.362\n",
+ "Inclination of Resultant Force with x-direction (Degrees): 31.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.6, Page 129"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "v = 4.9; #Velocity of Jet\n",
+ "rho = 1000; # Density of water\n",
+ "d = 0.05;\n",
+ "u = 1.2 # Velocity of tank\n",
+ " #Calculations\n",
+ "Vout = v;\n",
+ "Vin = 0;\n",
+ "m = rho*math.pi*d**2*v/4;\n",
+ "R = m*(Vout-Vin);\n",
+ "print \"Reaction of jet on tank (N) :\",round(R,2)\n",
+ "print \"Work done per second (W) :\",round(R*u,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reaction of jet on tank (N) : 47.14\n",
+ "Work done per second (W) : 56.57\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.7, Page 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from scipy import integrate\n",
+ " \n",
+ " \n",
+ "\n",
+ " #Initializing the variables \n",
+ "Vj = 5*10**6; # Velocity of Jet\n",
+ "Mr = 150000; # Mass of Rocket\n",
+ "Mf0 = 300000; # Mass of initial fuel\n",
+ "Vr = 3000; # Velocity of jet relative to rocket\n",
+ "g = 9.81; # Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "m = Vj/Vr; #Rate of fuel consumption\n",
+ "T = Mf0/m; # Burning time\n",
+ "\n",
+ "def f(t,m,Vr,Mr,Mf0,g):\n",
+ " return m*Vr /(Mr + Mf0 - m*t) - g;\n",
+ " \n",
+ "args = (5000/3,3000,150000,300000,9.81)\n",
+ "Vt = integrate.quad(f, 0.0, 180, args)\n",
+ "\n",
+ "def h(t,Vr,g):\n",
+ " return -g*t - Vr*math.log(1 - t/269.95);\n",
+ " \n",
+ "args = (3000,9.81)\n",
+ "Z1 = integrate.quad(h, 0.0, 180, args)\n",
+ "Z2 = Vt[0]**2/(2*g);\n",
+ "\n",
+ "print \"(a)Burning time (s) :\",T\n",
+ "print \"(b)Speed of rocket when all fuel is burned (m/s):\",round(Vt[0],2)\n",
+ "print \"(c)Maximum height reached (km) :\",round((Z2+Z1[0])/1000,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a)Burning time (s) : 180.0\n",
+ "(b)Speed of rocket when all fuel is burned (m/s): 1530.04\n",
+ "(c)Maximum height reached (km) : 203.8\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.8, Page 134"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "V = 200; #Velocity in still air\n",
+ "Vr = 700; #velocity of gas relative to engine\n",
+ "mf = 1.1; # Fuel Consumption\n",
+ "r = 1/40 ; \n",
+ "P1 =0;\n",
+ "P2 = 0;\n",
+ "\n",
+ " #Calculations\n",
+ "m1 = mf/r;\n",
+ "T = m1*((1+r)*Vr -V);\n",
+ "print \"(a)Thrust (kN) :\",T/1000\n",
+ "\n",
+ "W = T*V;\n",
+ "print \"(b)Work done per second (kW) :\",W/1000\n",
+ "\n",
+ "Loss = 0.5*m1*(1+r)*(Vr-V)**2;\n",
+ "print \"(c)Efficiency (%) :\",round(W/(W+Loss)*100,1) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a)Thrust (kN) : 22.77\n",
+ "(b)Work done per second (kW) : 4554.0\n",
+ "(c)Efficiency (%) : 44.7\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.10, Page 140"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables \n",
+ "rho = 1000; # Density of water\n",
+ "Q = 10; #Acceleration of fluid\n",
+ "r2 = 1.6;\n",
+ "r1 = 1.2;\n",
+ "V1 = 2.3;\n",
+ "V2 = 0.2;\n",
+ "rot = 240; \n",
+ "\n",
+ " #Calculations\n",
+ "Tf = rho*Q*(V2*r2 - V1*r1);\n",
+ "T = -Tf;\n",
+ "n = rot / 60;\n",
+ "P = 2*round(math.pi,3)*n*T;\n",
+ "\n",
+ "print \"Torque exerted by fluid (N.m):\",T\n",
+ "print \"Theoretical power output (kW) :\",round(P/1000,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Torque exerted by fluid (N.m): 24400.0\n",
+ "Theoretical power output (kW) : 613.32\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_6.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_6.ipynb
new file mode 100755
index 00000000..5cde4008
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_6.ipynb
@@ -0,0 +1,504 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:df3153eb902c7efba51ed445ceefd3e3c02fa6ed938e4ef53fe06333d531bf11"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6: The Energy Equation and its Applications"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.1, Page 170"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "Pc = 0; # Atmospheric Pressure\n",
+ "Z3 = 30+2; #height of nozzle\n",
+ "Ep = 50 ; #Energy per unit weight supplied by pump\n",
+ "d1 = 0.150; #Diameter of sump\n",
+ "d2 = 0.100; #Diameter of delivery pipe\n",
+ "d3 = 0.075 ; #Diameter of nozzle\n",
+ "g = 9.81; # Acceleration due to gravity\n",
+ "Z2 = 2; #Height of pump\n",
+ "rho = 1000; # Density of water\n",
+ "\n",
+ " #Calculations\n",
+ "U3 = (2*g*(Ep-Z3)/(1+5*(d3/d1)**4 + 12*(d3/d2)**4))**0.5;\n",
+ "U1 = U3/4;\n",
+ "Pb = rho*g*Z2 + 3*rho*U1**2;\n",
+ "print \"Velocity of Jet through nozzle (m/s) :\",round(U3,3)\n",
+ "print \"Pressure in the suction pipe at the inlet to the pump at B (kN/m^2) :\",round(Pb/1000,3) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Velocity of Jet through nozzle (m/s) : 8.314\n",
+ "Pressure in the suction pipe at the inlet to the pump at B (kN/m^2) : 32.58\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2, Page 183"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ " #Initializing the variables \n",
+ "x = 45; # Inclination of pipe\n",
+ "l = 2; #Length of pipe under consideration\n",
+ "Ep = 50 ; #Energy per unit weight supplied by pump\n",
+ "d1 = 0.2; #Diameter of sump\n",
+ "d2 = 0.1; #Diameter of delivery pipe\n",
+ "g = 9.81; # Acceleration due to gravity\n",
+ "rho = 1000; # Density of water\n",
+ "V1 = 2;\n",
+ "RD_oil = 0.9; # relative density of oil\n",
+ "RD_Merc = 13.6; # Relative density of Mercury\n",
+ "\n",
+ " #Calculations\n",
+ "V2 = V1*(d1/d2)**2;\n",
+ "dZ = round(l*math.sin(math.radians(x)),3); # it is used in book as 1.414,by rounding so here also\n",
+ "rho_Oil = RD_oil*rho;\n",
+ "rho_Man = RD_Merc*rho;\n",
+ "dP = 0.5*rho_Oil*(V2**2-V1**2) + rho_Oil*g*dZ;\n",
+ "h = rho_Oil *( dP/(rho_Oil*g)- dZ)/(rho_Man - rho_Oil);\n",
+ "\n",
+ "print \"Pressure Difference(N/m2) : \",round(dP,0)\n",
+ "print \"Difference in the level of mercury (m):\",round(h,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure Difference(N/m2) : 39484.0\n",
+ "Difference in the level of mercury (m): 0.217\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3, Page 187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "d1 = 0.25; #Pipeline diameter\n",
+ "d2 = 0.10; #Throat diameter\n",
+ "h =0.63; #Difference in height\n",
+ "rho = 1000; #Density of water\n",
+ "g = 9.81 #Acceleration due to gravity\n",
+ "\n",
+ " #Calculations\n",
+ "rho_Hg = 13.6*rho;\n",
+ "rho_Oil = 0.9*rho;\n",
+ "A1 = (math.pi*d1**2)/4; # Area at entry\n",
+ "m = (d1/d2)**2; #Area ratio\n",
+ "Q = (A1/(m**2-1)**0.5)*(2*g*h*(rho_Hg/rho_Oil -1))**0.5;\n",
+ "\n",
+ "print \"Thepretical Volume flow rate (m3/s ):\",round(Q,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Thepretical Volume flow rate (m3/s ): 0.105\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.4, Page 190"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "\n",
+ "x = 1.5;\n",
+ "y =0.5;\n",
+ "H = 1.2;\n",
+ "A = 650*10**-6;\n",
+ "Q =0.117;\n",
+ "g = 9.81;\n",
+ "\n",
+ " #Calculations\n",
+ "Cv =(x**2/(4*y*H))**0.5;\n",
+ "Cd = Q / (60*A*(2*g*H)**0.5);\n",
+ "Cc = Cd/Cv;\n",
+ "\n",
+ "\n",
+ "print \"Coefficient of velocity :\",round(Cv,3)\n",
+ "print \"Coefficient of Discharge :\",round(Cd,3)\n",
+ "print \"Coefficient of contraction :\",round(Cc,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Coefficient of velocity : 0.968\n",
+ "Coefficient of Discharge : 0.618\n",
+ "Coefficient of contraction : 0.639\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5, Page 192"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "B = 0.7;\n",
+ "H1 = 0.4;\n",
+ "H2 = 1.9;\n",
+ "g =9.81;\n",
+ "z = 1.5 ; # height of opening\n",
+ "\n",
+ " #Calculations\n",
+ "Q_Th = 2/3 *B*(2*g)**0.5*(H2**1.5 - H1**1.5);\n",
+ "A = z*B;\n",
+ "h = 0.5*(H1+H2);\n",
+ "Q = A*(2*g*h)**0.5;\n",
+ "\n",
+ "print \"Percentage error in discharge (%):\",round((Q-Q_Th)*100/Q_Th,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Percentage error in discharge (%): 1.98\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.6, Page 195"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "Cd = 0.6; #Coefficient of discharge\n",
+ "Q = 0.28;\n",
+ "x = 90; #Theta\n",
+ "g = 9.81;\n",
+ "dH = 0.0015;\n",
+ "\n",
+ " #Calculations\n",
+ "H = (Q*(15/8)/(Cd*(2*g)**0.5*math.tan(math.radians(x/2))))**(2/5)\n",
+ "Frac_Q = 5/2 *( dH/H);\n",
+ "\n",
+ "print \"Percentage error in discharge(%)\",round(Frac_Q*100,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Percentage error in discharge(%) 0.72\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.7, Page 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "B = 0.9;\n",
+ "H = 0.25;\n",
+ "alpha = 1.1;\n",
+ "g = 9.81; \n",
+ "\n",
+ " #Calculations\n",
+ "Q = 1.84 * B * H**(3/2);\n",
+ "print \"Q(m3/s) :\",Q\n",
+ "\n",
+ "i = 1;\n",
+ "while(i <= 3):\n",
+ " v = Q /(1.2* (H+0.2));\n",
+ " print \"V(m/s) :\",round(v,4)\n",
+ " k = ((1 + alpha*v**2/(2*g*H))**1.5 -(alpha*v**2/(2*g*H))**1.5 );\n",
+ " Q = k* 1.84 * B * H**(3/2);\n",
+ " print \"Q(m3/s) :\",round(Q,4)\n",
+ " i = i+1;\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q(m3/s) : 0.207\n",
+ "V(m/s) : 0.3833\n",
+ "Q(m3/s) : 0.2161\n",
+ "V(m/s) : 0.4001\n",
+ "Q(m3/s) : 0.2168\n",
+ "V(m/s) : 0.4016\n",
+ "Q(m3/s) : 0.2169\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.8, Page 197"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "rho = 1000;\n",
+ "v = 66 ;\n",
+ "Q = 0.13;\n",
+ "g = 9.81; \n",
+ "z =240;\n",
+ "\n",
+ " #Calculations\n",
+ "P_Jet = 0.5*rho*v**2*Q;\n",
+ "P_Supp = rho*g*Q*z;\n",
+ "P_Lost = P_Supp -P_Jet;\n",
+ "h = P_Lost/(rho*g*Q);\n",
+ "eff = P_Jet/P_Supp;\n",
+ "\n",
+ "print \"Part(a) - power of the jet(kW): \",round(P_Jet/1000,2)\n",
+ "print \"Part(b) - power supplied from the reservoir (kW):\",round(P_Supp/1000,2) \n",
+ "print \"Part(C) - head used to overcome losses (m): \",round(h,2)\n",
+ "print \"Part(d) - Efficiency(%) : \",round(eff*100,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Part(a) - power of the jet(kW): 283.14\n",
+ "Part(b) - power supplied from the reservoir (kW): 306.07\n",
+ "Part(C) - head used to overcome losses (m): 17.98\n",
+ "Part(d) - Efficiency(%) : 92.5\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.9, Page 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from scipy import integrate\n",
+ "\n",
+ " #Initializing the variables \n",
+ "r1 = 0.2;\n",
+ "Z1 = 0.500;\n",
+ "Z2 = 0.340;\n",
+ "g = 9.81;\n",
+ "rho = 0.9*1000 ;\n",
+ "\n",
+ " #Calculations\n",
+ "r0 = r1*((2-2*Z2/Z1)**0.5);\n",
+ "omega = round((2*g*Z1/r0**2)**0.5,1)\n",
+ "\n",
+ "def G(r):\n",
+ " out =r**3 - r*r0**2;\n",
+ " return out\n",
+ " \n",
+ "results = integrate.quad(G, r0, r1)\n",
+ "\n",
+ "F = rho*omega**2*math.pi*results[0];\n",
+ "\n",
+ "print r0,r1\n",
+ "print \"Part(a) Speed of rotation (rad/s ):\",round(omega,1)\n",
+ "print \"Part(b) Upward force on the cover (N): \",round(F,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0.16 0.2\n",
+ "Part(a) Speed of rotation (rad/s ): 19.6\n",
+ "Part(b) Upward force on the cover (N): 56.3\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.10, Page 206"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "Ra = 0.2;\n",
+ "Rb = 0.1;\n",
+ "H = 0.18;\n",
+ "Za = 0.125;\n",
+ "\n",
+ " #Calculations\n",
+ "Y = Ra**2*(H-Za);\n",
+ "Zb = H - Y/Rb**2;\n",
+ "\n",
+ "print \"Height above datum of a point B on the free surface at a radius of 100 mm (mm):\",Zb*1000"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Height above datum of a point B on the free surface at a radius of 100 mm (mm): -40.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_7.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_7.ipynb
new file mode 100755
index 00000000..95848de2
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_7.ipynb
@@ -0,0 +1,221 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:58b7373e6785b57ec4db0eaf49754884e3dad15de9e9489fc1c2bb500d413f82"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7: Two-Dimentional Idea Flow"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.2, Page 235"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables \n",
+ "x = 120; #Theta\n",
+ "r = 1;\n",
+ "v0 = 0.5;\n",
+ "q = 2;\n",
+ "theta =120;\n",
+ "\n",
+ " #Calculations\n",
+ "Vr = v0*r*math.cos(math.radians(theta)) +q/(2*math.pi)\n",
+ "Vth = -v0*math.sin(math.radians(theta))\n",
+ "V = (Vr**2+Vth**2)**0.5;\n",
+ "alpha = math.atan(abs(Vth/Vr));\n",
+ "bet = x-alpha*180/math.pi;\n",
+ "\n",
+ "\n",
+ "print \"Fluid Velocity(m/s) :\",round(V,3)\n",
+ "print \"Beta (Degree) :\",round(bet,2)\n",
+ "print \"Alpha (Degree) :\",round(alpha*180/math.pi,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Fluid Velocity(m/s) : 0.438\n",
+ "Beta (Degree) : 38.96\n",
+ "Alpha (Degree) : 81.04\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.3, Page 239"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "from scipy.optimize import fsolve\n",
+ "import sympy\n",
+ "from sympy import RootOf, I, Symbol\n",
+ " #Initializing the variables \n",
+ "q = 10;\n",
+ "def shi(x,y):\n",
+ " Z = (q/2/math.pi)*(math.atan(y/(x-1))-math.atan(y/(x+1))) - 25*y;\n",
+ " return Z\n",
+ "h = 0.0000001;\n",
+ "Vinf = 25;\n",
+ "x=Symbol('x')\n",
+ " #Calculations\n",
+ "#f = lambda x : x**2 - 2/(5*math.pi) -1\n",
+ "result = [RootOf(x**2- 2/(5*math.pi) -1,i) for i in (0,1)] \n",
+ "\n",
+ "root1=round(result[0],3)\n",
+ "root2=round(result[1],3)\n",
+ "l = abs(abs(root1)+abs(root2));\n",
+ "Ymax = 0.047;\n",
+ "width = 2*Ymax;\n",
+ "Vx = (shi(1-h,1)-shi(1-h,1-h))/h; # At x=1 the function atan is not defined hence taking x a little smaller.\n",
+ "Vy = -1*(shi(1-2*h,1)-shi(1-h,1))/h; # At x=1 the function atan is not defined hence taking x a little smaller.\n",
+ "\n",
+ "V = (Vx**2+Vy**2)**0.5;\n",
+ "rho = Symbol('rho')\n",
+ "dP = rho/2*round((V**2 - Vinf**2),2); #difference in pressure\n",
+ "\n",
+ "print \"Pressure Difference (N/m2) :\",dP\n",
+ "print \"Velocity (m/s) :\",round(V,2)\n",
+ "print \"Length of Rankine Body(m) :\",l\n",
+ "print \"Width of Rankine Body (m) :\",width"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressure Difference (N/m2) : 16.93*rho\n",
+ "Velocity (m/s) : 25.67\n",
+ "Length of Rankine Body(m) : 2.124\n",
+ "Width of Rankine Body (m) : 0.094\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.4, Page 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math #Example 7.4\n",
+ "\n",
+ " #Initializing the variables\n",
+ "a = 0.02;\n",
+ "r = 0.05;\n",
+ "V0 = 1;\n",
+ "x = 135; # Theta\n",
+ "def shi(r,x):\n",
+ " Z = V0*math.sin(math.radians(x))*(r-((a**2)/r));\n",
+ " return Z\n",
+ "h = 0.0001;\n",
+ "\n",
+ " #Calculations\n",
+ "Vr = 57*(shi(r,x+h)-shi(r,x))/(r*h);\n",
+ "Vx = -1*(shi(r+h,x)-shi(r,x))/h;\n",
+ "\n",
+ "print \"Radial Velocity (m/s) :\",round(Vr,3)\n",
+ "print \"Normal component of velocity (m/s):\",round(Vx,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Radial Velocity (m/s) : -0.591\n",
+ "Normal component of velocity (m/s): -0.82\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 7.5, Page 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "rho = 1000;\n",
+ "r = 2;\n",
+ "psi = 2*math.log(r);\n",
+ "\n",
+ " #Calculations\n",
+ "y = psi/math.log(r); # y = GammaC / 2*pi\n",
+ "v = y/r;\n",
+ "dPbydr = rho*v**2/r;\n",
+ "print \"Pressuer Gradient (N/m3 ) :\",dPbydr"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pressuer Gradient (N/m3 ) : 500.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_8.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_8.ipynb
new file mode 100755
index 00000000..cd940a0c
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_8.ipynb
@@ -0,0 +1,73 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:b0713ad3f7c2f18448b69f687926b2d86e094144766f7b44f7fc20525a516074"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8: Dimensional Analysis"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.1, Page 268"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "P1 = 57; #Power in SI\n",
+ "M = 1/14.6; #Ratio of mass in SI/British\n",
+ "L = 1/0.3048; #Ratio of length in SI/British\n",
+ "T = 1; #Ratio of time in SI/British\n",
+ "\n",
+ "#Calculations\n",
+ "'''\n",
+ "n1 is the horsepower and N1 is the corresponding number of British units (ft*lbf/second),\n",
+ "then N1 = 550*n1.\n",
+ "Similarly, for the SI system, n2 in kW,\n",
+ " N2 = 1000*n2\n",
+ "''' \n",
+ "N = (T**3)/(M*L**2) # N2/N1\n",
+ "n = N*550/1000 #n2/n1 \n",
+ "P2 = n*P1 ; #Power in kW\n",
+ "\n",
+ "print \"Power in kW :\",round(P2,1)\n",
+ "print \"Conversion Factor :\",round(n,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power in kW : 42.5\n",
+ "Conversion Factor : 0.746\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/Chapter_9.ipynb b/Fluid_Mechanics_by_John_F._Douglas/Chapter_9.ipynb
new file mode 100755
index 00000000..5d9fe9d6
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/Chapter_9.ipynb
@@ -0,0 +1,337 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:38d704564aa6536fc6da296a78f2a33e8cb9eb20a3ce0fa8f700546de7fd07b5"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9: Similarity"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.1, Page 291"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "\n",
+ "\n",
+ " #Initializing the variables\n",
+ "Vp = 10;\n",
+ "LpByLm = 20;\n",
+ "rhoPbyRhoM = 1;\n",
+ "muPbymuM = 1;\n",
+ " #Calculations\n",
+ "Vm = Vp*LpByLm*rhoPbyRhoM*muPbymuM;\n",
+ " \n",
+ "print \"Mean water tunnel flow velocity (m/s) :\",Vm"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean water tunnel flow velocity (m/s) : 200\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.2, Page 292"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "Vp = 3;\n",
+ "LpByLm = 30;\n",
+ "rhoPbyRhoM = 1;\n",
+ "muPbymuM = 1;\n",
+ "\n",
+ " #Calculations\n",
+ "Vm = Vp*LpByLm*rhoPbyRhoM*muPbymuM;\n",
+ " \n",
+ "print \"Mean water tunnel flow velocity (m/s):\",Vm"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean water tunnel flow velocity (m/s): 90\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3, Page 293"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "Vp = 100;\n",
+ "cP = 340;\n",
+ "cM = 295;\n",
+ "rhoM = 7.7;\n",
+ "rhoP = 1.2;\n",
+ "muM = 1.8*10**-5;\n",
+ "muP = 1.2*10**-5;\n",
+ "\n",
+ " #Calculations\n",
+ "Vm = Vp*(cM/cP);\n",
+ "LmByLp = 1/((Vm/Vp)*(muM/muP)*(rhoM/rhoP));\n",
+ "FmByFp = (rhoM/rhoP)*(Vm/Vp)**2*(LmByLp)**2;\n",
+ "\n",
+ "print 'Mean wind tunnel flow velocity(m/s) :',round(Vm,2)\n",
+ "print \"Percentage ratio of forces (%) :\",round(FmByFp*100,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mean wind tunnel flow velocity(m/s) : 86.76\n",
+ "Percentage ratio of forces (%) : 6.93\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.4, Page 295"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "def pLossRatio(RatRho,RatMu,RatL):\n",
+ " Z = RatRho*RatMu**2*RatL**2;\n",
+ " return Z\n",
+ "\n",
+ " #Calculations\n",
+ " #Case (a) : water is used\n",
+ "RatRho = 1;\n",
+ "RatMu = 1;\n",
+ "RatL = 10;\n",
+ "print \"(a)Ratio of pressure losses between the model and the prototype if water is used :\",pLossRatio(RatRho,RatMu,RatL)\n",
+ "\n",
+ "# Case (b) : air is used\n",
+ "RatRho = 1000/1.23;\n",
+ "RatMu = 1.8*10**-5/10**-3;\n",
+ "\n",
+ "print \"(b)Ratio of pressure losses between the model and the prototype if air is used :\",round(pLossRatio(RatRho,RatMu,RatL),2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(a)Ratio of pressure losses between the model and the prototype if water is used : 100\n",
+ "(b)Ratio of pressure losses between the model and the prototype if air is used : 26.34\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.5, Page 296"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ " #Initializing the variables\n",
+ "scale = 1/50;\n",
+ "ratArea = scale**2;\n",
+ "Qp = 1200;\n",
+ "\n",
+ " #Calculations\n",
+ "LmByLp = (ratArea)**0.5;\n",
+ "VmByVp = (LmByLp)**0.5;\n",
+ "Qm = Qp*ratArea*VmByVp;\n",
+ "\n",
+ "print \"Water flow rate (m3/s ):\",round(Qm,3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Water flow rate (m3/s ): 0.068\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6, Page 298"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ " #Initializing the variables\n",
+ "Qa = 2;\n",
+ "Na = 1400;\n",
+ "rhoA = 0.92;\n",
+ "rhoS = 1.3;\n",
+ "DaByDs = 1;\n",
+ "dPa = 200;\n",
+ "\n",
+ " #Calculations\n",
+ "Ns = Na*(rhoA/rhoS)*(DaByDs);\n",
+ "Qs = Qa*(Ns/Na);\n",
+ "dPs = dPa *(rhoS/rhoA)*(Ns/Na)**2*(1/DaByDs)**2;\n",
+ "\n",
+ "print \"Fan test speed (rev/s):\",round(Ns,1)\n",
+ "print \"Flow rate (m3/s) :\",round(Qs,3)\n",
+ "print \"Pressure rise (N/m2 ) :\",round(dPs,1) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Fan test speed (rev/s): 990.8\n",
+ "Flow rate (m3/s) : 1.415\n",
+ "Pressure rise (N/m2 ) : 141.5\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.8, Page 304"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ " \n",
+ "\n",
+ " #Initializing the variables\n",
+ "V = 300 # Volume rate\n",
+ "w = 3;\n",
+ "d = 65;\n",
+ "l = 30;\n",
+ "scaleH = 30/1000/18;\n",
+ "scaleV = 1/60;\n",
+ "ZmByZr = 1/60;\n",
+ "LmByLr = 1/600;\n",
+ "rho = 1000;\n",
+ "mu = 1.14*10**-3;\n",
+ "\n",
+ " #Calculations\n",
+ "Vr = V/(w*d); \n",
+ "Vm =Vr*(ZmByZr)**0.5;\n",
+ "m = (w*d*scaleH*scaleV)/(d*scaleH + 2*w*scaleV);\n",
+ "Rem = rho*Vm*m/mu;\n",
+ "TmByTr = LmByLr*(1/ZmByZr)**0.5;\n",
+ "Tm = 12.4*60*TmByTr;\n",
+ "\n",
+ "\n",
+ "\n",
+ "print \"Tidal Period (minutes):\",round(Tm,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Tidal Period (minutes): 9.6\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/README.txt b/Fluid_Mechanics_by_John_F._Douglas/README.txt
new file mode 100755
index 00000000..d96dbe87
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Ashish Kumar
+Course: btech
+College/Institute/Organization: IITB
+Department/Designation: Aerospace Engg.
+Book Title: Fluid Mechanics
+Author: John F. Douglas
+Publisher: Pearson Education
+Year of publication: 2005
+Isbn: 978-0-13-129293-2
+Edition: 5th \ No newline at end of file
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/Screenshot_from_2014-04-24_10_11_42.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/Screenshot_from_2014-04-24_10_11_42.png
new file mode 100755
index 00000000..03ac1d9d
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/Screenshot_from_2014-04-24_10_11_42.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch11.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch11.png
new file mode 100755
index 00000000..7f1e98ab
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch11.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch3.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch3.png
new file mode 100755
index 00000000..1b4c7079
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch3.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch5.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch5.png
new file mode 100755
index 00000000..66f3995c
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/ch5.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/incresepressure.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/incresepressure.png
new file mode 100755
index 00000000..aaeed6e9
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/incresepressure.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot1.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot1.png
new file mode 100755
index 00000000..caf0a78f
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot1.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot2.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot2.png
new file mode 100755
index 00000000..35633e7f
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/plot2.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn.png
new file mode 100755
index 00000000..1b513465
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn.png
Binary files differ
diff --git a/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn_1.png b/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn_1.png
new file mode 100755
index 00000000..359a0fa5
--- /dev/null
+++ b/Fluid_Mechanics_by_John_F._Douglas/screenshots/veldistrtn_1.png
Binary files differ