Skip to content

Commit d2f89d4

Browse files
authored
Merge pull request #58 from naylor-b/fix_error_handling
changed several places where np.seterr was being called in order to keep the changes localized.
2 parents 3868d28 + 14a2a66 commit d2f89d4

12 files changed

+1191
-1165
lines changed

example_cycles/tests/benchmark_ab_turbojet.py

Lines changed: 428 additions & 426 deletions
Large diffs are not rendered by default.

example_cycles/tests/benchmark_hbtf.py

Lines changed: 156 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ def setUp(self):
2626

2727
self.prob.set_val('DESIGN.hpc.PR', 9.369)
2828
self.prob.set_val('DESIGN.hpc.eff', 0.8707)
29-
29+
3030
self.prob.set_val('DESIGN.hpt.eff', 0.8888)
3131
self.prob.set_val('DESIGN.lpt.eff', 0.8996)
32-
32+
3333
self.prob.set_val('DESIGN.fc.alt', 35000., units='ft')
3434
self.prob.set_val('DESIGN.fc.MN', 0.8)
35-
35+
3636
self.prob.set_val('DESIGN.T4_MAX', 2857, units='degR')
37-
self.prob.set_val('DESIGN.Fn_DES', 5900.0, units='lbf')
37+
self.prob.set_val('DESIGN.Fn_DES', 5900.0, units='lbf')
3838

3939
self.prob.set_val('OD_full_pwr.T4_MAX', 2857, units='degR')
4040
self.prob.set_val('OD_part_pwr.PC', 0.8)
4141

42-
42+
4343
# Set initial guesses for balances
4444
self.prob['DESIGN.balance.FAR'] = 0.025
4545
self.prob['DESIGN.balance.W'] = 100.
@@ -48,15 +48,15 @@ def setUp(self):
4848
self.prob['DESIGN.fc.balance.Pt'] = 5.2
4949
self.prob['DESIGN.fc.balance.Tt'] = 440.0
5050

51-
51+
5252
for pt in ['OD_full_pwr', 'OD_part_pwr']:
5353

5454
# initial guesses
5555
self.prob[pt+'.balance.FAR'] = 0.02467
5656
self.prob[pt+'.balance.W'] = 300
5757
self.prob[pt+'.balance.BPR'] = 5.105
58-
self.prob[pt+'.balance.lp_Nmech'] = 5000
59-
self.prob[pt+'.balance.hp_Nmech'] = 15000
58+
self.prob[pt+'.balance.lp_Nmech'] = 5000
59+
self.prob[pt+'.balance.hp_Nmech'] = 15000
6060
self.prob[pt+'.hpt.PR'] = 3.
6161
self.prob[pt+'.lpt.PR'] = 4.
6262
self.prob[pt+'.fan.map.RlineMap'] = 2.0
@@ -65,153 +65,154 @@ def setUp(self):
6565

6666

