From f8cc74c614d5089a3fb9b1e08ca1c338c5e5046f Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 22 Mar 2021 06:34:02 -0700 Subject: [PATCH] updated values to match tradestudy --- ThrustCurve.png | Bin 21247 -> 15200 bytes readme.md | 9 +++++++-- thrust.jl | 19 ++++++++++++------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ThrustCurve.png b/ThrustCurve.png index ac42fec2315f3b2fb828c800f8843c6d3371fb4a..f004877799b22eb89273a833dee1cc3905f25fed 100644 GIT binary patch literal 15200 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 aX!~A#D4>1D{TB)_;)$djDqlk1_kRHO#Ighc literal 21247 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%0D5C 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 |VZq9YYOZ^Es3D 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 diff --git a/readme.md b/readme.md index 9531269..6ae3d7c 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,13 @@ # Air Prop Thrust -Total Impulse: 405.0 ± 39.0 N s + +Total Impulse: 405.0 ± 40.0 N s + +Burn TIme: 16.041999999996623 s ![Thrust Over Time](ThrustCurve.png) More Data: -

4 rows × 7 columns

variablemeanminmedianmaxnmissingeltype
SymbolQuantityQuantityQuantityQuantityInt64DataType
1Thrust69.0±6.7 N0.0±0.0 N86.7±9.2 N86.7±9.2 N0Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}}
2Pressure1.21e7±2.0e6 Pa620000.0±440000.0 Pa1.12e7±2.8e6 Pa2.9e7±2.1e6 Pa0Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(Pa,), 𝐌 𝐋^-1 𝐓^-2, nothing}}
3Time2.9325 s0.0 s2.9325 s5.865 s0Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}}
4Mass0.196±0.043 kg0.01±0.0077 kg0.181±0.054 kg0.468±0.053 kg0Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}}
+

4 rows × 7 columns

variablemeanminmedianmaxnmissingeltype
SymbolQuantityQuantityQuantityQuantityInt64DataType
1Thrust25.3±2.5 N0.0±0.0 N26.7±5.9 N26.7±5.9 N0Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}}
2Pressure1.39e7±3.6e6 Pa300000.0±1.1e6 Pa1.38e7±3.9e6 Pa2.9e7±2.1e6 Pa0Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(Pa,), 𝐌 𝐋^-1 𝐓^-2, nothing}}
3Time8.021 s0.0 s8.021 s16.042 s0Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}}
4Mass0.225±0.065 kg0.005±0.018 kg0.224±0.071 kg0.468±0.053 kg0Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}}
+ +`readme auto generated` diff --git a/thrust.jl b/thrust.jl index 6e5e423..7668d59 100644 --- a/thrust.jl +++ b/thrust.jl @@ -2,7 +2,6 @@ using Unitful using DataFrames using Plots using UnitfulRecipes -using Roots using CSV using Measurements using Printf @@ -12,14 +11,13 @@ using Printf V = (85 ± 5)u"inch^3" P0 = (4200.0 ± 300)u"psi" Wtank = (2.3 ± 0.2)u"lb" -Pmax = (800 ± 50)u"psi" +Pmax = (250 ± 50)u"psi" # Max Pressure that can come out the nozzle Wsolenoid = 1.5u"kg" # Params d_nozzle = ((1 // 16) ± 0.001)u"inch" a_nozzle = (pi / 4) * d_nozzle^2 -Poutmax = (800 ± 50)u"psi" # Universal Stuff P_amb = (1 ± 0.2)u"atm" @@ -34,7 +32,7 @@ M = V * (P / (R * T)) |> u"kg" ts = 1u"ms" df = DataFrame(Thrust = (0 ± 0)u"N", Pressure = P, Time = t, Mass = M) -while M > 0.01u"kg" +while M > 0.005u"kg" # while t < 30u"s" # Calculate what is leaving tank P = minimum([P, Pmax]) @@ -52,7 +50,7 @@ while M > 0.01u"kg" df_step = DataFrame(Thrust = Thrust, Pressure = P, Time = t, Mass = M) append!(df, df_step) end - +final_time = t |> u"s" impulse = sum(df.Thrust) * ts |> u"N*s" println("---------------------------\n\n\n\n") println("Total Impulse: ", impulse) @@ -63,7 +61,7 @@ println("Mass Total: ", Wtank + Wsolenoid + maximum(df.Mass)) print(describe(df)) -plot(df.Time[1:150:end], df.Thrust[1:150:end], title = "Thrust Over Time") +plot(df.Time[1:350:end], df.Thrust[1:350:end], title = "Thrust Over Time") ### Save data to readme.md @@ -77,13 +75,20 @@ table = String(take!(b)); # https://stackoverflow.com/a/60443621/8774114 readme = Printf.@sprintf """ # Air Prop Thrust + Total Impulse: %s +Burn TIme: %s + ![Thrust Over Time](ThrustCurve.png) More Data: %s -""" impulse table + +`readme auto generated` +""" impulse final_time table + +println(readme) write("readme.md", readme) \ No newline at end of file