|
6 | 6 | import numpy as np |
7 | 7 |
|
8 | 8 | 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 |
10 | 10 |
|
| 11 | +from pycycle.mp_cycle import Cycle |
11 | 12 | from pycycle.thermo.cea.species_data import janaf |
12 | 13 | from pycycle.elements.duct import Duct |
13 | 14 | from pycycle.elements.flow_start import FlowStart |
14 | 15 | from pycycle.constants import AIR_ELEMENTS |
15 | 16 | from pycycle import constants |
16 | 17 |
|
17 | | -from pycycle.elements.test.util import check_element_partials |
18 | | -from pycycle.connect_flow import connect_flow |
19 | | - |
20 | 18 |
|
21 | 19 | fpath = os.path.dirname(os.path.realpath(__file__)) |
22 | 20 | ref_data = np.loadtxt(fpath + "/reg_data/duct.csv", delimiter=",", skiprows=1) |
@@ -55,20 +53,20 @@ class DuctTestCase(unittest.TestCase): |
55 | 53 | def test_case1(self): |
56 | 54 |
|
57 | 55 | 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, |
60 | 58 | 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']) |
62 | 60 |
|
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') |
64 | 62 |
|
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') |
70 | 68 |
|
71 | | - self.prob.setup(check=False) |
| 69 | + self.prob.setup(check=False, force_alloc_complex=True) |
72 | 70 | self.prob.set_solver_print(level=-1) |
73 | 71 |
|
74 | 72 | # 6 cases to check against |
@@ -103,36 +101,39 @@ def test_case1(self): |
103 | 101 | assert_near_equal(ps_computed, ps, tol) |
104 | 102 | assert_near_equal(ts_computed, ts, tol) |
105 | 103 |
|
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 | + |
107 | 108 |
|
108 | 109 |
|
109 | 110 | def test_case_with_dPqP_MN(self): |
110 | 111 |
|
111 | 112 | 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, |
114 | 115 | 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, |
116 | 117 | elements=AIR_ELEMENTS), promotes=['P', 'T', 'W']) |
117 | 118 |
|
118 | 119 | 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)) |
121 | 122 |
|
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') |
124 | 125 |
|
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') |
131 | 132 |
|
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") |
134 | 135 |
|
135 | | - self.prob.setup(check=False) |
| 136 | + self.prob.setup(check=False, force_alloc_complex=True) |
136 | 137 | self.prob.set_solver_print(level=-1) |
137 | 138 |
|
138 | 139 |
|
@@ -166,7 +167,9 @@ def test_case_with_dPqP_MN(self): |
166 | 167 | assert_near_equal(ps_computed, 8.26348914, tol) |
167 | 168 | assert_near_equal(ts_computed, ts, tol) |
168 | 169 |
|
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) |
170 | 173 |
|
171 | 174 | if __name__ == "__main__": |
172 | 175 | unittest.main() |
0 commit comments