1
0
mirror of https://gitlab.com/Anson-Projects/projects.git synced 2025-06-16 15:06:53 +00:00

more writeup

This commit is contained in:
Anson 2021-04-04 14:08:36 -07:00
parent 7a9d970a49
commit 02dcebcaec
9 changed files with 74 additions and 419 deletions

View File

@ -38,6 +38,9 @@ using Measurements: value, uncertainty
using CSV using CSV
``` ```
## The Simulation
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. 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.
```{julia} ```{julia}
@ -66,14 +69,14 @@ R = 287.05u"J/(kg * K)"
T = (300 ± 20)u"K" T = (300 ± 20)u"K"
``` ```
This is the actual simulation. Maybe throw some references in and explain some equations. The actual simulation is actually quite simple. The basic idea is that using the current pressure you can calculate $\dot{m}$, which allows calculating the Thrust, and then you can just subtract the current mass of air in the tank by $\dot{m}$ and recalculate pressure using the new mass then repeat the whole process.
The following equations also came from [@cengel_thermodynamics]
The rocket equation is pretty sick[@sutton_rocket_2001, eq: 2-14]: The bulk of the equations in the simulation came from [@cengel_thermodynamics], while the Thrust and $v_e$ equations came from [@sutton_rocket_2001, eq: 2-14].
$$T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) $$ $$ 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_orbital].
The initial pressure difference is `r julia_eval("P0 - P_amb |> u\"psi\"")` which is absolutely massive so the area of the nozzle greatly affects the simulation. The paintball tanks do come with pressure regulators, in our case 800 psi which is still a very large number compared to atmospheric pressure. While the total impulse of the system doesn't really change with different nozzle areas the peak thrust and _burn time_ vary greatly. One of the benefits of doing air propulsion, and the reason it was even considered so seriously, is that it should be possible to vary the nozzle diameter in flight which would make controlled landing much easier.
```{julia} ```{julia}
df = let df = let
@ -83,7 +86,6 @@ M = V * (P / (R * T)) |> u"kg"
ts = 1u"ms" ts = 1u"ms"
df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M) df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
while M > 0.005u"kg" while M > 0.005u"kg"
# while t < 30u"s"
# Calculate what is leaving tank # Calculate what is leaving tank
P = minimum([P, Pmax]) P = minimum([P, Pmax])
ve = sqrt((2 * γ / (γ - 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s" ve = sqrt((2 * γ / (γ - 1)) * R * T * (1 - P_amb / P)^((γ - 1) / γ)) |> u"m/s"
@ -104,17 +106,10 @@ df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M)
end end
``` ```
breakdown of the data ## Analysis
```{julia, layout="l-body", echo=FALSE, results='asis'}
b = IOBuffer();
t = TextDisplay(b);
display(t, "text/html", describe(df));
table = String(take!(b)); # https://stackoverflow.com/a/60443621/8774114
```
Heres the results plotted. Notice the massive error once the tank starts running low. Heres the results plotted. Notice the massive error once the tank starts running low. This is because the calculation for pressure has a lot of variables that are very uncertain. This is mostly due to air being a compressible fluid which is what makes this simulation so difficult to do accurately. The thrust being below 0 N might not make intuitive sense, but its technically possible for the pressure to compress which would leave the inside of the rocket nozzle with a pressure thats actually below atmospheric pressure. The effect would likely last a fraction of a second but the point stands that this simulation is very inaccurate and only meant to get an idea of what an air propulsion system is capable of.
```{julia, code_folding=TRUE, results='show',layout="l-body-outset", fig.cap = "Air Proplsion Simulation"} ```{julia, code_folding=TRUE, results='show',layout="l-body-outset", fig.cap = "Air Proplsion Simulation"}
@ -135,7 +130,7 @@ plot(df.Time .|> ustrip, thrust_values,
``` ```
Here the air prop is plotted along with rocket motors that are being In Figure 2, the air propulsion simulation is compared to commercially available rocket motors. This early in the project we have no idea whether short burns or longer burns are ideal for a propulsive landing so the air propulsion system was compared to a variety of different motors.
```{julia, code_folding=TRUE, results='show',layout="l-body-outset",fig.cap= "Rocket Motor Data: [@thrustcurve]"} ```{julia, code_folding=TRUE, results='show',layout="l-body-outset",fig.cap= "Rocket Motor Data: [@thrustcurve]"}

View File

@ -1500,6 +1500,7 @@ Show code
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> CSV</span></code></pre></div> <span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> CSV</span></code></pre></div>
</details> </details>
</div> </div>
<h2 id="the-simulation">The Simulation</h2>
<p>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.</p> <p>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.</p>
<div class="layout-chunk" data-layout="l-body"> <div class="layout-chunk" data-layout="l-body">
<div class="sourceCode" id="cb2"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/</span></span> <div class="sourceCode" id="cb2"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/</span></span>
@ -1522,10 +1523,10 @@ Show code
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>R <span class="op">=</span> <span class="fl">287.05</span>u<span class="st">&quot;J/(kg * K)&quot;</span></span> <span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>R <span class="op">=</span> <span class="fl">287.05</span>u<span class="st">&quot;J/(kg * K)&quot;</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>T <span class="op">=</span> (<span class="fl">300</span> ± <span class="fl">20</span>)u<span class="st">&quot;K&quot;</span></span></code></pre></div> <span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>T <span class="op">=</span> (<span class="fl">300</span> ± <span class="fl">20</span>)u<span class="st">&quot;K&quot;</span></span></code></pre></div>
</div> </div>
<p>This is the actual simulation. Maybe throw some references in and explain some equations.</p> <p>The actual simulation is actually quite simple. The basic idea is that using the current pressure you can calculate <span class="math inline">\(\dot{m}\)</span>, which allows calculating the Thrust, and then you can just subtract the current mass of air in the tank by <span class="math inline">\(\dot{m}\)</span> and recalculate pressure using the new mass then repeat the whole process.</p>
<p>The following equations also came from <span class="citation" data-cites="cengel_thermodynamics">(<a href="#ref-cengel_thermodynamics" role="doc-biblioref">Çengel and Boles 2015</a>)</span></p> <p>The bulk of the equations in the simulation came from <span class="citation" data-cites="cengel_thermodynamics">(<a href="#ref-cengel_thermodynamics" role="doc-biblioref">Çengel and Boles 2015</a>)</span>, while the Thrust and <span class="math inline">\(v_e\)</span> equations came from <span class="citation" data-cites="sutton_rocket_2001">(<a href="#ref-sutton_rocket_2001" role="doc-biblioref">Sutton and Biblarz 2001</a>, eq: 2-14)</span>.</p>
<p>The rocket equation is pretty sick<span class="citation" data-cites="sutton_rocket_2001">(<a href="#ref-sutton_rocket_2001" role="doc-biblioref">Sutton and Biblarz 2001</a>, eq: 2-14)</span>:</p> <p><span class="math display">\[ T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \]</span></p>
<p><span class="math display">\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \]</span> And thats about all you need to get to the Moon<span class="citation" data-cites="curtis_orbital">(<a href="#ref-curtis_orbital" role="doc-biblioref">Curtis 2020</a>)</span>.</p> <p>The initial pressure difference is 4190.0 ± 300.0 psi which is absolutely massive so the area of the nozzle greatly affects the simulation. The paintball tanks do come with pressure regulators, in our case 800 psi which is still a very large number compared to atmospheric pressure. While the total impulse of the system doesnt really change with different nozzle areas the peak thrust and <em>burn time</em> vary greatly. One of the benefits of doing air propulsion, and the reason it was even considered so seriously, is that it should be possible to vary the nozzle diameter in flight which would make controlled landing much easier.</p>
<div class="layout-chunk" data-layout="l-body"> <div class="layout-chunk" data-layout="l-body">
<div class="sourceCode" id="cb5"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> <span class="kw">let</span></span> <div class="sourceCode" id="cb5"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> <span class="kw">let</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span></span> <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span></span>
@ -1534,195 +1535,27 @@ Show code
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a>ts <span class="op">=</span> <span class="fl">1</span>u<span class="st">&quot;ms&quot;</span></span> <span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a>ts <span class="op">=</span> <span class="fl">1</span>u<span class="st">&quot;ms&quot;</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>(<span class="fl">0</span> ± <span class="fl">0</span>)u<span class="st">&quot;N&quot;</span><span class="op">,</span> Pressure<span class="op">=</span>P0<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span><span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span><span class="op">,</span> Mass<span class="op">=</span>M)</span> <span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>(<span class="fl">0</span> ± <span class="fl">0</span>)u<span class="st">&quot;N&quot;</span><span class="op">,</span> Pressure<span class="op">=</span>P0<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span><span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span><span class="op">,</span> Mass<span class="op">=</span>M)</span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">while</span> M <span class="op">&gt;</span> <span class="fl">0.005</span>u<span class="st">&quot;kg&quot;</span></span> <span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">while</span> M <span class="op">&gt;</span> <span class="fl">0.005</span>u<span class="st">&quot;kg&quot;</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># while t &lt; 30u&quot;s&quot;</span></span> <span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is leaving tank</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is leaving tank</span></span> <span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> minimum([P<span class="op">,</span> Pmax])</span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> minimum([P<span class="op">,</span> Pmax])</span> <span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> ve <span class="op">=</span> sqrt((<span class="fl">2</span> <span class="op">*</span> γ <span class="op">/</span> (γ <span class="op">-</span> <span class="fl">1</span>)) <span class="op">*</span> R <span class="op">*</span> T <span class="op">*</span> (<span class="fl">1</span> <span class="op">-</span> P_amb <span class="op">/</span> P)<span class="op">^</span>((γ <span class="op">-</span> <span class="fl">1</span>) <span class="op">/</span> γ)) <span class="op">|&gt;</span> u<span class="st">&quot;m/s&quot;</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a> ve <span class="op">=</span> sqrt((<span class="fl">2</span> <span class="op">*</span> γ <span class="op">/</span> (γ <span class="op">-</span> <span class="fl">1</span>)) <span class="op">*</span> R <span class="op">*</span> T <span class="op">*</span> (<span class="fl">1</span> <span class="op">-</span> P_amb <span class="op">/</span> P)<span class="op">^</span>((γ <span class="op">-</span> <span class="fl">1</span>) <span class="op">/</span> γ)) <span class="op">|&gt;</span> u<span class="st">&quot;m/s&quot;</span></span> <span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a> ρ <span class="op">=</span> P <span class="op">/</span> (R <span class="op">*</span> T) <span class="op">|&gt;</span> u<span class="st">&quot;kg/m^3&quot;</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a> ρ <span class="op">=</span> P <span class="op">/</span> (R <span class="op">*</span> T) <span class="op">|&gt;</span> u<span class="st">&quot;kg/m^3&quot;</span></span> <span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a><span class="op">=</span> ρ <span class="op">*</span> a_nozzle <span class="op">*</span> ve <span class="op">|&gt;</span> u<span class="st">&quot;kg/s&quot;</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a><span class="op">=</span> ρ <span class="op">*</span> a_nozzle <span class="op">*</span> ve <span class="op">|&gt;</span> u<span class="st">&quot;kg/s&quot;</span></span> <span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a> Thrust <span class="op">=</span><span class="op">*</span> ve <span class="op">+</span> a_nozzle <span class="op">*</span> (P <span class="op">-</span> P_amb) <span class="op">|&gt;</span> u<span class="st">&quot;N&quot;</span></span>
<span id="cb5-15"><a href="#cb5-15" aria-hidden="true" tabindex="-1"></a> Thrust <span class="op">=</span><span class="op">*</span> ve <span class="op">+</span> a_nozzle <span class="op">*</span> (P <span class="op">-</span> P_amb) <span class="op">|&gt;</span> u<span class="st">&quot;N&quot;</span></span> <span id="cb5-15"><a href="#cb5-15" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-16"><a href="#cb5-16" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-16"><a href="#cb5-16" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is still in the tank</span></span>
<span id="cb5-17"><a href="#cb5-17" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is still in the tank</span></span> <span id="cb5-17"><a href="#cb5-17" aria-hidden="true" tabindex="-1"></a> M <span class="op">=</span> M <span class="op">-</span><span class="op">*</span> ts <span class="op">|&gt;</span> u<span class="st">&quot;kg&quot;</span></span>
<span id="cb5-18"><a href="#cb5-18" aria-hidden="true" tabindex="-1"></a> M <span class="op">=</span> M <span class="op">-</span><span class="op">*</span> ts <span class="op">|&gt;</span> u<span class="st">&quot;kg&quot;</span></span> <span id="cb5-18"><a href="#cb5-18" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> (M <span class="op">*</span> R <span class="op">*</span> T) <span class="op">/</span> V <span class="op">|&gt;</span> u<span class="st">&quot;Pa&quot;</span></span>
<span id="cb5-19"><a href="#cb5-19" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> (M <span class="op">*</span> R <span class="op">*</span> T) <span class="op">/</span> V <span class="op">|&gt;</span> u<span class="st">&quot;Pa&quot;</span></span> <span id="cb5-19"><a href="#cb5-19" aria-hidden="true" tabindex="-1"></a> t <span class="op">=</span> t <span class="op">+</span> ts</span>
<span id="cb5-20"><a href="#cb5-20" aria-hidden="true" tabindex="-1"></a> t <span class="op">=</span> t <span class="op">+</span> ts</span> <span id="cb5-20"><a href="#cb5-20" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-21"><a href="#cb5-21" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-21"><a href="#cb5-21" aria-hidden="true" tabindex="-1"></a> df_step <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>Thrust<span class="op">,</span> Pressure<span class="op">=</span>P<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span>t<span class="op">,</span> Mass<span class="op">=</span>M)</span>
<span id="cb5-22"><a href="#cb5-22" aria-hidden="true" tabindex="-1"></a> df_step <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>Thrust<span class="op">,</span> Pressure<span class="op">=</span>P<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span>t<span class="op">,</span> Mass<span class="op">=</span>M)</span> <span id="cb5-22"><a href="#cb5-22" aria-hidden="true" tabindex="-1"></a> <span class="cn">append</span><span class="op">!</span>(df<span class="op">,</span> df_step)</span>
<span id="cb5-23"><a href="#cb5-23" aria-hidden="true" tabindex="-1"></a> <span class="cn">append</span><span class="op">!</span>(df<span class="op">,</span> df_step)</span> <span id="cb5-23"><a href="#cb5-23" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
<span id="cb5-24"><a href="#cb5-24" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> <span id="cb5-24"><a href="#cb5-24" aria-hidden="true" tabindex="-1"></a> df</span>
<span id="cb5-25"><a href="#cb5-25" aria-hidden="true" tabindex="-1"></a> df</span> <span id="cb5-25"><a href="#cb5-25" aria-hidden="true" tabindex="-1"></a><span class="kw">end</span></span></code></pre></div>
<span id="cb5-26"><a href="#cb5-26" aria-hidden="true" tabindex="-1"></a><span class="kw">end</span></span></code></pre></div>
</div> </div>
<p>breakdown of the data</p> <h2 id="analysis">Analysis</h2>
<div class="layout-chunk" data-layout="l-body"> <p>Heres the results plotted. Notice the massive error once the tank starts running low. This is because the calculation for pressure has a lot of variables that are very uncertain. This is mostly due to air being a compressible fluid which is what makes this simulation so difficult to do accurately. The thrust being below 0 N might not make intuitive sense, but its technically possible for the pressure to compress which would leave the inside of the rocket nozzle with a pressure thats actually below atmospheric pressure. The effect would likely last a fraction of a second but the point stands that this simulation is very inaccurate and only meant to get an idea of what an air propulsion system is capable of.</p>
"
<table class="\&quot;data-frame\&quot;">
<thead>
<tr>
<th>
</th>
<th>
variable
</th>
<th>
mean
</th>
<th>
min
</th>
<th>
median
</th>
<th>
max
</th>
<th>
nmissing
</th>
<th>
eltype
</th>
</tr>
<tr>
<th>
</th>
<th>
Symbol
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Int64
</th>
<th>
DataType
</th>
</tr>
</thead>
<tbody>
<p>
4 rows × 7 columns
</p>
<tr>
<th>
1
</th>
<td>
Thrust
</td>
<td>
20.0±2.0 N
</td>
<td>
0.0±0.0 N
</td>
<td>
21.1±4.7 N
</td>
<td>
21.1±4.7 N
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}}
</td>
</tr>
<tr>
<th>
2
</th>
<td>
Pressure
</td>
<td>
2020.0±520.0 psi
</td>
<td>
40.0±160.0 psi
</td>
<td>
2010.0±570.0 psi
</td>
<td>
4200.0±300.0 psi
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(psi,), 𝐌 𝐋^-1 𝐓^-2, nothing}}
</td>
</tr>
<tr>
<th>
3
</th>
<td>
Time
</td>
<td>
10.1515 s
</td>
<td>
0.0 s
</td>
<td>
10.1515 s
</td>
<td>
20.303 s
</td>
<td>
0
</td>
<td>
Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}}
</td>
</tr>
<tr>
<th>
4
</th>
<td>
Mass
</td>
<td>
0.225±0.066 kg
</td>
<td>
0.005±0.018 kg
</td>
<td>
0.224±0.071 kg
</td>
<td>
0.468±0.053 kg
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}}
</td>
</tr>
</tbody>
</table>
<p>"</p>
</div>
<p>Heres the results plotted. Notice the massive error once the tank starts running low.</p>
<div class="layout-chunk" data-layout="l-body-outset"> <div class="layout-chunk" data-layout="l-body-outset">
<details> <details>
<summary> <summary>
@ -1744,14 +1577,14 @@ Show code
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a> size <span class="op">=</span> (<span class="fl">1200</span><span class="op">,</span> <span class="fl">800</span>)<span class="op">,</span></span> <span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a> size <span class="op">=</span> (<span class="fl">1200</span><span class="op">,</span> <span class="fl">800</span>)<span class="op">,</span></span>
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div> <span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div>
</details> </details>
<div class="figure"><span id="fig:unnamed-chunk-7"></span> <div class="figure"><span id="fig:unnamed-chunk-6"></span>
<img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png" alt="Air Proplsion Simulation" width="350" /> <img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png" alt="Air Proplsion Simulation" width="350" />
<p class="caption"> <p class="caption">
Figure 1: Air Proplsion Simulation Figure 1: Air Proplsion Simulation
</p> </p>
</div> </div>
</div> </div>
<p>Here the air prop is plotted along with rocket motors that are being</p> <p>In Figure 2, the air propulsion simulation is compared to commercially available rocket motors. This early in the project we have no idea whether short burns or longer burns are ideal for a propulsive landing so the air propulsion system was compared to a variety of different motors.</p>
<div class="layout-chunk" data-layout="l-body-outset"> <div class="layout-chunk" data-layout="l-body-outset">
<details> <details>
<summary> <summary>
@ -1773,8 +1606,8 @@ Show code
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true" tabindex="-1"></a>xlabel<span class="op">!</span>(<span class="st">&quot;Time (s)&quot;</span>)<span class="op">;</span></span> <span id="cb7-14"><a href="#cb7-14" aria-hidden="true" tabindex="-1"></a>xlabel<span class="op">!</span>(<span class="st">&quot;Time (s)&quot;</span>)<span class="op">;</span></span>
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true" tabindex="-1"></a>ylabel<span class="op">!</span>(<span class="st">&quot;Thrust (N)&quot;</span>)</span></code></pre></div> <span id="cb7-15"><a href="#cb7-15" aria-hidden="true" tabindex="-1"></a>ylabel<span class="op">!</span>(<span class="st">&quot;Thrust (N)&quot;</span>)</span></code></pre></div>
</details> </details>
<div class="figure"><span id="fig:unnamed-chunk-8"></span> <div class="figure"><span id="fig:unnamed-chunk-7"></span>
<img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png" alt="Rocket Motor Data: [@thrustcurve]" width="350" /> <img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png" alt="Rocket Motor Data: [@thrustcurve]" width="350" />
<p class="caption"> <p class="caption">
Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a href="#ref-thrustcurve" role="doc-biblioref">Coker, n.d.</a>)</span> Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a href="#ref-thrustcurve" role="doc-biblioref">Coker, n.d.</a>)</span>
</p> </p>
@ -1786,9 +1619,6 @@ Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a
<div id="ref-thrustcurve" class="csl-entry" role="doc-biblioentry"> <div id="ref-thrustcurve" class="csl-entry" role="doc-biblioentry">
Coker, John. n.d. <span>“Rocket <span>Motor</span> <span>Data</span>.”</span> <a href="https://www.thrustcurve.org/">https://www.thrustcurve.org/</a>. Coker, John. n.d. <span>“Rocket <span>Motor</span> <span>Data</span>.”</span> <a href="https://www.thrustcurve.org/">https://www.thrustcurve.org/</a>.
</div> </div>
<div id="ref-curtis_orbital" class="csl-entry" role="doc-biblioentry">
Curtis, Howard D. 2020. <em>Orbital Mechanics for Engineering Students</em>. Fourth edition. Butterworth-Heinemann Publications.
</div>
<div id="ref-cengel_thermodynamics" class="csl-entry" role="doc-biblioentry"> <div id="ref-cengel_thermodynamics" class="csl-entry" role="doc-biblioentry">
Çengel, Yunus A., and Michael A. Boles. 2015. <em>Thermodynamics: An Engineering Approach</em>. Eighth edition. New York: McGraw-Hill Education. Çengel, Yunus A., and Michael A. Boles. 2015. <em>Thermodynamics: An Engineering Approach</em>. Eighth edition. New York: McGraw-Hill Education.
</div> </div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -2121,6 +2121,7 @@ Show code
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> CSV</span></code></pre></div> <span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> CSV</span></code></pre></div>
</details> </details>
</div> </div>
<h2 id="the-simulation">The Simulation</h2>
<p>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.</p> <p>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.</p>
<div class="layout-chunk" data-layout="l-body"> <div class="layout-chunk" data-layout="l-body">
<div class="sourceCode" id="cb2"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/</span></span> <div class="sourceCode" id="cb2"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Tank https://www.amazon.com/Empire-Paintball-BASICS-Pressure-Compressed/dp/B07B6M48SR/</span></span>
@ -2143,10 +2144,10 @@ Show code
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>R <span class="op">=</span> <span class="fl">287.05</span>u<span class="st">&quot;J/(kg * K)&quot;</span></span> <span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a>R <span class="op">=</span> <span class="fl">287.05</span>u<span class="st">&quot;J/(kg * K)&quot;</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>T <span class="op">=</span> (<span class="fl">300</span> ± <span class="fl">20</span>)u<span class="st">&quot;K&quot;</span></span></code></pre></div> <span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a>T <span class="op">=</span> (<span class="fl">300</span> ± <span class="fl">20</span>)u<span class="st">&quot;K&quot;</span></span></code></pre></div>
</div> </div>
<p>This is the actual simulation. Maybe throw some references in and explain some equations.</p> <p>The actual simulation is actually quite simple. The basic idea is that using the current pressure you can calculate <span class="math inline">\(\dot{m}\)</span>, which allows calculating the Thrust, and then you can just subtract the current mass of air in the tank by <span class="math inline">\(\dot{m}\)</span> and recalculate pressure using the new mass then repeat the whole process.</p>
<p>The following equations also came from <span class="citation" data-cites="cengel_thermodynamics">(<a href="#ref-cengel_thermodynamics" role="doc-biblioref">Çengel and Boles 2015</a>)</span></p> <p>The bulk of the equations in the simulation came from <span class="citation" data-cites="cengel_thermodynamics">(<a href="#ref-cengel_thermodynamics" role="doc-biblioref">Çengel and Boles 2015</a>)</span>, while the Thrust and <span class="math inline">\(v_e\)</span> equations came from <span class="citation" data-cites="sutton_rocket_2001">(<a href="#ref-sutton_rocket_2001" role="doc-biblioref">Sutton and Biblarz 2001</a>, eq: 2-14)</span>.</p>
<p>The rocket equation is pretty sick<span class="citation" data-cites="sutton_rocket_2001">(<a href="#ref-sutton_rocket_2001" role="doc-biblioref">Sutton and Biblarz 2001</a>, eq: 2-14)</span>:</p> <p><span class="math display">\[ T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \]</span></p>
<p><span class="math display">\[T = \dot{m} \cdot v_\text{Exit} + A_\text{Nozzle} \cdot (P - P_\text{Ambient}) \]</span> And thats about all you need to get to the Moon<span class="citation" data-cites="curtis_orbital">(<a href="#ref-curtis_orbital" role="doc-biblioref">Curtis 2020</a>)</span>.</p> <p>The initial pressure difference is 4190.0 ± 300.0 psi which is absolutely massive so the area of the nozzle greatly affects the simulation. The paintball tanks do come with pressure regulators, in our case 800 psi which is still a very large number compared to atmospheric pressure. While the total impulse of the system doesnt really change with different nozzle areas the peak thrust and <em>burn time</em> vary greatly. One of the benefits of doing air propulsion, and the reason it was even considered so seriously, is that it should be possible to vary the nozzle diameter in flight which would make controlled landing much easier.</p>
<div class="layout-chunk" data-layout="l-body"> <div class="layout-chunk" data-layout="l-body">
<div class="sourceCode" id="cb5"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> <span class="kw">let</span></span> <div class="sourceCode" id="cb5"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> <span class="kw">let</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span></span> <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span></span>
@ -2155,195 +2156,27 @@ Show code
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a>ts <span class="op">=</span> <span class="fl">1</span>u<span class="st">&quot;ms&quot;</span></span> <span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a>ts <span class="op">=</span> <span class="fl">1</span>u<span class="st">&quot;ms&quot;</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>(<span class="fl">0</span> ± <span class="fl">0</span>)u<span class="st">&quot;N&quot;</span><span class="op">,</span> Pressure<span class="op">=</span>P0<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span><span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span><span class="op">,</span> Mass<span class="op">=</span>M)</span> <span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a>df <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>(<span class="fl">0</span> ± <span class="fl">0</span>)u<span class="st">&quot;N&quot;</span><span class="op">,</span> Pressure<span class="op">=</span>P0<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span><span class="fl">0.0</span>u<span class="st">&quot;s&quot;</span><span class="op">,</span> Mass<span class="op">=</span>M)</span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">while</span> M <span class="op">&gt;</span> <span class="fl">0.005</span>u<span class="st">&quot;kg&quot;</span></span> <span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">while</span> M <span class="op">&gt;</span> <span class="fl">0.005</span>u<span class="st">&quot;kg&quot;</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># while t &lt; 30u&quot;s&quot;</span></span> <span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is leaving tank</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is leaving tank</span></span> <span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> minimum([P<span class="op">,</span> Pmax])</span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> minimum([P<span class="op">,</span> Pmax])</span> <span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> ve <span class="op">=</span> sqrt((<span class="fl">2</span> <span class="op">*</span> γ <span class="op">/</span> (γ <span class="op">-</span> <span class="fl">1</span>)) <span class="op">*</span> R <span class="op">*</span> T <span class="op">*</span> (<span class="fl">1</span> <span class="op">-</span> P_amb <span class="op">/</span> P)<span class="op">^</span>((γ <span class="op">-</span> <span class="fl">1</span>) <span class="op">/</span> γ)) <span class="op">|&gt;</span> u<span class="st">&quot;m/s&quot;</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a> ve <span class="op">=</span> sqrt((<span class="fl">2</span> <span class="op">*</span> γ <span class="op">/</span> (γ <span class="op">-</span> <span class="fl">1</span>)) <span class="op">*</span> R <span class="op">*</span> T <span class="op">*</span> (<span class="fl">1</span> <span class="op">-</span> P_amb <span class="op">/</span> P)<span class="op">^</span>((γ <span class="op">-</span> <span class="fl">1</span>) <span class="op">/</span> γ)) <span class="op">|&gt;</span> u<span class="st">&quot;m/s&quot;</span></span> <span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a> ρ <span class="op">=</span> P <span class="op">/</span> (R <span class="op">*</span> T) <span class="op">|&gt;</span> u<span class="st">&quot;kg/m^3&quot;</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a> ρ <span class="op">=</span> P <span class="op">/</span> (R <span class="op">*</span> T) <span class="op">|&gt;</span> u<span class="st">&quot;kg/m^3&quot;</span></span> <span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a><span class="op">=</span> ρ <span class="op">*</span> a_nozzle <span class="op">*</span> ve <span class="op">|&gt;</span> u<span class="st">&quot;kg/s&quot;</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a><span class="op">=</span> ρ <span class="op">*</span> a_nozzle <span class="op">*</span> ve <span class="op">|&gt;</span> u<span class="st">&quot;kg/s&quot;</span></span> <span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a> Thrust <span class="op">=</span><span class="op">*</span> ve <span class="op">+</span> a_nozzle <span class="op">*</span> (P <span class="op">-</span> P_amb) <span class="op">|&gt;</span> u<span class="st">&quot;N&quot;</span></span>
<span id="cb5-15"><a href="#cb5-15" aria-hidden="true" tabindex="-1"></a> Thrust <span class="op">=</span><span class="op">*</span> ve <span class="op">+</span> a_nozzle <span class="op">*</span> (P <span class="op">-</span> P_amb) <span class="op">|&gt;</span> u<span class="st">&quot;N&quot;</span></span> <span id="cb5-15"><a href="#cb5-15" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-16"><a href="#cb5-16" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-16"><a href="#cb5-16" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is still in the tank</span></span>
<span id="cb5-17"><a href="#cb5-17" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is still in the tank</span></span> <span id="cb5-17"><a href="#cb5-17" aria-hidden="true" tabindex="-1"></a> M <span class="op">=</span> M <span class="op">-</span><span class="op">*</span> ts <span class="op">|&gt;</span> u<span class="st">&quot;kg&quot;</span></span>
<span id="cb5-18"><a href="#cb5-18" aria-hidden="true" tabindex="-1"></a> M <span class="op">=</span> M <span class="op">-</span><span class="op">*</span> ts <span class="op">|&gt;</span> u<span class="st">&quot;kg&quot;</span></span> <span id="cb5-18"><a href="#cb5-18" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> (M <span class="op">*</span> R <span class="op">*</span> T) <span class="op">/</span> V <span class="op">|&gt;</span> u<span class="st">&quot;Pa&quot;</span></span>
<span id="cb5-19"><a href="#cb5-19" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> (M <span class="op">*</span> R <span class="op">*</span> T) <span class="op">/</span> V <span class="op">|&gt;</span> u<span class="st">&quot;Pa&quot;</span></span> <span id="cb5-19"><a href="#cb5-19" aria-hidden="true" tabindex="-1"></a> t <span class="op">=</span> t <span class="op">+</span> ts</span>
<span id="cb5-20"><a href="#cb5-20" aria-hidden="true" tabindex="-1"></a> t <span class="op">=</span> t <span class="op">+</span> ts</span> <span id="cb5-20"><a href="#cb5-20" aria-hidden="true" tabindex="-1"></a> </span>
<span id="cb5-21"><a href="#cb5-21" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb5-21"><a href="#cb5-21" aria-hidden="true" tabindex="-1"></a> df_step <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>Thrust<span class="op">,</span> Pressure<span class="op">=</span>P<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span>t<span class="op">,</span> Mass<span class="op">=</span>M)</span>
<span id="cb5-22"><a href="#cb5-22" aria-hidden="true" tabindex="-1"></a> df_step <span class="op">=</span> DataFrame(Thrust<span class="op">=</span>Thrust<span class="op">,</span> Pressure<span class="op">=</span>P<span class="op">,</span> <span class="dt">Time</span><span class="op">=</span>t<span class="op">,</span> Mass<span class="op">=</span>M)</span> <span id="cb5-22"><a href="#cb5-22" aria-hidden="true" tabindex="-1"></a> <span class="cn">append</span><span class="op">!</span>(df<span class="op">,</span> df_step)</span>
<span id="cb5-23"><a href="#cb5-23" aria-hidden="true" tabindex="-1"></a> <span class="cn">append</span><span class="op">!</span>(df<span class="op">,</span> df_step)</span> <span id="cb5-23"><a href="#cb5-23" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
<span id="cb5-24"><a href="#cb5-24" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> <span id="cb5-24"><a href="#cb5-24" aria-hidden="true" tabindex="-1"></a> df</span>
<span id="cb5-25"><a href="#cb5-25" aria-hidden="true" tabindex="-1"></a> df</span> <span id="cb5-25"><a href="#cb5-25" aria-hidden="true" tabindex="-1"></a><span class="kw">end</span></span></code></pre></div>
<span id="cb5-26"><a href="#cb5-26" aria-hidden="true" tabindex="-1"></a><span class="kw">end</span></span></code></pre></div>
</div> </div>
<p>breakdown of the data</p> <h2 id="analysis">Analysis</h2>
<div class="layout-chunk" data-layout="l-body"> <p>Heres the results plotted. Notice the massive error once the tank starts running low. This is because the calculation for pressure has a lot of variables that are very uncertain. This is mostly due to air being a compressible fluid which is what makes this simulation so difficult to do accurately. The thrust being below 0 N might not make intuitive sense, but its technically possible for the pressure to compress which would leave the inside of the rocket nozzle with a pressure thats actually below atmospheric pressure. The effect would likely last a fraction of a second but the point stands that this simulation is very inaccurate and only meant to get an idea of what an air propulsion system is capable of.</p>
"
<table class="\&quot;data-frame\&quot;">
<thead>
<tr>
<th>
</th>
<th>
variable
</th>
<th>
mean
</th>
<th>
min
</th>
<th>
median
</th>
<th>
max
</th>
<th>
nmissing
</th>
<th>
eltype
</th>
</tr>
<tr>
<th>
</th>
<th>
Symbol
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Quantity
</th>
<th>
Int64
</th>
<th>
DataType
</th>
</tr>
</thead>
<tbody>
<p>
4 rows × 7 columns
</p>
<tr>
<th>
1
</th>
<td>
Thrust
</td>
<td>
20.0±2.0 N
</td>
<td>
0.0±0.0 N
</td>
<td>
21.1±4.7 N
</td>
<td>
21.1±4.7 N
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐋 𝐌 𝐓^-2, FreeUnits{(N,), 𝐋 𝐌 𝐓^-2, nothing}}
</td>
</tr>
<tr>
<th>
2
</th>
<td>
Pressure
</td>
<td>
2020.0±520.0 psi
</td>
<td>
40.0±160.0 psi
</td>
<td>
2010.0±570.0 psi
</td>
<td>
4200.0±300.0 psi
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐌 𝐋^-1 𝐓^-2, FreeUnits{(psi,), 𝐌 𝐋^-1 𝐓^-2, nothing}}
</td>
</tr>
<tr>
<th>
3
</th>
<td>
Time
</td>
<td>
10.1515 s
</td>
<td>
0.0 s
</td>
<td>
10.1515 s
</td>
<td>
20.303 s
</td>
<td>
0
</td>
<td>
Quantity{Float64, 𝐓, FreeUnits{(s,), 𝐓, nothing}}
</td>
</tr>
<tr>
<th>
4
</th>
<td>
Mass
</td>
<td>
0.225±0.066 kg
</td>
<td>
0.005±0.018 kg
</td>
<td>
0.224±0.071 kg
</td>
<td>
0.468±0.053 kg
</td>
<td>
0
</td>
<td>
Quantity{Measurement{Float64}, 𝐌, FreeUnits{(kg,), 𝐌, nothing}}
</td>
</tr>
</tbody>
</table>
<p>"</p>
</div>
<p>Heres the results plotted. Notice the massive error once the tank starts running low.</p>
<div class="layout-chunk" data-layout="l-body-outset"> <div class="layout-chunk" data-layout="l-body-outset">
<details> <details>
<summary> <summary>
@ -2365,14 +2198,14 @@ Show code
<span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a> size <span class="op">=</span> (<span class="fl">1200</span><span class="op">,</span> <span class="fl">800</span>)<span class="op">,</span></span> <span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a> size <span class="op">=</span> (<span class="fl">1200</span><span class="op">,</span> <span class="fl">800</span>)<span class="op">,</span></span>
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div> <span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div>
</details> </details>
<div class="figure"><span id="fig:unnamed-chunk-7"></span> <div class="figure"><span id="fig:unnamed-chunk-6"></span>
<img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png" alt="Air Proplsion Simulation" width="350" /> <img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png" alt="Air Proplsion Simulation" width="350" />
<p class="caption"> <p class="caption">
Figure 1: Air Proplsion Simulation Figure 1: Air Proplsion Simulation
</p> </p>
</div> </div>
</div> </div>
<p>Here the air prop is plotted along with rocket motors that are being</p> <p>In Figure 2, the air propulsion simulation is compared to commercially available rocket motors. This early in the project we have no idea whether short burns or longer burns are ideal for a propulsive landing so the air propulsion system was compared to a variety of different motors.</p>
<div class="layout-chunk" data-layout="l-body-outset"> <div class="layout-chunk" data-layout="l-body-outset">
<details> <details>
<summary> <summary>
@ -2394,8 +2227,8 @@ Show code
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true" tabindex="-1"></a>xlabel<span class="op">!</span>(<span class="st">&quot;Time (s)&quot;</span>)<span class="op">;</span></span> <span id="cb7-14"><a href="#cb7-14" aria-hidden="true" tabindex="-1"></a>xlabel<span class="op">!</span>(<span class="st">&quot;Time (s)&quot;</span>)<span class="op">;</span></span>
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true" tabindex="-1"></a>ylabel<span class="op">!</span>(<span class="st">&quot;Thrust (N)&quot;</span>)</span></code></pre></div> <span id="cb7-15"><a href="#cb7-15" aria-hidden="true" tabindex="-1"></a>ylabel<span class="op">!</span>(<span class="st">&quot;Thrust (N)&quot;</span>)</span></code></pre></div>
</details> </details>
<div class="figure"><span id="fig:unnamed-chunk-8"></span> <div class="figure"><span id="fig:unnamed-chunk-7"></span>
<img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-8-J1.png" alt="Rocket Motor Data: [@thrustcurve]" width="350" /> <img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png" alt="Rocket Motor Data: [@thrustcurve]" width="350" />
<p class="caption"> <p class="caption">
Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a href="#ref-thrustcurve" role="doc-biblioref">Coker, n.d.</a>)</span> Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a href="#ref-thrustcurve" role="doc-biblioref">Coker, n.d.</a>)</span>
</p> </p>
@ -2407,9 +2240,6 @@ Figure 2: Rocket Motor Data: <span class="citation" data-cites="thrustcurve">(<a
<div id="ref-thrustcurve" class="csl-entry" role="doc-biblioentry"> <div id="ref-thrustcurve" class="csl-entry" role="doc-biblioentry">
Coker, John. n.d. <span>“Rocket <span>Motor</span> <span>Data</span>.”</span> <a href="https://www.thrustcurve.org/">https://www.thrustcurve.org/</a>. Coker, John. n.d. <span>“Rocket <span>Motor</span> <span>Data</span>.”</span> <a href="https://www.thrustcurve.org/">https://www.thrustcurve.org/</a>.
</div> </div>
<div id="ref-curtis_orbital" class="csl-entry" role="doc-biblioentry">
Curtis, Howard D. 2020. <em>Orbital Mechanics for Engineering Students</em>. Fourth edition. Butterworth-Heinemann Publications.
</div>
<div id="ref-cengel_thermodynamics" class="csl-entry" role="doc-biblioentry"> <div id="ref-cengel_thermodynamics" class="csl-entry" role="doc-biblioentry">
Çengel, Yunus A., and Michael A. Boles. 2015. <em>Thermodynamics: An Engineering Approach</em>. Eighth edition. New York: McGraw-Hill Education. Çengel, Yunus A., and Michael A. Boles. 2015. <em>Thermodynamics: An Engineering Approach</em>. Eighth edition. New York: McGraw-Hill Education.
</div> </div>

File diff suppressed because one or more lines are too long