You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The tutorial shows how the user can set up a conventional aircraft configuration and a mission the aircraft is to fly and then simulate the aircraft's performance over the defined mission. The code is divided into a number of functions that are called from the main function. The descriptions in the functions clearly explain the function's inputs and outputs and the actions performed on the functions.
17
18
18
-
###Steps to simulate the aircraft's performance over a mission :
19
+
###Steps to simulate the aircraft's performance over a mission :
19
20
20
21
1) Locate the tutorial script folder, /Tutorials, from your project folder as described in the Download guide. If using the command line, cd to this directory.
21
22
2) Open the tut_mission_B737.py script in your favorite editor or IDE.
@@ -26,14 +27,14 @@ The tutorial shows how the user can set up a conventional aircraft configuration
26
27
3) A few plots depicting the variation of the different aircraft performance parameters (Cl,Cd,etc) over the course of the mission are shown.
27
28
28
29
29
-
###Important Functions :
30
+
###Important Functions :
30
31
31
32
The script is divided into a set of functions that setup different aspects of the modeling process. The important functions are:
32
33
33
34
#### vehicle_setup()
34
35
function is where the aircraft's geometry is specified.
35
36
36
-
#####Setting up a wing
37
+
#####Setting up a wing
37
38
The code below shows how the main wing of the aircraft is set up. The basic geometric inputs that define the wing are specified. Then the wing is then appended to the vehicle, which is an instance of the aircraft class.
38
39
39
40
In SUAVE units are identified through the use of a units package called Pint. Notice, that for the wing sweep that the units are specified in degrees through *Units.deg. To get results into a desired unit use /Units.deg.
Similar to the wing above, the code below illustrates how a fuselage can be added to the vehicle. Again the user is required to specify the basic fuselage geometric parameters and then add the fuselage object to the vehicle.
@@ -110,7 +111,7 @@ fuselage.differential_pressure = 5.0e4 * Units.pascal # Maximum differential pre
110
111
vehicle.append_component(fuselage)
111
112
</code></pre>
112
113
113
-
#####Setting up the propulsion system
114
+
#####Setting up the propulsion system
114
115
115
116
The aircraft uses a turbofan engine. This engine can be constructed piece by piece using the energy network framework. We instantiate the network as shown below.
The data structure associated with the Boeing 737-800 can be visualized [here](/guides/data_structures/B737.html).
152
153
153
154
[](/guides/data_structures/B737.html)
154
155
155
156
This visualization shows the hierarchy of data in a SUAVE vehicle. Some of the values are defaulted, for example costs. This is because we are not performing cost analysis on the Boeing 737-800. Additionally, this snapshot of the data structure was taken prior to analysis. Therefore weights have not been calculated and are not part of the data. During the mission analysis component weights will be determined and weights will be populated.
156
157
157
-
####configs_setup() :
158
+
####configs_setup()
158
159
The aircraft geometry created is converted into configurations that can be used to make simple modifications to the geometric paramaters while not modifying the aircraft geometry completely. An example of the use of this feature is when high-lift devices need to be deployed during landing and takeoff. Thus a landing and takeoff configuration can be added as shown below and then during say the flaps and slats settings can be set differently for each of the configurtaions.
Also to leverage SUAVE's multifidelity capability and use a different fidelity analysis for any of the disciplines (aerodynamics,propulsion, stability, etc), the base_analysis function can be modified by switching out an analysis module for a different one.
202
203
203
204
204
205
205
206
206
-
###Other Functions :
207
+
###Other Functions :
207
208
208
-
####main()
209
+
####main()
209
210
210
211
The main function is the driver function for the mission simulation. It calls the various routines in the appropriate order in order to set up the geometry and the mission, evaluate the performance of the aircraft over the mission and return the results.
211
212
212
-
####full_setup()
213
+
####full_setup()
213
214
214
215
This function (called from the main() function) sets up the aircraft geometry, configs and the missions the aircraft is to be analysed for by calling the vehicle_setup, configs_setup, analyses_setup, mission_setup and missions_setup functions.
215
216
216
217
217
-
####simple_sizing()
218
+
####simple_sizing()
218
219
219
220
The simple sizing function sizes the aircraft's geometric components based on the geometric inputs specified by the user in the vehicle_setup() function.
220
221
221
-
####base_analysis()
222
+
####base_analysis()
222
223
223
224
The method takes in the vehicle and assigns different analysis methods (for aero, propulsion, weights, stability) to the analyses object.
224
225
225
-
####analyses_setup()
226
+
####analyses_setup()
226
227
227
228
This functions takes in the base analysis and sets up different analysis methods for different configurations.
228
229
229
-
####missions_setup()
230
+
####missions_setup()
230
231
231
232
This method allows the user to set up a variety of missions that need to be evaluated for an aircraft.
232
233
233
-
####plot_mission()
234
+
####plot_mission()
234
235
235
236
This is a post processing function that takes in the results data structure and generates the necessary plots.
236
237
237
-
###RESULTS
238
+
###RESULTS
238
239
239
240
The plots shown below should be generated if the mission analysis executes correctly. The results show the aerodynamic, propulsion and mission properties of the B737-800 for the defined mission.
240
241
@@ -247,7 +248,7 @@ The plots shown below should be generated if the mission analysis executes corre
247
248

