Skip to content

Commit 59a6b0b

Browse files
committed
cleaning up some old tests to use latest OM asserts
1 parent d79e0b8 commit 59a6b0b

18 files changed

+196
-252
lines changed

pycycle/connect_flow.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
1+
import warnings
2+
3+
14
def connect_flow(group, fl_src, fl_target, connect_stat=True, connect_tot=True, connect_w=True):
25
""" connect flow variables """
36

7+
warnings.simplefilter('always', DeprecationWarning)
8+
warnings.warn(f"Deprecation warning: `connect_flow` function is deprecated. Use the `pyc_connect_flow` method from `Cycle` class instead." )
9+
warnings.simplefilter('ignore', DeprecationWarning)
10+
411
# total
512
if connect_tot:
6-
for v_name in ('h','T','P','S','rho','gamma','Cp','Cv','n', 'R', 'b0'):
13+
for v_name in ('h','T','P','S','rho','gamma','Cp','Cv', 'R', 'b0'):
714
group.connect('%s:tot:%s'%(fl_src, v_name), '%s:tot:%s'%(fl_target, v_name))
815

916
# static
1017
if connect_stat:
1118
for v_name in ('V', 'Vsonic'): # ('Wc', 'W', 'FAR'):
1219
group.connect('%s:stat:%s'%(fl_src, v_name), '%s:stat:%s'%(fl_target, v_name))
1320

14-
for v_name in ('Cp', 'Cv', 'MN', 'P', 'S', 'T', 'area', 'gamma', 'h', 'n', 'rho', 'b0'):
21+
for v_name in ('Cp', 'Cv', 'MN', 'P', 'S', 'T', 'area', 'gamma', 'h', 'rho', 'b0'):
1522
group.connect('%s:stat:%s'%(fl_src, v_name), '%s:stat:%s'%(fl_target, v_name))
1623

1724
if connect_w:

pycycle/elements/test/test_ambient.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import os
44

55
from openmdao.api import Problem
6+
from openmdao.utils.assert_utils import assert_check_partials
67

78

89
from pycycle.elements.ambient import Ambient
910

10-
from pycycle.elements.test.util import check_element_partials
1111

1212
fpath = os.path.dirname(os.path.realpath(__file__))
1313
ref_data = np.loadtxt(fpath + "/reg_data/ambient.csv",
@@ -27,7 +27,7 @@ def setUp(self):
2727
self.prob.model.set_input_defaults('amb.alt', 0, units='ft')
2828
self.prob.model.set_input_defaults('amb.dTs', 0, units='degR')
2929

30-
self.prob.setup(check=False)
30+
self.prob.setup(check=False, force_alloc_complex=True)
3131

3232
def test_case1(self):
3333
np.seterr(divide='raise')
@@ -51,8 +51,11 @@ def test_case1(self):
5151
rel_err = abs(npss - pyc)/npss
5252
self.assertLessEqual(rel_err, tol)
5353

54-
# print()
55-
check_element_partials(self, self.prob)
54+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
55+
includes=['amb.*'], excludes=['*.base_thermo.*', 'amb.readAtmTable'])
56+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
57+
58+
5659

5760
if __name__ == "__main__":
5861
unittest.main()

pycycle/elements/test/test_combustor.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
from pycycle.thermo.cea import species_data
1414
from pycycle.elements.combustor import Combustor
1515

16-
from pycycle.elements.test.util import check_element_partials
17-
1816

1917
fpath = os.path.dirname(os.path.realpath(__file__))
2018
ref_data = np.loadtxt(fpath + "/reg_data/combustorJP7.csv",
@@ -48,7 +46,7 @@ def test_case1(self):
4846
5.39157698e-02, 1.44860137e-02])
4947

5048
prob.set_solver_print(level=2)
51-
prob.setup(check=False)
49+
prob.setup(check=False, force_alloc_complex=True)
5250

5351
# 6 cases to check against
5452
for i, data in enumerate(ref_data):
@@ -111,7 +109,10 @@ def test_case1(self):
111109

112110
print('')
113111

114-
check_element_partials(self, prob, tol=1e-4)
112+
partial_data = prob.check_partials(out_stream=None, method='cs',
113+
includes=['combustor.*',], excludes=['*.base_thermo.*',])
114+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
115+
115116

116117
if __name__ == "__main__":
117118
unittest.main()

pycycle/elements/test/test_compressor.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44

55
from openmdao.api import Problem
6-
from openmdao.utils.assert_utils import assert_near_equal
6+
from openmdao.utils.assert_utils import assert_near_equal, assert_check_partials
77

