22
33import pycycle .api as pyc
44
5+ # protection incase env doesn't have matplotlib installed, since its not strictly required
6+ try :
7+ import matplotlib
8+ import matplotlib .pyplot as plt
9+ except ImportError :
10+ plt = None
11+
512
613class Propulsor (pyc .Cycle ):
714
@@ -10,10 +17,10 @@ def setup(self):
1017 design = self .options ['design' ]
1118
1219 USE_TABULAR = True
13- if USE_TABULAR :
20+ if USE_TABULAR :
1421 self .options ['thermo_method' ] = 'TABULAR'
1522 self .options ['thermo_data' ] = pyc .AIR_JETA_TAB_SPEC
16- else :
23+ else :
1724 self .options ['thermo_method' ] = 'CEA'
1825 self .options ['thermo_data' ] = pyc .species_data .janaf
1926 FUEL_TYPE = 'JP-7'
@@ -24,7 +31,7 @@ def setup(self):
2431 self .add_subsystem ('inlet' , pyc .Inlet ())
2532 self .add_subsystem ('fan' , pyc .Compressor (map_data = pyc .FanMap , map_extrap = True ))
2633 self .add_subsystem ('nozz' , pyc .Nozzle ())
27-
34+
2835 self .add_subsystem ('perf' , pyc .Performance (num_nozzles = 1 , num_burners = 0 ))
2936
3037
@@ -125,15 +132,14 @@ def setup(self):
125132 self .pyc_add_pnt (pt , Propulsor (design = False , thermo_method = 'CEA' ))
126133
127134 self .set_input_defaults (pt + '.fc.MN' , val = self .od_MNs [i ])
128- self .set_input_defaults (pt + '.fc.alt' , val = self .od_alts , units = 'm' )
129- self .set_input_defaults (pt + '.fan.map.RlineMap' , val = self .od_Rlines [i ])
135+ self .set_input_defaults (pt + '.fc.alt' , val = self .od_alts , units = 'm' )
136+ self .set_input_defaults (pt + '.fan.map.RlineMap' , val = self .od_Rlines [i ])
130137
131138 self .pyc_use_default_des_od_conns ()
132139
133140 self .pyc_connect_des_od ('nozz.Throat:stat:area' , 'balance.rhs:W' )
134141
135142 super ().setup ()
136-
137143
138144
139145if __name__ == "__main__" :
@@ -158,13 +164,13 @@ def setup(self):
158164
159165 # Set initial guesses for balances
160166 prob ['design.balance.W' ] = 200.
161-
167+
162168 for i , pt in enumerate (mp_propulsor .od_pts ):
163-
169+
164170 # initial guesses
165- prob ['off_design .fan.PR' ] = 1.2
166- prob ['off_design .balance.W' ] = 406.790
167- prob ['off_design .balance.Nmech' ] = 1. # normalized value
171+ prob [pt + ' .fan.PR' ] = 1.2
172+ prob [pt + ' .balance.W' ] = 406.790
173+ prob [pt + ' .balance.Nmech' ] = 1. # normalized value
168174
169175 st = time .time ()
170176
@@ -184,7 +190,7 @@ def setup(self):
184190 print ('\n ' , '#' * 10 , pt , '#' * 10 )
185191 viewer (prob , pt )
186192
187- map_plots ( prob , 'design' )
188-
193+ if plt :
194+ map_plots ( prob , 'design' )
189195
190196 print ("Run time" , run_time )
0 commit comments