func_comp_common.py

func_comp_common.py

Define functions and objects common to the ExplicitFuncComp and ImplicitFuncComp classes.

openmdao.components.func_comp_common.jac_forward(fun, argnums, tangents)[source]

Similar to the jax.jacfwd function but allows specification of the tangent matrix.

This allows us to generate a compressed jacobian based on coloring.

Parameters
funfunction

The function to be differentiated.

argnumstuple of int or None

Specifies which positional args are dynamic. None means all positional args are dynamic.

tangentsndarray

Array of 1.0’s and 0’s that is used to compute the value of the jacobian matrix.

Returns
function

If there are multiple output variables, returns a function that returns rows of the jacobian grouped by output variable, e.g., if there were 2 output variables of size 3 and 4, the function would return a list with two entries. The first entry would contain the first 3 rows of J and the second would contain the next 4 rows of J. If there is only 1 output variable, the values returned are grouped by input variable.

openmdao.components.func_comp_common.jac_reverse(fun, argnums, tangents)[source]

Similar to the jax.jacrev function but allows specification of the tangent matrix.

This allows us to generate a compressed jacobian based on coloring.

Parameters
funfunction

The function to be differentiated.

argnumstuple of int or None

Specifies which positional args are dynamic. None means all positional args are dynamic.

tangentsndarray

Array of 1.0’s and 0’s that is used to compute the value of the jacobian matrix.

Returns
function

A function that returns rows of the jacobian grouped by function input variable, e.g., if there were 3 input variables of size 5 and 7 and 9, the function would return a list with 3 entries. The first entry would contain the first 5 columns of J, the second the next 7 columns of J, and the third the next 9 columns of J. Note that for implicit systems, the function inputs will contain both inputs and outputs in the context of OpenMDAO.

openmdao.components.func_comp_common.jacvec_prod(fun, argnums, invals, tangent)[source]

Similar to the jvp function but gives back a flat column.

Note: this is significantly slower (when producing a full jacobian) than jac_forward.

Parameters
funfunction

The function to be differentiated.

argnumstuple of int or None

Specifies which positional args are dynamic. None means all positional args are dynamic.

invalstuple of float or ndarray

Dynamic function input values.

tangentndarray

Array of 1.0’s and 0’s that is used to compute a column of the jacobian matrix.

Returns
function

A function to compute the jacobian vector product.