Exemple #1
0
    def test_mode_auto(self):
        # Make sure mode=auto chooses correctly for all prob sizes as well
        # as for abs/rel/etc paths

        prob = Problem()
        root = prob.root = Group()

        root.add('p1', IndepVarComp('a', 1.0), promotes=['*'])
        root.add('p2', IndepVarComp('b', 1.0), promotes=['*'])
        root.add('comp', ExecComp(['x = 2.0*a + 3.0*b', 'y=4.0*a - 1.0*b']), promotes=['*'])

        root.ln_solver.options['mode'] = 'auto'
        prob.setup(check=False)
        prob.run()

        mode = prob._mode('auto', ['a'], ['x'])
        self.assertEqual(mode, 'fwd')

        mode = prob._mode('auto', ['a', 'b'], ['x'])
        self.assertEqual(mode, 'rev')

        # make sure _check function does it too

        #try:
            #mode = prob._check_for_parallel_derivs(['a'], ['x'], False, False)
        #except Exception as err:
            #msg  = "Group '' must have the same mode as root to use Matrix Matrix."
            #self.assertEqual(text_type(err), msg)
        #else:
            #self.fail('Exception expected')

        root.ln_solver.options['mode'] = 'fwd'
        mode = prob._check_for_parallel_derivs(['a', 'b'], ['x'], False, False)
        self.assertEqual(mode, 'fwd')
Exemple #2
0
    def test_mode_auto(self):
        # Make sure mode=auto chooses correctly for all prob sizes as well
        # as for abs/rel/etc paths

        prob = Problem()
        root = prob.root = Group()

        root.add('p1', IndepVarComp('a', 1.0), promotes=['*'])
        root.add('p2', IndepVarComp('b', 1.0), promotes=['*'])
        root.add('comp',
                 ExecComp(['x = 2.0*a + 3.0*b', 'y=4.0*a - 1.0*b']),
                 promotes=['*'])

        root.ln_solver.options['mode'] = 'auto'
        prob.setup(check=False)
        prob.run()

        mode = prob._mode('auto', ['a'], ['x'])
        self.assertEqual(mode, 'fwd')

        mode = prob._mode('auto', ['a', 'b'], ['x'])
        self.assertEqual(mode, 'rev')

        # make sure _check function does it too

        #try:
        #mode = prob._check_for_parallel_derivs(['a'], ['x'], False, False)
        #except Exception as err:
        #msg  = "Group '' must have the same mode as root to use Matrix Matrix."
        #self.assertEqual(text_type(err), msg)
        #else:
        #self.fail('Exception expected')

        # Cheat a bit so I can twiddle mode
        OptionsDictionary.locked = False

        root.ln_solver.options['mode'] = 'fwd'

        mode = prob._check_for_parallel_derivs(['a', 'b'], ['x'], False, False)
        self.assertEqual(mode, 'fwd')