diff --git a/_posts/2021-04-01-air-propulsion-simulation/AeroTech_F10.csv b/_posts/2021-04-01-air-propulsion-simulation/AeroTech_F10.csv new file mode 100644 index 0000000..6a7d982 --- /dev/null +++ b/_posts/2021-04-01-air-propulsion-simulation/AeroTech_F10.csv @@ -0,0 +1,28 @@ +"Time (s)","Thrust (N)" +0.01,16.81 +0.03,22.34 +0.11,22.23 +0.26,21.49 +0.37,20 +0.47,20.21 +0.67,18.09 +0.99,15.74 +1.31,13.4 +1.81,10.85 +2.49,10.21 +3.13,8.94 +3.6,8.83 +4.11,8.62 +4.95,8.62 +5.45,8.62 +5.58,8.51 +5.88,8.72 +6.22,8.51 +6.46,8.51 +6.6,7.77 +6.71,7.02 +6.79,5.64 +6.91,3.83 +6.95,2.23 +7,0.96 +7.05,0 diff --git a/_posts/2021-04-01-air-propulsion-simulation/AeroTech_G8ST.csv b/_posts/2021-04-01-air-propulsion-simulation/AeroTech_G8ST.csv new file mode 100644 index 0000000..a1d00b0 --- /dev/null +++ b/_posts/2021-04-01-air-propulsion-simulation/AeroTech_G8ST.csv @@ -0,0 +1,22 @@ +"Time (s)","Thrust (N)" +0.024,0.3704 +0.066,0.8746 +0.138,4.5044 +0.246,6.6207 +0.426,6.7351 +1.218,7.3232 +2.082,7.423 +3.306,7.183 +5.322,6.8385 +6.978,6.7193 +8.632,6.5512 +10.144,6.4792 +12.088,6.4254 +15.472,6.3333 +17.632,6.1305 +19.108,6.0385 +19.511,5.9607 +19.804,4.4295 +19.867,1.6687 +19.937,0.3341 +19.964,0 diff --git a/_posts/2021-04-01-air-propulsion-simulation/Estes_F15.csv b/_posts/2021-04-01-air-propulsion-simulation/Estes_F15.csv new file mode 100644 index 0000000..d20085b --- /dev/null +++ b/_posts/2021-04-01-air-propulsion-simulation/Estes_F15.csv @@ -0,0 +1,28 @@ +"Time (s)","Thrust (N)" +0,0 +0.148,7.638 +0.228,12.253 +0.294,16.391 +0.353,20.21 +0.382,22.756 +0.419,25.26 +0.477,23.074 +0.52,20.845 +0.593,19.093 +0.688,17.5 +0.855,16.225 +1.037,15.427 +1.205,14.948 +1.423,14.627 +1.452,15.741 +1.503,14.785 +1.736,14.623 +1.955,14.303 +2.21,14.141 +2.494,13.819 +2.763,13.338 +3.12,13.334 +3.382,13.013 +3.404,9.352 +3.418,4.895 +3.45,0 diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html index d2960dd..3b75e2c 100644 --- a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html +++ b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html @@ -88,7 +88,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ Air Propulsion Simulation - + @@ -99,26 +99,25 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ - + - + - @@ -1457,7 +1456,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ @@ -1474,7 +1473,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
Capstone
-

Simulating the performace of an air propulsion system as an alternative to solid rocket motors.

+

Simulating the performance of an air propulsion system as an alternative to solid rocket motors.

@@ -1484,7 +1483,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
-

Boilerplate intro about why all of this was done

+

For my team was tasked with designing a system capable of moving mining equipment and materials around the surface of the Moon using a propolsive landing. The system had to be tested on earth with something that was feasible for our team to build in 2 semesters. One of the first considerations my capstone advisor wanted was to test the feasibility of an air propulsion system instead of the obvious solution that of using solid rocket motors. This document is really just napkin math to determine if the system is even feasibly and is not mean’t to be a rigorous study of an air propulsion system which would easily keep a capstone team busy by itself.

@@ -1497,69 +1496,305 @@ Show code using Unitful using DataFrames using Measurements -using Measurements: value, uncertainty
+using Measurements: value, uncertainty +using CSV
-

This code is just the setup, using values scraped from various parts of the world wide web.

