diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd index 4864805..7a71b12 100644 --- a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd +++ b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd @@ -15,7 +15,7 @@ output: categories: - Julia - Capstone -bibliography: ../../citations.bib +bibliography: citations.bib creative_commons: CC BY --- @@ -29,7 +29,6 @@ library(JuliaCall) ```{julia, code_folding=TRUE} using Plots -plotly() theme(:ggplot2); # In true R spirit using Unitful @@ -37,7 +36,6 @@ using DataFrames using Measurements using Measurements: value, uncertainty using CSV - ``` @@ -60,7 +58,6 @@ The nozzle diameter was changed until the air prop system had a _burn time_ simi # Params d_nozzle = ((1 // 18) ± 0.001)u"inch" a_nozzle = (pi / 4) * d_nozzle^2 - ``` These are just universal values for what a typical day would look like during the summer in Northern Arizona. [@cengel_thermodynamics] @@ -71,7 +68,6 @@ P_amb = (1 ± 0.2)u"atm" γ = 1.4 ± 0.05 R = 287.05u"J/(kg * K)" T = (300 ± 20)u"K" - ``` The actual simulation is 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 subtract the current mass of air in the tank by $\dot{m}$ and recalculate pressure using the new mass then repeat the whole process. @@ -109,7 +105,6 @@ df = DataFrame(Thrust=(0 ± 0)u"N", Pressure=P0, Time=0.0u"s", Mass=M) end df end - ``` ## Analysis @@ -133,7 +128,6 @@ plot(df.Time .|> ustrip, thrust_values, ylabel="Thrust (N)", size = (1200, 800), ) - ``` 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 with unique profiles. @@ -154,7 +148,6 @@ end title!("Propulsion Comparison"); xlabel!("Time (s)"); ylabel!("Thrust (N)") - ``` In the end, the air propulsion system's performance has a very impressive total impulse and, with more time and resources, could be a serious option for a propulsive landing on Earth. One of the largest abstractions from the Moon mission that the mission here on Earth will have to deal with is the lack of Throttling engines since any propulsion system outside of model rocket motors is well beyond the scope of this Capstone. @@ -162,5 +155,3 @@ In the end, the air propulsion system's performance has a very impressive total ## Future Work After determining that solid model rocket motors are the best option for the current mission scope, the next step is determining what motor to use. There are many great options, and deciding what thrust profile is ideal may have to wait until a Simulink simulation of the landing can be built so that the metrics of each motor can be constrained more. Instead of throttling motors, the current working idea is that thrust vector control may be a way to squeeze a little more control out of a solid rocket motor. Thrust Vector Control will undoubtedly be challenging to control, so another essential piece that needs exploring is whether an LQR controller is feasible or if a PID controller is accurate enough to control our system. - - 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 abddd31..21f980c 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 @@ -113,12 +113,12 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ @@ -1491,14 +1491,13 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ Show code
using Plots
-plotly()
-theme(:ggplot2); # In true R spirit
-
-using Unitful
-using DataFrames
-using Measurements
-using Measurements: value, uncertainty
-using CSV
+theme(:ggplot2); # In true R spirit + +using Unitful +using DataFrames +using Measurements +using Measurements: value, uncertainty +using CSV

The Simulation

@@ -1579,7 +1578,7 @@ Show code )
-Air Proplsion Simulation +Air Proplsion Simulation

Figure 1: Air Proplsion Simulation

