-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConcorde.html
More file actions
232 lines (187 loc) · 13.5 KB
/
Copy pathConcorde.html
File metadata and controls
232 lines (187 loc) · 13.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<!DOCTYPE HTML>
<!--
Arcana by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Creating and Using a New Analysis</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="https://suave.stanford.edu/assets/css/main.css" />
<link href="https://suave.stanford.edu/assets/css/prism.css" rel="stylesheet" />
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-132339206-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-132339206-1');
</script>
</head>
<body class="is-preload">
<div id="page-wrapper">
<!-- Header -->
<div id="header">
<!-- Logo -->
<a hidden id="logo">SUAVE</a>
<!-- Nav -->
<nav id="nav">
<ul>
<li><a href="https://suave.stanford.edu/index.html"> SUAVE</a></li>
<li><a href="https://suave.stanford.edu/download.html">Download</a></li>
<li class="current"><a href="https://suave.stanford.edu/tutorials.html">Tutorials</a></li>
<li><a href="https://suave.stanford.edu/documentation.html">Documentation</a></li>
<li><a href="https://suave.stanford.edu/forum.html">Forum</a></li>
<li><a href="https://suave.stanford.edu/publications.html">Publications</a></li>
<li><a href="https://github.com/suavecode/SUAVE">
<span class="icon2 icon-github">
<img src="https://suave.stanford.edu/images/github_white.svg">
</span>
</a></li>
<li><a href="https://ci.appveyor.com/project/planes/suave">
<span class="icon2 icon-appveyor">
<img src="images/appveyor-logo.svg">
</span>
</a></li>
<li><a href="https://coveralls.io/github/suavecode/SUAVE">
<span class="icon2 icon-coveralls">
<img src="https://suave.stanford.edu/images/coveralls.svg">
</span>
</a></li>
</ul>
</nav>
</div>
<!-- Main -->
<section class="wrapper style1">
<div class="container">
<div id="content">
<!-- Content -->
<article>
<header>
<h2>Creating and Using a New Analysis</h2>
</header>
<p>This tutorial is designed to provide the information needed to modify a SUAVE aerodynamic analysis and create new ones. Many of the items discussed here also apply to other analysis types within SUAVE. For this tutorial, the Concorde is used to demonstrate switching the aerodynamic analysis to one that can handle supersonic conditions.</p>
<h3 id="running-the-tutorial-file">Baseline Aerodynamic Analysis</h3>
<p>The basic aerodynamic analysis used in SUAVE is called Fidelity_Zero. It is based on a mix of low fidelity physical and empirical methods, similar to what you might find in a typical conceptual design textbook. This is what is used for the 737 in the previous tutorial, and is specified in the analysis settings:</p>
<pre class="highlight_code"><code class="language-python">def base_analysis(vehicle):
...
# ------------------------------------------------------------------
# Aerodynamics Analysis
aerodynamics = SUAVE.Analyses.Aerodynamics.Fidelity_Zero()
aerodynamics.geometry = vehicle
analyses.append(aerodynamics)
...
</pre></code><p></p>
<p>In the SUAVE code structure, the analysis is broken into two sections. One is what you see above, which is the analysis class. The other is the individual methods that are used in the analysis class, which are stored in separate Methods folders. The purpose of splitting them is to make it easier for the different analysis classes to share methods. We will start with an explanation of the individual bits of the analysis class in the file trunk/Analyses/Aerodynamics/Fidelity_Zero.py.</p>
<p>The first section is the imports. These are mix of standard imports and a few specific items needed for the analysis. They are described individually as they appear in the body of the class. The first function in the fidelity zero class is __defaults__. This contains the primary functionality, as it sets the default settings and the methods that will be used to compute aerodynamics.</p>
<p>The settings begin as below:</p>
<pre class="highlight_code"><code class="language-python"># correction factors
settings = self.settings
settings.fuselage_lift_correction = 1.14
settings.trim_drag_correction_factor = 1.02
settings.wing_parasite_drag_form_factor = 1.1
</pre></code><p></p>
<p>self.settings is inherited from the base Markup class and therefore is not redefined. Instead, these values and several more are added. Items in this group control how the aerodynamic methods operate. Variables that are set to None typically mean that a method specific default will be used instead. For example, span efficiency controls whether or not a blanket span efficiency is used to override the drag output for the vortex lattice method.</p>
<p>The next group builds the evaluation procedure. It is constructed as a set of processes which include a number of functions from the methods group. The Process class is essentially a container for all the functions added to it, and will evaluate those functions in the order they are added. Another process can also be added instead of a function, as is initially done with compute.drag.parasite. There is also a special type of process class called Process_Geometry, which will iterate through the vehicle geometry and apply the submethod to all components in the specified group. Altogether, this code block creates a process for lift and drag and sets up the analysis to run the relevant methods in the order shown (however they are not run as we step through this code block). self.process.compute is a process itself as well.</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python"># build the evaluation process
compute = self.process.compute
compute.lift = Process()
compute.lift.inviscid_wings = Vortex_Lattice()
compute.lift.vortex = SUAVE.Methods.skip
compute.lift.fuselage = Common.Lift.fuselage_correction
compute.lift.total = Common.Lift.aircraft_total
compute.drag = Process()
compute.drag.parasite = Process()
compute.drag.parasite.wings = Process_Geometry('wings')
compute.drag.parasite.wings.wing = Common.Drag.parasite_drag_wing
compute.drag.parasite.fuselages = Process_Geometry('fuselages')
compute.drag.parasite.fuselages.fuselage = Common.Drag.parasite_drag_fuselage
compute.drag.parasite.propulsors = Process_Geometry('propulsors')
</div></div></pre></code><p></p>
<p>The other function in this class is the initialize function. This allows a surrogate of the lift model to be built. A surrogate is often used here in order to avoid the time required to evaluate the vortex lattice every time the aerodynamic analysis is called.</p>
<h3 id="main">Changes for Supersonic Analysis</h3>
<p>The next question is how to change this analysis class to allow for calculations in supersonic conditions. For this, we switch over to the Supersonic_Zero class and examine the differences. Generally, changes that are required are updates to the settings and changes in which methods are used. The primary settings additions that are needed for this analysis type are those that control the transonic drag rise and wave drag scaling.</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python"># this multiplier is used to determine the volume wave drag at the peak Mach number
# by multiplying the volume wave drag at the end drag rise Mach number
settings.peak_mach_number = 1.04
settings.cross_sectional_area_calculation_type = 'Fixed'
# 'Fixed' means that the area is not able to vary with Mach number, so the number at the desired cruise condition should
# be used
# 'OpenVSP' is a desired future possibility. This would allow the cross sectional area to vary with Mach number, but is
# much more computationally intensive.
settings.volume_wave_drag_scaling = 3.7 # 1.8-2.2 are given as typical for an SST, but 3.7 was found to be more accurate
# This may be due to added propulsion effects
settings.fuselage_parasite_drag_begin_blend_mach = 0.91
settings.fuselage_parasite_drag_end_blend_mach = 0.99
</div></div></pre></code><p></p>
<p>For the methods, a subset must be swapped. Two groups of methods are imported this time. The first is designated as Common, which is the same group as was used in Fidelity_Zero. The second is designated as Methods, and contains methods specific to the supersonic case. These new methods replace their subsonic-only variants. Once all of these methods have been replaced, the new analysis class is ready.</p>
<p>In order for the new analysis class and any new methods created to function properly, they must also be added to the relevant __init__.py files that link together SUAVE as a library. This requires adding a line to trunk/Analyses/Aerodynamics/__init__.py:</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python">from .Supersonic_Zero import Supersonic_Zero
</div></div></pre></code><p></p>
<p>and to trunk/Methods/Aerodynamics/__init__.py:</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python">from . import Supersonic_Zero</div></div></pre></code><p></p>
<p>New files must also be created for the supersonic methods folder structure, which can be found as trunk/Methods/Aerodynamics/Supersonic_Zero/__init__.py, trunk/Methods/Aerodynamics/Supersonic_Zero/Lift/__init__.py, and trunk/Methods/Aerodynamics/Supersonic_Zero/Lift/__init__.py.</p>
<p>Once all of the files are ready, a couple of modifications are needed in the vehicle and analysis setup. These can be seen the tut_concorde.py tutorial file. First, to switch the analysis type used, we replace</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python">aerodynamics = SUAVE.Analyses.Aerodynamics.Fidelity_Zero()</div></div></pre></code><p></p>
<p>with</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python">aerodynamics = SUAVE.Analyses.Aerodynamics.Supersonic_Zero()</div></div></pre></code><p></p>
<p>Then, to use the special analysis capabilities, a couple settings are added to the main wing:</p>
<div class="highlight_code"><div class="highlight_code"><pre class="highlight_code"><code class="language-python">wing.vortex_lift = True
wing.high_mach = True
</div></div></pre></code><p></p>
<p>This turns on the vortex lift correction at low speeds and changes the compressibility equations at high subsonic speeds to better match Concorde-type behavior.</p>
<p>You can run the tut_concorde.py tutorial file to see the results of these changes. If you have any more questions on how to modify the aerodynamic analyses or any other types of analyses, please let us know on our forum.</p>
<br>
</article>
</div>
</div>
</section>
<!-- Footer -->
<div id="footer">
<div class="container">
<div class="row">
<section class="col-3 col-6-narrower col-12-mobilep">
<h3>Download</h3>
<ul class="links">
<li><a href="https://suave.stanford.edu/registration.html">Registration</a></li>
<li><a href="https://github.com/suavecode/SUAVE">Github Site</a></li>
</ul>
</section>
<section class="col-3 col-6-narrower col-12-mobilep">
<h3>Learn</h3>
<ul class="links">
<li><a href="https://suave.stanford.edu/tutorials.html">Tutorials</a></li>
<li><a href="https://suave.stanford.edu/documentation.html">Documentation</a></li>
<li><a href="https://suave.stanford.edu/forum.html">Forum</a></li>
</ul>
</section>
<section class="col-3 col-6-narrower col-12-mobilep">
<h3>External Links</h3>
<ul class="links">
<li><a href="http://adl.stanford.edu">Aerospace Design Lab</a></li>
<li><a href="https://aa.stanford.edu">Stanford Aero/Astro</a></li>
<li><a href="https://su2code.github.io">SU2</a></li>
</ul>
</section>
</div>
<!-- Copyright -->
<div class="copyright">
<ul class="menu">
<li>© <script>document.write(new Date().getFullYear())</script> Stanford Aerospace Design Lab <br/>
All rights reserved</li>
</ul>
</div>
</div>
</div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.dropotron.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
<script src="https://suave.stanford.edu/assets/js/prism.js"></script>
</body>
</html>