88
from pycycle.constants import AIR_ELEMENTS
99
from pycycle.connect_flow import connect_flow
@@ -12,8 +12,6 @@
1212
from pycycle.elements.flow_start import FlowStart
1313
from pycycle import constants
1414

15-
from pycycle.elements.test.util import check_element_partials
16-
1715
fpath = os.path.dirname(os.path.realpath(__file__))
1816
ref_data = np.loadtxt(fpath + "/reg_data/compressor.csv",
1917
delimiter=",", skiprows=1)
@@ -64,7 +62,7 @@ def setUp(self):
6462
connect_flow(self.prob.model, "flow_start.Fl_O", "compressor.Fl_I")
6563

6664
self.prob.set_solver_print(level=-1)
67-
self.prob.setup(check=False)
65+
self.prob.setup(check=False, force_alloc_complex=True)
6866

6967
def test_case1(self):
7068
np.seterr(divide='raise')
@@ -128,7 +126,9 @@ def test_case1(self):
128126
assert_near_equal(pyc, npss, tol)
129127
print("")
130128

131-
check_element_partials(self, self.prob,tol = 5e-5)
129+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
130+
includes=['compressor.*'], excludes=['*.base_thermo.*',])
131+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
132132

133133
if __name__ == "__main__":
134134
unittest.main()

pycycle/elements/test/test_compressor_od.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import os
44

55
from openmdao.api import Problem
6-
from openmdao.utils.assert_utils import assert_near_equal
6+
from openmdao.utils.assert_utils import assert_near_equal, assert_check_partials
77
from openmdao.api import DirectSolver, BoundsEnforceLS, NewtonSolver
88

9-
9+
from pycycle.mp_cycle import Cycle
1010
from pycycle.constants import AIR_ELEMENTS
1111
from pycycle.thermo.cea.species_data import janaf
1212
from pycycle.connect_flow import connect_flow
@@ -16,31 +16,30 @@
1616
from pycycle.maps.axi5 import AXI5
1717
from pycycle import constants
1818

19-
from pycycle.elements.test.util import check_element_partials
20-
2119

2220
class CompressorODTestCase(unittest.TestCase):
2321

2422
def setUp(self):
2523

2624
self.prob = Problem()
25+
cycle = self.prob.model = Cycle()
2726