@@ -1608,7 +1607,7 @@ Show code ylabel!("Thrust (N)")
-Rocket Motor Data: [@thrustcurve] +Rocket Motor Data: [@thrustcurve]

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

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 index 495f6cf..2030850 100644 Binary files a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png 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 index d261f7e..35556bb 100644 Binary files a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png 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/citations.bib b/_posts/2021-04-01-air-propulsion-simulation/citations.bib new file mode 100644 index 0000000..680a7cc --- /dev/null +++ b/_posts/2021-04-01-air-propulsion-simulation/citations.bib @@ -0,0 +1,54 @@ + +@book{shackelford_introduction_2015, + address = {Boston}, + edition = {Eighth edition}, + title = {Introduction to materials science for engineers}, + isbn = {9780133826654}, + publisher = {Pearson}, + author = {Shackelford, James F.}, + year = {2015}, + keywords = {Materials} +} + +@book{curtis_orbital, + title = {Orbital mechanics for engineering students}, + isbn = {9780128240250 9780323853453 9780081021330}, + language = {English}, + author = {Curtis, Howard D}, + year = {2020}, + note = {OCLC: 1235349370}, + publisher = {Butterworth-Heinemann Publications}, + edition = {Fourth edition} +} + + +@misc{thrustcurve, + title = {Rocket {Motor} {Data}}, + url = {https://www.thrustcurve.org/}, + author = {Coker, John} +} + + +@book{cengel_thermodynamics, + address = {New York}, + edition = {Eighth edition}, + title = {Thermodynamics: an engineering approach}, + isbn = {9780073398174}, + shorttitle = {Thermodynamics}, + publisher = {McGraw-Hill Education}, + author = {Çengel, Yunus A. and Boles, Michael A.}, + year = {2015}, + note = {OCLC: ocn869741544}, + keywords = {Thermodynamics} +} + +@book{sutton_rocket_2001, + address = {New York}, + edition = {7th ed}, + title = {Rocket propulsion elements}, + isbn = {9780471326427}, + publisher = {John Wiley \& Sons}, + author = {Sutton, George P. and Biblarz, Oscar}, + year = {2001}, + keywords = {Rocket engines} +} diff --git a/_posts/2021-04-14-iss-eclipse-determination/geometry.svg b/_posts/2021-04-14-iss-eclipse-determination/geometry.svg new file mode 100644 index 0000000..b139094 --- /dev/null +++ b/_posts/2021-04-14-iss-eclipse-determination/geometry.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2aW1PiSFx1MDAxNMff51NY7OuQ7ftl31C8wYhcdTAwMTd0ULe2qFx1MDAwMFx1MDAwMYKBYFx1MDAxMlx1MDAxNGdrvvueRIVcdTAwMTBcdTAwMTIn4DhizebBku6k0zn5nf85p9P/ftraKlx1MDAwNFx1MDAwZmOr8NdWwZq2TcfueOZ94XPYfmd5vu2OoItEv3134rWjM/tBMPb/+vPP+Vx1MDAxNUbbXHUwMDFkPl5lOdbQXHUwMDFhXHUwMDA1Ppz3N/ze2vo3+lx1MDAxYrtPxzaH7qhcdTAwMTOdXHUwMDFldcxvxFmyseaOontiLjSlXG7PT7D9MtwrsDrQ2zVcdTAwMWTfmveETVx1MDAwNSlcdTAwMDN7r76/j09qZ1x1MDAxZHe6XzyZspv5Tbu249SDXHUwMDA3J5pS23N9v9g3g3Z/foZcdTAwMWZ47o3VsDtBP5xAon12re+CXHTmV3nupNdcdTAwMWZZvv9st6jVXHUwMDFkm207eFxix0Fo1mqOetFcdTAwMTjzlmlkXHUwMDA0NW9cYi8pclx1MDAxY2t5vP2O67heePvAM0f+2PTA5vNJtMz2TVx1MDAwZmYy6szO+6NtdVjHnJ9z//RgRMzH7lt2r1x1MDAxZkBjrM23XCJcdTAwMTNjRoXSXHUwMDA0x95AeIfxYSd61f8kzdM3vfGTXHUwMDE5XG5++CM2u3Biu4+cPF9cdTAwMWX1ff+cToxjj6xUXFxcdTAwMTDN5Fx1MDAwNUtJkUZa5Vx1MDAwNqa4d1jpSe/A363aLbN8eHN5eWJlXHUwMDAwk3jpi6iwNVDBOVHBXHUwMDA2XHUwMDE3VFGuJNFUK6FcdTAwMTfRgT6DIyk5x1x1MDAwNHMqXHUwMDEzXHUwMDFjgUVcZoVcdTAwMTVnSFx1MDAxMy24zoLqXHUwMDBmXHUwMDE0XHUwMDFkL1x1MDAwM5U851x1MDAxOSgsiMHhUFx1MDAwNCm4XHUwMDExJVwihS8tXHIqpaBcdTAwMTi6lZZcIolcdTAwMWJBklCBXHUwMDA0J2+C26xz7NpxsVxuj/l/W4CRoTWXXHUwMDFhI0ZcdTAwMTBcdTAwMTOczd5TeFx1MDAxNFx1MDAxNZr9+udz6lx1MDAwMJpcdTAwMWFE0pktsIhfL/CiXHUwMDE15I9GK1xubVx1MDAxMFx1MDAxOOv5wK9cdTAwMWFthYf7lFx1MDAxOKjgmH6w41x1MDAwZYd2XHUwMDAwXHUwMDBldVx1MDAxMlx1MDAxYVx1MDAxMWw4mjhO7MWYXlDyPPe+b5mdZK816iT7XpRcdTAwMDDLceyxn6pcdTAwMDIqO2ggXCKFJpzmj1x1MDAxYfXacdO1XHUwMDFmOFx1MDAxZV+W+teuOrimvrN+1CBJTn+iXHUwMDE0LEZccoZFMmpcdTAwMTCWXHUwMDE5NXI5eNdsIcSXXHUwMDFknKGUiFx1MDAxMW988mGuJeFcdTAwMDJewOZEXGalslhRkiGq9VxuXHRGdcpcdTAwMDc1/zC4Oi19qZZGkyNSKtY+XHUwMDA0KlQhQyuEiOJcbkstXHUwMDE2uWGKakMjXHUwMDA2YiUgwtJk5rNcdTAwMTJEqenJLFJQrlxyhLWWmGGQNZpcdTAwMTIpQJpcZqS5UJQyXHIwxXz5OTOhRIF60dhz5OYsmmzOUFx1MDAxMVx02rY96tijXoqcZfT8IMDM3kz044eKnWmw8Cgu2+pjKDiAlinhQKFcdTAwMDZtUVwit19cIsvdPmg0bbt5ttfcnXKys3PYXFwnj/t1XHUwMDFlyVx0WUr5yevEm1x1MDAxMNWyRFp2llwi3ng531x1MDAxN5CzKCBpXHKneq14v0CKyNRvcFx1MDAwNs0owSg3J2dcbn8171x1MDAxYZ26OFSHzXPUp9XTnY+g329AXHUwMDBiJi2lXkFcdTAwMGKkpDSMnu9AS2aox1moMEiSmWQyf2nYvW22rKuaZ1x1MDAwNfZcdTAwMTXxKup6sFv59lx1MDAxMVBcdEP9z81cbn9cdTAwMTDQ03hhJGU1gYCyXHUwMDAzSGusJny4mC1cdTAwMTYuXHUwMDAwa2xQVM7ynljSvrSyQoVcdTAwMTZcXKygtPqk3Ova1+ff7i9Lp46s1dBcdTAwMTdcIj+G+ySLKqZeWVSxtrC6KUVcdTAwMTWWKsV1SIrrQFFLhFx1MDAxMPI3SHdjNlx0j1wi+Vx1MDAxML6DXHUwMDE5z05nJVOcIEJyO0/DfTgg29XDL3e1oVx1MDAxZVx1MDAxZjSldXVBPorzXHUwMDE4RDJOgVeNYmv7s0BkXGIoZFx1MDAxNGeaXHUwMDEzLV/lVlmr22GVlMutXHUwMDE4g1x0QTm8xmLFR/OqmEnCY7OcKrCmQZpTvfBpSGrI6LTC+fO5yvmkcXZ+M6zLmzNpi1bj7Li2t9klXCLUNslMXHUwMDBlideFXCIo7yydkvRztewxMUl7jkPh91x1MDAxNahcdTAwMTLXiUOrrNB33VFQt7+FXHUwMDE2iVx1MDAxNaNh6545tJ2HXHUwMDA1i0b0hMu4k1H82X0r0mpcdTAwMTiBLJxacuzeKJJyq7tIXWC3TWfWXHUwMDFkuOPCWtSKzFwiXHUwMDA06lVMhERcIn8ksPTYujgoV6uVnuraqFx1MDAxNOivtLLZ1HKytCr9VtQqmotaRCBcdTAwMDTTtVxujzendtvtPGxcdTAwMDS2sVx1MDAxYzcptuHqMNNsXHUwMDA1sVx1MDAxZDuO3TdLo92KeXfF7f1cdTAwMDNE968+xod4RlxyJlx1MDAxMFGUc6xin5KfSObSYJJcdTAwMTCNXHUwMDEw1XFHTmLdhWPN9Fx1MDAwNeWjWmiMJcaxz1x1MDAxYptD9cWw5ZmbgXVmUUs4ZFx1MDAxMJTr/DXtoNa5vm2dTIe9/YdBb9pcdTAwMWFcdTAwMWbU9o7WXHUwMDEx41/IM2fEoExD4lxyzytIkmcskaFcdTAwMTBcdTAwMTeEQsZONeeZQL9qe1x1MDAwMJd5kIb4iEKnXCKbiPSJNZr8cqrX2zfFKIM8g66w2DlcdTAwMTmUj1x1MDAxYlx1MDAxN+Xbxk71qLhd7jeVnrziu+av5Du52Fx0ger9N05RXCIp1uRcdTAwMWS+gq+ug4xijiHY5dfB8lx1MDAxNWtty5tcdTAwMTI3gzI/XHUwMDFjXHUwMDA3rm5eXHUwMDA0XHUwMDFiroNiUVx1MDAwN2VcdTAwMTJcdTAwMWG6qIPvKYNcdTAwMThzpVx1MDAxNFPyt5fBR9yOy6f9XHUwMDAxcU+buqzG07pLyIB58+GeyfesdvD48lx1MDAxM+VcYmZcdTAwMDZcdTAwMTZcdTAwMTJ8klx1MDAxMCRVcn9cdTAwMWPW2lx1MDAxMFxiI7C5lLGPWc8vjaatJS3jxlxyyZFkXFxThYniXCKbIMqoyVZcXNp6342Icfqe2qDVor2784NqpdL4Wqo0ykdm7U5cdTAwMGZcbk/9q0A6W1xcgDpDarm8MSDKdrPXV1x0RDswOs9cdTAwMTPullx1MDAxZFwic3XqXHUwMDExvofWeGB+8Y+6029jsnOCzsz7h3p++LCihlx1MDAxMFx1MDAwMoH8MKGQSMInlVx1MDAwMeWpXHUwMDAyOinQo5fp48v04bemL7mP4HegXHUwMDBmpEErXHUwMDA0r2sprYroy0y2NFx1MDAxM5TBxXmi58rwfVVFetOUjmndXuPB+XGjim7vV1A+XG7SJsK9o1gz8CueoI9gbCBccjFcdTAwMTHopFxcYv4/fu8mflxmQcquhFhK08JOlS1+klOqXHUwMDE4zbWkmJJccsyfaLdy4tjTfr86tU+H5nF34F1XjmZP9Fx1MDAwMqSdy54kw6Or4t5Jo8nubva7XHUwMDE1vLNcZuliYvoojjxcdTAwMTRHSjDXmjG69LGIXGJD8LCWQVx1MDAxMisml+jESC/jSXhcdTAwMWGeXHUwMDEwIFx1MDAwNCTviGiNfv7mxlx1MDAwNUL7Zrs/8ayfmfOuwuhcdTAwMWHwcVx1MDAwMFx1MDAwZjRiaVx1MDAwMTCqZLKVT8NcdTAwMTTCXHUwMDA17bWVbym5rMPTWW3PjGeLsSw1lna9kKWuknWmJbFYPcL+6cmRXHUwMDBi5nhcXFx1MDAwZswg7HtEXHUwMDFm7G13XHUwMDEycyrc2db9dtqO6uhcYlx1MDAxZOn7p+//XHUwMDAxpv8zXHUwMDAyIn0= + + + + SunBodyUmbraPenumbraPenumbraSpacecraft \ No newline at end of file diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.Rmd b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.Rmd index d311e2e..af91b28 100644 --- a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.Rmd +++ b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.Rmd @@ -1,24 +1,115 @@ --- title: "ISS Eclipse Determination" description: | - Determining how much sunlight a body -draft: true + Determining how much sunlight a body is receiving. +draft: false author: - name: Anson Biggs url: https://ansonbiggs.com -date: 04-14-2021 +repository_url: https://gitlab.com/lander-team/air-prop-simulation +date: 04-01-2021 +fig_width: 6 +fig_align: "center" output: distill::distill_article: self_contained: false +categories: + - Julia + - Astrodynamics +#bibliography: ../../citations.bib +creative_commons: CC BY +preview: preview.png --- +Determining the eclipses a satellite will encounter is a major driving factor when designing a mission in space. Thermal and power budgets have to be made with the fact that a satellite will periodically be in the complete darkness of space with no solar radiation to power the solar panels and keep the spacecraft from freezing. ```{r setup, include=FALSE} -knitr::opts_chunk$set(echo = FALSE) +knitr::opts_chunk$set(echo = TRUE, results = 'hide') +library(JuliaCall) +#julia_setup(JULIA_HOME = "/opt/julia-1.6.1/bin/") +julia_setup(installJulia = TRUE) ``` -Distill is a publication format for scientific and technical writing, native to the web. +## What is an Eclipse -Learn more about using Distill at . +![Geometry of an Eclipse](geometry.svg) +![Body Radius's and Position Vectors](vectors_radiuss.svg) + + +## The Code + +```{julia, code_folding=TRUE} +using Unitful +using LinearAlgebra +using SatelliteToolbox +using Plots +using Colors +theme(:ggplot2) +``` + + +```{julia} +ISS = tle""" +ISS (ZARYA) +1 25544U 98067A 21103.84943184 .00000176 00000-0 11381-4 0 9990 +2 25544 51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621 +""" +``` + +```{julia} +orbit = init_orbit_propagator(Val(:twobody), ISS[1]); +time = 0:0.1:((24 / ISS[1].n) .* 60 * 60); +o, r, v = propagate!(orbit, time); +``` + + +```{julia} +function sunlight(Rbody, r_sun_body, r_body_sc) + Rsun = 695_700u"km" + + hu = Rbody * norm(r_sun_body) / (Rsun - Rbody) + + θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc))) + + θu = atan(Rbody / hu) + du = hu * sin(θu) / sin(θe + θu) + + θp = π - atan(norm(r_sun_body) / (Rsun + Rbody)) + dp = Rbody * sin(θp) / cos(θe - θp) + + S = 1 + if (θe < π / 2) && (norm(r_body_sc) < du) + S = 0 + end + if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp)) + S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip + end + + return S +end +``` + +```{julia} +S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m") +``` + +## Plotting the Results + +```{julia, code_folding=TRUE, results='show',layout="l-body-outset",fig.cap= "Rocket Motor Data: [@thrustcurve]", preview=TRUE } +light_range = range(colorant"black", stop = colorant"yellow", length = 101); +light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S]; + +plot( + LinRange(0, 24, length(S)), + S .* 100, + linewidth = 5, + legend = false, + color = light_colors, +); + +xlabel!("Time (hr)"); +ylabel!("Sunlight (%)"); +title!("ISS Sunlight Over a Day") +``` \ No newline at end of file diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.html b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.html index 2828134..f840e17 100644 --- a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.html +++ b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination.html @@ -88,35 +88,36 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ ISS Eclipse Determination - + + - - + + - + - + @@ -1455,7 +1456,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ @@ -1467,20 +1468,112 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */

ISS Eclipse Determination

+
+
Julia
+
Astrodynamics
+
-

Determining how much sunlight a body

+

Determining how much sunlight a body is receiving.

-

Distill is a publication format for scientific and technical writing, native to the web.

-

Learn more about using Distill at https://rstudio.github.io/distill.

-
+

Determining the eclipses a satellite will encounter is a major driving factor when designing a mission in space. Thermal and power budgets have to be made with the fact that a satellite will periodically be in the complete darkness of space with no solar radiation to power the solar panels and keep the spacecraft from freezing.

+

What is an Eclipse

+
+Geometry of an Eclipse +
+
+Body Radius’s and Position Vectors +
+

The Code

+
+
+ +Show code + +
using Unitful
+using LinearAlgebra
+using SatelliteToolbox
+using Plots
+using Colors
+theme(:ggplot2)
+
+
+
+
ISS = tle"""
+ISS (ZARYA)
+1 25544U 98067A   21103.84943184  .00000176  00000-0  11381-4 0  9990
+2 25544  51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621
+"""
+
+
+
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
+time = 0:0.1:((24 / ISS[1].n) .* 60 * 60);
+o, r, v = propagate!(orbit, time);
+
+
+
function sunlight(Rbody, r_sun_body, r_body_sc)
+    Rsun = 695_700u"km"
+    
+    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
+    
+    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
+
+    θu = atan(Rbody / hu)
+    du = hu * sin(θu) / sin(θe + θu)
+
+    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
+    dp = Rbody * sin(θp) / cos(θe - θp)
+
+    S = 1
+    if (θe < π / 2) && (norm(r_body_sc) < du)
+        S = 0
+    end
+    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
+        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
+    end
+
+    return S
+end
+
+
+
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m")
+
+

Plotting the Results

+
+
+ +Show code + +
light_range = range(colorant"black", stop = colorant"yellow", length = 101);
+light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
+
+plot(
+    LinRange(0, 24, length(S)),
+    S .* 100,
+    linewidth = 5,
+    legend = false,
+    color = light_colors,
+);
+
+xlabel!("Time (hr)");
+ylabel!("Sunlight (%)");
+title!("ISS Sunlight Over a Day")
+
+
+Rocket Motor Data: [@thrustcurve] +

+Figure 1: Rocket Motor Data: [@thrustcurve] +

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

Corrections

+

If you see mistakes or want to suggest changes, please create an issue on the source repository.

+

Reuse

+

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://gitlab.com/lander-team/air-prop-simulation, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

+
diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png new file mode 100644 index 0000000..98db750 Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png new file mode 100644 index 0000000..54b467f Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png new file mode 100644 index 0000000..f6ded34 Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png new file mode 100644 index 0000000..98db750 Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png new file mode 100644 index 0000000..54b467f Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png new file mode 100644 index 0000000..f6ded34 Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/preview.png b/_posts/2021-04-14-iss-eclipse-determination/preview.png new file mode 100644 index 0000000..0b30551 Binary files /dev/null and b/_posts/2021-04-14-iss-eclipse-determination/preview.png differ diff --git a/_posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg b/_posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg new file mode 100644 index 0000000..16fd925 --- /dev/null +++ b/_posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXFlz2khcdTAwMTd9z69wkdeg6b69z1x1MDAxYlx1MDAwNq8kxI7jePlqilx1MDAxMiCMbEBcdTAwMDSEXHJJ5b9/V9iA0IJcdTAwMDXYXHUwMDFle1x1MDAxMj24rG4tre5zzl26m5/vtrZy/rjn5P7eyjmjut12XHUwMDFiffsu9yEov3X6XHUwMDAz1+tiXHUwMDE1TM5cdTAwMDfesF+fXFzZ8v3e4O+//prfYdW9zv1dTtvpOF1/gNf9XHUwMDBmz7e2fk7+Yo3bXGLuVcp3d0/29uhR5UvDXHUwMDFi7eWPRvxmcuvkomljXHUwMDFhrt3xuo15xVxiS1x1MDAwNddkVjDGgrygoZI7t+G3gubKeVnLca9aPlx1MDAxNobK7O5VO3jJvGTg971cdTAwMWKn6LW9fvByv293XHUwMDA3PbuP3zFvQM2u31xc9b1htzG77n3dafCGPb+m6bbbJ/548vRcXL3vXHJcdTAwMDb5lu3XW7nIm85cdTAwMWVaSiPls3tcdTAwMDdcdTAwMWX26/wufO1Vq+tcZlx1MDAwNtPBmJR6Pbvu+kE/UDL/lqCNvYPGZFx1MDAwMP6JPr9l93tcdTAwMGbPyVxygpNQy1x1MDAxYydcdTAwMTggypnUXHUwMDA2KOWzmjlcdTAwMTBcdTAwMTiLXHUwMDE2VrzuXHUwMDA0XHUwMDEzVFx0aVx1MDAwNFx1MDAwNzG/zVx1MDAxZJRcdTAwMTBcZv7kqU27PXDmXVx1MDAxOfTizj1Q7lvaXHUwMDFkttuT2l9cdTAwMWZcdTAwMTZBM8VD2+06uYRcdTAwMTZxXHKpTVx1MDAxMpRcdTAwMGKpXHTVXHUwMDE5mnRcdTAwMGbO/O7B4ZXq71x1MDAwZnbKbs0uXHUwMDFk3JyfXHUwMDFmOSnDXHUwMDFiXHUwMDE5osWB5WtcZix9ZGCnsKWWkEwzoVx1MDAxNVx1MDAxOGa0NItcdTAwMWPBOktcdTAwMTClhKBAXHUwMDA1U1x1MDAxMcIwYixNteDEgJHCpHHgPZlcdTAwMWPL8Vx1MDAxZr1mykAqwVx1MDAxMnhoIFx1MDAxYV/EQCZcdTAwMTDSKIspJVx1MDAxOcVqbZSMXCJcdTAwMTGIXHUwMDAyJolcdTAwMTSwMbbjgFx1MDAwYt3e89ywXlx1MDAwNcf8v60tSi1jhDKUcCBcXFxuPlx1MDAxYqfgyGsyO/vnQ+JcdTAwMDNcZrNAsVlfUFx1MDAxOb5f0sVeUI89LS+NXHUwMDA1+KzpQTd62lxuXHUwMDFm9y7yoFxc21x1MDAxZfhFr9NxfSTUUdCJXHUwMDBmRFx1MDAwZVxyjN33XHUwMDBi/b5313LsRrTW6TaidUslwGm33d4gUVx1MDAwNWSqLilluEZJm6PrMVxyOKl8rnruWNDeeaF16en9SzZory/xXHUwMDEwhelcdTAwMTMqwbwkYD6nMmpcdTAwMWSBp9q4TPxu2jVCRJzfnCRY2HDhXHUwMDAzhYVRIKQ0z8PgtVxmRkguI1DhoDXjQmU3XHUwMDE35ZG4rlxmXHUwMDBl/IvjwsdyoTv8XHUwMDA0hXzlTUCFaWJcdTAwMTlNXGJooakyclx1MDAxMTdcXDNjXHUwMDE5wlGrpCCMRd2UlUCU6EzNXGZcdTAwMDVcdTAwMTPGXCLUXHUwMDE4RTlFVWNcdIZcdTAwMDKVyVwiXHUwMDA2LTlj3CCYXHUwMDE4j8JcZtVOo3ix0HdkxtmksVx1MDAxOS3FRM+23W7D7V4lqFlKzSP2ZTYyk5NHXHUwMDA1O7XDgiNcdTAwMWbvq7ch4OippdFSKkNcdTAwMThcdTAwMTUrKDhxvO39s6rrVr/sVndGXHUwMDAyisWD6jpe3MtcdTAwMTFSXHUwMDAwxFwiXHUwMDFi2Ey7XHUwMDAxdM2RSb5ZgnaHXHUwMDBiXHUwMDFmSCXRY9FcYqQ1OLWpdi9cdTAwMDGKSLX0XFyjoKFLXHUwMDBimXHyRdNv9u1Z40RcdTAwMWXog+pX0mLl4+JbkO9nQFx1MDAwYoWa1lx1MDAxYqBcdTAwMDVcdTAwMWRSxoyhz4KWmYbl9ktHRd6kZ83vI+9Q2LJ8cXj5KTdVtvVcdTAwMWNcdTAwMDKShiiKfjRcdTAwMTilXHUwMDE1yVxmqeb3as25qPRcdTAwMWTfvYD+ob683jn88Vx1MDAxNiBcdTAwMTV4XHUwMDA0T+s8PmL3k3DFIYYryoEyioDjq1x1MDAwM+vNmXa5cFx1MDAwM/bGKzLeafRRNI0+nFx1MDAxYoLhXHUwMDE3yW64zVHpqulefv1xd144bqtKhXxcdTAwMDT1NthcdTAwMTNccr0w6NxMkHldOs2E0IsqncBcdTAwMWNIYFx1MDAwZVx1MDAwMVx1MDAwNVJK9Vx1MDAxYjjFoT5cdI48vFx06lCI5VhnaVx1MDAwYoxlhJI0Szb1njtn3nhcdTAwMWa2y1x1MDAwN1x1MDAxZm8rXHUwMDFk09uvKufiXHUwMDE03lxudyxQXFwwhKshoVx1MDAwNPLMXGZZXHUwMDEyo1x1MDAxZC24XHUwMDExaI43YlU0YT9jlYZsrOJcdTAwMWNcdTAwMWKEMfNcdTAwMWFcdTAwMTmNt0aqUJdcdTAwMDTH6+KU74z8RE6lpncokdrgR5ns3lxcXHUwMDBm45CWXejuXHUwMDFj2rdcdTAwMTfC3dsnbO/idc32pFx1MDAwNFxinDOLS1x1MDAwMppcdEExMIpwilxiZXFcdTAwMDXYXHUwMDE3hKGBjpI9lFx1MDAwMMRjTUZcdTAwMTFcdTAwMTYnVCjKn1opaShVlGq9OqFWSfI3va5/4v5cYroqXHUwMDE00Vx1MDAwNqW7dsdtj1x1MDAxN4ZnXHUwMDAyLnzBaafWt8OfP3AmWo7PgIWLXHUwMDBibfeqO5F6p7lcYkvfrdvtWbXv9XJrwVx1MDAxYVK9LCpcdTAwMDWVkpjsluK60rj8XjtcdTAwMWF1rvbG11ejWm+/svtpnfTIXHUwMDBi4llwsFx1MDAxODdoXHUwMDBiXHUwMDAwzVwiRPFMXHUwMDE1sTRcdTAwMTFcdTAwMTJcdTAwMThcdTAwMWFcdTAwMTFmhEhcdTAwMDX0RrNaQmWBNFx1MDAxMEZcdTAwMDJSwWuE9JHTXHUwMDFkvlx1MDAxOKrv8Ta8Ln0+Oy19PyuWP+W3S62qNsNQlnz5jL+IhqXchFx1MDAxY+s/M/6boGuePVeMXHUwMDFhiE2k55ZN+CuFfCRcIpOHusZ8/1x1MDAxYUJIiNFG0Vx1MDAxNVx1MDAxMsWlXHUwMDBiXttWN1x1MDAwNWH7JXHQ8z1TPfVfuVx1MDAxMspFJVRRdrBFJfw3hZBSobXmWv1cdTAwMTHCXHTcitelUq0z7I7qXHUwMDA3tz/E3vFNt3e8XHUwMDE3XHUwMDE3Qjvwg1x1MDAxN2VcdTAwMTBjJGpcdTAwMDVDjqFcdTAwMDczisDiqFx1MDAwYsK0pSgjiiqOXHUwMDAwkbFcdTAwMTFcdTAwMGKL5mzEVtDH96LJXHUwMDFhdf682vhcdTAwMWOLZtaNzqZcdTAwMTBcdTAwMDZcYvxnkSiOUkdcdTAwMGJn4siNwZhVZ5mLSFx1MDAxNsdZ9ZPGdCFcdTAwMThErn9cdTAwMTe5L2tAlyVG/Tl7zXR14MGEXHUwMDBmbuv73dmOO2w1eMvOd/vj5md+m5s3XHUwMDEwKVxcXHUwMDFmXHUwMDA2n04sI1xmVdpcdTAwMTim8Fx1MDAxZmlCk565K7s30ZpgVpRzXHUwMDFjr2DdiyDy4Ypfi+3NXHUwMDFhgD6wcFx0m1vDUeHbzrC4274rOJ3KXf/0tnOclc3RXFw7SXBqaFx1MDAxMmfDhY+zltRcdTAwMTRo8duxXHUwMDE2UaJcdTAwMTEo8aWBSz1cdTAwMWFcbtKgdykzJaxfkrV5ukjb4PxlmLs8gVx1MDAxM8X2ylx1MDAxNEqezctCIcFcYrXQXHUwMDA1RUngXFxIXHUwMDFhS3AwY2FMLI1iRFOlYuRS2lx1MDAwMpCIOVxmLZmGpHUngLJD8EVcYlx1MDAwYlTyIJm+XHUwMDAy8+pcdTAwMDZssH875lx1MDAwMaVGXHUwMDBiQ7RMoJ5KXeOBJlZpbbL57i9JvVSYXHUwMDA0Rz6OkKek5cZmM08xUpBKSYrBgGL4P1x1MDAwZl01s5ugXHUwMDE1XHJcdTAwMTKFXHUwMDE4MKCJnS5cdTAwMTj6laxcYmmNWr6WXCLcKIKGWkqheLB8mXLKkKaxZoHFJWJcdJ0vwIZcdTAwMDGhj1vzjdXoRpjW1a5bvN6vflx1MDAwM7ZdXHUwMDFk3Hw9onE1WoxMJ/ZcXPKoPVx1MDAwZlNqlqSgc/LNo6a5OfrjhKckKFx1MDAxNHrSVEhcdTAwMTZbqFx1MDAxMXRqTGhCmlx1MDAwMlxmXHUwMDFkcXhcdTAwMDJNmVx1MDAwNo396mDYrda8xjjUwY9Hn2zhQatEk4nBqVhcdTAwMDLib3atsMuGfHhwWu5dd4/O4ETfZVx1MDAwMjFk2lujxYZcdTAwMTj+z7ukyVx1MDAxOOY6SFtzXHUwMDEzXHUwMDBiXHUwMDE5J45GKoa5XHUwMDE0XHUwMDEy5TLTXHUwMDE2loxcdTAwMTj+glx1MDAxMH6t6F1u2pagV4BkXHUwMDE2MMLR18MwUIRmXHUwMDAwXHUwMDFlXHUwMDFjQjBcdTAwMTY6g1pcdTAwMDFcdTAwMGIyyCZcdTAwMDZsSrIhW1pEg5RcXFx0XGYygSqanmL7z/uAKflkiq5cdTAwMTI3YdDOsVx1MDAxZSfAXHUwMDE061x1MDAxYaN27FW2XHUwMDFl1ENrXHUwMDA0l6fZtlx1MDAxZVx1MDAwYjvwgp3Do7Y7arXKI/e4Y39uXvcvXHUwMDBm56tcZuOMes1cdTAwMDZh8ON8XFxtqer2qNM8qZcrfneXl+OU6jt1/1x1MDAxZeKLvMKxtDT68yrYLFx1MDAwNpF9XHUwMDAyXHUwMDAyXHUwMDE4tSgxXHUwMDE0XHUwMDE0YVxc8Vx1MDAxOKlYQlx1MDAwNlx1MDAwM+JcdFxmYXGjXHUwMDE0uqGcKVxyNFx1MDAwNIEopVx1MDAxOGc2X3GNx7+7ay9MpjnCPLuZP3VLX5o15u02S6W9olx1MDAxOH6LIywz53BsqFCEJIVd6Zuj0PfWXHUwMDFjaJZcdTAwMDVcdTAwMTErTOE8SPl4fPipWVx1MDAxZXzeIcViaUe0XHUwMDBl9z9+XVx1MDAwMXdUWyjTZjLLIU10XHUwMDE3I1x1MDAxMGZh0Fx1MDAxMmxcdTAwMGLgMim+Z1x0ak6fXHUwMDFiedEl979cdTAwMDPygGCMXHUwMDA2hJuk/cIydXOuXHUwMDAyalhcdTAwMTBTP1x1MDAwN/ZqN2enh9/Lx/omr8/Vl8rns/H5+Vxu2JPcYlx1MDAxOHNwhrEnXHUwMDA2/VHs8SC3RIhRXHUwMDFjXHUwMDE4XHUwMDBiLXP5g71cdTAwMTfGXHUwMDFlJVxuwzvJXHUwMDEyZ2eWbFxmZ6BxfCVZb3om9EHLXHUwMDFkhSVcYk2+MYbQ5Mzn+pNcdTAwMDd6lclcdTAwMDNRR0e58VZRt85kn6BGXHUwMDEwnfzTXHUwMDA3oZn26Fx1MDAwNjWgwa9cZqy/XHUwMDEwYlb9zLNcdTAwMDZPsZv7SWf1aJBblSpYRVwiqGJJ03pgXHRQMlhIwLVk6sHVXTk9udxcIoRcdTAwMWFFLdRi0MKgXHUwMDFlo39hgMbbJCxcdTAwMTI6TIbc5GYzjT+aLdE9MVx1MDAwNa/cV82TZpH1WaNcdTAwMWFcdTAwMTeLpKg4plx1MDAxNeElzTOtMFx0WrFaYvK/K1x1MDAxNSmWJ5jkYIwmpiTT/W2OXHUwMDFlOqVcdTAwMDSeYF3APCVcdTAwMTlEn9VB/Vx1MDAxNVx1MDAwNKDvXHUwMDFlXHUwMDA0JWf3eie+7TszRmJ/u42HNk1cdTAwMTGYu3Wdu+2kX1x1MDAxZJhcdTAwMWNcdTAwMDEjfr379X+oXHUwMDEy4fkifQ== + + + + UmbraPenumbraPenumbrar_sun_bodyRsunRbodyr_body_sc \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 58a12cc..18dc08d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2233,6 +2233,26 @@ function init_posts_list() {

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

+ + +
+
April 1, 2021
+
+
Anson Biggs
+
+
+
+ +
+
+

ISS Eclipse Determination

+
+
Julia
+
Astrodynamics
+
+

Determining how much sunlight a body is receiving.

+
+
diff --git a/docs/index.xml b/docs/index.xml index a3eb248..0bfe54a 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -18,5 +18,15 @@ https://projects.ansonbiggs.com/posts/2021-04-01-air-propulsion-simulation Thu, 01 Apr 2021 00:00:00 +0000 + + ISS Eclipse Determination + Anson Biggs + https://projects.ansonbiggs.com/posts/2021-04-14-iss-eclipse-determination + Determining how much sunlight a body is receiving. + Julia + Astrodynamics + https://projects.ansonbiggs.com/posts/2021-04-14-iss-eclipse-determination + Thu, 01 Apr 2021 00:00:00 +0000 + 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 index 495f6cf..2030850 100644 Binary files a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-6-J1.png 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 index d261f7e..35556bb 100644 Binary files a/docs/posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation_files/figure-html5/unnamed-chunk-7-J1.png 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/citations.bib b/docs/posts/2021-04-01-air-propulsion-simulation/citations.bib new file mode 100644 index 0000000..680a7cc --- /dev/null +++ b/docs/posts/2021-04-01-air-propulsion-simulation/citations.bib @@ -0,0 +1,54 @@ + +@book{shackelford_introduction_2015, + address = {Boston}, + edition = {Eighth edition}, + title = {Introduction to materials science for engineers}, + isbn = {9780133826654}, + publisher = {Pearson}, + author = {Shackelford, James F.}, + year = {2015}, + keywords = {Materials} +} + +@book{curtis_orbital, + title = {Orbital mechanics for engineering students}, + isbn = {9780128240250 9780323853453 9780081021330}, + language = {English}, + author = {Curtis, Howard D}, + year = {2020}, + note = {OCLC: 1235349370}, + publisher = {Butterworth-Heinemann Publications}, + edition = {Fourth edition} +} + + +@misc{thrustcurve, + title = {Rocket {Motor} {Data}}, + url = {https://www.thrustcurve.org/}, + author = {Coker, John} +} + + +@book{cengel_thermodynamics, + address = {New York}, + edition = {Eighth edition}, + title = {Thermodynamics: an engineering approach}, + isbn = {9780073398174}, + shorttitle = {Thermodynamics}, + publisher = {McGraw-Hill Education}, + author = {Çengel, Yunus A. and Boles, Michael A.}, + year = {2015}, + note = {OCLC: ocn869741544}, + keywords = {Thermodynamics} +} + +@book{sutton_rocket_2001, + address = {New York}, + edition = {7th ed}, + title = {Rocket propulsion elements}, + isbn = {9780471326427}, + publisher = {John Wiley \& Sons}, + author = {Sutton, George P. and Biblarz, Oscar}, + year = {2001}, + keywords = {Rocket engines} +} 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 d30cdde..5873579 100644 --- a/docs/posts/2021-04-01-air-propulsion-simulation/index.html +++ b/docs/posts/2021-04-01-air-propulsion-simulation/index.html @@ -124,12 +124,12 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ @@ -2127,14 +2127,13 @@ document.addEventListener('DOMContentLoaded', function() { Show code
using Plots
-plotly()
-theme(:ggplot2); # In true R spirit
-
-using Unitful
-using DataFrames
-using Measurements
-using Measurements: value, uncertainty
-using CSV
+theme(:ggplot2); # In true R spirit + +using Unitful +using DataFrames +using Measurements +using Measurements: value, uncertainty +using CSV

The Simulation

@@ -2215,7 +2214,7 @@ Show code )
-Air Proplsion Simulation +Air Proplsion Simulation

Figure 1: Air Proplsion Simulation

@@ -2244,7 +2243,7 @@ Show code ylabel!("Thrust (N)")
-Rocket Motor Data: [@thrustcurve] +Rocket Motor Data: [@thrustcurve]

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

diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/geometry.svg b/docs/posts/2021-04-14-iss-eclipse-determination/geometry.svg new file mode 100644 index 0000000..b139094 --- /dev/null +++ b/docs/posts/2021-04-14-iss-eclipse-determination/geometry.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2aW1PiSFx1MDAxNMff51NY7OuQ7ftl31C8wYhcdTAwMTd0ULe2qFx1MDAwMFx1MDAwMYKBYFx1MDAxMlx1MDAxNGdrvvueRIVcdTAwMTBcdTAwMTIn4DhizebBku6k0zn5nf85p9P/ftraKlx1MDAwNFx1MDAwZmOr8NdWwZq2TcfueOZ94XPYfmd5vu2OoItEv3134rWjM/tBMPb/+vPP+Vx1MDAxNUbbXHUwMDFkPl5lOdbQXHUwMDFhXHUwMDA1Ppz3N/ze2vo3+lx1MDAxYrtPxzaH7qhcdTAwMTOdXHUwMDFldcxvxFmyseaOontiLjSlXG7PT7D9MtwrsDrQ2zVcdTAwMWTfmveETVx1MDAwNSlcdTAwMDN7r76/j09qZ1x1MDAxZHe6XzyZspv5Tbu249SDXHUwMDA3J5pS23N9v9g3g3Z/foZcdTAwMWZ47o3VsDtBP5xAon12re+CXHTmV3nupNdcdTAwMWZZvv9st6jVXHUwMDFkm207eFxix0Fo1mqOetFcdTAwMTjzlmlkXHUwMDA0NW9cYi8pclx1MDAxY2t5vP2O67heePvAM0f+2PTA5vNJtMz2TVx1MDAwZmYy6szO+6NtdVjHnJ9z//RgRMzH7lt2r1x1MDAxZkBjrM23XCJcdTAwMTNjRoXSXHUwMDA0x95AeIfxYSd61f8kzdM3vfGTXHUwMDE5XG5++CM2u3Biu4+cPF9cdTAwMWX1ff+cToxjj6xUXFxcdTAwMTDN5Fx1MDAwNUtJkUZa5Vx1MDAwNqa4d1jpSe/A363aLbN8eHN5eWJlXHUwMDAwk3jpi6iwNVDBOVHBXHUwMDA2XHUwMDE3VFGuJNFUK6FcdTAwMTfRgT6DIyk5x1x1MDAwNHMqXHUwMDEzXHUwMDFjgUVcZoVcdTAwMTVnSFx1MDAxMy24zoLqXHUwMDBmXHUwMDE0XHUwMDFkL1x1MDAwM5U851x1MDAxOSgsiMHhUFx1MDAwNCm4XHUwMDExJVwihS8tXHIqpaBcdTAwMTi6lZZcIolcdTAwMWJBklCBXHUwMDA0J2+C26xz7NpxsVxuj/l/W4CRoTWXXHUwMDFhI0ZcdTAwMTBcdTAwMTOczd5TeFx1MDAxNFx1MDAxNZr9+udz6lx1MDAwMJpcdTAwMWFE0pktsIhfL/CiXHUwMDE15I9GK1xubVx1MDAxMFx1MDAxOOv5wK9cdTAwMWFthYf7lFx1MDAxOKjgmH6w41x1MDAwZYd2XHUwMDAwXHUwMDBldVx1MDAxMlx1MDAxYVx1MDAxMWw4mjhO7MWYXlDyPPe+b5mdZK816iT7XpRcdTAwMDDLceyxn6pcdTAwMDIqO2ggXCKFJpzmj1x1MDAxYfXacdO1XHUwMDFmOFx1MDAxZV+W+teuOrimvrN+1CBJTn+iXHUwMDE0LEZccoZFMmpcdTAwMTCWXHUwMDE5NXI5eNdsIcSXXHUwMDFknKGUiFx1MDAxMW988mGuJeFcdTAwMDJewOZEXGalslhRkiGq9VxuXHRGdcpcdTAwMDc1/zC4Oi19qZZGkyNSKtY+XHUwMDA0KlQhQyuEiOJcbkstXHUwMDE2uWGKakMjXHUwMDA2YiUgwtJk5rNcdTAwMTJEqenJLFJQrlxyhLWWmGGQNZpcdTAwMTIpQJpcZqS5UJQyXHIwxXz5OTOhRIF60dhz5OYsmmzOUFx1MDAxMVx02rY96tijXoqcZfT8IMDM3kz044eKnWmw8Cgu2+pjKDiAlinhQKFcdTAwMDZtUVwit19cIsvdPmg0bbt5ttfcnXKys3PYXFwnj/t1XHUwMDFlyVx0WUr5yevEm1x1MDAxMNWyRFp2llwi3ng531x1MDAxN5CzKCBpXHKneq14v0CKyNRvcFx1MDAwNs0owSg3J2dcbn8171x1MDAxYZ26OFSHzXPUp9XTnY+g329AXHUwMDBiJi2lXkFcdTAwMGKkpDSMnu9AS2aox1moMEiSmWQyf2nYvW22rKuaZ1x1MDAwNfZcdTAwMTXxKup6sFv59lx1MDAxMVBcdEP9z81cbn9cdTAwMTDQ03hhJGU1gYCyXHUwMDAzSGusJny4mC1cdTAwMTYuXHUwMDAwa2xQVM7ynljSvrSyQoVcdTAwMTZcXKygtPqk3Ova1+ff7i9Lp46s1dBcdTAwMTdcIj+G+ySLKqZeWVSxtrC6KUVcdTAwMTWWKsV1SIrrQFFLhFx1MDAxMPI3SHdjNlx0j1wi+Vx1MDAxML6DXHUwMDE5z05nJVOcIEJyO0/DfTgg29XDL3e1oVx1MDAxZVx1MDAxZjSldXVBPorzXHUwMDE4RDJOgVeNYmv7s0BkXGIoZFx1MDAxNGeaXHUwMDEzLV/lVlmr22GVlMutXHUwMDE4g1x0QTm8xmLFR/OqmEnCY7OcKrCmQZpTvfBpSGrI6LTC+fO5yvmkcXZ+M6zLmzNpi1bj7Li2t9klXCLUNslMXHUwMDBlideFXCIo7yydkvRztewxMUl7jkPh91x1MDAxNahcdTAwMTLXiUOrrNB33VFQt7+FXHUwMDE2iVx1MDAxNaNh6545tJ2HXHUwMDA1i0b0hMu4k1H82X0r0mpcdTAwMTiBLJxacuzeKJJyq7tIXWC3TWfWXHUwMDFkuOPCWtSKzFwiXHUwMDA06lVMhERcIn8ksPTYujgoV6uVnuraqFx1MDAxNOivtLLZ1HKytCr9VtQqmotaRCBcdTAwMDTTtVxujzendtvtPGxcdTAwMDS2sVx1MDAxYzcptuHqMNNsXHUwMDA1sVx1MDAxZDuO3TdLo92KeXfF7f1cdTAwMDNE968+xod4RlxyJlx1MDAxMFGUc6xin5KfSObSYJJcdTAwMTCNXHUwMDEw1XFHTmLdhWPN9Fx1MDAwNeWjWmiMJcaxz1x1MDAxYptD9cWw5ZmbgXVmUUs4ZFx1MDAxMJTr/DXtoNa5vm2dTIe9/YdBb9pcdTAwMWFcdTAwMWbU9o7WXHUwMDEx41/IM2fEoExD4lxyzytIkmcskaFcdTAwMTBcdTAwMTeEQsZONeeZQL9qe1x1MDAwMJd5kIb4iEKnXCKbiPSJNZr8cqrX2zfFKIM8g66w2DlcdTAwMTmUj1x1MDAxYlx1MDAxN+Xbxk71qLhd7jeVnrziu+av5Du52Fx0ger9N05RXCIp1uRcdTAwMWS+gq+ug4xijiHY5dfB8lx1MDAxNWtty5tcdTAwMTI3gzI/XHUwMDFjXHUwMDA3rm5eXHUwMDA0XHUwMDFiroNiUVx1MDAwN2VcdTAwMTJcdTAwMWG6qIPvKYNcdTAwMThzpVx1MDAxNFPyt5fBR9yOy6f9XHUwMDAxcU+buqzG07pLyIB58+GeyfesdvD48lx1MDAxM+VcYmZcdTAwMDZcdTAwMTZcdTAwMTJ8klx1MDAxMCRVcn9cdTAwMWPW2lx1MDAxMFxiI7C5lLGPWc8vjaatJS3jxlxyyZFkXFxThYniXCKbIMqoyVZcXNp6342Icfqe2qDVor2784NqpdL4Wqo0ykdm7U5cdTAwMGZcbk/9q0A6W1xcgDpDarm8MSDKdrPXV1x0RDswOs9cdTAwMTPullx1MDAxZFwic3XqXHUwMDExvofWeGB+8Y+6029jsnOCzsz7h3p++LCihlx1MDAxMFx1MDAwMoH8MKGQSMInlVx1MDAwMeWpXHUwMDAyOinQo5fp48v04bemL7mP4HegXHUwMDBmpEErXHUwMDA0r2sprYroy0y2NFx1MDAxM5TBxXmi58rwfVVFetOUjmndXuPB+XGjim7vV1A+XG7SJsK9o1gz8CueoI9gbCBccjFcdTAwMTHopFxcYv4/fu8mflxmQcquhFhK08JOlS1+klOqXHUwMDE4zbWkmJJccsyfaLdy4tjTfr86tU+H5nF34F1XjmZP9Fx1MDAwMqSdy54kw6Or4t5Jo8nubva7XHUwMDE1vLNcZuliYvoojjxcdTAwMTRHSjDXmjG69LGIXGJD8LCWQVx1MDAxMisml+jESC/jSXhcdTAwMWGeXHUwMDEwIFx1MDAwNCTviGiNfv7mxlx1MDAwNUL7Zrs/8ayfmfOuwuhcdTAwMWHwcVx1MDAwMFx1MDAwZjRiaVx1MDAwMTCqZLKVT8NcdTAwMTTCXHUwMDA17bWVbym5rMPTWW3PjGeLsSw1lna9kKWuknWmJbFYPcL+6cmRXHUwMDBi5nhcXFx1MDAwZswg7HtEXHUwMDFm7G13XHUwMDEycyrc2db9dtqO6uhcYlx1MDAxZOn7p+//XHUwMDAxpv8zXHUwMDAyIn0= + + + + SunBodyUmbraPenumbraPenumbraSpacecraft \ No newline at end of file diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/index.html b/docs/posts/2021-04-14-iss-eclipse-determination/index.html new file mode 100644 index 0000000..b9a1862 --- /dev/null +++ b/docs/posts/2021-04-14-iss-eclipse-determination/index.html @@ -0,0 +1,2259 @@ + + + + + + + + + + + + + + + + + + + +Anson's Projects: ISS Eclipse Determination + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

ISS Eclipse Determination

+ + + +

Determining how much sunlight a body is receiving.

+
+ +
+ Anson Biggs https://ansonbiggs.com + +
04-01-2021 +
+ +
+

Determining the eclipses a satellite will encounter is a major driving factor when designing a mission in space. Thermal and power budgets have to be made with the fact that a satellite will periodically be in the complete darkness of space with no solar radiation to power the solar panels and keep the spacecraft from freezing.

+

What is an Eclipse

+
+Geometry of an Eclipse +
+
+Body Radius’s and Position Vectors +
+

The Code

+
+
+ +Show code + +
using Unitful
+using LinearAlgebra
+using SatelliteToolbox
+using Plots
+using Colors
+theme(:ggplot2)
+
+
+
+
ISS = tle"""
+ISS (ZARYA)
+1 25544U 98067A   21103.84943184  .00000176  00000-0  11381-4 0  9990
+2 25544  51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621
+"""
+
+
+
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
+time = 0:0.1:((24 / ISS[1].n) .* 60 * 60);
+o, r, v = propagate!(orbit, time);
+
+
+
function sunlight(Rbody, r_sun_body, r_body_sc)
+    Rsun = 695_700u"km"
+    
+    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
+    
+    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
+
+    θu = atan(Rbody / hu)
+    du = hu * sin(θu) / sin(θe + θu)
+
+    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
+    dp = Rbody * sin(θp) / cos(θe - θp)
+
+    S = 1
+    if (θe < π / 2) && (norm(r_body_sc) < du)
+        S = 0
+    end
+    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
+        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
+    end
+
+    return S
+end
+
+
+
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m")
+
+

Plotting the Results

+
+
+ +Show code + +
light_range = range(colorant"black", stop = colorant"yellow", length = 101);
+light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
+
+plot(
+    LinRange(0, 24, length(S)),
+    S .* 100,
+    linewidth = 5,
+    legend = false,
+    color = light_colors,
+);
+
+xlabel!("Time (hr)");
+ylabel!("Sunlight (%)");
+title!("ISS Sunlight Over a Day")
+
+
+Rocket Motor Data: [@thrustcurve] +

+Figure 1: Rocket Motor Data: [@thrustcurve] +

+
+
+
+ + + +
+ +
+
+ + + + + +
+

Corrections

+

If you see mistakes or want to suggest changes, please create an issue on the source repository.

+

Reuse

+

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://gitlab.com/lander-team/air-prop-simulation, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

+

Citation

+

For attribution, please cite this work as

+
Biggs (2021, April 1). Anson's Projects: ISS Eclipse Determination. Retrieved from https://projects.ansonbiggs.com/posts/2021-04-14-iss-eclipse-determination/
+

BibTeX citation

+
@misc{biggs2021iss,
+  author = {Biggs, Anson},
+  title = {Anson's Projects: ISS Eclipse Determination},
+  url = {https://projects.ansonbiggs.com/posts/2021-04-14-iss-eclipse-determination/},
+  year = {2021}
+}
+
+ + + + + + + diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png new file mode 100644 index 0000000..98db750 Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J1.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png new file mode 100644 index 0000000..54b467f Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J2.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png new file mode 100644 index 0000000..f6ded34 Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J3.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-2-J4.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png new file mode 100644 index 0000000..98db750 Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J1.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png new file mode 100644 index 0000000..54b467f Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J2.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png new file mode 100644 index 0000000..f6ded34 Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J3.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-4-J4.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png new file mode 100644 index 0000000..c03875f Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/preview.png b/docs/posts/2021-04-14-iss-eclipse-determination/preview.png new file mode 100644 index 0000000..0b30551 Binary files /dev/null and b/docs/posts/2021-04-14-iss-eclipse-determination/preview.png differ diff --git a/docs/posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg b/docs/posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg new file mode 100644 index 0000000..16fd925 --- /dev/null +++ b/docs/posts/2021-04-14-iss-eclipse-determination/vectors_radiuss.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXFlz2khcdTAwMTd9z69wkdeg6b69z1x1MDAxYlx1MDAwNq8kxI7jePlqilx1MDAxMiCMbEBcdTAwMDSEXHJJ5b9/V9iA0IJcdTAwMDXYXHUwMDFle1x1MDAxMj24rG4tre5zzl26m5/vtrZy/rjn5P7eyjmjut12XHUwMDFiffsu9yEov3X6XHUwMDAz1+tiXHUwMDE1TM5cdTAwMDfesF+fXFzZ8v3e4O+//prfYdW9zv1dTtvpOF1/gNf9XHUwMDBmz7e2fk7+Yo3bXGLuVcp3d0/29uhR5UvDXHUwMDFi7eWPRvxmcuvkomljXHUwMDFhrt3xuo15xVxiS1x1MDAwNddkVjDGgrygoZI7t+G3gubKeVnLca9aPlx1MDAxNobK7O5VO3jJvGTg971cdTAwMWKn6LW9fvByv293XHUwMDA3PbuP3zFvQM2u31xc9b1htzG77n3dafCGPb+m6bbbJ/548vRcXL3vXHJcdTAwMDb5lu3XW7nIm85cdTAwMWVaSiPls3tcdTAwMDdcdTAwMWX26/wufO1Vq+tcZlx1MDAwNtPBmJR6Pbvu+kE/UDL/lqCNvYPGZFx1MDAwMP6JPr9l93tcdTAwMGbPyVxygpNQy1x1MDAxYydcdTAwMTggypnUXHUwMDA2KOWzmjlcdTAwMTBcdTAwMTiLXHUwMDE2VrzuXHUwMDA0XHUwMDEzVFx0aVx1MDAwNFx1MDAwNzG/zVx1MDAxZJRcdTAwMTBcZv7kqU27PXDmXVx1MDAxOfTizj1Q7lvaXHUwMDFkttuT2l9cdTAwMWZcdTAwMTZBM8VD2+06uYRcdTAwMTZxXHKpTVx1MDAxMpRcdTAwMGKpXHTVXHUwMDE5mnRcdTAwMGbO/O7B4ZXq71x1MDAwZnbKbs0uXHUwMDFk3JyfXHUwMDFmOSnDXHUwMDFiXHUwMDE5osWB5WtcZix9ZGCnsKWWkEwzoVx1MDAxNVx1MDAxOGa0NItcdTAwMWPBOktcdTAwMTClhKBAXHUwMDA1U1x1MDAxMcIwYixNteDEgJHCpHHgPZlcdTAwMWPL8Vx1MDAxZr1mykAqwVx1MDAxMnhoIFx1MDAxYV/EQCZcdTAwMTDSKIspJVx1MDAxOcVqbZSMXCJcdTAwMTGIXHUwMDAyJolcdTAwMTSwMbbjgFx1MDAwYt3e89ywXlx1MDAwNcf8v60tSi1jhDKUcCBcXFxuPlx1MDAxYqfgyGsyO/vnQ+JcdTAwMDNcZrNAsVlfUFx1MDAxOb5f0sVeUI89LS+NXHUwMDA1+KzpQTd62lxuXHUwMDFm9y7yoFxc21x1MDAxZfhFr9NxfSTUUdCJXHUwMDBmRFx1MDAwZVxyjN33XHUwMDBi/b5313LsRrTW6TaidUslwGm33d4gUVx1MDAwNWSqLilluEZJm6PrMVxyOKl8rnruWNDeeaF16en9SzZory/xXHUwMDEwhelcdTAwMTMqwbwkYD6nMmpcdTAwMWSBp9q4TPxu2jVCRJzfnCRY2HDhXHUwMDAzhYVRIKQ0z8PgtVxmRkguI1DhoDXjQmU3XHUwMDE35ZG4rlxmXHUwMDBl/IvjwsdyoTv8XHUwMDA0hXzlTUCFaWJcdTAwMTlNXGJooakyclx1MDAxMTdcXDNjXHUwMDE5wlGrpCCMRd2UlUCU6EzNXGZcdTAwMDVcdTAwMTPGXCLUXHUwMDE4RTlFVWNcdIZcdTAwMDKVyVwiXHUwMDA2LTlj3CCYXHUwMDE4j8JcZtVOo3ix0HdkxtmksVx1MDAxOS3FRM+23W7D7V4lqFlKzSP2ZTYyk5NHXHUwMDA1O7XDgiNcdTAwMWbvq7ch4OippdFSKkNcdTAwMThcdTAwMTUrKDhxvO39s6rrVr/sVndGXHUwMDAyisWD6jpe3MtcdTAwMTFSXHUwMDAwxFwiXHUwMDFi2Ey7XHUwMDAxdM2RSb5ZgnaHXHUwMDBiXHUwMDFmSCXRY9FcYqQ1OLWpdi9cdTAwMDGKSLX0XFyjoKFLXHUwMDBimXHyRdNv9u1Z40RcdTAwMWXog+pX0mLl4+JbkO9nQFx1MDAwYoWa1lx1MDAxYqBcdTAwMDVcdTAwMWRSxoyhz4KWmYbl9ktHRd6kZ83vI+9Q2LJ8cXj5KTdVtvVcdTAwMWNcdTAwMDKShiiKfjRcdTAwMTilXHUwMDE1yVxmqeb3as25qPRcdTAwMWTfvYD+ob683jn88Vx1MDAxNiBcdTAwMTV4XHUwMDA0T+s8PmL3k3DFIYYryoEyioDjq1x1MDAwM+vNmXa5cFx1MDAwM/bGKzLeafRRNI0+nFx1MDAxYoLhXHUwMDE3yW64zVHpqulefv1xd144bqtKhXxcdTAwMDT1NthcdTAwMTNccr0w6NxMkHldOs2E0IsqncBcdTAwMWNIYFx1MDAwZVx1MDAwMVx1MDAwNVJK9Vx1MDAxYjjFoT5cdI48vFx06lCI5VhnaVx1MDAwYoxlhJI0Szb1njtn3nhcdTAwMWa2y1x1MDAwN1x1MDAxZm8rXHUwMDFk09uvKufiXHUwMDE03lxudyxQXFwwhKshoVx1MDAwNPLMXGZZXHUwMDEyo1x1MDAxZC24XHUwMDExaI43YlU0YT9jlYZsrOJcdTAwMWNcdTAwMWKEMfNcdTAwMWFcdTAwMTmNt0aqUJdcdTAwMDTH6+KU74z8RE6lpncokdrgR5ns3lxcXHUwMDBm45CWXejuXHUwMDFj2rdcdTAwMTfC3dsnbO/idc32pFx1MDAwNFxinDOLS1x1MDAwMppcdEExMIpwilxiZXFcdTAwMDXYXHUwMDE3hKGBjpI9lFx1MDAwMMRjTUZcdTAwMTFcdTAwMTYnVCjKn1opaShVlGq9OqFWSfI3va5/4v5cYroqXHUwMDE00Vx1MDAwNqW7dsdtj1x1MDAxN4ZnXHUwMDAyLnzBaafWt8OfP3AmWo7PgIWLXHUwMDBibfeqO5F6p7lcYkvfrdvtWbXv9XJrwVx1MDAxYVK9LCpcdTAwMDWVkpjsluK60rj8XjtcdTAwMWF1rvbG11ejWm+/svtpnfTIXHUwMDBi4llwsFx1MDAxODdoXHUwMDBiXHUwMDAwzVwiRPFMXHUwMDE1sTRcdTAwMTFcdTAwMTJcdTAwMThcdTAwMWFcdTAwMTFmhEhcdTAwMDX0RrNaQmWBNFx1MDAxMEZcdTAwMDJSwWuE9JHTXHUwMDFkvlx1MDAxOKrv8Ta8Ln0+Oy19PyuWP+W3S62qNsNQlnz5jL+IhqXchFx1MDAxY+s/M/6boGuePVeMXHUwMDFhiE2k55ZN+CuFfCRcIpOHusZ8/1x1MDAxYUJIiNFG0Vx1MDAxNVx1MDAxMsWlXHUwMDBiXttWN1x1MDAwNWH7JXHQ8z1TPfVfuVx1MDAxMspFJVRRdrBFJfw3hZBSobXmWv1cdTAwMTHCXHTcitelUq0z7I7qXHUwMDA3tz/E3vFNt3e8XHUwMDE3XHUwMDE3Qjvwg1x1MDAxN2VcdTAwMTBjJGpcdTAwMDVDjqFcdTAwMDczisDiqFx1MDAwYsK0pSgjiiqOXHUwMDAwkbFcdTAwMTFcdTAwMGKL5mzEVtDH96LJXHUwMDFhdf682vhcdTAwMWOLZtaNzqZcdTAwMTBcdTAwMDZcYvxnkSiOUkdcdTAwMGJn4siNwZhVZ5mLSFx1MDAxNsdZ9ZPGdCFcdTAwMThErn9cdTAwMTe5L2tAlyVG/Tl7zXR14MGEXHUwMDBmbuv73dmOO2w1eMvOd/vj5md+m5s3XHUwMDEwKVxcXHUwMDFmXHUwMDA2n04sI1xmVdpcdTAwMTim8Fx1MDAxZmlCk565K7s30ZpgVpRzXHUwMDFjr2DdiyDy4Ypfi+3NXHUwMDFhgD6wcFx0m1vDUeHbzrC4274rOJ3KXf/0tnOclc3RXFw7SXBqaFx1MDAxMmfDhY+zltRcdTAwMTRo8duxXHUwMDE2UaJcdTAwMTEo8aWBSz1cdTAwMWFcbtKgdykzJaxfkrV5ukjb4PxlmLs8gVx1MDAxM8X2ylx1MDAxNEqezctCIcFcYrXQXHUwMDA1RUngXFxIXHUwMDFhS3AwY2FMLI1iRFOlYuRS2lx1MDAwMpCIOVxmLZmGpHUngLJD8EVcYlx1MDAwYlTyIJm+XHUwMDAy8+pcdTAwMDZssH875lx1MDAwMaVGXHUwMDBiQ7RMoJ5KXeOBJlZpbbL57i9JvVSYXHUwMDA0Rz6OkKek5cZmM08xUpBKSYrBgGL4P1x1MDAwZl01s5ugXHUwMDE1XHJcdTAwMTKFXHUwMDE4MKCJnS5cdTAwMTj6laxcYmmNWr6WXCLcKIKGWkqheLB8mXLKkKaxZoHFJWJcdJ0vwIZcdTAwMDGhj1vzjdXoRpjW1a5bvN6vflx1MDAwM7ZdXHUwMDFk3Hw9onE1WoxMJ/ZcXPKoPVx1MDAwZlNqlqSgc/LNo6a5OfrjhKckKFx1MDAxNHrSVEhcdTAwMTZbqFx1MDAxMXRqTGhCmlx1MDAwMlxmXHUwMDFkcXhcdTAwMDJNmVx1MDAwNo396mDYrda8xjjUwY9Hn2zhQatEk4nBqVhcdTAwMDLib3atsMuGfHhwWu5dd4/O4ETfZVx1MDAwMjFk2lujxYZcdTAwMTj+z7ukyVx1MDAxOOY6SFtzXHUwMDEzXHUwMDBiXHUwMDE5J45GKoa5XHUwMDE0XHUwMDEy5TLTXHUwMDE2loxcdTAwMTj+glx1MDAxMH6t6F1u2pagV4BkXHUwMDE2MMLR18MwUIRmXHUwMDAwXHUwMDFlXHUwMDFjQjBcdTAwMTY6g1pcdTAwMDFcdTAwMGIyyCZcdTAwMDZsSrIhW1pEg5RcXFx0XGYygSqanmL7z/uAKflkiq5cdTAwMTI3YdDOsVx1MDAxZSfAXHUwMDE061x1MDAxYaN27FW2XHUwMDFl1ENrXHUwMDA0l6fZtlx1MDAxZVx1MDAwYjvwgp3Do7Y7arXKI/e4Y39uXvcvXHUwMDBm56tcZuOMes1cdTAwMDZh8ON8XFxtqer2qNM8qZcrfneXl+OU6jt1/1x1MDAxZeKLvMKxtDT68yrYLFx1MDAwNpF9XHUwMDAyXHUwMDAyXHUwMDE4tSgxXHUwMDE0XHUwMDE0YVxc8Vx1MDAxOKlYQlx1MDAwNlx1MDAwM+JcdFxmYXGjXHUwMDE0uqGcKVxyNFx1MDAwNIEopVx1MDAxOGc2X3GNx7+7ay9MpjnCPLuZP3VLX5o15u02S6W9olx1MDAxOH6LIywz53BsqFCEJIVd6Zuj0PfWXHUwMDFjaJZcdTAwMDVcdTAwMTErTOE8SPl4fPipWVx1MDAxZXzeIcViaUe0XHUwMDBl9z9+XVx1MDAwMXdUWyjTZjLLIU10XHUwMDE3I1x1MDAxMGZh0Fx1MDAxMmxcdTAwMGLgMim+Z1x0ak6fXHUwMDFiedEl979cdTAwMDPygGCMXHUwMDA2hJuk/cIydXOuXHUwMDAyalhcdTAwMTBTP1x1MDAwN/ZqN2enh9/Lx/omr8/Vl8rns/H5+Vxu2JPcYlx1MDAxOHNwhrEnXHUwMDA2/VHs8SC3RIhRXHUwMDFjXHUwMDE4XHUwMDBiLXP5g71cdTAwMTfGXHUwMDFlJVxuwzvJXHUwMDEyZ2eWbFxmZ6BxfCVZb3om9EHLXHUwMDFkhSVcYk2+MYbQ5Mzn+pNcdTAwMDd6lclcdTAwMDNRR0e58VZRt85kn6BGXHUwMDEwnfzTXHUwMDA3oZn26Fx1MDAwNjWgwa9cZqy/XHUwMDEwYlb9zLNcdTAwMDZPsZv7SWf1aJBblSpYRVwiqGJJ03pgXHRQMlhIwLVk6sHVXTk9udxcIoRcdTAwMWFFLdRi0MKgXHUwMDFlo39hgMbbJCxcdTAwMTI6TIbc5GYzjT+aLdE9MVx1MDAwNa/cV82TZpH1WaNcdTAwMWFcdTAwMTeLpKg4plx1MDAxNeElzTOtMFx0WrFaYvK/K1x1MDAxNSmWJ5jkYIwmpiTT/W2OXHUwMDFlOqVcdTAwMDSeYF3APCVcdTAwMTlEn9VB/Vx1MDAxNVx1MDAwNKDvXHUwMDFlXHUwMDA0JWf3eie+7TszRmJ/u42HNk1cdTAwMTGYu3Wdu+2kX1x1MDAxZJhcdTAwMWNcdTAwMDEjfr379X+oXHUwMDEy4fkifQ== + + + + UmbraPenumbraPenumbrar_sun_bodyRsunRbodyr_body_sc \ No newline at end of file diff --git a/docs/posts/posts.json b/docs/posts/posts.json index ae5c3f8..37302f4 100644 --- a/docs/posts/posts.json +++ b/docs/posts/posts.json @@ -14,9 +14,29 @@ "Julia", "Capstone" ], - "contents": "\r\nFor Capstone my team was tasked with designing a system capable of moving mining equipment and materials around the surface of the Moon using a propulsive landing. The system had to be tested on Earth with something 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 just napkin math to determine if the system is even feasibly and is not meant to be a rigorous study of an air propulsion system that 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\nThe Simulation\r\nI chose an off-the-shelf paintball gun tank for the pressure vessel. The primary consideration was the incredible pressure to weight ratio, and the fact that it is designed to be bumped around would be necessary for proving the safety of the system further into the project.\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. The propulsion system’s total impulse is not dependant on the nozzle diameter, so this was just done to make it plot nicely with the rest of the rocket motors since, at this time, it is unknown what the optimal thrust profile is.\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 typical day would look like during the summer in Northern 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\nThe actual simulation is 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 subtract the current mass of air in the tank by \\(\\dot{m}\\) and recalculate pressure using the new mass then repeat the whole process.\r\nThe bulk of the equations in the simulation came from (Çengel and Boles 2015), while the Thrust and \\(v_e\\) equations came from (Sutton and Biblarz 2001, eq: 2-14).\r\n\\[ T = \\dot{m} \\cdot v_\\text{Exit} + A_\\text{Nozzle} \\cdot (P - P_\\text{Ambient}) \\]\r\nThe initial pressure difference is 4190.0 ± 300.0 psi, which is massive, so the area of the nozzle significantly alters the thrust profile. The paintball tanks come with pressure regulators, in our case, 800 psi which is still a huge number compared to atmospheric pressure. While the total impulse of the system doesn’t 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 change the nozzle diameter in flight, allowing thrust to be throttled, making controlled landing easier to control.\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 # 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\nAnalysis\r\nBelow in figure 1, the result of the simulation is plotted. Notice the massive error once the tank starts running low. This is because the calculation for pressure has a lot of very uncertain variables. This is primarily due to air being a compressible fluid, making this simulation challenging to do accurately. The thrust being below 0 N might not make intuitive sense, but it’s technically possible for the pressure to compress, leaving the inside of the rocket nozzle with a pressure that’s actually below atmospheric pressure. The effect would likely last a fraction of a second, but the point stands that this simulation is wildly inaccurate and only meant to get an idea of what an air propulsion system is capable of.\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\nIn 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 with unique profiles.\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\nIn the end, the air propulsion system’s performance has a very impressive total impulse and, with more time and resources, could be a serious option for a propulsive landing on Earth. One of the largest abstractions from the Moon mission that the mission here on Earth will have to deal with is the lack of Throttling engines since any propulsion system outside of model rocket motors is well beyond the scope of this Capstone.\r\nFuture Work\r\nAfter determining that solid model rocket motors are the best option for the current mission scope, the next step is determining what motor to use. There are many great options, and deciding what thrust profile is ideal may have to wait until a Simulink simulation of the landing can be built so that the metrics of each motor can be constrained more. Instead of throttling motors, the current working idea is that thrust vector control may be a way to squeeze a little more control out of a solid rocket motor. Thrust Vector Control will undoubtedly be challenging to control, so another essential piece that needs exploring is whether an LQR controller is feasible or if a PID controller is accurate enough to control our system.\r\n\r\n\r\n\r\nCoker, John. n.d. “Rocket Motor Data.” https://www.thrustcurve.org/.\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", + "contents": "\r\nFor Capstone my team was tasked with designing a system capable of moving mining equipment and materials around the surface of the Moon using a propulsive landing. The system had to be tested on Earth with something 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 just napkin math to determine if the system is even feasibly and is not meant to be a rigorous study of an air propulsion system that would easily keep a capstone team busy by itself.\r\n\r\n\r\nShow code\r\nusing Plots\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\nThe Simulation\r\nI chose an off-the-shelf paintball gun tank for the pressure vessel. The primary consideration was the incredible pressure to weight ratio, and the fact that it is designed to be bumped around would be necessary for proving the safety of the system further into the project.\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. The propulsion system’s total impulse is not dependant on the nozzle diameter, so this was just done to make it plot nicely with the rest of the rocket motors since, at this time, it is unknown what the optimal thrust profile is.\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 typical day would look like during the summer in Northern 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\nThe actual simulation is 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 subtract the current mass of air in the tank by \\(\\dot{m}\\) and recalculate pressure using the new mass then repeat the whole process.\r\nThe bulk of the equations in the simulation came from (Çengel and Boles 2015), while the Thrust and \\(v_e\\) equations came from (Sutton and Biblarz 2001, eq: 2-14).\r\n\\[ T = \\dot{m} \\cdot v_\\text{Exit} + A_\\text{Nozzle} \\cdot (P - P_\\text{Ambient}) \\]\r\nThe initial pressure difference is 4190.0 ± 300.0 psi, which is massive, so the area of the nozzle significantly alters the thrust profile. The paintball tanks come with pressure regulators, in our case, 800 psi which is still a huge number compared to atmospheric pressure. While the total impulse of the system doesn’t 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 change the nozzle diameter in flight, allowing thrust to be throttled, making controlled landing easier to control.\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 # 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\nAnalysis\r\nBelow in figure 1, the result of the simulation is plotted. Notice the massive error once the tank starts running low. This is because the calculation for pressure has a lot of very uncertain variables. This is primarily due to air being a compressible fluid, making this simulation challenging to do accurately. The thrust being below 0 N might not make intuitive sense, but it’s technically possible for the pressure to compress, leaving the inside of the rocket nozzle with a pressure that’s actually below atmospheric pressure. The effect would likely last a fraction of a second, but the point stands that this simulation is wildly inaccurate and only meant to get an idea of what an air propulsion system is capable of.\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\nIn 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 with unique profiles.\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\nIn the end, the air propulsion system’s performance has a very impressive total impulse and, with more time and resources, could be a serious option for a propulsive landing on Earth. One of the largest abstractions from the Moon mission that the mission here on Earth will have to deal with is the lack of Throttling engines since any propulsion system outside of model rocket motors is well beyond the scope of this Capstone.\r\nFuture Work\r\nAfter determining that solid model rocket motors are the best option for the current mission scope, the next step is determining what motor to use. There are many great options, and deciding what thrust profile is ideal may have to wait until a Simulink simulation of the landing can be built so that the metrics of each motor can be constrained more. Instead of throttling motors, the current working idea is that thrust vector control may be a way to squeeze a little more control out of a solid rocket motor. Thrust Vector Control will undoubtedly be challenging to control, so another essential piece that needs exploring is whether an LQR controller is feasible or if a PID controller is accurate enough to control our system.\r\n\r\n\r\n\r\nCoker, John. n.d. “Rocket Motor Data.” https://www.thrustcurve.org/.\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-12T22:51:47-07:00", + "last_modified": "2021-04-25T12:19:22-07:00", + "input_file": {} + }, + { + "path": "posts/2021-04-14-iss-eclipse-determination/", + "title": "ISS Eclipse Determination", + "description": "Determining how much sunlight a body is receiving.", + "author": [ + { + "name": "Anson Biggs", + "url": "https://ansonbiggs.com" + } + ], + "date": "2021-04-01", + "categories": [ + "Julia", + "Astrodynamics" + ], + "contents": "\r\nDetermining the eclipses a satellite will encounter is a major driving factor when designing a mission in space. Thermal and power budgets have to be made with the fact that a satellite will periodically be in the complete darkness of space with no solar radiation to power the solar panels and keep the spacecraft from freezing.\r\nWhat is an Eclipse\r\nGeometry of an EclipseBody Radius’s and Position VectorsThe Code\r\n\r\n\r\nShow code\r\nusing Unitful\r\nusing LinearAlgebra\r\nusing SatelliteToolbox\r\nusing Plots\r\nusing Colors\r\ntheme(:ggplot2)\r\n\r\n\r\nISS = tle\"\"\"\r\nISS (ZARYA)\r\n1 25544U 98067A 21103.84943184 .00000176 00000-0 11381-4 0 9990\r\n2 25544 51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621\r\n\"\"\"\r\n\r\n\r\norbit = init_orbit_propagator(Val(:twobody), ISS[1]);\r\ntime = 0:0.1:((24 / ISS[1].n) .* 60 * 60);\r\no, r, v = propagate!(orbit, time);\r\n\r\n\r\nfunction sunlight(Rbody, r_sun_body, r_body_sc)\r\n Rsun = 695_700u\"km\"\r\n \r\n hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)\r\n \r\n θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))\r\n\r\n θu = atan(Rbody / hu)\r\n du = hu * sin(θu) / sin(θe + θu)\r\n\r\n θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))\r\n dp = Rbody * sin(θp) / cos(θe - θp)\r\n\r\n S = 1\r\n if (θe < π / 2) && (norm(r_body_sc) < du)\r\n S = 0\r\n end\r\n if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))\r\n S = (norm(r_body_sc .|> u\"km\") - du) / (dp - du) |> ustrip\r\n end\r\n\r\n return S\r\nend\r\n\r\n\r\nS = r .|> R -> sunlight(6371u\"km\", [0.5370, 1.2606, 0.5466] .* 1e8u\"km\", R .* u\"m\")\r\n\r\nPlotting the Results\r\n\r\n\r\nShow code\r\nlight_range = range(colorant\"black\", stop = colorant\"yellow\", length = 101);\r\nlight_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];\r\n\r\nplot(\r\n LinRange(0, 24, length(S)),\r\n S .* 100,\r\n linewidth = 5,\r\n legend = false,\r\n color = light_colors,\r\n);\r\n\r\nxlabel!(\"Time (hr)\");\r\nylabel!(\"Sunlight (%)\");\r\ntitle!(\"ISS Sunlight Over a Day\")\r\n\r\n\r\nFigure 1: Rocket Motor Data: [@thrustcurve]\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "preview": {}, + "last_modified": "2021-04-25T12:27:18-07:00", "input_file": {} } ] diff --git a/docs/search.json b/docs/search.json index b99dab2..7855e13 100644 --- a/docs/search.json +++ b/docs/search.json @@ -6,14 +6,14 @@ "description": "I'm an Astronautical Engineer studying at Embry-Riddle Prescott.", "author": [], "contents": "\r\nI mostly write code, but sometimes I make 3D Models. This website is where I plan on breaking down some of my more interesting findings and sharing them with the World Wide Web. If you think I could be a could fit at your company then take a look at my Resume, otherwise you can reach me on Telegram or by Email.\r\n\r\n\r\n\r\n", - "last_modified": "2021-04-14T23:03:42-07:00" + "last_modified": "2021-04-30T22:47:07-07:00" }, { "path": "index.html", "title": "Anson's Projects", "author": [], "contents": "\r\n\r\n\r\n\r\n", - "last_modified": "2021-04-14T23:03:43-07:00" + "last_modified": "2021-04-30T22:47:08-07:00" } ], "collections": ["posts/posts.json"] diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 2aab2fd..ad90148 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -10,6 +10,10 @@ https://projects.ansonbiggs.com/posts/2021-04-01-air-propulsion-simulation/ - 2021-04-12T22:51:47-07:00 + 2021-04-25T12:19:22-07:00 + + + https://projects.ansonbiggs.com/posts/2021-04-14-iss-eclipse-determination/ + 2021-04-25T12:27:18-07:00