Skip to content

Commit 35cddcc

Browse files
committed
Uploading new B737
1 parent c8620dd commit 35cddcc

File tree

1 file changed

+88
-140
lines changed

1 file changed

+88
-140
lines changed

tut_mission_B737.py

Lines changed: 88 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def main():
5757
print_engine_data(configs.base,filename = 'B737_engine_data.dat')
5858

5959
# print parasite drag data into file
60-
# define reference condition for parasite drag
60+
# define reference condition for parasite drag
6161
ref_condition = Data()
6262
ref_condition.mach_number = 0.3
6363
ref_condition.reynolds_number = 12e6
@@ -69,9 +69,10 @@ def main():
6969
# print mission breakdown
7070
print_mission_breakdown(results,filename='B737_mission_breakdown.dat')
7171

72-
# plot results
72+
# plt the old results
7373
plot_mission(results)
7474

75+
7576
return
7677

7778

@@ -118,7 +119,6 @@ def analyses_setup(configs):
118119

119120
# landing analysis
120121
aerodynamics = analyses.landing.aerodynamics
121-
# do something here eventually
122122

123123
return analyses
124124

@@ -195,13 +195,9 @@ def vehicle_setup():
195195

196196
# mass properties
197197
vehicle.mass_properties.max_takeoff = 79015.8 # kg
198-
vehicle.mass_properties.operating_empty = 62746.4 # kg
199198
vehicle.mass_properties.takeoff = 79015.8 # kg
200199
vehicle.mass_properties.max_zero_fuel = 0.9 * vehicle.mass_properties.max_takeoff
201200
vehicle.mass_properties.cargo = 10000. * Units.kilogram
202-
203-
vehicle.mass_properties.center_of_gravity = [60 * Units.feet, 0, 0]
204-
vehicle.mass_properties.moments_of_inertia.tensor = [[10 ** 5, 0, 0],[0, 10 ** 6, 0,],[0,0, 10 ** 7]]
205201

206202
# envelope properties
207203
vehicle.envelope.ultimate_load = 2.5
@@ -633,168 +629,79 @@ def configs_setup(vehicle):
633629

634630
def plot_mission(results,line_style='bo-'):
635631

636-
# ------------------------------------------------------------------
637-
# Distance Traveled
638-
# ------------------------------------------------------------------
639-
plt.figure("Distance Traveled")
640-
axes = plt.gca()
641-
for i in range(len(results.segments)):
642-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
643-
distance = results.segments[i].conditions.frames.inertial.position_vector[:,0] / Units.nmi
644-
axes.plot(time, distance, line_style)
645-
axes.set_xlabel('Time (mins)')
646-
axes.set_ylabel('Distance (NM)')
647-
axes.get_yaxis().get_major_formatter().set_scientific(False)
648-
axes.get_yaxis().get_major_formatter().set_useOffset(False)
649-
axes.grid(True)
650-
651-
# ------------------------------------------------------------------
652-
# Throttle
653-
# ------------------------------------------------------------------
654-
plt.figure("Throttle History")
655-
axes = plt.gca()
656-
for i in range(len(results.segments)):
657-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
658-
eta = results.segments[i].conditions.propulsion.throttle[:,0]
659-
axes.plot(time, eta, line_style)
660-
axes.set_xlabel('Time (mins)')
661-
axes.set_ylabel('Throttle')
662-
axes.grid(True)
663-
664-
665-
# ------------------------------------------------------------------
666-
# Angle of Attack
667-
# ------------------------------------------------------------------
668-
669-
plt.figure("Angle of Attack History")
670-
axes = plt.gca()
671-
for i in range(len(results.segments)):
672-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
673-
aoa = results.segments[i].conditions.aerodynamics.angle_of_attack[:,0] / Units.deg
674-
axes.plot(time, aoa, line_style)
675-
axes.set_xlabel('Time (mins)')
676-
axes.set_ylabel('Angle of Attack (deg)')
677-
axes.grid(True)
678-
679-
680-
# ------------------------------------------------------------------
681-
# Fuel Burn Rate
682-
# ------------------------------------------------------------------
683-
plt.figure("Fuel Burn Rate")
684-
axes = plt.gca()
685-
for i in range(len(results.segments)):
686-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
687-
mdot = results.segments[i].conditions.weights.vehicle_mass_rate[:,0]
688-
axes.plot(time, mdot, line_style)
689-
axes.set_xlabel('Time (mins)')
690-
axes.set_ylabel('Fuel Burn Rate (kg/s)')
691-
axes.grid(True)
692-
693-
694-
# ------------------------------------------------------------------
695-
# Altitude
696-
# ------------------------------------------------------------------
697-
plt.figure("Altitude")
698-
axes = plt.gca()
699-
for i in range(len(results.segments)):
700-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
701-
distance = results.segments[i].conditions.frames.inertial.position_vector[:,0] / Units.nautical_miles
702-
altitude = results.segments[i].conditions.freestream.altitude[:,0] / Units.km
703-
axes.plot(distance, altitude, line_style)
704-
axes.set_xlabel('Distance (nm)')
705-
axes.set_ylabel('Altitude (km)')
706-
axes.grid(True)
707-
708-
709-
# ------------------------------------------------------------------
710-
# Vehicle Mass
711-
# ------------------------------------------------------------------
712-
plt.figure("Vehicle Mass")
713-
axes = plt.gca()
714-
for i in range(len(results.segments)):
715-
time = results.segments[i].conditions.frames.inertial.time[:,0] / Units.min
716-
mass = results.segments[i].conditions.weights.total_mass[:,0]
717-
axes.plot(time, mass, line_style)
718-
axes.set_xlabel('Time (mins)')
719-
axes.set_ylabel('Vehicle Mass (kg)')
720-
axes.grid(True)
721-
722-
632+
axis_font = {'fontname':'Arial', 'size':'14'}
633+
723634
# ------------------------------------------------------------------
724635
# Aerodynamics
725636
# ------------------------------------------------------------------
726-
fig = plt.figure("Aerodynamic Forces")
637+
638+
639+
fig = plt.figure("Aerodynamic Forces",figsize=(8,6))
727640
for segment in results.segments.values():
728641

