示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)