@@ -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
634630def 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