+

An off the shelf paintball gun tank was used for the pressure vessel. This was chosen because they are very high pressure for their weight, and are designed to be bumped around.

# Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/
 V = (85 ± 5)u"inch^3"
 P0 = (4200.0 ± 300)u"psi"
 Wtank = (2.3 ± 0.2)u"lb"
-Pmax = (250 ± 50)u"psi" # Max Pressure that can come out the nozzle
-
-Wsolenoid = 1.5u"kg"
-
-# Params
-d_nozzle = ((1 // 18) ± 0.001)u"inch"
-a_nozzle = (pi / 4) * d_nozzle^2
-
-# Universal Stuff
-P_amb = (1 ± 0.2)u"atm"
-γ = 1.4 ± 0.05
-R = 287.05u"J/(kg * K)"
-T = (300 ± 20)u"K"
+Pmax = (250 ± 50)u"psi" # Max Pressure that can come out the nozzle
+ +

The nozzle diameter was changed until the air prop system had a burn time similar to a G18ST rocket motor.

+
+
# Params
+d_nozzle = ((1 // 18) ± 0.001)u"inch"
+a_nozzle = (pi / 4) * d_nozzle^2
+
+

These are just universal values for what a normal day would look like in Arizona. (Çengel and Boles 2015)

+
+
# Universal Stuff
+P_amb = (1 ± 0.2)u"atm"
+γ = 1.4 ± 0.05
+R = 287.05u"J/(kg * K)"
+T = (300 ± 20)u"K"

This is the actual simulation. Maybe throw some references in and explain some equations.

-

The rocket equation is pretty sick:

-

\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \] And thats about all you need to get to the moon(Curtis 2020).

+

The following equations also came from (Çengel and Boles 2015)

+

The rocket equation is pretty sick(Sutton and Biblarz 2001, eq: 2-14):

+

\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \] And thats about all you need to get to the Moon(Curtis 2020).

-
let
-t = 0.0u"s"
-P = P0 |> u"Pa"
-M = V * (P / (R * T)) |> u"kg"
-ts = 1u"ms"
-global df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
-  while M > 0.005u"kg"
-      # while t < 30u"s"
-      # Calculate what is leaving tank
-      P = minimum([P, Pmax])
-      ve = sqrt((2 * γ /- 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s"
-      ρ = P / (R * T) |> u"kg/m^3"
-= ρ * a_nozzle * ve |> u"kg/s"
-  
-      Thrust =* ve + a_nozzle * (P - P_amb) |> u"N"
-  
-      # Calculate what is still in the tank
-      M = M -* ts |> u"kg"
-      P = (M * R * T) / V |> u"Pa"
-      t = t + ts
-  
-      df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)
-      append!(df, df_step)
-  end
-end
+
df = let
+t = 0.0u"s"
+P = P0 |> u"Pa"
+M = V * (P / (R * T)) |> u"kg"
+ts = 1u"ms"
+df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
+  while M > 0.005u"kg"
+      # while t < 30u"s"
+      # Calculate what is leaving tank
+      P = minimum([P, Pmax])
+      ve = sqrt((2 * γ /- 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s"
+      ρ = P / (R * T) |> u"kg/m^3"
+= ρ * a_nozzle * ve |> u"kg/s"
+  
+      Thrust =* ve + a_nozzle * (P - P_amb) |> u"N"
+  
+      # Calculate what is still in the tank
+      M = M -* ts |> u"kg"
+      P = (M * R * T) / V |> u"Pa"
+      t = t + ts
+  
+      df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)
+      append!(df, df_step)
+  end
+  df
+end
+
+

breakdown of the data

+
+" + + + + + + + + + + + + + + + + + + + + + + + + +

+4 rows × 7 columns +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +variable + +mean + +min + +median + +max + +nmissing + +eltype +
+ +Symbol + +Quantity + +Quantity + +Quantity + +Quantity + +Int64 + +DataType +
+1 + +Thrust + +20.0±2.0 N + +0.0±0.0 N + +21.1±4.7 N + +21.1±4.7 N + +0 + +Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}} +
+2 + +Pressure + +2020.0±520.0 psi + +40.0±160.0 psi + +2010.0±570.0 psi + +4200.0±300.0 psi + +0 + +Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(psi,), 𝐌 𝐋^-1 𝐓^-2, nothing}} +
+3 + +Time + +10.1515 s + +0.0 s + +10.1515 s + +20.303 s + +0 + +Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}} +
+4 + +Mass + +0.225±0.066 kg + +0.005±0.018 kg + +0.224±0.071 kg + +0.468±0.053 kg + +0 + +Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}} +
+