6767
def benchmark_case1(self):
68-
np.seterr(divide='raise')
69-
70-
71-
self.prob.set_solver_print(level=-1)
72-
self.prob.set_solver_print(level=2, depth=1)
73-
self.prob.run_model()
74-
tol = 1e-5
75-
print()
76-
77-
reg_data = 344.303
78-
pyc = self.prob['DESIGN.inlet.Fl_O:stat:W'][0]
79-
print('W:', pyc, reg_data)
80-
assert_near_equal(pyc, reg_data, tol)
81-
82-
reg_data = 30.094
83-
pyc = self.prob['DESIGN.perf.OPR'][0]
84-
print('OPR:', pyc, reg_data)
85-
assert_near_equal(pyc, reg_data, tol)
86-
87-
reg_data = 0.02491989
88-
pyc = self.prob['DESIGN.balance.FAR'][0]
89-
print('FAR:', pyc, reg_data)
90-
assert_near_equal(pyc, reg_data, tol)
91-
92-
reg_data = 3.61475
93-
pyc = self.prob['DESIGN.balance.hpt_PR'][0]
94-
print('HPT PR:', pyc, reg_data)
95-
assert_near_equal(pyc, reg_data, tol)
96-
97-
reg_data = 4.3656305
98-
pyc = self.prob['DESIGN.balance.lpt_PR'][0]
99-
print('LPT PR:', pyc, reg_data)
100-
assert_near_equal(pyc, reg_data, tol)
101-
102-
reg_data = 14232.2
103-
pyc = self.prob['DESIGN.perf.Fg'][0]
104-
print('Fg:', pyc, reg_data)
105-
assert_near_equal(pyc, reg_data, tol)
106-
107-
reg_data = 0.63071997
108-
pyc = self.prob['DESIGN.perf.TSFC'][0]
109-
print('TSFC:', pyc, reg_data)
110-
assert_near_equal(pyc, reg_data, tol)
111-
112-
reg_data = 1276.47613
113-
pyc = self.prob['DESIGN.bld3.Fl_O:tot:T'][0]
114-
print('Tt3:', pyc, reg_data)
115-
assert_near_equal(pyc, reg_data, tol)
116-
117-
118-
print('#'*10)
119-
print('# OD_full_pwr')
120-
print('#'*10)
121-
reg_data = 344.303
122-
pyc = self.prob['OD_full_pwr.inlet.Fl_O:stat:W'][0]
123-
print('W:', pyc, reg_data)
124-
assert_near_equal(pyc, reg_data, tol)
125-
126-
reg_data = 30.0937151
127-
pyc = self.prob['OD_full_pwr.perf.OPR'][0]
128-
print('OPR:', pyc, reg_data)
129-
assert_near_equal(pyc, reg_data, tol)
130-
131-
reg_data = 0.0249198
132-
pyc = self.prob['OD_full_pwr.balance.FAR'][0]
133-
print('FAR:', pyc, reg_data)
134-
assert_near_equal(pyc, reg_data, tol)
135-
136-
reg_data = 14705.7
137-
pyc = self.prob['OD_full_pwr.balance.hp_Nmech'][0]
138-
print('HPT Nmech:', pyc, reg_data)
139-
assert_near_equal(pyc, reg_data, tol)
140-
141-
reg_data = 4666.1
142-
pyc = self.prob['OD_full_pwr.balance.lp_Nmech'][0]
143-
print('LPT Nmech:', pyc, reg_data)
144-
assert_near_equal(pyc, reg_data, tol)
145-
146-
reg_data = 14232.2
147-
pyc = self.prob['OD_full_pwr.perf.Fg'][0]
148-
print('Fg:', pyc, reg_data)
149-
assert_near_equal(pyc, reg_data, tol)
150-
151-
reg_data = 0.63071997
152-
pyc = self.prob['OD_full_pwr.perf.TSFC'][0]
153-
print('TSFC:', pyc, reg_data)
154-
assert_near_equal(pyc, reg_data, tol)
155-
156-
reg_data = 1276.48
157-
pyc = self.prob['OD_full_pwr.bld3.Fl_O:tot:T'][0]
158-
print('Tt3:', pyc, reg_data)
159-
assert_near_equal(pyc, reg_data, tol)
160-
161-
reg_data = 5.105
162-
pyc = self.prob['OD_full_pwr.balance.BPR'][0]
163-
print('BPR:', pyc, reg_data)
164-
assert_near_equal(pyc, reg_data, tol)
165-
166-
167-
print('#'*10)
168-
print('# OD_part_pwr')
169-
print('#'*10)
170-
reg_data = 324.633
171-
pyc = self.prob['OD_part_pwr.inlet.Fl_O:stat:W'][0]
172-
print('W:', pyc, reg_data)
173-
assert_near_equal(pyc, reg_data, tol)
174-
175-
reg_data = 25.21321086
176-
pyc = self.prob['OD_part_pwr.perf.OPR'][0]
177-
print('OPR:', pyc, reg_data)
178-
assert_near_equal(pyc, reg_data, tol)
179-
180-
reg_data = 0.0224776
181-
pyc = self.prob['OD_part_pwr.balance.FAR'][0]
182-
print('FAR:', pyc, reg_data)
183-
assert_near_equal(pyc, reg_data, tol)
184-
185-
reg_data = 14251.973
186-
pyc = self.prob['OD_part_pwr.balance.hp_Nmech'][0]
187-
print('HPT Nmech:', pyc, reg_data)
188-
assert_near_equal(pyc, reg_data, tol)
189-
190-
reg_data = 4301.935
191-
pyc = self.prob['OD_part_pwr.balance.lp_Nmech'][0]
192-
print('LPT Nmech:', pyc, reg_data)
193-
assert_near_equal(pyc, reg_data, tol)
194-
195-
reg_data = 12576.2
196-
pyc = self.prob['OD_part_pwr.perf.Fg'][0]
197-
print('Fg:', pyc, reg_data)
198-
assert_near_equal(pyc, reg_data, tol)
199-
200-
reg_data = 0.61883
201-
pyc = self.prob['OD_part_pwr.perf.TSFC'][0]
202-
print('TSFC:', pyc, reg_data)
203-
assert_near_equal(pyc, reg_data, tol)
204-
205-
reg_data = 1205.007
206-
pyc = self.prob['OD_part_pwr.bld3.Fl_O:tot:T'][0]
207-
print('Tt3:', pyc, reg_data)
208-
assert_near_equal(pyc, reg_data, tol)
209-
210-
reg_data = 5.614823
211-
pyc = self.prob['OD_part_pwr.balance.BPR'][0]
212-
print('BPR:', pyc, reg_data)
213-
assert_near_equal(pyc, reg_data, tol)
214-
68+
old = np.seterr(divide='raise')
69+
70+
try:
71+
self.prob.set_solver_print(level=-1)
72+
self.prob.set_solver_print(level=2, depth=1)
73+
self.prob.run_model()
74+
tol = 1e-5
75+
print()
76+
77+
reg_data = 344.303
78+
pyc = self.prob['DESIGN.inlet.Fl_O:stat:W'][0]
79+
print('W:', pyc, reg_data)
80+
assert_near_equal(pyc, reg_data, tol)
81+
82+
reg_data = 30.094
83+
pyc = self.prob['DESIGN.perf.OPR'][0]
84+
print('OPR:', pyc, reg_data)
85+
assert_near_equal(pyc, reg_data, tol)
86+
87+
reg_data = 0.02491989
88+
pyc = self.prob['DESIGN.balance.FAR'][0]
89+
print('FAR:', pyc, reg_data)
90+
assert_near_equal(pyc, reg_data, tol)
91+
92+
reg_data = 3.61475
93+
pyc = self.prob['DESIGN.balance.hpt_PR'][0]
94+
print('HPT PR:', pyc, reg_data)
95+
assert_near_equal(pyc, reg_data, tol)
96+
97+
reg_data = 4.3656305
98+
pyc = self.prob['DESIGN.balance.lpt_PR'][0]
99+
print('LPT PR:', pyc, reg_data)
100+
assert_near_equal(pyc, reg_data, tol)
101+
102+
reg_data = 14232.2
103+
pyc = self.prob['DESIGN.perf.Fg'][0]
104+
print('Fg:', pyc, reg_data)
105+
assert_near_equal(pyc, reg_data, tol)
106+
107+
reg_data = 0.63071997
108+
pyc = self.prob['DESIGN.perf.TSFC'][0]
109+
print('TSFC:', pyc, reg_data)
110+
assert_near_equal(pyc, reg_data, tol)
111+
112+
reg_data = 1276.47613
113+
pyc = self.prob['DESIGN.bld3.Fl_O:tot:T'][0]
114+
print('Tt3:', pyc, reg_data)
115+
assert_near_equal(pyc, reg_data, tol)
116+
117+
118+
print('#'*10)
119+
print('# OD_full_pwr')
120+
print('#'*10)
121+
reg_data = 344.303
122+
pyc = self.prob['OD_full_pwr.inlet.Fl_O:stat:W'][0]
123+
print('W:', pyc, reg_data)
124+
assert_near_equal(pyc, reg_data, tol)
125+
126+
reg_data = 30.0937151
127+
pyc = self.prob['OD_full_pwr.perf.OPR'][0]
128+
print('OPR:', pyc, reg_data)
129+
assert_near_equal(pyc, reg_data, tol)
130+
131+
reg_data = 0.0249198
132+
pyc = self.prob['OD_full_pwr.balance.FAR'][0]
133+
print('FAR:', pyc, reg_data)
134+
assert_near_equal(pyc, reg_data, tol)
135+
136+
reg_data = 14705.7
137+
pyc = self.prob['OD_full_pwr.balance.hp_Nmech'][0]
138+
print('HPT Nmech:', pyc, reg_data)
139+
assert_near_equal(pyc, reg_data, tol)
140+
141+
reg_data = 4666.1
142+
pyc = self.prob['OD_full_pwr.balance.lp_Nmech'][0]
143+
print('LPT Nmech:', pyc, reg_data)
144+
assert_near_equal(pyc, reg_data, tol)
145+
146+
reg_data = 14232.2
147+
pyc = self.prob['OD_full_pwr.perf.Fg'][0]
148+
print('Fg:', pyc, reg_data)
149+
assert_near_equal(pyc, reg_data, tol)
150+
151+
reg_data = 0.63071997
152+
pyc = self.prob['OD_full_pwr.perf.TSFC'][0]
153+
print('TSFC:', pyc, reg_data)
154+
assert_near_equal(pyc, reg_data, tol)
155+
156+
reg_data = 1276.48
157+
pyc = self.prob['OD_full_pwr.bld3.Fl_O:tot:T'][0]
158+
print('Tt3:', pyc, reg_data)
159+
assert_near_equal(pyc, reg_data, tol)
160+
161+
reg_data = 5.105
162+
pyc = self.prob['OD_full_pwr.balance.BPR'][0]
163+
print('BPR:', pyc, reg_data)
164+
assert_near_equal(pyc, reg_data, tol)
165+
166+
167+
print('#'*10)
168+
print('# OD_part_pwr')
169+
print('#'*10)
170+
reg_data = 324.633
171+
pyc = self.prob['OD_part_pwr.inlet.Fl_O:stat:W'][0]
172+
print('W:', pyc, reg_data)
173+
assert_near_equal(pyc, reg_data, tol)
174+
175+
reg_data = 25.21321086
176+
pyc = self.prob['OD_part_pwr.perf.OPR'][0]
177+
print('OPR:', pyc, reg_data)
178+
assert_near_equal(pyc, reg_data, tol)
179+
180+
reg_data = 0.0224776
181+
pyc = self.prob['OD_part_pwr.balance.FAR'][0]
182+
print('FAR:', pyc, reg_data)
183+
assert_near_equal(pyc, reg_data, tol)
184+
185+
reg_data = 14251.973
186+
pyc = self.prob['OD_part_pwr.balance.hp_Nmech'][0]
187+
print('HPT Nmech:', pyc, reg_data)
188+
assert_near_equal(pyc, reg_data, tol)
189+
190+
reg_data = 4301.935
191+
pyc = self.prob['OD_part_pwr.balance.lp_Nmech'][0]
192+
print('LPT Nmech:', pyc, reg_data)
193+
assert_near_equal(pyc, reg_data, tol)
194+
195+
reg_data = 12576.2
196+
pyc = self.prob['OD_part_pwr.perf.Fg'][0]
197+
print('Fg:', pyc, reg_data)
198+
assert_near_equal(pyc, reg_data, tol)
199+
200+
reg_data = 0.61883
201+
pyc = self.prob['OD_part_pwr.perf.TSFC'][0]
202+
print('TSFC:', pyc, reg_data)
203+
assert_near_equal(pyc, reg_data, tol)
204+
205+
reg_data = 1205.007
206+
pyc = self.prob['OD_part_pwr.bld3.Fl_O:tot:T'][0]
207+
print('Tt3:', pyc, reg_data)
208+
assert_near_equal(pyc, reg_data, tol)
209+
210+
reg_data = 5.614823
211+
pyc = self.prob['OD_part_pwr.balance.BPR'][0]
212+
print('BPR:', pyc, reg_data)
213+
assert_near_equal(pyc, reg_data, tol)
214+
finally:
215+
np.seterr(**old)
215216

216217
if __name__ == "__main__":
217218
unittest.main()

0 commit comments

Comments
 (0)