Checking Partial Derivatives on a Subset of a Model#

Includes and Excludes#

When you have a model with a large number of components, you may want to reduce the number of components you check so that the output is small and readable. The check_partials method has two arguments: “includes” and “excludes” that help you specify a reduced set. Both of these arguments are lists of strings that default to None. If you specify “includes”, and give it a list containing strings, then only the components whose full pathnames match one of the patterns in those strings are included in the check. Wildcards are acceptable in the string patterns. Likewise, if you specify excludes, then components whose pathname matches the given patterns will be excluded from the check.

You can use both arguments together to hone in on the precise set of components you wish to check.

import openmdao.api as om
from openmdao.test_suite.components.paraboloid import Paraboloid

prob = om.Problem()
model = prob.model

sub = model.add_subsystem('c1c', om.Group())
sub.add_subsystem('d1', Paraboloid())
sub.add_subsystem('e1', Paraboloid())

sub2 = model.add_subsystem('sss', om.Group())
sub3 = sub2.add_subsystem('sss2', om.Group())
sub2.add_subsystem('d1', Paraboloid())
sub3.add_subsystem('e1', Paraboloid())

model.add_subsystem('abc1cab', Paraboloid())

prob.setup()
prob.run_model()

prob.check_partials(compact_print=True, includes='*c*c*')
-------------------------------------------------------------------
Component: Paraboloid 'c1c.d1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

-------------------------------------------------------------------
Component: Paraboloid 'c1c.e1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

--------------------------------------------------------------------
Component: Paraboloid 'abc1cab'
--------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

{'c1c.d1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'c1c.e1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'abc1cab': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}}}
prob.check_partials(compact_print=True, includes=['*d1', '*e1'])
-------------------------------------------------------------------
Component: Paraboloid 'c1c.d1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

-------------------------------------------------------------------
Component: Paraboloid 'c1c.e1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

------------------------------------------------------------------------
Component: Paraboloid 'sss.sss2.e1'
------------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

-------------------------------------------------------------------
Component: Paraboloid 'sss.d1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

{'c1c.d1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'c1c.e1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'sss.sss2.e1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'sss.d1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}}}
prob.check_partials(compact_print=True, includes=['abc1cab'])
--------------------------------------------------------------------
Component: Paraboloid 'abc1cab'
--------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

{'abc1cab': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}}}
prob.check_partials(compact_print=True, includes='*c*c*', excludes=['*e*'])
-------------------------------------------------------------------
Component: Paraboloid 'c1c.d1'
-------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

--------------------------------------------------------------------
Component: Paraboloid 'abc1cab'
--------------------------------------------------------------------

+---------------+----------------+---------------+---------------+------------------------+------------+
| 'of' variable | 'wrt' variable |      calc val |        fd val | (calc-fd) - (a + r*fd) | error desc |
+===============+================+===============+===============+========================+============+
| f_xy          | x              | -6.000000e+00 | -5.999999e+00 |        (-5.000749e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+
| f_xy          | y              |  8.000000e+00 |  8.000001e+00 |        (-7.000570e-06) |            |
+---------------+----------------+---------------+---------------+------------------------+------------+

{'c1c.d1': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}},
 'abc1cab': {('f_xy', 'x'): {'J_fwd': array([[-6.]]),
   'J_fd': array([[-5.999999]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-5.0007487679692986e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=6.0, reverse=0.0, fd=5.999999000749767),
   'vals_at_max_error': _ErrorData(forward=(-6.0, -5.999999000749767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.992502327804687e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.6654173319955572e-07, reverse=None, fwd_rev=None)},
  ('f_xy', 'y'): {'J_fwd': array([[8.]]),
   'J_fd': array([[8.000001]]),
   'rows': None,
   'cols': None,
   'tol violation': _ErrorData(forward=-7.000570231951997e-06, reverse=None, fwd_rev=None),
   'magnitude': _MagnitudeData(forward=8.0, reverse=0.0, fd=8.000000999430767),
   'vals_at_max_error': _ErrorData(forward=(8.0, 8.000000999430767), reverse=None, fwd_rev=None),
   'abs error': _ErrorData(forward=9.994307674787706e-07, reverse=None, fwd_rev=None),
   'rel error': _ErrorData(forward=1.2492883032763172e-07, reverse=None, fwd_rev=None)}}}