"

Heres the results plotted. Notice the massive error once the tank starts running low.

-
-

+
+
+ +Show code + +

+thrust_values = df.Thrust .|> ustrip .|> value;
+thrust_uncertainties = df.Thrust .|> ustrip .|> uncertainty;
+
+air = DataFrame(Thrust=thrust_values, Uncertainty=thrust_uncertainties, Time=df.Time .|> u"s" .|> ustrip);
+
+
+plot(df.Time .|> ustrip, thrust_values, 
+    title="Thrust Over Time", 
+    ribbon=(thrust_uncertainties, thrust_uncertainties), 
+    fillalpha=.2,label="Thrust",
+    xlabel="Time (s)", 
+    ylabel="Thrust (N)",
+    size = (1200, 800),
+    )
+
+
+Air Proplsion Simulation +

+Figure 1: Air Proplsion Simulation +

+
+
+

Here the air prop is plotted along with rocket motors that are being

+
+
+ +Show code + +

+f10 = CSV.read("AeroTech_F10.csv", DataFrame);
+f15 = CSV.read("Estes_F15.csv", DataFrame);
+g8 = CSV.read("AeroTech_G8ST.csv", DataFrame);
+
+
+plot(air.Time, air.Thrust, label="Air Propulsion", fillalpha=.1, legend=:topleft, size = (1200, 800));
+
+for (d, l) in [(f10, "F10"), (f15, "F15"), (g8, "G8ST")]
+    plot!(d[!,"Time (s)"], d[!, "Thrust (N)"], label=l);
+end
+
+title!("Propulsion Comparison");
+xlabel!("Time (s)");
+ylabel!("Thrust (N)")
+
+
+Rocket Motor Data: [@thrustcurve] +

+Figure 2: Rocket Motor Data: (Coker, n.d.) +

+

Big conclusion about things.

-
+
+
+Coker, John. n.d. “Rocket Motor Data.” https://www.thrustcurve.org/. +
Curtis, Howard D. 2020. Orbital Mechanics for Engineering Students. Fourth edition. Butterworth-Heinemann Publications.
+
+Çengel, Yunus A., and Michael A. Boles. 2015. Thermodynamics: An Engineering Approach. Eighth edition. New York: McGraw-Hill Education. +
+
+Sutton, George P., and Oscar Biblarz. 2001. Rocket Propulsion Elements. 7th ed. New York: John Wiley & Sons. +
diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png index e1a88e9..10b477c 100644 Binary files a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png new file mode 100644 index 0000000..495f6cf Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png new file mode 100644 index 0000000..58f4416 Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png new file mode 100644 index 0000000..3dafc53 Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png new file mode 100644 index 0000000..6628cc1 Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png new file mode 100644 index 0000000..26d4ed9 Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png new file mode 100644 index 0000000..495f6cf Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png differ diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png new file mode 100644 index 0000000..d261f7e Binary files /dev/null and b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png differ diff --git a/docs/index.html b/docs/index.html index 57f815f..c522033 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,2302 +1,2300 @@ - - - - - - - - - - - - - - - - - - - - Anson's Projects - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- - -
-

Anson’s Projects

- - - -
- - -
-
- - -
- -
-
- - - - - -
- - - - - - - + + + + + + + + + + + + + + + + + + + + Anson's Projects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+

Anson’s Projects

