<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/> <meta name="generator" content="distill" /> <style type="text/css"> /* Hide doc at startup (prevent jankiness while JS renders/transforms) */ body { visibility: hidden; } </style> <!--radix_placeholder_import_source--> <!--/radix_placeholder_import_source--> <style type="text/css">code{white-space: pre;}</style> <style type="text/css" data-origin="pandoc"> pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @media screen { div.sourceCode { overflow: auto; } } @media print { pre > code.sourceCode { white-space: pre-wrap; } pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } } pre.numberSource code { counter-reset: source-line 0; } pre.numberSource code > span { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before { content: counter(source-line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding: 0 4px; width: 4em; color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } div.sourceCode { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } code span.al { color: #ad0000; } /* Alert */ code span.an { color: #5e5e5e; } /* Annotation */ code span.at { color: #20794d; } /* Attribute */ code span.bn { color: #ad0000; } /* BaseN */ code span.bu { } /* BuiltIn */ code span.cf { color: #007ba5; } /* ControlFlow */ code span.ch { color: #20794d; } /* Char */ code span.cn { color: #8f5902; } /* Constant */ code span.co { color: #5e5e5e; } /* Comment */ code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */ code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */ code span.dt { color: #ad0000; } /* DataType */ code span.dv { color: #ad0000; } /* DecVal */ code span.er { color: #ad0000; } /* Error */ code span.ex { } /* Extension */ code span.fl { color: #ad0000; } /* Float */ code span.fu { color: #4758ab; } /* Function */ code span.im { } /* Import */ code span.in { color: #5e5e5e; } /* Information */ code span.kw { color: #007ba5; } /* Keyword */ code span.op { color: #5e5e5e; } /* Operator */ code span.ot { color: #007ba5; } /* Other */ code span.pp { color: #ad0000; } /* Preprocessor */ code span.sc { color: #20794d; } /* SpecialChar */ code span.ss { color: #20794d; } /* SpecialString */ code span.st { color: #20794d; } /* String */ code span.va { color: #111111; } /* Variable */ code span.vs { color: #20794d; } /* VerbatimString */ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ </style> <!--radix_placeholder_meta_tags--> <title>Air Propulsion Simulation</title> <meta property="description" itemprop="description" content="Simulating the performace of an air propulsion system as an alternative to solid rocket motors."/> <!-- https://schema.org/Article --> <meta property="article:published" itemprop="datePublished" content="2021-04-01"/> <meta property="article:created" itemprop="dateCreated" content="2021-04-01"/> <meta name="article:author" content="Anson Biggs"/> <!-- https://developers.facebook.com/docs/sharing/webmasters#markup --> <meta property="og:title" content="Air Propulsion Simulation"/> <meta property="og:type" content="article"/> <meta property="og:description" content="Simulating the performace of an air propulsion system as an alternative to solid rocket motors."/> <meta property="og:locale" content="en_US"/> <!-- https://dev.twitter.com/cards/types/summary --> <meta property="twitter:card" content="summary"/> <meta property="twitter:title" content="Air Propulsion Simulation"/> <meta property="twitter:description" content="Simulating the performace of an air propulsion system as an alternative to solid rocket motors."/> <!--/radix_placeholder_meta_tags--> <meta name="citation_reference" content="citation_title=Orbital mechanics for engineering students;citation_publication_date=2020;citation_publisher=Butterworth-Heinemann Publications;citation_author=Howard D Curtis"/> <!--radix_placeholder_rmarkdown_metadata--> <script type="text/json" id="radix-rmarkdown-metadata"> {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title","description","author","repository_url","date","fig_width","fig_align","output","categories","bibliography"]}},"value":[{"type":"character","attributes":{},"value":["Air Propulsion Simulation"]},{"type":"character","attributes":{},"value":["Simulating the performace of an air propulsion system as an alternative to solid rocket motors. \n"]},{"type":"list","attributes":{},"value":[{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["name","url"]}},"value":[{"type":"character","attributes":{},"value":["Anson Biggs"]},{"type":"character","attributes":{},"value":["https://ansonbiggs.com"]}]}]},{"type":"character","attributes":{},"value":["https://gitlab.com/lander-team/air-prop-simulation"]},{"type":"character","attributes":{},"value":["04-01-2021"]},{"type":"integer","attributes":{},"value":[6]},{"type":"character","attributes":{},"value":["center"]},{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["distill::distill_article"]}},"value":[{"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["self_contained"]}},"value":[{"type":"logical","attributes":{},"value":[false]}]}]},{"type":"character","attributes":{},"value":["Julia","Capstone"]},{"type":"character","attributes":{},"value":["../../citations.bib"]}]} </script> <!--/radix_placeholder_rmarkdown_metadata--> <script type="text/json" id="radix-resource-manifest"> {"type":"character","attributes":{},"value":["air-propulsion-simulation_files/anchor-4.2.2/anchor.min.js","air-propulsion-simulation_files/bowser-1.9.3/bowser.min.js","air-propulsion-simulation_files/distill-2.2.21/template.v2.js","air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png","air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-1.png","air-propulsion-simulation_files/figure-html5/unnamed-chunk-5-2.png","air-propulsion-simulation_files/header-attrs-2.7/header-attrs.js","air-propulsion-simulation_files/jquery-1.11.3/jquery.min.js","air-propulsion-simulation_files/popper-2.6.0/popper.min.js","air-propulsion-simulation_files/tippy-6.2.7/tippy-bundle.umd.min.js","air-propulsion-simulation_files/tippy-6.2.7/tippy-light-border.css","air-propulsion-simulation_files/tippy-6.2.7/tippy.css","air-propulsion-simulation_files/tippy-6.2.7/tippy.umd.min.js","air-propulsion-simulation_files/webcomponents-2.0.0/webcomponents.js","figure/-J2.png","figure/-J3.png","figure/-J4.png"]} </script> <!--radix_placeholder_navigation_in_header--> <!--/radix_placeholder_navigation_in_header--> <!--radix_placeholder_distill--> <style type="text/css"> body { background-color: white; } .pandoc-table { width: 100%; } .pandoc-table>caption { margin-bottom: 10px; } .pandoc-table th:not([align]) { text-align: left; } .pagedtable-footer { font-size: 15px; } d-byline .byline { grid-template-columns: 2fr 2fr; } d-byline .byline h3 { margin-block-start: 1.5em; } d-byline .byline .authors-affiliations h3 { margin-block-start: 0.5em; } .authors-affiliations .orcid-id { width: 16px; height:16px; margin-left: 4px; margin-right: 4px; vertical-align: middle; padding-bottom: 2px; } d-title .dt-tags { margin-top: 1em; grid-column: text; } .dt-tags .dt-tag { text-decoration: none; display: inline-block; color: rgba(0,0,0,0.6); padding: 0em 0.4em; margin-right: 0.5em; margin-bottom: 0.4em; font-size: 70%; border: 1px solid rgba(0,0,0,0.2); border-radius: 3px; text-transform: uppercase; font-weight: 500; } d-article table.gt_table td, d-article table.gt_table th { border-bottom: none; } .html-widget { margin-bottom: 2.0em; } .l-screen-inset { padding-right: 16px; } .l-screen .caption { margin-left: 10px; } .shaded { background: rgb(247, 247, 247); padding-top: 20px; padding-bottom: 20px; border-top: 1px solid rgba(0, 0, 0, 0.1); border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .shaded .html-widget { margin-bottom: 0; border: 1px solid rgba(0, 0, 0, 0.1); } .shaded .shaded-content { background: white; } .text-output { margin-top: 0; line-height: 1.5em; } .hidden { display: none !important; } d-article { padding-top: 2.5rem; padding-bottom: 30px; } d-appendix { padding-top: 30px; } d-article>p>img { width: 100%; } d-article h2 { margin: 1rem 0 1.5rem 0; } d-article h3 { margin-top: 1.5rem; } d-article iframe { border: 1px solid rgba(0, 0, 0, 0.1); margin-bottom: 2.0em; width: 100%; } /* Tweak code blocks */ d-article div.sourceCode code, d-article pre code { font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; } d-article pre, d-article div.sourceCode, d-article div.sourceCode pre { overflow: auto; } d-article div.sourceCode { background-color: white; } d-article div.sourceCode pre { padding-left: 10px; font-size: 12px; border-left: 2px solid rgba(0,0,0,0.1); } d-article pre { font-size: 12px; color: black; background: none; margin-top: 0; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } d-article pre a { border-bottom: none; } d-article pre a:hover { border-bottom: none; text-decoration: underline; } d-article details { grid-column: text; margin-bottom: 0.8em; } @media(min-width: 768px) { d-article pre, d-article div.sourceCode, d-article div.sourceCode pre { overflow: visible !important; } d-article div.sourceCode pre { padding-left: 18px; font-size: 14px; } d-article pre { font-size: 14px; } } figure img.external { background: white; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); padding: 18px; box-sizing: border-box; } /* CSS for d-contents */ .d-contents { grid-column: text; color: rgba(0,0,0,0.8); font-size: 0.9em; padding-bottom: 1em; margin-bottom: 1em; padding-bottom: 0.5em; margin-bottom: 1em; padding-left: 0.25em; justify-self: start; } @media(min-width: 1000px) { .d-contents.d-contents-float { height: 0; grid-column-start: 1; grid-column-end: 4; justify-self: center; padding-right: 3em; padding-left: 2em; } } .d-contents nav h3 { font-size: 18px; margin-top: 0; margin-bottom: 1em; } .d-contents li { list-style-type: none } .d-contents nav > ul { padding-left: 0; } .d-contents ul { padding-left: 1em } .d-contents nav ul li { margin-top: 0.6em; margin-bottom: 0.2em; } .d-contents nav a { font-size: 13px; border-bottom: none; text-decoration: none color: rgba(0, 0, 0, 0.8); } .d-contents nav a:hover { text-decoration: underline solid rgba(0, 0, 0, 0.6) } .d-contents nav > ul > li > a { font-weight: 600; } .d-contents nav > ul > li > ul { font-weight: inherit; } .d-contents nav > ul > li > ul > li { margin-top: 0.2em; } .d-contents nav ul { margin-top: 0; margin-bottom: 0.25em; } .d-article-with-toc h2:nth-child(2) { margin-top: 0; } /* Figure */ .figure { position: relative; margin-bottom: 2.5em; margin-top: 1.5em; } .figure img { width: 100%; } .figure .caption { color: rgba(0, 0, 0, 0.6); font-size: 12px; line-height: 1.5em; } .figure img.external { background: white; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); padding: 18px; box-sizing: border-box; } .figure .caption a { color: rgba(0, 0, 0, 0.6); } .figure .caption b, .figure .caption strong, { font-weight: 600; color: rgba(0, 0, 0, 1.0); } /* Citations */ d-article .citation { color: inherit; cursor: inherit; } div.hanging-indent{ margin-left: 1em; text-indent: -1em; } /* Citation hover box */ .tippy-box[data-theme~=light-border] { background-color: rgba(250, 250, 250, 0.95); } .tippy-content > p { margin-bottom: 0; padding: 2px; } /* Tweak 1000px media break to show more text */ @media(min-width: 1000px) { .base-grid, distill-header, d-title, d-abstract, d-article, d-appendix, distill-appendix, d-byline, d-footnote-list, d-citation-list, distill-footer { grid-template-columns: [screen-start] 1fr [page-start kicker-start] 80px [middle-start] 50px [text-start kicker-end] 65px 65px 65px 65px 65px 65px 65px 65px [text-end gutter-start] 65px [middle-end] 65px [page-end gutter-end] 1fr [screen-end]; grid-column-gap: 16px; } .grid { grid-column-gap: 16px; } d-article { font-size: 1.06rem; line-height: 1.7em; } figure .caption, .figure .caption, figure figcaption { font-size: 13px; } } @media(min-width: 1180px) { .base-grid, distill-header, d-title, d-abstract, d-article, d-appendix, distill-appendix, d-byline, d-footnote-list, d-citation-list, distill-footer { grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end]; grid-column-gap: 32px; } .grid { grid-column-gap: 32px; } } /* Get the citation styles for the appendix (not auto-injected on render since we do our own rendering of the citation appendix) */ d-appendix .citation-appendix, .d-appendix .citation-appendix { font-size: 11px; line-height: 15px; border-left: 1px solid rgba(0, 0, 0, 0.1); padding-left: 18px; border: 1px solid rgba(0,0,0,0.1); background: rgba(0, 0, 0, 0.02); padding: 10px 18px; border-radius: 3px; color: rgba(150, 150, 150, 1); overflow: hidden; margin-top: -12px; white-space: pre-wrap; word-wrap: break-word; } /* Include appendix styles here so they can be overridden */ d-appendix { contain: layout style; font-size: 0.8em; line-height: 1.7em; margin-top: 60px; margin-bottom: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); color: rgba(0,0,0,0.5); padding-top: 60px; padding-bottom: 48px; } d-appendix h3 { grid-column: page-start / text-start; font-size: 15px; font-weight: 500; margin-top: 1em; margin-bottom: 0; color: rgba(0,0,0,0.65); } d-appendix h3 + * { margin-top: 1em; } d-appendix ol { padding: 0 0 0 15px; } @media (min-width: 768px) { d-appendix ol { padding: 0 0 0 30px; margin-left: -30px; } } d-appendix li { margin-bottom: 1em; } d-appendix a { color: rgba(0, 0, 0, 0.6); } d-appendix > * { grid-column: text; } d-appendix > d-footnote-list, d-appendix > d-citation-list, d-appendix > distill-appendix { grid-column: screen; } /* Include footnote styles here so they can be overridden */ d-footnote-list { contain: layout style; } d-footnote-list > * { grid-column: text; } d-footnote-list a.footnote-backlink { color: rgba(0,0,0,0.3); padding-left: 0.5em; } /* Anchor.js */ .anchorjs-link { /*transition: all .25s linear; */ text-decoration: none; border-bottom: none; } *:hover > .anchorjs-link { margin-left: -1.125em !important; text-decoration: none; border-bottom: none; } /* Social footer */ .social_footer { margin-top: 30px; margin-bottom: 0; color: rgba(0,0,0,0.67); } .disqus-comments { margin-right: 30px; } .disqus-comment-count { border-bottom: 1px solid rgba(0, 0, 0, 0.4); cursor: pointer; } #disqus_thread { margin-top: 30px; } .article-sharing a { border-bottom: none; margin-right: 8px; } .article-sharing a:hover { border-bottom: none; } .sidebar-section.subscribe { font-size: 12px; line-height: 1.6em; } .subscribe p { margin-bottom: 0.5em; } .article-footer .subscribe { font-size: 15px; margin-top: 45px; } .sidebar-section.custom { font-size: 12px; line-height: 1.6em; } .custom p { margin-bottom: 0.5em; } /* Styles for listing layout (hide title) */ .layout-listing d-title, .layout-listing .d-title { display: none; } /* Styles for posts lists (not auto-injected) */ .posts-with-sidebar { padding-left: 45px; padding-right: 45px; } .posts-list .description h2, .posts-list .description p { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; } .posts-list .description h2 { font-weight: 700; border-bottom: none; padding-bottom: 0; } .posts-list h2.post-tag { border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding-bottom: 12px; } .posts-list { margin-top: 60px; margin-bottom: 24px; } .posts-list .post-preview { text-decoration: none; overflow: hidden; display: block; border-bottom: 1px solid rgba(0, 0, 0, 0.1); padding: 24px 0; } .post-preview-last { border-bottom: none !important; } .posts-list .posts-list-caption { grid-column: screen; font-weight: 400; } .posts-list .post-preview h2 { margin: 0 0 6px 0; line-height: 1.2em; font-style: normal; font-size: 24px; } .posts-list .post-preview p { margin: 0 0 12px 0; line-height: 1.4em; font-size: 16px; } .posts-list .post-preview .thumbnail { box-sizing: border-box; margin-bottom: 24px; position: relative; max-width: 500px; } .posts-list .post-preview img { width: 100%; display: block; } .posts-list .metadata { font-size: 12px; line-height: 1.4em; margin-bottom: 18px; } .posts-list .metadata > * { display: inline-block; } .posts-list .metadata .publishedDate { margin-right: 2em; } .posts-list .metadata .dt-authors { display: block; margin-top: 0.3em; margin-right: 2em; } .posts-list .dt-tags { display: block; line-height: 1em; } .posts-list .dt-tags .dt-tag { display: inline-block; color: rgba(0,0,0,0.6); padding: 0.3em 0.4em; margin-right: 0.2em; margin-bottom: 0.4em; font-size: 60%; border: 1px solid rgba(0,0,0,0.2); border-radius: 3px; text-transform: uppercase; font-weight: 500; } .posts-list img { opacity: 1; } .posts-list img[data-src] { opacity: 0; } .posts-more { clear: both; } .posts-sidebar { font-size: 16px; } .posts-sidebar h3 { font-size: 16px; margin-top: 0; margin-bottom: 0.5em; font-weight: 400; text-transform: uppercase; } .sidebar-section { margin-bottom: 30px; } .categories ul { list-style-type: none; margin: 0; padding: 0; } .categories li { color: rgba(0, 0, 0, 0.8); margin-bottom: 0; } .categories li>a { border-bottom: none; } .categories li>a:hover { border-bottom: 1px solid rgba(0, 0, 0, 0.4); } .categories .active { font-weight: 600; } .categories .category-count { color: rgba(0, 0, 0, 0.4); } @media(min-width: 768px) { .posts-list .post-preview h2 { font-size: 26px; } .posts-list .post-preview .thumbnail { float: right; width: 30%; margin-bottom: 0; } .posts-list .post-preview .description { float: left; width: 45%; } .posts-list .post-preview .metadata { float: left; width: 20%; margin-top: 8px; } .posts-list .post-preview p { margin: 0 0 12px 0; line-height: 1.5em; font-size: 16px; } .posts-with-sidebar .posts-list { float: left; width: 75%; } .posts-with-sidebar .posts-sidebar { float: right; width: 20%; margin-top: 60px; padding-top: 24px; padding-bottom: 24px; } } /* Improve display for browsers without grid (IE/Edge <= 15) */ .downlevel { line-height: 1.6em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; margin: 0; } .downlevel .d-title { padding-top: 6rem; padding-bottom: 1.5rem; } .downlevel .d-title h1 { font-size: 50px; font-weight: 700; line-height: 1.1em; margin: 0 0 0.5rem; } .downlevel .d-title p { font-weight: 300; font-size: 1.2rem; line-height: 1.55em; margin-top: 0; } .downlevel .d-byline { padding-top: 0.8em; padding-bottom: 0.8em; font-size: 0.8rem; line-height: 1.8em; } .downlevel .section-separator { border: none; border-top: 1px solid rgba(0, 0, 0, 0.1); } .downlevel .d-article { font-size: 1.06rem; line-height: 1.7em; padding-top: 1rem; padding-bottom: 2rem; } .downlevel .d-appendix { padding-left: 0; padding-right: 0; max-width: none; font-size: 0.8em; line-height: 1.7em; margin-bottom: 0; color: rgba(0,0,0,0.5); padding-top: 40px; padding-bottom: 48px; } .downlevel .footnotes ol { padding-left: 13px; } .downlevel .base-grid, .downlevel .distill-header, .downlevel .d-title, .downlevel .d-abstract, .downlevel .d-article, .downlevel .d-appendix, .downlevel .distill-appendix, .downlevel .d-byline, .downlevel .d-footnote-list, .downlevel .d-citation-list, .downlevel .distill-footer, .downlevel .appendix-bottom, .downlevel .posts-container { padding-left: 40px; padding-right: 40px; } @media(min-width: 768px) { .downlevel .base-grid, .downlevel .distill-header, .downlevel .d-title, .downlevel .d-abstract, .downlevel .d-article, .downlevel .d-appendix, .downlevel .distill-appendix, .downlevel .d-byline, .downlevel .d-footnote-list, .downlevel .d-citation-list, .downlevel .distill-footer, .downlevel .appendix-bottom, .downlevel .posts-container { padding-left: 150px; padding-right: 150px; max-width: 900px; } } .downlevel pre code { display: block; border-left: 2px solid rgba(0, 0, 0, .1); padding: 0 0 0 20px; font-size: 14px; } .downlevel code, .downlevel pre { color: black; background: none; font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } .downlevel .posts-list .post-preview { color: inherit; } </style> <script type="application/javascript"> function is_downlevel_browser() { if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"}, window.navigator.userAgent)) { return true; } else { return window.load_distill_framework === undefined; } } // show body when load is complete function on_load_complete() { // add anchors if (window.anchors) { window.anchors.options.placement = 'left'; window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5'); } // set body to visible document.body.style.visibility = 'visible'; // force redraw for leaflet widgets if (window.HTMLWidgets) { var maps = window.HTMLWidgets.findAll(".leaflet"); $.each(maps, function(i, el) { var map = this.getMap(); map.invalidateSize(); map.eachLayer(function(layer) { if (layer instanceof L.TileLayer) layer.redraw(); }); }); } // trigger 'shown' so htmlwidgets resize $('d-article').trigger('shown'); } function init_distill() { init_common(); // create front matter var front_matter = $('<d-front-matter></d-front-matter>'); $('#distill-front-matter').wrap(front_matter); // create d-title $('.d-title').changeElementType('d-title'); // create d-byline var byline = $('<d-byline></d-byline>'); $('.d-byline').replaceWith(byline); // create d-article var article = $('<d-article></d-article>'); $('.d-article').wrap(article).children().unwrap(); // move posts container into article $('.posts-container').appendTo($('d-article')); // create d-appendix $('.d-appendix').changeElementType('d-appendix'); // flag indicating that we have appendix items var appendix = $('.appendix-bottom').children('h3').length > 0; // replace footnotes with <d-footnote> $('.footnote-ref').each(function(i, val) { appendix = true; var href = $(this).attr('href'); var id = href.replace('#', ''); var fn = $('#' + id); var fn_p = $('#' + id + '>p'); fn_p.find('.footnote-back').remove(); var text = fn_p.html(); var dtfn = $('<d-footnote></d-footnote>'); dtfn.html(text); $(this).replaceWith(dtfn); }); // remove footnotes $('.footnotes').remove(); // move refs into #references-listing $('#references-listing').replaceWith($('#refs')); $('h1.appendix, h2.appendix').each(function(i, val) { $(this).changeElementType('h3'); }); $('h3.appendix').each(function(i, val) { var id = $(this).attr('id'); $('.d-contents a[href="#' + id + '"]').parent().remove(); appendix = true; $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix')); }); // show d-appendix if we have appendix content $("d-appendix").css('display', appendix ? 'grid' : 'none'); // localize layout chunks to just output $('.layout-chunk').each(function(i, val) { // capture layout var layout = $(this).attr('data-layout'); // apply layout to markdown level block elements var elements = $(this).children().not('details, div.sourceCode, pre, script'); elements.each(function(i, el) { var layout_div = $('<div class="' + layout + '"></div>'); if (layout_div.hasClass('shaded')) { var shaded_content = $('<div class="shaded-content"></div>'); $(this).wrap(shaded_content); $(this).parent().wrap(layout_div); } else { $(this).wrap(layout_div); } }); // unwrap the layout-chunk div $(this).children().unwrap(); }); // remove code block used to force highlighting css $('.distill-force-highlighting-css').parent().remove(); // remove empty line numbers inserted by pandoc when using a // custom syntax highlighting theme $('code.sourceCode a:empty').remove(); // load distill framework load_distill_framework(); // wait for window.distillRunlevel == 4 to do post processing function distill_post_process() { if (!window.distillRunlevel || window.distillRunlevel < 4) return; // hide author/affiliations entirely if we have no authors var front_matter = JSON.parse($("#distill-front-matter").html()); var have_authors = front_matter.authors && front_matter.authors.length > 0; if (!have_authors) $('d-byline').addClass('hidden'); // article with toc class $('.d-contents').parent().addClass('d-article-with-toc'); // strip links that point to # $('.authors-affiliations').find('a[href="#"]').removeAttr('href'); // add orcid ids $('.authors-affiliations').find('.author').each(function(i, el) { var orcid_id = front_matter.authors[i].orcidID; if (orcid_id) { var a = $('<a></a>'); a.attr('href', 'https://orcid.org/' + orcid_id); var img = $('<img></img>'); img.addClass('orcid-id'); img.attr('alt', 'ORCID ID'); img.attr('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=='); a.append(img); $(this).append(a); } }); // hide elements of author/affiliations grid that have no value function hide_byline_column(caption) { $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden'); } // affiliations var have_affiliations = false; for (var i = 0; i<front_matter.authors.length; ++i) { var author = front_matter.authors[i]; if (author.affiliation !== " ") { have_affiliations = true; break; } } if (!have_affiliations) $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden'); // published date if (!front_matter.publishedDate) hide_byline_column("Published"); // document object identifier var doi = $('d-byline').find('h3:contains("DOI")'); var doi_p = doi.next().empty(); if (!front_matter.doi) { // if we have a citation and valid citationText then link to that if ($('#citation').length > 0 && front_matter.citationText) { doi.html('Citation'); $('<a href="#citation"></a>') .text(front_matter.citationText) .appendTo(doi_p); } else { hide_byline_column("DOI"); } } else { $('<a></a>') .attr('href', "https://doi.org/" + front_matter.doi) .html(front_matter.doi) .appendTo(doi_p); } // change plural form of authors/affiliations if (front_matter.authors.length === 1) { var grid = $('.authors-affiliations'); grid.children('h3:contains("Authors")').text('Author'); grid.children('h3:contains("Affiliations")').text('Affiliation'); } // remove d-appendix and d-footnote-list local styles $('d-appendix > style:first-child').remove(); $('d-footnote-list > style:first-child').remove(); // move appendix-bottom entries to the bottom $('.appendix-bottom').appendTo('d-appendix').children().unwrap(); $('.appendix-bottom').remove(); // hoverable references $('span.citation[data-cites]').each(function() { var refHtml = $('#ref-' + $(this).attr('data-cites')).html(); window.tippy(this, { allowHTML: true, content: refHtml, maxWidth: 500, interactive: true, interactiveBorder: 10, theme: 'light-border', placement: 'bottom-start' }); }); // clear polling timer clearInterval(tid); // show body now that everything is ready on_load_complete(); } var tid = setInterval(distill_post_process, 50); distill_post_process(); } function init_downlevel() { init_common(); // insert hr after d-title $('.d-title').after($('<hr class="section-separator"/>')); // check if we have authors var front_matter = JSON.parse($("#distill-front-matter").html()); var have_authors = front_matter.authors && front_matter.authors.length > 0; // manage byline/border if (!have_authors) $('.d-byline').remove(); $('.d-byline').after($('<hr class="section-separator"/>')); $('.d-byline a').remove(); // remove toc $('.d-contents').remove(); // move appendix elements $('h1.appendix, h2.appendix').each(function(i, val) { $(this).changeElementType('h3'); }); $('h3.appendix').each(function(i, val) { $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix')); }); // inject headers into references and footnotes var refs_header = $('<h3></h3>'); refs_header.text('References'); $('#refs').prepend(refs_header); var footnotes_header = $('<h3></h3'); footnotes_header.text('Footnotes'); $('.footnotes').children('hr').first().replaceWith(footnotes_header); // move appendix-bottom entries to the bottom $('.appendix-bottom').appendTo('.d-appendix').children().unwrap(); $('.appendix-bottom').remove(); // remove appendix if it's empty if ($('.d-appendix').children().length === 0) $('.d-appendix').remove(); // prepend separator above appendix $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>')); // trim code $('pre>code').each(function(i, val) { $(this).html($.trim($(this).html())); }); // move posts-container right before article $('.posts-container').insertBefore($('.d-article')); $('body').addClass('downlevel'); on_load_complete(); } function init_common() { // jquery plugin to change element types (function($) { $.fn.changeElementType = function(newType) { var attrs = {}; $.each(this[0].attributes, function(idx, attr) { attrs[attr.nodeName] = attr.nodeValue; }); this.replaceWith(function() { return $("<" + newType + "/>", attrs).append($(this).contents()); }); }; })(jQuery); // prevent underline for linked images $('a > img').parent().css({'border-bottom' : 'none'}); // mark non-body figures created by knitr chunks as 100% width $('.layout-chunk').each(function(i, val) { var figures = $(this).find('img, .html-widget'); if ($(this).attr('data-layout') !== "l-body") { figures.css('width', '100%'); } else { figures.css('max-width', '100%'); figures.filter("[width]").each(function(i, val) { var fig = $(this); fig.css('width', fig.attr('width') + 'px'); }); } }); // auto-append index.html to post-preview links in file: protocol // and in rstudio ide preview $('.post-preview').each(function(i, val) { if (window.location.protocol === "file:") $(this).attr('href', $(this).attr('href') + "index.html"); }); // get rid of index.html references in header if (window.location.protocol !== "file:") { $('.distill-site-header a[href]').each(function(i,val) { $(this).attr('href', $(this).attr('href').replace("index.html", "./")); }); } // add class to pandoc style tables $('tr.header').parent('thead').parent('table').addClass('pandoc-table'); $('.kable-table').children('table').addClass('pandoc-table'); // add figcaption style to table captions $('caption').parent('table').addClass("figcaption"); // initialize posts list if (window.init_posts_list) window.init_posts_list(); // implmement disqus comment link $('.disqus-comment-count').click(function() { window.headroom_prevent_pin = true; $('#disqus_thread').toggleClass('hidden'); if (!$('#disqus_thread').hasClass('hidden')) { var offset = $(this).offset(); $(window).resize(); $('html, body').animate({ scrollTop: offset.top - 35 }); } }); } document.addEventListener('DOMContentLoaded', function() { if (is_downlevel_browser()) init_downlevel(); else window.addEventListener('WebComponentsReady', init_distill); }); </script> <!--/radix_placeholder_distill--> <script src="air-propulsion-simulation_files/header-attrs-2.7/header-attrs.js"></script> <script src="air-propulsion-simulation_files/jquery-1.11.3/jquery.min.js"></script> <script src="air-propulsion-simulation_files/popper-2.6.0/popper.min.js"></script> <link href="air-propulsion-simulation_files/tippy-6.2.7/tippy.css" rel="stylesheet" /> <link href="air-propulsion-simulation_files/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" /> <script src="air-propulsion-simulation_files/tippy-6.2.7/tippy.umd.min.js"></script> <script src="air-propulsion-simulation_files/anchor-4.2.2/anchor.min.js"></script> <script src="air-propulsion-simulation_files/bowser-1.9.3/bowser.min.js"></script> <script src="air-propulsion-simulation_files/webcomponents-2.0.0/webcomponents.js"></script> <script src="air-propulsion-simulation_files/distill-2.2.21/template.v2.js"></script> <!--radix_placeholder_site_in_header--> <!--/radix_placeholder_site_in_header--> </head> <body> <!--radix_placeholder_front_matter--> <script id="distill-front-matter" type="text/json"> {"title":"Air Propulsion Simulation","description":"Simulating the performace of an air propulsion system as an alternative to solid rocket motors.","authors":[{"author":"Anson Biggs","authorURL":"https://ansonbiggs.com","affiliation":" ","affiliationURL":"#","orcidID":""}],"publishedDate":"2021-04-01T00:00:00.000-07:00","citationText":"Biggs, 2021"} </script> <!--/radix_placeholder_front_matter--> <!--radix_placeholder_navigation_before_body--> <!--/radix_placeholder_navigation_before_body--> <!--radix_placeholder_site_before_body--> <!--/radix_placeholder_site_before_body--> <div class="d-title"> <h1>Air Propulsion Simulation</h1> <!--radix_placeholder_categories--> <div class="dt-tags"> <div class="dt=tag">Julia</div> <div class="dt=tag">Capstone</div> </div> <!--/radix_placeholder_categories--> <p><p>Simulating the performace of an air propulsion system as an alternative to solid rocket motors.</p></p> </div> <div class="d-byline"> Anson Biggs <a href="https://ansonbiggs.com" class="uri">https://ansonbiggs.com</a> <br/>04-01-2021 </div> <div class="d-article"> <p>Boilerplate intro about why all of this was done</p> <div class="layout-chunk" data-layout="l-body"> <details> <summary> Show code </summary> <div class="sourceCode" id="cb1"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> Plots</span> <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>plotly()</span> <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>theme(<span class="op">:</span>ggplot2)<span class="op">;</span> <span class="co"># In true R spirit</span></span> <span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> Unitful</span> <span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> DataFrames</span> <span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> Measurements</span> <span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> Measurements<span class="op">:</span> value<span class="op">,</span> uncertainty</span></code></pre></div> </details> </div> <p>This code is just the setup, using values scraped from various parts of the world wide web.</p> <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> <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>V <span class="op">=</span> (<span class="fl">85</span> ± <span class="fl">5</span>)u<span class="st">"inch^3"</span></span> <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>P0 <span class="op">=</span> (<span class="fl">4200.0</span> ± <span class="fl">300</span>)u<span class="st">"psi"</span></span> <span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a>Wtank <span class="op">=</span> (<span class="fl">2.3</span> ± <span class="fl">0.2</span>)u<span class="st">"lb"</span></span> <span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>Pmax <span class="op">=</span> (<span class="fl">250</span> ± <span class="fl">50</span>)u<span class="st">"psi"</span> <span class="co"># Max Pressure that can come out the nozzle</span></span> <span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span> <span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a>Wsolenoid <span class="op">=</span> <span class="fl">1.5</span>u<span class="st">"kg"</span></span> <span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a></span> <span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a><span class="co"># Params</span></span> <span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a>d_nozzle <span class="op">=</span> ((<span class="fl">1</span> <span class="op">//</span> <span class="fl">18</span>) ± <span class="fl">0.001</span>)u<span class="st">"inch"</span></span> <span id="cb2-11"><a href="#cb2-11" aria-hidden="true" tabindex="-1"></a>a_nozzle <span class="op">=</span> (<span class="cn">pi</span> <span class="op">/</span> <span class="fl">4</span>) <span class="op">*</span> d_nozzle<span class="op">^</span><span class="fl">2</span></span> <span id="cb2-12"><a href="#cb2-12" aria-hidden="true" tabindex="-1"></a></span> <span id="cb2-13"><a href="#cb2-13" aria-hidden="true" tabindex="-1"></a><span class="co"># Universal Stuff</span></span> <span id="cb2-14"><a href="#cb2-14" aria-hidden="true" tabindex="-1"></a>P_amb <span class="op">=</span> (<span class="fl">1</span> ± <span class="fl">0.2</span>)u<span class="st">"atm"</span></span> <span id="cb2-15"><a href="#cb2-15" aria-hidden="true" tabindex="-1"></a>γ <span class="op">=</span> <span class="fl">1.4</span> ± <span class="fl">0.05</span></span> <span id="cb2-16"><a href="#cb2-16" aria-hidden="true" tabindex="-1"></a>R <span class="op">=</span> <span class="fl">287.05</span>u<span class="st">"J/(kg * K)"</span></span> <span id="cb2-17"><a href="#cb2-17" 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">"K"</span></span></code></pre></div> </div> <p>This is the actual simulation. Maybe throw some references in and explain some equations.</p> <p>The rocket equation is pretty sick:</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> <div class="layout-chunk" data-layout="l-body"> <div class="sourceCode" id="cb3"><pre class="sourceCode julia"><code class="sourceCode julia"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="kw">let</span></span> <span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>t <span class="op">=</span> <span class="fl">0.0</span>u<span class="st">"s"</span></span> <span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>P <span class="op">=</span> P0 <span class="op">|></span> u<span class="st">"Pa"</span></span> <span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a>M <span class="op">=</span> V <span class="op">*</span> (P <span class="op">/</span> (R <span class="op">*</span> T)) <span class="op">|></span> u<span class="st">"kg"</span></span> <span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a>ts <span class="op">=</span> <span class="fl">1</span>u<span class="st">"ms"</span></span> <span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a><span class="kw">global</span> 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">"N"</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">"s"</span><span class="op">,</span> Mass<span class="op">=</span>M)</span> <span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">while</span> M <span class="op">></span> <span class="fl">0.005</span>u<span class="st">"kg"</span></span> <span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># while t < 30u"s"</span></span> <span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is leaving tank</span></span> <span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a> P <span class="op">=</span> minimum([P<span class="op">,</span> Pmax])</span> <span id="cb3-11"><a href="#cb3-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">|></span> u<span class="st">"m/s"</span></span> <span id="cb3-12"><a href="#cb3-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">|></span> u<span class="st">"kg/m^3"</span></span> <span id="cb3-13"><a href="#cb3-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">|></span> u<span class="st">"kg/s"</span></span> <span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb3-15"><a href="#cb3-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">|></span> u<span class="st">"N"</span></span> <span id="cb3-16"><a href="#cb3-16" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb3-17"><a href="#cb3-17" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate what is still in the tank</span></span> <span id="cb3-18"><a href="#cb3-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">|></span> u<span class="st">"kg"</span></span> <span id="cb3-19"><a href="#cb3-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">|></span> u<span class="st">"Pa"</span></span> <span id="cb3-20"><a href="#cb3-20" aria-hidden="true" tabindex="-1"></a> t <span class="op">=</span> t <span class="op">+</span> ts</span> <span id="cb3-21"><a href="#cb3-21" aria-hidden="true" tabindex="-1"></a> </span> <span id="cb3-22"><a href="#cb3-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="cb3-23"><a href="#cb3-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="cb3-24"><a href="#cb3-24" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> <span id="cb3-25"><a href="#cb3-25" aria-hidden="true" tabindex="-1"></a><span class="kw">end</span></span></code></pre></div> </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"> <p><img src="air-propulsion-simulation_files/figure-html5/unnamed-chunk-4-J1.png" width="350" /></p> </div> <p>Big conclusion about things.</p> <div class="sourceCode" id="cb4"><pre class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div> <div id="refs" class="references csl-bib-body hanging-indent" role="doc-bibliography"> <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> <!--radix_placeholder_article_footer--> <!--/radix_placeholder_article_footer--> </div> <div class="d-appendix"> </div> <!-- dynamically load mathjax for compatibility with self-contained --> <script> (function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; document.getElementsByTagName("head")[0].appendChild(script); })(); </script> <!--radix_placeholder_site_after_body--> <!--/radix_placeholder_site_after_body--> <!--radix_placeholder_appendices--> <div class="appendix-bottom"> <h3 id="references">References</h3> <div id="references-listing"></div> <h3 id="updates-and-corrections">Corrections</h3> <p>If you see mistakes or want to suggest changes, please <a href="https://gitlab.com/lander-team/air-prop-simulation">create an issue</a> on the source repository.</p> </div> <!--/radix_placeholder_appendices--> <!--radix_placeholder_navigation_after_body--> <!--/radix_placeholder_navigation_after_body--> </body> </html>