diff --git a/Design/Vehicle-Sizing/MS_TANK_SIZING_CODE.py b/Design/Vehicle-Sizing/MS_TANK_SIZING_CODE.py deleted file mode 100755 index 5bc828e..0000000 --- a/Design/Vehicle-Sizing/MS_TANK_SIZING_CODE.py +++ /dev/null @@ -1,212 +0,0 @@ -''' Beginning of Marginal Stability Tank Sizing Code - This code will take inputs from a .txt file containing all relevant - vehicle sizing data and information and compute important estimates - such as tank height, volume, thickness, and mass. These values - provided will only be estimates; however, the code will take into - account as many variables and parameters as possible to ensure - the most accurate result. - Work in Progress - -''' -# Establish needed variables and parameters for calculations -# This will all eventually be handled by a .txt file, when I learn how to do that :) -import math # gives me all the available constants I need - -class tankSize: - def __init__(self, rp1Mass, loxMass, diameter, pressure, factorOfSafety, pressurantDiameter, initialPressure, finalPressure): - self.rp1Mass = rp1Mass - self.loxMass = loxMass - self.diameter = diameter - self.pressure = pressure - self.factorOfSafety = factorOfSafety - self.pressurantDiameter = pressurantDiameter - self.initialPressure = initialPressure - self.finalPressure = finalPressure - - pi = math.pi - rho_lox = 0.04122124 # density of LOx as given in Vehicle Sizing spreadsheet V1, lbm/in^3 - rho_rp1 = 0.0292631 # density of RP-1, MS Vehicle Sizing V1 - rho_alum = 0.0975 # density of Aluminum 6061-T6, the likely choice for tanks - ys_alum = 40030.488 # yield strength of 6061-T6 - - - # Begin importing text file stuff...yay! - #file = open('input.txt', 'r') - # this opens the file 'input.txt' from whatever directory the program is - # saved to--make sure to download it or move it to the same directory! - - #prop_diam_text = file.readlines(1) # reads first line of the input file - #for line in prop_diam_text: - # prop_diam_stuff = line.split() # saves split results of first line - #diam = float(prop_diam_stuff[1]) # saves proper variables from that array, converted to float - diam = diameter - - #prop_press_text = file.readlines(2) # continues to read down the input file - #for line in prop_press_text: - # prop_press_stuff = line.split() - # print(prop_press_stuff) - #lox_press = float(prop_press_stuff[1]) - lox_press = pressure - rp1_press = lox_press # can be better worked into the code later, but should be the same - ''' Quick note here: I'd already written the code such that it would allow for two different - tank pressure inputs before adding the input text file capability, and I really didn't want - to go back and rewrite all my code at the risk of missing a variable somewhere or skewing an - equation. Leaving it like this also makes it a lot easier down the road if we decide we'd like - to keep the two tanks at different pressures for some reason. It also makes it a lot easier to - tell which tanks you're doing calculations for if they have different variable names, rather than - just a generic "tank pressure".''' - - #fos_text = file.readlines(3) - #for line in fos_text: - # fos_stuff = line.split() - #fos = float(fos_stuff[1]) - fos = factorOfSafety - - #press_diam_text = file.readlines(4) - #for line in press_diam_text: - # press_diam_stuff = line.split() - #press_tank_diam = float(press_diam_stuff[1]) - press_tank_diam = pressurantDiameter - - #press_ipress_text = file.readlines(5) - #for line in press_ipress_text: - # press_ipress_stuff = line.split() - #initial_press = float(press_ipress_stuff[1]) - initial_press = initialPressure - - #press_fpress_text = file.readlines(6) - #for line in press_fpress_text: - # press_fpress_stuff = line.split() - #final_press = float(press_fpress_stuff[1]) - final_press = finalPressure - - #file.close() # closes the input file once everything's read in - - k = 0.725158 # Roundness factor for 2:1 elliptical heads, as given by [insert link here] - E = 0.85 # joint efficiency of any welded joints, might change or not be used - m_lox = self.loxMass # Mass of LOx required, lbm - m_rp1 = self.rp1Mass # Mass of RP-1 required, lbm - of_ratio = 2.33 # oxidizer:fuel ratio, as given currently in MSVS V1 - #lox_press = 600 # Max. Expected Operating Pressure of LOx, psi - #rp1_press = 600 # MEOP of RP-1, psi - tubediam = 0.83 # OD for transfer tube, in (for subtracting volume) - - vol_lox = m_lox / rho_lox # computes the volume of the propellants to be used, in^3 - vol_rp1 = m_rp1 / rho_rp1 - - # Barlow's equation for tank wall thickness - t_lox = (lox_press * diam) / (2 * ys_alum / fos) - t_rp1 = (lox_press * diam) / (2 * ys_alum / fos) - - # Tank head thickness equations (taken from [insert link here]) - th_lox = (lox_press * diam * k) / ((2 * E * ys_alum / fos) - (0.2 * lox_press)) - th_rp1 = (rp1_press * diam * k) / ((2 * E * ys_alum / fos) - (0.2 * lox_press)) - - # Inner volume of tank heads (neutrium eqns) - vh_lox = (diam - (2 * th_lox))**3 * 0.5 * (pi / 24) * 2 - - vh_rp1 = (diam - (2 * th_rp1))**3 * 0.5 * (pi / 24) * 2 - - # Tank straight-wall height requirements - sh_lox = (vol_lox - (2 * vh_lox)) / (pi * ((diam - 2 * t_lox)/2)**2) - sh_rp1 = vol_rp1 / (pi * (((diam - (2 * t_rp1))/2)**2 - (tubediam / 2)**2)) # factors out internal plumbing - - # Volume of LOx tank - vol_loxtank = (2 * vh_lox) + (pi * ((diam - (2 * t_lox))/2)**2 * sh_lox) - vol_rp1tank = (pi * ((diam - (2 * t_rp1))/2)**2 * sh_rp1) - - # Tank head heights (for CAD purposes, mostly) - hi_lox = (diam - 2 * th_lox) / 4 # inner height - ho_lox = hi_lox + th_lox # outer height - hi_rp1 = (diam - 2 * th_rp1) / 4 - ho_rp1 = hi_rp1 + th_rp1 - - # Tank heights, separate and together - lox_height = 2 * ho_lox + sh_lox - rp1_height = ho_rp1 + sh_rp1 - total_height = ho_rp1 + ho_lox + sh_rp1 + sh_lox - ''' This isn't just LOx height + RP-1 height because the tanks share a common bulkhead. - When installed, the bottom of the LOx tank actually sits inside the shoulder of the - RP-1 tank, so the overall length of the tanks sittingg in the rocket will be the - height of the upper LOx bulkhead + the straight-wall LOx height + the RP-1 - straight-wall height (little/no bulkhead space in between) + the height of the - lower RP-1 bulkhead - Later versions of this code should acknowledge that there is, in fact, a bit of - space between the two tanks, especially if they are double-walled. This can be - updated as the design is finalized - ''' - - - # Numbers for CAD ease and tank designing specifications - id_lox = diam - 2 * t_lox # inside diameter of the tanks, in - id_rp1 = diam - 2 * t_rp1 - KRi_lox = 0.17 * id_lox # knuckle radii and crown radii of ellipses, inside and out, in - CRi_lox = 0.9 * id_lox - KRo_lox = 0.17 * diam - CRo_lox = 0.9 * diam - KRi_rp1 = 0.17 * id_rp1 - CRi_rp1 = 0.9 * id_rp1 - KRo_rp1 = 0.17 * diam - CRo_rp1 = 0.9 * diam - - # Tank metal volume and mass estimates - loxheadmetal = ((diam**3) * 0.5 * (pi / 24) * 2) - vh_lox - rp1headmetal = ((diam**3) * 0.5 * (pi/24) * 2) - vh_rp1 - metalwalllox = (pi * (diam / 2)**2 * sh_lox) - (pi * (((diam - 2 * t_lox)/2)**2) * sh_lox) - metalwallrp1 = (pi * (diam / 2)**2 * sh_rp1) - (pi * (((diam - 2 * t_rp1)/2)**2) * sh_rp1) - metalvolume = 2*loxheadmetal + metalwalllox + metalwallrp1 + 2 * rp1headmetal - - self.tank_mass = rho_alum * metalvolume - head_mass = (2 * loxheadmetal + 2 * rp1headmetal) * rho_alum - wall_mass = (metalwalllox + metalwallrp1) * rho_alum - - file2 = open('output.txt', 'w') # creates generic output file, can be renamed later - # Print results to output file rather than command line - file2.write('The propellant tank diameter is ' + str(diam) + ' in\n') - file2.write('The LOx tank pressure is ' + str(lox_press) + ' psi\n') - file2.write('The RP-1 tank pressure is ' + str(rp1_press) + ' psi\n') - file2.write('The total mass is ' + str(round(self.tank_mass, 3)) + ' lbs\n') - file2.write('The total tank height is ' + str(round(total_height, 3)) + ' in\n') - file2.write('The LOx tank is ' + str(round(lox_height, 3)) + ' in high\n') - file2.write('The RP-1 tank is ' + str(round(rp1_height, 3)) + ' in high\n') - '''Another quick note: I floated everything to 3 digits here just for simplicity's sake. - It won't hurt my feelings if you need to float the decimals further or just take - rounding off altogether, if precision becomes more important than 3 decimals down - the road''' - - - ''' Moving on to the Pressurant Tank Sizing Section - This part of the code will take in other values, probably from the same .txt - file, and compute the needed mass of helium, as well as the volume of helium, - and size a tank appropriately - ''' - - # Prepare other variables from propellant tank sizing - #press_tank_diam = 6 # has to be user-defined, need a diameter to help find volume - prop_vol = vol_lox + vol_rp1 # gives the total volume of propellants being ejected - prop_press = lox_press # since they should both be the same anyways - gamma = 5 / 3; # the ratio of specific heats for the gas equations - #initial_press = 4500 # pressure inside helium tank on the pad - #final_press = 50 # pressure inside tank after burnout - press_temp = 536.67 # gives temperature of pressurant in *R - R = 10.73159*12**3 # gas constant in imperial, in^3-psi / *R-lbmol - molar_mass = 4.003 # also for gas equations, lbm/lbmol - - # Calculate the pressurant mass from equations given by AIAA report - press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass - - # Calculate volume of pressurant from ideal gas eqns - press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press - - # Use the volume and diameter to find tank straight-wall height, then add height of spherical end caps - tank_height = ((press_vol - (4/3) * pi * (press_tank_diam / 2)**3) / (pi * (press_tank_diam / 2)**2)) + press_tank_diam - - # ...and print the results! - file2.write('The helium tank diameter is ' + str(press_tank_diam) + ' in\n') - file2.write('The volume of helium needed is ' + str(round(press_vol, 3)) + ' in^3\n') - file2.write('The mass of helium needed is ' + str(round(press_mass, 3)) + ' lbm\n') - file2.write('The pressurant tank is ' + str(round(tank_height, 3)) + ' in high\n') - - file2.close() - -example = tankSize(357.10,796.34,10,750,4,8,4500,50) diff --git a/Design/Vehicle-Sizing/MS_tank_sizing_6719.m b/Design/Vehicle-Sizing/MS_tank_sizing_6719.m new file mode 100644 index 0000000..922c794 --- /dev/null +++ b/Design/Vehicle-Sizing/MS_tank_sizing_6719.m @@ -0,0 +1,145 @@ +clear all; close all; clc; + + +% This program is adapted from Huzel and Huang's "Modern Engineering for +% Design of Liquid-Propellant Rocket Engines" and uses the calculations for +% tank dimensions found in Chapter 8 + +%% Lists all required constants and values required for math-ing +P = input('Propellant Tank Pressure (psi): '); %input tank pressure in psig + +D = 12; %tank outer diameter in inches +R = D./2; %tank radius, in +S = 40000; %yield strength of 6061-T6 alloy in psi +Sc = 56000; %compressive yield strength of 6061-T6 in psi +FoS = 1.5; %factor of safety +v = 0.33; %Poisson's ratio of 6061-T6 alloy, unitless +ew = 0.85; %approximate efficiency of welded joints +E = 1e7; %6061-T6 modulus of elasticity, psi +rho_alum = 0.0975; %density of aluminum, lbm./in.^3 +rho_lox = 0.04122124; %density of LOx, lbm./in.^3 +rho_rp1 = 0.0292631; %density of RP-1, lbm./in.^3 +k = 2; %ratio of a./b, which should be 2:1 due to the semi-elliptical tank head design +K = 1.2; %obtained from graph on page 292 of H&H book +Fc = 3305; %estimated critical loading on rocket during flight, lbf +g = 32.2; %gravitational acceleration, ft./s.^3 + +mix_ratio = 2.23; %fuel mix ratio, for prop mass calcs and volume +m_prop = 1180.799; %propellant mass in lbm--given from prop team +m_rp1 = m_prop ./ (1+mix_ratio); %computes needed amount of RP-1 based on mixture ratio +m_lox = m_prop - m_rp1; %remaining propellant must be LOx +vol_lox = m_lox ./ rho_lox;%use density of propellants to compute volumes +vol_lox = vol_lox .* 1.02; %adds an extra 2% of volume for ullage space +vol_rp1 = m_rp1 ./ rho_rp1; +vol_rp1 = vol_rp1 .* 1.02; %also adds an extra 2% of volume for ullage + +%not required unless volume is given instead of mass +% vol_lox = 16748.707; %volume of oxidizer in in.^3 +% vol_rp1 = 10579.792; %volume of fuel in in.^3 +% d_pressline = 0.5; %outer diameter of pressurant lines through tanks, in +% d_annulus = 2; %outer diameter of annular lining, in +% d_rp1fill = 1; %outer diameter of fill line to rp-1, in +d_pressline = 0; +d_annulus = 0; +d_rp1fill = 0; +%as of new design, all plumbing is external :) +t_barlows = (P.*D)./(2.*S./FoS); + +%% Calculates needed tank thickness based on loading characteristics +% Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate +% required cylindrical wall thickness based on loading criteria + +tc_vec = 0:0.001:0.25; %vector of wall thicknesses for testing +LHS = 4.*(Fc.*FoS).*(1-v.^2) ./ (E.*pi); %the left-hand side of the eqn. on p.293 +RHS = (36.*tc_vec.^3 - tc_vec.^5) ./ (6-tc_vec).^3; + +indexer = find(RHS <= LHS); %finds intersection of two curves +tc = tc_vec(max(indexer)); %saves tc--cylindrical wall thickness + +%% test to see whether barlows is a bit more accurate than the other +if t_barlows >= tc + tc = t_barlows; +end +%tc = t_barlows; +%% Uses required cylindrical wall thickness to estimate bulkhead thickness + +a = R - tc; %a is the internal radius, or major axis length of ellipse +b = a./2; %minor axis length, or head height--property of 2:1 shape +Eprime = 2.*k + (1./sqrt(k.^2-1)).*log((k+sqrt(k.^2-1))./(k-sqrt(k.^2-1))); +%eprime is the "design factor" described on p. 292, for weight calcs later +%on + +tk = (K.*P.*a) ./ (S.*ew ./ FoS); %knuckle thickness, in +tcr = (P.*R) ./ (2.*S.*ew ./ FoS); %crown thickness, in +tequiv = (tk + tcr) ./ 2; %average bulkhead thickness for weight calcs + +%% Redimensions tanks according to volume and wetted area eqns. given in H&H + +v_endcap = (2.*pi.*a.^2.*b)./3; %endcap volume capacity, in.^3 +leftovervol_lox = vol_lox - 2.*v_endcap; %volume left for cylindrical section +leftovervol_rp1 = vol_rp1 - 2*v_endcap; %vol left for rp-1 cylindrical section +%this has been adjusted due to the fact that the RP-1 tank is now its own +%entity, and not a common bulkhead. The addition of a convex bulkhead adds +%volume to the tank itself and removes the need to exclude the bulkhead +%volume +vcyl_lox = leftovervol_lox; %lox cylinder volume needed to hold remaining propellant +vcyl_rp1 = leftovervol_rp1; %rp-1 cylinder volume needed to hold remaining propellant + +cylheight_lox = vcyl_lox ./ (pi.*a.^2 - pi.*d_rp1fill.^2 - 2.*pi.*(d_pressline ./ 2).^2); %computes height of cylinders for each propellant +cylheight_rp1 = vcyl_rp1 ./ (pi.*a.^2 - pi.*(d_pressline ./ 2).^2 - pi.*(d_annulus ./ 2).^2); + +intertank_airframe_height = 12; %height of intertank airframe in inches +overall_height = cylheight_lox + cylheight_rp1 + 4.*(b+tcr) + intertank_airframe_height; %head height, with cylindrical sections and two end caps + +%% Computes weights of tank segments also based on given equations +%pi.*(outer_diameter.^2 - inner_diameter.^2) .* height .* rho_alum ./ 4 +% weight of bulkheads in lbm for calculating--from SolidWorks +loxupper_weight = 5.83; +loxlower_weight = 5.17; +rp1upper_weight = 5.29; +rp1lower_weight = 5.65; +w_endcaps = loxupper_weight + loxlower_weight + rp1upper_weight + rp1lower_weight; + +%weight of respective cylindrical sections +w_cyl_rp1 = pi.*(R.^2 - a.^2) .* cylheight_rp1 .* rho_alum; +w_cyl_lox = pi.*(R.^2 - a.^2) .* cylheight_lox .* rho_alum; + +% all plumbing weights are no longer included +dry_weight = w_endcaps + w_cyl_rp1 + w_cyl_lox; +wet_weight = dry_weight + m_prop; + + + +%% Pressurant Tank Sizing Code +prop_vol = vol_lox + vol_rp1; +prop_press = P; +gamma = 5/3; %ratio of specific heats for Helium +press_temp = 536.67; %pressurant temp in Rankine +R = 10.73159*12^3; %gas constant in imperial units, in3-psi / R-lb-mol +molar_mass = 4.003; +initial_press = 3600; %initial pressure in bottle, psi +final_press = P; %final pressure at burnout, psi +press_tank_diam = 11; %outer diameter of pressurant tank, in, based on Ray's SW model + + +press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass; +press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press; +% Pressurant Tank sizing calcs also excluded since they suck + +%% Print the results for ease of design and troubleshooting if needed +fprintf('Propellant Volume: %f in.^3\n', vol_lox+vol_rp1) +fprintf('Tank Pressure: %f psi\n', P) +fprintf('Cylindrical Wall Thickness: %f in\n', tc) +fprintf('Cylindrical Thickness--Barlow''s Eqn.(comparison): %f in\n', (P.*D)./(2.*S./FoS)) +%I threw Barlow's estimate in the printed response to make sure that these +%calculations, which take into account the axial loading of max Q and +%thrust, are larger than just plain internal pressure estimates. This is +%just a handy troubleshooting feature./sanity check to make sure everything +%is at least in the ballpark +fprintf('Equivalent Bulkhead Thickness: %f in\n', tequiv) +fprintf('LOx Cylindrical Wall Height: %f in\n', cylheight_lox) +fprintf('RP-1 Cylindrical Wall Height: %f in\n', cylheight_rp1) +fprintf('Approximate Overall Tank Height: %f in\n', overall_height) +fprintf('Approximate Dry Mass: %f lbm\n', dry_weight) +fprintf('Approximate Wet Mass: %f lbm\n', wet_weight) +fprintf('Pressurant Volume and Mass Required: %f in^3 and %f lbm\n', press_vol, press_mass) \ No newline at end of file diff --git a/Design/Vehicle-Sizing/marginal-stability-sizing.ipynb b/Design/Vehicle-Sizing/marginal-stability-sizing.ipynb index 61af45e..d9d98f5 100755 --- a/Design/Vehicle-Sizing/marginal-stability-sizing.ipynb +++ b/Design/Vehicle-Sizing/marginal-stability-sizing.ipynb @@ -5,26 +5,28 @@ "metadata": {}, "source": [ "# Marginal Stability Vehicle Sizing\n", - "This sheet uses numpy, matplotlib, simulations, unit_conversions, and tanksim.\n", + "This sheet uses numpy, matplotlib, simulations, and tank_sizing_9_20.\n", "\n", "simulations is developed and maintained (no promises) by Cameron. The current version of the code is 0.0.1 and can be downloaded from github [here](https://github.com/cmflannery/simulations). The source-code is not currently on pip." ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from simulations import simulations as sim\n", + "unit = sim.unit()\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "import tank_sizing_2_23 as tankSize" + "import tank_sizing_9_20 as tank\n", + "from scipy import interpolate as inter" ] }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -46,6 +48,7 @@ " ax2.grid(True, linewidth=1)\n", " ax2.plot(time,velocity)\n", " ax2.set_ylabel('Velocity (ft/s)')\n", + " ax2.set_ylim(bottom=-6000)\n", "\n", " # plot acceleration\n", " gees = [x/g0Imp for x in acceleration]\n", @@ -56,6 +59,7 @@ " ax3.plot(time,gees)\n", " ax3.set_ylabel('Acceleration (gees)')\n", " ax3.set_xlabel('Time (s)')\n", + " ax3.set_ylim(bottom=-2)\n", " \n", "def plot_thrust(fig):\n", " # plot thrust\n", @@ -80,90 +84,87 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "250\n", "### STRUCTURAL PARAMETERS ###\n", - "Propellant Mass = 1153.85 lbm\n", - "Propulsion Mass = 55.00 lbm\n", - "Tank Mass = 202.60 lbm\n", - "Structural Mass (inc. Tank) = 530.60 lbm\n", - "Systems Mass = 67.80 lbm\n", - "Misc Mass = 25.00 lbm\n", - "Avionics Mass = 21.40 lbm\n", - "Mass Propellant Ratio (Mprop/M0) 0.62\n", - "Total Wet Mass: 1853.65 lbm\n", - "Total Dry Mass: 699.80 lbm\n", + "Propellant Mass = 710.17 lbm\n", + "Helium Mass = 11.03 lbm\n", + "Propulsion Mass = 47.79 lbm\n", + "Tank Mass = 134.51 lbm\n", + "Pressurant Tank Mass = 204.62 lbm\n", + "Structural Mass (inc. Tanks) = 530.19 lbm\n", + "Systems Mass = 162.00 lbm\n", + "Misc Mass = 0.00 lbm\n", + "Avionics Mass = 13.07 lbm\n", + "Mass Propellant Ratio (Mprop/M0) 0.49\n", + "Total Wet Mass: 1474.25 lbm\n", + "Total Dry Mass: 753.05 lbm\n", "\n", "### ENGINE PARAMETERS ###\n", "Thrust = 5000 lbf\n", - "Isp = 260 s\n", - "mdot = 19.23 lbm/s\n", - "Total Impulse = 300000 lbf-s\n", + "Isp = 281.62 s\n", + "mdot = 17.75 lbm/s\n", + "Total Impulse = 200000 lbf-s\n", "\n", "### OTHER IMPORTANT THINGS ###\n", - "Burn Time = 60.00 s\n" + "Burn Time = 40.00 s\n" ] } ], "source": [ - "unit = sim.unit()\n", - "\n", - "burntime = 60 # s\n", + "thrust_sl = 5000 # s\n", "\n", "nengines = 1\n", - "thrust_sl = 5000 # lbf\n", - "Isp = 260 #s\n", - "mdot = nengines*thrust_sl/(Isp) #lbm/s\n", - "twratio = 50 # estimated thrust 2 weight ratio\n", - "mixtureratio = 2.23\n", + "burntime = 40 # s\n", + "chamberpressure = 500 #psi\n", + "Isp = 281.622 #s\n", + "#Isp as a function of chamber pressure might be a useful addition\n", + "mdot = nengines*thrust_sl/(Isp) #lbm/s (calc results in lbf/s, but conversion factor is 1)\n", + "mixtureratio = 2.275\n", "g0Metric = 9.81 #m/s^2\n", "g0Imp = 32.17 #ft/s^2\n", "\n", - "mstructure = 328 # lbm\n", - "mavionics = 21.4 # lbm\n", - "msystems = 67.8 # lbm\n", - "mmisc = 25 #lbm\n", - "#mengine = thrust_sl*nengines/twratio #lbm\n", - "mpropulsion = 55 # lbm\n", + "mstructure = 191.06 # lbm\n", + "mavionics = 13.07 # lbm\n", + "msystems = 162 # lbm\n", + "mmisc = 0 #lbm\n", + "mpropulsion = 47.79 # lbm\n", "mpropellant = mdot*burntime\n", "\n", "\n", - "diameter = 12 #in\n", + "diameter = 16 #in\n", + "diam_tank = 12 #in\n", "\n", "mRP1 = mpropellant / (mixtureratio + 1)\n", "mLOx = mpropellant - mRP1\n", "\n", - "tankpressure = 600 #psi\n", - "fos = 4\n", - "pressurantdiameter = diameter - 2 #in\n", - "HEinitialpressure = 4500 #psi\n", - "HEfinalpressure = 50 #psi\n", + "rp1tankpressure = 730 #psi\n", + "loxtankpressure = 730 #psi\n", + "HEinitialpressure = 6000 #psi\n", "\n", - "mtank = tankSize.getTankMass(tankpressure,diameter,mpropellant)\n", + "mtank, mHe, lenloxin, lenrp1in = tank.getTankMassLen(loxtankpressure,rp1tankpressure,diam_tank,mpropellant,HEinitialpressure)\n", + "mtank = 134.51 #correction to tank code\n", + "mpress = 204.62 # lbm, mass of pressurant tank\n", "\n", - "if diameter == 8:\n", - " refArea = .345 #ft^2\n", - "elif diameter == 15:\n", - " refArea = 1.227 #ft^2\n", - "elif diameter == 12:\n", - " refArea = .786 #ft^2\n", - "else:\n", - " refArea = .538 #ft^2\n", - "#reference area of .538 for 10\" rocket, .345 for 8\" rocket, 1.227 for 15\" rocket, .785 for 12\" rocket\n", + "mpropellant += mHe\n", "\n", - "m0 = mpropulsion + mpropellant + mstructure + mavionics + msystems + mmisc + mtank\n", + "refArea = np.pi*((diameter/2)**2) / 144 #ft^2\n", + "coef_drag = 0.37\n", + "\n", + "m0 = mpropulsion + mpropellant + mstructure + mavionics + msystems + mmisc + mtank + mpress\n", "\n", "print('### STRUCTURAL PARAMETERS ###')\n", - "print('Propellant Mass = %.2f lbm' % mpropellant)\n", + "print('Propellant Mass = %.2f lbm' % (mpropellant - mHe))\n", + "print('Helium Mass = %.2f lbm' % mHe)\n", "print('Propulsion Mass = %.2f lbm' % mpropulsion)\n", "print('Tank Mass = %.2f lbm' % mtank)\n", - "print('Structural Mass (inc. Tank) = %.2f lbm' % (mstructure + mtank))\n", + "print('Pressurant Tank Mass = %.2f lbm' % mpress)\n", + "print('Structural Mass (inc. Tanks) = %.2f lbm' % (mstructure + mtank + mpress))\n", "print('Systems Mass = %.2f lbm' % msystems)\n", "print('Misc Mass = %.2f lbm' % mmisc)\n", "print('Avionics Mass = %.2f lbm' % mavionics)\n", @@ -172,7 +173,7 @@ "print('Total Dry Mass: %.2f lbm' % (m0-mpropellant))\n", "print('\\n### ENGINE PARAMETERS ###')\n", "print('Thrust = %d lbf' % (thrust_sl*nengines))\n", - "print('Isp = %d s' % Isp)\n", + "print('Isp = %.2f s' % Isp)\n", "print('mdot = %.2f lbm/s' % mdot)\n", "print('Total Impulse = %i lbf-s' % (thrust_sl*burntime*nengines))\n", "\n", @@ -186,12 +187,13 @@ " 'flight_heading': np.deg2rad(90),\n", " 'latitude': 0,\n", " 'longitude': 0,\n", - " 'altitude': 0,\n", + " 'altitude': 4460, # ft\n", " 'mass': unit.lbmToSlug(m0),\n", " 'heat': 0,\n", " 'lift_coefficient': 0,\n", " 'bank_angle': 0,\n", - " 'reference_area': refArea\n", + " 'reference_area': refArea,\n", + " 'coef_drag': coef_drag\n", "}\n", "\n", "engines = {\n", @@ -200,43 +202,450 @@ " 'Isp': Isp,\n", " 'Ae': 2.690978,\n", " 'nengines': nengines\n", - "}\n" + "}\n", + "\n", + "timestep = .1" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 13, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4656.955047\n", + "4656.9543430673075\n", + "4656.972113533943\n", + "4657.007682543401\n", + "4657.061077075186\n", + "4657.132322855838\n", + "4657.221444350145\n", + "4657.3284647520595\n", + "4657.453405975317\n", + "4657.596288643742\n", + "4657.757132081245\n", + "4657.935954301522\n", + "4658.132771997417\n", + "4658.347600529995\n", + "4658.580453917281\n", + "4658.831344846836\n", + "4659.100284746507\n", + "4659.387283743655\n", + "4659.692350654777\n", + "4660.015493006375\n", + "4660.356717014797\n", + "4660.716027329676\n", + "4661.0934269268955\n", + "4661.488917521405\n", + "4661.902499874502\n", + "4662.334173481106\n", + "4662.783936507201\n", + "4663.251785345711\n", + "4663.737714359375\n", + "4664.24171714753\n", + "4664.76378648863\n", + "4665.303913763678\n", + "4665.8620882119785\n", + "4666.438297067284\n", + "4667.032527253694\n", + "4667.644764874934\n", + "4668.2749938781735\n", + "4668.923195432838\n", + "4669.589351074252\n", + "4670.273441527426\n", + "4670.975444222542\n", + "4671.695335225068\n", + "4672.433090748583\n", + "4673.188684765507\n", + "4673.962090619859\n", + "4674.753277654556\n", + "4675.562216673732\n", + "4676.388876852567\n", + "4677.233223046696\n", + "4678.0952220042645\n", + "4678.97483856816\n", + "4679.87203319206\n", + "4680.7867692635\n", + "4681.719005827072\n", + "4682.668700542394\n", + "4683.635812400877\n", + "4684.620294733454\n", + "4685.622103472424\n", + "4686.6411910053075\n", + "4687.6775079124145\n", + "4688.731006170546\n", + "4689.8016321533105\n", + "4690.889334284125\n", + "4691.994059694615\n", + "4693.1157502896995\n", + "4694.254352091054\n", + "4695.409804013683\n", + "4696.582049359284\n", + "4697.771024417369\n", + "4698.976669598664\n", + "4700.198918745126\n", + "4701.43770938471\n", + "4702.692972716733\n", + "4703.964643707751\n", + "4705.25265068796\n", + "4706.556926328126\n", + "4707.877396099265\n", + "4709.213989802432\n", + "4710.566630853347\n", + "4711.935246206322\n", + "4713.319756725432\n", + "4714.720086926753\n", + "4716.136155125752\n", + "4717.567882578329\n", + "4719.015186840742\n", + "4720.477984145045\n", + "4721.95619209538\n", + "4723.449722988761\n", + "4724.958491838422\n", + "4726.482410498654\n", + "4728.021388457932\n", + "4729.575337371512\n", + "4731.144164137318\n", + "4732.72777795323\n", + "4734.326083557591\n", + "4735.938985835851\n", + "4737.566390415811\n", + "4739.208198620698\n", + "4740.864311866838\n", + "4742.534632370486\n", + "4744.219058493028\n", + "4745.917487890745\n", + "4747.629819853772\n", + "4749.355948657731\n", + "4751.0957707772495\n", + "4752.849180760417\n", + "4754.616070600796\n", + "4756.396332148892\n", + "4758.189858070786\n", + "4759.996537981437\n", + "4761.816260117077\n", + "4763.648912887535\n", + "4765.494384662519\n", + "4767.352560684935\n", + "4769.223326251564\n", + "4771.106566834751\n", + "4773.00216551527\n", + "4774.910004358842\n", + "4776.829964944862\n", + "4778.761929006689\n", + "4780.705776764282\n", + "4782.661387018837\n", + "4784.62863689312\n", + "4786.60740607784\n", + "4788.597570733299\n", + "4790.599006417976\n", + "4792.611588106917\n", + "4794.635190319383\n", + "4796.669687105316\n", + "4798.714951803894\n", + "4800.77085636545\n", + "4802.8372721007845\n", + "4804.914068895604\n", + "4807.001118901413\n", + "4809.098290911645\n", + "4811.205453803188\n", + "4813.322475638462\n", + "4815.449223873136\n", + "4817.585565570777\n", + "4819.73136721701\n", + "4821.886494702406\n", + "4824.050813940514\n", + "4826.224189087156\n", + "4828.406484234925\n", + "4830.597563172565\n", + "4832.797288973507\n", + "4835.005524529186\n", + "4837.222132046447\n", + "4839.446973366831\n", + "4841.679909978935\n", + "4843.920802417551\n", + "4846.169511031867\n", + "4848.425896010254\n", + "4850.689816886909\n", + "4852.961133053475\n", + "4855.239703459538\n", + "4857.525386707356\n", + "4859.818040994315\n", + "4862.117524473854\n", + "4864.423694551495\n", + "4866.736408498432\n", + "4869.055523416064\n", + "4871.3808960210745\n", + "4873.712382885168\n", + "4876.049840247338\n", + "4878.393123280102\n", + "4880.742089803315\n", + "4883.096594567934\n", + "4885.456493031393\n", + "4887.821640466456\n", + "4890.1918921148335\n", + "4892.567102967469\n", + "4894.947128004803\n", + "4897.331822124031\n", + "4899.721039921555\n", + "4902.114635912542\n", + "4904.512464697819\n", + "4906.914380867838\n", + "4909.320238893453\n", + "4911.72989310887\n", + "4914.143197961436\n", + "4916.5600071074705\n", + "4918.980176533896\n", + "4921.403559939614\n", + "4923.830011698902\n", + "4926.2593864483315\n", + "4928.6915386232495\n", + "4931.126323000816\n", + "4933.563594318752\n", + "4936.003207015998\n", + "4938.445016729983\n", + "4940.888878224439\n", + "4943.3346467065385\n", + "4945.782177514588\n", + "4948.231326239754\n", + "4950.681948483975\n", + "4953.133900326588\n", + "4955.587037688942\n", + "4958.041216778458\n", + "4960.4962941854965\n", + "4962.952126616404\n", + "4965.4085711033385\n", + "4967.865484911774\n", + "4970.322725482512\n", + "4972.7801504621\n", + "4975.237618382501\n", + "4977.694987306189\n", + "4980.152116002929\n", + "4982.608863355485\n", + "4985.065088811183\n", + "4987.5206520600395\n", + "4989.975413162722\n", + "4992.429231512756\n", + "4994.881969888498\n", + "4997.333488530805\n", + "4999.783648938101\n", + "5002.232313213861\n", + "5004.679343662526\n", + "5007.1246031765\n", + "5009.567954653323\n", + "5012.009262486226\n", + "5014.448390634834\n", + "5016.885203710279\n", + "5019.319566869505\n", + "5021.751345729953\n", + "5024.180406473861\n", + "5026.606615691851\n", + "5029.029840670423\n", + "5031.449949086308\n", + "5033.866808931119\n", + "5036.28028913263\n", + "5038.690259029211\n", + "5041.096588525992\n", + "5043.499148081735\n", + "5045.8978087346495\n", + "5048.29244134911\n", + "5050.682919836727\n", + "5053.069116228869\n", + "5055.450904096985\n", + "5057.828157495042\n", + "5060.200751197473\n", + "5062.568560634678\n", + "5064.9314619710185\n", + "5067.2893318065235\n", + "5069.642047514617\n", + "5071.989487173419\n", + "5074.331529584379\n", + "5076.668054193372\n", + "5078.9989411981915\n", + "5081.324071442128\n", + "5083.643326531975\n", + "5085.956587840467\n", + "5088.263740461256\n", + "5090.564667240458\n", + "5092.8592527321625\n", + "5095.147382281151\n", + "5097.428942000905\n", + "5099.703818733347\n", + "5101.971900102203\n", + "5104.233074049701\n", + "5106.487230775614\n", + "5108.734260026413\n", + "5110.974052737332\n", + "5113.206500659999\n", + "5115.431496260011\n", + "5117.648932935656\n", + "5119.858704908045\n", + "5122.060707142509\n", + "5124.254834768268\n", + "5126.440986125498\n", + "5128.619058367036\n", + "5130.7889500877545\n", + "5132.950560644679\n", + "5135.103790546898\n", + "5137.248540620908\n", + "5139.384713079592\n", + "5141.512210289194\n", + "5143.630938505\n", + "5145.740801312606\n", + "5147.841704669194\n", + "5149.93355522662\n", + "5152.0162606166405\n", + "5154.089729901005\n", + "5156.153873079877\n", + "5158.208600797815\n", + "5160.253824167214\n", + "5162.289456479779\n", + "5164.315410705568\n", + "5166.331601385065\n", + "5168.337945725406\n", + "5170.3343643272165\n", + "5172.320780320733\n", + "5174.297117674716\n", + "5176.263301897603\n", + "5178.219258496109\n", + "5180.164913170495\n", + "5182.1001935325\n", + "5184.025028197019\n", + "5185.939345802246\n", + "5187.843075437999\n", + "5189.736147142944\n", + "5191.618493780821\n", + "5193.490047423495\n", + "5195.350740815218\n", + "5197.200506868418\n", + "5199.039282915595\n", + "5200.867003436798\n", + "5202.683604297149\n", + "5204.489025064233\n", + "5206.283203811936\n", + "5208.066079822126\n", + "5209.837592687485\n", + "5211.597685789247\n", + "5213.346301080345\n", + "5215.08338126383\n", + "5216.808871079066\n", + "5218.522716889314\n", + "5220.224863675019\n", + "5221.915261096767\n", + "5223.593856843484\n", + "5225.260599294837\n", + "5226.915441179983\n", + "5228.558334069581\n", + "5230.189229122998\n", + "5231.808082077686\n", + "5233.414848445637\n", + "5235.009482125017\n", + "5236.591943481118\n", + "5238.16218863373\n", + "5239.720179110896\n", + "5241.265875394924\n", + "5242.799238219659\n", + "5244.320232923923\n", + "5245.828822536069\n", + "5247.324972650913\n", + "5248.808651907512\n", + "5250.279826249811\n", + "5251.738466660807\n", + "5253.184543513592\n", + "5254.618027793273\n", + "5256.0388937179705\n", + "5257.44711598013\n", + "5258.842670189739\n", + "5260.225532538455\n", + "5261.595683518345\n", + "5262.95310043883\n", + "5264.29776718788\n", + "5265.629663604481\n", + "5266.948775978352\n", + "5268.255087843607\n", + "5269.548586807043\n", + "5270.829260741628\n", + "5272.097098772856\n", + "5273.352091609701\n", + "5274.594233447149\n", + "5275.823515143809\n", + "5277.039935033605\n", + "5278.243486655973\n", + "5279.434171310823\n", + "5280.611985510781\n", + "5281.776933314408\n", + "5282.929014574523\n", + "5284.068236037032\n", + "5285.194600825005\n", + "5286.308118194861\n", + "5287.408795184831\n", + "5288.49664293844\n", + "5289.57167294342\n", + "5290.633897905047\n", + "5291.6833336452155\n", + "5292.7199962506675\n", + "5293.743902761032\n", + "5294.7550747679425\n", + "5295.753530570492\n", + "5296.739295398611\n", + "5297.712391883017\n", + "5298.672846286261\n", + "5299.620687069518\n", + "5300.5559411389995\n", + "5301.478641408389\n", + "5302.388818871911\n", + "5303.286506923248\n", + "5304.171742998974\n", + "5305.044561971733\n", + "5305.905003360184\n", + "5306.753108631542\n", + "5307.588917522662\n", + "5308.412474899988\n", + "5309.223826460103\n", + "5310.023017153102\n", + "5310.810096396804\n", + "5311.585114416306\n", + "5312.348123804914\n", + "5313.099176029714\n", + "5313.838326887453\n", + "5314.565634004208\n", + "5315.28115392388\n", + "5315.984946272758\n", + "5316.677073529042\n", + "5317.357598044781\n" + ] + } + ], "source": [ - "itsatest = sim.Rocket(initialConditions, engines, burntime)\n", - "altitude, velocity, acceleration, mass, time, thrust, drag, Q, rho, temperature = itsatest.run()" + "itsatest = sim.Rocket(initialConditions, engines,burntime,timestep)\n", + "altitude, velocity, acceleration, mass, time, thrust, drag, Q, rho, temperature, mach = itsatest.run()" ] }, { "cell_type": "code", - "execution_count": 66, - "metadata": { - "scrolled": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Apogee = 701507 ft\n", - "Apogee = 213 km\n", - "Max Velocity = 5899.80 ft/s\n", - "Max Acceleration = 6.27 gees\n", - "Max Q = 12.94 psi\n", - "Max Drag = 805.75 lbf\n" + "Apogee = 288742 ft\n", + "Apogee = 88 km\n", + "Max Velocity = 3810.85 ft/s\n", + "Max Acceleration = 4.93 gees\n", + "Max Q = 13.50 psi\n", + "Max Drag = 1004.15 lbf\n" ] }, { "data": { - "image/png": "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kXFTmBQREREREZFxU5gUERERERGRcVOYFBERERERkXFTmBQREREREZFxU5gUERERERGRcVOYFBERERERkXFTmBQREREREZFxU5gUERERERGRcVOYFBERERERkXFTmBQREREREZFxU5gUERERERGRcVOYFBERERERkXFTmBQREREREZFxU5gUERERERGRcctIdQHpprS01GtqalJdxgkOHz5MYWFhqsuQGU7zUNKB5qGkC81FSQeah5IM69atO+juZae7TmFylJqaGtauXZvqMk6wevVq6uvrU12GzHCah5IONA8lXWguSjrQPJRkMLNdZ3KdtrmKiIiIiIjIuClMioiIiIiIyLgpTIqIiIiIiMi4KUyKiIiIiIjIuKkBj8g4DQw6/72piZxImCWV+VTkZ2FmqS5LRERERGRSKUyKjIO787kHXuauNXsSYwU5mSyuzGNxRR6LK/NYUpnHoso88rMzU1ipiIiIiEhyKUyKnCF350sPb+GuNXv4H29ZyFsWlbGtuZ0tTe1sbTrK/esb6ejpT1w/uyA7HjIr81lcGWNxRT4Ly3PJygin8FOIiIiIiEwMhUmRM/TVR7fxH7/ayR9cMY+/WrkYM+OKhSWJ992dxsPH2NrUztbm9vhjUzu/aThI34ADEA4Z80tzWVQRo648j0UVeSyqiFFTmktmWLcwi4iIiMjUoTApcga+/th2vvlEAx+4tJq/veGcMe+RNDOqiqJUFUW5dmlFYrxvYJBXD3YmwuXW5nZe2XeUhzc24fGMSWY4HjLrKvJYVB4PmHUVMeaVKGSKiIiISHpSmBQ5jW8/2cDXHtvGey+u4ourziMUGl+zncxwKFiBzOOG5cfHu/sGaGjpYHtLO9uaO9je3M7Le4/w0Mv7R4TMBaXxYDm0illXkce84igZCpkiIiIikkJpGybN7DWgHRgA+t19hZkVAz8BaoDXgPe5e5vFl4m+Drwd6AL+0N1fCH7OzcDngh/7D+5+52R+Dpm63J2vPbadbzy+nXdfOIcv/e754w6Sp5KdGebcOQWcO6dgxPix3njI3NbczraWdhqaO9iw9zA/f2l/4ppIRogFpbkjAuaiijzmFkcJT2CNIiIiIiInk7ZhMnC1ux8c9vrTwOPu/iUz+3Tw+q+A64G64Osy4DvAZUH4/DywAnBgnZk96O5tk/khZOpxd/7hF5v53m9e5f0r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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -272,25 +681,28 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Max Q = 12.94 psi\n", - "Time of max Q = 33 s\n", - "Altitude at max Q = 32499.26 ft\n", - "Velocity at max Q = 2140.65 ft/s\n", - "Air density at max Q = 0.0008753 slug/ft^3\n", + "Max Q = 14.93 psi\n", + "Time of max Q = 26 s\n", + "Altitude at max Q = 34838.16 ft\n", + "Velocity at max Q = 2408.34 ft/s\n", + "Air density at max Q = 0.0007481 slug/ft^3\n", + "Drag at max Q = 1013.02 lbf\n", + "\n", + "Max velocity = 4366.55 ft/s\n", + "Time of max velocity = 40 s\n", + "Altitude at max velocity = 78924.72 ft\n", + "Q at max velocity = 5.96 psi\n", + "Air density at max velocity = 0.0000909 slug/ft^3\n", "\n", - "Max velocity = 5899.80 ft/s\n", - "Time of max velocity = 62 s\n", - "Altitude at max velocity = 138282.84 ft\n", - "Q at max velocity = 0.79 psi\n", - "Air density at max velocity = 0.0000070 slug/ft^3\n", - "Height at burnout = 127081.84 ft\n" + "Height at burnout = 78489.96 ft\n", + "Velocity at burnout = 4347.54 ft/s\n" ] } ], @@ -298,41 +710,45 @@ "def maxAndTime(list):\n", " max = 0\n", " time = 0\n", - " for i in range(len(Q)):\n", + " for i in range(len(list)):\n", " if list[i] > max:\n", " max = list[i]\n", - " time = i\n", - " return (max,time)\n", + " point = i\n", + " time = i*timestep\n", + " return (max,point,time)\n", "\n", - "maxQ, maxQTime = maxAndTime(QPsi)\n", + "maxQ, maxQPoint, maxQTime = maxAndTime(QPsi)\n", "print(\"Max Q = %.2f psi\" % maxQ)\n", "print(\"Time of max Q = %d s\" % maxQTime)\n", - "print(\"Altitude at max Q = %.2f ft\" % altitude[maxQTime])\n", - "print(\"Velocity at max Q = %.2f ft/s\" % velocity[maxQTime])\n", - "print(\"Air density at max Q = %.7f slug/ft^3\" % rho[maxQTime])\n", + "print(\"Altitude at max Q = %.2f ft\" % altitude[maxQPoint])\n", + "print(\"Velocity at max Q = %.2f ft/s\" % velocity[maxQPoint])\n", + "print(\"Air density at max Q = %.7f slug/ft^3\" % rho[maxQPoint])\n", + "print(\"Drag at max Q = %.2f lbf\" % drag[maxQPoint])\n", "\n", "print()\n", "\n", - "maxV, maxVTime = maxAndTime(velocity[0:len(Q)])\n", + "\n", + "maxV, maxVPoint, maxVTime = maxAndTime(velocity[0:int(200/timestep)])\n", "print(\"Max velocity = %.2f ft/s\" % maxV)\n", "print(\"Time of max velocity = %d s\" % maxVTime)\n", - "print(\"Altitude at max velocity = %.2f ft\" % altitude[maxVTime])\n", - "print(\"Q at max velocity = %.2f psi\" % QPsi[maxVTime])\n", - "print(\"Air density at max velocity = %.7f slug/ft^3\" % rho[maxVTime])\n", + "print(\"Altitude at max velocity = %.2f ft\" % altitude[maxVPoint])\n", + "print(\"Q at max velocity = %.2f psi\" % QPsi[maxVPoint])\n", + "print(\"Air density at max velocity = %.7f slug/ft^3\" % rho[maxVPoint])\n", + "\n", + "print()\n", "\n", - "print(\"Height at burnout = %.2f ft\" % altitude[burntime])" + "print(\"Height at burnout = %.2f ft\" % altitude[int(burntime/timestep)])\n", + "print(\"Velocity at burnout = %.2f ft/s\" % velocity[int(burntime/timestep)])" ] }, { "cell_type": "code", - "execution_count": 68, - "metadata": { - "scrolled": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -344,18 +760,146 @@ } ], "source": [ + "shortTime = time[0:int(burntime/timestep)]\n", "fig1 = plt.figure(figsize=(10,6))\n", "ax11 = fig1.add_subplot(1,1,1)\n", - "maltitude = [unit.ftToM(x) for x in altitude]\n", - "mvelocity = [unit.ftToM(v) for v in velocity]\n", - "ax11.plot(time,rho)\n", + "ax11.plot(shortTime,mach[:len(shortTime)])\n", "ax11.set_title('')\n", - "ax11.set_xlabel('time (s)')\n", - "ax11.set_ylabel('rho (slug/m^3)')\n", + "ax11.set_xlabel('time')\n", + "ax11.set_ylabel('mach')\n", "ax11.grid()\n", "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/Confusion/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6: RuntimeWarning: divide by zero encountered in double_scalars\n", + " \n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gamma = 7/5\n", + "def tantheta(M,B):\n", + " b = np.radians(B)\n", + " num = 2*((M**2)*(np.sin(b)**2) - 1)\n", + " den = np.tan(b)*((M**2)*(gamma + (np.cos(b)**2)) + 2)\n", + " return num/den\n", + "\n", + "maxmach = max(mach[:len(shortTime)])\n", + "realTheta = 21.27\n", + "realB = []\n", + "highM = []\n", + "\n", + "for m in mach[:len(shortTime)]:\n", + " if m >= 1:\n", + " for B in np.arange(0,90,0.1):\n", + " if tantheta(m,B) > np.tan(np.radians(realTheta)):\n", + " realB.append(B)\n", + " highM.append(m)\n", + " break\n", + "\n", + "fig1 = plt.figure(figsize=(10,6))\n", + "p = plt.plot(highM,realB)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# eng File Writer\n", + "\n", + "The below cell writes .eng files for the previously simulated rocket, allowing it to be used in OpenRocket." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "suffix = str(input('Enter a label here for the .eng file: '))\n", + "diam = 304\n", + "he_len = 1692\n", + "lox_len = 2970\n", + "rp1_len = 1880\n", + "kgRp1 = unit.lbToKg(mRP1)\n", + "kgLox = unit.lbToKg(mLOx)\n", + "kgHe = unit.lbToKg(mHe)\n", + "\n", + "#S refers to a tank not providing thrust\n", + "def startline(diam,length,mass,name,isS):\n", + " if isS:\n", + " s = '-S'\n", + " else:\n", + " s = ''\n", + " motorname = name + '-' + str(int(diameter)) + '-' + suffix + s\n", + " returnstring = '{motor} {diameter} {length} P {lowmass} {highmass} RPL'.format(motor=motorname, \n", + " diameter=diam, \n", + " length=int(length),\n", + " lowmass=round(mass,2),\n", + " highmass=round(mass+0.01,2))\n", + " return returnstring\n", + "\n", + "lox_start = startline(diam,lox_len,kgLox,'LOx',True)\n", + "rp1_start = startline(diam,rp1_len,kgRp1,'RP1',False)\n", + "he_start = startline(diam,he_len,kgHe,'HE',True)\n", + "\n", + "def makeTank(diam,length,mass,name,isS):\n", + " start = startline(diam,length,mass,name,isS)\n", + " shorttime = burntime - 0.001\n", + " longtime = burntime\n", + " if isS:\n", + " thrusts = '\\n 0.001 0.01 \\n {shorttime} 0.01 \\n {longtime} 0.00'.format(shorttime=shorttime,longtime=longtime)\n", + " else:\n", + " datanum = int(burntime/2)\n", + " thrustinter = inter.CubicSpline(time[:int(burntime/timestep)],thrust[:int(burntime/timestep)])\n", + " thrusts = ''\n", + " for i in range(datanum+1):\n", + " if i == 0:\n", + " thrusts += ' \\n 0.001 {} \\n'.format(unit.lbfToN(thrustinter(0)))\n", + " elif i == datanum:\n", + " thrusts += ' {shorttime} {shortthrust} \\n {longtime} 0.00'.format(shorttime=shorttime,\n", + " longtime=longtime,\n", + " shortthrust=unit.lbfToN(thrustinter(longtime)))\n", + " elif i >= 5:\n", + " thrusts += ' {nexttime} {nextthrust} \\n'.format(nexttime=i*2,nextthrust=unit.lbfToN(thrustinter(i*2)))\n", + " else:\n", + " thrusts += ' {nexttime} {nextthrust} \\n'.format(nexttime=i*2,nextthrust=unit.lbfToN(thrustinter(i*2)))\n", + " return start + thrusts\n", + "\n", + "with open('LOx_tank_{d}_{suf}_S.eng'.format(d=diameter,suf=suffix), 'w') as loxfile:\n", + " loxstring = makeTank(diam,lox_len,kgLox,'LOx',True)\n", + " loxfile.write(loxstring)\n", + "\n", + "with open('He_tank_{d}_{suf}_S.eng'.format(d=diameter,suf=suffix), 'w') as hefile:\n", + " hestring = makeTank(diam,he_len,kgHe,'HE',True)\n", + " hefile.write(hestring)\n", + "\n", + "with open('RP1_tank_{d}_{suf}.eng'.format(d=diameter,suf=suffix), 'w') as rp1file:\n", + " rp1string = makeTank(diam,rp1_len,kgRp1,'RP1',False)\n", + " rp1file.write(rp1string)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -380,9 +924,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.2" + "version": "3.7.7" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/Design/Vehicle-Sizing/output.txt b/Design/Vehicle-Sizing/output.txt old mode 100644 new mode 100755 diff --git a/Design/Vehicle-Sizing/simulations/ISA.csv b/Design/Vehicle-Sizing/simulations/ISA.csv new file mode 100644 index 0000000..7d03193 --- /dev/null +++ b/Design/Vehicle-Sizing/simulations/ISA.csv @@ -0,0 +1,50 @@ +-6561.68,542.16,0.0028681955764,1141.404236, +-4921.26,536.22,0.0027386549624,1135.2, +-3280.84,530.46,0.0026136304432,1128.937044, +-1640.42,524.52,0.0024931220188,1122.703448, +0,518.67,0.0024,1116.469852, +1640.42,512.82,0.0022649403868,1110.236256, +3280.84,507.06,0.00215702949,1103.674576, +4921.26,501.12,0.0020531593096,1097.44098, +6561.68,495.36,0.0019530921564,1090.8793, +8202.1,489.42,0.0018568280304,1084.645704, +9842.52,483.66,0.0017643669316,1078.084024, +11482.94,477.72,0.0016752334816,1071.522344, +13123.36,471.96,0.0015899030588,1064.960664, +14763.78,466.02,0.0015076625956,1058.398984, +16404.2,460.26,0.0014289874704,1051.50922, +18044.62,454.32,0.0013534023048,1044.94754, +19685.04,448.56,0.0012809070988,1038.38586, +21325.46,442.62,0.0012112641632,1031.496096, +22965.88,436.86,0.0011449488764,1024.606332, +24606.3,431.1,0.0010812481708,1017.716568, +26246.72,425.16,0.0010201620464,1010.826804, +27887.14,419.4,0.0009619281924,1003.9, +29527.56,413.46,0.0009063089196,996.719192, +31167.98,407.7,0.0008530665388,989.829428, +32808.4,401.94,0.0008024387392,983.595832, +34448.82,396.0,0.0007539501424,975.721816, +36089.24,390.24,0.0007078384376,968.503968, +37729.66,390.06,0.000654833746,968.175884, +39370.08,390.06,0.0006051567032,968.175884, +41010.5,390.06,0.0005595203768,968.175884, +42650.92,390.06,0.0005172116992,968.175884, +44291.34,390.06,0.0004782306704,968.175884, +45931.76,390.06,0.0004,968.175884, +47572.18,390.06,0.0004,968.175884, +49212.6,390.06,0.0004,968.175884, +50853.02,390.06,0.0003,968.175884, +52493.44,390.06,0.0003230196228,968.175884, +54133.86,390.06,0.0002985376352,968.175884, +55774.28,390.06,0.0002761948504,968.175884, +57414.7,390.06,0.0002552782008,968.175884, +59055.12,390.06,0.00024,968.175884, +60695.54,390.06,0.00021824622344,968.175884, +62335.96,390.06,0.00020177436188,968.175884, +63976.38,390.06,0.00019,968.175884, +65616.8,390.06,0.00017251482136,968.175884, +72178.48,393.48,0.00012516713272,972.440976, +78740.16,397.08,0.00009108250144,976.706068, +85301.84,400.5,0.00006648166924,981.299244, +91863.52,404.1,0.00004865497924,985.564336, +98425.2,407.7,0.00003572468676,989.829428, \ No newline at end of file diff --git a/Design/Vehicle-Sizing/simulations/ThrustAlt.csv b/Design/Vehicle-Sizing/simulations/ThrustAlt.csv new file mode 100644 index 0000000..bdcf08e --- /dev/null +++ b/Design/Vehicle-Sizing/simulations/ThrustAlt.csv @@ -0,0 +1,851 @@ +Thrust lbf,alt km +4656.955047,1.359416345 +4657.763162,1.36905093 +4658.571278,1.378694719 +4659.379393,1.388347732 +4660.187508,1.398009989 +4660.995624,1.407681509 +4661.803739,1.417362313 +4662.611854,1.42705242 +4663.41997,1.43675185 +4664.228085,1.446460624 +4665.0362,1.456178761 +4665.844316,1.465906282 +4666.652431,1.475643206 +4667.460546,1.485389556 +4668.268662,1.49514535 +4669.076777,1.504910609 +4669.884892,1.514685354 +4670.693008,1.524469605 +4671.501123,1.534263383 +4672.309238,1.544066709 +4673.117353,1.553879604 +4673.925469,1.563702089 +4674.733584,1.573534184 +4675.541699,1.58337591 +4676.349815,1.593227289 +4677.15793,1.603088342 +4677.966045,1.612959091 +4678.774161,1.622839555 +4679.582276,1.632729758 +4680.390391,1.64262972 +4681.198507,1.652539463 +4682.006622,1.662459008 +4682.814737,1.672388377 +4683.622853,1.682327593 +4684.430968,1.692276676 +4685.239083,1.702235649 +4686.047199,1.712204534 +4686.855314,1.722183352 +4687.663429,1.732172127 +4688.471545,1.74217088 +4689.27966,1.752179633 +4690.087775,1.762198409 +4690.89589,1.772227231 +4691.704006,1.78226612 +4692.512121,1.7923151 +4693.320236,1.802374193 +4694.128352,1.812443422 +4694.936467,1.82252281 +4695.744582,1.83261238 +4696.552698,1.842712154 +4697.360813,1.852822157 +4698.168928,1.86294241 +4698.977044,1.873072938 +4699.785159,1.883213763 +4700.593274,1.89336491 +4701.40139,1.903526401 +4702.209505,1.91369826 +4703.01762,1.923880511 +4703.825736,1.934073178 +4704.633851,1.944276284 +4705.441966,1.954489854 +4706.250082,1.96471391 +4707.058197,1.974948479 +4707.866312,1.985193583 +4708.674428,1.995449247 +4709.482543,2.005715495 +4710.290658,2.015992352 +4711.098773,2.026279843 +4711.906889,2.036577991 +4712.715004,2.046886822 +4713.523119,2.05720636 +4714.331235,2.067536631 +4715.13935,2.077877659 +4715.947465,2.088229469 +4716.755581,2.098592086 +4717.563696,2.108965537 +4718.371811,2.119349845 +4719.179927,2.129745038 +4719.988042,2.140151139 +4720.796157,2.150568174 +4721.604273,2.160996171 +4722.412388,2.171435153 +4723.220503,2.181885148 +4724.028619,2.19234618 +4724.836734,2.202818277 +4725.644849,2.213301464 +4726.452965,2.223795768 +4727.26108,2.234301215 +4728.069195,2.244817831 +4728.87731,2.255345643 +4729.685426,2.265884679 +4730.493541,2.276434963 +4731.301656,2.286996524 +4732.109772,2.297569389 +4732.917887,2.308153584 +4733.726002,2.318749137 +4734.534118,2.329356074 +4735.342233,2.339974424 +4736.150348,2.350604214 +4736.958464,2.361245471 +4737.766579,2.371898223 +4738.574694,2.382562497 +4739.38281,2.393238323 +4740.190925,2.403925727 +4740.99904,2.414624738 +4741.807156,2.425335384 +4742.615271,2.436057694 +4743.423386,2.446791695 +4744.231502,2.457537417 +4745.039617,2.468294887 +4745.847732,2.479064135 +4746.655847,2.48984519 +4747.463963,2.50063808 +4748.272078,2.511442835 +4749.080193,2.522259484 +4749.888309,2.533088055 +4750.696424,2.54392858 +4751.504539,2.554781086 +4752.312655,2.565645604 +4753.12077,2.576522163 +4753.928885,2.587410794 +4754.737001,2.598311525 +4755.545116,2.609224389 +4756.353231,2.620149414 +4757.161347,2.63108663 +4757.969462,2.642036069 +4758.777577,2.652997762 +4759.585693,2.663971737 +4760.393808,2.674958027 +4761.201923,2.685956663 +4762.010039,2.696967675 +4762.818154,2.707991094 +4763.626269,2.719026953 +4764.434385,2.730075281 +4765.2425,2.741136112 +4766.050615,2.752209476 +4766.85873,2.763295405 +4767.666846,2.774393931 +4768.474961,2.785505087 +4769.283076,2.796628904 +4770.091192,2.807765415 +4770.899307,2.818914651 +4771.707422,2.830076647 +4772.515538,2.841251433 +4773.323653,2.852439044 +4774.131768,2.863639512 +4774.939884,2.87485287 +4775.747999,2.886079152 +4776.556114,2.89731839 +4777.36423,2.908570618 +4778.172345,2.91983587 +4778.98046,2.931114179 +4779.788576,2.94240558 +4780.596691,2.953710106 +4781.404806,2.965027792 +4782.212922,2.976358671 +4783.021037,2.987702779 +4783.829152,2.999060149 +4784.637267,3.010430817 +4785.445383,3.021814818 +4786.253498,3.033212185 +4787.061613,3.044622956 +4787.869729,3.056047163 +4788.677844,3.067484844 +4789.485959,3.078936034 +4790.294075,3.090400768 +4791.10219,3.101879083 +4791.910305,3.113371014 +4792.718421,3.124876597 +4793.526536,3.136395869 +4794.334651,3.147928866 +4795.142767,3.159475625 +4795.950882,3.171036183 +4796.758997,3.182610576 +4797.567113,3.194198841 +4798.375228,3.205801016 +4799.183343,3.217417139 +4799.991459,3.229047246 +4800.799574,3.240691375 +4801.607689,3.252349565 +4802.415805,3.264021853 +4803.22392,3.275708277 +4804.032035,3.287408876 +4804.84015,3.299123688 +4805.648266,3.310852751 +4806.456381,3.322596106 +4807.264496,3.334353789 +4808.072612,3.346125842 +4808.880727,3.357912303 +4809.688842,3.369713211 +4810.496958,3.381528606 +4811.305073,3.393358528 +4812.113188,3.405203017 +4812.921304,3.417062113 +4813.729419,3.428935856 +4814.537534,3.440824288 +4815.34565,3.452727448 +4816.153765,3.464645377 +4816.96188,3.476578117 +4817.769996,3.488525708 +4818.578111,3.500488192 +4819.386226,3.512465611 +4820.194342,3.524458006 +4821.002457,3.536465419 +4821.810572,3.548487893 +4822.618687,3.560525469 +4823.426803,3.57257819 +4824.234918,3.584646099 +4825.043033,3.596729239 +4825.851149,3.608827651 +4826.659264,3.620941381 +4827.467379,3.633070471 +4828.275495,3.645214965 +4829.08361,3.657374906 +4829.891725,3.669550339 +4830.699841,3.681741307 +4831.507956,3.693947856 +4832.316071,3.70617003 +4833.124187,3.718407872 +4833.932302,3.73066143 +4834.740417,3.742930746 +4835.548533,3.755215868 +4836.356648,3.76751684 +4837.164763,3.779833709 +4837.972879,3.79216652 +4838.780994,3.80451532 +4839.589109,3.816880154 +4840.397225,3.82926107 +4841.20534,3.841658114 +4842.013455,3.854071333 +4842.82157,3.866500776 +4843.629686,3.878946488 +4844.437801,3.891408518 +4845.245916,3.903886913 +4846.054032,3.916381723 +4846.862147,3.928892994 +4847.670262,3.941420776 +4848.478378,3.953965117 +4849.286493,3.966526067 +4850.094608,3.979103675 +4850.902724,3.991697989 +4851.710839,4.004309061 +4852.518954,4.016936939 +4853.32707,4.029581673 +4854.135185,4.042243315 +4854.9433,4.054921915 +4855.751416,4.067617524 +4856.559531,4.080330192 +4857.367646,4.093059971 +4858.175762,4.105806913 +4858.983877,4.118571069 +4859.791992,4.131352492 +4860.600107,4.144151233 +4861.408223,4.156967346 +4862.216338,4.169800883 +4863.024453,4.182651897 +4863.832569,4.195520441 +4864.640684,4.208406569 +4865.448799,4.221310335 +4866.256915,4.234231793 +4867.06503,4.247170996 +4867.873145,4.260128 +4868.681261,4.27310286 +4869.489376,4.28609563 +4870.297491,4.299106366 +4871.105607,4.312135124 +4871.913722,4.325181959 +4872.721837,4.338246928 +4873.529953,4.351330086 +4874.338068,4.364431491 +4875.146183,4.3775512 +4875.954299,4.39068927 +4876.762414,4.403845758 +4877.570529,4.417020722 +4878.378644,4.430214221 +4879.18676,4.443426312 +4879.994875,4.456657055 +4880.80299,4.469906508 +4881.611106,4.48317473 +4882.419221,4.496461782 +4883.227336,4.509767722 +4884.035452,4.523092612 +4884.843567,4.53643651 +4885.651682,4.549799479 +4886.459798,4.56318158 +4887.267913,4.576582872 +4888.076028,4.590003419 +4888.884144,4.603443282 +4889.692259,4.616902523 +4890.500374,4.630381205 +4891.30849,4.643879391 +4892.116605,4.657397144 +4892.92472,4.670934527 +4893.732836,4.684491604 +4894.540951,4.69806844 +4895.349066,4.711665099 +4896.157182,4.725281645 +4896.965297,4.738918144 +4897.773412,4.752574662 +4898.581527,4.766251263 +4899.389643,4.779948015 +4900.197758,4.793664983 +4901.005873,4.807402235 +4901.813989,4.821159837 +4902.622104,4.834937858 +4903.430219,4.848736365 +4904.238335,4.862555426 +4905.04645,4.876395109 +4905.854565,4.890255485 +4906.662681,4.904136621 +4907.470796,4.918038588 +4908.278911,4.931961455 +4909.087027,4.945905293 +4909.895142,4.959870173 +4910.703257,4.973856166 +4911.511373,4.987863343 +4912.319488,5.001891776 +4913.127603,5.015941537 +4913.935719,5.0300127 +4914.743834,5.044105336 +4915.551949,5.058219519 +4916.360064,5.072355323 +4917.16818,5.086512823 +4917.976295,5.100692093 +4918.78441,5.114893207 +4919.592526,5.129116241 +4920.400641,5.143361271 +4921.208756,5.157628373 +4922.016872,5.171917624 +4922.824987,5.1862291 +4923.633102,5.20056288 +4924.441218,5.21491904 +4925.249333,5.229297659 +4926.057448,5.243698816 +4926.865564,5.25812259 +4927.673679,5.272569061 +4928.481794,5.287038308 +4929.28991,5.301530411 +4930.098025,5.316045452 +4930.90614,5.330583513 +4931.714256,5.345144674 +4932.522371,5.359729018 +4933.330486,5.374336627 +4934.138602,5.388967585 +4934.946717,5.403621975 +4935.754832,5.418299882 +4936.562947,5.43300139 +4937.371063,5.447726583 +4938.179178,5.462475547 +4938.987293,5.477248369 +4939.795409,5.492045135 +4940.603524,5.50686593 +4941.411639,5.521710844 +4942.219755,5.536579964 +4943.02787,5.551473377 +4943.835985,5.566391174 +4944.644101,5.581333443 +4945.452216,5.596300275 +4946.260331,5.61129176 +4947.068447,5.626307988 +4947.876562,5.641349051 +4948.684677,5.656415042 +4949.492793,5.671506053 +4950.300908,5.686622176 +4951.109023,5.701763505 +4951.917139,5.716930135 +4952.725254,5.732122161 +4953.533369,5.747339676 +4954.341484,5.762582778 +4955.1496,5.777851563 +4955.957715,5.793146127 +4956.76583,5.808466568 +4957.573946,5.823812983 +4958.382061,5.839185473 +4959.190176,5.854584135 +4959.998292,5.87000907 +4960.806407,5.885460378 +4961.614522,5.900938161 +4962.422638,5.916442518 +4963.230753,5.931973554 +4964.038868,5.94753137 +4964.846984,5.963116071 +4965.655099,5.978727759 +4966.463214,5.99436654 +4967.27133,6.01003252 +4968.079445,6.025725803 +4968.88756,6.041446497 +4969.695676,6.057194709 +4970.503791,6.072970547 +4971.311906,6.088774119 +4972.120021,6.104605535 +4972.928137,6.120464904 +4973.736252,6.136352336 +4974.544367,6.152267945 +4975.352483,6.16821184 +4976.160598,6.184184135 +4976.968713,6.200184943 +4977.776829,6.216214378 +4978.584944,6.232272554 +4979.393059,6.248359588 +4980.201175,6.264475595 +4981.00929,6.280620693 +4981.817405,6.296794998 +4982.625521,6.31299863 +4983.433636,6.329231707 +4984.241751,6.345494349 +4985.049867,6.361786677 +4985.857982,6.378108812 +4986.666097,6.394460876 +4987.474213,6.410842993 +4988.282328,6.427255285 +4989.090443,6.443697878 +4989.898559,6.460170897 +4990.706674,6.476674468 +4991.514789,6.493208718 +4992.322904,6.509773774 +4993.13102,6.526369766 +4993.939135,6.542996822 +4994.74725,6.559655073 +4995.555366,6.57634465 +4996.363481,6.593065685 +4997.171596,6.60981831 +4997.979712,6.626602661 +4998.787827,6.64341887 +4999.595942,6.660267074 +5000.404058,6.677147408 +5001.212173,6.694060011 +5002.020288,6.71100502 +5002.828404,6.727982575 +5003.636519,6.744992815 +5004.444634,6.762035882 +5005.25275,6.779111917 +5006.060865,6.796221064 +5006.86898,6.813363465 +5007.677096,6.830539267 +5008.485211,6.847748614 +5009.293326,6.864991653 +5010.101441,6.882268533 +5010.909557,6.899579402 +5011.717672,6.91692441 +5012.525787,6.934303708 +5013.333903,6.951717447 +5014.142018,6.969165781 +5014.950133,6.986648863 +5015.758249,7.004166849 +5016.566364,7.021719895 +5017.374479,7.039308157 +5018.182595,7.056931795 +5018.99071,7.074590967 +5019.798825,7.092285835 +5020.606941,7.110016559 +5021.415056,7.127783303 +5022.223171,7.14558623 +5023.031287,7.163425506 +5023.839402,7.181301297 +5024.647517,7.19921377 +5025.455633,7.217163095 +5026.263748,7.23514944 +5027.071863,7.253172978 +5027.879979,7.27123388 +5028.688094,7.28933232 +5029.496209,7.307468472 +5030.304324,7.325642513 +5031.11244,7.343854621 +5031.920555,7.362104973 +5032.72867,7.380393751 +5033.536786,7.398721134 +5034.344901,7.417087306 +5035.153016,7.435492451 +5035.961132,7.453936754 +5036.769247,7.472420401 +5037.577362,7.490943582 +5038.385478,7.509506484 +5039.193593,7.5281093 +5040.001708,7.546752221 +5040.809824,7.565435441 +5041.617939,7.584159155 +5042.426054,7.602923561 +5043.23417,7.621728856 +5044.042285,7.64057524 +5044.8504,7.659462914 +5045.658516,7.678392081 +5046.466631,7.697362945 +5047.274746,7.716375712 +5048.082861,7.735430589 +5048.890977,7.754527786 +5049.699092,7.773667513 +5050.507207,7.792849982 +5051.315323,7.812075408 +5052.123438,7.831344005 +5052.931553,7.850655992 +5053.739669,7.870011586 +5054.547784,7.88941101 +5055.355899,7.908854484 +5056.164015,7.928342234 +5056.97213,7.947874486 +5057.780245,7.967451466 +5058.588361,7.987073406 +5059.396476,8.006740535 +5060.204591,8.026453088 +5061.012707,8.046211299 +5061.820822,8.066015406 +5062.628937,8.085865648 +5063.437053,8.105762264 +5064.245168,8.1257055 +5065.053283,8.145695598 +5065.861398,8.165732806 +5066.669514,8.185817373 +5067.477629,8.20594955 +5068.285744,8.226129589 +5069.09386,8.246357746 +5069.901975,8.266634278 +5070.71009,8.286959444 +5071.518206,8.307333506 +5072.326321,8.327756728 +5073.134436,8.348229374 +5073.942552,8.368751715 +5074.750667,8.389324018 +5075.558782,8.409946559 +5076.366898,8.430619611 +5077.175013,8.451343452 +5077.983128,8.472118361 +5078.791244,8.492944621 +5079.599359,8.513822516 +5080.407474,8.534752334 +5081.21559,8.555734363 +5082.023705,8.576768896 +5082.83182,8.597856227 +5083.639936,8.618996654 +5084.448051,8.640190476 +5085.256166,8.661437995 +5086.064281,8.682739517 +5086.872397,8.704095349 +5087.680512,8.725505802 +5088.488627,8.746971188 +5089.296743,8.768491825 +5090.104858,8.79006803 +5090.912973,8.811700125 +5091.721089,8.833388436 +5092.529204,8.855133289 +5093.337319,8.876935016 +5094.145435,8.898793949 +5094.95355,8.920710425 +5095.761665,8.942684784 +5096.569781,8.964717369 +5097.377896,8.986808525 +5098.186011,9.008958603 +5098.994127,9.031167953 +5099.802242,9.053436932 +5100.610357,9.075765899 +5101.418473,9.098155217 +5102.226588,9.12060525 +5103.034703,9.143116368 +5103.842818,9.165688945 +5104.650934,9.188323355 +5105.459049,9.21101998 +5106.267164,9.233779202 +5107.07528,9.256601409 +5107.883395,9.279486991 +5108.69151,9.302436344 +5109.499626,9.325449866 +5110.307741,9.348527958 +5111.115856,9.371671029 +5111.923972,9.394879487 +5112.732087,9.418153747 +5113.540202,9.441494228 +5114.348318,9.464901353 +5115.156433,9.488375547 +5115.964548,9.511917242 +5116.772664,9.535526874 +5117.580779,9.559204882 +5118.388894,9.58295171 +5119.19701,9.606767807 +5120.005125,9.630653626 +5120.81324,9.654609625 +5121.621356,9.678636267 +5122.429471,9.702734019 +5123.237586,9.726903352 +5124.045701,9.751144745 +5124.853817,9.775458678 +5125.661932,9.799845639 +5126.470047,9.82430612 +5127.278163,9.848840619 +5128.086278,9.873449636 +5128.894393,9.898133681 +5129.702509,9.922893266 +5130.510624,9.947728911 +5131.318739,9.972641138 +5132.126855,9.997630479 +5132.93497,10.02269747 +5133.743085,10.04784265 +5134.551201,10.07306656 +5135.359316,10.09836977 +5136.167431,10.12375283 +5136.975547,10.1492163 +5137.783662,10.17476075 +5138.591777,10.20038678 +5139.399893,10.22609495 +5140.208008,10.25188586 +5141.016123,10.27776011 +5141.824238,10.3037183 +5142.632354,10.32976104 +5143.440469,10.35588895 +5144.248584,10.38210266 +5145.0567,10.40840279 +5145.864815,10.43479 +5146.67293,10.46126491 +5147.481046,10.4878282 +5148.289161,10.51448052 +5149.097276,10.54122253 +5149.905392,10.56805493 +5150.713507,10.59497839 +5151.521622,10.6219936 +5152.329738,10.64910128 +5153.137853,10.67630212 +5153.945968,10.70359685 +5154.754084,10.73098619 +5155.562199,10.75847089 +5156.370314,10.78605168 +5157.17843,10.81372933 +5157.986545,10.84150458 +5158.79466,10.86937823 +5159.602775,10.89735104 +5160.410891,10.92542382 +5161.219006,10.95359735 +5162.027121,10.98187246 +5162.835237,11.01024997 +5163.643352,11.03873071 +5164.451467,11.06731552 +5165.259583,11.09600526 +5166.067698,11.12480079 +5166.875813,11.15370299 +5167.683929,11.18271274 +5168.492044,11.21183094 +5169.300159,11.24105851 +5170.108275,11.27039636 +5170.91639,11.29984543 +5171.724505,11.32940667 +5172.532621,11.35908103 +5173.340736,11.3888695 +5174.148851,11.41877304 +5174.956967,11.44879267 +5175.765082,11.47892939 +5176.573197,11.50918423 +5177.381313,11.53955823 +5178.189428,11.57005245 +5178.997543,11.60066794 +5179.805658,11.6314058 +5180.613774,11.66226713 +5181.421889,11.69325303 +5182.230004,11.72436464 +5183.03812,11.7556031 +5183.846235,11.78696958 +5184.65435,11.81846525 +5185.462466,11.85009131 +5186.270581,11.88184896 +5187.078696,11.91373945 +5187.886812,11.94576402 +5188.694927,11.97792394 +5189.503042,12.01022049 +5190.311158,12.04265497 +5191.119273,12.07522871 +5191.927388,12.10794305 +5192.735504,12.14079936 +5193.543619,12.17379902 +5194.351734,12.20694343 +5195.15985,12.24023403 +5195.967965,12.27367226 +5196.77608,12.30725959 +5197.584195,12.34099751 +5198.392311,12.37488756 +5199.200426,12.40893125 +5200.008541,12.44313017 +5200.816657,12.4774859 +5201.624772,12.51200006 +5202.432887,12.5466743 +5203.241003,12.58151027 +5204.049118,12.61650967 +5204.857233,12.65167423 +5205.665349,12.68700571 +5206.473464,12.72250588 +5207.281579,12.75817655 +5208.089695,12.79401956 +5208.89781,12.83003679 +5209.705925,12.86623015 +5210.514041,12.90260155 +5211.322156,12.93915299 +5212.130271,12.97588645 +5212.938387,13.01280399 +5213.746502,13.04990767 +5214.554617,13.0871996 +5215.362733,13.12468193 +5216.170848,13.16235685 +5216.978963,13.20022659 +5217.787078,13.23829341 +5218.595194,13.27655961 +5219.403309,13.31502755 +5220.211424,13.35369963 +5221.01954,13.39257826 +5221.827655,13.43166595 +5222.63577,13.47096521 +5223.443886,13.51047863 +5224.252001,13.55020883 +5225.060116,13.59015849 +5225.868232,13.63033033 +5226.676347,13.67072713 +5227.484462,13.71135174 +5228.292578,13.75220703 +5229.100693,13.79329597 +5229.908808,13.83462156 +5230.716924,13.87618686 +5231.525039,13.91799501 +5232.333154,13.9600492 +5233.14127,14.00235268 +5233.949385,14.0449088 +5234.7575,14.08772094 +5235.565615,14.13079257 +5236.373731,14.17412724 +5237.181846,14.21772855 +5237.989961,14.26160022 +5238.798077,14.305746 +5239.606192,14.35016977 +5240.414307,14.39487546 +5241.222423,14.4398671 +5242.030538,14.48514881 +5242.838653,14.53072481 +5243.646769,14.57659941 +5244.454884,14.62277701 +5245.262999,14.66926213 +5246.071115,14.71605937 +5246.87923,14.76317347 +5247.687345,14.81060925 +5248.495461,14.85837167 +5249.303576,14.9064658 +5250.111691,14.95489682 +5250.919807,15.00367007 +5251.727922,15.052791 +5252.536037,15.10226518 +5253.344153,15.15209836 +5254.152268,15.2022964 +5254.960383,15.25286534 +5255.768498,15.30381134 +5256.576614,15.35514076 +5257.384729,15.4068601 +5258.192844,15.45897605 +5259.00096,15.51149547 +5259.809075,15.56442541 +5260.61719,15.6177731 +5261.425306,15.671546 +5262.233421,15.72575175 +5263.041536,15.78039821 +5263.849652,15.83549348 +5264.657767,15.89104587 +5265.465882,15.94706397 +5266.273998,16.00355657 +5267.082113,16.06053275 +5267.890228,16.11800188 +5268.698344,16.17597358 +5269.506459,16.23445778 +5270.314574,16.29346473 +5271.12269,16.35300497 +5271.930805,16.41308941 +5272.73892,16.47372929 +5273.547035,16.53493622 +5274.355151,16.59672218 +5275.163266,16.65909957 +5275.971381,16.72208119 +5276.779497,16.78568027 +5277.587612,16.84991052 +5278.395727,16.91478611 +5279.203843,16.9803217 +5280.011958,17.04653251 +5280.820073,17.11343427 +5281.628189,17.18104332 +5282.436304,17.24937658 +5283.244419,17.31845163 +5284.052535,17.38828671 +5284.86065,17.45890076 +5285.668765,17.53031349 +5286.476881,17.60254536 +5287.284996,17.67561767 +5288.093111,17.74955261 +5288.901227,17.82437327 +5289.709342,17.90010371 +5290.517457,17.97676904 +5291.325572,18.05439546 +5292.133688,18.13301031 +5292.941803,18.21264219 +5293.749918,18.29332096 +5294.558034,18.37507789 +5295.366149,18.45794574 +5296.174264,18.54195882 +5296.98238,18.62715311 +5297.790495,18.71356639 +5298.59861,18.80123833 +5299.406726,18.89021068 +5300.214841,18.98052735 +5301.022956,19.07223458 +5301.831072,19.16538117 +5302.639187,19.26001861 +5303.447302,19.3562013 +5304.255418,19.45398679 +5305.063533,19.55343604 +5305.871648,19.65461368 +5306.679764,19.75758831 +5307.487879,19.86243287 +5308.295994,19.969225 +5309.10411,20.07804746 +5309.912225,20.18898859 +5310.72034,20.30214287 +5311.528455,20.41761146 +5312.336571,20.5355029 +5313.144686,20.65593385 +5313.952801,20.77902992 +5314.760917,20.90492663 +5315.569032,21.03377053 +5316.377147,21.16572042 +5317.185263,21.30094879 +5317.993378,21.43964348 +5318.801493,21.58200958 +5319.609609,21.72827168 +5320.417724,21.87867642 +5321.225839,22.03349559 +5322.033955,22.19302969 +5322.84207,22.35761222 +5323.650185,22.52761483 +5324.458301,22.70345344 +5325.266416,22.88559572 +5326.074531,23.07457023 +5326.882647,23.27097773 +5327.690762,23.47550517 +5328.498877,23.68894341 +5329.306992,23.91220977 +5330.115108,24.14637705 +5330.923223,24.39271163 +5331.731338,24.65272406 +5332.539454,24.92823768 +5333.347569,25.22148345 +5334.155684,25.53523432 +5334.9638,25.87300079 +5335.771915,26.2393251 +5336.58003,26.64024092 +5337.388146,27.08402667 +5338.196261,27.58251349 +5339.004376,28.15353318 +5339.812492,28.82597762 +5340.620607,29.65182852 +5341.428722,30.74165753 +5342.236838,32.42064729 +5343.044953,44.33076067 \ No newline at end of file diff --git a/Design/Vehicle-Sizing/simulations/atm.csv b/Design/Vehicle-Sizing/simulations/atm.csv new file mode 100644 index 0000000..e4aa825 --- /dev/null +++ b/Design/Vehicle-Sizing/simulations/atm.csv @@ -0,0 +1,501 @@ +0.00000,518.670,0.00237717,1116.45,,, +500.000,516.887,0.00234259,1114.53,,, +1000.00,515.104,0.00230839,1112.61,,, +1500.00,513.321,0.00227457,1110.68,,, +2000.00,511.538,0.00224114,1108.75,,, +2500.00,509.755,0.00220808,1106.81,,, +3000.00,507.972,0.00217539,1104.88,,, +3500.00,506.188,0.00214308,1102.94,,, +4000.00,504.405,0.00211114,1100.99,,, +4500.00,502.622,0.00207956,1099.04,,, +5000.00,500.839,0.00204834,1097.09,,, +5500.00,499.056,0.00201748,1095.14,,, +6000.00,497.273,0.00198698,1093.18,,, +6500.00,495.490,0.00195684,1091.22,,, +7000.00,493.707,0.00192704,1089.25,,, +7500.00,491.924,0.00189760,1087.28,,, +8000.00,490.141,0.00186850,1085.31,,, +8500.00,488.358,0.00183974,1083.34,,, +9000.00,486.575,0.00181132,1081.36,,, +9500.00,484.791,0.00178324,1079.37,,, +10000.0,483.008,0.00175549,1077.39,,, +10500.0,481.225,0.00172808,1075.40,,, +11000.0,479.442,0.00170099,1073.40,,, +11500.0,477.659,0.00167423,1071.40,,, +12000.0,475.876,0.00164779,1069.40,,, +12500.0,474.093,0.00162168,1067.40,,, +13000.0,472.310,0.00159588,1065.39,,, +13500.0,470.527,0.00157039,1063.37,,, +14000.0,468.744,0.00154522,1061.36,,, +14500.0,466.961,0.00152036,1059.34,,, +15000.0,465.178,0.00149581,1057.31,,, +15500.0,463.395,0.00147156,1055.28,,, +16000.0,461.611,0.00144761,1053.25,,, +16500.0,459.828,0.00142396,1051.22,,, +17000.0,458.045,0.00140061,1049.18,,, +17500.0,456.262,0.00137755,1047.13,,, +18000.0,454.479,0.00135479,1045.08,,, +18500.0,452.696,0.00133231,1043.03,,, +19000.0,450.913,0.00131012,1040.97,,, +19500.0,449.130,0.00128821,1038.91,,, +20000.0,447.347,0.00126659,1036.85,,, +20500.0,445.564,0.00124524,1034.78,,, +21000.0,443.781,0.00122417,1032.71,,, +21500.0,441.998,0.00120337,1030.63,,, +22000.0,440.214,0.00118285,1028.55,,, +22500.0,438.431,0.00116259,1026.47,,, +23000.0,436.648,0.00114260,1024.38,,, +23500.0,434.865,0.00112287,1022.28,,, +24000.0,433.082,0.00110341,1020.19,,, +24500.0,431.299,0.00108421,1018.08,,, +25000.0,429.516,0.00106526,1015.98,,, +25500.0,427.733,0.00104656,1013.87,,, +26000.0,425.950,0.00102812,1011.75,,, +26500.0,424.167,0.00100993,1009.63,,, +27000.0,422.384,0.000991984,1007.51,,, +27500.0,420.601,0.000974284,1005.38,,, +28000.0,418.818,0.000956827,1003.24,,, +28500.0,417.034,0.000939610,1001.11,,, +29000.0,415.251,0.000922631,998.963,,, +29500.0,413.468,0.000905888,996.816,,, +30000.0,411.685,0.000889378,994.664,,, +30500.0,409.902,0.000873099,992.508,,, +31000.0,408.119,0.000857050,990.347,,, +31500.0,406.336,0.000841227,988.181,,, +32000.0,404.553,0.000825628,986.010,,, +32500.0,402.770,0.000810252,983.835,,, +33000.0,400.987,0.000795096,981.655,,, +33500.0,399.204,0.000780157,979.470,,, +34000.0,397.421,0.000765434,977.280,,, +34500.0,395.637,0.000750925,975.085,,, +35000.0,393.854,0.000736627,972.885,,, +35500.0,392.071,0.000722539,970.681,,, +36000.0,390.288,0.000708657,968.471,,, +36500.0,389.970,0.000692396,968.076,,, +37000.0,389.970,0.000675954,968.076,,, +37500.0,389.970,0.000659904,968.076,,, +38000.0,389.970,0.000644234,968.076,,, +38500.0,389.970,0.000628937,968.076,,, +39000.0,389.970,0.000614002,968.076,,, +39500.0,389.970,0.000599423,968.076,,, +40000.0,389.970,0.000585189,968.076,,, +40500.0,389.970,0.000571294,968.076,,, +41000.0,389.970,0.000557728,968.076,,, +41500.0,389.970,0.000544485,968.076,,, +42000.0,389.970,0.000531556,968.076,,, +42500.0,389.970,0.000518934,968.076,,, +43000.0,389.970,0.000506612,968.076,,, +43500.0,389.970,0.000494582,968.076,,, +44000.0,389.970,0.000482838,968.076,,, +44500.0,389.970,0.000471373,968.076,,, +45000.0,389.970,0.000460180,968.076,,, +45500.0,389.970,0.000449253,968.076,,, +46000.0,389.970,0.000438586,968.076,,, +46500.0,389.970,0.000428171,968.076,,, +47000.0,389.970,0.000418004,968.076,,, +47500.0,389.970,0.000408079,968.076,,, +48000.0,389.970,0.000398389,968.076,,, +48500.0,389.970,0.000388929,968.076,,, +49000.0,389.970,0.000379694,968.076,,, +49500.0,389.970,0.000370678,968.076,,, +50000.0,389.970,0.000361876,968.076,,, +50500.0,389.970,0.000353283,968.076,,, +51000.0,389.970,0.000344894,968.076,,, +51500.0,389.970,0.000336705,968.076,,, +52000.0,389.970,0.000328709,968.076,,, +52500.0,389.970,0.000320904,968.076,,, +53000.0,389.970,0.000313284,968.076,,, +53500.0,389.970,0.000305845,968.076,,, +54000.0,389.970,0.000298583,968.076,,, +54500.0,389.970,0.000291493,968.076,,, +55000.0,389.970,0.000284571,968.076,,, +55500.0,389.970,0.000277814,968.076,,, +56000.0,389.970,0.000271217,968.076,,, +56500.0,389.970,0.000264777,968.076,,, +57000.0,389.970,0.000258490,968.076,,, +57500.0,389.970,0.000252352,968.076,,, +58000.0,389.970,0.000246360,968.076,,, +58500.0,389.970,0.000240510,968.076,,, +59000.0,389.970,0.000234799,968.076,,, +59500.0,389.970,0.000229224,968.076,,, +60000.0,389.970,0.000223781,968.076,,, +60500.0,389.970,0.000218467,968.076,,, +61000.0,389.970,0.000213279,968.076,,, +61500.0,389.970,0.000208215,968.076,,, +62000.0,389.970,0.000203271,968.076,,, +62500.0,389.970,0.000198444,968.076,,, +63000.0,389.970,0.000193732,968.076,,, +63500.0,389.970,0.000189132,968.076,,, +64000.0,389.970,0.000184641,968.076,,, +64500.0,389.970,0.000180257,968.076,,, +65000.0,389.970,0.000175976,968.076,,, +65500.0,389.970,0.000171798,968.076,,, +66000.0,390.180,0.000167629,968.337,,, +66500.0,390.455,0.000163537,968.677,,, +67000.0,390.729,0.000159548,969.017,,, +67500.0,391.003,0.000155659,969.358,,, +68000.0,391.278,0.000151867,969.698,,, +68500.0,391.552,0.000148170,970.037,,, +69000.0,391.826,0.000144566,970.377,,, +69500.0,392.100,0.000141051,970.717,,, +70000.0,392.375,0.000137625,971.056,,, +70500.0,392.649,0.000134284,971.396,,, +71000.0,392.923,0.000131026,971.735,,, +71500.0,393.198,0.000127850,972.074,,, +72000.0,393.472,0.000124753,972.413,,, +72500.0,393.746,0.000121733,972.752,,, +73000.0,394.021,0.000118788,973.091,,, +73500.0,394.295,0.000115916,973.430,,, +74000.0,394.569,0.000113116,973.768,,, +74500.0,394.844,0.000110385,974.107,,, +75000.0,395.118,0.000107722,974.445,,, +75500.0,395.392,0.000105125,974.783,,, +76000.0,395.667,0.000102592,975.121,,, +76500.0,395.941,0.000100122,975.459,,, +77000.0,396.215,0.0000977131,975.797,,, +77500.0,396.490,0.0000953638,976.135,,, +78000.0,396.764,0.0000930725,976.472,,, +78500.0,397.038,0.0000908378,976.810,,, +79000.0,397.313,0.0000886582,977.147,,, +79500.0,397.587,0.0000865324,977.484,,, +80000.0,397.861,0.0000844590,977.822,,, +80500.0,398.136,0.0000824367,978.159,,, +81000.0,398.410,0.0000804641,978.496,,, +81500.0,398.684,0.0000785400,978.832,,, +82000.0,398.958,0.0000766632,979.169,,, +82500.0,399.233,0.0000748325,979.506,,, +83000.0,399.507,0.0000730467,979.842,,, +83500.0,399.781,0.0000713047,980.178,,, +84000.0,400.056,0.0000696054,980.515,,, +84500.0,400.330,0.0000679478,980.851,,, +85000.0,400.604,0.0000663307,981.187,,, +85500.0,400.879,0.0000647532,981.523,,, +86000.0,401.153,0.0000632142,981.858,,, +86500.0,401.427,0.0000617128,982.194,,, +87000.0,401.702,0.0000602481,982.530,,, +87500.0,401.976,0.0000588190,982.865,,, +88000.0,402.250,0.0000574249,983.200,,, +88500.0,402.525,0.0000560647,983.536,,, +89000.0,402.799,0.0000547376,983.871,,, +89500.0,403.073,0.0000534428,984.206,,, +90000.0,403.348,0.0000521794,984.541,,, +90500.0,403.622,0.0000509468,984.875,,, +91000.0,403.896,0.0000497441,985.210,,, +91500.0,404.171,0.0000485705,985.544,,, +92000.0,404.445,0.0000474254,985.879,,, +92500.0,404.719,0.0000463081,986.213,,, +93000.0,404.994,0.0000452178,986.547,,, +93500.0,405.268,0.0000441539,986.881,,, +94000.0,405.542,0.0000431158,987.215,,, +94500.0,405.816,0.0000421027,987.549,,, +95000.0,406.091,0.0000411140,987.883,,, +95500.0,406.365,0.0000401493,988.216,,, +96000.0,406.639,0.0000392078,988.550,,, +96500.0,406.914,0.0000382890,988.883,,, +97000.0,407.188,0.0000373923,989.217,,, +97500.0,407.462,0.0000365172,989.550,,, +98000.0,407.737,0.0000356632,989.883,,, +98500.0,408.011,0.0000348297,990.216,,, +99000.0,408.285,0.0000340162,990.549,,, +99500.0,408.560,0.0000332222,990.881,,, +100000,408.834,0.0000324473,991.214,,, +100500,409.108,0.0000316909,991.546,,, +101000,409.383,0.0000309527,991.879,,, +101500,409.657,0.0000302321,992.211,,, +102000,409.931,0.0000295288,992.543,,, +102500,410.206,0.0000288423,992.875,,, +103000,410.480,0.0000281722,993.207,,, +103500,410.754,0.0000275182,993.539,,, +104000,411.029,0.0000268797,993.871,,, +104500,411.303,0.0000262564,994.202,,, +105000,411.590,0.0000256472,994.549,,, +105500,412.358,0.0000250237,995.477,,, +106000,413.126,0.0000244164,996.404,,, +106500,413.894,0.0000238250,997.329,,, +107000,414.663,0.0000232489,998.254,,, +107500,415.431,0.0000226878,999.179,,, +108000,416.199,0.0000221413,1000.10,,, +108500,416.967,0.0000216088,1001.02,,, +109000,417.735,0.0000210902,1001.95,,, +109500,418.503,0.0000205849,1002.87,,, +110000,419.271,0.0000200926,1003.79,,, +110500,420.039,0.0000196129,1004.71,,, +111000,420.807,0.0000191455,1005.62,,, +111500,421.575,0.0000186901,1006.54,,, +112000,422.344,0.0000182464,1007.46,,, +112500,423.112,0.0000178139,1008.37,,, +113000,423.880,0.0000173924,1009.29,,, +113500,424.648,0.0000169817,1010.20,,, +114000,425.416,0.0000165814,1011.12,,, +114500,426.184,0.0000161912,1012.03,,, +115000,426.952,0.0000158108,1012.94,,, +115500,427.720,0.0000154401,1013.85,,, +116000,428.488,0.0000150787,1014.76,,, +116500,429.256,0.0000147264,1015.67,,, +117000,430.024,0.0000143829,1016.58,,, +117500,430.793,0.0000140480,1017.48,,, +118000,431.561,0.0000137215,1018.39,,, +118500,432.329,0.0000134032,1019.30,,, +119000,433.097,0.0000130927,1020.20,,, +119500,433.865,0.0000127900,1021.11,,, +120000,434.633,0.0000124948,1022.01,,, +120500,435.401,0.0000122070,1022.91,,, +121000,436.169,0.0000119262,1023.81,,, +121500,436.937,0.0000116524,1024.72,,, +122000,437.705,0.0000113853,1025.62,,, +122500,438.474,0.0000111248,1026.52,,, +123000,439.242,0.0000108708,1027.41,,, +123500,440.010,0.0000106229,1028.31,,, +124000,440.778,0.0000103811,1029.21,,, +124500,441.546,0.0000101452,1030.11,,, +125000,442.314,0.00000991510,1031.00,,, +125500,443.082,0.00000969058,1031.90,,, +126000,443.850,0.00000947152,1032.79,,, +126500,444.618,0.00000925778,1033.68,,, +127000,445.386,0.00000904922,1034.58,,, +127500,446.154,0.00000884570,1035.47,,, +128000,446.923,0.00000864710,1036.36,,, +128500,447.691,0.00000845329,1037.25,,, +129000,448.459,0.00000826415,1038.14,,, +129500,449.227,0.00000807954,1039.03,,, +130000,449.995,0.00000789937,1039.91,,, +130500,450.763,0.00000772351,1040.80,,, +131000,451.531,0.00000755186,1041.69,,, +131500,452.299,0.00000738430,1042.57,,, +132000,453.067,0.00000722074,1043.46,,, +132500,453.835,0.00000706107,1044.34,,, +133000,454.604,0.00000690519,1045.23,,, +133500,455.372,0.00000675300,1046.11,,, +134000,456.140,0.00000660442,1046.99,,, +134500,456.908,0.00000645935,1047.87,,, +135000,457.676,0.00000631770,1048.75,,, +135500,458.444,0.00000617938,1049.63,,, +136000,459.212,0.00000604432,1050.51,,, +136500,459.980,0.00000591243,1051.39,,, +137000,460.748,0.00000578363,1052.27,,, +137500,461.516,0.00000565784,1053.14,,, +138000,462.284,0.00000553499,1054.02,,, +138500,463.053,0.00000541501,1054.89,,, +139000,463.821,0.00000529782,1055.77,,, +139500,464.589,0.00000518335,1056.64,,, +140000,465.357,0.00000507154,1057.52,,, +140500,466.125,0.00000496232,1058.39,,, +141000,466.893,0.00000485563,1059.26,,, +141500,467.661,0.00000475139,1060.13,,, +142000,468.429,0.00000464957,1061.00,,, +142500,469.197,0.00000455008,1061.87,,, +143000,469.965,0.00000445289,1062.74,,, +143500,470.734,0.00000435792,1063.61,,, +144000,471.502,0.00000426513,1064.47,,, +144500,472.270,0.00000417446,1065.34,,, +145000,473.038,0.00000408586,1066.21,,, +145500,473.806,0.00000399928,1067.07,,, +146000,474.574,0.00000391467,1067.94,,, +146500,475.342,0.00000383198,1068.80,,, +147000,476.110,0.00000375117,1069.66,,, +147500,476.878,0.00000367219,1070.53,,, +148000,477.646,0.00000359499,1071.39,,, +148500,478.415,0.00000351954,1072.25,,, +149000,479.183,0.00000344579,1073.11,,, +149500,479.951,0.00000337370,1073.97,,, +150000,480.719,0.00000330323,1074.83,,, +150500,481.487,0.00000323433,1075.69,,, +151000,482.255,0.00000316699,1076.55,,, +151500,483.023,0.00000310115,1077.40,,, +152000,483.791,0.00000303678,1078.26,,, +152500,484.559,0.00000297384,1079.11,,, +153000,485.327,0.00000291230,1079.97,,, +153500,486.095,0.00000285214,1080.82,,, +154000,486.864,0.00000279331,1081.68,,, +154500,487.170,0.00000273835,1082.02,,, +155000,487.170,0.00000268618,1082.02,,, +155500,487.170,0.00000263500,1082.02,,, +156000,487.170,0.00000258480,1082.02,,, +156500,487.170,0.00000253555,1082.02,,, +157000,487.170,0.00000248724,1082.02,,, +157500,487.170,0.00000243985,1082.02,,, +158000,487.170,0.00000239336,1082.02,,, +158500,487.170,0.00000234776,1082.02,,, +159000,487.170,0.00000230303,1082.02,,, +159500,487.170,0.00000225915,1082.02,,, +160000,487.170,0.00000221610,1082.02,,, +160500,487.170,0.00000217388,1082.02,,, +161000,487.170,0.00000213246,1082.02,,, +161500,487.170,0.00000209183,1082.02,,, +162000,487.170,0.00000205198,1082.02,,, +162500,487.170,0.00000201288,1082.02,,, +163000,487.170,0.00000197453,1082.02,,, +163500,487.170,0.00000193691,1082.02,,, +164000,487.170,0.00000190000,1082.02,,, +164500,487.170,0.00000186380,1082.02,,, +165000,487.170,0.00000182829,1082.02,,, +165500,487.170,0.00000179346,1082.02,,, +166000,487.170,0.00000175929,1082.02,,, +166500,487.170,0.00000172577,1082.02,,, +167000,487.170,0.00000169289,1082.02,,, +167500,486.898,0.00000166156,1081.71,,, +168000,486.130,0.00000163243,1080.86,,, +168500,485.362,0.00000160377,1080.01,,, +169000,484.594,0.00000157557,1079.15,,, +169500,483.825,0.00000154782,1078.30,,, +170000,483.057,0.00000152052,1077.44,,, +170500,482.289,0.00000149366,1076.58,,, +171000,481.521,0.00000146723,1075.73,,, +171500,480.753,0.00000144123,1074.87,,, +172000,479.985,0.00000141564,1074.01,,, +172500,479.217,0.00000139047,1073.15,,, +173000,478.449,0.00000136571,1072.29,,, +173500,477.681,0.00000134135,1071.43,,, +174000,476.913,0.00000131739,1070.57,,, +174500,476.144,0.00000129382,1069.70,,, +175000,475.376,0.00000127063,1068.84,,, +175500,474.608,0.00000124783,1067.98,,, +176000,473.840,0.00000122539,1067.11,,, +176500,473.072,0.00000120333,1066.25,,, +177000,472.304,0.00000118162,1065.38,,, +177500,471.536,0.00000116027,1064.51,,, +178000,470.768,0.00000113928,1063.65,,, +178500,470.000,0.00000111863,1062.78,,, +179000,469.232,0.00000109832,1061.91,,, +179500,468.464,0.00000107835,1061.04,,, +180000,467.695,0.00000105871,1060.17,,, +180500,466.927,0.00000103940,1059.30,,, +181000,466.159,0.00000102041,1058.43,,, +181500,465.391,0.00000100173,1057.55,,, +182000,464.623,9.83368E-07,1056.68,,, +182500,463.855,9.65312E-07,1055.81,,, +183000,463.087,9.47558E-07,1054.93,,, +183500,462.319,9.30102E-07,1054.06,,, +184000,461.551,9.12939E-07,1053.18,,, +184500,460.783,8.96065E-07,1052.31,,, +185000,460.014,8.79475E-07,1051.43,,, +185500,459.246,8.63166E-07,1050.55,,, +186000,458.478,8.47133E-07,1049.67,,, +186500,457.710,8.31371E-07,1048.79,,, +187000,456.942,8.15877E-07,1047.91,,, +187500,456.174,8.00646E-07,1047.03,,, +188000,455.406,7.85675E-07,1046.15,,, +188500,454.638,7.70959E-07,1045.27,,, +189000,453.870,7.56494E-07,1044.38,,, +189500,453.102,7.42277E-07,1043.50,,, +190000,452.334,7.28304E-07,1042.61,,, +190500,451.565,7.14571E-07,1041.73,,, +191000,450.797,7.01074E-07,1040.84,,, +191500,450.029,6.87809E-07,1039.95,,, +192000,449.261,6.74774E-07,1039.07,,, +192500,448.493,6.61964E-07,1038.18,,, +193000,447.725,6.49375E-07,1037.29,,, +193500,446.957,6.37006E-07,1036.40,,, +194000,446.189,6.24851E-07,1035.51,,, +194500,445.421,6.12907E-07,1034.62,,, +195000,444.653,6.01172E-07,1033.72,,, +195500,443.884,5.89642E-07,1032.83,,, +196000,443.116,5.78314E-07,1031.94,,, +196500,442.348,5.67184E-07,1031.04,,, +197000,441.580,5.56250E-07,1030.15,,, +197500,440.812,5.45508E-07,1029.25,,, +198000,440.044,5.34955E-07,1028.35,,, +198500,439.276,5.24588E-07,1027.45,,, +199000,438.508,5.14405E-07,1026.56,,, +199500,437.740,5.04402E-07,1025.66,,, +200000,436.972,4.94576E-07,1024.76,,, +200500,436.204,4.84925E-07,1023.85,,, +201000,435.435,4.75446E-07,1022.95,,, +201500,434.667,4.66136E-07,1022.05,,, +202000,433.899,4.56993E-07,1021.15,,, +202500,433.131,4.48013E-07,1020.24,,, +203000,432.363,4.39193E-07,1019.34,,, +203500,431.595,4.30533E-07,1018.43,,, +204000,430.827,4.22028E-07,1017.53,,, +204500,430.059,4.13676E-07,1016.62,,, +205000,429.291,4.05475E-07,1015.71,,, +205500,428.523,3.97423E-07,1014.80,,, +206000,427.754,3.89516E-07,1013.89,,, +206500,426.986,3.81753E-07,1012.98,,, +207000,426.218,3.74131E-07,1012.07,,, +207500,425.450,3.66648E-07,1011.16,,, +208000,424.682,3.59302E-07,1010.24,,, +208500,423.914,3.52089E-07,1009.33,,, +209000,423.146,3.45009E-07,1008.41,,, +209500,422.378,3.38059E-07,1007.50,,, +210000,421.610,3.31236E-07,1006.58,,, +210500,420.842,3.24539E-07,1005.66,,, +211000,420.073,3.17966E-07,1004.75,,, +211500,419.305,3.11514E-07,1003.83,,, +212000,418.537,3.05182E-07,1002.91,,, +212500,417.769,2.98967E-07,1001.99,,, +213000,417.001,2.92867E-07,1001.07,,, +213500,416.233,2.86881E-07,1000.14,,, +214000,415.465,2.81007E-07,999.220,,, +214500,414.697,2.75242E-07,998.296,,, +215000,413.929,2.69586E-07,997.371,,, +215500,413.161,2.64035E-07,996.445,,, +216000,412.393,2.58589E-07,995.518,,, +216500,411.624,2.53245E-07,994.591,,, +217000,410.856,2.48002E-07,993.662,,, +217500,410.088,2.42858E-07,992.733,,, +218000,409.320,2.37811E-07,991.803,,, +218500,408.552,2.32860E-07,990.872,,, +219000,407.784,2.28003E-07,989.940,,, +219500,407.016,2.23238E-07,989.007,,, +220000,406.248,2.18565E-07,988.074,,, +220500,405.480,2.13980E-07,987.139,,, +221000,404.712,2.09484E-07,986.204,,, +221500,403.943,2.05073E-07,985.267,,, +222000,403.175,2.00748E-07,984.330,,, +222500,402.407,1.96505E-07,983.392,,, +223000,401.639,1.92344E-07,982.453,,, +223500,400.871,1.88264E-07,981.513,,, +224000,400.103,1.84263E-07,980.573,,, +224500,399.335,1.80339E-07,979.631,,, +225000,398.567,1.76492E-07,978.688,,, +225500,397.799,1.72719E-07,977.745,,, +226000,397.031,1.69020E-07,976.800,,, +226500,396.263,1.65393E-07,975.855,,, +227000,395.494,1.61838E-07,974.909,,, +227500,394.726,1.58352E-07,973.962,,, +228000,393.958,1.54934E-07,973.014,,, +228500,393.190,1.51584E-07,972.065,,, +229000,392.422,1.48300E-07,971.115,,, +229500,391.654,1.45081E-07,970.164,,, +230000,390.886,1.41926E-07,969.212,,, +230500,390.118,1.38833E-07,968.259,,, +231000,389.350,1.35802E-07,967.306,,, +231500,388.582,1.32831E-07,966.351,,, +232000,387.813,1.29920E-07,965.396,,, +232500,387.045,1.27066E-07,964.439,,, +233000,386.304,1.24262E-07,963.515,,, +233500,385.755,1.21454E-07,962.830,,, +234000,385.206,1.18705E-07,962.145,,, +234500,384.658,1.16016E-07,961.460,,, +235000,384.109,1.13383E-07,960.774,,, +235500,383.561,1.10806E-07,960.088,,, +236000,383.012,1.08285E-07,959.401,,, +236500,382.463,1.05817E-07,958.713,,, +237000,381.915,1.03402E-07,958.025,,, +237500,381.366,1.01039E-07,957.337,,, +238000,380.817,9.87268E-08,956.648,,, +238500,380.269,9.64641E-08,955.959,,, +239000,379.720,9.42501E-08,955.269,,, +239500,379.171,9.20839E-08,954.579,,, +240000,378.623,8.99644E-08,953.888,,, +240500,378.074,8.78907E-08,953.196,,, +241000,377.526,8.58619E-08,952.504,,, +241500,376.977,8.38771E-08,951.812,,, +242000,376.428,8.19354E-08,951.119,,, +242500,375.880,8.00359E-08,950.426,,, +243000,375.331,7.81777E-08,949.732,,, +243500,374.782,7.63601E-08,949.038,,, +244000,374.234,7.45822E-08,948.343,,, +244500,373.685,7.28431E-08,947.647,,, +245000,373.136,7.11421E-08,946.951,,, +245500,372.588,6.94785E-08,946.255,,, +246000,372.039,6.78513E-08,945.558,,, +246500,371.490,6.62600E-08,944.860,,, +247000,370.942,6.47037E-08,944.163,,, +247500,370.393,6.31817E-08,943.464,,, +248000,369.845,6.16934E-08,942.765,,, +248500,369.296,6.02380E-08,942.066,,, +249000,368.747,5.88148E-08,941.365,,, +249500,368.199,5.74233E-08,940.665,,, +250000,367.650,5.60626E-08,939.964,,, \ No newline at end of file diff --git a/Design/Vehicle-Sizing/simulations/simulations.py b/Design/Vehicle-Sizing/simulations/simulations.py index d96c812..824cfda 100755 --- a/Design/Vehicle-Sizing/simulations/simulations.py +++ b/Design/Vehicle-Sizing/simulations/simulations.py @@ -2,6 +2,8 @@ Simulations is a python based flight simulation package for rocket and missle trajectory analysis. """ import numpy as np +import csv +from scipy import interpolate as inter __author__ = "Cameron Flannery" __copyright__ = "Copyright 2018" @@ -19,7 +21,26 @@ class Rocket(object): A list of assumptions, capabilities, and limitations will be added here as features are solidified. """ - def __init__(self, initialConditions, engines, burntime, timestep=1): + def import_thrust_vec(self): + unit_convert = unit() + tlist = [] + alist = [] + with open('simulations/ThrustAlt.csv') as csvfile: + tareader = csv.reader(csvfile) + names = False + for i in tareader: + if not names: + names = True + else: + tlist.append(float(i[0])) + alist.append(unit_convert.mToFt(float(i[1])*1000)) + return tlist, alist + + def get_thrust(self,alt,t_list,a_list): + spline = inter.CubicSpline(a_list,t_list) + return spline(alt) + + def __init__(self, initialConditions, engines, burntime, timestep=0.5): """ Initialization of the Rocket simulation class Args: @@ -39,6 +60,7 @@ def __init__(self, initialConditions, engines, burntime, timestep=1): lift_coefficient, # [1] bank_angle # [rad] reference_area # [ft^2] + coef_drag # [dimensionless] engines: -> Required keywords: @@ -71,6 +93,7 @@ def __init__(self, initialConditions, engines, burntime, timestep=1): 'Ae', 'Isp', 'reference_area', + 'coef_drag' ] for arg in requiredArgs: @@ -82,7 +105,7 @@ def __init__(self, initialConditions, engines, burntime, timestep=1): self.burntime = burntime self.timestep = timestep self.CONST() - #self.atm = atm() + self.atm = atm() self.unit = unit() def run(self, stopTime=None, stopApogee=None): @@ -103,15 +126,17 @@ def run(self, stopTime=None, stopApogee=None): self.mass = [self.initialConditions['mass']] self.lift_coefficient = [self.initialConditions['lift_coefficient']] self.bank_angle = [self.initialConditions['bank_angle']] - self.Cd = [self.calc_Cd(0)] + self.Cd = self.initialConditions['coef_drag'] self.drag = [0] self.dynamic_pressure = [0] self.rho = [self.STDATM(self.initialConditions['altitude'])[1]] self.temp = [self.STDATM(self.initialConditions['altitude'])[0]] + self.M = [0] # initialize arrays with values from engines self.nengines = self.engines['nengines'] - self.thrust = [self.engines['thrust_sl']*self.nengines] + self.t_vec, self.a_vec = self.import_thrust_vec() + self.thrust = [self.t_vec[0]] self.thrust_angle = [self.engines['thrust_angle']] self.Ae = [self.engines['Ae']] self.Isp = self.engines['Isp'] @@ -119,10 +144,12 @@ def run(self, stopTime=None, stopApogee=None): # initialize additional values self.acceleration = [0] - self.R = [self.Rearth] # [m] initial distance to the center of the earth + self.R = [self.Rearth + self.initialConditions['altitude']] # [ft] initial distance to the center of the earth self.reference_area = self.initialConditions['reference_area'] self.runIter = 0 # iterator + self.apogee = False + while True: self.time.append(self.time[self.runIter] + self.timestep) self.R.append(self.Rearth + self.altitude[self.runIter]) @@ -130,18 +157,20 @@ def run(self, stopTime=None, stopApogee=None): self.rho.append(rho) self.temp.append(T) - M = self.velocity[self.runIter]/sos - Cd = self.calc_Cd(M) + self.M.append(self.velocity[self.runIter]/sos) # calculate altitude, velocity, and acceleration self.altitude.append(self.altitude[self.runIter] + self.calc_dalt()) self.velocity.append(self.velocity[self.runIter] + self.calc_deltaV()) - self.drag.append(self.calc_drag(self.velocity[self.runIter], rho, self.reference_area, Cd)) + self.drag.append(self.calc_drag(self.velocity[self.runIter], rho, self.reference_area, self.Cd)) + #print(str(self.Cd) + str(self.drag[self.runIter])) self.acceleration.append(self.calc_accel()) # Thrust + if self.time[self.runIter] <= self.burntime: - self.thrust.append(self.thrust[0]) + self.thrust.append(self.get_thrust(self.altitude[self.runIter + 1], self.t_vec, self.a_vec)) + print(self.thrust[self.runIter]) self.mass.append(self.mass[self.runIter] - self.mdot*self.timestep) else: self.thrust.append(0) @@ -149,8 +178,10 @@ def run(self, stopTime=None, stopApogee=None): self.flight_heading.append(self.flight_heading[0]) # initial values until calcs added self.flight_angle.append(self.flight_angle[0]) # initial values until calcs added self.thrust_angle.append(self.thrust_angle[0]) - self.Cd.append(self.Cd[0]) - if self.runIter <= self.burntime * 2: + if self.velocity[self.runIter] < 0: + self.apogee = True + + if not self.apogee: self.dynamic_pressure.append(self.maxQ(rho)) # END CONDITIONS @@ -158,13 +189,10 @@ def run(self, stopTime=None, stopApogee=None): break self.runIter += 1 - return (self.altitude, self.velocity, self.acceleration, self.mass, self.time, self.thrust, self.drag, self.dynamic_pressure, self.rho, self.temp) - - def calc_Cd(self, M): - return .55 + return (self.altitude, self.velocity, self.acceleration, self.mass, self.time, self.thrust, self.drag, self.dynamic_pressure, self.rho, self.temp, self.M) def calc_drag(self, vel, rho, S, Cd): - return 1/2*rho*vel**2*S*Cd + return (1/2)*rho*(vel**2)*S*Cd def calc_thrust(self, thrust_sl=None, Ae=None, pe=None, pa=None): """ calc_thrust determines the thrust """ @@ -185,12 +213,12 @@ def calc_accel(self, thrust=None, thrust_angle=None, based on the current timestep values. Args: - thrust: # [N] + thrust: # [lbf] thrust_angle: # [rad] angle - drag: # [N] - mass: # [kg] + drag: # [lbf] + mass: # [slug] flight_heading: # [rad] angle - R: # [m] radius from center of the Earth + R: # [ft] radius from center of the Earth timestep: # [s] timestep Returns: @@ -229,12 +257,12 @@ def calc_deltaV(self, thrust=None, thrust_angle=None, based on the current timestep values. Args: - thrust: # [N] + thrust: # [lbf] thrust_angle: # [rad] angle - drag: # [N] - mass: # [kg] + drag: # [lbf] + mass: # [slug] flight_heading: # [rad] angle - R: # [m] radius from center of the Earth + R: # [ft] radius from center of the Earth timestep: # [s] timestep Returns: @@ -272,8 +300,8 @@ def calc_dalt(self, velocity=None, flight_heading=None, timestep=None): based on the current timestep values. Args: - velocity: # [m/s] velocity at current timestep - flight_heading: # [m] radius from center of the Earth + velocity: # [ft/s] velocity at current timestep + flight_heading: # [ft] radius from center of the Earth timestep: # [s] timestep Returns: @@ -311,68 +339,12 @@ def CONST(self): self.gamma_air = 1.4 # ratio of specific heats self.Rearth = 2.0902 * 10**7 # [ft] - # standard atmosphere model (SI units) - def STDATM(self, altitude): - layer = -1.0 # gradient layer - gradient = -self.unit.kToR(0.0019812) - altitude_base = 0.0 - temperature_base = 518.67 - density_base = 0.00237717 - - if altitude > 36089: - layer = 1.0 # isothermal layer - altitude_base = 36089 - temperature_base = self.unit.kToR(216.65) - density_base = 0.000706208 - if altitude > 65617: - layer = -1.0 # gradient layer - gradient = self.unit.kToR(0.0003048) - altitude_base = 65617 - temperature_base = 216.65 * 9/5 - density_base = 0.000170834 - if altitude > 104987: - layer = -1.0 # gradient layer - gradient = self.unit.kToR(0.00085344) - altitude_base = 104987 - temperature_base = 228.65*9/5 - density_base = 0.0000256636 - if altitude > 154199: - layer = 1.0 # isothermal layer - altitude_base = 154199 - temperature_base = 270.65*9/5 - density_base = 1.47056878 * (10**(-6)) - if altitude > 167323: - layer = -1.0 # gradient layer - gradinet = -self.unit.kToR(0.00085344) - altitude_base = 167323 - temperature_base = 270.65*9/5 - density_base = 0.00000277025 - if altitude > 232940: - layer = 1.0 # isothermal layer - altitude_base = 232940 - temperature_base = 214.65*9/5 - density_base = 1.24603 * (10**(-7)) - if layer < 0.0: - temperature = temperature_base + gradient*(altitude - altitude_base) - power = -1.0*(self.g0/gradient/self.R_air + 1.0) - density = density_base*(temperature/temperature_base)**power + #Standard atmosphere interpolation: + def STDATM(self,alt): + if alt < 250000: + return (self.atm.get_temp(alt),self.atm.get_rho(alt),self.atm.get_sos(alt)) else: - temperature = temperature_base - power = -1.0*self.g0*(altitude - altitude_base)/self.R_air/temperature - density = density_base*np.exp(power) - sos = np.sqrt(self.gamma_air*self.R_air*temperature) - - '''meAlt = self.unit.ftToM(altitude) - geAlt = self.atm.geopotentialAlt(meAlt) - meDensity = self.atm.getDensity(geAlt) - meTemp = self.atm.getTempK(geAlt) - temperature = self.unit.kToR(meTemp) - density = self.unit.kgm3ToSlugFt3(meDensity) - meSos = np.sqrt(self.gamma_air*self.R_air*temperature) - sos = self.unit.mToFt(meSos)''' - - return (temperature, density, sos) - + return (360,0,940) def test_Rocket(): burntime = 50 # s @@ -382,7 +354,7 @@ def test_Rocket(): g0 = 9.81 mdot = nengines*thrust_sl/(g0*Isp) twratio = 50 # estimated thrust 2 weight ratio - mstructure = 300 # kg + mstructure = 300 # slug mpropulsion = thrust_sl/(twratio*g0) mpropellant = mdot*burntime mass = mpropulsion + mpropellant + mstructure @@ -411,103 +383,35 @@ def test_Rocket(): return 0 -'''class atm(object): +class atm(object): def __init__(self): - self.molWeight = 28.9644 - self.g = 9.8 - self.R = 8.314 - - def getTempK(self, geAlt): - temp = 288.15 - if 0 < geAlt < 11000: - temp = 288.15 - 0.0065 * geAlt - elif geAlt < 20000: - temp = 216.65 - elif geAlt < 32000: - temp = 216.65 + 0.001 * geAlt - elif geAlt < 47000: - temp = 228.65 + 0.0028 * geAlt - elif geAlt < 51000: - temp = 270.65 - elif geAlt < 71000: - temp = 270.65 - 0.0028 * geAlt - elif geAlt >= 71000: - temp = 214.65 - 0.002 * geAlt - return temp - - def getTempGrad(self, geAlt): - if geAlt < 11000: - return 0.0065 - elif geAlt < 20000: - return 0 - elif geAlt < 32000: - return -0.001 - elif geAlt < 47000: - return -0.0028 - elif geAlt < 51000: - return 0 - elif geAlt < 71000: - return 0.0028 - elif geAlt >= 71000: - return 0.002 - - #Using this corrected altitude instead of the actual altitude allows us to - #treat gravity as constant. It is a fairly small difference at low - #altitudes, since gravity doesn't change very quickly - def geopotentialAlt(self,alt): - return alt - - def getBasePress(self, geAlt): - if geAlt < 11000: - return 101325 - elif geAlt < 20000: - return 22632.1 - elif geAlt < 32000: - return 5474.89 - elif geAlt < 47000: - return 868.019 - elif geAlt < 51000: - return 110.906 - elif geAlt < 71000: - return 66.9389 - else: - return 3.95642 - - def getBaseAlt(self, geAlt): - if geAlt < 11000: - return 0 - elif geAlt < 20000: - return 11000 - elif geAlt < 32000: - return 20000 - elif geAlt < 47000: - return 32000 - elif geAlt < 51000: - return 47000 - elif geAlt < 71000: - return 51000 - else: - return 71000 - - def getPressure(self, geAlt): - temp = self.getTempK(geAlt) - baseAlt = self.getBaseAlt(geAlt) - baseTemp = self.getTempK(baseAlt) - basePress = self.getBasePress(geAlt) - tempGrad = self.getTempGrad(geAlt) - if tempGrad == 0: - num = -self.g * self.molWeight * (geAlt - baseAlt) - den = self.R * baseTemp - return basePress * np.exp(num/den) - else: - num = -self.g * self.molWeight - den = self.R * tempGrad - return basePress * (temp / baseTemp)**(num/den) - - def getDensity(self, geAlt): - temp = self.getTempK(geAlt) - pressure = self.getPressure(geAlt) - return pressure * self.molWeight /(self.R * temp)''' + self.altlist = [] + self.tlist = [] + self.rholist = [] + self.soslist = [] + with open('simulations/atm.csv') as atmcsv: + atmreader = csv.reader(atmcsv) + names = False + for i in atmreader: + if not names: + names = True + else: + self.altlist.append(float(i[0])) + self.tlist.append(float(i[1])) + self.rholist.append(float(i[2])) + self.soslist.append(float(i[3])) + self.tspline = inter.CubicSpline(self.altlist,self.tlist) + self.rhospline = inter.CubicSpline(self.altlist,self.rholist) + self.sosspline = inter.CubicSpline(self.altlist,self.soslist) + + def get_temp(self,alt): + return self.tspline(alt) + + def get_rho(self,alt): + return self.rhospline(alt) + + def get_sos(self,alt): + return self.tspline(alt) class unit(object): def kgToLb(self, kg): @@ -549,5 +453,11 @@ def kToR(self, k): def kgm3ToSlugFt3(self, kgm3): return kgm3 * 0.00194032 + def inToMm(self, inch): + return inch*25.4 + + def mmToIn(self, mm): + return mm/25.4 + if __name__ == '__main__': test_Rocket() diff --git a/Design/Vehicle-Sizing/tank_sizing_2_23.m b/Design/Vehicle-Sizing/tank_sizing_2_23.m new file mode 100755 index 0000000..7608b79 --- /dev/null +++ b/Design/Vehicle-Sizing/tank_sizing_2_23.m @@ -0,0 +1,149 @@ +clear all; close all; clc; + + +% This program is adapted from Huzel and Huang's "Modern Engineering for +% Design of Liquid-Propellant Rocket Engines" and uses the calculations for +% tank dimensions found in Chapter 8 + +%% Lists all required constants and values required for math-ing +function mass=tankTotalMass(propMass,diam,propPress) + flarp = propPress; + for i = 1:1000 + P(i) = i; %tank pressure in psi + D = diam; %tank diameter in inches + R = D./2; %tank radius, in + S = 40000; %yield strength of 6061-T6 alloy in psi + Sc = 56000; %compressive yield strength of 6061-T6 in psi + FoS = 1.5; %factor of safety + v = 0.33; %Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85; %approximate efficiency of welded joints + E = 1e7; %6061-T6 modulus of elasticity, psi + rho_alum = 0.0975; %density of aluminum, lbm./in.^3 + rho_lox = 0.04122124; %density of LOx, lbm./in.^3 + rho_rp1 = 0.0292631; %density of RP-1, lbm./in.^3 + k = 2; %ratio of a./b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2; %obtained from graph on page 292 of H&H book + Fc = 3305; %estimated critical loading on rocket during flight, lbf + g = 32.2; %gravitational acceleration, ft./s.^3 + + mix_ratio = 2.23; %fuel mix ratio, for prop mass calcs and volume + m_prop = propMass; %propellant mass in lbm--given from prop team + m_rp1 = m_prop ./ (1+mix_ratio); %computes needed amount of RP-1 based on mixture ratio + m_lox = m_prop - m_rp1; %remaining propellant must be LOx + vol_lox = m_lox ./ rho_lox;%use density of propellants to compute volumes + vol_lox = vol_lox .* 1.02; %adds an extra 2% of volume for ullage space + vol_rp1 = m_rp1 ./ rho_rp1; + vol_rp1 = vol_rp1 .* 1.02; %also adds an extra 2% of volume for ullage + + %not required unless volume is given instead of mass + % vol_lox = 16748.707; %volume of oxidizer in in.^3 + % vol_rp1 = 10579.792; %volume of fuel in in.^3 + d_pressline = 0.5; %outer diameter of pressurant lines through tanks, in + d_annulus = 2; %outer diameter of annular lining, in + d_rp1fill = 1; %outer diameter of fill line to rp-1, in + + t_barlows = (P(i).*D)./(2.*S./FoS); + + %% Calculates needed tank thickness based on loading characteristics + % Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate + % required cylindrical wall thickness based on loading criteria + + tc_vec = 0:0.001:0.25; %vector of wall thicknesses for testing + LHS = 4.*(Fc.*FoS).*(1-v.^2) ./ (E.*pi); %the left-hand side of the eqn. on p.293 + RHS = (36.*tc_vec.^3 - tc_vec.^5) ./ (6-tc_vec).^3; + + indexer = find(RHS <= LHS); %finds intersection of two curves + tc(i) = tc_vec(max(indexer)); %saves tc--cylindrical wall thickness + + %% test to see whether barlows is a bit more accurate than the other + if t_barlows >= tc + tc(i) = t_barlows; + else + blerg = true; + end + %tc = t_barlows; + %% Uses required cylindrical wall thickness to estimate bulkhead thickness + + a(i) = R - tc(i); %a is the internal radius, or major axis length of ellipse + b(i) = a(i)./2; %minor axis length, or head height--property of 2:1 shape + Eprime = 2.*k + (1./sqrt(k.^2-1)).*log((k+sqrt(k.^2-1))./(k-sqrt(k.^2-1))); + %eprime is the "design factor" described on p. 292, for weight calcs later + %on + + tk = (K.*P.*a(i)) ./ (S.*ew ./ FoS); %knuckle thickness, in + tcr = (P(i).*R) ./ (2.*S.*ew ./ FoS); %crown thickness, in + tequiv = (tk + tcr) ./ 2; %average bulkhead thickness for weight calcs + + %% Redimensions tanks according to volume and wetted area eqns. given in H&H + + v_endcap = (2.*pi.*a(i).^2.*b(i))./3; %endcap volume capacity, in.^3 + leftovervol_lox = vol_lox - 2.*v_endcap; %volume left for cylindrical section + leftovervol_rp1 = vol_rp1; %vol left for rp-1 cylindrical section + %this stays the same since the concave bulkhead in the rp-1 tank eliminates + %any volume gained by the lower convex bulkhead, so the cylindrical section + %is the only part that will be carrying any "equivalent volume" + vcyl_lox = leftovervol_lox; %lox cylinder volume needed to hold remaining propellant + vcyl_rp1 = vol_rp1; %rp-1 cylinder volume needed to hold remaining propellant + + cylheight_lox = vcyl_lox ./ (pi.*a(i).^2 - pi.*d_rp1fill.^2 - 2.*pi.*(d_pressline ./ 2).^2); %computes height of cylinders for each propellant + cylheight_rp1 = vcyl_rp1 ./ (pi.*a(i).^2 - pi.*(d_pressline ./ 2).^2 - pi.*(d_annulus ./ 2).^2); + + overall_height(i) = cylheight_lox + cylheight_rp1 + 2.*(b(i)+tcr); %head height, with cylindrical sections and two end caps + + %% Computes weights of tank segments also based on given equations + %pi.*(outer_diameter.^2 - inner_diameter.^2) .* height .* rho_alum ./ 4 + + %w_endcap = (pi.*a.^2.*tequiv.*Eprime.*rho_alum)./(2.*k); %approx. endcap weight, lbm + w_endcap = 5.83 + 5.86 + 2.47; %taken from SolidWorks to account for weird, unmath-able geometries + %w_cyl_rp1 = 2.*pi.*a.*cylheight_rp1.*tc.*rho_alum;%weight of respective cylindrical sections + w_cyl_rp1 = pi.*(R.^2 - a(i).^2) .* cylheight_rp1 .* rho_alum; + %w_cyl_lox = 2.*pi.*a.*cylheight_lox.*tc.*rho_alum; + w_cyl_lox = pi.*(R.^2 - a(i).^2) .* cylheight_lox .* rho_alum; + %w_rp1fill = 2.*pi.*(0.75./2).*cylheight_lox.*0.125.*rho_alum; + w_rp1fill = pi.*(1.^2 - 0.75.^2) .* cylheight_lox .* rho_alum ./ 4; + %w_helium_rp1 = 2.*pi.*0.125.*cylheight_lox.*0.125.*rho_alum; + w_helium_rp1 = pi.*(0.5.^2 - 0.25.^2) .* cylheight_lox .* rho_alum ./ 4; + %w_helium_full = 2.*pi.*0.125.*(cylheight_lox+cylheight_rp1).*0.125.*rho_alum; + w_helium_full = pi.*(0.5.^2 - 0.25.^2) .* (cylheight_rp1 + cylheight_lox) .* rho_alum ./ 4; + %w_annulus = 2.*pi.*((d_annulus - 0.25)./2).*cylheight_rp1.*0.125.*rho_alum; + w_annulus = pi.*(2.25.^2 - 2.^2) .* cylheight_rp1 .* rho_alum ./ 4; + w_loxpipe = pi.*(1.^2 - 0.75.^2) .* cylheight_rp1 .* rho_alum ./ 4; + w_insulation = pi .* ((2.25+0.2.*2).^2 - 2.25.^2) .* cylheight_rp1 .* 0.0058 ./ 4; %0.0058 = density of aerogel in lb./in3 :) + dry_weight(i) = w_endcap + w_cyl_rp1 + w_cyl_lox + w_rp1fill + w_helium_rp1 + w_helium_full + w_annulus + w_loxpipe; + wet_weight = dry_weight + m_prop; + + + + %% Pressurant Tank Sizing Code + prop_vol = vol_lox + vol_rp1; + prop_press = P; + gamma = 5/3; %ratio of specific heats for Helium + press_temp = 536.67; %pressurant temp in Rankine + R = 10.73159*12^3; %gas constant in imperial units, in3-psi / R-lb-mol + molar_mass = 4.003; + initial_press = 6000; %initial pressure in bottle, psi + final_press = 600; %final pressure at burnout, psi + press_tank_diam = 10.5; %outer diameter of pressurant tank, in + + min_tank_thickness = (3^(1/2)/4)*(initial_press*FoS*(press_tank_diam/2))/S; %computes minimum thickness of the aluminum wall + hoop_stress = 0.5*(((initial_press*FoS*(press_tank_diam / 2))/(2*min_tank_thickness))+(4*(S)^2 - 3*((initial_press*FoS*(press_tank_diam / 2))/(2*min_tank_thickness))^2)^(0.5)); + wrap_thickness = ((initial_press * (press_tank_diam/2) * FoS)-(min_tank_thickness*hoop_stress))/(270000); + press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass; + press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press; + press_tank_height = (press_vol - ((4/3)*pi*((press_tank_diam / 2)-min_tank_thickness-wrap_thickness)^3))/(pi*((press_tank_diam / 2)-min_tank_thickness-wrap_thickness)^2) + press_tank_diam; + %% Fiberglass Vs. Aerogel and Internal Transfer Tube sizing :) + rhoglass = 0.75; + rhoaerogel = 10; + t_ag = 0.2; + t_fg = 0.5; + id_pipe = 0.75; + od_pipe = 1; + t_outerpipe = 0.2; + + %use the aerogel first, my fave + height_wall = vol_rp1 ./ ((pi.*((D-tc-tc)./2).^2)- pi.*((od_pipe./2) + t_ag + t_outerpipe).^2); + + end + mass = dry_weight(flarp); +end + diff --git a/Design/Vehicle-Sizing/tank_sizing_2_23.py b/Design/Vehicle-Sizing/tank_sizing_2_23.py new file mode 100755 index 0000000..64a0b6a --- /dev/null +++ b/Design/Vehicle-Sizing/tank_sizing_2_23.py @@ -0,0 +1,167 @@ +import numpy as np + +# This program is adapted from Huzel and Huang's "Modern Engineering for +# Design of Liquid-Propellant Rocket Engines" and uses the calculations for +# tank dimensions found in Chapter 8 + +## Lists all required constants and values required for math-ing +def getTankMass(pressure, diameter, propMass, hePress): + P = pressure #input tank pressure in psig + + pi = np.pi + D = diameter #tank diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm./in.^3 + rho_lox = 0.04122124 #density of LOx, lbm./in.^3 + rho_rp1 = 0.0292631 #density of RP-1, lbm./in.^3 + k = 2 #ratio of a./b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft./s.^3 + + mix_ratio = 2.23 #fuel mix ratio, for prop mass calcs and volume + m_prop = propMass #propellant mass in lbm--given from prop team + m_rp1 = m_prop / (1+mix_ratio) #computes needed amount of RP-1 based on mixture ratio + m_lox = m_prop - m_rp1 #remaining propellant must be LOx + vol_lox = m_lox / rho_lox #use density of propellants to compute volumes + vol_lox = vol_lox * 1.02 #adds an extra 2# of volume for ullage space + vol_rp1 = m_rp1 / rho_rp1 + vol_rp1 = vol_rp1 * 1.02 #also adds an extra 2# of volume for ullage + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in.^3 + # vol_rp1 = 10579.792 #volume of fuel in in.^3 + d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + d_annulus = 2 #outer diameter of annular lining, in + d_rp1fill = 1 #outer diameter of fill line to rp-1, in + + t_barlows = (P*D)/(2*S/FoS) + + ## Calculates needed tank thickness based on loading characteristics + # Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate + # required cylindrical wall thickness based on loading criteria + + tc_vec = np.arange(0,0.25,0.001) #vector of wall thicknesses for testing + LHS = 4*(Fc*FoS)*(1-v**2) / (E*pi) #the left-hand side of the eqn. on p.293 + + tc = 0 + for i in tc_vec: + RHS = (36*i**3 - i**5) / (6-i)**3 + if RHS <= LHS: + tc = i + + ## test to see whether barlows is a bit more accurate than the other + if t_barlows >= tc: + tc = t_barlows + #tc = t_barlows + ## Uses required cylindrical wall thickness to estimate bulkhead thickness + + a = R - tc #a is the internal radius, or major axis length of ellipse + b = a/2 #minor axis length, or head height--property of 2:1 shape + Eprime = 2*k + (1/np.sqrt(k**2-1))*np.log((k+np.sqrt(k**2-1))/(k-np.sqrt(k**2-1))) + #eprime is the "design factor" described on p. 292, for weight calcs later + #on + + tk = (K*P*a) / (S*ew / FoS) #knuckle thickness, in + tcr = (P*R) / (2*S*ew / FoS) #crown thickness, in + tequiv = (tk + tcr) / 2 #average bulkhead thickness for weight calcs + + ## Redimensions tanks according to volume and wetted area eqns. given in H&H + + v_endcap = (2*pi*a**2*b)/3 #endcap volume capacity, in.^3 + leftovervol_lox = vol_lox - 2*v_endcap #volume left for cylindrical section + leftovervol_rp1 = vol_rp1 #vol left for rp-1 cylindrical section + #this stays the same since the concave bulkhead in the rp-1 tank eliminates + #any volume gained by the lower convex bulkhead, so the cylindrical section + #is the only part that will be carrying any "equivalent volume" + vcyl_lox = leftovervol_lox #lox cylinder volume needed to hold remaining propellant + vcyl_rp1 = vol_rp1 #rp-1 cylinder volume needed to hold remaining propellant + + cylheight_lox = vcyl_lox / (pi*a**2 - pi*d_rp1fill**2 - 2*pi*(d_pressline / 2)**2) #computes height of cylinders for each propellant + cylheight_rp1 = vcyl_rp1 / (pi*a**2 - pi*(d_pressline / 2)**2 - pi*(d_annulus / 2)**2) + + overall_height = cylheight_lox + cylheight_rp1 + 2*(b+tcr) #head height, with cylindrical sections and two end caps + + ## Computes weights of tank segments also based on given equations + #pi.*(outer_diameter.^2 - inner_diameter.^2) .* height .* rho_alum ./ 4 + + #w_endcap = (pi.*a.^2.*tequiv.*Eprime.*rho_alum)./(2.*k) #approx. endcap weight, lbm + w_endcap = 5.82 + 5.29 + 6.81 #taken from SolidWorks to account for weird, unmath-able geometries + #w_cyl_rp1 = 2.*pi.*a.*cylheight_rp1.*tc.*rho_alum #weight of respective cylindrical sections + w_cyl_rp1 = pi*(R**2 - a**2) * cylheight_rp1 * rho_alum + #w_cyl_lox = 2.*pi.*a.*cylheight_lox.*tc.*rho_alum + w_cyl_lox = pi*(R**2 - a**2) * cylheight_lox * rho_alum + #w_rp1fill = 2.*pi.*(0.75./2).*cylheight_lox.*0.125.*rho_alum + w_rp1fill = pi*(1**2 - 0.75**2) * cylheight_lox * rho_alum / 4 + #w_helium_rp1 = 2.*pi.*0.125.*cylheight_lox.*0.125.*rho_alum + w_helium_rp1 = pi*(0.5**2 - 0.25**2) * cylheight_lox * rho_alum / 4 + #w_helium_full = 2.*pi.*0.125.*(cylheight_lox+cylheight_rp1).*0.125.*rho_alum + w_helium_full = pi*(0.5**2 - 0.25**2) * (cylheight_rp1 + cylheight_lox) * rho_alum / 4 + #w_annulus = 2.*pi.*((d_annulus - 0.25)./2).*cylheight_rp1.*0.125.*rho_alum + w_annulus = pi*(2.25**2 - 2**2) * cylheight_rp1 * rho_alum / 4 + w_loxpipe = pi*(1**2 - 0.75**2) * cylheight_rp1 * rho_alum / 4 + w_insulation = pi * ((2.25+0.2*2)**2 - 2.25**2) * cylheight_rp1 * 0.0058 / 4 #0.0058 = density of aerogel in lb./in3 :) + dry_weight = w_endcap + w_cyl_rp1 + w_cyl_lox + w_rp1fill + w_helium_rp1 + w_helium_full + w_annulus + w_loxpipe + wet_weight = dry_weight + m_prop + + + + ## Pressurant Tank Sizing Code + prop_vol = vol_lox + vol_rp1 + prop_press = P + gamma = 5/3 #ratio of specific heats for Helium + press_temp = 536.67 #pressurant temp in Rankine + R = 10.73159*12**3 #gas constant in imperial units, in3-psi / R-lb-mol + molar_mass = 4.003 + initial_press = hePress #initial pressure in bottle, psi + final_press = P #final pressure at burnout, psi + press_tank_diam = 11.198 #outer diameter of pressurant tank, in, based on Ray's SW model + + #min_tank_thickness = + #(3^(1/2)/4)*(initial_press*FoS*(press_tank_diam/2))/S #computes minimum + #thickness of the aluminum wall based on the PPT slides + + min_tank_thickness = 0.86 #also based on Ray's SW model, for a more accurate estimate + hoop_stress = 0.5*(((initial_press*FoS*(press_tank_diam / 2))/(2*min_tank_thickness))+(4*(S)**2 - 3*((initial_press*FoS*(press_tank_diam / 2))/(2*min_tank_thickness))**2)**(0.5)) + #wrap_thickness = ((initial_press * (press_tank_diam/2) * FoS)-(min_tank_thickness*hoop_stress))/(270000) + + wrap_thickness = 0.131 #based on Ray's actual SW model, subject to change + press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass + press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press + press_tank_height = (press_vol - ((4/3)*pi*((press_tank_diam / 2)-min_tank_thickness-wrap_thickness)**3))/(pi*((press_tank_diam / 2)-min_tank_thickness-wrap_thickness)**2) + press_tank_diam + + #estimates for the mass of the carbon fiber wrap + rho_cf = 0.06 #density of carbon fiber (roughly) in in^3 + presstankwallcfvol = (pi*((press_tank_diam)/2)**2 - pi*((press_tank_diam /2) - wrap_thickness)**2) * (press_tank_height - press_tank_diam) + presstankendcapcfvol = (4/3)*pi*(press_tank_diam / 2)**3 - (4/3)*pi*((press_tank_diam/2) - wrap_thickness)**3 + #sizes the approximate volume of carbon fiber material composing the tank walls + m_presstankwallcf = presstankwallcfvol*rho_cf + m_presstankcfendcaps = presstankendcapcfvol*rho_cf + press_tank_cf_mass = m_presstankwallcf + m_presstankcfendcaps + + #estimates for the mass of the aluminum inner liner + presstankwallaluminumvol = (pi*(((press_tank_diam)/2) - wrap_thickness)**2 - pi*((press_tank_diam /2) - wrap_thickness - min_tank_thickness)**2) * (press_tank_height - press_tank_diam) + presstankendcapaluminumvol = (4/3)*pi*((press_tank_diam / 2) - wrap_thickness)**3 - (4/3)*pi*((press_tank_diam/2) - wrap_thickness - min_tank_thickness)**3 + m_presstankwallalum = presstankwallaluminumvol * rho_alum + m_presstankendcapaluminum = presstankendcapaluminumvol * rho_alum + press_tank_alum_mass = m_presstankwallalum + m_presstankendcapaluminum + press_tank_mass = press_tank_cf_mass + press_tank_alum_mass + + ## Fiberglass Vs. Aerogel and Internal Transfer Tube sizing :) + rhoglass = 0.75 + rhoaerogel = 10 + t_ag = 0.2 + t_fg = 0.5 + id_pipe = 0.75 + od_pipe = 1 + t_outerpipe = 0.2 + + #use the aerogel first, my fave + height_wall = vol_rp1 / ((pi*((D-tc-tc)/2)**2)- pi*((od_pipe/2) + t_ag + t_outerpipe)**2) + return (dry_weight,press_mass,press_tank_mass) diff --git a/Design/Vehicle-Sizing/tank_sizing_7_1.py b/Design/Vehicle-Sizing/tank_sizing_7_1.py new file mode 100644 index 0000000..26a8800 --- /dev/null +++ b/Design/Vehicle-Sizing/tank_sizing_7_1.py @@ -0,0 +1,154 @@ +import numpy as np + +# This program is adapted from Huzel and Huang's "Modern Engineering for +# Design of Liquid-Propellant Rocket Engines" and uses the calculations for +# tank dimensions found in Chapter 8 + +def get_wall_mass(pressure,diameter,volume): + P = pressure #input tank pressure in psig + + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + t_barlows = (P*D)/(2*S/FoS) + + ## Calculates needed tank thickness based on loading characteristics + # Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate + # required cylindrical wall thickness based on loading criteria + + tc_vec = np.arange(0,0.25,0.001) #vector of wall thicknesses for testing + LHS = 4*(Fc*FoS)*(1-v**2) / (E*pi) #the left-hand side of the eqn. on p.293 + + tc = 0 + for i in tc_vec: + RHS = (36*i**3 - i**5) / (6-i)**3 + if RHS <= LHS: + tc = i + + ## test to see whether barlows is a bit more accurate than the other + if t_barlows >= tc: + tc = t_barlows + #tc = t_barlows + ## Uses required cylindrical wall thickness to estimate bulkhead thickness + + a = R - tc #a is the internal radius, or major axis length of ellipse + b = a/2 #minor axis length, or head height--property of 2:1 shape + Eprime = 2*k + (1/np.sqrt(k**2-1))*np.log((k+np.sqrt(k**2-1))/(k-np.sqrt(k**2-1))) + #eprime is the "design factor" described on p. 292, for weight calcs later + #on + + tk = (K*P*a) / (S*ew / FoS) #knuckle thickness, in + tcr = (P*R) / (2*S*ew / FoS) #crown thickness, in + tequiv = (tk + tcr) / 2 #average bulkhead thickness for weight calcs + + ## Redimensions tanks according to volume and wetted area eqns. given in H&H + + v_endcap = (2*pi*a**2*b)/3 #endcap volume capacity, in**3 + + leftovervol = volume - 2*v_endcap + + cylheight = leftovervol / (pi * a**2) + w_cyl = cylheight * pi * (R**2 - a**2) * rho_alum + + return w_cyl + + +def getTankMass(rp1Press, loxPress, diameter, propMass, hePress): + ## Lists all required constants and values required for math-ing + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + mix_ratio = 2.23 #fuel mix ratio, for prop mass calcs and volume + m_prop = propMass #propellant mass in lbm--given from prop team + m_rp1 = m_prop / (1+mix_ratio) #computes needed amount of RP-1 based on mixture ratio + m_lox = m_prop - m_rp1 #remaining propellant must be LOx + vol_lox = m_lox / rho_lox#use density of propellants to compute volumes + vol_lox = vol_lox * 1.02 #adds an extra 2# of volume for ullage space + vol_rp1 = m_rp1 / rho_rp1 + vol_rp1 = vol_rp1 * 1.02 #also adds an extra 2# of volume for ullage + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + ## Computes weights of tank segments also based on given equations + #pi*(outer_diameter**2 - inner_diameter**2) * height * rho_alum / 4 + # weight of bulkheads in lbm for calculating--from SolidWorks + loxupper_weight = 5.83 + loxlower_weight = 5.17 + rp1upper_weight = 5.29 + rp1lower_weight = 5.65 + w_endcaps = loxupper_weight + loxlower_weight + rp1upper_weight + rp1lower_weight + + #weight of respective cylindrical sections + w_cyl_rp1 = get_wall_mass(rp1Press,diameter,vol_rp1) + w_cyl_lox = get_wall_mass(loxPress,diameter,vol_lox) + + # all plumbing weights are no longer included + dry_weight = w_endcaps + w_cyl_rp1 + w_cyl_lox + wet_weight = dry_weight + m_prop + + print(w_cyl_lox) + print(w_cyl_rp1) + + ## Pressurant Tank Sizing Code + prop_vol = vol_lox + vol_rp1 + prop_press = rp1Press + gamma = 5/3 #ratio of specific heats for Helium + press_temp = 536.67 #pressurant temp in Rankine + R = 10.73159*(12**3) #gas constant in imperial units, in3-psi / R-lb-mol + molar_mass = 4.003 + initial_press = hePress #initial pressure in bottle, psi + final_press = rp1Press #final pressure at burnout, psi + press_tank_diam = 11 #outer diameter of pressurant tank, in, based on Ray's SW model + + + press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass + press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press + # Pressurant Tank sizing calcs also excluded since they suck + + return (dry_weight,press_mass) \ No newline at end of file diff --git a/Design/Vehicle-Sizing/tank_sizing_8_3.py b/Design/Vehicle-Sizing/tank_sizing_8_3.py new file mode 100644 index 0000000..3e335d7 --- /dev/null +++ b/Design/Vehicle-Sizing/tank_sizing_8_3.py @@ -0,0 +1,152 @@ +import numpy as np + +# This program is adapted from Huzel and Huang's "Modern Engineering for +# Design of Liquid-Propellant Rocket Engines" and uses the calculations for +# tank dimensions found in Chapter 8 + +def get_wall_mass(pressure,diameter,volume): + P = pressure #input tank pressure in psig + + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + t_barlows = (P*D)/(2*S/FoS) + + ## Calculates needed tank thickness based on loading characteristics + # Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate + # required cylindrical wall thickness based on loading criteria + + tc_vec = np.arange(0,0.25,0.001) #vector of wall thicknesses for testing + LHS = 4*(Fc*FoS)*(1-v**2) / (E*pi) #the left-hand side of the eqn. on p.293 + + tc = 0 + for i in tc_vec: + RHS = (36*i**3 - i**5) / (6-i)**3 + if RHS <= LHS: + tc = i + + ## test to see whether barlows is a bit more accurate than the other + if t_barlows >= tc: + tc = t_barlows + #tc = t_barlows + ## Uses required cylindrical wall thickness to estimate bulkhead thickness + + a = R - tc #a is the internal radius, or major axis length of ellipse + b = a/2 #minor axis length, or head height--property of 2:1 shape + Eprime = 2*k + (1/np.sqrt(k**2-1))*np.log((k+np.sqrt(k**2-1))/(k-np.sqrt(k**2-1))) + #eprime is the "design factor" described on p. 292, for weight calcs later + #on + + tk = (K*P*a) / (S*ew / FoS) #knuckle thickness, in + tcr = (P*R) / (2*S*ew / FoS) #crown thickness, in + tequiv = (tk + tcr) / 2 #average bulkhead thickness for weight calcs + + ## Redimensions tanks according to volume and wetted area eqns. given in H&H + + v_endcap = (2*pi*a**2*b)/3 #endcap volume capacity, in**3 + + leftovervol = volume - 2*v_endcap + + cylheight = leftovervol / (pi * a**2) + w_cyl = cylheight * pi * (R**2 - a**2) * rho_alum + + return w_cyl + + +def getTankMass(rp1Press, loxPress, diameter, propMass, hePress): + ## Lists all required constants and values required for math-ing + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + mix_ratio = 2.23 #fuel mix ratio, for prop mass calcs and volume + m_prop = propMass #propellant mass in lbm--given from prop team + m_rp1 = m_prop / (1+mix_ratio) #computes needed amount of RP-1 based on mixture ratio + m_lox = m_prop - m_rp1 #remaining propellant must be LOx + vol_lox = m_lox / rho_lox#use density of propellants to compute volumes + vol_lox = vol_lox * 1.02 #adds an extra 2# of volume for ullage space + vol_rp1 = m_rp1 / rho_rp1 + vol_rp1 = vol_rp1 * 1.02 #also adds an extra 2# of volume for ullage + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + ## Computes weights of tank segments also based on given equations + #pi*(outer_diameter**2 - inner_diameter**2) * height * rho_alum / 4 + # weight of bulkheads in lbm for calculating--from SolidWorks + lox_bulkhead_weights = 11.68 + rp1_bulkhead_weights = 10.94 + w_endcaps = lox_bulkhead_weights + rp1_bulkhead_weights + + #weight of respective cylindrical sections + w_cyl_rp1 = get_wall_mass(rp1Press,diameter,vol_rp1) + w_cyl_lox = get_wall_mass(loxPress,diameter,vol_lox) + + # all plumbing weights are no longer included + dry_weight = w_endcaps + w_cyl_rp1 + w_cyl_lox + wet_weight = dry_weight + m_prop + + print(w_cyl_lox) + print(w_cyl_rp1) + + ## Pressurant Tank Sizing Code + prop_vol = vol_lox + vol_rp1 + prop_press = rp1Press + gamma = 5/3 #ratio of specific heats for Helium + press_temp = 536.67 #pressurant temp in Rankine + R = 10.73159*(12**3) #gas constant in imperial units, in3-psi / R-lb-mol + molar_mass = 4.003 + initial_press = hePress #initial pressure in bottle, psi + final_press = rp1Press #final pressure at burnout, psi + press_tank_diam = 11 #outer diameter of pressurant tank, in, based on Ray's SW model + + + press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass + press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press + # Pressurant Tank sizing calcs also excluded since they suck + + return (dry_weight,press_mass) \ No newline at end of file diff --git a/Design/Vehicle-Sizing/tank_sizing_9_20.py b/Design/Vehicle-Sizing/tank_sizing_9_20.py new file mode 100644 index 0000000..496ef8f --- /dev/null +++ b/Design/Vehicle-Sizing/tank_sizing_9_20.py @@ -0,0 +1,152 @@ +import numpy as np + +# This program is adapted from Huzel and Huang's "Modern Engineering for +# Design of Liquid-Propellant Rocket Engines" and uses the calculations for +# tank dimensions found in Chapter 8 + +def get_wall_mass(pressure,diameter,volume): + P = pressure #input tank pressure in psig + + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + t_barlows = (P*D)/(2*S/FoS) + + ## Calculates needed tank thickness based on loading characteristics + # Algebraic manipulation of eqn. 8-32 on p. 293 required to caclculate + # required cylindrical wall thickness based on loading criteria + + tc_vec = np.arange(0,0.25,0.001) #vector of wall thicknesses for testing + LHS = 4*(Fc*FoS)*(1-v**2) / (E*pi) #the left-hand side of the eqn. on p.293 + + tc = 0 + for i in tc_vec: + RHS = (36*i**3 - i**5) / (6-i)**3 + if RHS <= LHS: + tc = i + + ## test to see whether barlows is a bit more accurate than the other + if t_barlows >= tc: + tc = t_barlows + #tc = t_barlows + ## Uses required cylindrical wall thickness to estimate bulkhead thickness + + a = R - tc #a is the internal radius, or major axis length of ellipse + b = a/2 #minor axis length, or head height--property of 2:1 shape + Eprime = 2*k + (1/np.sqrt(k**2-1))*np.log((k+np.sqrt(k**2-1))/(k-np.sqrt(k**2-1))) + #eprime is the "design factor" described on p. 292, for weight calcs later + #on + + tk = (K*P*a) / (S*ew / FoS) #knuckle thickness, in + tcr = (P*R) / (2*S*ew / FoS) #crown thickness, in + tequiv = (tk + tcr) / 2 #average bulkhead thickness for weight calcs + + ## Redimensions tanks according to volume and wetted area eqns. given in H&H + + v_endcap = (2*pi*a**2*b)/3 #endcap volume capacity, in**3 + + leftovervol = volume - 2*v_endcap + + cylheight = leftovervol / (pi * a**2) + w_cyl = cylheight * pi * (R**2 - a**2) * rho_alum + + return w_cyl, cylheight + + +def getTankMassLen(rp1Press, loxPress, diameter, propMass, hePress): + ## Lists all required constants and values required for math-ing + D = diameter #tank outer diameter in inches + R = D/2 #tank radius, in + S = 40000 #yield strength of 6061-T6 alloy in psi + Sc = 56000 #compressive yield strength of 6061-T6 in psi + FoS = 1.5 #factor of safety + v = 0.33 #Poisson's ratio of 6061-T6 alloy, unitless + ew = 0.85 #approximate efficiency of welded joints + E = 1e7 #6061-T6 modulus of elasticity, psi + rho_alum = 0.0975 #density of aluminum, lbm/in**3 + rho_lox = 0.04122124 #density of LOx, lbm/in**3 + rho_rp1 = 0.0292631 #density of RP-1, lbm/in**3 + k = 2 #ratio of a/b, which should be 2:1 due to the semi-elliptical tank head design + K = 1.2 #obtained from graph on page 292 of H&H book + Fc = 3305 #estimated critical loading on rocket during flight, lbf + g = 32.2 #gravitational acceleration, ft/s**3 + pi = np.pi + + mix_ratio = 2.23 #fuel mix ratio, for prop mass calcs and volume + m_prop = propMass #propellant mass in lbm--given from prop team + m_rp1 = m_prop / (1+mix_ratio) #computes needed amount of RP-1 based on mixture ratio + m_lox = m_prop - m_rp1 #remaining propellant must be LOx + vol_lox = m_lox / rho_lox#use density of propellants to compute volumes + vol_lox = vol_lox * 1.02 #adds an extra 2# of volume for ullage space + vol_rp1 = m_rp1 / rho_rp1 + vol_rp1 = vol_rp1 * 1.02 #also adds an extra 2# of volume for ullage + + #not required unless volume is given instead of mass + # vol_lox = 16748.707 #volume of oxidizer in in**3 + # vol_rp1 = 10579.792 #volume of fuel in in**3 + # d_pressline = 0.5 #outer diameter of pressurant lines through tanks, in + # d_annulus = 2 #outer diameter of annular lining, in + # d_rp1fill = 1 #outer diameter of fill line to rp-1, in + d_pressline = 0 + d_annulus = 0 + d_rp1fill = 0 + #as of new design, all plumbing is external :) + ## Computes weights of tank segments also based on given equations + #pi*(outer_diameter**2 - inner_diameter**2) * height * rho_alum / 4 + # weight of bulkheads in lbm for calculating--from SolidWorks + lox_bulkhead_weights = 11.68 + rp1_bulkhead_weights = 10.94 + w_endcaps = lox_bulkhead_weights + rp1_bulkhead_weights + + #weight of respective cylindrical sections + w_cyl_rp1, len_rp1 = get_wall_mass(rp1Press,diameter,vol_rp1) + w_cyl_lox, len_lox = get_wall_mass(loxPress,diameter,vol_lox) + + # all plumbing weights are no longer included + dry_weight = w_endcaps + w_cyl_rp1 + w_cyl_lox + wet_weight = dry_weight + m_prop + + #print(w_cyl_lox) + #print(w_cyl_rp1) + + ## Pressurant Tank Sizing Code + prop_vol = vol_lox + vol_rp1 + prop_press = rp1Press + gamma = 5/3 #ratio of specific heats for Helium + press_temp = 536.67 #pressurant temp in Rankine + R = 10.73159*(12**3) #gas constant in imperial units, in3-psi / R-lb-mol + molar_mass = 4.003 + initial_press = hePress #initial pressure in bottle, psi + final_press = rp1Press #final pressure at burnout, psi + press_tank_diam = 11 #outer diameter of pressurant tank, in, based on Ray's SW model + + + press_mass = ((prop_press * prop_vol) / (R * press_temp)) * (gamma / (1-(final_press/initial_press))) * molar_mass + press_vol = (press_mass * (1/molar_mass) * R * press_temp) / initial_press + # Pressurant Tank sizing calcs also excluded since they suck + + return dry_weight, press_mass, len_lox, len_rp1 \ No newline at end of file diff --git a/Design/Vehicle-Sizing/tank_test.py b/Design/Vehicle-Sizing/tank_test.py new file mode 100755 index 0000000..6c0d8fa --- /dev/null +++ b/Design/Vehicle-Sizing/tank_test.py @@ -0,0 +1,3 @@ +import tank_sizing_7_1 as tank + +print(tank.getTankMass(700,600,12,1166.27,6000)) \ No newline at end of file diff --git a/Design/Vehicle-Sizing/tankinterface.py b/Design/Vehicle-Sizing/tankinterface.py deleted file mode 100644 index 3758175..0000000 --- a/Design/Vehicle-Sizing/tankinterface.py +++ /dev/null @@ -1,75 +0,0 @@ -import numpy as np -import tanksim - -# Begin importing text file stuff...yay! -file = open('input.txt', 'r') -# this opens the file 'input.txt' from whatever directory the program is -# saved to--make sure to download it or move it to the same directory! - -prop_diam_text = file.readlines(1) # reads first line of the input file -for line in prop_diam_text: - prop_diam_stuff = line.split() # saves split results of first line -diam = float(prop_diam_stuff[1]) # saves proper variables from that array, converted to float - -prop_press_text = file.readlines(2) # continues to read down the input file -for line in prop_press_text: - prop_press_stuff = line.split() -lox_press = float(prop_press_stuff[1]) -rp1_press = lox_press # can be better worked into the code later, but should be the same -''' Quick note here: I'd already written the code such that it would allow for two different -tank pressure inputs before adding the input text file capability, and I really didn't want -to go back and rewrite all my code at the risk of missing a variable somewhere or skewing an -equation. Leaving it like this also makes it a lot easier down the road if we decide we'd like -to keep the two tanks at different pressures for some reason. It also makes it a lot easier to -tell which tanks you're doing calculations for if they have different variable names, rather than -just a generic "tank pressure".''' - -fos_text = file.readlines(3) -for line in fos_text: - fos_stuff = line.split() -fos = float(fos_stuff[1]) - -press_diam_text = file.readlines(4) -for line in press_diam_text: - press_diam_stuff = line.split() -press_tank_diam = float(press_diam_stuff[1]) - -press_ipress_text = file.readlines(5) -for line in press_ipress_text: - press_ipress_stuff = line.split() -initial_press = float(press_ipress_stuff[1]) - -press_fpress_text = file.readlines(6) -for line in press_fpress_text: - press_fpress_stuff = line.split() -final_press = float(press_fpress_stuff[1]) - -file.close() # closes the input file once everything's read in - -testtank = tanksim.tank(diam,lox_press,fos,press_tank_diam,initial_press,final_press,796.618,357.228) -tankSpecs = testtank.tankCalc() -pressSpecs = testtank.pressTankCalc() - -tank_mass = tankSpecs['tank_mass'] -total_height = tankSpecs['total_height'] -lox_height = tankSpecs['lox_height'] -rp1_height = tankSpecs['rp1_height'] - -press_vol = pressSpecs['press_vol'] -press_mass = pressSpecs['press_mass'] -tank_height = pressSpecs['tank_height'] - -print('The propellant tank diameter is ' + str(diam) + ' in') -print('The LOx tank pressure is ' + str(lox_press) + ' psi') -print('The RP-1 tank pressure is ' + str(rp1_press) + ' psi') -print('The total mass is ' + str(round(tank_mass, 3)) + ' lbs') -print('The total tank height is ' + str(round(total_height, 3)) + ' in') -print('The LOx tank is ' + str(round(lox_height, 3)) + ' in high') -print('The RP-1 tank is ' + str(round(rp1_height, 3)) + ' in high') -print(tank_mass * lox_height / total_height) -print(tank_mass * rp1_height / total_height) - -print('The helium tank diameter is ' + str(press_tank_diam) + ' in') -print('The volume of helium needed is ' + str(round(press_vol, 3)) + ' in^3') -print('The mass of helium needed is ' + str(round(press_mass, 3)) + ' lbm') -print('The pressurant tank is ' + str(round(tank_height, 3)) + ' in high') diff --git a/Design/Vehicle-Sizing/tanksim.py b/Design/Vehicle-Sizing/tanksim.py deleted file mode 100644 index 2f139ef..0000000 --- a/Design/Vehicle-Sizing/tanksim.py +++ /dev/null @@ -1,191 +0,0 @@ -import numpy as np - -class tank: - def __init__(self,diam,press,fos,pressDiam,initial_press,final_press,m_lox,m_rp1): - self.pi = np.pi - self.rho_lox = 0.04122124 # density of LOx as given in Vehicle Sizing spreadsheet V1, lbm/in^3 - self.rho_rp1 = 0.0292631 # density of RP-1, MS Vehicle Sizing V1 - self.rho_alum = 0.0975 # density of Aluminum 6061-T6, the likely choice for tanks - self.ys_alum = 40030.488 # yield strength of 6061-T6 - self.diam = diam - self.lox_press = press - self.rp1_press = press - self.fos = fos - self.press_tank_diam = pressDiam - self.initial_press = initial_press - self.final_press = final_press - self.k = 0.725158 # Roundness factor for 2:1 elliptical heads, as given by [insert link here] - self.Ef = 0.85 # joint efficiency of any welded joints, might change or not be used - self.m_lox = m_lox - self.m_rp1 = m_rp1 - self.tubediam = 0.83 # OD for transfer tube, in (for subtracting volume) - self.lox_rectangle_len = 1.322 - self.rp1_rectangle_len = 1.048 - self.gamma = 5 / 3; # the ratio of specific heats for the gas equations - self.press_temp = 536.67 # gives temperature of pressurant in *R - self.gasConst = 10.73159*12**3 # gas constant in imperial, in^3-psi / *R-lbmol - self.molar_mass = 4.003 # also for gas equations, lbm/lbmol - self.vol_mounting_lox = 2.35 - self.vol_mounting_rp1 = 1.64 - self.vh_com_lox = (((self.diam / 2) - 0.5)**3 * 0.5 * (self.pi/24) * 2) - self.vol_mounting_lox - self.vh_com_rp1 = (((self.diam / 2) - 0.5)**3 * 0.5 * (self.pi/24) * 2) - self.vol_mounting_rp1 - - def volume(self,mass,density): - return mass/density - - def tankThickness(self,pressure,diameter,ys,fos): - return (pressure * diameter) / (2 * ys / fos) - - def headThickness(self,pressure,diameter,k,Ef,ys,fos): - return (pressure * diameter * k) / ((2 * Ef * ys / fos) - (0.2 * pressure)) - - def mountRectangleVolume(self,rectangleLen): - indVol = 0.5**2 * rectangleLen - totVol = indVol * 6 - return totVol - - def headInnerVolume(self,diameter,headThickness,rectangleLen): - totalVolume = (diameter - (2 * headThickness))**3 * 0.5 * (self.pi / 24) * 2 - return totalVolume - self.mountRectangleVolume(rectangleLen) - - def LOxTankWallHeight(self,loxVolume,diameter,headVolume,tankThickness): - return (loxVolume - (headVolume + self.vh_com_lox)) / (self.pi * ((diameter - 2 * tankThickness)/2)**2) - - def RP1TankWallHeight(self,rp1Volume,diameter,tankThickness): - return (rp1Volume) / (self.pi * (((diameter - (2 * tankThickness))/2)**2 - (self.tubediam / 2)**2)) - - def LOxTankVolume(self,headVolume,diameter,tankThickness,wallHeight): - return (self.vh_com_lox + headVolume) + (self.pi * ((diameter - (2 * tankThickness))/2)**2 * wallHeight) - - def RP1TankVolume(self,diameter,tankThickness,wallHeight): - return (self.pi * ((diameter - (2 * tankThickness))/2)**2 * wallHeight) - - def intHeadHeight(self,diameter,headThickness): - return (diameter - 2 * headThickness) / 4 - - def extHeadHeight(self,intHeadHeight,headThickness): - return intHeadHeight + headThickness - - def loxTankHeight(self,extHeadHeight,wallHeight): - return 2 * extHeadHeight + wallHeight - - def rp1TankHeight(self,extHeadHeight,wallHeight): - return extHeadHeight + wallHeight - - def totalTankHeight(self,rp1ExtHeadHeight,loxExtHeadHeight,rp1TankWallHeight,loxTankWallHeight): - return rp1ExtHeadHeight + loxExtHeadHeight + rp1TankWallHeight + loxTankWallHeight - - def CADSpecs(self,diameter,rp1TankThickness,loxTankThickness): - id_lox = diameter - 2 * loxTankThickness # inside diameter of the tanks, in - id_rp1 = diameter - 2 * rp1TankThickness - KRi_lox = 0.17 * id_lox # knuckle radii and crown radii of ellipses, inside and out, in - CRi_lox = 0.9 * id_lox - KRo_lox = 0.17 * diameter - CRo_lox = 0.9 * diameter - KRi_rp1 = 0.17 * id_rp1 - CRi_rp1 = 0.9 * id_rp1 - KRo_rp1 = 0.17 * diameter - CRo_rp1 = 0.9 * diameter - return {'id_lox': id_lox, - 'id_rp1': id_rp1, - 'KRi_lox': KRi_lox, - 'CRi_lox': CRi_lox, - 'KRo_lox': KRo_lox, - 'CRo_lox': CRo_lox, - 'KRi_rp1': KRi_rp1, - 'CRi_rp1': CRi_rp1, - 'KRo_rp1': KRo_rp1, - 'CRo_rp1': CRo_rp1} - - def headMetalVolume(self,diameter,headInnerVolume): - return ((diameter**3) * 0.5 * (self.pi / 24) * 2) - headInnerVolume - - def wallMetalVolume(self,diameter,wallHeight,wallThickness): - return (self.pi * (diameter / 2)**2 * wallHeight) - (self.pi * (((diameter - 2 * wallThickness)/2)**2) * wallHeight) - - def commonBulkheadVolume(self,diameter): - return ((((diameter / 2) - 0.5)**3 * 0.5 * (self.pi / 24) * 2) * 2) + self.vol_mounting_rp1 + self.vol_mounting_lox - - def totalMetalVolume(self,loxHeadMetalVolume,rp1HeadMetalVolume,loxWallMetalVolume,rp1WallMetalVolume,commonBulkheadMetal): - return loxHeadMetalVolume + rp1HeadMetalVolume + loxWallMetalVolume + rp1WallMetalVolume + commonBulkheadMetal - - def totalPropVol(self, loxMass, rp1Mass, loxDen, rp1Den): - return self.volume(loxMass,loxDen) + self.volume(rp1Mass,rp1Den) - - def pressMass(self,propPress,propVol,finalPress,initialPress): - return ((propPress * propVol) / (self.gasConst * self.press_temp)) * (self.gamma / (1-(finalPress/initialPress))) * self.molar_mass - - def pressVol(self,pressMass,initialPress): - return (pressMass * (1/self.molar_mass) * self.gasConst * self.press_temp) / initialPress - - def pressTankHeight(self,pressVol,pressTankDiam): - return ((pressVol - (4/3) * self.pi * (pressTankDiam / 2)**3) / (self.pi * (pressTankDiam / 2)**2)) + pressTankDiam - - def pressTankCalc(self): - prop_vol = self.totalPropVol(self.m_lox,self.m_rp1,self.rho_lox,self.rho_rp1) - press_mass = self.pressMass(self.lox_press,prop_vol,self.final_press,self.initial_press) - press_vol = self.pressVol(press_mass,self.initial_press) - tank_height = self.pressTankHeight(press_vol,self.press_tank_diam) - return {'press_mass': press_mass, - 'press_vol': press_vol, - 'tank_height': tank_height} - - def tankCalc(self): - vol_lox = self.volume(self.m_lox,self.rho_lox) - vol_rp1 = self.volume(self.m_rp1,self.rho_rp1) - t_lox = self.tankThickness(self.lox_press,self.diam,self.ys_alum,self.fos) - t_rp1 = self.tankThickness(self.rp1_press,self.diam,self.ys_alum,self.fos) - th_lox = self.headThickness(self.lox_press,self.diam,self.k,self.Ef,self.ys_alum,self.fos) - th_rp1 = self.headThickness(self.rp1_press,self.diam,self.k,self.Ef,self.ys_alum,self.fos) - vh_lox = self.headInnerVolume(self.diam,th_lox,self.lox_rectangle_len) - vh_rp1 = self.headInnerVolume(self.diam,th_rp1,self.rp1_rectangle_len) - sh_lox = self.LOxTankWallHeight(vol_lox,self.diam,vh_lox,t_lox) - sh_rp1 = self.RP1TankWallHeight(vol_rp1,self.diam,t_rp1) - vol_loxtank = self.LOxTankVolume(vh_lox,self.diam,t_lox,sh_lox) - vol_rp1tank = self.RP1TankVolume(self.diam,t_rp1,sh_rp1) - hi_lox = self.intHeadHeight(self.diam,th_lox) - ho_lox = self.extHeadHeight(hi_lox,th_lox) - hi_rp1 = self.intHeadHeight(self.diam,th_rp1) - ho_rp1 = self.extHeadHeight(hi_rp1,th_rp1) - lox_height = self.loxTankHeight(ho_lox,sh_lox) - rp1_height = self.rp1TankHeight(ho_rp1,sh_rp1) - total_height = self.totalTankHeight(ho_rp1,ho_lox,sh_rp1,sh_lox) - CAD_specs = self.CADSpecs(self.diam,t_rp1,t_lox) - loxheadmetal = self.headMetalVolume(self.diam,vh_lox) - rp1headmetal = self.headMetalVolume(self.diam,vh_rp1) - metalwalllox = self.wallMetalVolume(self.diam,sh_lox,t_lox) - metalwallrp1 = self.wallMetalVolume(self.diam,sh_rp1,t_rp1) - lox_total_rect_volume = self.mountRectangleVolume(self.lox_rectangle_len) - rp1_total_rect_volume = self.mountRectangleVolume(self.rp1_rectangle_len) - commonBulkheadMetal = self.commonBulkheadVolume(self.diam) - metalvolume = self.totalMetalVolume(loxheadmetal,rp1headmetal,metalwalllox,metalwallrp1,commonBulkheadMetal) - tank_mass = metalvolume * self.rho_alum - return {'vol_lox': vol_lox, - 'vol_rp1': vol_rp1, - 't_lox': t_lox, - 't_rp1': t_rp1, - 'th_lox': th_lox, - 'th_rp1': th_rp1, - 'vh_lox': vh_lox, - 'vh_rp1': vh_rp1, - 'sh_lox': sh_lox, - 'sh_rp1': sh_rp1, - 'vol_loxtank': vol_loxtank, - 'vol_rp1tank': vol_rp1tank, - 'hi_lox': hi_lox, - 'ho_lox': ho_lox, - 'hi_rp1': hi_rp1, - 'ho_rp1': ho_rp1, - 'lox_height': lox_height, - 'rp1_height': rp1_height, - 'total_height': total_height, - 'CAD_specs': CAD_specs, - 'loxheadmetal': loxheadmetal, - 'rp1headmetal': rp1headmetal, - 'metalwalllox': metalwalllox, - 'metalwallrp1': metalwallrp1, - 'lox_total_rect_volume': lox_total_rect_volume, - 'rp1_total_rect_volume': rp1_total_rect_volume, - 'commonBulkheadMetal': commonBulkheadMetal, - 'metalvolume': metalvolume, - 'tank_mass': tank_mass} diff --git a/Design/Vehicle-Sizing/variable_thrust.py b/Design/Vehicle-Sizing/variable_thrust.py new file mode 100644 index 0000000..6707cb1 --- /dev/null +++ b/Design/Vehicle-Sizing/variable_thrust.py @@ -0,0 +1,161 @@ +import numpy as np + +def natural_cubic_spline(xi, yi, xtarget): + np.testing.assert_approx_equal(len(xi), len(yi), err_msg='lengths are not equal') + diff = (xi[j+1] - xi[j] for j in range(len(xi) - 1)) + for i in diff: + if i <= 0: + raise Exception('x values are not ordered') + + n = len(xi) + M = np.zeros(n) + rhs = np.zeros(n,1) + hi = diff + for i in range(1,n-1): + M[i,i-1] = hi[i-1] + M[i,i] = 2*(hi[i-1]+hi[i]) + M[i,i+1] = hi[i] + rhs[i] = 3*(((yi[i+1] -yi[i])/(xi[i+1] - xi[i])) - ((yi[i] - yi[i-1])/(xi[i] - xi[i-1]))) + + M[1,1] = 1 + M[1,2] = 0 + M[n,n] = 1 + M[n,n-1] = 0 + rhs[1] = 0 + rhs[n] = 0 + + a = np.zeros(n-1) + b = np.zeros(n-1) + d = np.zeros(n-1) + C = np.linalg.solve(M,rhs) + for i in range(n-1): + a[i] = yi[i] + d[i] = (c[i+1] - c[i])/(3*hi[i]) + b[i] = (yi[i+1] - yi[i]) / (hi[i]) - (c[i+1]+2*c[i])*hi[i]/3 + + + slist = [] + for i in range(n-1): + f = lambda x : a[i] + b[i]*(x - xi[i]) + c[i]*(x - xi[i])**2 + d*(x - xi[i])**3 + slist.append(f) + S = np.array(slist) + + for i in range(n-1): + if xtarget >= xi[i] and xtarget <= xi[i+1]: + ytarget = S[i](xtarget) + if xtarget > xi[-1]: + ytarget = S[i](xi[-1]) + return ytarget + +def Thrust_Chamber_Design(Thrust,Impulse): + Pc = 650 # psi + Pc_atm = Pc/14.6959 + P_Launch = 0.849 # atm + Pe = .5*P_Launch # atm ("Summerfield Criterion") + P_amb = P_Exit # atm + Burn_Time = Impulse/Thrust # sec + + dPe = [34, 33, 34, 33, 33, 33, 34, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33] + hPe = [1, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 33, 34, 35, 36, 37, 38, 39, 39, + 40, 41, 42, 43, 43, 44, 45, 45, 46, 47, 47] + + Rmin = 2.20 # O/F lowest value of mixture ratio + P = Pc_atm - 25 # atm atm of pressure ofer 25 atm + dPc_R = 25/49 # atm/pixel x-axis increments + n_pix_Pc_R = P//dPc_R # pixels # of pixels past 25 atm on x-axis + if n_pix_Pc_R < 1: + n_pix_Pc_R = 1 + dR = .45/341 # units/pixel y-axis increments + n_dPe = dPe[n_pix_Pc_R - 1] # pixels dPe for desired chamber pressure + n_pix_Pe = n_dPe*(1-1/.9*(Pe-.1)) + Mixture_Ratio = Rmin + dR*(n_pix_Pe + hPe[n_pix_Pc_R - 1]) + + dRT = [30, 30, 30, 30, 30, 30, 31, 31, 32, 32, 32, 32, # number of pixels between Ratio curves (2.2 and 2.3) + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, + 34, 35, 35, 35, 36, 35, 36, 36, 35, 36, 36, 36] + + hRT = [10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, # number of pixels between Tmin and bottom curve + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 32, + 33, 34, 35, 35, 36, 37, 37, 38, 39, 40, 40, 41, + 42, 42, 43, 44, 44, 45, 45, 46, 47, 47, 48, 48] + + Tmin = 3350 # K lowest value of temperature + dPc_T = 25/48 # atm/pixel x-axis increments + n_pix_Pc_T = P//dPc_T # pixels # of pixels past 25 atm on x-axis + if n_pix_Pc_T < 1: + n_pix_Pc_T = 1 + dT = 600/341 # K/pixel y-axis increments + n_dRT = dRT[n_pix_Pc_T] # pixels dRT for desired chamber pressure + n_pix_RT = n_dRT/.1*(R-2.2) # pixels # of pixels above bottom curve + + T_Chamber = Tmin + dT*(n_pix_RT + hRT[n_pix_Pc_T]) # Kelvin + + dRM = [74, 74, 74, 74, 74, 75, 75, 74, 75, 75, 75, 75, # number of pixels between Ratio curves (2.2 and 2.3) + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, + 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77] + + hRM = [32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 38, 39, # # of pixels between Mmin and bottom curve + 40, 40, 41, 41, 42, 43, 43, 44, 44, 45, 45, 46, + 46, 47, 47, 47, 48, 48, 49, 49, 49, 50, 50, 50, + 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54] + + Mmin = 20.8 # amu lowest value of weight + dPc_M = 25/48 # atm/pixel x-axis increments + n_pix_Pc_M = P//dPc_M # pixels # of pixels past 25 atm on x-axis + if n_pix_Pc_M < 1: + n_pix_Pc_M = 1 + dM = 2/341 # amu/pixel y-axis increments + n_dRM = dRM[n_pix_Pc_M] # pixels dRT for desired chamber pressure + n_pix_RM = n_dRM/.1*(R-2.2) # pixels # of pixels above bottom curve + + Gas_Molecular_Weight = Mmin + dM*(n_pix_RM + hRM[n_pix_Pc_M]) # amu + + dRy = [46, 46.5, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, # number of pixels between Ratio curves (2.2 and 2.3) + 47, 47, 47, 47, 47.5, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48.5, 48.5, 48, 48.5, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49] + + hRy = [58, 56.5, 55, 54, 53, 52, 50.5, 49, 48, 47, 46, 45.5, # number of pixels between ymin and bottom curve + 45, 44, 43, 42, 41, 40, 39, 38, 37, 36.5, 36, 35, + 34, 33, 32, 31.5, 31, 30, 29, 28, 27.5, 27, 26, 25.5, + 25, 24, 23.5, 23, 22.5, 22, 21, 20.5, 20, 19.5, 19] + + ymin = 1.219 # amu lowest value of specific heat ratio + dPc_y = 25/47 # atm/pixel x-axis increments + n_pix_Pc_y = P//dPc_y # pixels # of pixels past 25 atm on x-axis + if n_pix_Pc_y < 1: + n_pix_Pc_y = 1 + + dy = .021/341 # amu/pixel y-axis increments + n_dRy = dRy[n_pix_Pc_y] # pixels dRy for desired chamber pressure + n_pix_Ry = n_dRy*(1-1/.1*(R-2.2)) # pixels # of pixels above bottom curve + + y = ymin + dy*(n_pix_Ry + hRy[n_pix_Pc_y]) # Cp/Cv + + g = 32.1740*12 # in/s^2 + R = 1545.348963*12 # in-lbf/lb-mol-R + FS = 1.75 # Safety Factor + Stress = 115000 # psi High temperature yield stress of inconel walling (http://www.specialmetals.com/assets/smc/documents/inconel_alloy_718.pdf) + L_star = 45 # in + + P_Chamber = P_Chamber_psi/14.6959 # atm + T_Chamber_R = 1.8*T_Chamber # Rankine + + lamda = .983 + e = ( ((2/(y+1))**(1/(y-1))) * (P_Chamber/P_Exit)**(1/y) ) / np.sqrt(((y+1)/(y-1)) * (1-(P_Exit/P_Chamber)**((y-1)/y)) ) + C_star = lamda*np.sqrt( g*y*R*T_Chamber_R/Gas_Molecular_Weight )/( y*np.sqrt( (2/(y+1))**((y+1)/(y-1)) ) ) + Cf = lamda*(np.sqrt( ((2*y**2)/(y-1)) * ((2/(y+1))**((y+1)/(y-1))) * (1-(P_Exit/P_Chamber)**((y-1)/y) )) + E*((P_Exit-P_amb)/P_Chamber)) + Isp = lamda*C_star*Cf/g + M = Thrust/Isp; # lbs/s + M_RP1 = M/(1+Mixture_Ratio); # lbs/s + M_LOX = M - M_RP1; # lbs/s + + Propellant_Mass = M*Burn_Time # lbs + LOx_Mass = M_LOX*Burn_Time # lbs + RP1_Mass = M_RP1*Burn_Time # lbs \ No newline at end of file diff --git a/README.md b/README.md old mode 100644 new mode 100755