+ + + +
+ + +
+
+ + +
+ +
+
+ + + + + +
+ + + + + + + diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png index e1a88e9..10b477c 100644 Binary files a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png new file mode 100644 index 0000000..495f6cf Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J1.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png new file mode 100644 index 0000000..58f4416 Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J2.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png new file mode 100644 index 0000000..3dafc53 Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J3.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png new file mode 100644 index 0000000..6628cc1 Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-J4.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png new file mode 100644 index 0000000..26d4ed9 Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png new file mode 100644 index 0000000..495f6cf Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png new file mode 100644 index 0000000..d261f7e Binary files /dev/null and b/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png differ diff --git a/docs/posts/2021-04-01-air-propulsion-simulation/index.html b/docs/posts/2021-04-01-air-propulsion-simulation/index.html index 19fac70..bc9c5d6 100644 --- a/docs/posts/2021-04-01-air-propulsion-simulation/index.html +++ b/docs/posts/2021-04-01-air-propulsion-simulation/index.html @@ -88,7 +88,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ Anson's Projects: Air Propulsion Simulation - + @@ -99,27 +99,26 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ - + - + - @@ -2064,7 +2063,7 @@ document.addEventListener('DOMContentLoaded', function() { @@ -2095,7 +2094,7 @@ document.addEventListener('DOMContentLoaded', function() { Capstone
-

Simulating the performace of an air propulsion system as an alternative to solid rocket motors.

+

Simulating the performance of an air propulsion system as an alternative to solid rocket motors.

@@ -2105,7 +2104,7 @@ document.addEventListener('DOMContentLoaded', function() {
-

Boilerplate intro about why all of this was done

+

For my team was tasked with designing a system capable of moving mining equipment and materials around the surface of the Moon using a propolsive landing. The system had to be tested on earth with something that was feasible for our team to build in 2 semesters. One of the first considerations my capstone advisor wanted was to test the feasibility of an air propulsion system instead of the obvious solution that of using solid rocket motors. This document is really just napkin math to determine if the system is even feasibly and is not mean’t to be a rigorous study of an air propulsion system which would easily keep a capstone team busy by itself.

@@ -2118,69 +2117,305 @@ Show code using Unitful using DataFrames using Measurements -using Measurements: value, uncertainty
+using Measurements: value, uncertainty +using CSV
-

This code is just the setup, using values scraped from various parts of the world wide web.

+

An off the shelf paintball gun tank was used for the pressure vessel. This was chosen because they are very high pressure for their weight, and are designed to be bumped around.

# Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/
 V = (85 ± 5)u"inch^3"
 P0 = (4200.0 ± 300)u"psi"
 Wtank = (2.3 ± 0.2)u"lb"
-Pmax = (250 ± 50)u"psi" # Max Pressure that can come out the nozzle
-
-Wsolenoid = 1.5u"kg"
-
-# Params
-d_nozzle = ((1 // 18) ± 0.001)u"inch"
-a_nozzle = (pi / 4) * d_nozzle^2
-
-# Universal Stuff
-P_amb = (1 ± 0.2)u"atm"
-γ = 1.4 ± 0.05
-R = 287.05u"J/(kg * K)"
-T = (300 ± 20)u"K"
+Pmax = (250 ± 50)u"psi" # Max Pressure that can come out the nozzle
+ +

The nozzle diameter was changed until the air prop system had a burn time similar to a G18ST rocket motor.

+
+
# Params
+d_nozzle = ((1 // 18) ± 0.001)u"inch"
+a_nozzle = (pi / 4) * d_nozzle^2
+
+

These are just universal values for what a normal day would look like in Arizona. (Çengel and Boles 2015)

+
+
# Universal Stuff
+P_amb = (1 ± 0.2)u"atm"
+γ = 1.4 ± 0.05
+R = 287.05u"J/(kg * K)"
+T = (300 ± 20)u"K"

This is the actual simulation. Maybe throw some references in and explain some equations.

-

The rocket equation is pretty sick:

-

\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \] And thats about all you need to get to the moon(Curtis 2020).

+

The following equations also came from (Çengel and Boles 2015)

+

The rocket equation is pretty sick(Sutton and Biblarz 2001, eq: 2-14):

+

\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \] And thats about all you need to get to the Moon(Curtis 2020).

-
let
-t = 0.0u"s"
-P = P0 |> u"Pa"
-M = V * (P / (R * T)) |> u"kg"
-ts = 1u"ms"
-global df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
-  while M > 0.005u"kg"
-      # while t < 30u"s"
-      # Calculate what is leaving tank
-      P = minimum([P, Pmax])
-      ve = sqrt((2 * γ /- 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s"
-      ρ = P / (R * T) |> u"kg/m^3"
-= ρ * a_nozzle * ve |> u"kg/s"
-  
-      Thrust =* ve + a_nozzle * (P - P_amb) |> u"N"
-  
-      # Calculate what is still in the tank
-      M = M -* ts |> u"kg"
-      P = (M * R * T) / V |> u"Pa"
-      t = t + ts
-  
-      df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)
-      append!(df, df_step)
-  end
-end
+
df = let
+t = 0.0u"s"
+P = P0 |> u"Pa"
+M = V * (P / (R * T)) |> u"kg"
+ts = 1u"ms"
+df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
+  while M > 0.005u"kg"
+      # while t < 30u"s"
+      # Calculate what is leaving tank
+      P = minimum([P, Pmax])
+      ve = sqrt((2 * γ /- 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s"
+      ρ = P / (R * T) |> u"kg/m^3"
+= ρ * a_nozzle * ve |> u"kg/s"
+  
+      Thrust =* ve + a_nozzle * (P - P_amb) |> u"N"
+  
+      # Calculate what is still in the tank
+      M = M -* ts |> u"kg"
+      P = (M * R * T) / V |> u"Pa"
+      t = t + ts
+  
+      df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)
+      append!(df, df_step)
+  end
+  df
+end
+
+

breakdown of the data

+
+" + + + + + + + + + + + + + + + + + + + + + + + + +

+4 rows × 7 columns +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +variable + +mean + +min + +median + +max + +nmissing + +eltype +
+ +Symbol + +Quantity + +Quantity + +Quantity + +Quantity + +Int64 + +DataType +
+1 + +Thrust + +20.0±2.0 N + +0.0±0.0 N + +21.1±4.7 N + +21.1±4.7 N + +0 + +Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}} +
+2 + +Pressure + +2020.0±520.0 psi + +40.0±160.0 psi + +2010.0±570.0 psi + +4200.0±300.0 psi + +0 + +Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(psi,), 𝐌 𝐋^-1 𝐓^-2, nothing}} +
+3 + +Time + +10.1515 s + +0.0 s + +10.1515 s + +20.303 s + +0 + +Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}} +
+4 + +Mass + +0.225±0.066 kg + +0.005±0.018 kg + +0.224±0.071 kg + +0.468±0.053 kg + +0 + +Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}} +
+