28-
self.prob.model.add_subsystem('flow_start', FlowStart(thermo_data=janaf, elements=AIR_ELEMENTS))
29-
self.prob.model.add_subsystem('compressor', Compressor(
27+
cycle.add_subsystem('flow_start', FlowStart(thermo_data=janaf, elements=AIR_ELEMENTS))
28+
cycle.add_subsystem('compressor', Compressor(
3029
map_data=AXI5, design=False, elements=AIR_ELEMENTS, map_extrap=False))
3130

32-
self.prob.model.set_input_defaults('compressor.s_PR', val=1.)
33-
self.prob.model.set_input_defaults('compressor.s_eff', val=1.)
34-
self.prob.model.set_input_defaults('compressor.s_Wc', val=1.)
35-
self.prob.model.set_input_defaults('compressor.s_Nc', val=1.)
36-
self.prob.model.set_input_defaults('compressor.map.alphaMap', val=0.)
37-
self.prob.model.set_input_defaults('compressor.Nmech', 0., units='rpm')
38-
self.prob.model.set_input_defaults('flow_start.P', 17., units='psi')
39-
self.prob.model.set_input_defaults('flow_start.T', 500., units='degR')
40-
self.prob.model.set_input_defaults('flow_start.W', 0., units='lbm/s')
41-
self.prob.model.set_input_defaults('compressor.area', 50., units='inch**2')
31+
cycle.set_input_defaults('compressor.s_PR', val=1.)
32+
cycle.set_input_defaults('compressor.s_eff', val=1.)
33+
cycle.set_input_defaults('compressor.s_Wc', val=1.)
34+
cycle.set_input_defaults('compressor.s_Nc', val=1.)
35+
cycle.set_input_defaults('compressor.map.alphaMap', val=0.)
36+
cycle.set_input_defaults('compressor.Nmech', 0., units='rpm')
37+
cycle.set_input_defaults('flow_start.P', 17., units='psi')
38+
cycle.set_input_defaults('flow_start.T', 500., units='degR')
39+
cycle.set_input_defaults('flow_start.W', 0., units='lbm/s')
40+
cycle.set_input_defaults('compressor.area', 50., units='inch**2')
4241

43-
connect_flow(self.prob.model, "flow_start.Fl_O", "compressor.Fl_I")
42+
cycle.pyc_connect_flow("flow_start.Fl_O", "compressor.Fl_I")
4443

4544
newton = self.prob.model.nonlinear_solver = NewtonSolver()
4645
newton.options['atol'] = 1e-8
@@ -57,7 +56,7 @@ def setUp(self):
5756

5857

5958
self.prob.set_solver_print(level=-1)
60-
self.prob.setup(check=False)
59+
self.prob.setup(check=False, force_alloc_complex=True)
6160

6261
def test_case1(self):
6362
np.seterr(divide='raise')
@@ -201,7 +200,8 @@ def test_case1(self):
201200
assert_near_equal(pyc, npss, tol)
202201
print()
203202

204-
check_element_partials(self, self.prob,tol = 5e-5)
205-
203+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
204+
includes=['compressor.*'], excludes=['*.base_thermo.*',])
205+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
206206
if __name__ == "__main__":
207207
unittest.main()

pycycle/elements/test/test_duct.py

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,15 @@
66
import numpy as np
77

88
from openmdao.api import Problem, Group
9-
from openmdao.utils.assert_utils import assert_near_equal
9+
from openmdao.utils.assert_utils import assert_near_equal, assert_check_partials
1010

11+
from pycycle.mp_cycle import Cycle
1112
from pycycle.thermo.cea.species_data import janaf
1213
from pycycle.elements.duct import Duct
1314
from pycycle.elements.flow_start import FlowStart
1415
from pycycle.constants import AIR_ELEMENTS
1516
from pycycle import constants
1617

17-
from pycycle.elements.test.util import check_element_partials
18-
from pycycle.connect_flow import connect_flow
19-
2018

2119
fpath = os.path.dirname(os.path.realpath(__file__))
2220
ref_data = np.loadtxt(fpath + "/reg_data/duct.csv", delimiter=",", skiprows=1)
@@ -55,20 +53,20 @@ class DuctTestCase(unittest.TestCase):
5553
def test_case1(self):
5654

5755
self.prob = Problem()
58-
self.prob.model = Group()
59-
self.prob.model.add_subsystem('flow_start', FlowStart(thermo_data=janaf,
56+
cycle = self.prob.model = Cycle()
57+
cycle.add_subsystem('flow_start', FlowStart(thermo_data=janaf,
6058
elements=AIR_ELEMENTS), promotes=['MN', 'P', 'T'])
61-
self.prob.model.add_subsystem('duct', Duct(elements=AIR_ELEMENTS), promotes=['MN'])
59+
cycle.add_subsystem('duct', Duct(elements=AIR_ELEMENTS), promotes=['MN'])
6260

63-
connect_flow(self.prob.model, 'flow_start.Fl_O', 'duct.Fl_I')
61+
cycle.pyc_connect_flow('flow_start.Fl_O', 'duct.Fl_I')
6462

65-
self.prob.model.set_input_defaults('MN', 0.5)
66-
self.prob.model.set_input_defaults('duct.dPqP', 0.0)
67-
self.prob.model.set_input_defaults('P', 17., units='psi')
68-
self.prob.model.set_input_defaults('T', 500., units='degR')
69-
self.prob.model.set_input_defaults('flow_start.W', 500., units='lbm/s')
63+
cycle.set_input_defaults('MN', 0.5)
64+
cycle.set_input_defaults('duct.dPqP', 0.0)
65+
cycle.set_input_defaults('P', 17., units='psi')
66+
cycle.set_input_defaults('T', 500., units='degR')
67+
cycle.set_input_defaults('flow_start.W', 500., units='lbm/s')
7068

71-
self.prob.setup(check=False)
69+
self.prob.setup(check=False, force_alloc_complex=True)
7270
self.prob.set_solver_print(level=-1)
7371

7472
# 6 cases to check against
@@ -103,36 +101,39 @@ def test_case1(self):
103101
assert_near_equal(ps_computed, ps, tol)
104102
assert_near_equal(ts_computed, ts, tol)
105103

106-
check_element_partials(self, self.prob)
104+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
105+
includes=['duct.*'], excludes=['*.base_thermo.*',])
106+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
107+
107108

108109

109110
def test_case_with_dPqP_MN(self):
110111

111112
self.prob = Problem()
112-
self.prob.model = Group()
113-
self.prob.model.add_subsystem('flow_start', FlowStart(thermo_data=janaf,
113+
cycle = self.prob.model = Cycle()
114+
cycle.add_subsystem('flow_start', FlowStart(thermo_data=janaf,
114115
elements=AIR_ELEMENTS), promotes=['P', 'T', 'MN', 'W'])
115-
self.prob.model.add_subsystem('flow_start_OD', FlowStart(thermo_data=janaf,
116+
cycle.add_subsystem('flow_start_OD', FlowStart(thermo_data=janaf,
116117
elements=AIR_ELEMENTS), promotes=['P', 'T', 'W'])
117118

118119
expMN = 1.0
119-
self.prob.model.add_subsystem('duct_des', Duct(elements=AIR_ELEMENTS, expMN=expMN), promotes=['MN'])
120-
self.prob.model.add_subsystem('duct_OD', Duct(elements=AIR_ELEMENTS, expMN=expMN, design=False))
120+
cycle.add_subsystem('duct_des', Duct(elements=AIR_ELEMENTS, expMN=expMN), promotes=['MN'])
121+
cycle.add_subsystem('duct_OD', Duct(elements=AIR_ELEMENTS, expMN=expMN, design=False))
121122

122-
connect_flow(self.prob.model, 'flow_start.Fl_O', 'duct_des.Fl_I')
123-
connect_flow(self.prob.model, 'flow_start_OD.Fl_O', 'duct_OD.Fl_I')
123+
cycle.pyc_connect_flow('flow_start.Fl_O', 'duct_des.Fl_I')
124+
cycle.pyc_connect_flow('flow_start_OD.Fl_O', 'duct_OD.Fl_I')
124125

125-
self.prob.model.set_input_defaults('P', 17., units='psi')
126-
self.prob.model.set_input_defaults('T', 500., units='degR')
127-
self.prob.model.set_input_defaults('MN', 0.5)
128-
self.prob.model.set_input_defaults('flow_start_OD.MN', 0.25)
129-
self.prob.model.set_input_defaults('duct_des.dPqP', 0.0)
130-
self.prob.model.set_input_defaults('W', 500., units='lbm/s')
126+
cycle.set_input_defaults('P', 17., units='psi')
127+
cycle.set_input_defaults('T', 500., units='degR')
128+
cycle.set_input_defaults('MN', 0.5)
129+
cycle.set_input_defaults('flow_start_OD.MN', 0.25)
130+
cycle.set_input_defaults('duct_des.dPqP', 0.0)
131+
cycle.set_input_defaults('W', 500., units='lbm/s')
131132

132-
self.prob.model.connect("duct_des.s_dPqP", "duct_OD.s_dPqP")
133-
self.prob.model.connect("duct_des.Fl_O:stat:area", "duct_OD.area")
133+
cycle.connect("duct_des.s_dPqP", "duct_OD.s_dPqP")
134+
cycle.connect("duct_des.Fl_O:stat:area", "duct_OD.area")
134135

135-
self.prob.setup(check=False)
136+
self.prob.setup(check=False, force_alloc_complex=True)
136137
self.prob.set_solver_print(level=-1)
137138

138139

@@ -166,7 +167,9 @@ def test_case_with_dPqP_MN(self):
166167
assert_near_equal(ps_computed, 8.26348914, tol)
167168
assert_near_equal(ts_computed, ts, tol)
168169

169-
check_element_partials(self, self.prob)
170+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
171+
includes=['duct_OD.*'], excludes=['*.base_thermo.*',])
172+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
170173

171174
if __name__ == "__main__":
172175
unittest.main()

pycycle/elements/test/test_flightconditions.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
import os
44

55
import openmdao.api as om
6-
from openmdao.utils.assert_utils import assert_near_equal
6+
from openmdao.utils.assert_utils import assert_near_equal, assert_check_partials
77

88
from pycycle.thermo.cea.species_data import janaf
99
from pycycle.elements.flight_conditions import FlightConditions
1010

11-
from pycycle.elements.test.util import check_element_partials
12-
1311

1412
fpath = os.path.dirname(os.path.realpath(__file__))
1513
ref_data = np.loadtxt(fpath + "/reg_data/ambient.csv",
@@ -31,7 +29,7 @@ def setUp(self):
3129

3230
self.prob.model.add_subsystem('fc', FlightConditions())
3331

34-
self.prob.setup(check=False)
32+
self.prob.setup(check=False, force_alloc_complex=True)
3533
self.prob.set_solver_print(level=-1)
3634

3735
def test_case1(self):
@@ -66,7 +64,9 @@ def test_case1(self):
6664
assert_near_equal(Tt_c, Tt, tol)
6765
assert_near_equal(Ps_c, Ps, tol)
6866

69-
check_element_partials(self, self.prob, depth=3)
67+
partial_data = self.prob.check_partials(out_stream=None, method='cs',
68+
includes=['fc.*'], excludes=['*.base_thermo.*', 'fc.ambient.readAtmTable'])
69+
assert_check_partials(partial_data, atol=1e-8, rtol=1e-8)
7070

7171
if __name__ == "__main__":
7272
unittest.main()

0 commit comments

Comments
 (0)