729642
time = segment.conditions.frames.inertial.time[:,0] / Units.min
730643
Lift = -segment.conditions.frames.wind.lift_force_vector[:,2]
731-
Drag = -segment.conditions.frames.wind.drag_force_vector[:,0]
732-
Thrust = segment.conditions.frames.body.thrust_force_vector[:,0]
733-
734-
axes = fig.add_subplot(4,1,1)
735-
axes.plot( time , Lift , line_style )
736-
axes.set_xlabel('Time (min)')
737-
axes.set_ylabel('Lift (N)')
738-
axes.grid(True)
644+
Drag = -segment.conditions.frames.wind.drag_force_vector[:,0] / Units.lbf
645+
Thrust = segment.conditions.frames.body.thrust_force_vector[:,0] / Units.lbf
646+
eta = segment.conditions.propulsion.throttle[:,0]
647+
mdot = segment.conditions.weights.vehicle_mass_rate[:,0]
648+
thrust = segment.conditions.frames.body.thrust_force_vector[:,0]
649+
sfc = 3600. * mdot / 0.1019715 / thrust
739650

740-
axes = fig.add_subplot(4,1,2)
741-
axes.plot( time , Drag , line_style )
742-
axes.set_xlabel('Time (min)')
743-
axes.set_ylabel('Drag (N)')
744-
axes.grid(True)
745651

746-
axes = fig.add_subplot(4,1,3)
652+
axes = fig.add_subplot(2,1,1)
747653
axes.plot( time , Thrust , line_style )
748-
axes.set_xlabel('Time (min)')
749-
axes.set_ylabel('Thrust (N)')
654+
axes.set_ylabel('Thrust (lbf)',axis_font)
750655
axes.grid(True)
751-
752-
try:
753-
Pitching_moment = segment.conditions.stability.static.cm_alpha[:,0]
754-
axes = fig.add_subplot(4,1,4)
755-
axes.plot( time , Pitching_moment , line_style )
756-
axes.set_xlabel('Time (min)')
757-
axes.set_ylabel('Pitching_moment (~)')
758-
axes.grid(True)
759-
except:
760-
pass
656+
657+
axes = fig.add_subplot(2,1,2)
658+
axes.plot( time , sfc , line_style )
659+
axes.set_xlabel('Time (min)',axis_font)
660+
axes.set_ylabel('sfc (lb/lbf-hr)',axis_font)
661+
axes.grid(True)
662+
663+
plt.savefig("B737_engine.pdf")
664+
plt.savefig("B737_engine.png")
665+
761666

762667
# ------------------------------------------------------------------
763668
# Aerodynamics 2
764669
# ------------------------------------------------------------------
765-
fig = plt.figure("Aerodynamic Coefficients")
670+
fig = plt.figure("Aerodynamic Coefficients",figsize=(8,10))
766671
for segment in results.segments.values():
767672

768673
time = segment.conditions.frames.inertial.time[:,0] / Units.min
769674
CLift = segment.conditions.aerodynamics.lift_coefficient[:,0]
770675
CDrag = segment.conditions.aerodynamics.drag_coefficient[:,0]
771676
Drag = -segment.conditions.frames.wind.drag_force_vector[:,0]
772677
Thrust = segment.conditions.frames.body.thrust_force_vector[:,0]
678+
aoa = segment.conditions.aerodynamics.angle_of_attack[:,0] / Units.deg
679+
l_d = CLift/CDrag
680+
773681

774682
axes = fig.add_subplot(3,1,1)
775683
axes.plot( time , CLift , line_style )
776-
axes.set_xlabel('Time (min)')
777-
axes.set_ylabel('CL')
684+
axes.set_ylabel('Lift Coefficient',axis_font)
778685
axes.grid(True)
779686

780687
axes = fig.add_subplot(3,1,2)
781-
axes.plot( time , CDrag , line_style )
782-
axes.set_xlabel('Time (min)')
783-
axes.set_ylabel('CD')
688+
axes.plot( time , l_d , line_style )
689+
axes.set_ylabel('L/D',axis_font)
784690
axes.grid(True)
785691

