def test_ex_two_burn_orbit_raise_connected(self): optimizer = 'IPOPT' p = two_burn_orbit_raise_problem(transcription='gauss-lobatto', transcription_order=3, compressed=False, optimizer=optimizer, show_output=False, connected=True) if p.model.traj.phases.burn2 in p.model.traj.phases._subsystems_myproc: assert_near_equal(p.get_val('traj.burn2.states:deltav')[0], 0.3995, tolerance=4.0E-3) case1 = om.CaseReader('dymos_solution.db').get_case('final') sim_case1 = om.CaseReader('dymos_simulation.db').get_case('final') # Run again without an actual optimzier p = two_burn_orbit_raise_problem(transcription='gauss-lobatto', transcription_order=3, compressed=False, optimizer=None, show_output=False, restart='dymos_solution.db', connected=True) case2 = om.CaseReader('dymos_solution.db').get_case('final') sim_case2 = om.CaseReader('dymos_simulation.db').get_case('final') # Verify that the second case has the same inputs and outputs assert_cases_equal(case1, case2) assert_cases_equal(sim_case1, sim_case2)
def test_allow_different_variables(self): p1 = om.Problem() ivc = p1.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=0.0) ivc.add_output('b', val=1.0) ivc.add_output('c', val=2.0) ivc.add_output('x', val=3.0) p1.add_recorder(om.SqliteRecorder('p1.db')) p1.setup() p2 = om.Problem() ivc = p2.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('x', val=3.0) ivc.add_output('y', val=4.0) ivc.add_output('z', val=5.0) p2.add_recorder(om.SqliteRecorder('p2.db')) p2.setup() p1.run_model() p2.run_model() p1.record('final') p1.cleanup() p2.record('final') p2.cleanup() c1 = om.CaseReader('p1.db').get_case('final') c2 = om.CaseReader('p2.db').get_case('final') assert_cases_equal(c1, c2, require_same_vars=False)
def test_different_variables(self): p1 = om.Problem() ivc = p1.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=0.0) ivc.add_output('b', val=1.0) ivc.add_output('c', val=2.0) ivc.add_output('x', val=3.0) p1.add_recorder(om.SqliteRecorder('p1.db')) p1.setup() p2 = om.Problem() ivc = p2.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('x', val=3.0) ivc.add_output('y', val=4.0) ivc.add_output('z', val=5.0) p2.add_recorder(om.SqliteRecorder('p2.db')) p2.setup() p1.run_model() p2.run_model() p1.record('final') p1.cleanup() p2.record('final') p2.cleanup() c1 = om.CaseReader('p1.db').get_case('final') c2 = om.CaseReader('p2.db').get_case('final') with self.assertRaises(AssertionError) as e: assert_cases_equal(c1, c2) expected = "\nrequire_same_vars=True but cases contain different variables.\nVariables in " \ "case1 but not in case2: ['a', 'b', 'c']\nVariables in case2 but not in " \ "case1: ['y', 'z']" self.assertEqual(str(e.exception), expected)
def test_different_shapes(self): p1 = om.Problem() ivc = p1.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=np.array([0, 1, 2])) ivc.add_output('b', val=np.array([[0, 1, 2], [3, 4, 5]])) ivc.add_output('c', val=np.eye(3, dtype=float)) p1.add_recorder(om.SqliteRecorder('p1.db')) p1.setup() p2 = om.Problem() ivc = p2.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=3.0) ivc.add_output('b', val=np.array([0, 1, 2])) ivc.add_output('c', val=np.ones(3, dtype=float)) p2.add_recorder(om.SqliteRecorder('p2.db')) p2.setup() p1.run_model() p2.run_model() p1.record('final') p1.cleanup() p2.record('final') p2.cleanup() c1 = om.CaseReader('p1.db').get_case('final') c2 = om.CaseReader('p2.db').get_case('final') with self.assertRaises(AssertionError) as e: assert_cases_equal(c1, c2) expected = "\nThe following variables have different shapes/sizes:\na has shape (3,) in " \ "case1 but shape (1,) in case2\nb has shape (2, 3) in case1 but shape (3,) in " \ "case2\nc has shape (3, 3) in case1 but shape (3,) in case2" self.assertEqual(str(e.exception), expected)
def test_different_values(self): p1 = om.Problem() ivc = p1.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=np.array([0, 1, 2])) ivc.add_output('b', val=np.array([[0, 1, 2], [3, 4, 5]])) ivc.add_output('c', val=np.eye(3, dtype=float)) p1.add_recorder(om.SqliteRecorder('p1.db')) p1.setup() p2 = om.Problem() ivc = p2.model.add_subsystem('ivc', om.IndepVarComp(), promotes_outputs=['*']) ivc.add_output('a', val=3 * np.array([0, 1, 2])) ivc.add_output('b', val=2 * np.array([[0, 1, 2], [3, 4, 5]])) ivc.add_output('c', val=5 * np.eye(3, dtype=float)) p2.add_recorder(om.SqliteRecorder('p2.db')) p2.setup() p1.run_model() p2.run_model() p1.record('final') p1.cleanup() p2.record('final') p2.cleanup() c1 = om.CaseReader('p1.db').get_case('final') c2 = om.CaseReader('p2.db').get_case('final') expected = "\nThe following variables contain different values:\nvar: " \ "error\na: [0. 2. 4.]\nb: [[0. 1. 2.]\n [3. 4. 5.]]\n" \ "c: [[4. 0. 0.]\n [0. 4. 0.]\n [0. 0. 4.]]" with self.assertRaises(AssertionError) as e: assert_cases_equal(c1, c2) self.assertEqual(str(e.exception), expected)