"

Heres the results plotted. Notice the massive error once the tank starts running low.

-
-

+
+
+ +Show code + +

+thrust_values = df.Thrust .|> ustrip .|> value;
+thrust_uncertainties = df.Thrust .|> ustrip .|> uncertainty;
+
+air = DataFrame(Thrust=thrust_values, Uncertainty=thrust_uncertainties, Time=df.Time .|> u"s" .|> ustrip);
+
+
+plot(df.Time .|> ustrip, thrust_values, 
+    title="Thrust Over Time", 
+    ribbon=(thrust_uncertainties, thrust_uncertainties), 
+    fillalpha=.2,label="Thrust",
+    xlabel="Time (s)", 
+    ylabel="Thrust (N)",
+    size = (1200, 800),
+    )
+
+
+Air Proplsion Simulation +

+Figure 1: Air Proplsion Simulation +

+
+
+

Here the air prop is plotted along with rocket motors that are being

+
+
+ +Show code + +

+f10 = CSV.read("AeroTech_F10.csv", DataFrame);
+f15 = CSV.read("Estes_F15.csv", DataFrame);
+g8 = CSV.read("AeroTech_G8ST.csv", DataFrame);
+
+
+plot(air.Time, air.Thrust, label="Air Propulsion", fillalpha=.1, legend=:topleft, size = (1200, 800));
+
+for (d, l) in [(f10, "F10"), (f15, "F15"), (g8, "G8ST")]
+    plot!(d[!,"Time (s)"], d[!, "Thrust (N)"], label=l);
+end
+
+title!("Propulsion Comparison");
+xlabel!("Time (s)");
+ylabel!("Thrust (N)")
+
+
+Rocket Motor Data: [@thrustcurve] +

+Figure 2: Rocket Motor Data: (Coker, n.d.) +

+

Big conclusion about things.

