{
 "metadata": {
  "name": "",
  "signature": "sha256:71725ceb4c0a99d9e0941e0534b253021a5547aae016d77b23760546a6ae5b10"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "CHAPTER08:NORMAL SHOCK WAVES AND RELATED TOPICS"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E01 : Pg 256"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "import math \n",
      "from math import sqrt,pi\n",
      "R = 287.;\n",
      "gam = 1.4;\n",
      "V_inf = 250.;\n",
      "\n",
      "# (a)\n",
      "# At sea level\n",
      "T_inf = 288.;\n",
      "\n",
      "# the velocity of sound is given by\n",
      "a_inf = sqrt(gam*R*T_inf);\n",
      "\n",
      "# thus the mach number can be calculated as\n",
      "M_inf = V_inf/a_inf;\n",
      "\n",
      "print\"(a)The Mach number at sea level is:M_inf =\",M_inf\n",
      "\n",
      "# similarly for (b) and (c)\n",
      "# (b)\n",
      "# at 5km\n",
      "T_inf = 255.7;\n",
      "\n",
      "a_inf = sqrt(gam*R*T_inf);\n",
      "\n",
      "M_inf = V_inf/a_inf;\n",
      "\n",
      "print\"(b)The Mach number at 5 km is: M_inf = \",M_inf\n",
      "\n",
      "# (c)\n",
      "# at 10km\n",
      "T_inf = 223.3;\n",
      "\n",
      "a_inf = sqrt(gam*R*T_inf);\n",
      "\n",
      "M_inf = V_inf/a_inf;\n",
      "\n",
      "print\"(c)The Mach number at 10 km is: M_inf =\",M_inf"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(a)The Mach number at sea level is:M_inf = 0.73491785465\n",
        "(b)The Mach number at 5 km is: M_inf =  0.779955236945\n",
        "(c)The Mach number at 10 km is: M_inf = 0.834623638772\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E02 : Pg 256"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "import math \n",
      "T = 320;            # static temperature\n",
      "V = 1000;           # velocity\n",
      "gam = 1.4;          # ratio of specific heats\n",
      "R = 287;            # universal gas constant\n",
      "\n",
      "# the speed of sound is given by\n",
      "a = math.sqrt(gam*R*T);\n",
      "\n",
      "# the mach number can be calculated as\n",
      "M = V/a;\n",
      "\n",
      "print\"The Mach number is:\\nM =\",M"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The Mach number is:\n",
        "M = 2.78881717658\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E03 : Pg 257"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "gam = 1.4;                    # ratio of specific heats\n",
      "\n",
      "# (a)\n",
      "M = 2;                        # Mach number\n",
      "\n",
      "# the ratio of kinetic energy to internal energy is given by\n",
      "ratio = gam*(gam-1)*M*M/2;\n",
      "\n",
      "print\"(a)The ratio of kinetic energy to internal energy is:\",ratio\n",
      "\n",
      "# similarly for (b)\n",
      "# (b)\n",
      "M = 20;\n",
      "\n",
      "ratio = gam*(gam-1)*M*M/2;\n",
      "\n",
      "print\"\\n(b)The ratio of kinetic energy to internal energy is:\",ratio"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(a)The ratio of kinetic energy to internal energy is: 1.12\n",
        "\n",
        "(b)The ratio of kinetic energy to internal energy is: 112.0\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E04 : Pg 259"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "M = 2.79;        # Mach number\n",
      "T = 320;         # static temperature from ex. 7.3\n",
      "p = 1;           # static pressure in atm\n",
      "gam = 1.4;\n",
      "\n",
      "# from eq. (8.40)\n",
      "T0 = T*(1+((gam-1)/2*M*M));\n",
      "\n",
      "# from eq. (8.42)\n",
      "p0 = p*((1+((gam-1)/2*M*M))**(gam/(gam-1)));\n",
      "\n",
      "print\"The total temperature and pressure are:\\nT0 =\",T0,\"K\",\"\\nP0 =\",p0,\"atm\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The total temperature and pressure are:\n",
        "T0 = 818.1824 K \n",
        "P0 = 26.7270201929 atm\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E05 : Pg 260"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "import math \n",
      "M = 3.5;        # Mach number\n",
      "T = 180;         # static temperature from ex. 7.3\n",
      "p = 0.3;           # static pressure in atm\n",
      "gam = 1.4;\n",
      "R = 287;\n",
      "\n",
      "# from eq. (8.40)\n",
      "T0 = T*(1+((gam-1)/2*M*M));\n",
      "\n",
      "# from eq. (8.42)\n",
      "p0 = p*((1+((gam-1)/2*M*M))**(gam/(gam-1)));\n",
      "\n",
      "a = math.sqrt(gam*R*T);\n",
      "V = a*M;\n",
      "\n",
      "# the values at local sonic point are given by\n",
      "T_star = T0*2/(gam+1);\n",
      "a_star = math.sqrt(gam*R*T_star);\n",
      "M_star = V/a_star;\n",
      "\n",
      "print\"T0 =\",T0,\"K\",\"\\nP0 =\",p0,\"atm\",\"\\nT* =\",T_star,\"k\",\"\\na* =\",a_star,\"m/s\",\"\\nM* =\",M_star"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "T0 = 621.0 K \n",
        "P0 = 22.8816894716 atm \n",
        "T* = 517.5 k \n",
        "a* = 455.995065763 m/s \n",
        "M* = 2.06418738617\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E06 : Pg 263"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "p_inf = 1;\n",
      "p1 = 0.7545;\n",
      "M_inf = 0.6;\n",
      "gam = 1.4;\n",
      "\n",
      "# from eq. (8.42)\n",
      "p0_inf = p_inf*((1+((gam-1)/2*M_inf*M_inf))**(gam/(gam-1)));\n",
      "\n",
      "p0_1 = p0_inf;\n",
      "\n",
      "# from eq. (8.42)\n",
      "ratio = p0_1/p1;\n",
      "\n",
      "# from appendix A, for this ratio, the Mach number is\n",
      "M1 = 0.9;\n",
      "\n",
      "print\"The mach number at the given point is:\\nM1 =\",M1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The mach number at the given point is:\n",
        "M1 = 0.9\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E07 : Pg 268"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "import math \n",
      "T_inf = 288;                                        # freestream temperature\n",
      "p_inf = 1;                                          # freestream pressure\n",
      "p1 = 0.7545;                                        # pressure at point 1\n",
      "M = 0.9;                                            # mach number at point 1\n",
      "gam = 1.4;                                          # ratio of specific heats\n",
      "R=1.;#\n",
      "# for isentropic flow, from eq. (7.32)\n",
      "T1 = T_inf*((p1/p_inf)**((gam-1)/gam));\n",
      "\n",
      "# the speed of sound at that point is thus\n",
      "a1 = math.sqrt(gam*R*T1);\n",
      "\n",
      "# thus, the velocity can be given as\n",
      "V1 = M*a1;\n",
      "\n",
      "print\"The velocity at the given point is:\\nV1 =\",V1,\"m/s\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The velocity at the given point is:\n",
        "V1 = 17.3590326624 m/s\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E08 : Pg 268"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "import math \n",
      "u1 = 680;                            # velocity upstream of shock\n",
      "T1 = 288;                            # temperature upstream of shock\n",
      "p1 = 1;                              # pressure upstream of shock\n",
      "gam = 1.4;                           # ratio of specific heats\n",
      "R = 287;                             # universal gas constant\n",
      "\n",
      "# the speed of sound is given by\n",
      "a1 = math.sqrt(gam*R*T1)\n",
      "\n",
      "# thus the mach number is\n",
      "M1 = 2;\n",
      "\n",
      "# from Appendix B, for M = 2, the relations between pressure and temperature are given by\n",
      "pressure_ratio = 4.5;                # ratio of pressure accross shock\n",
      "temperature_ratio = 1.687;           # ratio of temperature accross shock\n",
      "M2 = 0.5774;                         # mach number downstream of shock\n",
      "\n",
      "# thus the values downstream of the shock can be calculated as\n",
      "p2 = pressure_ratio*p1;\n",
      "T2 = temperature_ratio*T1;\n",
      "a2 = math.sqrt(gam*R*T2);\n",
      "u2 = M2*a2;\n",
      "\n",
      "print\"p2 =\",p2,\"atm\",\"\\nT2 =\",T2,\"K\",\"\\nu2 =\",u2,\"m/s\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "p2 = 4.5 atm \n",
        "T2 = 485.856 K \n",
        "u2 = 255.114727639 m/s\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E09 : Pg 271"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "p1 = 1;                                            # ambient pressure upstream of shock\n",
      "\n",
      "\n",
      "# (a)\n",
      "# for M = 2;\n",
      "p0_1 = 7.824*p1;                                   # total pressure upstream of shock\n",
      "pressure_ratio = 0.7209;                           # ratio of total pressure accross the shock\n",
      "p0_2 = pressure_ratio*p0_1;                        # total pressure downstream of shock\n",
      "\n",
      "# thus the total loss of pressure is given by\n",
      "pressure_loss = p0_1 - p0_2;\n",
      "\n",
      "print\"The total pressure loss is:\\n(a)P0_loss=\",pressure_loss,\"atm\"\n",
      "\n",
      "# similarly\n",
      "# (b)\n",
      "# for M = 4;\n",
      "p0_1 = 151.8*p1;\n",
      "pressure_ratio = 0.1388;\n",
      "p0_2 = pressure_ratio*p0_1;\n",
      "\n",
      "# thus the total loss of pressure is given by\n",
      "pressure_loss = p0_1 - p0_2;\n",
      "\n",
      "print\"\\n(b)P0_loss =\",pressure_loss,\"atm\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The total pressure loss is:\n",
        "(a)P0_loss= 2.1836784 atm\n",
        "\n",
        "(b)P0_loss = 130.73016 atm\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E10 : Pg 272"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "M_inf = 2.;                     # freestream mach number\n",
      "p_inf = 2.65e4;                # freestream pressure\n",
      "T_inf = 223.3;                 # freestream temperature\n",
      "\n",
      "# from Appendix A, for M = 2\n",
      "p0_inf = 7.824*p_inf;          # freestream total pressure\n",
      "T0_inf = 1.8*T_inf;            # freestream total temperature\n",
      "\n",
      "# from Appendix B, for M = 2\n",
      "p0_1 = 0.7209*p0_inf;          # total pressure downstream of the shock\n",
      "T0_1 = T0_inf;                 # total temperature accross the shock is conserved\n",
      "\n",
      "# since the flow downstream of the shock is isentropic\n",
      "p0_2 = p0_1;\n",
      "T0_2 = T0_1;\n",
      "\n",
      "# from Appendix A, for M = 0.2 at point 2\n",
      "p2 = p0_2/1.028;\n",
      "T2 = T0_2/1.008;\n",
      "\n",
      "p2_atm = p2/102000;\n",
      "\n",
      "print\"The pressure at point 2 is:p2 =\",p2_atm,\"atm\","
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The pressure at point 2 is:p2 = 1.42546466011 atm\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E11 : Pg 273"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "M_inf = 10;                    # freestream mach number\n",
      "p_inf = 2.65e4;                # freestream pressure\n",
      "T_inf = 223.3;                 # freestream temperature\n",
      "\n",
      "# from Appendix A, for M = 2\n",
      "p0_inf = 0.4244e5*p_inf;       # freestream total pressure\n",
      "T0_inf = 21*T_inf;             # freestream total temperature\n",
      "\n",
      "# from Appendix B, for M = 2\n",
      "p0_1 = 0.003045*p0_inf;        # total pressure downstream of shock\n",
      "T0_1 = T0_inf;                 # total temperature downstream of shock is conserved\n",
      "\n",
      "# since the flow downstream of the shock is isentropic\n",
      "p0_2 = p0_1;\n",
      "T0_2 = T0_1;\n",
      "\n",
      "# from Appendix A, for M = 0.2 at point 2\n",
      "p2 = p0_2/1.028;\n",
      "T2 = T0_2/1.008;\n",
      "\n",
      "p2_atm = p2/102000;\n",
      "\n",
      "\n",
      "print\"The pressure at point 2 is: p2 =\",p2_atm,\"atm\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The pressure at point 2 is: p2 = 32.6599307622 atm\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E13 : Pg 274"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressed in SI units\n",
      "\n",
      "p1 = 4.66e4;                                # ambient pressure\n",
      "M = 8;                                      # mach number\n",
      "\n",
      "# from Appendix B, for M = 8\n",
      "p0_2 = 82.87*p1;                            # total pressure downstream of the shock\n",
      "\n",
      "# since the flow is isentropic downstream of the shock, total pressure is conserved\n",
      "ps_atm = p0_2/101300;                       # pressure at the stagnation point\n",
      "\n",
      "print\"The pressure at the nose is:\\np_s =\",ps_atm,\"atm\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The pressure at the nose is:\n",
        "p_s = 38.1218361303 atm\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example E14 : Pg 274"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# All the quantities are expressedin SI units\n",
      "import math \n",
      "p1 = 2527.3;                    # ambient pressure at the altitude of 25 km\n",
      "T1 = 216.66;                    # ambient temperature at the altitude of 25 km\n",
      "p0_1 = 38800;                   # total pressure\n",
      "gam = 1.4;                      # ratio of specific heats\n",
      "R = 287;                        # universal gas constant\n",
      "pressure_ratio = p0_1/p1;       # ratio of total to static pressure\n",
      "\n",
      "# for this value of pressure ratio, mach number is\n",
      "M1 = 3.4;\n",
      "\n",
      "# the speed of sound is given by\n",
      "a1 = math.sqrt(gam*R*T1)\n",
      "\n",
      "# thus the velocity can be calculated as\n",
      "V1 = M1*a1;\n",
      "\n",
      "print\"The Velocity of the airplane is:\\nV1 =\",V1,\"m/s\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The Velocity of the airplane is:\n",
        "V1 = 1003.16703558 m/s\n"
       ]
      }
     ],
     "prompt_number": 13
    }
   ],
   "metadata": {}
  }
 ]
}