786-
axes = fig.add_subplot(3,1,3)
787-
axes.plot( time , Drag , line_style )
788-
axes.plot( time , Thrust , 'ro-' )
789-
axes.set_xlabel('Time (min)')
790-
axes.set_ylabel('Drag and Thrust (N)')
791-
axes.grid(True)
692+
axes = fig.add_subplot(3,1,3)
693+
axes.plot( time , aoa , 'ro-' )
694+
axes.set_xlabel('Time (min)',axis_font)
695+
axes.set_ylabel('AOA (deg)',axis_font)
696+
axes.grid(True)
792697

698+
plt.savefig("B737_aero.pdf")
699+
plt.savefig("B737_aero.png")
793700

794701
# ------------------------------------------------------------------
795702
# Aerodynamics 2
796703
# ------------------------------------------------------------------
797-
fig = plt.figure("Drag Components")
704+
fig = plt.figure("Drag Components",figsize=(8,10))
798705
axes = plt.gca()
799706
for i, segment in enumerate(results.segments.values()):
800707

@@ -807,11 +714,11 @@ def plot_mission(results,line_style='bo-'):
807714
cd = drag_breakdown.total[:,0]
808715

809716
if line_style == 'bo-':
810-
axes.plot( time , cdp , 'ko-', label='CD_P' )
811-
axes.plot( time , cdi , 'bo-', label='CD_I' )
812-
axes.plot( time , cdc , 'go-', label='CD_C' )
813-
axes.plot( time , cdm , 'yo-', label='CD_M' )
814-
axes.plot( time , cd , 'ro-', label='CD' )
717+
axes.plot( time , cdp , 'ko-', label='CD parasite' )
718+
axes.plot( time , cdi , 'bo-', label='CD induced' )
719+
axes.plot( time , cdc , 'go-', label='CD compressibility' )
720+
axes.plot( time , cdm , 'yo-', label='CD miscellaneous' )
721+
axes.plot( time , cd , 'ro-', label='CD total' )
815722
if i == 0:
816723
axes.legend(loc='upper center')
817724
else:
@@ -824,6 +731,47 @@ def plot_mission(results,line_style='bo-'):
824731
axes.set_xlabel('Time (min)')
825732
axes.set_ylabel('CD')
826733
axes.grid(True)
734+
plt.savefig("B737_drag.pdf")
735+
plt.savefig("B737_drag.png")
736+
737+
# ------------------------------------------------------------------
738+
# Altitude, sfc, vehicle weight
739+
# ------------------------------------------------------------------
740+
741+
fig = plt.figure("Altitude_sfc_weight",figsize=(8,10))
742+
for segment in results.segments.values():
743+
744+
time = segment.conditions.frames.inertial.time[:,0] / Units.min
745+
CLift = segment.conditions.aerodynamics.lift_coefficient[:,0]
746+
CDrag = segment.conditions.aerodynamics.drag_coefficient[:,0]
747+
Drag = -segment.conditions.frames.wind.drag_force_vector[:,0]
748+
Thrust = segment.conditions.frames.body.thrust_force_vector[:,0]
749+
aoa = segment.conditions.aerodynamics.angle_of_attack[:,0] / Units.deg
750+
l_d = CLift/CDrag
751+
mass = segment.conditions.weights.total_mass[:,0] / Units.lb
752+
altitude = segment.conditions.freestream.altitude[:,0] / Units.ft
753+
mdot = segment.conditions.weights.vehicle_mass_rate[:,0]
754+
thrust = segment.conditions.frames.body.thrust_force_vector[:,0]
755+
sfc = 3600. * mdot / 0.1019715 / thrust
756+
757+
axes = fig.add_subplot(3,1,1)
758+
axes.plot( time , altitude , line_style )
759+
axes.set_ylabel('Altitude (ft)',axis_font)
760+
axes.grid(True)
761+
762+
axes = fig.add_subplot(3,1,3)
763+
axes.plot( time , sfc , line_style )
764+
axes.set_xlabel('Time (min)',axis_font)
765+
axes.set_ylabel('sfc (lb/lbf-hr)',axis_font)
766+
axes.grid(True)
767+
768+
axes = fig.add_subplot(3,1,2)
769+
axes.plot( time , mass , 'ro-' )
770+
axes.set_ylabel('Weight (lb)',axis_font)
771+
axes.grid(True)
772+
773+
plt.savefig("B737_mission.pdf")
774+
plt.savefig("B737_mission.png")
827775

828776
return
829777

@@ -954,7 +902,7 @@ def mission_setup(analyses):
954902
segment.analyses.extend( analyses.cruise )
955903

956904
segment.air_speed = 230.412 * Units['m/s']
957-
segment.distance = (3933.65 + 770) * Units.km
905+
segment.distance = (3933.65 + 770 - 92.6) * Units.km
958906

959907
# add to mission
960908
mission.append_segment(segment)

0 commit comments

Comments
 (0)