{ "cells": [ { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Work in progress\n", "Author: Jonathan Pelham" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction\n", "\n", "This notebook is a worked example in python 3 of chapter 3 from Aircraft Design: A Conceptual Approach 3rd edition by Daniel P. Raymer. using the ASW(Anti Submarine Warface) aircraft as an example. Where possible no libraries not in an anaconda distribution basic install will be used.\n", "

\n", "**Mission:**
Fly 1500nm (2778km) at M=0.6 carrying 10000lb (4535.924kg) of equipment and 4 crew members at 800lb (363.874kg), loiter on station for 3 hrs then return.\n", "# Takeoff Gross Weight Estimation\n", "\n", "\n", "$$Takeoff\\; Gross\\; Weight = W_0\\\\ \n", "Crew\\; Weight = W_{crew}\\\\ \n", "Payload\\; Weight = W_{payload}\\\\ \n", "Fuel\\; Weight = W_{fuel}\\\\ \n", "Aircraft\\; Empty\\; Weight = W_{empty}\\\\ \n", "W_0 = W_{crew} + W_{payload} + W_{fuel} + W_{empty}$$\n", "\n", "- Simplification of the equation\n", "$$Empty\\; Weight\\; Fraction = \\frac{W_{empty}}{W_0}\\\\ \n", "Fuel\\; Fraction = \\frac{W_{fuel}}{W_0}\\\\\n", "W_0 = W_{crew} + W_{payload} + (\\frac{W_{fuel}}{W_0})W_0 + (\\frac{W_{empty}}{W_0})W_0$$\n", "- Solving for $W_0$ as follows\n", "$$ W_0 - (\\frac{W_{fuel}}{W_0})W_0 - (\\frac{W_{empty}}{W_0})W_0 = W_{crew} + W_{payload}$$\n", "$$W_0 = \\frac{W_{crew} + W_{payload}}{1-(\\frac{W_{fuel}}{W_0})-(\\frac{W_{empty}}{W_0})}$$\n", "Since $W_{crew}$ and $W_{payload}$ are normally in the aircraft design requirments this then allows us to estimate the takeoff gross weight $W_0$ of the proposed aircraft by selecting appropriate empty weight fraction $\\frac{W_{empty}}{W_0}$ and fuel fractions $\\frac{W_{fuel}}{W_0}$ based on historical trends and our understanding of the aircraft role based on its design requirments.\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Crew Weight 800.00 lb\n", "Payload Weight 10000.00 lb\n", "Fuel Fraction 0.3870\n", "Empty Weight Fractiont 0.4361\n", "Takeoff Gross Weight W_0 61051.44 lb\n" ] } ], "source": [ "def TGW(EmptyW_F, Fuel_F, Crew_W, Payload_W):\n", " return (Crew_W+Payload_W)/(1-Fuel_F-EmptyW_F)\n", "#e.g. ASW example\n", "Crew_Weight = 800 #lb\n", "Payload_Weight = 10000 #lb\n", "Fuel_Fraction = 0.387\n", "Empty_Weight_Fraction = 0.4361\n", "print(\"Crew Weight %.2f lb\" % (Crew_Weight))\n", "print(\"Payload Weight %.2f lb\" % (Payload_Weight))\n", "print(\"Fuel Fraction %.4f\" % (Fuel_Fraction,))\n", "print(\"Empty Weight Fractiont %.4f\" % (Empty_Weight_Fraction,))\n", "TGW_tmp_1 = TGW(Empty_Weight_Fraction, Fuel_Fraction, Crew_Weight, Payload_Weight)\n", "print(\"Takeoff Gross Weight W_0 %.2f lb\" % (TGW_tmp_1))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Empty Weight Estimation\n", "Empty weight fractions are estimated based on historical trends for aircraft based on their roles and sized takeoff weight. Raymer suggests a $5\\%$ reduction should be applied if the proposed aircraft is to be of composite construction. He suggests that there is not yet enough information to base this reduction in a study of actual aircraft. Perhaps by now there is such a study and this notebook will perhaps be updated to reflect that in the future.\n", "$$Historical\\; metric\\; = A\\\\\n", "Variable\\; Wing\\; Sweep\\; penalty\\; = K_{vs}\\\\\n", "K_{vs} = 1.04\\; if\\; variable\\; sweep\\; K_{vs} = 1\\; otherwise\\\\\n \\\\\n", "Weight\\; Sensitivity\\; Exponent\\; = C\\\\\n", "\\frac{W_{empty}}{W_0} = A {W_0}^C K_{vs}$$\n" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.436068833653\n" ] } ], "source": [ "def EWF(TakeoffG_W,HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04):\n", " if VWS:\n", " VWS_p_factor = VWS_penalty\n", " else:\n", " VWS_p_factor = 1\n", " \n", " return HS_metric*pow(TakeoffG_W, WeightS_E)*VWS_p_factor\n", "\n", "bomber_HS_metric = 0.93\n", "bomber_weight_sensitivty_e = -0.07\n", "estimated_TGW = 50000\n", "print(EWF(estimated_TGW,bomber_HS_metric,bomber_weight_sensitivty_e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fuel Fraction Estimation\n", "To estimate the fuel fraction of the aircraft we need to understand more about how it will be used to inform us regarding the rate of fuel consumption at different points during the mission and the aerodynamics.
\n", "An aircraft mission can be broken down into multiple segments. The weight at the start of the mission is taken as the Takeoff Gross Weight $W_0$ and for each mission segment $i$ the weight of the aircraft at the end of that segment will be $W_i$. The weight fraction of each segment is expressed as $(\\frac{W_i}{W_{i-1}})$. In a mission with a total number of segments $x$ the weight of the aircraft at the end of the mission will be $W_x$. The ratio $\\frac{W_x}{W_0}$ can then be used to calculate the fuel fraction. In our simple sizing study we presume no other weight change apart from fuel burn occurs during the mission. Raymer suggests a $6\\%$ allowance should be made for reserve and trapped fuel.\n", "$$\\frac{W_{fuel}}{W_0} = 1.06(1 - \\frac{W_x}{W_0})$$" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def FF(mission_ratio,RT_Allowance=1.06):\n", " return RT_Allowance*(1-mission_ratio)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cruise fuel burn\n", "Cruise weight fractions can be found by using the breguet range equation\n", "$$Range = R\\; in\\; ft\\\\\n", "Specific\\; Fuel\\; Consumption = C \\\\\n", "Velocity = V\\; in\\; \\frac{ft}{s}\\\\\n", "Lift\\; to\\; Drag\\; ratio\\; = \\frac{L}{D} \\\\\n", "R = \\frac{V}{C} \\frac{L}{D} \\ln(\\frac{W_{i-1}}{W_i})$$\n", "\n", "Which can be rearranged to give the weight fraction for that segment.\n", "$$\\frac{W_i}{W_{i-1}} = exp(\\frac{-R C}{V (\\frac{L}{D})})$$" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def cruise_WF(Range, Specific_FC, velocity, LD_ratio):\n", " return numpy.exp((-1*Range*Specific_FC)/(velocity*LD_ratio))\n", "\n", "high_bypass_turbofan_cruise_SFC = 0.0001389" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Loiter fuel burn\n", "Loiter weight fractions can be found using the endurance equation.\n", "$$ Endurance = E\\; in\\; s\\\\\n", "E = \\frac{\\frac{L}{D}}{C}\\ln(\\frac{W_{i-1}}{W_i})$$\n", "Rearranged again to put it in terms of the weight fraction we get\n", "$$\\frac{W_i}{W_{i-1}} = exp(\\frac{-E C}{(\\frac{L}{D})})$$" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def loiter_WF(Endurance, Specific_FC, LD_ratio):\n", " return numpy.exp((-1*Endurance*Specific_FC)/(LD_ratio))\n", "\n", "high_bypass_turbofan_loiter_SFC = 0.0001111" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# L/D Ratio esimation\n", "\n", "Raymer suggests that during initial sizing for a jet aircraft the cruise L/D should be taken as 86.6% of the maximum L/D of the aircraft. The loiter L/D ratio will of course be the maxium L/D as loiter is done in the most efficent configuration to ensure as much time on station as possible.\n", "\n", "This then leavs us with the problem of estimating L/D.\n", "Raymer suggests estimating it based on the wetted aspect ratio of the aircraft. This then leaves us to use the conceptual sketch which has been done of the ASW aircraft concept Raymer use as an example and he gives the wetted area ratio $\\frac{S_{wet}}{S_{ref}}$ as 5.5 and the wetted aspect ratio is 1.27. Looking up these values on the figure he provides on page 26 gives us our design L/D max of 16." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [ "class AircraftMission:\n", " variable_stan_disp = {'name':{'description':'Name:','format':'%s'},\n", " 'weight_fraction':{'description':'WF:','format':'%.4f'},\n", " 'description':{'description':'Description:','format':'%s'},\n", " 'segment':{'description':'Segment:','format':'%i'}}\n", " def __init__(self):\n", " self.segments=[]\n", " \n", " def append_segment(self, seg_name, seg_WF, seg_description='None Provided'):\n", " no_of_segments = len(self.segments)\n", " self.segments.append({'segment':no_of_segments+1,'name':seg_name,'weight_fraction':seg_WF,'description':seg_description})\n", " \n", " def mission_weight_ratio(self):\n", " no_of_segments = len(self.segments)\n", " if no_of_segments <= 0:\n", " raise ValueError('No mission segments have been added to the mission!')\n", " \n", " mwr = 1\n", " for a in range(0,no_of_segments):\n", " mwr = mwr*self.segments[a]['weight_fraction']\n", " return mwr\n", " \n", " def landing_weight(self, TakeoffG_W):\n", " return TakeoffG_W * self.mission_weight_ratio()\n", " \n", " def display_mission(self,itp=['segment','name','weight_fraction','description'],p_dict=variable_stan_disp):\n", " no_of_segments = len(self.segments)\n", " if no_of_segments <= 0:\n", " raise ValueError('No mission segments have been added to the mission!')\n", " \n", " for a in range(0,no_of_segments):\n", " disp_list = [p_dict[item_a]['description']+p_dict[item_a]['format']+' ' for item_a in itp]\n", " variable_list = [self.segments[a][item_b] for item_b in itp]\n", " disp_string = ''.join(disp_list) % tuple(variable_list)\n", " print(disp_string)\n", " \n", " \n", " \n", " \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Segment:1 Name:Warmup and Takeoff WF:0.9700 Description:None Provided \n", "Segment:2 Name:Climb WF:0.9850 Description:None Provided \n", "Segment:3 Name:Cruise WF:0.8581 Description:1500 nm range \n", "Segment:4 Name:Loiter WF:0.9278 Description:3 hr Loiter \n", "Segment:5 Name:Cruise WF:0.8581 Description:1500 nm range \n", "Segment:6 Name:Loiter WF:0.9917 Description:20 minute loiter \n", "Segment:7 Name:Land WF:0.9950 Description:None Provided \n", "Misson Weight Ratio 0.6440\n", "Fuel Fraction 0.3773\n", "Empty Weight Fraction 0.43607 based on TGW W_0 estimate 50000.000 lb\n", "Takeoff Gross Weight W_0 57882.726 lb\n", "Landing Gross Weight W_x 37277.185 lb\n", "Fuel Burned 20605.540 lb\n" ] } ], "source": [ "\n", "ASW_LD_max = 16\n", "cruise_LD_ratio = ASW_LD_max * 0.866\n", "loiter_LD_ratio = ASW_LD_max\n", "cruise_velocity = 596.9 # ft/s\n", "cruise_SFC = high_bypass_turbofan_cruise_SFC\n", "loiter_SFC = high_bypass_turbofan_loiter_SFC\n", "mission_loiter = 10800 # 3h in s\n", "landing_loiter = 1200 # 20 min in s\n", "cruise_range = 9114000 # 1500nm in ft\n", "\n", "ASW_Mission = AircraftMission()\n", "ASW_Mission.append_segment('Warmup and Takeoff',0.97)\n", "ASW_Mission.append_segment('Climb',0.985)\n", "ASW_Mission.append_segment('Cruise',cruise_WF(cruise_range,cruise_SFC,cruise_velocity,cruise_LD_ratio),seg_description='1500 nm range') \n", "ASW_Mission.append_segment('Loiter',loiter_WF(mission_loiter,loiter_SFC,loiter_LD_ratio),seg_description='3 hr Loiter') \n", "ASW_Mission.append_segment('Cruise',cruise_WF(cruise_range,cruise_SFC,cruise_velocity,cruise_LD_ratio),seg_description='1500 nm range') # 1500 nm\n", "ASW_Mission.append_segment('Loiter',loiter_WF(landing_loiter,loiter_SFC,loiter_LD_ratio),seg_description='20 minute loiter') #20 mins\n", "ASW_Mission.append_segment('Land',0.995)\n", "ASW_Mission.display_mission()\n", "\n", "MWR_tmp = ASW_Mission.mission_weight_ratio()\n", "print(\"Misson Weight Ratio %.4f\" % (MWR_tmp,))\n", "FF_tmp = FF(MWR_tmp)\n", "print(\"Fuel Fraction %.4f\" % (FF_tmp,))\n", "TakeoffG_W_estimate = 50000\n", "EWF_tmp = EWF(TakeoffG_W_estimate,0.93,-0.07)\n", "print(\"Empty Weight Fraction %.5f based on TGW W_0 estimate %.3f lb\" % (EWF_tmp,TakeoffG_W_estimate))\n", "TGW_tmp = TGW(EWF_tmp , FF_tmp, Crew_Weight, Payload_Weight)\n", "print(\"Takeoff Gross Weight W_0 %.3f lb\" % (TGW_tmp))\n", "LGW_tmp = ASW_Mission.landing_weight(TGW_tmp)\n", "print(\"Landing Gross Weight W_x %.3f lb\" % (LGW_tmp))\n", "fuel_burn = TGW_tmp-LGW_tmp\n", "print(\"Fuel Burned %.3f lb\" % (fuel_burn))\n", "\n", "\n", " \n", "def calc_WG0(WGV,Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04):\n", " EWF_calc = EWF(WGV,HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04)\n", " return TGW(EWF_calc, Fuel_F, Crew_W, Payload_W)\n", "\n", "def diff_calc_WG0(WGV,Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04):\n", " tmp_wgv = calc_WG0(WGV,Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS,VWS_penalty)\n", " result = WGV - tmp_wgv\n", " if result < 0:\n", " mag_result = result * -1\n", " else:\n", " mag_result=result\n", " return mag_result\n", " \n", "\n", "def calc_WG0_array(WGV_list,Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04):\n", " WG0_array=[]\n", " EWF_array=[]\n", " diff_array=[]\n", " for a in range(0,len(WGV_list)):\n", " WG0_array.append(calc_WG0(WGV_list[a],Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS,VWS_penalty))\n", " EWF_array.append(EWF(WGV_list[a],HS_metric,WeightS_E,VWS=False,VWS_penalty=1.04))\n", " diff_array.append(diff_calc_WG0(WGV_list[a],Fuel_F,Crew_W, Payload_W, HS_metric,WeightS_E,VWS,VWS_penalty))\n", " return WG0_array, EWF_array, diff_array" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have created a function for the the formulas and a way to store and interrogate mission profiles we can find the ideal $W_0$ using the iteration method Raymer shows. " ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "WGV_array = [50000]\n", "for a in range(0,250):\n", " WGV_array.append(WGV_array[a]+50)\n", " \n", "calc_WG0_tmp, calc_EWF_tmp, diff_array = calc_WG0_array(WGV_array,FF_tmp,Crew_Weight, Payload_Weight, bomber_HS_metric,bomber_weight_sensitivty_e)\n", "best_guess_index = numpy.argmin(diff_array)\n", "fig, ax = plt.subplots()\n", "axes = [ax, ax.twinx(), ax.twinx()]\n", "fig.subplots_adjust(right=0.75)\n", "axes[-1].spines['right'].set_position(('axes', 1.2))\n", "axes[0].plot(WGV_array,calc_WG0_tmp,c='b')\n", "axes[0].set_title('Estimated vs Calculated Takeoff Gross Weight for\\nASW Mission Best Guess $W_0$:%.3f lb EWF:%.4f' % (WGV_array[best_guess_index],calc_EWF_tmp[best_guess_index]))\n", "axes[0].set_ylabel('Calculated $W_0$ (lb)',color='b')\n", "axes[0].set_xlabel('Estimated $W_0$ (lb)')\n", "axes[0].tick_params('y', colors='b')\n", "axes[1].plot(WGV_array,calc_EWF_tmp,c='r')\n", "axes[1].set_ylabel('Empty Weight Fraction',color='r')\n", "axes[1].tick_params('y', colors='r')\n", "axes[2].plot(WGV_array,diff_array,c='g')\n", "axes[2].set_ylabel('|difference|',color='g')\n", "axes[2].tick_params('y', colors='g')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimisation\n", "In contrast to the method expressed in Raymers book because we have expressed the formulas as python functions we can use the powerful optimisation methods available to us. Here we use the scipy library minimize method to efficently find the ideal $W_0$ for the mission as defined.\n", "\n", "Because python has these libraries it makes it much easier to create functions that call other functions and explore the solution space to create optimal aircraft designs.\n", "\n" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimised Takeoff Gross Weight W_0 found 56718.073 lb with EWF 0.4322\n" ] } ], "source": [ "import scipy.optimize as optimize\n", "minimum_W_0 = optimize.minimize(diff_calc_WG0,50000, args = (FF_tmp,Crew_Weight, Payload_Weight, bomber_HS_metric,bomber_weight_sensitivty_e))\n", "min_EWF = EWF(minimum_W_0.x,0.93,-0.07)\n", "print(\"Optimised Takeoff Gross Weight W_0 found %.3f lb with EWF %.4f\" % (minimum_W_0.x,min_EWF))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": ["print('Difference between the Takeoff Gross Weight W_0 estimations: {} lbs'.format((WGV_array[best_guess_index] - minimum_W_0.x)[0]))\n", "print('Difference between the Empty Weight Fraction EWF estimations: {} %'.format(100*((calc_EWF_tmp[best_guess_index] - min_EWF)[0])))"] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 1 }