Source code for openmdao.test.test.test_execcomp

"""
Test of the ExecComp component.
"""

import unittest

from openmdao.test.execcomp import ExecComp, ExecCompWithDerivatives
from openmdao.main.api import Assembly, set_as_top
from openmdao.util.testutil import assert_rel_error


[docs]class execCompTest(unittest.TestCase):
[docs] def setUp(self): self.top = set_as_top(Assembly())
[docs] def test_execcomp(self): exp1 = ['y1 = 2.0*x1 + x2*x2', 'y2 = 3.0*x1*x2'] self.top.add('comp1', ExecComp(exp1)) self.top.comp1.x1 = 3.0 self.top.comp1.x2 = 5.0 self.top.comp1.run() self.assertEqual(self.top.comp1.y1, 31.0) self.assertEqual(self.top.comp1.y2, 45.0)
[docs] def test_execcomp_derivatives(self): exp1 = ['y1 = 2.0*x1 + x2*x2', 'y2 = 3.0*x1*x2'] deriv1 = ['dy1_dx1 = 2.0', 'dy1_dx2 = 2.0*x2', 'dy2_dx1 = 3.0*x2', 'dy2_dx2 = 3.0*x1'] self.top.add('comp1', ExecCompWithDerivatives(exp1, deriv1)) self.top.driver.workflow.add('comp1') self.top.comp1.x1 = 3.0 self.top.comp1.x2 = 5.0 self.top.comp1.run() J = self.top.driver.workflow.calc_gradient(inputs=['comp1.x1', 'comp1.x2'], outputs=['comp1.y1', 'comp1.y2']) assert_rel_error(self, J[0, 0], 2.0, 0.0001) assert_rel_error(self, J[0, 1], 10.0, 0.0001) assert_rel_error(self, J[1, 0], 15.0, 0.0001) assert_rel_error(self, J[1, 1], 9.0, 0.0001) self.assertEqual(self.top.comp1.y2, 45.0)
if __name__ == '__main__': unittest.main()
OpenMDAO Home