-
+
+
+Coker, John. n.d. “Rocket Motor Data.” https://www.thrustcurve.org/. +
Curtis, Howard D. 2020. Orbital Mechanics for Engineering Students. Fourth edition. Butterworth-Heinemann Publications.
+
+Çengel, Yunus A., and Michael A. Boles. 2015. Thermodynamics: An Engineering Approach. Eighth edition. New York: McGraw-Hill Education. +
+
+Sutton, George P., and Oscar Biblarz. 2001. Rocket Propulsion Elements. 7th ed. New York: John Wiley & Sons. +
diff --git a/docs/posts/posts.json b/docs/posts/posts.json index 7a86955..b8d9ad6 100644 --- a/docs/posts/posts.json +++ b/docs/posts/posts.json @@ -2,7 +2,7 @@ { "path": "posts/2021-04-01-air-propulsion-simulation/", "title": "Air Propulsion Simulation", - "description": "Simulating the performace of an air propulsion system as an alternative to solid rocket motors.", + "description": "Simulating the performance of an air propulsion system as an alternative to solid rocket motors.", "author": [ { "name": "Anson Biggs", @@ -14,10 +14,10 @@ "Julia", "Capstone" ], - "contents": "\nBoilerplate intro about why all of this was done\n\n\nShow code\nusing Plots\nplotly()\ntheme(:ggplot2); # In true R spirit\n\nusing Unitful\nusing DataFrames\nusing Measurements\nusing Measurements: value, uncertainty\n\nThis code is just the setup, using values scraped from various parts of the world wide web.\n\n# Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/\nV = (85 ± 5)u\"inch^3\"\nP0 = (4200.0 ± 300)u\"psi\"\nWtank = (2.3 ± 0.2)u\"lb\"\nPmax = (250 ± 50)u\"psi\" # Max Pressure that can come out the nozzle\n\nWsolenoid = 1.5u\"kg\"\n\n# Params\nd_nozzle = ((1 // 18) ± 0.001)u\"inch\"\na_nozzle = (pi / 4) * d_nozzle^2\n\n# Universal Stuff\nP_amb = (1 ± 0.2)u\"atm\"\nγ = 1.4 ± 0.05\nR = 287.05u\"J/(kg * K)\"\nT = (300 ± 20)u\"K\"\n\nThis is the actual simulation. Maybe throw some references in and explain some equations.\nThe rocket equation is pretty sick:\n\\[T = \\dot{m} \\cdot v_\\text{Exit} + A_\\text{Nozzle} \\cdot (P - P_\\text{Ambient}) \\] And thats about all you need to get to the moon(Curtis 2020).\n\nlet\nt = 0.0u\"s\"\nP = P0 |> u\"Pa\"\nM = V * (P / (R * T)) |> u\"kg\"\nts = 1u\"ms\"\nglobal df = DataFrame(Thrust=(0 ± 0)u\"N\", Pressure=P0, Time=0.0u\"s\", Mass=M)\n while M > 0.005u\"kg\"\n # while t < 30u\"s\"\n # Calculate what is leaving tank\n P = minimum([P, Pmax])\n ve = sqrt((2 * γ / (γ - 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u\"m/s\"\n ρ = P / (R * T) |> u\"kg/m^3\"\n ṁ = ρ * a_nozzle * ve |> u\"kg/s\"\n \n Thrust = ṁ * ve + a_nozzle * (P - P_amb) |> u\"N\"\n \n # Calculate what is still in the tank\n M = M - ṁ * ts |> u\"kg\"\n P = (M * R * T) / V |> u\"Pa\"\n t = t + ts\n \n df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)\n append!(df, df_step)\n end\nend\n\nHeres the results plotted. Notice the massive error once the tank starts running low.\n\n\n\nBig conclusion about things.\n\n\n\nCurtis, Howard D. 2020. Orbital Mechanics for Engineering Students. Fourth edition. Butterworth-Heinemann Publications.\n\n\n\n\n", - "preview": "posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png", - "last_modified": "2021-04-01T23:23:11-07:00", - "input_file": {} + "contents": "\r\nFor my team was tasked with designing a system capable of moving mining equipment and materials around the surface of the Moon using a propolsive landing. The system had to be tested on earth with something that was feasible for our team to build in 2 semesters. One of the first considerations my capstone advisor wanted was to test the feasibility of an air propulsion system instead of the obvious solution that of using solid rocket motors. This document is really just napkin math to determine if the system is even feasibly and is not mean’t to be a rigorous study of an air propulsion system which would easily keep a capstone team busy by itself.\r\n\r\n\r\nShow code\r\nusing Plots\r\nplotly()\r\ntheme(:ggplot2); # In true R spirit\r\n\r\nusing Unitful\r\nusing DataFrames\r\nusing Measurements\r\nusing Measurements: value, uncertainty\r\nusing CSV\r\n\r\nAn off the shelf paintball gun tank was used for the pressure vessel. This was chosen because they are very high pressure for their weight, and are designed to be bumped around.\r\n\r\n# Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/\r\nV = (85 ± 5)u\"inch^3\"\r\nP0 = (4200.0 ± 300)u\"psi\"\r\nWtank = (2.3 ± 0.2)u\"lb\"\r\nPmax = (250 ± 50)u\"psi\" # Max Pressure that can come out the nozzle\r\n\r\nThe nozzle diameter was changed until the air prop system had a burn time similar to a G18ST rocket motor.\r\n\r\n# Params\r\nd_nozzle = ((1 // 18) ± 0.001)u\"inch\"\r\na_nozzle = (pi / 4) * d_nozzle^2\r\n\r\nThese are just universal values for what a normal day would look like in Arizona. (Çengel and Boles 2015)\r\n\r\n# Universal Stuff\r\nP_amb = (1 ± 0.2)u\"atm\"\r\nγ = 1.4 ± 0.05\r\nR = 287.05u\"J/(kg * K)\"\r\nT = (300 ± 20)u\"K\"\r\n\r\nThis is the actual simulation. Maybe throw some references in and explain some equations.\r\nThe following equations also came from (Çengel and Boles 2015)\r\nThe rocket equation is pretty sick(Sutton and Biblarz 2001, eq: 2-14):\r\n\\[T = \\dot{m} \\cdot v_\\text{Exit} + A_\\text{Nozzle} \\cdot (P - P_\\text{Ambient}) \\] And thats about all you need to get to the Moon(Curtis 2020).\r\n\r\ndf = let\r\nt = 0.0u\"s\"\r\nP = P0 |> u\"Pa\"\r\nM = V * (P / (R * T)) |> u\"kg\"\r\nts = 1u\"ms\"\r\ndf = DataFrame(Thrust=(0 ± 0)u\"N\", Pressure=P0, Time=0.0u\"s\", Mass=M)\r\n while M > 0.005u\"kg\"\r\n # while t < 30u\"s\"\r\n # Calculate what is leaving tank\r\n P = minimum([P, Pmax])\r\n ve = sqrt((2 * γ / (γ - 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u\"m/s\"\r\n ρ = P / (R * T) |> u\"kg/m^3\"\r\n ṁ = ρ * a_nozzle * ve |> u\"kg/s\"\r\n \r\n Thrust = ṁ * ve + a_nozzle * (P - P_amb) |> u\"N\"\r\n \r\n # Calculate what is still in the tank\r\n M = M - ṁ * ts |> u\"kg\"\r\n P = (M * R * T) / V |> u\"Pa\"\r\n t = t + ts\r\n \r\n df_step = DataFrame(Thrust=Thrust, Pressure=P, Time=t, Mass=M)\r\n append!(df, df_step)\r\n end\r\n df\r\nend\r\n\r\nbreakdown of the data\r\n\r\n\"\r\n\r\n\r\n\r\nvariable\r\n\r\n\r\nmean\r\n\r\n\r\nmin\r\n\r\n\r\nmedian\r\n\r\n\r\nmax\r\n\r\n\r\nnmissing\r\n\r\n\r\neltype\r\n\r\n\r\n\r\n\r\nSymbol\r\n\r\n\r\nQuantity\r\n\r\n\r\nQuantity\r\n\r\n\r\nQuantity\r\n\r\n\r\nQuantity\r\n\r\n\r\nInt64\r\n\r\n\r\nDataType\r\n\r\n\r\n4 rows × 7 columns\r\n\r\n\r\n1\r\n\r\n\r\nThrust\r\n\r\n\r\n20.0±2.0 N\r\n\r\n\r\n0.0±0.0 N\r\n\r\n\r\n21.1±4.7 N\r\n\r\n\r\n21.1±4.7 N\r\n\r\n\r\n0\r\n\r\n\r\nQuantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}}\r\n\r\n\r\n2\r\n\r\n\r\nPressure\r\n\r\n\r\n2020.0±520.0 psi\r\n\r\n\r\n40.0±160.0 psi\r\n\r\n\r\n2010.0±570.0 psi\r\n\r\n\r\n4200.0±300.0 psi\r\n\r\n\r\n0\r\n\r\n\r\nQuantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(psi,), 𝐌 𝐋^-1 𝐓^-2, nothing}}\r\n\r\n\r\n3\r\n\r\n\r\nTime\r\n\r\n\r\n10.1515 s\r\n\r\n\r\n0.0 s\r\n\r\n\r\n10.1515 s\r\n\r\n\r\n20.303 s\r\n\r\n\r\n0\r\n\r\n\r\nQuantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}}\r\n\r\n\r\n4\r\n\r\n\r\nMass\r\n\r\n\r\n0.225±0.066 kg\r\n\r\n\r\n0.005±0.018 kg\r\n\r\n\r\n0.224±0.071 kg\r\n\r\n\r\n0.468±0.053 kg\r\n\r\n\r\n0\r\n\r\n\r\nQuantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}}\r\n\r\n\"\r\n\r\nHeres the results plotted. Notice the massive error once the tank starts running low.\r\n\r\n\r\nShow code\r\n\r\nthrust_values = df.Thrust .|> ustrip .|> value;\r\nthrust_uncertainties = df.Thrust .|> ustrip .|> uncertainty;\r\n\r\nair = DataFrame(Thrust=thrust_values, Uncertainty=thrust_uncertainties, Time=df.Time .|> u\"s\" .|> ustrip);\r\n\r\n\r\nplot(df.Time .|> ustrip, thrust_values, \r\n title=\"Thrust Over Time\", \r\n ribbon=(thrust_uncertainties, thrust_uncertainties), \r\n fillalpha=.2,label=\"Thrust\",\r\n xlabel=\"Time (s)\", \r\n ylabel=\"Thrust (N)\",\r\n size = (1200, 800),\r\n )\r\n\r\n\r\nFigure 1: Air Proplsion Simulation\r\n\r\n\r\n\r\nHere the air prop is plotted along with rocket motors that are being\r\n\r\n\r\nShow code\r\n\r\nf10 = CSV.read(\"AeroTech_F10.csv\", DataFrame);\r\nf15 = CSV.read(\"Estes_F15.csv\", DataFrame);\r\ng8 = CSV.read(\"AeroTech_G8ST.csv\", DataFrame);\r\n\r\n\r\nplot(air.Time, air.Thrust, label=\"Air Propulsion\", fillalpha=.1, legend=:topleft, size = (1200, 800));\r\n\r\nfor (d, l) in [(f10, \"F10\"), (f15, \"F15\"), (g8, \"G8ST\")]\r\n plot!(d[!,\"Time (s)\"], d[!, \"Thrust (N)\"], label=l);\r\nend\r\n\r\ntitle!(\"Propulsion Comparison\");\r\nxlabel!(\"Time (s)\");\r\nylabel!(\"Thrust (N)\")\r\n\r\n\r\nFigure 2: Rocket Motor Data: (Coker, n.d.)\r\n\r\n\r\n\r\nBig conclusion about things.\r\n\r\n\r\n\r\nCoker, John. n.d. “Rocket Motor Data.” https://www.thrustcurve.org/.\r\n\r\n\r\nCurtis, Howard D. 2020. Orbital Mechanics for Engineering Students. Fourth edition. Butterworth-Heinemann Publications.\r\n\r\n\r\nÇengel, Yunus A., and Michael A. Boles. 2015. Thermodynamics: An Engineering Approach. Eighth edition. New York: McGraw-Hill Education.\r\n\r\n\r\nSutton, George P., and Oscar Biblarz. 2001. Rocket Propulsion Elements. 7th ed. New York: John Wiley & Sons.\r\n\r\n\r\n\r\n\r\n", + "preview": {}, + "last_modified": "2021-04-03T16:52:20-07:00", + "input_file": "air-propulsion-simulation.utf8.md" }, { "path": "posts/welcome/",