248
249
249
250
250
-
###Modifying the Aircraft's Geometry or Mission :
251
+
###Modifying the Aircraft's Geometry or Mission :
251
252
252
253
Suppose we want to simulate a high span variant of the B737-800. The span is increased to 40.0 m. We assume the wing chords, sweep, taper ratio, thickness to chord ratio remain the same. Thus changing the span only changes the aspect ratio and the wing area.
The purpose of this tutorial is to highlight some of SUAVE's more exotic propulsion system capabilities. This tutorial assumes that the user has completed the Boeing 737-800 tutorial, and has some familiarity with SUAVE's propulsion system data structures.
16
17
17
-
##Baseline Case
18
+
##Baseline Case
18
19
Open the file called "tut_lithium_air_jet.py" in
19
20
a text editor or IDE.
20
21
@@ -23,7 +24,7 @@ a text editor or IDE.
23
24
24
25
Look over the plots, to gain a feel for the various idiosyncrasies of the design. Note the significant rise in aircraft mass, as a result of the lithium-air batteries
25
26
26
-
##Different Propulsion System Assumptions
27
+
##Different Propulsion System Assumptions
27
28
Go to line 116, and change the battery specific energy from 2000 W-h/kg to 1500 W-h/kg
The tutorial describes how the energy network in SUAVE can be used to build a model of a turbofan engine. Once this is clear to the user, then the understanding the setup of the other gasturbine models, the ducted fan and the turbojet should not be very difficult. The turbofan model is built using the different turbofan components as its building blocks and then linking the inputs and outputs of the different components. The script to follow is the tut_mission_B737.py script that was used in the [Boeing 737-800 Analysis Tutorial](/guides/boeing_737-800.html)
17
18
18
19
19
-
###Setting up the Turbofan model
20
+
###Setting up the Turbofan model
20
21
21
22
First the turbofan energy energy network is instantiated. The parameters associated with the network as a whole are assigned.
The basic components used to model the turbofan are described below.
47
48
48
49
49
-
####Ram
50
+
####Ram
50
51
51
52
The 'Ram' component is used to convert the freestream quantities that are passed into the Turbofan network into stagnation quantities. As the turbofan network as based on a 1D gasdynamic analysis, most of the energy transfer across the different components are modelled as changes in the stagnation quantities. Thus the Ram component acts as a preprocessor converting the input 'Conditions' into quantities required by the network.
52
53
@@ -63,7 +64,7 @@ ram.tag = 'ram'
63
64
turbofan.append(ram)
64
65
</code></pre>
65
66
66
-
####Nozzle
67
+
####Nozzle
67
68
68
69
The 'Nozzle' component is used to model the inlet diffuser and the outlet fan and compressor nozzles as shown below.
69
70
@@ -111,7 +112,7 @@ nozzle.pressure_ratio = 0.99
111
112
turbofan.append(nozzle)
112
113
</code></pre>
113
114
114
-
####Compressor
115
+
####Compressor
115
116
116
117
Two compressors are used in the turbofan model, a low and a high pressure compressor.
A fan component is also added to the network. To model turbojets, the fan component and the fan nozzle are not added but all the othee components remain the same.
150
151
@@ -164,7 +165,7 @@ turbofan.append(fan)
164
165
</code></pre>
165
166
166
167
167
-
####Combustor
168
+
####Combustor
168
169
169
170
The combustor component is where the the fuel to air ratio is computed and this is used to compute the sfc and the thrust later in the network.
The work done by the fan and the compressors is used to compute the turbine work required. This is used to compute the change in the stagnation quantities across the turbine.
192
193
@@ -221,7 +222,7 @@ turbofan.append(turbine)
221
222
222
223
223
224
224
-
####Thrust
225
+
####Thrust
225
226
226
227
The thrust component takes in the initial (inputs of the inlet nozzle) and final (exit of the fan and core exirt nozzles) stagnation quantities of the network and the fuel to air ratio and computes the specific fuel conspumption (sfc) and thrust generated by the network (turbofan engine).
The purpose of this tutorial is to educate users on how to setup a preconfigured solar energy network to work with a high altitude solar UAV. In this tutorial it is assumed that the user has some familiarity with SUAVE having completed the fundamental tutorial for the Boeing 737-800. You will learn about setting up the following:
17
18
@@ -26,17 +27,17 @@ The purpose of this tutorial is to educate users on how to setup a preconfigured
26
27
27
28
Because of the flexible nature of SUAVE, the approach shown is just one way to setup the UAV for analysis. By experimenting and eventually developing your own code you will be able to do far more than what is shown in this tutorial. The original script can be found in /scripts/tutorials/tut_solar_uav.py.
28
29
29
-
##Vehicle and Mission
30
+
##Vehicle and Mission
30
31
31
32
The vehicle is similar to the Qinetiq Zephyr but far larger at 40 meters in wing span and weighs in at 200 kg. However, it does carry double the payload of the Zephyr at 5 kg and accounts for constant payload power usage. The battery energy density is set to an optimistic estimate of 450 Watt-hours per kg. Additionally, 90 percent of the wings are covered with solar panels that have a 25 percent efficiency.
32
33
33
34
This mission exercises the methods developed for solar radiation estimation, propeller and motor integration, as well as the human powered aircraft weight estimation. The mission setup is a constant altitude cruise at 15 km at Mach 0.12 for about 24 hours. The location is over the California Bay Area during the summer solstice.
34
35
35
-
##Setup
36
+
##Setup
36
37
37
38
This tutorial highlights the differences between setting up a typical aircraft like a Boeing 737 and a solar UAV.
38
39
39
-
###Mission Setup
40
+
###Mission Setup
40
41
41
42
For a solar UAV, the starting location as well as the day and time are critical. So the first segment must be modified to include this information. It is important to note that the start times provided are in "Zulu" time or Greenwich Mean Time. This is typical for aircraft navigation to prevent time zone errors and ambiguity.
42
43
@@ -52,23 +53,23 @@ segment.longitude = -122.1700
52
53
53
54
Additionally, this mission is highly simplified. It consists of only one mission segment. To provide ample resolution the number of control points have been increased to 64.
54
55
55
-
###Structural Weight Sizing
56
+
###Structural Weight Sizing
56
57
57
58
The vehicle sizing of the human powered aircraft or solar UAV requires the dimensions of the vehicle like in other weight estimation methods. However, it also requires information about the number of wing ribs and the number of end ribs. The end ribs are relevant for wing designs where the sections can come apart for transportation.
58
59
59
60
<pre><codeclass="python">wing.number_ribs = 26.
60
61
wing.number_end_ribs = 2.
61
62
</code></pre>
62
63
63
-
###Wing Boundary Layer Transition
64
+
###Wing Boundary Layer Transition
64
65
65
66
The transition location of the boundary layer can have a great impact on the drag of the wing. This is especially important in properly designed low Reynolds number flows when laminar flow can be extended for larger percentages of the surface. The code snippet below is how surfaces have transition points set. These are estimates provided from the designer based on experience.
The solar panel model is quite simple and only requires a capture area, an efficiency, and mass. In this case we assume that 90% of the wing area is covered in solar panels.
The batteries are set up with knowledge of the mass of the battery and the specific energy. In this case a futuristic specific energy of 450 Watt-hr/kg is set for lithium ion type batteries. The resistance of the batteries is another important input to determine charging and discharging losses.
84
85
@@ -91,7 +92,7 @@ net.battery = bat
91
92
</code></pre>
92
93
93
94
94
-
###Propeller
95
+
###Propeller
95
96
96
97
To setup the propeller we will actually design an optimized propeller. This is done through the methods provided by Adkins and Liebeck. The attributes of the propeller design are then seeded to the motor and network to accelerate convergence of the propeller and motor models.
This motor model relies on data that is generally available from motor manufacturers. This includes the resistance, no load current, and the speed constant. Additionally, any gearbox is specified here and basic information about the propeller is entered here to help inform the solver when converging the motor and propeller analyses.
118
119
@@ -130,13 +131,13 @@ net.motor = motor
130
131
</code></pre>
131
132
132
133
133
-
##Running
134
+
##Running
134
135
135
136
As you should be familiar with by now, running this script is just like any other.
136
137
<pre><codeclass="bash">python tut_solar_uav.py
137
138
</code></pre>
138
139
139
-
##Results
140
+
##Results
140
141
141
142
If all went well the script ran and it provided you with more plots than you ever wanted. Here are some of the plots that were generated when we ran it:
0 commit comments